FFmpeg是一個(gè)自由軟件憾儒,可以運(yùn)行音頻和視頻多種格式的錄影惠险、轉(zhuǎn)換呜达、流功能[1]唆貌,包含了libavcodec——這是一個(gè)用于多個(gè)項(xiàng)目中音頻和視頻的解碼器庫(kù)滑潘,以及l(fā)ibavformat——一個(gè)音頻與視頻格式轉(zhuǎn)換庫(kù)。
組成部件:
ffmpeg——一個(gè)命令行工具锨咙,用來(lái)對(duì)視頻文件轉(zhuǎn)換格式语卤,也支持對(duì)電視卡即時(shí)編碼
ffserver——一個(gè)HTTP多媒體即時(shí)廣播流服務(wù)器,支持時(shí)光平移
ffplay——一個(gè)簡(jiǎn)單的播放器蓖租,基于SDL與FFmpeg庫(kù)
libavcodec——包含全部FFmpeg音頻/視頻編解碼庫(kù)
libavformat——包含demuxers和muxer庫(kù)
libavutil——包含一些工具庫(kù)
libpostproc——對(duì)于視頻做前處理的庫(kù)
libswscale——對(duì)于視頻作縮放的庫(kù)
參數(shù):
FFmpeg可使用眾多參數(shù)粱侣,參數(shù)內(nèi)容會(huì)根據(jù)ffmpeg版本而有差異,使用前建議先參考參數(shù)及編解碼器的敘述蓖宦。此外齐婴,參數(shù)明細(xì)可用ffmpeg -h顯示;編解碼器名稱(chēng)等明細(xì)可用ffmpeg -formats顯示稠茂。
下列為較常使用的參數(shù):
主要參數(shù)[編輯]
-i——設(shè)置輸入檔名柠偶。
-f——設(shè)置輸出格式。
-y——若輸出文件已存在時(shí)則覆蓋文件睬关。
-fs——超過(guò)指定的文件大小時(shí)則結(jié)束轉(zhuǎn)換诱担。
-ss——從指定時(shí)間開(kāi)始轉(zhuǎn)換。
-t從-ss時(shí)間開(kāi)始轉(zhuǎn)換(如-ss 00:00:01.00 -t 00:00:10.00即從00:00:01.00開(kāi)始到00:00:11.00)电爹。
-title——設(shè)置標(biāo)題蔫仙。
-timestamp——設(shè)置時(shí)間戳。
-vsync——增減Frame使影音同步丐箩。
視頻參數(shù)[編輯]
-b:v——設(shè)置視頻流量摇邦,默認(rèn)為200Kbit/秒。(單位請(qǐng)引用下方注意事項(xiàng))
-r——設(shè)置幀率值屎勘,默認(rèn)為25施籍。
-s——設(shè)置畫(huà)面的寬與高。
-aspect——設(shè)置畫(huà)面的比例概漱。
-vn——不處理視頻丑慎,于僅針對(duì)聲音做處理時(shí)使用。
-vcodec( -c:v )——設(shè)置視頻視頻編解碼器,未設(shè)置時(shí)則使用與輸入文件相同之編解碼器竿裂。
聲音參數(shù)[編輯]
-b:a——設(shè)置每Channel(最近的SVN版為所有Channel的總合)的流量玉吁。(單位請(qǐng)引用下方注意事項(xiàng))
-ar——設(shè)置采樣率。
-ac——設(shè)置聲音的Channel數(shù)铛绰。
-acodec ( -c:a )——設(shè)置聲音編解碼器诈茧,未設(shè)置時(shí)與視頻相同,使用與輸入文件相同之編解碼器捂掰。
-an——不處理聲音敢会,于僅針對(duì)視頻做處理時(shí)使用。
-vol——設(shè)置音量大小这嚣,256為標(biāo)準(zhǔn)音量鸥昏。(要設(shè)置成兩倍音量時(shí)則輸入512,依此類(lèi)推姐帚。)
注意事項(xiàng)[編輯]
以-b:v及-b:a首選項(xiàng)流量時(shí)吏垮,根據(jù)使用的ffmpeg版本,須注意單位會(huì)有kbits/sec與bits/sec的不同罐旗。(可用ffmpeg -h顯示說(shuō)明來(lái)確認(rèn)單位膳汪。)
例如,單位為bits/sec的情況時(shí)九秀,欲指定流量64kbps時(shí)需輸入-b:a 64k遗嗽;單位為kbits/sec的情況時(shí)則需輸入-b:a 64。
以-acodec及-vcodec所指定的編解碼器名稱(chēng)鼓蜒,會(huì)根據(jù)使用的ffmpeg版本而有所不同痹换。例如使用AAC編解碼器時(shí),會(huì)有輸入aac與libfaac的情況都弹。此外娇豫,編解碼器有分為僅供解碼時(shí)使用與僅供編碼時(shí)使用,因此一定要利用ffmpeg -formats確認(rèn)輸入的編解碼器是否能運(yùn)作畅厢。
支持的編碼器冯痢、格式和協(xié)議:
FFmpeg項(xiàng)目本地的編碼器:
FFmpeg已實(shí)現(xiàn)的:
ITU-T視頻標(biāo)準(zhǔn):H.261,[5]H.262/MPEG-2 Part 2,H.263[5]和H.264/MPEG-4 AVC[5]
ITU-T音頻編解碼器標(biāo)準(zhǔn):G.711μ-law,G.711A-law,G.721(也叫G.72632k),G.722,G.722.2(也叫AMR-WB),G.723(也叫G.72624k和40k)和G.726
ISO/IECMPEG視頻標(biāo)準(zhǔn):MPEG-1 Part 2,H.262/MPEG-2 Part 2,MPEG-4 Part 2和H.264/MPEG-4 AVC
ISO/IEC MPEG音頻標(biāo)準(zhǔn):MP1,MP2,MP3,AAC,HE-AAC和MPEG-4 ALS
ISO/IEC/ITU-TJPEG圖像標(biāo)準(zhǔn):JPEG和JPEG-LS
SMPTE視頻標(biāo)準(zhǔn):VC-1(也稱(chēng)作WMV3),VC-3(也稱(chēng)作AVIDDNxHD)和DPX圖像
SMPTE音頻標(biāo)準(zhǔn):SMPTE 302M
DVD論壇的相關(guān)標(biāo)準(zhǔn) /杜比實(shí)驗(yàn)室的音頻編解碼器:MLP(也稱(chēng)TrueHD)和AC-3
3GPP音頻編碼器標(biāo)準(zhǔn):AMR-NB,AMR-WB(也叫G.722.2)
GSM相關(guān)的語(yǔ)音信號(hào)編解碼器:Full Rate
Windows Media Player相關(guān)的視頻編解碼器:Microsoft RLE,Microsoft Video 1,Cinepak,Indeo2, 3和5,[5]Motion JPEG,Microsoft MPEG-4v1, v2和v3,WMV1, WMV2 and WMV3(也稱(chēng)VC-1)
Windows Media Player相關(guān)的音頻編解碼器:WMA1, WMA2和WMA Pro
Windows Media Player相關(guān)的語(yǔ)音信號(hào)編解碼器:WMA Voice和MS-GSM
RealPlayer相關(guān)的視頻編解碼器:RealVideo1, 2, 3和4
RealPlayer相關(guān)的音頻編解碼器:RealAudio3, 6, 7, 8, 9和10
RealPlayer相關(guān)的語(yǔ)音信號(hào)編解碼器:RealAudio1, 2 (G.728的派生), 4和5
QuickTime相關(guān)的視頻編解碼器:Cinepak,Motion JPEG和Sorenson 3 Codec
QuickTime相關(guān)的音頻編解碼器:QDesign音樂(lè)編解碼器2和ALAC
Adobe Flash Player相關(guān)的視頻編解碼器:Sorenson 3 Codec,VP6和Flash Video (FLV)
Adobe Flash Player相關(guān)的音頻編解碼器:Adobe SWF ADPCM和Nellymoser Asao
Xiph.Org:Theora,Speex(通過(guò)libspeex實(shí)現(xiàn)),Vorbis和FLAC
On2: Duck TrueMotion 1, Duck TrueMotion 2,VP3,VP5,[5]VP6[5]和VP8
RAD Game Tools:Smacker video和Bink video
RenderWare: TXD[6]
The defaultMPEG-4codec used by FFmpegs theFourCCofFMP4.
格式[編輯]
BFI[7]
GXF, General eXchange Format, SMPTE 360M
ISO base media file format(包括QuickTime,3GP和MP4)
MPEG transport stream(includingAVCHD)
MXF, Material eXchange Format, SMPTE 377M
MSN Webcam stream[11]
TXD[6]
協(xié)議[編輯]
IETF標(biāo)準(zhǔn):TCP,UDP,Gopher,HTTP,RTP,RTSP和SDP
蘋(píng)果公司的相關(guān)標(biāo)準(zhǔn):HTTP Live Streaming
RealMedia的相關(guān)標(biāo)準(zhǔn):RealMedia RTSP/RDT
Adobe的相關(guān)標(biāo)準(zhǔn):RTMP, RTMPT(由librtmp實(shí)現(xiàn)),RTMPE(由librtmp實(shí)現(xiàn))框杜,RTMPTE(由librtmp)和RTMPS(由librtmp實(shí)現(xiàn))
微軟的相關(guān)標(biāo)準(zhǔn):MMS在TCP上和MMS在HTTP上
社區(qū)內(nèi)部問(wèn)題[編輯]
2011年1月19日浦楣,F(xiàn)Fmpeg的現(xiàn)任維護(hù)者M(jìn)ichael Niedermayer在郵件列表上披露,F(xiàn)Fmpeg發(fā)生了“政變”霸琴,一些開(kāi)發(fā)者占領(lǐng)了官方網(wǎng)站椒振,關(guān)閉了其他人的寫(xiě)入權(quán)限昭伸。隨后政變者宣布FFmpeg “創(chuàng)建新政權(quán)”梧乘,維護(hù)任務(wù)將由他們接手,宣稱(chēng)只有維護(hù)團(tuán)隊(duì)才能擁有主源碼庫(kù)的寫(xiě)入權(quán)限。
“新內(nèi)閣”成員之一的Diego Biurrun解釋了他們的行動(dòng)选调,稱(chēng)“政變”是迫不得已夹供,表示他們?cè)鞠肼?lián)絡(luò)每一個(gè)開(kāi)發(fā)者,但沒(méi)成功仁堪,因?yàn)椴皇敲總€(gè)人都在IRC上哮洽,或者能及時(shí)回電話(huà)、郵件或短信弦聂∧窀ǎ“革命”的原因是為了統(tǒng)一,F(xiàn)Fmpeg社區(qū)分裂的情況嚴(yán)重到他們已經(jīng)看不下去了莺葫。他們期望FFmpeg項(xiàng)目能創(chuàng)建一個(gè)健康而友好的開(kāi)發(fā)環(huán)境匪凉。[13]
隨后Fabrice Bellard等人于2011年3月13日跳出去開(kāi)新項(xiàng)目,稱(chēng)作Libav捺檬,Libav里面每位成員的管理權(quán)限縮更性俨恪(至少不能任意關(guān)閉其他人更改代碼權(quán)限)。而Debian血統(tǒng)也響應(yīng)堡纬,宣布2012年要將ffmpeg指令改成avconv[14]聂受。
Libav跳槽之后有一定程度上更改FFmpeg的指令[15]。
Libav/FFmpeg版權(quán):
由于Libav烤镐、FFmpeg是在LGPL蛋济、GPL下發(fā)布的(如果使用了其中一些使用GPL協(xié)議發(fā)布的模塊則必須使用GPL協(xié)議),任何人都可以自由使用职车,但必須嚴(yán)格遵守LGPL瘫俊、GPL協(xié)議。目前有很多播放軟件都使用了Libav悴灵、FFmpeg的代碼扛芽,但它們并沒(méi)有遵守LGPL,GPL協(xié)議积瞒,沒(méi)有公開(kāi)任何源代碼川尖。Libav、FFmpeg社區(qū)便將這些違反協(xié)議的公司茫孔、組織叮喳、個(gè)人的網(wǎng)址粘貼“恥辱大廳”(又叫“恥辱柱”)上,并與這些公司/組織/個(gè)人商討如何解決版權(quán)爭(zhēng)議缰贝。
本文收集于維基百科馍悟,如有侵權(quán)請(qǐng)聯(lián)系,馬上刪除剩晴。