FFmpeg的使用——PHP转换视频、截取视频以及JW Player播放器控制
2012-08-28 15:48
531 查看
给朋友做的一个项目中,涉及到上传视频、转换视频、自动截取已上传视频内容中的一帧做为缩略图片。本篇记录在完成这篇项目过程中的所掌握的一些知识以及经验教训。
上传视频这块暂时不说了,在项目中关于上传这一块涉及进度条的问题,总觉得的不够完美。虽然目前已解决这一块内容,但上传大文件来说,在某些方面仍不够100%的符合要求。有时间在整理这一块。在这篇文章中,由于是在整理这个项目内容,所以有关上传方面就一带而过。
自动转换已上传的视频
在这个项目中,一开始我是将判断进度这一块放在服务器端,理想状态是上传时显示上传进度,上传成功后,进度条内容改为:正在转换视频,请稍后...。但有时候进度条没有到达100%时就在某一值上卡住,直到转换视频成功为止。所以,我将判断进度这一块放到本地的js中处理。总之,视频上传成功后,开始转换视频。
exec('..\cmd\ffmpeg.exe -i 要转换的视频文件 -ab 56 -ar 22050 -b 500 -r 15 -s 650*480 转换后的文件,$out,$status);
$status是执行的结果状态。值为0表示转换成功,否则转换失败。
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上测试“正斜线”和“反斜线”都可以。
未完待续...
上传视频这块暂时不说了,在项目中关于上传这一块涉及进度条的问题,总觉得的不够完美。虽然目前已解决这一块内容,但上传大文件来说,在某些方面仍不够100%的符合要求。有时间在整理这一块。在这篇文章中,由于是在整理这个项目内容,所以有关上传方面就一带而过。
自动转换已上传的视频
在这个项目中,一开始我是将判断进度这一块放在服务器端,理想状态是上传时显示上传进度,上传成功后,进度条内容改为:正在转换视频,请稍后...。但有时候进度条没有到达100%时就在某一值上卡住,直到转换视频成功为止。所以,我将判断进度这一块放到本地的js中处理。总之,视频上传成功后,开始转换视频。
转换视频部分代码
$id=CheckNum(GetForm("id"),0,-1); $file=GetForm("file"); $ext=GetForm("ext"); if($id>0){ $path=$_moqian_video_path.$id; }else{ $path=$_moqian_video_path.$_SESSION['MM']['sid']; } $path=rtnRealPath($path);//返回绝对路径,如D:/wwwroot/test/upload/...../ if($ext!='flv'){ exec('..\cmd\ffmpeg.exe -i '.$path.$file.'.'.$ext.' -ab 56 -ar 22050 -b 500 -r 15 -s 650*480 '.$path.$file.'.flv',$out,$status); unlink($path.$file.'.'.$ext);//删除原文件 if($status==0){ echo "success"; }else{ echo "0";//失败 } }else{ echo 'success'; }
转换视频的命令
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上测试“正斜线”和“反斜线”都可以。
未完待续...
相关文章推荐
- FFmpeg的使用——PHP转换视频、截取视频以及JW Player播放器控制
- php 使用 ffmpeg 转换视频,截图,并生成缩略图
- php使用FFmpeg接口获取视频的播放时长、码率、缩略图以及创建时间
- php视频格式转换---------ffmpeg-php扩展与ffmpeg.exe安装与使用
- php 使用 ffmpeg 转换视频,截图,并生成缩略图
- php 使用 ffmpeg 转换视频,截图,并生成缩略图
- php 使用 ffmpeg 转换视频,截图,并生成缩略图
- php 使用 ffmpeg 转换视频,截图,并生成缩略图
- php 使用 ffmpeg 转换视频,截图,并生成缩略图
- ffmpeg视频转换为flv格式,视频截取图片
- (工具ffmpeg)视频转换为flv格式,视频截取图片
- 使用ffmpeg进行视频文件转换成FLV整理
- java 调用 ffmpeg 进行视频转换以及截图
- 使用ffmpeg进行视频解码以及图像转换
- PHP使用FFmpeg获取视频播放总时长与码率等信息
- window下使用ffmpeg转换视频,linux安装和使用ffmpeg
- PHP使用ffmpeg给视频增加字幕显示的方法
- ffmpeg视频转换工具使用
- 使用ffmpeg进行图像格式转换以及图像缩放/sws_scale/linux/c++/c/rgb-yuv420
- 安装和使用ffmpeg转换视频为flv文件