2014-02-17
发表于分类目录: linux
标签:ffmpeg, linux, 分割, 截图, 水印, 转换
ffmpeg主要是用来对视频进行处理的工具,功能强大。现在比较大的视频网站都会对视频进行切割,这样做可以减小带宽的压力。ffmpeg可以实现这样的功能。安装ffmpeg最好是安装稳定最新版,版本过旧,加水印是加不上去的。
一,ffmpeg最新版安装
1,下载atrpms-repo
# wget http://dl.atrpms.net/el6-x86_64/atrpms/stable/atrpms-repo-6-7.el6.x86_64.rpm #centos 6+ 64位的
# wget http://dl.atrpms.net/el6-i386/atrpms/stable/atrpms-repo-6-7.el6.i686.rpm #centos 6+ 32位的
2,安装atrpms-repo
# rpm -Uvh atrpms-repo*rpm
3,安装ffmpeg
# yum install ffmpeg
二,ffmpeg用法
1,视频裁剪
# ffmpeg -ss 00:00:00 -t 00:00:03 -y -i test.mp4 -vcodec copy -acodec copy test1.mp4
说明:上面的这个例子是将test.mp4视频的前3秒,重新生成一个新视频。
-ss 开始时间,如: 00:00:00,表示从0秒开始,格式也可以00:00:0
-t 时长,如: 00:00:03,表示截取3秒长的视频,格式也可以00:00:3
-y 如果文件已存在强制替换;
-i 输入,后面是空格,紧跟着就是输入视频文件;
-vcodec copy 和 -acodec copy表示所要使用的视频和音频的编码格式,这里指定为copy表示原样拷贝;
2,视频截图
# ffmpeg -i test.mp4 -y -f mjpeg -ss 3 -t 1 test1.jpg
# ffmpeg -i test.mp4 -y -f p_w_picpath2 -ss 3 -vframes 1 test1.jpg
上面二个例子都表示,在第三秒的时候,截图。
3,获取视频时间
[root@localhost test]# ffmpeg -i test.mp4 2>&1 | grep 'Duration' | cut -d ' ' -f 4 | sed s/,//
00:00:33.73
4,视频转换
视频的格式有很多,以mp4和flv为例子
# ffmpeg -i test.mp4 -ab 56 -ar 22050 -qmin 2 -qmax 16 -b 320k -r 15 -s 320x240 outputfile.flv //mp4 转 flv
# ffmpeg -i outputfile.flv -copyts -strict -2 test.mp4 //flv 转 mp4
5,视频加水印
#ffmpeg -y -i test.mp4 -acodec copy -vf "movie=uwsgi.jpg [logo]; [in][logo] overlay=10:10:1 [out]" test2.mp4
overlay=10:10:1,后三个数据表示是距离左边的距离,距离上边的距离,是否透明,1表示透明。上例我用的是jpg,当然不可能透明。
# ffmpeg -y -i test.mp4 -acodec copy -vf "movie=uwsgi.jpg [logo]; [in][logo] overlay=enable='lte(t,1)' [out]" test2.mp4
overlay=enable='lte(t,1)' ,这个参数表示,水印在前一秒显示。