天天看點

ffmpeg項目介紹

内容來自wiki:

http://zh.wikipedia.org/wiki/FFmpeg

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]

目錄

  [隐藏] 

  • 1 組成元件
  • 2 參數
    • 2.1 主要參數
    • 2.2 圖像參數
    • 2.3 聲音參數
    • 2.4 注意事項
  • 3 支援的編碼器、格式和協定
    • 3.1 編碼器
    • 3.2 格式
    • 3.3 協定
  • 4 社群内部問題
  • 5 Libav/FFmpeg版權
  • 6 注釋
  • 7 外部連結

組成元件[編輯]

此計劃由幾個元件組成:

  • 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

    确認輸入的編解碼器是否能運作。

支援的編碼器、格式和協定[編輯]

編碼器[編輯]

更多資料:libavcodec

FFmpeg項目本地的編碼器:

  • Snow
  • FFV1

FFmpeg已實作的:

  • ITU-T視訊标準:H.261,[5] H.262/MPEG-2 Part 2, H.263[5]和H.264/MPEG-4 AVC[5]
  • 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,[5] 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[5]
  • NTT: TwinVQ
  • On2: Duck TrueMotion 1, Duck TrueMotion 2, VP3, VP5,[5] VP6[5]和VP8
  • RAD Game Tools: Smacker video和Bink video
  • Truespeech
  • RenderWare: TXD[6]

The default MPEG-4 codec used by FFmpeg for encoding has the FourCC of FMP4.

格式[編輯]

  • ASF
  • AVI
  • BFI[7]
  • FLV
  • GXF, General eXchange Format, SMPTE 360M
  • IFF[8]
  • RL2[9]
  • ISO base media file format(包括QuickTime, 3GP和MP4)
  • Matroska(包括WebM)
  • Maxis XA[10]
  • MPEG program stream
  • MPEG transport stream(including AVCHD)
  • MXF, Material eXchange Format, SMPTE 377M
  • MSN Webcam stream[11]
  • Ogg
  • OMA[12]
  • TXD[6]
  • 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項目能建立一個健康而友好的開發環境。[13]

随後Fabrice Bellard等人于2011年3月13日跳出去開新項目,稱作Libav,Libav裡面每位成員的管理權限縮更小(至少不能任意關閉其他人更改代碼權限)。而Debian血統也響應,宣布2012年要将ffmpeg指令改成avconv[來源請求]。

Libav跳槽之後有一定程度上更改FFmpeg的指令,詳細請參考http://libav.org/ 下方日志August 09 2011段。

Libav/FFmpeg版權[編輯]

由于Libav、FFmpeg是在LGPL、GPL協定下釋出的(如果使用了其中一些使用GPL協定釋出的子產品則必須使用GPL協定),任何人都可以自由使用,但必須嚴格遵守LGPL、GPL協定。目前有很多點傳播放軟體都使用了Libav、FFmpeg的代碼,但它們并沒有遵守LGPL,GPL協定,沒有公開任何源代碼。Libav、FFmpeg社群便将這些違反協定的公司、組織、個人的網址粘貼“恥辱大廳”(又叫“恥辱柱”)上,并與這些公司/組織/個人商讨如何解決版權争議。[14]

注釋[編輯]

  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. ^ FFmpeg開發者接受采訪 - 開源中國社群

外部連結[編輯]

  • Zeranoe FFmpeg Windows builds
  • FFmpeg恥辱柱