FFmpeg

此條目可参照英語維基百科相應條目来扩充。 (2017年2月4日)
若您熟悉来源语言和主题，请协助参考外语维基百科扩充条目。请勿直接提交机械翻译，也不要翻译不可靠、低品质内容。依版权协议，译文需在编辑摘要注明来源，或于讨论页顶部标记`{{Translated page}}`标签。

|

FFmpeg

FFmpeg執行影片檔轉檔時的畫面

原作者| Fabrice Bellard
開發者| FFmpeg team
首次发布| 2000年12月20日[1]，24年前
当前版本|

* 7.1.1（2025年3月3日；穩定版本）[2]

源代码库|

* git.ffmpeg.org/ffmpeg.git

编程语言| C语言
[3][4]汇编语言
[5]C++[5]
操作系统| GNU/Linux
Microsoft Windows
Android
[6]伯克利軟件套件作業系統
平台| ARM架構
PowerPC
MIPS
DEC Alpha
SPARC
类型| 多媒体框架
许可协议|

* GNU宽通用公共许可证2.1或更高版本

网站| ffmpeg.org

FFmpeg 是一個開放原始碼的自由軟體，可以執行音訊和視訊多種格式的錄影、轉檔、串流功能[7]，包含了libavcodec——這是一個用於多個專案中音訊和視訊的解碼器函式庫，以及libavformat——一個音訊與視訊格式轉換函式庫。

这个项目最初是由法國程式設計師法布里斯·贝拉（Fabrice Bellard）发起的，而现在是由米夏埃尔·尼德迈尔（Michael Niedermayer）在进行维护。许多FFmpeg的开发者同时也是MPlayer项目的成员，FFmpeg在MPlayer项目中是被设计为服务器版本进行开发。

## 历史

[编辑]

该项目由法布里斯·贝拉[8]（Fabrice Bellard，使用化名“Gérard Lantau”）于2000年启动，并由米夏埃尔·尼德迈尔（Michael Niedermayer）从2004年领导，直到2015年辞职。[9]一些FFmpeg的开发者也参与了MPlayer项目。

该项目的名称灵感来源于MPEG视频标准组织，其中“FF”代表“快进”（fast forward），因此FFmpeg代表“快进动态图像专家组”。[10]其标志是一个之字形扫描图案，显示了MPEG视频编解码器如何处理熵编码。[11]

2011年3月13日，一组FFmpeg开发者决定将该项目分支，命名为Libav。[12][13][14][15]此事件与项目管理中的问题有关，开发者们对FFmpeg的领导层存在分歧。[16][17][18]

2014年1月10日，两名谷歌员工宣布，在过去两年中，通过模糊测试已修复了FFmpeg中的1000多个漏洞。[19]

2018年1月，FFmpeg的一个长期组件ffserver命令行程序被移除。[20]开发者此前已经废弃了该程序，原因是由于其使用了内部应用程序接口，导致维护工作量大。[21]

该项目平均每三个月发布一次新版本。尽管可以从网站上下载发布版本，但FFmpeg开发者建议用户使用他们源代码Git版本控制系统中的最新构建来编译软件。

### 编解码器历史

[编辑]

到目前为止，FFmpeg项目已创建了两种视频编码格式及其对应的编解码器，并且有一种容器格式。这两种视频编解码器是无损的FFV1（英语：FFV1）和既有无损又有损的Snow编解码器。Snow的开发已经停滞，其比特流格式尚未最终确定，因此自2011年以来一直处于实验阶段。名为NUT的多媒体容器格式不再积极开发，但仍在维护中。[22]

2010年夏天，FFmpeg开发者Fiona Glaser、Ronald Bultje和David Conrad宣布了ffvp8解码器。经测试发现，ffvp8的速度比谷歌自己的libvpx（英语：Libvpx）解码器更快。[23][24]从0.6版本开始，FFmpeg还支持WebM和VP8。[25]

2013年10月，FFmpeg添加了本地VP9解码器[26]和OpenHEVC，一个开源的高效率视频编码（HEVC）解码器。[27]2016年，本地AAC编码器被认为是稳定的，因此移除了对VisualOn（英语：VisualOn）和自由高级音频编码（英语：FAAC）的两个外部AAC编码器的支持。FFmpeg 3.0保留了对Fraunhofer FDK AAC（英语：Fraunhofer FDK AAC）编码器的构建支持。[28]从3.4版本开始，FFmpeg支持FITS图像格式。[29]从2018年11月的4.1版本开始，AV1可以在MP4和Matroska（包括WebM）中复用。[30][31]

