Share to: share facebook share twitter share wa share telegram print page

FFmpeg

FFmpeg
FFmpeg執行影片檔轉檔時的畫面
FFmpeg執行影片檔轉檔時的畫面
原作者Fabrice Bellard
開發者FFmpeg team
首次发布2000年12月20日[1]在维基数据编辑,24年前
当前版本
  • 7.1(2024年9月30日;穩定版本)[2]
編輯維基數據鏈接
源代码库 編輯維基數據鏈接
编程语言C
[3]汇编语言
[4]C++[4]在维基数据编辑
操作系统GNU/Linux
macOS
Microsoft Windows
Android
[5]伯克利軟件套件作業系統在维基数据编辑
平台x86
ARM架構
PowerPC
MIPS
DEC Alpha
SPARC在维基数据编辑
类型多媒体框架在维基数据编辑
许可协议
  • GNU宽通用公共许可证2.1或更高版本
編輯維基數據鏈接
网站ffmpeg.org 編輯維基數據鏈接

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

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

历史

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

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

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

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

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

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

编解码器历史

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

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

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

組成元件

此計劃由幾個元件組成:

  • 命令列應用程式
    • 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確認輸入的編解碼器是否能運作。

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

编码器

FFmpeg项目原生的编码器:

FFmpeg已实现的:

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

輸出格式

协议

  • IETF标准:TCP, UDP, Gopher, HTTP, RTP, RTSPSDP
  • 苹果公司的相关标准: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项目能建立一个健康而友好的开发环境。[41]

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

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

Libav/FFmpeg版权

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

參考資料

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

参见

外部連結

Index: pl ar de en es fr it arz nl ja pt ceb sv uk vi war zh ru af ast az bg zh-min-nan bn be ca cs cy da et el eo eu fa gl ko hi hr id he ka la lv lt hu mk ms min no nn ce uz kk ro simple sk sl sr sh fi ta tt th tg azb tr ur zh-yue hy my ace als am an hyw ban bjn map-bms ba be-tarask bcl bpy bar bs br cv nv eml hif fo fy ga gd gu hak ha hsb io ig ilo ia ie os is jv kn ht ku ckb ky mrj lb lij li lmo mai mg ml zh-classical mr xmf mzn cdo mn nap new ne frr oc mhr or as pa pnb ps pms nds crh qu sa sah sco sq scn si sd szl su sw tl shn te bug vec vo wa wuu yi yo diq bat-smg zu lad kbd ang smn ab roa-rup frp arc gn av ay bh bi bo bxr cbk-zam co za dag ary se pdc dv dsb myv ext fur gv gag inh ki glk gan guw xal haw rw kbp pam csb kw km kv koi kg gom ks gcr lo lbe ltg lez nia ln jbo lg mt mi tw mwl mdf mnw nqo fj nah na nds-nl nrm nov om pi pag pap pfl pcd krc kaa ksh rm rue sm sat sc trv stq nso sn cu so srn kab roa-tara tet tpi to chr tum tk tyv udm ug vep fiu-vro vls wo xh zea ty ak bm ch ny ee ff got iu ik kl mad cr pih ami pwn pnt dz rmy rn sg st tn ss ti din chy ts kcg ve 
Prefix: a b c d e f g h i j k l m n o p q r s t u v w x y z 0 1 2 3 4 5 6 7 8 9 
Kembali kehalaman sebelumnya