FFMPeg处理视频的核心操做方式是命令,不管是在Windows上仍是Linux上。那么下边就简单介绍下,常见的处理命令。php
示例1:
截取一张352×240尺寸大小的,格式为jpg的图片:shell
ffmpeg -i test.asf -y -f image2 -t 0.001 -s 352×240 a.jpg
示例2:
把视频的前30帧转换成一个Animated Gif :apache
ffmpeg -i test.asf -vframes 30 -y -f gif a.gif
示例3:这个是我须要的!
在视频的第8.01秒处截取 320*240 的缩略图安全
ffmpeg -i test.flv -y -f mjpeg -ss 3 -t 0.001 -s 320×240 test.jpg
示例4:网络
把视频转换成flv文件(这个用得最多,如今Flv基本上已经成了网络视频的标准了)函数
ffmpeg -i source -s 320×240 -b 700k -aspect 4:3 -y -f flv dest.flv 。
其中:
source:是原始文件的名字,能够是mov,mpeg,avi,wmv各种格式,ffmpeg基本都支持。
-s wxh: 指定视频的宽和高
-b : 设定视频的比特率
-aspect: 保持视频的比率。如4:3或者16:9
-y : 若是目标文件存在时,直接覆盖原有的目标文件。
-f : 指定转换的文件格式,这里是flv格式。(其实若是不指定文件格式,ffmpeg也会按文件的后缀名来进行转换)。
dest: 转换的目标文件名字,并不必定须要是flv,能够是mov,mpeg以及其余的经常使用格式。
参数说明:spa
-L licensecode
-h 帮助视频
-fromats 显示可用的格式,编解码的,协议的blog
-f fmt 强迫采用格式fmt
-I filename 输入文件
-y 覆盖输出文件
-t duration 设置纪录时间 hh:mm:ss[.xxx]格式的记录时间也支持
-ss position 搜索到指定的时间 [-]hh:mm:ss[.xxx]的格式也支持
s wxh: 指定视频的宽和高
****************************************************************************
示例3:是针对flv格式的视频得到指定处的缩略图,记住 -f强制转换的格式是mjpeg由于我要得到.jpg的缩略图,网上有不少写成文章都是写成ffmpeg -i test.flv -y -f image2 -ss 08.010 -t 0.001 -s 352×240 b.jpg 这个是错误,不可能输出.
下面是PHP调用shell命令得到缩略图的代码
若是没有什么图片生成的可能缘由:
①对于存储生成图片的文件夹须要有写入权限 #chomd 777 /usr/local/apache/htdocs
②在php.ini中有disable_functions禁用了php调用shell命令函数,
disable_functions = proc_open, popen,exec, system, shell_exec, passthru
解决办法:注释掉disable_functions这一项
#disable_functions = proc_open, popen,exec, system, shell_exec, passthru
或者disable_functions = (把禁言的函数除去)
保存关闭开启就能够了
③php.ini中的安全模式必须关闭 才能够调用exec函数
safe_mode = off
④图片时间截取也很重要,颇有多是无效图片或者是黑屏
建议 增长关键帧,一般第一帧为关键帧,可使用:vframes:帧参数,舍弃微秒参数,只保留时间参数
/usr/bin/ffmpeg -i /usr/local/apache/htdocs/test.flv -y -f mjpeg -ss 3 -vframes 1 -s 320×240 /usr/local/apache/htdocs/test.jpg