## 組成元件

[编辑]

此計劃由幾個元件組成：

* 命令列應用程式
* ffmpeg：用於對視訊檔案或音訊檔案轉換格式
* ffplay：一個簡單的播放器，基於SDL與FFmpeg函式庫
* ffprobe：用於顯示媒體檔案的資訊，見MediaInfo
* 函數庫
* libswresample
* libavresample
* libavcodec：包含全部FFmpeg音訊/視訊編解碼函式庫
* libavformat：包含demuxers和muxer函式庫
* libavutil：包含一些工具函式庫
* libpostproc：對於視訊做前處理的函式庫
* libswscale：對於影像作縮放的函式庫
* libavfilter

## 參數

[编辑]

FFmpeg可使用眾多參數，參數內容會根據ffmpeg版本而有差異，使用前建議先參考參數及編解碼器的敘述。此外，參數明細可用`ffmpeg -h`顯示；編解碼器名稱等明細可用`ffmpeg -formats`顯示。

下列為較常使用的參數：

### 主要參數

[编辑]

* `-i`——設定輸入檔名。
* `-f`——設定輸出格式。
* `-y`——若輸出檔案已存在時則覆蓋檔案。
* `-fs`——超過指定的檔案大小時則結束轉換。
* `-t`——指定输出文件的持续时间，以秒为单位。
* `-ss`——從指定時間開始轉換，以秒为单位。
* `-ss`和`-t`一起使用時代表從`-ss`的時間開始轉換持續時間為`-t`的影片，例如：`-ss 00:00:01.00 -t 00:00:10.00`即從`00:00:01.00`開始轉換到`00:00:11.00`。
* `-title`——設定標題。
* `-timestamp`——設定時間戳。
* `-vsync`——增減Frame使影音同步。
* `-c`——指定输出文件的编码。
* `-metadata`——更改输出文件的元数据。
* `-help`——查看帮助信息。

### 影像參數

[编辑]

* `-b:v`——設定影像流量，預設為200Kbit/秒。（單位請參照下方注意事項）
* `-r`——設定帧率值，預設為25。
* `-s`——設定畫面的寬與高。
* `-aspect`——設定畫面的比例。
* `-vn`——不處理影像，於僅針對聲音做處理時使用。
* `-vcodec( -c:v )`——設定影像編解碼器，未設定時則使用與輸入檔案相同之編解碼器。

### 聲音參數

[编辑]

* `-b:a`——設定每Channel（最近的SVN版為所有Channel的總合）的流量。（單位請參照下方注意事項）
* `-ar`——設定採樣率。
* `-ac`——設定聲音的Channel數。
* `-acodec ( -c:a )` ——設定聲音編解碼器，未設定時與影像相同，使用與輸入檔案相同之編解碼器。
* `-an`——不處理聲音，於僅針對影像做處理時使用。
* `-vol`——設定音量大小，256為標準音量。（要設定成兩倍音量時則輸入512，依此類推。）

### 注意事項

[编辑]

* 以`-b:v`及`-b:a`參數設定流量時，根據使用的ffmpeg版本，須注意單位會有kbits/sec與bits/sec的不同。（可用`ffmpeg -h`顯示說明來確認單位。）

例如，單位為bits/sec的情況時，欲指定流量64kbps時需輸入 `-b:a 64k`；單位為kbits/sec的情況時則需輸入 `-b:a 64`。

* 以`-acodec`及`-vcodec`所指定的編解碼器名稱，會根據使用的ffmpeg版本而有所不同。例如使用AAC編解碼器時，會有輸入aac與libfaac的情況。此外，編解碼器有分為僅供解碼時使用與僅供編碼時使用，因此一定要利用`ffmpeg -formats`確認輸入的編解碼器是否能運作。

## 支援的编码器、格式和协议

[编辑]

### 编码器

[编辑]

更多信息：libavcodec

FFmpeg项目原生的编码器：

* Snow
* FFV1（英语：FFV1）

FFmpeg已实现的：

