ffmpeg视音频截取与静态图生成
1. ffmpeg概述
◆ffmpeg是一个非常有用的命令行程序,他可以用来转码媒体文件。
◆ffmpeg的开发是基于Linux操作系统,但是可以在大多数操作系统中编译和使用。
◆它是领先的多媒体框架FFmpeg的一部分,其有很多功能,比如解码、编码、转码、混流、分离、
转化为流、过滤一级播放几乎多有的有人和机器创建的媒体文件。
2.ffmpeg安装
按顺序依次安装patch、lame、yasm、opencore-amr、amrnb、amrwb、fdk-aac这些相关包。最后安装ffmpeg:
用下面命令解压文档。
>tar -zxvf ffmpeg-1.2.tar.gz
文档解压完成后进入解压后的目录运行以下命令。
>cd ffmpeg-1.2
>./configure
--enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-version3 --enable-shared
编译完成后运行下面的命令安装ffmpeg。
>make; make install
◆link lib(64位元作业系统才需要)
3.ffmpeg用到的一些重要参数
* -ss position 搜索到指定的时间 [-]hh:mm:ss[.xxx]的格式也支持
* -t duration 设置纪录时间 hh:mm:ss[.xxx]格式的记录时间也支持
* -s size 设置帧大小格式为WXH 缺省160X128.下面的简写也可以直接使用:Sqcif 128X96 qcif 176X144 cif 252X288 4cif 704X576
* -r fps 设置帧频缺省25
* -an 不使能音频纪录
* -I filename 输入文件
* -target type 设置目标文件类型(vcd,svcd,dvd)所有的格式选项(比特率,编解码以及缓冲区大小)自动设置,只需要输入如下的就可以了:ffmpeg -i myfile.avi -target vcd /opt/vcd.mpg * -vn 不做视频记录,表示忽略视频估计是video no 之类的缩写
* -aspect aspect 设置横纵比 4:3 16:9 或 1.3333 1.7777
* -vcodec codec 强制使用codec编解码方式。如果用copy表示原始编解码数据必须被拷贝。
* -sameq 使用同样视频质量作为源(VBR)
* -vframes 设置转换多少桢(frame)的视频
4.视音频的截取与静态图片的生成
4.1 截取一段视频
从安室奈美恵Brighter\ Day.avi视频的第10秒钟开始,共截取1:22时长的内容,将截取的视频内容存储为shipinjiequ.avi
# ffmpeg -ss 00:00:10 -t 00:01:22 -i 安室奈美恵Brighter\ Day.avi shipinjiequ.avi
截图如下:
4.2 截取一段音频
从安室奈美恵Brighter\ Day.avi视频第10秒钟开始,共截取1:22时长的内容,将截取的音频内容存储为output.mp3
# ffmpeg -ss 00:00:10 -t 00:01:22 -i 安室奈美恵Brighter\ Day.avi output.mp3
截图如下:
4.3 从视频中提取声音(视频与音频的分离)
# ffmpeg -i 安室奈美恵Brighter\ Day.avi -vn Brighter\ Day.mp3
截图如下:
4.4 截取数张图片
从安室奈美恵Brighter\ Day.avi视频第2分钟,每一秒取1帧,总共取2帧,依次存储为test-x.jpg # ffmpeg -i 安室奈美恵Brighter\ Day.avi -an -ss 00:02:00 -r 1 -vframes 2 -y test-%d.jpg 截图如下:
# ffmpeg -i test.avi -y -f image2 -ss 8 -t 0.001 -s 640x360 test.jpeg
截图如下:
4.5 将截取的shipinjiequ.avi和shipinjiequ2.avi两个视频合并成outputfile.avi一个视频
# ffmpeg -i shipinjiequ.avi inputfile_01.mpg -r 30
# ffmpeg -i shipinjiequ2.avi inputfile_02.mpg -r 30
# cat inputfile_01.mpg inputfile_02.mpg > inputfile_all.mpg
# ffmpeg -i inputfile_all.mpg outputfile.avi