FFmpeg
FFmpeg是一个開放原始碼的自由軟體,會當執行音訊佮視訊加種格式的錄影、轉檔、串流功能,包括著矣 libavcodec—— 這是一个用佇多個專案中音訊佮視訊的解碼器函式庫,以及 libavformat—— 一个音訊佮視訊格式轉換函式庫。
「 FFmpeg」這个單詞中的「FF」是講「Fast Forward(快速前進)」。「FFmpeg」的專案負責人佇咧一封回批中講:「 Just for the record , the original meaning of " FF " in FFmpeg is " Fast Forward " . . .」
這个案上原初是由法國程式的設計師法布里斯 ・ 貝拉(Fabrice Bellard)發起的,這馬是由邁克爾 ・ 尼德梅爾(Michael Niedermayer)佇咧進行維護。真濟 FFmpeg 的開發者仝彼時陣嘛是 MPlayer 專案的成員,FFmpeg 佇咧 MPlayer 專案中是予人設計做侍服器版本進行開發。
二空一一年三月十三,FFmpeg 部份開發人士決定另組 Libav,同時制定一套關於著專案繼續發展佮維護的規則。
組成元件
此計畫由幾个元件組成:
- 命令列應用程式
- _ 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 零 : 零 : 一孵空空-t 零 : 零 : 十曉零零 ` 即從 ` 零 : 零 : 一孵空空 ` 開始轉換 ` 零 : 零 : 十一孵空空 `。
- `-title `—— 設定標題。
- `-timestamp `—— 設定時間揬。
- `-vsync `—— 加減 Frame 使影音同步。
- `-c `—— 指定輸出檔案的編碼。
- `-metadata `—— 更加改輸出檔案的元資料。
- `-help `—— 檢視幫助資訊。
影像參數
- `-b : v `—— 設定影像流量,預設做兩百 Kbit / 秒。(_ 單位請參照下跤注意事項 _)
- `-r `—— 設定影格率值,預設為二十五。
- `-s `—— 設定畫面的闊佮懸。
- `-aspect `—— 設定畫面的比例。
- `-vn `—— 無處理影像,干焦針對聲音做處理的時陣使用。
- `-vcodec (-c : v ) `—— 設定影像編解碼器,無設定時是使用佮輸入檔案相仝之編解碼器。
聲音參數
- `-b : a `—— 設定每 Channel(最近的 SVN 版為所有 Channel 的總合)的流量。(_ 單位請參照下跤注意事項 _)
- `-ar `—— 設定採樣率。
- `-ac `—— 設定聲音的 Channel 數。
- `-acodec (-c : a ) `—— 設定聲音編解碼器,無設定的時陣佮影像相仝,使用佮輸入檔案相仝之編解碼器。
- `-an `—— 無處理聲音的,干焦針對影像做處理的時陣使用。
- `-vol `—— 設定音量大細,兩百五十六為標準音量。(愛設定做兩倍音量時是輸入五百十二,照這寡推捒。)
注意事項
- 以 `-b : v ` 佮 `-b : a ` 參數設定時行,根據使用的 ffmpeg 版本,愛注意單位會有 kbits / sec 佮 bits / sec 的無仝。(可用 ` ffmpeg-h ` 顯示說明來確認單位。)
- 比如講,單位為 bits / sec 的狀況時陣,要指定流量六十四 kbps 時需要輸入 `-b : a 六十四 k `;單位為 kbits / sec 的情況時著愛輸入 `-b : a 六十四 `。
- 以 `-acodec ` 佮 `-vcodec ` 所指定的編解碼器名稱,會根據使用的 ffmpeg 版本的所有的無仝款。像使用 AAC 編解碼器的時,會有輸入 aac 佮 libfaac 的狀況。此外,編解碼器有分做干焦解碼的時使用佮干焦供編碼的時陣是使用,因此一定愛利用 ` ffmpeg-formats ` 確認輸入的編解碼器敢有法度運作。
支援的編碼器、格式佮協定
編碼器
FFmpeg 專案原生的編碼器:
- Snow
- FFV 一
FFmpeg 已經實現的:
- ITU-T 影片標準:H . 兩百六十一 , H . 兩百六十二 / MPEG 鋪二 Part 二 , H . 兩百六十三和 H . 兩百六十四 / MPEG 扳四 AVC
- ITU-T 音訊編解碼器標準:G . 七百一十一 µ-law , G . 七百一十一 A-law , G . 七仔二十一(嘛叫 G . 七仔二十六三十二 k), G . 七仔二二 , G . 七百二十二孵二(嘛叫 AMR-WB), G . 七仔二三(嘛叫 G . 七仔二十六二十四 k 佮四十 k)和 G . 七仔二十六
- ISO / IEC MPEG 影片標準:MPEG 影一 Part 二 , H . 兩百六十二 / MPEG 鋪二 Part 二 , MPEG 扳四 Part 二和 H . 兩百六十四 / MPEG 扳四 AVC
- ISO / IEC MPEG 音訊標準:MP 一 , MP 二 , MP 三 , AAC , HE-AAC 和 MPEG 扳四 ALS
- ISO / IEC / ITU-T JPEG 圖像標準:JPEG 和 JPEG-LS
- SMPTE 影片標準:VC 影一(嘛叫做 WMV 三), VC ma三(嘛叫做 AVID DNxHD)和 DPX 圖像
- SMPTE 音訊標準:SMPTE 三百空二 M
- DVD 論壇的相關標準 / 杜比實驗室的音訊編解碼器:MLP(嘛稱 TrueHD)和 AC ma三
- 三 GPP 音訊編碼器標準:AMR-NB , AMR-WB(嘛叫 G . 七百二十二孵二)
- GSM 相關的語音訊號編解碼器:Full Rate
- Windows Media Player 相關的影片編解碼器:Microsoft RLE , Microsoft Video 一 , Cinepak , Indeo 二 , 三佮五 , Motion JPEG , Microsoft MPEG 扳四 v 一 , v 二和 v 三 , WMV 一 , WMV 二 and WMV 三(嘛稱 VC 影一)
- Windows Media Player 相關的音訊編解碼器:WMA 一 , WMA 二和 WMA Pro
- Windows Media Player 相關的語音訊號編解碼器:WMA Voice 和 MS-GSM
- RealPlayer 相關的影片編解碼器:RealVideo 一 , 二 , 三佮四
- RealPlayer 相關的音訊編解碼器:RealAudio 三 , 六 , 七 , 八 , 九佮十
- RealPlayer 相關的語音訊號編解碼器:RealAudio 一 , 二 ( G . 七百二十八的衍生 ) , 四和五
- QuickTime 相關的影片編解碼器:Cinepak , Motion JPEG 和 Sorenson 三 Codec
- QuickTime 相關的音訊編解碼器:QDesign 音樂編解碼器二和 ALAC
- Adobe Flash Player 相關的影片編解碼器:Sorenson 三 Codec , VP 六和 Flash Video ( FLV )
- Adobe Flash Player 相關的音訊編解碼器:Adobe SWF ADPCM 和 Nellymoser Asao
- Xiph . Org : Theora , Speex(通過 libspeex 實現), Vorbis 和 FLAC
- Sony : ATRAC 一和 ATRAC 三
- NTT : TwinVQ
- On 二 : Duck TrueMotion 一 , Duck TrueMotion 二 , VP 三 , VP 五 , VP 六和 VP 八
- RAD Game Tools : Smacker video 和 Bink video
- Truespeech
- RenderWare : TXD
The default MPEG 扳四 codec used by FFmpegs the FourCC ofFMP 四.
輸出格式
- AIFF
- ASF
- AVI
- BFI
- CAF
- FLV
- GIF
- GXF , General eXchange Format , SMPTE 三百六十 M
- HLS , HTTP Live Streaming
- IFF
- ISO base media file format(包括講 QuickTime , 三 GP 和 MP 四)
- M 二 V
- Matroska(包括講 WebM)
- Maxis XA
- MPEG-DASH
- MPEG program stream
- MPEG transport stream(包括講 AVCHD)
- MXF , Material eXchange Format , SMPTE 三百七十七 M
- MSN Webcam stream
- NUT
- Ogg
- OMA
- RL 二
- Segment , for creating segmented video streams
- Smooth Streaming
- TXD
- 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 上
社區內部問題
二空一一年一月十九,FFmpeg 的現任維護者 Michael Niedermayer 佇咧郵寄清單頂頭披露,FFmpeg 發生矣「政變」,一寡開發者占領官方網站,家己關起來其他人的寫入權限。隨後政變者宣佈 FFmpeg「建立新政權」,維護任務共𪜶接手,講只有維護團隊才會當有主原始碼庫的寫入權限。
「 新內閣」成員之一的 Diego Biurrun 解說𪜶的行動,稱「政變」是迫不得已,表示𪜶本來想欲聯絡每一个開發者,猶毋過無成功,因為毋是逐个人攏咧 IRC 上,抑是會當及時回電話、郵件抑是簡訊。「革命」的原因是為著統一,FFmpeg 社群分裂的情形嚴重到𪜶已經看袂落去矣。𪜶向望講 FFmpeg 專案會當建立一个健康而友好的開發環境。
隨後 Fabrice Bellard 等人於二空一一年三月十三跳出去開新專案,這號做 Libav,Libav 內底逐位成員的管理權限縮閣較細(至少袂當任意關起來其他人更改程式碼權限)。 而且 Debian 血統嘛響應,宣佈二空一二年欲將 ffmpeg 指令改做 avconv。
Libav 跳槽了有一定程度上更改 FFmpeg 的指令。
Libav / FFmpeg 著作權
因為 Libav、FFmpeg 是佇咧 LGPL、GPL 下釋出的(若使用其中一寡使用 GPL 協定釋出的模組著愛使用 GPL 協定), 任何人攏會當佇遵守協定的情形下自由使用。目前有足濟播送軟體攏來使用矣 Libav、FFmpeg 的代碼,但是𪜶並無遵守 LGPL,GPL 協定,無公開任何的原始碼。Libav、FFmpeg 社區便將遮的違反協定的公司、組織、個人的網址貼佇咧「恥辱大廳」(閣叫「恥辱柱」)上,並且佮遮的公司 / 組織 / 個人商討欲按怎解決著作權爭議。
參考資料
參見
- 影片轉換
外部連結
- 官方網站