* ITU-T视频标准：H.261,[32] H.262/MPEG-2 Part 2, H.263[32]和H.264/MPEG-4 AVC[32]
* ITU-T音频编解码器标准：G.711 µ-law, G.711 A-law, G.721（也叫G.726 32k）, G.722, G.722.2（也叫AMR-WB）, G.723（也叫G.726 24k和40k）和G.726
* ISO/IEC MPEG视频标准：MPEG-1 Part 2, H.262/MPEG-2 Part 2, MPEG-4 Part 2和H.264/MPEG-4 AVC
* ISO/IEC MPEG音频标准：MP1, MP2, MP3, AAC, HE-AAC和MPEG-4 ALS
* ISO/IEC/ITU-T JPEG图像标准：JPEG和JPEG-LS
* SMPTE视频标准：VC-1（也称作WMV3）, VC-3（也称作AVID DNxHD）和DPX图像
* SMPTE音频标准：SMPTE 302M
* DVD论坛的相关标准 / 杜比实验室的音频编解码器：MLP（也称TrueHD）和AC-3
* 3GPP音频编码器标准：AMR-NB, AMR-WB（也叫G.722.2）
* GSM相关的语音信号编解码器：Full Rate
* Windows Media Player相关的视频编解码器：Microsoft RLE, Microsoft Video 1, Cinepak, Indeo 2, 3和5,[32] Motion JPEG, Microsoft MPEG-4 v1, v2和v3, WMV1, WMV2 and WMV3（也称VC-1）
* Windows Media Player相关的音频编解码器：WMA1, WMA2和WMA Pro
* Windows Media Player相关的语音信号编解码器：WMA Voice和MS-GSM
* RealPlayer相关的视频编解码器：RealVideo 1, 2, 3和4
* RealPlayer相关的音频编解码器：RealAudio 3, 6, 7, 8, 9和10
* RealPlayer相关的语音信号编解码器：RealAudio 1, 2 (G.728的衍生), 4和5
* QuickTime相关的视频编解码器：Cinepak, Motion JPEG和Sorenson 3 Codec
* QuickTime相关的音频编解码器：QDesign音乐编解码器2和ALAC
* Adobe Flash Player相关的视频编解码器：Sorenson 3 Codec, VP6和Flash Video (FLV)
* Adobe Flash Player相关的音频编解码器：Adobe SWF ADPCM和Nellymoser Asao
* Xiph.Org: Theora, Speex（通过libspeex实现）, Vorbis和FLAC
* Sony: ATRAC1和ATRAC3[32]
* NTT: TwinVQ
* On2: Duck TrueMotion 1, Duck TrueMotion 2, VP3, VP5,[32] VP6[32]和VP8
* RAD Game Tools: Smacker video和Bink video
* Truespeech
* RenderWare: TXD[33]

The default MPEG-4 codec used by FFmpegs the FourCC of FMP4.

### 輸出格式

[编辑]

* AIFF
* ASF
* AVI
* AVIF
* BFI[34]
* CAF
* FLV
* GIF
* GXF, General eXchange Format, SMPTE 360M
* HLS, HTTP Live Streaming
* IFF[35]
* ISO base media file format（包括QuickTime, 3GP和MP4）
* M2V
* Matroska（包括WebM）
* Maxis XA[36]
* MPEG-DASH[37]
* MPEG program stream
* MPEG transport stream（包括 AVCHD）
* MXF, Material eXchange Format, SMPTE 377M
* MSN Webcam stream[38]
* NUT[39]
* Ogg
* OMA[40]
* RL2[41]
* Segment, for creating segmented video streams
* Smooth Streaming
* TXD[33]
* WTV

### 协议

[编辑]

* IETF标准：TCP, UDP, Gopher, HTTP, RTP, RTSP和SDP
* 苹果公司的相关标准：HTTP Live Streaming
* RealMedia的相关标准：RealMedia RTSP/RDT
* Adobe的相关标准：RTMP, RTMPT（由librtmp实现），RTMPE（由librtmp实现），RTMPTE（由librtmp）和RTMPS（由librtmp实现）
* 微软的相关标准：MMS在TCP上和MMS在HTTP上

## 社區內部問題

[编辑]

