欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

FFmpeg的使用——PHP转换视频、截取视频以及JW Player播放器控制 有大用

shiping1 的头像

FFmpeg的使用——PHP转换视频、截取视频以及JW Player播放器控制

分类: php 2673人阅读 评论(2) 收藏 举报

目录(?)[+]

给朋友做的一个项目中,涉及到上传视频、转换视频、自动截取已上传视频内容中的一帧做为缩略图片。本篇记录在完成这篇项目过程中的所掌握的一些知识以及经验教训。

上传视频这块暂时不说了,在项目中关于上传这一块涉及进度条的问题,总觉得的不够完美。虽然目前已解决这一块内容,但上传大文件来说,在某些方面仍不够100%的符合要求。有时间在整理这一块。在这篇文章中,由于是在整理这个项目内容,所以有关上传方面就一带而过。

自动转换已上传的视频

在这个项目中,一开始我是将判断进度这一块放在服务器端,理想状态是上传时显示上传进度,上传成功后,进度条内容改为:正在转换视频,请稍后...。但有时候进度条没有到达100%时就在某一值上卡住,直到转换视频成功为止。所以,我将判断进度这一块放到本地的js中处理。总之,视频上传成功后,开始转换视频。

转换视频部分代码

  1. $id=CheckNum(GetForm("id"),0,-1);  
  2. $file=GetForm("file");  
  3. $ext=GetForm("ext");  
  4. if($id>0){  
  5.   $path=$_moqian_video_path.$id;  
  6. }else{  
  7.   $path=$_moqian_video_path.$_SESSION['MM']['sid'];  
  8. }  
  9. $path=rtnRealPath($path);//返回绝对路径,如D:/wwwroot/test/upload/...../  
  10. if($ext!='flv'){  
  11.   exec('..\cmd\ffmpeg.exe -i '.$path.$file.'.'.$ext.' -ab 56 -ar 22050 -b 500 -r 15 -s 650*480 '.$path.$file.'.flv',$out,$status);  
  12.   unlink($path.$file.'.'.$ext);//删除原文件  
  13.   if($status==0){  
  14.     echo "success";  
  15.   }else{  
  16.     echo "0";//失败  
  17.   }  
  18. }else{  
  19.   echo 'success';  
  20. }  

转换视频的命令

  1. exec('..\cmd\ffmpeg.exe -i '.$path.$file.'.'.$ext.' -ab 56 -ar 22050 -b 500 -r 15 -s 650*480 '.$path.$file.'.flv',$out,$status);  

exec('..\cmd\ffmpeg.exe -i 要转换的视频文件 -ab 56 -ar 22050 -b 500 -r 15 -s 650*480 转换后的文件,$out,$status);
$status是执行的结果状态。值为0表示转换成功,否则转换失败。

ffmpeg.exe转换视频的参数命令请百度。

这里有几个问题得说一下

1、网上有很多版本的ffmpeg.exe,经过测试,好多都不能使用。我这里提供我正在使用的ffmpeg.exe及相关文件下载。
2、ffmpeg转换视频参数的注意事项

//经过多次测试发现
$a='../aaa/ffmpeg.exe';//这种方式错误!不能用“/”
$a='D:\wwwroot\dingji\flv\ffmpeg.exe';//这种方式错误!不能用“绝对的物理路径”
$a='\api\ffmpeg.exe';//错误 不能以\开头
对于ffmpeg.exe文件的调用不能用上述路径,正确用法如下:
$a='aaa\ffmpeg.exe';//成功(当前目录的下级目录)
$a='..\api\ffmpeg.exe';//成功(当前目录的上级目录或其它目录)
$b='D:\wwwroot\dingji\flv\1.flv';//绝对路径
$cmd=$a.' -i ../api/a.avi -ab 56 -ar 22050 -b 500 -r 15 -s 320x240../1f.flv';
exec($cmd);

上面蓝色部分可以用绝对路径,也可以用相对路径。在windows上测试“正斜线”和“反斜线”都可以。

来自 http://blog.csdn.net/zm2714/article/details/7916440

普通分类: