跳至內容

FFmpeg

出自Taiwan Tongues 台語維基
這是此頁批准,以及是最近的修訂。

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 社區便將遮的違反協定的公司、組織、個人的網址貼佇咧「恥辱大廳」(閣叫「恥辱柱」)上,並且佮遮的公司 / 組織 / 個人商討欲按怎解決著作權爭議。

參考資料

參見

  • 影片轉換

外部連結

  • 官方網站