FFmpeg

维基百科,自由的百科全书
跳转至: 导航搜索
Libav / FFmpeg
FFmpeg Logo new.svg
FFmpeg.png
FFmpeg
開發者 Libav / FFmpeg team
穩定版本 2.4.2 / 2014年10月5日(20天前) (2014-10-05)
預覽版本 2.2-rc2 / 2014年3月15日(7個月前) (2014-03-15)
開發狀態 開發中
编程语言 C語言
操作系统 跨平台
平台 跨平台
类型 多媒體
许可协议 GNU宽通用公共许可证
網站 http://libav.org
http://ffmpeg.org/

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

"FFmpeg"这个单词中的"FF"指的是"Fast Forward"[2]。有些新手写信给"FFmpeg"的项目负责人,询问FF是不是代表“Fast Free”或者“Fast Fourier”等意思,"FFmpeg"的项目负责人回信说“Just for the record, the original meaning of "FF" in FFmpeg is "Fast Forward"...”

这个项目最初是由Fabrice Bellard发起的,而现在是由Michael Niedermayer在进行维护。许多FFmpeg的开发者同时也是MPlayer项目的成员,FFmpeg在MPlayer项目中是被设计为服务器版本进行开发。

2011年3月13日,FFmpeg部分開發人士決定另組libav,网址http://libav.org,同时制定了一套关于项目继续发展和维护的规则。[3][4]

組成元件[编辑]

此計劃由幾個元件組成:

  • ffmpeg是一個命令列工具,用來對視訊檔案轉換格式,也支援對電視卡即時編碼
  • ffserver是一個HTTP多媒體即時廣播串流伺服器,支援時光平移
  • ffplay是一個簡單的播放器,基於SDL與FFmpeg函式庫
  • libavcodec包含了全部FFmpeg音訊/視訊編解碼函式庫
  • libavformat包含demuxers和muxer函式庫
  • libavutil包含一些工具函式庫
  • libpostproc對於視訊做前處理的函式庫
  • libswscale對於影像作縮放的函式庫

參數[编辑]

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

下列為較常使用的參數。

主要參數[编辑]

  • -i設定輸入檔名。
  • -f設定輸出格式。
  • -y若輸出檔案已存在時則覆蓋檔案。
  • -fs超過指定的檔案大小時則結束轉換。
  • -ss從指定時間開始轉換。
  • -title設定標題。
  • -timestamp設定時間戳。
  • -vsync增減Frame使影音同步。

影像參數[编辑]

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

聲音參數[编辑]

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

注意事項[编辑]

  • 以-b及ab參數設定流量時,根據使用的ffmpeg版本,須注意單位會有kbits/sec與bits/sec的不同。(可用ffmpeg -h顯示說明來確認單位。)
例如,單位為bits/sec的情況時,欲指定流量64kbps時需輸入『 -ab 64k』;單位為kbits/sec的情況時則需輸入『 -ab 64』。
  • 以-acodec及-vcodec所指定的編解碼器名稱,會根據使用的ffmpeg版本而有所不同。例如使用AAC編解碼器時,會有輸入aac與libfaac的情況。此外,編解碼器有分為僅供解碼時使用與僅供編碼時使用,因此一定要利用ffmpeg -formats確認輸入的編解碼器是否能運作。

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

编码器[编辑]

FFmpeg项目原生的编码器:

FFmpeg已实现的:

The default MPEG-4 codec used by FFmpeg for encoding has 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项目能建立一个健康而友好的开发环境。[13]

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

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

Libav/FFmpeg版权[编辑]

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

注釋[编辑]

  1. ^ FFmpeg Documentation
  2. ^ Bellard, Fabrice. FFmpeg naming and logo. FFmpeg developer mailing list. Mplayer website. 18 February 2006 [2007-03-29]. 
  3. ^ 红薯. FFmpeg项目改名为libav. 开源中国社区. March 15, 2011 [June 14, 2011]. 
  4. ^ libav官方网站. [June 14, 2011]. 
  5. ^ 5.0 5.1 5.2 5.3 5.4 5.5 5.6 banan. Changelog. FFmpeg trunk SVN. FFmpeg website. 17 April 2007 [26 April 2007]. 
  6. ^ 6.0 6.1 ivo. FFmpeg development mailing list. FFmpeg development. FFmpeg website. 7 May 2007 [24 December 2010]. 
  7. ^ vitor. FFmpeg development mailing list. FFmpeg development. FFmpeg website. 13 April 2008 [14 April 2008]. 
  8. ^ vitor. FFmpeg development mailing list. FFmpeg development. FFmpeg website. 30 March 2008 [30 March 2008]. 
  9. ^ faust3. FFmpeg development mailing list. FFmpeg development. FFmpeg website. 21 March 2008 [21 March 2008]. 
  10. ^ benoit. FFmpeg development mailing list. FFmpeg development. FFmpeg website. 14 April 2008 [14 April 2008]. 
  11. ^ ramiro. FFmpeg development mailing list. FFmpeg development. FFmpeg website. 18 March 2008 [18 March 2008]. 
  12. ^ banan. FFmpeg development mailing list. FFmpeg development. FFmpeg website. 8 June 2008 [8 June 2008]. 
  13. ^ FFmpeg發生政變-中國開源社區
  14. ^ Debian Bug Tracker
  15. ^ http://libav.org/news.html#fftools_rename
  16. ^ FFmpeg开发者接受采访 - 开源中国社区

外部連結[编辑]