FFmpeg執行影片檔轉檔時的畫面 | |
原作者 | Fabrice Bellard |
---|---|
開發者 | FFmpeg team |
首次发布 | 2000年12月20日[1],23年前 |
当前版本 |
|
源代码库 | |
编程语言 | C語言 [3]汇编语言 [4]C++[4] |
操作系统 | GNU/Linux macOS Microsoft Windows Android [5]伯克利軟件套件作業系統 |
平台 | x86 ARM架構 PowerPC MIPS DEC Alpha SPARC |
类型 | 多媒体框架 |
许可协议 |
|
网站 | ffmpeg |
FFmpeg 是一個開放原始碼的自由軟體,可以執行音訊和視訊多種格式的錄影、轉檔、串流功能[6],包含了libavcodec——這是一個用於多個專案中音訊和視訊的解碼器函式庫,以及libavformat——一個音訊與視訊格式轉換函式庫。
「FFmpeg」这个单词中的「FF」指的是「Fast Forward(快速前進)」[7]。「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,同时制定了一套关于项目继续发展和维护的规则。[8][9]
此計劃由幾個元件組成:
FFmpeg可使用眾多參數,參數內容會根據ffmpeg版本而有差異,使用前建議先參考參數及編解碼器的敘述。此外,參數明細可用ffmpeg -h
顯示;編解碼器名稱等明細可用ffmpeg -formats
顯示。
下列為較常使用的參數:
-i
——設定輸入檔名。-f
——設定輸出格式。-y
——若輸出檔案已存在時則覆蓋檔案。-fs
——超過指定的檔案大小時則結束轉換。-t
——指定输出文件的持续时间,以秒为单位。-ss
——從指定時間開始轉換,以秒为单位。-ss
和-t
一起使用時代表從-ss
的時間開始轉換持續時間為-t
的影片,例如:-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
顯示說明來確認單位。)-b:a 64k
;單位為kbits/sec的情況時則需輸入 -b:a 64
。-acodec
及-vcodec
所指定的編解碼器名稱,會根據使用的ffmpeg版本而有所不同。例如使用AAC編解碼器時,會有輸入aac與libfaac的情況。此外,編解碼器有分為僅供解碼時使用與僅供編碼時使用,因此一定要利用ffmpeg -formats
確認輸入的編解碼器是否能運作。
更多信息:libavcodec |
FFmpeg项目原生的编码器:
FFmpeg已实现的:
The default MPEG-4 codec used by FFmpegs the FourCC of FMP4.
2011年1月19日,FFmpeg的现任维护者Michael Niedermayer在邮件列表上披露,FFmpeg发生了“政变”,一些开发者占领了官方网站,关闭了其他人的寫入權限。随后政变者宣布FFmpeg “建立新政权”,维护任务将由他们接手,宣称只有维护团队才能拥有主源码库的寫入權限。
“新内阁”成员之一的Diego Biurrun解释了他们的行动,称“政變”是迫不得已,表示他们原本想联络每一个開發者,但沒成功,因为不是每个人都在IRC上,或者能及时回电话、邮件或短信。“革命”的原因是为了统一,FFmpeg社区分裂的情况严重到他们已经看不下去了。他们期望FFmpeg项目能建立一个健康而友好的开发环境。[20]
隨後Fabrice Bellard等人於2011年3月13日跳出去開新專案,稱作Libav,Libav裡面每位成員的管理權限縮更小(至少不能任意關閉其他人更改程式碼權限)。而Debian血統也響應,宣布2012年要將ffmpeg指令改成avconv[21]。
Libav跳槽之後有一定程度上更改FFmpeg的指令[22]。
由于Libav、FFmpeg是在LGPL、GPL下发布的(如果使用了其中一些使用GPL协议发布的模块则必须使用GPL协议),任何人都可以在遵守协议的情况下自由使用。目前有很多播放软件都使用了Libav、FFmpeg的代码,但它们并没有遵守LGPL,GPL协议,没有公开任何源代码。Libav、FFmpeg社區便將這些違反協議的公司、組織、個人的網址貼在“恥辱大廳”(又叫“恥辱柱”)上,并與這些公司/組織/個人商討如何解決版權爭議。[23]
|