2011年1月19日，FFmpeg的现任维护者Michael Niedermayer在邮件列表上披露，FFmpeg发生了“政变”，一些开发者占领了官方网站，关闭了其他人的寫入權限。随后政变者宣布FFmpeg “建立新政权”，维护任务将由他们接手，宣称只有维护团队才能拥有主源码库的寫入權限。

“新内阁”成员之一的Diego Biurrun解释了他们的行动，称“政變”是迫不得已，表示他们原本想联络每一个開發者，但沒成功，因为不是每个人都在IRC上，或者能及时回电话、邮件或短信。“革命”的原因是为了统一，FFmpeg社区分裂的情况严重到他们已经看不下去了。他们期望FFmpeg项目能建立一个健康而友好的开发环境。[42]

隨後Fabrice Bellard等人於2011年3月13日跳出去開新專案，稱作Libav，Libav裡面每位成員的管理權限縮更小（至少不能任意關閉其他人更改程式碼權限）。而Debian也響應，宣布2012年要將ffmpeg指令改成avconv[43]。

Libav跳槽之後有一定程度上更改FFmpeg的指令[44]。

## Libav/FFmpeg版权

[编辑]

由于Libav、FFmpeg是在LGPL、GPL下发布的（如果使用了其中一些使用GPL协议发布的模块则必须使用GPL协议），任何人都可以在遵守协议的情况下自由使用。目前有很多播放软件都使用了Libav、FFmpeg的代码，但它们并没有遵守LGPL，GPL协议，没有公开任何源代码。Libav、FFmpeg社區便將這些違反協議的公司、組織、個人的網址貼在“恥辱大廳”（又叫“恥辱柱”）上，并與這些公司/組織/個人商討如何解決版權爭議。[45]

## 參考資料

[编辑]

