本頁使用了標題或全文手工轉換

FFmpeg

維基百科,自由的百科全書
跳至導覽 跳至搜尋
FFmpeg
FFmpeg Logo new.svg
FFmpeg
FFmpeg
開發者 FFmpeg team
穩定版本
4.1.3
(2019年4月1日,​18天前​(2019-04-01
預覽版本
原始碼庫 編輯維基數據連結
程式語言 C語言
作業系統 跨平台
系統平台 跨平台
類型 多媒體
授權條款 GNU較寬鬆公共許可證
網站 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英語Libav,同時制定了一套關於專案繼續發展和維護的規則。[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——超過指定的檔案大小時則結束轉換。
  • -t——指定輸出檔案的持續時間,以秒為單位。
  • -ss——從指定時間開始轉換,以秒為單位。
  • -t-ss時間開始轉換(如-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專案能建立一個健康而友好的開發環境。[15]

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

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

Libav/FFmpeg著作權[編輯]

由於Libav、FFmpeg是在LGPLGPL下釋出的(如果使用了其中一些使用GPL協定釋出的模組則必須使用GPL協定),任何人都可以在遵守協定的情況下自由使用。目前有很多播放軟體都使用了Libav、FFmpeg的程式碼,但它們並沒有遵守LGPL,GPL協定,沒有公開任何原始碼。Libav、FFmpeg社群便將這些違反協定的公司、組織、個人的網址貼在「恥辱大廳」(又叫「恥辱柱」)上,並與這些公司/組織/個人商討如何解決著作權爭議。[18]

參考資料[編輯]

  1. ^ FFmpeg Documentation
  2. ^ Bellard, Fabrice. FFmpeg naming and logo. FFmpeg developer mailing list. Mplayer website. 2006-02-18 [2007-03-29]. (原始內容存檔於2007-09-30). 
  3. ^ 紅薯. FFmpeg項目改名為libav. 開源中國社群. 2011-03-15 [2011-06-14]. 
  4. ^ libav官方網站. [2011-06-14]. 
  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. 2007-05-07 [2010-12-24]. (原始內容存檔於2007-08-11). 
  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. ^ benoit. FFmpeg development mailing list. FFmpeg development. FFmpeg website. 14 April 2008 [14 April 2008]. [永久失效連結]
  10. ^ Michael Niedermayer, Timothy Gu. RELEASE NOTES for FFmpeg 2.5 "Bohr". VideoLAN. 2014-12-05 [2014-12-05]. (原始內容存檔於2014-12-08). 
  11. ^ ramiro. FFmpeg development mailing list. FFmpeg development. FFmpeg website. 18 March 2008 [18 March 2008]. (原始內容存檔於2008年8月17日). 
  12. ^ NUT. Multimedia Wiki. 2012 [2014-01-03]. 
  13. ^ banan. FFmpeg development mailing list. FFmpeg development. FFmpeg website. 8 June 2008 [8 June 2008]. (原始內容存檔於2009年1月14日). 
  14. ^ faust3. FFmpeg development mailing list. FFmpeg development. FFmpeg website. 21 March 2008 [21 March 2008]. (原始內容存檔於2008年4月25日). 
  15. ^ FFmpeg發生政變-中國開源社群
  16. ^ Debian Bug Tracker
  17. ^ http://libav.org/news.html#fftools_rename
  18. ^ FFmpeg開發者接受採訪 - 開源中國社群

外部連結[編輯]