FFmpeg是一套可以用來記錄、轉(zhuǎn)換數(shù)字音頻,、視頻,,并能將其轉(zhuǎn)化為流的開源計算機程序。采用LGPL或GPL許可證,。它提供了錄制,、轉(zhuǎn)換以及流化音視頻的完整解決方案。它包含了非常先進的音頻/視頻編解碼庫libavcodec,,為了保證高可移植性和編解碼質(zhì)量,,libavcodec里很多code都是從頭開發(fā)的。
FFmpeg在Linux平臺下開發(fā),,但它同樣也可以在其它操作系統(tǒng)環(huán)境中編譯運行,,包括Windows、Mac OS X等,。這個項目最早由Fabrice Bellard發(fā)起,,2004年至2015年間由Michael Niedermayer主要負責(zé)維護,。許多FFmpeg的開發(fā)人員都來自MPlayer項目,而且當(dāng)前FFmpeg也是放在MPlayer項目組的服務(wù)器上,。項目的名稱來自MPEG視頻編碼標準,,前面的"FF"代表"Fast Forward"。FFmpeg編碼庫可以使用GPU加速,。
FFmpeg是一套可以用來記錄,、轉(zhuǎn)換數(shù)字音頻、視頻,,并能將其轉(zhuǎn)化為流的開源計算機程序,。它包括了領(lǐng)先的音/視頻編碼庫libavcodec等。
libavformat:用于各種音視頻封裝格式的生成和解析,,包括獲取解碼所需信息以生成解碼上下文結(jié)構(gòu)
和讀取音視頻幀等功能,;
libavcodec:用于各種類型聲音/圖像編解碼;
libavutil:包含一些公共的工具函數(shù),;
libswscale:用于視頻場景比例縮放,、色彩映射轉(zhuǎn)換;
libpostproc:用于后期效果處理,;
ffmpeg:該項目提供的一個工具,,可用于格式轉(zhuǎn)換、解碼或電視卡即時編碼等,;
ffsever:一個HTTP多媒體即時廣播串流服務(wù)器;
ffplay:是一個簡單的播放器,,使用ffmpeg庫解析和解碼,,通過SDL顯示;
ffmpeg命令集舉例
1.獲取視頻的信息
ffmpeg -i video.avi
2.將圖片序列合成視頻
ffmpeg -f image2 -i image%d.jpg video.mpg
上面的命令會把當(dāng)前目錄下的圖片(名字如: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文件轉(zhuǎn)成Mp3
ffmpeg -i son_origine.avi -vn -ar 44100 -ac 2 -ab 192 -f mp3 son_final.mp3
8.將.avi視頻轉(zhuǎn)成.mpg
ffmpeg -i video_origine.avi video_finale.mpg
9.將.mpg轉(zhuǎn)成.avi
ffmpeg -i video_origine.mpg video_finale.avi
10.將.avi轉(zhuǎn)成gif動畫(未壓縮)
ffmpeg -i video_origine.avi gif_anime.gif
11.合成視頻和音頻
ffmpeg -i son.wav -i video_origine.avi video_finale.mpg
12.將.avi轉(zhuǎn)成.flv
ffmpeg -i video_origine.avi -ab 56 -ar 44100 -b 200 -r 15 -s 320x240 -f flv video_finale.flv
13.將.avi轉(zhuǎn)成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,
支持的協(xié)議
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協(xié)議下發(fā)布的(如果使用了其中一些使用GPL協(xié)議發(fā)布的模塊則必須使用GPL協(xié)議),,任何人都可以自由使用,,但必須嚴格遵守LGPL/GPL協(xié)議。有很多播放軟件都使用了FFmpeg的代碼,,但它們并沒有遵守LGPL/GPL協(xié)議,,沒有公開任何源代碼。我們應(yīng)該對這種侵權(quán)行為表示恥辱,。
2009年加入FFmpeg的播放軟件:暴風(fēng)影音,、QQ影音、KMP,、GOM Player,、PotPlayer(2010)都在其列,。
2009年2月,韓國名軟KMPlayer被FFmpeg開源項目發(fā)現(xiàn)使用了它們的代碼和二進制文件,,但是沒有按照規(guī)定/慣例開放相應(yīng)說明/源碼,。因此被人舉報,進入了FFmpeg官網(wǎng)上的恥辱黑名單,。
2009年5月,,網(wǎng)友cehoyos下載了暴風(fēng)影音軟件,解壓之后發(fā)現(xiàn)其安裝程序內(nèi)包含了大量的開源和私有解碼器:avcodec,,avformat,,avutil,x264,,xvid,,bass,wmvdmod等,,之后暴風(fēng)影音被正式加入到FFmpeg恥辱名單,。
2009年7月22日,陳俊豪(格式工廠作者)因用到了ffmpeg和RMVB的編碼庫,,用到了FFmpeg的譯碼/編碼算法,,違反FFmpeg的LGPL協(xié)議,登上了2009年7月22日FFmpeg的“恥辱柱”上,。
2009年11月,,網(wǎng)友roo_zhou向FFmpeg舉報,指出QQ影音的credit只給出了修改的FFmpeg源碼下載,,聲稱是LGPL許可證,。但實際是修改過的ffdshow,采用的是GPL許可證,,之后QQ影音被正式加入到FFmpeg恥辱名單之列,。
Libav項目啟動之后,F(xiàn)Fmpeg官方版本也仍然在一直維護中,。FFmpeg與libav屬于獨立的兩個項目,。
2012年01月27日,F(xiàn)Fmpeg 0.9.1發(fā)布,,修復(fù)了很多bug和安全方面的補丁,,包括:CVE-2011-3893 and CVE-2011-3895,同時顯著提升對H.264的檢索支持,。
2012年01月29日,,F(xiàn)Fmpeg 0.10發(fā)布,這是一個主要的發(fā)行版本,包含大量的新特性和bug修復(fù),。
2012年04月07日,,F(xiàn)Fmpeg 0.10.1發(fā)布,F(xiàn)Fmpeg 0.10.1修復(fù)了很多安全漏洞,,超過100個bug修復(fù),,新增swapuv過濾器。
2012年05月07,,F(xiàn)Fmpeg 0.10.3發(fā)布,,該版本修復(fù)了4xm分路器、cook解碼器,、mm分路器,、mpeg視頻解碼器、vqavideo解碼器,、xmv分路器的安全問題,,以及包含一些重要的bug修復(fù)。
2012年06月09日,,F(xiàn)Fmpeg 0.11.1發(fā)布,,該版本修復(fù)了70個bug,其中有一些安全方面的問題,。
各主要版本的發(fā)布日期如下,,其中從3.0版本開始,發(fā)布的版本號后面增加了一個人名,,用于標明是哪位開發(fā)者主要負責(zé)了這個版本的開發(fā):
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"