1. ^ Initial revision.
2. ^ [FFmpeg-devel] Point releases. 2025年3月3日  [2025年3月3日].
3. ^ The ffmpeg Open Source Project on Open Hub: Languages Page. Open Hub.  [2018年7月14日].
4. ^ https://github.com/EvanLi/Github-Ranking/blob/master/Data/github-ranking-2025-07-06.csv; 出版日期: 2025年7月6日.
5. ^ 5.0 5.1 The ffmpeg Open Source Project on Open Hub: Languages Page.  [2019年1月8日].
6. ^ FFmpeg Media Encoder.
7. ^ FFmpeg Documentation.  [2009-08-26]. （原始内容存档于2010-09-18）.
8. ^ FFmpeg License and Legal Considerations. ffmpeg.org.  [2012-01-04]. （原始内容存档于2012-01-03）.
9. ^ Niedermayer, Michael. [FFmpeg-devel] FFmpegs future and resigning as leader. 31 July 2015  [2015-09-22]. （原始内容存档于2015-08-15）.
10. ^ Bellard, Fabrice. FFmpeg naming and logo. FFmpeg developer mailing list. 2006-02-18  [2011-12-24]. （原始内容存档于2012-04-26） （英语）.
11. ^ Carlsen, Steve. TIFF 6.0 specification (PS). Aldus Corporation: 98. 1992-06-03  [2016-08-14]. "Zig-Zag Scan" [失效連結] Alt URL 互联网档案馆的存檔，存档日期2012-07-03.
12. ^ Libav project site,  [2012-01-04], （原始内容存档于2012-01-03）
13. ^ Ronald S. Bultje, Project renamed to Libav, 2011-03-14  [2012-01-04], （原始内容存档于2016-11-07）
14. ^ A group of FFmpeg developers just forked as Libav, Phoronix, 2011-03-14  [2012-01-04], （原始内容存档于2011-09-15）
15. ^ 红薯. FFmpeg项目改名为libav. 开源中国社区. 2011-03-15  [2011-06-14]. （原始内容存档于2011-09-03）.
16. ^ What happened to FFmpeg, 2011-03-30  [2012-05-19], （原始内容存档于2018-09-02）
17. ^ FFMpeg turmoil, 2011-01-19  [2012-01-04], （原始内容存档于2012-01-12）
18. ^ The FFmpeg/Libav situation. blog.pkh.me.  [2015-09-22]. （原始内容存档于2012-07-01）.
19. ^ FFmpeg and a thousand fixes. googleblog.com. January 10, 2014  [21 October 2016]. （原始内容存档于22 October 2016）.
20. ^ ffserver – FFmpeg. trac.ffmpeg.org.  [2018-02-03]. （原始内容存档于2018-02-04）.
21. ^ ffserver program being dropped. ffmpeg.org. 2016-07-10  [2018-02-03]. （原始内容存档于2016-07-16） （英语）.
22. ^ NUT. Multimedia Wiki. 2012  [2014-01-03]. （原始内容存档于2014-01-03）.
23. ^ Glaser, Fiona, Diary Of An x264 Developer: Announcing the world's fastest VP8 decoder, 2010-07-23  [2012-01-04], （原始内容存档于2010-09-30）
24. ^ FFmpeg Announces High-Performance VP8 Decoder, Slashdot, 2010-07-24  [2012-01-04], （原始内容存档于2011-12-21）
25. ^ FFmpeg Goes WebM, Enabling VP8 for Boxee & Co. newteevee.com. 2010-06-17  [2012-01-04]. （原始内容存档于2010-06-20）. "...with VLC, Boxee, MythTV, Handbrake and MPlayer being some of the more popular projects utilizing FFmpeg..."
26. ^ Native VP9 decoder is now in the Git master branch. Launchpad. 2013-10-03  [2013-10-21]. （原始内容存档于2013-10-22）.
27. ^ FFmpeg Now Features Native HEVC/H.265 Decoder Support. Softpedia. 2013-10-16  [2013-10-16]. （原始内容存档于2014-06-15）.
28. ^ FFmpeg. February 15th, 2016, FFmpeg 3.0 "Einstein". 2016-02-15  [2016-04-02]. （原始内容存档于2016-07-16）.
29. ^ FFmpeg. October 15th, 2017, FFmpeg 3.4 "Cantor". 2017-10-15  [2019-05-10]. （原始内容存档于2016-07-16）.
30. ^ FFmpeg. November 6th, 2018, FFmpeg 4.1 "al-Khwarizmi". 2018-11-06  [2019-05-10]. （原始内容存档于2016-07-16）.
31. ^ Jan Ozer. Good News: AV1 Encoding Times Drop to Near-Reasonable Levels. StreamingMedia.com. 2019-03-04  [2019-05-10]. （原始内容存档于2021-05-14）.
32. ^ 32.0 32.1 32.2 32.3 32.4 32.5 32.6 banan. Changelog. FFmpeg trunk SVN. FFmpeg website. 17 April 2007  [26 April 2007]. [永久失效連結]
33. ^ 33.0 33.1 ivo. FFmpeg development mailing list. FFmpeg development. FFmpeg website. 2007-05-07  [2010-12-24]. （原始内容存档于2007-08-11）.
34. ^ vitor. FFmpeg development mailing list. FFmpeg development. FFmpeg website. 13 April 2008  [14 April 2008]. [永久失效連結]
35. ^ vitor. FFmpeg development mailing list. FFmpeg development. FFmpeg website. 30 March 2008  [30 March 2008]. [永久失效連結]
36. ^ benoit. FFmpeg development mailing list. FFmpeg development. FFmpeg website. 14 April 2008  [14 April 2008]. [永久失效連結]
37. ^ Michael Niedermayer, Timothy Gu. RELEASE NOTES for FFmpeg 2.5 "Bohr". VideoLAN. 2014-12-05  [2014-12-05]. （原始内容存档于2014-12-08）.
38. ^ ramiro. FFmpeg development mailing list. FFmpeg development. FFmpeg website. 18 March 2008  [18 March 2008]. （原始内容存档于2008年8月17日）.
39. ^ NUT. Multimedia Wiki. 2012  [2014-01-03]. （原始内容存档于2014-01-03）.
40. ^ banan. FFmpeg development mailing list. FFmpeg development. FFmpeg website. 8 June 2008  [8 June 2008]. （原始内容存档于2009年1月14日）.
41. ^ faust3. FFmpeg development mailing list. FFmpeg development. FFmpeg website. 21 March 2008  [21 March 2008]. （原始内容存档于2008年4月25日）.
42. ^ blackhat. FFmpeg發生政變. Solidot. 2011-01-20  [2021-10-15]. （原始内容存档于2018-12-18）.
43. ^ Debian Bug Tracker.  [2014-02-04]. （原始内容存档于2015-02-11）.
44. ^ News. libav.org.  [2014-09-08]. （原始内容存档于2014-09-08）.
45. ^ FFmpeg开发者接受采访 - 开源中国社区.  [2011-03-05]. （原始内容存档于2011-03-19）.

