FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多code都是从头开发的。
FFmpeg在Linux平台下开发,但它同样也可以在其它操作系统环境中编译运行,包括Windows、Mac OS X等。这个项目最早由Fabrice Bellard发起,2004年至2015年间由Michael Niedermayer主要负责维护。许多FFmpeg的开发人员都来自MPlayer项目,而且当前FFmpeg也是放在MPlayer项目组的服务器上。项目的名称来自MPEG视频编码标准,前面的"FF"代表"Fast Forward"。FFmpeg编码库可以使用GPU加速。
FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。它包括了领先的音/视频编码库libavcodec等。
libavformat:用于各种音视频封装格式的生成和解析,包括获取解码所需信息以生成解码上下文结构
和读取音视频帧等功能;
libavcodec:用于各种类型声音/图像编解码;
libavutil:包含一些公共的工具函数;
libswscale:用于视频场景比例缩放、色彩映射转换;
libpostproc:用于后期效果处理;
ffmpeg:该项目提供的一个工具,可用于格式转换、解码或电视卡即时编码等;
ffsever:一个HTTP多媒体即时广播串流服务器;
ffplay:是一个简单的播放器,使用ffmpeg库解析和解码,通过SDL显示;
ffmpeg命令集举例
1.获取视频的信息
ffmpeg -i video.avi
2.将图片序列合成视频
ffmpeg -f image2 -i image%d.jpg video.mpg
上面的命令会把当前目录下的图片(名字如:image1.jpg. image2.jpg.等...)合并成video.mpg
3.将视频分解成图片序列
ffmpeg -i video.mpg image%d.jpg
上面的命令会生成image1.jpg. image2.jpg. ...
支持的图片格式有:PGM. PPM. PAM. PGMYUV. JPEG. GIF. PNG. TIFF. SGI
4.为视频重新编码以适合在iPod/iPhone上播放
ffmpeg -i source_video.avi input -acodec aac -ab 128kb -vcodec mpeg4 -b 1200kb -mbd 2 -flags +4mv+trell -aic 2 -cmp 2 -subcmp 2 -s 320x180 -title X final_video.mp4
说明
* 源视频:source_video.avi
* 音频编码:aac
* 音频位率:128kb/s
* 视频编码:mpeg4
* 视频位率:1200kb/s
* 视频尺寸:320 X 180
* 生成的视频:final_video.mp4
5.为视频重新编码以适合在PSP上播放
ffmpeg -i source_video.avi -b 300 -s 320x240 -vcodec xvid -ab 32 -ar 24000 -acodec aac final_video.mp4
说明:
* 源视频:source_video.avi
* 音频编码:aac
* 音频位率:32kb/s
* 视频编码:xvid
* 视频位率:1200kb/s
* 视频尺寸:320 X 240
* 生成的视频:final_video.mp4
6.从视频抽出声音.并存为Mp3
ffmpeg -i source_video.avi -vn -ar 44100 -ac 2 -ab 192 -f mp3 sound.mp3
说明:
* 源视频:source_video.avi
* 音频位率:192kb/s
* 输出格式:mp3
* 生成的声音:sound.mp3
7.将avi文件转成Mp3
ffmpeg -i son_origine.avi -vn -ar 44100 -ac 2 -ab 192 -f mp3 son_final.mp3
8.将.avi视频转成.mpg
ffmpeg -i video_origine.avi video_finale.mpg
9.将.mpg转成.avi
ffmpeg -i video_origine.mpg video_finale.avi
10.将.avi转成gif动画(未压缩)
ffmpeg -i video_origine.avi gif_anime.gif
11.合成视频和音频
ffmpeg -i son.wav -i video_origine.avi video_finale.mpg
12.将.avi转成.flv
ffmpeg -i video_origine.avi -ab 56 -ar 44100 -b 200 -r 15 -s 320x240 -f flv video_finale.flv
13.将.avi转成dv
ffmpeg -i video_origine.avi -s pal -r pal -aspect 4:3 -ar 48000 -ac 2 video_finale.dv
或者:
ffmpeg -i video_origine.avi -target pal-dv video_finale.dv
14.将.avi压缩成divx
ffmpeg -i video_origine.avi -s 320x240 -vcodec msmpeg4v2 video_finale.avi
15.将Ogg Theora压缩成Mpeg dvd
ffmpeg -i film_sortie_cinelerra.ogm -s 720x576 -vcodec mpeg2video -acodec mp3 film_terminate.mpg
16.将.avi压缩成SVCD mpeg2
NTSC格式:
ffmpeg -i video_origine.avi -target ntsc-svcd video_finale.mpg
PAL格式:
ffmpeg -i video_origine.avi -target pal-svcd video_finale.mpg
17.将.avi压缩成VCD mpeg2
NTSC格式:
ffmpeg -i video_origine.avi -target ntsc-vcd video_finale.mpg
PAL格式:
ffmpeg -i video_origine.avi -target pal-vcd video_finale.mpg
18.多通道编码
ffmpeg -i fichierentree -pass 2 -passlogfile ffmpeg2pass fichiersortie-2
19.从flv提取mp3
ffmpeg -i source.flv -ab 128k dest.mp3
支持的编码
源自FFmpeg项目组的两个视频编码:
Snow
FFV1
支持的格式
ASF
AVI
BFI
IFF
RL2
FLV
MXF, Material eXchange Format, SMPTE 377M
Matroska
Maxis XA
MSN Webcam stream
MPEG transport stream
TXD
OMA
GXF, General eXchange Format, SMPTE 360M
mov,mp4,m4a,3gp,
支持的协议
HTTP
RTP
RTSP
RealMedia RTSP/RDT
Gopher
RTMP
RTMPT, RTMPE, RTMPTE, RTMPS (via librtmp)
SDP
MMS over TCP
(Hall Of Shame)
FFmpeg被许多开源项目采用,比如ffmpeg2theora,VLC, MPlayer, HandBrake, Blender, Google Chrome等。还有DirectShow/VFW的ffdshow(external project)和QuickTime的Perian(external project)也采用了FFmpeg。
由于FFmpeg是在LGPL/GPL协议下发布的(如果使用了其中一些使用GPL协议发布的模块则必须使用GPL协议),任何人都可以自由使用,但必须严格遵守LGPL/GPL协议。有很多播放软件都使用了FFmpeg的代码,但它们并没有遵守LGPL/GPL协议,没有公开任何源代码。我们应该对这种侵权行为表示耻辱。
2009年加入FFmpeg的播放软件:暴风影音、QQ影音、KMP、GOM Player、PotPlayer(2010)都在其列。
2009年2月,韩国名软KMPlayer被FFmpeg开源项目发现使用了它们的代码和二进制文件,但是没有按照规定/惯例开放相应说明/源码。因此被人举报,进入了FFmpeg官网上的耻辱黑名单。
2009年5月,网友cehoyos下载了暴风影音软件,解压之后发现其安装程序内包含了大量的开源和私有解码器:avcodec,avformat,avutil,x264,xvid,bass,wmvdmod等,之后暴风影音被正式加入到FFmpeg耻辱名单。
2009年7月22日,陈俊豪(格式工厂作者)因用到了ffmpeg和RMVB的编码库,用到了FFmpeg的译码/编码算法,违反FFmpeg的LGPL协议,登上了2009年7月22日FFmpeg的“耻辱柱”上。
2009年11月,网友roo_zhou向FFmpeg举报,指出QQ影音的credit只给出了修改的FFmpeg源码下载,声称是LGPL许可证。但实际是修改过的ffdshow,采用的是GPL许可证,之后QQ影音被正式加入到FFmpeg耻辱名单之列。
Libav项目启动之后,FFmpeg官方版本也仍然在一直维护中。FFmpeg与libav属于独立的两个项目。
2012年01月27日,FFmpeg 0.9.1发布,修复了很多bug和安全方面的补丁,包括:CVE-2011-3893 and CVE-2011-3895,同时显著提升对H.264的检索支持。
2012年01月29日,FFmpeg 0.10发布,这是一个主要的发行版本,包含大量的新特性和bug修复。
2012年04月07日,FFmpeg 0.10.1发布,FFmpeg 0.10.1修复了很多安全漏洞,超过100个bug修复,新增swapuv过滤器。
2012年05月07,FFmpeg 0.10.3发布,该版本修复了4xm分路器、cook解码器、mm分路器、mpeg视频解码器、vqavideo解码器、xmv分路器的安全问题,以及包含一些重要的bug修复。
2012年06月09日,FFmpeg 0.11.1发布,该版本修复了70个bug,其中有一些安全方面的问题。
各主要版本的发布日期如下,其中从3.0版本开始,发布的版本号后面增加了一个人名,用于标明是哪位开发者主要负责了这个版本的开发:
2013-10-28, FFmpeg 2.1
2014-03-24, FFmpeg 2.2
2014-04-11, FFmpeg 2.2.1
2014-06-29, FFmpeg 2.2.4, 2.1.5, 2.0.5, 1.2.7, 1.1.12, 0.10.14
2014-07-17, FFmpeg 2.3
2014-08-20, FFmpeg 2.3.3, 2.2.7, 1.2.8
2014-09-15, FFmpeg2.4
2014-12-05, FFmpeg2.5
2015-03-16, FFmpeg 2.6.1
2015-09-09, FFmpeg 2.8
2016-01-16, FFmpeg 2.8.5, 2.7.5, 2.6.7, 2.5.10
2016-02-15, FFmpeg 3.0 "Einstein"
2016-06-27, FFmpeg 3.1 "Laplace"
2016-07-01, FFmpeg 3.1.1 "Laplace"
2016-08-09, FFmpeg 3.1.2 "Laplace"
2017-04-13, FFmpeg 3.3 "Hilbert"
2017-10-15, FFmpeg 3.4 "Cantor"
2018-04-20, FFmpeg 4.0 "Wu"
2018-11-06, FFmpeg 4.1 "al-Khwarizmi"
2019-08-05, FFmpeg 4.2 "Ada"
2020-06-15, FFmpeg 4.3 "4:3"
2021-04-08, FFmpeg 4.4 "Rao"
2022-01-17, FFmpeg 5.0 "Lorentz"
2022-07-22, FFmpeg 5.1 "Riemann"
2023-02-28, FFmpeg 6.0 "Von Neumann"
2023-11-10, FFmpeg 6.1 "Heaviside"
2024-04-05, FFmpeg 7.0 "Dijkstra"
2024-09-30, FFmpeg 7.1 "Péter"