## 参见

[编辑]

* 影片轉換

## 外部連結

[编辑]

* 官方网站

* 查
* 论
* 编

数据压缩软件

压缩软件
（比较）|

| 自由软件|

* 7-Zip
* File Roller
* Ark
* Expander（英语：Haiku Applications#Expander）
* FreeArc
* Info-ZIP
* KGB Archiver（英语：KGB Archiver）
* PAQ（英语：PAQ）
* Peazip
* The Unarchiver（仅解压）
* tar
* Xarchiver（英语：Xarchiver）
* Zipeg（英语：Zipeg）
* ZPAQ（英语：ZPAQ）

|

免費軟體|

* Filzip（英语：Filzip）
* IZArc
* LHA
* StuffIt Expander（英语：StuffIt Expander）（仅解压）
* TUGZip（英语：TUGZip）
* ZipGenius（英语：ZipGenius）
* 2345好压
* 360压缩
* Bandizip

商业软件|

* ARC
* ALZip
* Archive Utility（英语：Archive Utility）
* ARJ
* BetterZip（英语：BetterZip）
* BulkZip（英语：BulkZip）
* JAR（英语：JAR (software)）
* MacBinary（英语：MacBinary）
* PKZIP/SecureZIP（英语：PKZIP）
* PowerArchiver（英语：PowerArchiver）
* StuffIt（英语：StuffIt）
* WinAce
* WinRAR
* WinZip

非归档压缩|

| 常规|

* bzip2
* compress（英语：compress）
* gzip
* lzip（英语：lzip）
* lzop（英语：lzop）
* pack（英语：pack (compression)）
* rzip（英语：rzip）
* Snappy
* XZ Utils（英语：XZ Utils）

|

面向代码|

UPX

音频压缩
（比较）|

| 有损|

* Fraunhofer FDK AAC（英语：Fraunhofer FDK AAC）
* Nero AAC Codec（英语：Nero AAC Codec）
* Freeware Advanced Audio Coder (FAAC)（英语：FAAC）
* Helix DNA Producer（英语：Helix (multimedia project)）
* l3enc（英语：l3enc）
* LAME
* TooLAME（英语：TooLAME）
* Libavcodec
* libcelt（英语：CELT）
* libopus
* libspeex
* Musepack
* libvorbis
* Windows Media Encoder（英语：Windows Media Encoder）

|

无损|

* ALAC
* FLAC
* Libavcodec
* Monkey's Audio
* MPEG-4 ALS
* OptimFROG
* Shorten（英语：Shorten (file format)）
* TTA (True Audio)
* WavPack

视频压缩
（比较（英语：Comparison of video codecs））|

| 有损|

| MPEG-4 ASP（英语：MPEG-4 Part 2）|

* 3ivx（英语：3ivx）
* DivX
* Nero Digital
* FFmpeg
* HDX4（英语：HDX4）
* Xvid

|

H.264 /
MPEG-4 AVC|

* CoreAVC
* Blu-code（英语：Blu-code）
* DivX
* FFmpeg
* Nero Digital
* OpenH264
* QuickTime
* X264

HEVC|

* X265

其他|

* CineForm（英语：CineForm）
* Cinepak（英语：Cinepak）
* Daala
* DNxHD（英语：DNxHD codec）
* Helix DNA Producer（英语：Helix (multimedia project)）
* Indeo（英语：Indeo）
* Libavcodec
* Schrödinger (Dirac)（英语：Dirac (video compression format)）
* SBC（英语：Smart Bitrate Control）
* Sorenson（英语：Sorenson codec）
* On2 Technologies
* libtheora
* libvpx（英语：libvpx）
* Windows Media Encoder（英语：Windows Media Encoder）
* AOMedia Video 1

无损|

* FFV1（英语：FFV1）
* Huffyuv（英语：Huffyuv）
* Lagarith
* MSU Lossless（英语：MSU Lossless Video Codec）
* YULS（英语：YULS）

* 另見：压缩方法、压缩格式

*[查]: 查看该模板
*[论]: 讨论该模板
*[编]: 编辑该模板