轉(zhuǎn)自:https://wanglongqi.github.io/tools/2015/02/13/ffmpegcn/
0.常用參數(shù)快捷:
主要參數(shù):
-
-i——設(shè)置輸入文件名。 -
-f——設(shè)置輸出格式。 -
-y——若輸出文件已存在時(shí)則覆蓋文件。 -
-fs——超過(guò)指定的文件大小時(shí)則結(jié)束轉(zhuǎn)換。 -
-t——指定輸出文件的持續(xù)時(shí)間,以秒為單位。 -
-ss——從指定時(shí)間開始轉(zhuǎn)換,以秒為單位。 -
-t從-ss時(shí)間開始轉(zhuǎn)換(如-ss 00:00:01.00 -t 00:00:10.00即從00:00:01.00開始到00:00:11.00)。 -
-title——設(shè)置標(biāo)題。 -
-timestamp——設(shè)置時(shí)間戳。 -
-vsync——增減Frame使影音同步。 -
-c——指定輸出文件的編碼。 -
-metadata——更改輸出文件的元數(shù)據(jù)。 -
-help——查看幫助信息
影像參數(shù):
-
-b:v——設(shè)置影像流量,默認(rèn)為200Kbit/秒。(單位請(qǐng)引用下方注意事項(xiàng)) -
-r——設(shè)置幀率值,默認(rèn)為25。 -
-s——設(shè)置畫面的寬與高。 -
-aspect——設(shè)置畫面的比例。 -
-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,依此類推。)
1. 概要
ffmpeg [global_options] {[input_file_options] -i INPUT_FILE} ... {[output_file_options] OUTPUT_FILE} ...}
2. 說(shuō)明
是一個(gè)非??斓囊曨l和音頻轉(zhuǎn)換器,還可以抓取實(shí)時(shí)的音頻/視頻流。它可以在任意的采樣率之間的轉(zhuǎn)換和調(diào)整視頻,并同時(shí)使用高品質(zhì)的多相濾波器。
從輸入“文件”(其可以是常規(guī)文件,管道,網(wǎng)絡(luò)流,錄制裝置等),由指定任意數(shù)量的讀取
選項(xiàng),并寫入到任意數(shù)量的輸出“文件”,只需指定一個(gè)輸出的文件名。任何一個(gè)命令行中不能被解釋為選項(xiàng)的內(nèi)容都被認(rèn)為是一個(gè)輸出文件名。
每個(gè)輸入或輸出文件可以在原則上,包含任意數(shù)量的不同類型(視頻/音頻/字幕/附件/數(shù)據(jù))的流。輸出文件中允許流的數(shù)量和類型是由輸出格式容器限制決定的。輸入流和輸出流直接的映射可以自動(dòng)完成也可以用選項(xiàng)給定(見流選擇章節(jié))。
引用輸入文件的選項(xiàng)時(shí),則必須使用他們的索引(從0開始)。例如:第一輸入文件是0 ,第二個(gè)是1等。類似地,一個(gè)文件中的流也通過(guò)其索引指定。例如2:3指的是在第三個(gè)輸入文件中的第四數(shù)據(jù)流。參見流章節(jié)。
作為一般規(guī)則,選項(xiàng)作用于下一個(gè)指定的文件。因此,命令的順序是重要,你可以在命令行上多次相同的選項(xiàng)。每次選項(xiàng)的出現(xiàn)都將作用于下一個(gè)輸入或輸出文件。這條規(guī)則若有例外將會(huì)提前聲明(例如冗余級(jí)別)。
不要混合輸入和輸出文件。首先指定所有輸入文件,那么所有的輸出文件。也不要混用屬于不同的文件的選項(xiàng)。所有選項(xiàng)僅適用于下一個(gè)輸入或輸出文件,之后選項(xiàng)將被重置。
設(shè)置輸出文件以64千比特/秒的視頻比特率:
ffmpeg -i input.avi -b:V 64K -bufsize 64K output.avi
要強(qiáng)制輸出文件為24 fps的幀速率:
ffmpeg -i input.avi -r 24 output.avi
要強(qiáng)制輸入文件的幀頻(僅對(duì)原始格式有效),以1 FPS讀入文件,以每秒24幀的幀速率輸出:
ffmpeg -r 1 -i input.m2v -r 24 output.avi
format 選項(xiàng)可能需要指定,對(duì)于原始輸入文件。
3. 詳細(xì)描述
在轉(zhuǎn)碼過(guò)程ffmpeg每個(gè)輸出可以由以下圖描述:
_______ ______________
| | | |
| input | demuxer | encoded data | decoder
| file | ---------> | packets | -----+
|_______| |______________| |
v
_________
| |
| decoded |
| frames |
|_________|
________ ______________ |
| | | | |
| output | <-------- | encoded data | <----+
| file | muxer | packets | encoder
|________| |______________|
調(diào)用libavformat庫(kù)(含分流器)來(lái)讀取輸入文件并獲得含有他們編碼信息的數(shù)據(jù)包。當(dāng)有多個(gè)輸入文件, ffmpeg將通過(guò)跟蹤最小的時(shí)間戳來(lái)試圖在所有活躍的輸入流間同步。編碼的數(shù)據(jù)包然后被傳遞到解碼器(除非復(fù)制音頻流被選擇用于流,見進(jìn)一步的說(shuō)明)。解碼器產(chǎn)生的未壓縮的幀(原始視頻/ PCM音頻/ …),它可以進(jìn)一步通過(guò)濾鏡進(jìn)行處理(見下一節(jié))。通過(guò)濾鏡后,這些幀被傳遞到編碼器,編碼器將其編碼并輸出編碼后的數(shù)據(jù)包。最后,這些將被傳輸給混合器以將編碼數(shù)據(jù)寫入到輸出文件。
3.1 濾鏡
在編碼之前, ffmpeg可以使用libavfilter庫(kù)中的濾鏡處理原始的音頻和視頻幀。幾個(gè)連接的濾鏡可以形成一個(gè)濾鏡組(filtergraphs)。 ffmpeg有兩種filtergraphs:簡(jiǎn)單和復(fù)雜。
3.1.1 簡(jiǎn)單filtergraphs
簡(jiǎn)單filtergraphs是那些具有相同的類型且正好一個(gè)輸入和輸出的濾鏡組。另外,在上圖中,他們可以由簡(jiǎn)單地在解碼和編碼之間插入附加步驟來(lái)表示:
_________ ______________
| | | |
| decoded | | encoded data |
| frames |\ _ | packets |
|_________| \ /||______________|
\ __________ /
simple _\|| | / encoder
filtergraph | filtered |/
| frames |
|__________|
簡(jiǎn)單filtergraphs配置了每個(gè)流的篩選器選項(xiàng)(與視頻和音頻分別-vf和-af別名)。一個(gè)簡(jiǎn)單的FilterGraph動(dòng)態(tài)視頻可以看一下這樣的例子:
_______ _____________ _______ ________
| | | | | | | |
| input | ---> | deinterlace | ---> | scale | ---> | output |
|_______| |_____________| |_______| |________|
需要注意的是一些濾鏡改變幀屬性而不是畫面的內(nèi)容。例如,在上例中,fps改變幀的數(shù)量,但不觸及幀的內(nèi)容。又如setpts濾鏡,其僅設(shè)置時(shí)間戳而保持幀不變。
3.1.2 復(fù)雜filtergraphs
復(fù)雜filtergraphs是那些不能被描述為簡(jiǎn)單的線性處理鏈的濾鏡組。例如,當(dāng)濾鏡組具有多個(gè)輸入和/或輸出,或當(dāng)輸出流的類型是不同于輸入。它們可以被表示為以下圖:
_________
| |
| input 0 |\ __________
|_________| \ | |
\ _________ /| output 0 |
\ | | / |__________|
_________ \| complex | /
| | | |/
| input 1 |---->| filter ||_________| | | \ __________
/| graph | \ | |
/ | | \| output 1 |
_________ / |_________| |__________|
| | /
| input 2 |/
|_________|
復(fù)雜filtergraphs可使用-filter_complex選項(xiàng)配置。注意,此選項(xiàng)是全局性的,因?yàn)閺?fù)雜FilterGraph,就其本質(zhì),不能明確地與單個(gè)流或文件相關(guān)聯(lián)。
-lavfi選項(xiàng)相當(dāng)于-filter_complex。
一個(gè)復(fù)雜FilterGraph動(dòng)態(tài)的簡(jiǎn)單的例子是在overlay濾鏡,它具有兩個(gè)視頻輸入和一個(gè)視頻輸出,含有一個(gè)視頻重疊在另一個(gè)的上面。其對(duì)應(yīng)的音頻濾鏡是amix。
3.2 復(fù)制流
復(fù)制流是通過(guò)添加copy選項(xiàng)到-codec選項(xiàng)完成的。它使ffmpeg對(duì)指定的流忽略解碼和編碼步驟,所以它只能混合和拆包。它用于改變所述容器的格式或修改容器級(jí)別的元數(shù)據(jù)是有用的。在這種情況下,可以簡(jiǎn)化為這樣:
_______ ______________ ________
| | | | | |
| input | demuxer | encoded data | muxer | output |
| file | ---------> | packets | -------> | file |
|_______| |______________| |________|
由于不存在解碼或編碼,它是非???,沒有質(zhì)量損失。然而因?yàn)樵S多因素的工作,它可能無(wú)法在某些情況下使用。應(yīng)用濾鏡顯然也是不可能的,因?yàn)闉V鏡僅能作用在未壓縮的數(shù)據(jù)上。
4 選擇流
默認(rèn)情況下, ffmpeg只包含輸入文件中每個(gè)類型流各一個(gè)(視頻,音頻,字幕),并將它們添加到每個(gè)輸出文件。它選擇“最好”的每一個(gè)流基于以下標(biāo)準(zhǔn):用于視頻,它選擇最高分辨率的流;對(duì)于音頻,它使用最多聲道的流;對(duì)于字幕,它是第一個(gè)字幕流。在相同類型中,參數(shù)相等的若干流中具有最低索引的流被選擇。
您可以通過(guò)-vn/-an/-sn選項(xiàng)禁用其中的一些默認(rèn)值。若需全手動(dòng)控制,請(qǐng)使用-map選項(xiàng),它將禁用剛才所描述的默認(rèn)設(shè)置。
5 選項(xiàng)
所有的數(shù)值選項(xiàng)中,如果不另外指明,均表示接受數(shù)作為輸入,其后可添加一個(gè)SI單位的字符串,例如:K,M,或G。
如果i被附加在SI單位,完整的前綴將被解釋為一個(gè)單元前綴的二進(jìn)制倍數(shù),也即1024倍,而不是1000倍。追加B可使數(shù)值增加8倍。這允許使用,例如:KB,MiB,G和B的數(shù)量后綴。
選項(xiàng)??不帶參數(shù)是布爾選項(xiàng),并設(shè)置相應(yīng)的值設(shè)置為true。他們可以通過(guò)在選項(xiàng)前添加no來(lái)將選項(xiàng)設(shè)置為false。例如使用-nofoo將設(shè)置名稱為foo為假。
5.1 流標(biāo)識(shí)符
有些選項(xiàng)是按流的,例如比特率或編解碼器。流標(biāo)識(shí)符被用來(lái)精確地指定一個(gè)給定的選項(xiàng)作用于哪一個(gè)數(shù)據(jù)流(多個(gè))。
一個(gè)標(biāo)識(shí)符一般是選項(xiàng)名稱加冒號(hào)分隔的字符串。例如-codec:a:1 ac3包含流標(biāo)識(shí)符a:1,它匹配第二音頻流。因此,將選擇AC3編解碼器的第二音頻流。
一個(gè)標(biāo)識(shí)符可以匹配多個(gè)流,這個(gè)選項(xiàng)將適用于所有流。比如,流標(biāo)識(shí)符-b:a 128k標(biāo)識(shí)了所有的音頻流。
空標(biāo)識(shí)符匹配所有的流。例如, -codec copy或-codec: copy會(huì)復(fù)制所有的數(shù)據(jù)流而不重新編碼。
流標(biāo)識(shí)符的可能形式有:
stream_index
匹配與該索引對(duì)應(yīng)的流。例如-threads:1 4將設(shè)置第二個(gè)流的線程計(jì)數(shù)為4。
stream_type[:stream_index]
流類型是下列字母之一:v為視頻,a為聲音,s為字幕,d為數(shù)據(jù),t為附件。如果stream_index給出,則它匹配該類型的索引為stream_index的流。否則,它匹配所有這種類型的流。
p:program_id[:stream_index]
如果給定stream_index,那其將與在與ID為 program_id的program的stream_index的流相匹配。否則,它將匹配在program_id中的所有流。
#stream_id 或者 i:stream_id
按流索引逐一匹配流(如在MPEG-TS容器中的PID)。
m:key[:value]
匹配流的元數(shù)據(jù)標(biāo)簽中具有指定key的流。如果value 沒有給出,將匹配包含給定標(biāo)簽的所有流。
請(qǐng)注意,在ffmpeg中,按元數(shù)據(jù)匹配僅能用于輸入文件。
5.2 通用選項(xiàng)
這些選項(xiàng)當(dāng)中的FF *工具共享。
-L
顯示許可證。
-h, -?, -help, --help [arg]
顯示幫助。一個(gè)可選參數(shù)可以被指定為打印與特定項(xiàng)目相關(guān)的幫助。如果沒有指定參數(shù),則只顯示基本的(非高級(jí))工具選項(xiàng)。
arg的可能值是:
`long`
除了基本的工具選項(xiàng)外,打印高級(jí)的工具選項(xiàng)。
`full`
打印所有選項(xiàng),包括編碼器,解碼器,分流器,混合器,濾鏡等的共享和私有選項(xiàng)。
`decoder=decoder_name`
打印有關(guān)的解碼器`decoder_name`的詳細(xì)信息。使用`-decoders`選項(xiàng)來(lái)獲得所有的解碼器的列表。
`encoder=encoder_name`
打印有關(guān)指定編碼器`encoder_name`的詳細(xì)信息。使用`-encoders`選項(xiàng)來(lái)獲得所有編碼器的列表。
`demuxer=demuxer_name`
打印有關(guān)的分流器`demuxer_name`的詳細(xì)信息。使用`-formats`選項(xiàng)來(lái)獲取所有分流器和混合器的列表。
`muxer=muxer_name`
打印有關(guān)混合器`muxer_name`的詳細(xì)信息。使用`-formats`選項(xiàng)來(lái)獲取所有混合器和分流器的列表。
`filter=filter_name`
打印有關(guān)濾鏡`filter_name`的詳細(xì)信息。使用`-filters`選項(xiàng)來(lái)獲得所有濾鏡的列表。
-version
顯示的版本。
-formats
顯示可用的格式(包括設(shè)備)。
-devices
顯示可用的設(shè)備。
-codecs
顯示libavcodec已知的所有編解碼器。
注意,整個(gè)文檔中術(shù)語(yǔ)“解碼器”更正確地稱呼是比特流媒體格式(media bitstream format)。
-decoders
顯示可用的解碼器。
-encoders
顯示所有可用的編碼器。
-bsfs
顯示可用的流濾鏡。
-protocols
顯示可用的協(xié)議。
-filters
顯示可用的libavfilter濾鏡。
-pix_fmts
顯示可用的像素格式。
-sample_fmts
顯示可用的采樣格式。
-layouts
顯示頻道名稱和標(biāo)準(zhǔn)的渠道布局。
-colors
顯示公認(rèn)的顏色名稱。
-sources device[,opt1=val1[,opt2=val2]...]
顯示自動(dòng)檢測(cè)到的輸入設(shè)備的源。某些設(shè)備可提供不能自動(dòng)檢測(cè)系統(tǒng)相關(guān)的源名稱。返回的列表不能被假定為總是完整的。
ffmpeg -sources pulse,server=192.168.0.4
-sinks device[,opt1=val1[,opt2=val2]...]
自動(dòng)檢測(cè)顯示輸出設(shè)備的接收器。某些設(shè)備可提供不能自動(dòng)檢測(cè)系統(tǒng)相關(guān)的接收器名稱。返回的列表不能被假定為總是完整的。
ffmpeg -sinks pulse,server=192.168.0.4
-loglevel [repeat+]loglevel | -v [repeat+]loglevel
設(shè)置庫(kù)使用的日志記錄級(jí)別。加入repeat+表示重復(fù)日志輸出不應(yīng)該被壓縮到所述第一條日志和“最后的日志重復(fù)n次”線將被省略。 repeat,也可以單獨(dú)使用。如果repeat可以單獨(dú)使用,并沒有預(yù)設(shè)的記錄級(jí)別,默認(rèn)記錄級(jí)將被使用。如果給定多個(gè)日志級(jí)別參數(shù),使用repeat不會(huì)改變?nèi)罩炯?jí)別。loglevel是一個(gè)字符串或數(shù)字,可為以下值之一:
`quiet, -8`
保持沉默。
`panic, 0`
只顯示可能導(dǎo)致程序崩潰的致命錯(cuò)誤。目前沒有此類錯(cuò)誤。
`fatal, 8`
只顯示致命錯(cuò)誤。這些錯(cuò)誤會(huì)導(dǎo)致進(jìn)程絕對(duì)無(wú)法繼續(xù)。
`error, 16`
顯示所有的錯(cuò)誤,包括那些可以修復(fù)的。
`warning, 24`
顯示所有警告和錯(cuò)誤。將顯示任何有關(guān)可能不正確或不正常事件的信息。
`info, 32`
顯示處理過(guò)程中的信息。不單單是警告和錯(cuò)誤。這是默認(rèn)值。
`verbose, 40`
與info類似 ,但更詳細(xì)。
`debug, 48`
顯示一切信息,包括調(diào)試信息。
默認(rèn)情況下,程序日志輸出到標(biāo)準(zhǔn)錯(cuò)誤流,如果終端支持著色,顏色用來(lái)標(biāo)記錯(cuò)誤和警告。日志著色可以被環(huán)境變量AV_LOG_FORCE_NOCOLOR或NO_COLOR ,或者可以被強(qiáng)制設(shè)置環(huán)境變量AV_LOG_FORCE_COLOR 禁用。使用環(huán)境變量NO_COLOR已被棄用,并在之后的FFmpeg的版本將被丟棄。
-report
轉(zhuǎn)儲(chǔ)完整的命令行和控制臺(tái)輸出到當(dāng)前目錄一個(gè)文件名 ??為program - YYYYMMDD - HHMMSS .log的文件。此文件對(duì)于錯(cuò)誤報(bào)告非常有用。這也意味著-loglevel verbose。
將環(huán)境變量設(shè)置FFREPORT為任何值具有相同的效果。如果該值是一個(gè)’:’ - 分隔鍵=值序列,這些選項(xiàng)會(huì)影響報(bào)表;如果包含特殊字符則需要使用轉(zhuǎn)義字符,或者“:”分隔(參見的ffmpeg-utils的手冊(cè)中的“引用與轉(zhuǎn)義”一節(jié))。
下列選項(xiàng)也可使用:
`file`
設(shè)置報(bào)告使用的文件名??; %p添加程序名, %t添加時(shí)間戳, %%添加一個(gè)普通的%
`level`
設(shè)置使用的數(shù)值(查看日志詳細(xì)級(jí)別`-loglevel` )。
例如,要輸出到名為
ffreport.log使用的一個(gè)日志級(jí)別文件的報(bào)告32 (日志級(jí)別info的別稱 ):
FFREPORT=file=ffreport.log:level=32 ffmpeg -i input output
非致命的環(huán)境變量的解析錯(cuò)誤不會(huì)出現(xiàn)在報(bào)告中。
-hide_banner
不打印橫幅。
所有FFmpeg的工具通常會(huì)顯示一個(gè)版權(quán)聲明,構(gòu)建選項(xiàng)和庫(kù)版本。此選項(xiàng)可以用來(lái)抑制打印此信息。
-cpuflags flags (global)
允許設(shè)置和清除CPU標(biāo)志。此選項(xiàng)用于測(cè)試。不要使用它,除非你知道自己在做什么。
ffmpeg -cpuflags -sse+mmx ...
ffmpeg -cpuflags mmx ...
ffmpeg -cpuflags 0 ...
可能選項(xiàng)有:
`x86`
‘mmx’
‘mmxext’
‘sse’
‘sse2’
‘sse2slow’
‘sse3’
“sse3slow”
‘ssse3’
‘a(chǎn)tom’
‘sse4.1’
‘sse4.2’
‘a(chǎn)vx’
‘xop’
‘fma4’
‘3dnow’
‘3dnowext’
‘cmov’
`ARM`
‘a(chǎn)rmv5te’
‘a(chǎn)rmv6’
‘a(chǎn)rmv6t2’
‘vfp’
‘vfpv3’
‘neon’
‘PowerPC’
‘a(chǎn)ltivec’
`Specific Processors`
‘pentium2’
‘pentium3’
‘pentium4’
‘k6’
‘k62’
‘a(chǎn)thlon’
‘a(chǎn)thlonxp’
‘k8’
-opencl_bench
測(cè)試所有可用的OpenCL設(shè)備并顯示結(jié)果。此選項(xiàng)僅當(dāng)FFmpeg含有–enable-opencl 編譯時(shí)可用。
-opencl_options options (global)
設(shè)置的OpenCL環(huán)境選項(xiàng)。此選項(xiàng)僅當(dāng)FFmpeg的已編譯–enable-opencl 。
options必須是冒號(hào)分隔的key = value選項(xiàng)對(duì)。參見ffmpeg-utils的手冊(cè)中的“OpenCL的選項(xiàng)”部分的內(nèi)容。
5.3 AVOption選項(xiàng)
這些選項(xiàng)直接由libavformat,libavdevice和libavcodec庫(kù)提供。要查看可用AVOption的列表,請(qǐng)使用-help選項(xiàng)。它們被分為兩類:
generic 這些選項(xiàng)可以為任何容器,編解碼器或設(shè)備進(jìn)行設(shè)置。通用的選項(xiàng)都列在AVFormatContext選擇容器/設(shè)備和AVCodecContext選擇編解碼器小節(jié)。
private 這些選項(xiàng)是作用于給定的容器,裝置或編解碼器。私有選項(xiàng)列在其相應(yīng)的容器/設(shè)備/編解碼器。
比如編輯ID3v2.3頭而不是默認(rèn)的ID3v2.4到MP3文件,使用MP3混合器的id3v2_version私有選項(xiàng):
ffmpeg -i input.flac -id3v2_version 3 out.mp3
所有編解碼器AVOption選項(xiàng)是按流指定的,并且因此應(yīng)該指定相應(yīng)的流標(biāo)識(shí)符。
注: -nooption語(yǔ)法不能用于布爾AVOption選項(xiàng),請(qǐng)使用-option 0/-option 1。
注:老的前綴v/a/s的流標(biāo)識(shí)記號(hào)已經(jīng)過(guò)時(shí),將被移除。
5.4 主要選項(xiàng)
-f fmt (input/output)
強(qiáng)制指定輸入或輸出的文件格式。輸入文件的格式通常是自動(dòng)檢測(cè)的,輸出文件的格式由該文件的擴(kuò)展名猜測(cè),所以在大多數(shù)情況下不需要此選項(xiàng)。
-i filename (input)
輸入的文件名
-y (global)
直接覆蓋輸出文件。
-n (global)
如果指定的輸出文件已經(jīng)存在,不要覆蓋輸出文件,并立即退出。
-c[:stream_specifier] codec (input/output,per-stream)
-codec[:stream_specifier] codec (input/output,per-stream)
用于對(duì)一個(gè)或多個(gè)數(shù)據(jù)流指定一個(gè)編碼器(一個(gè)輸出文件之前使用時(shí))或一個(gè)解碼器(一個(gè)輸入文件之前使用時(shí))。 codec是一個(gè)解碼器/編碼器的名稱或特殊值copy (僅輸出),copy表示該流不是被重新編碼。
例如
ffmpeg -i INPUT -map 0 -c:v libx264 -c:a copy OUTPUT
使用libx264編碼所有視頻流并拷貝所有音頻流。
對(duì)于每個(gè)數(shù)據(jù)流,最后匹配的c選項(xiàng)被應(yīng)用,所以
ffmpeg -i INPUT -map 0 -c copy -c:v:1 libx264 -c:a:137 libvorbis OUTPUT
將復(fù)制的所有流除了第二視頻流,并將用libx264進(jìn)行編碼,并且對(duì)于第138個(gè)音頻流用libvorbis進(jìn)行編碼。
-t duration (input/output)
當(dāng)作為輸入選項(xiàng)(在-i之前 ),限制從輸入文件中讀取數(shù)據(jù)的duration。
當(dāng)作為輸出選項(xiàng)(輸出文件名之??前)使用,在達(dá)到duration后停止寫入輸出文件。
duration可能是以秒為單位,或以hh:mm:ss[.xxx]形式出現(xiàn)。
-to和-t是相互排斥的,-t具有優(yōu)先權(quán)。
-to position (output)
在position位置停止輸出。 position可能是一個(gè)表示秒數(shù)的數(shù),或hh:mm:ss[.xxx]形式。
-to和-t是相互排斥的,-t具有優(yōu)先權(quán)。
-fs limit_size (output)
設(shè)置文件大小限制,以字節(jié)表示。
-ss position (input/output)
當(dāng)用作輸入選項(xiàng)一起使用(在-i 以前),跳轉(zhuǎn)到輸入文件中position 位置。請(qǐng)注意,在大多數(shù)的格式是不可能確切定位,這樣ffmpeg將尋求最接近的position位置點(diǎn)。當(dāng)轉(zhuǎn)碼和-accurate_seek啟用(默認(rèn)設(shè)置),尋找點(diǎn)和position位置之間的附加段將被解碼并丟棄。當(dāng)進(jìn)行流復(fù)制或當(dāng)-noaccurate_seek被使用時(shí),它都將被保留。
當(dāng)用作輸出選項(xiàng)(在輸出文件名??前),解碼但丟棄輸入直到時(shí)間戳到達(dá)的位置。
position位置可以是秒數(shù)或hh:mm:ss[.xxx]形式。
-itsoffset offset (input)
設(shè)置輸入時(shí)間偏移。
offset必須是持續(xù)時(shí)間規(guī)范,請(qǐng)參閱(ffmpeg-utils)在FFmpeg-utils(1)手動(dòng)的持續(xù)時(shí)間段的相關(guān)內(nèi)容 。
偏移被添加到輸入文件的時(shí)間戳。指定一個(gè)正偏移意味著相應(yīng)流將延遲offset所指定的時(shí)間。
-timestamp date (output)
設(shè)置在容器內(nèi)記錄的時(shí)間戳。
date必須是一個(gè)規(guī)范的持續(xù)時(shí)間,請(qǐng)參閱(ffmpeg-utils)在FFmpeg-utils的(1)日期部分 。
-metadata[:metadata_specifier] key=value (output,per-metadata)
設(shè)置元數(shù)據(jù)的鍵/值對(duì)。
可選metadata_specifier可以被用于設(shè)置流或章節(jié)的元數(shù)據(jù)。見-map_metadata文檔的詳細(xì)信息。
此選項(xiàng)將覆蓋-map_metadata設(shè)置的元數(shù)據(jù)。另外,也可以通過(guò)使用空值來(lái)刪除元數(shù)據(jù)。
例如,設(shè)置輸出文件的標(biāo)題:
ffmpeg -i in.avi -metadata title="my title" out.flv
設(shè)置第一個(gè)音頻流的語(yǔ)言:
ffmpeg -i INPUT -metadata:s:a:0 language=eng OUTPUT
-target type (output)
指定目標(biāo)文件類型( vcd , svcd , dvd , dv , dv50 )。 類型可能與前綴pal- , ntsc-或film-使用相應(yīng)的標(biāo)準(zhǔn)。所有的格式選項(xiàng)(比特率,編解碼器,緩沖大?。┒紝⒆詣?dòng)設(shè)置。你僅需鍵入:
ffmpeg -i myfile.avi -target vcd /tmp/vcd.mpg
不過(guò),你可以指定其他選項(xiàng),只需你知道他們與標(biāo)準(zhǔn)不沖突,如:
ffmpeg -i myfile.avi -target vcd -bf 2 /tmp/vcd.mpg
-dframes number (output)
設(shè)置輸出數(shù)據(jù)的幀數(shù)。這是-frames:d的別名。
-frames[:stream_specifier] framecount (output,per-stream)
在framecount幀后停止寫入流。
-q[:stream_specifier] q (output,per-stream) -qscale[:stream_specifier] q (output,per-stream)
使用固定編碼率(VBR)。q/qscale的意思與編解碼器定義相關(guān)。如果qscale不與stream_specifier聯(lián)用,那么它僅適用于視頻流,這是為了保持兼容性。另外將相同的編碼器參數(shù)賦給兩個(gè)不同的編解碼器通常并不是用戶想要的,因此若需要這樣的功能,可以使用流標(biāo)識(shí)符(stream_specifier)來(lái)指定。
-filter[:stream_specifier] filtergraph (output,per-stream)
創(chuàng)建由FilterGraph指定的濾鏡組并使用它。
FilterGraph是作用于流的濾鏡組的描述,而且必須有一個(gè)單一的輸入和同一類型的數(shù)據(jù)流輸出。
在濾鏡組里,輸入被關(guān)聯(lián)到in標(biāo)簽 ,輸出到out標(biāo)簽 。關(guān)于ffmpeg濾鏡組的語(yǔ)法可參見ffmpeg-filters的手冊(cè)。
如果你想創(chuàng)建具有多個(gè)輸入或輸出的濾鏡組,參見-filter_complex的相關(guān)選項(xiàng)。
-filter_script[:stream_specifier] filename (output,per-stream)
這個(gè)選項(xiàng)類似于-filter,唯一的區(qū)別是,它的參數(shù)是濾鏡組所在的文件名。
-pre[:stream_specifier] preset_name (output,per-stream)
指定匹配流(S)的預(yù)設(shè)。
-stats (global)
打印編碼進(jìn)度/統(tǒng)計(jì)數(shù)據(jù)。這是默認(rèn)值,你可通過(guò)指定-nostats禁用 。
-progress url (global)
發(fā)送程序友好的進(jìn)展信息到url
進(jìn)度信息大約每秒和編碼過(guò)程結(jié)束后寫入。它是由key = value行組成。 key只能包含字母和數(shù)字字符。最后一個(gè)關(guān)鍵字序列始終是progress。
-stdin
啟用標(biāo)準(zhǔn)輸入交互。這是默認(rèn)設(shè)置,除非標(biāo)準(zhǔn)輸入被作為輸入。要明確禁用互動(dòng),你需要指定-nostdin。
在標(biāo)準(zhǔn)輸入禁用相互作用是很有用的,例如,如果ffmpeg在后臺(tái)進(jìn)程組中。大致相同的結(jié)果可以用ffmpeg ... < /dev/null實(shí)現(xiàn),但它需要一個(gè)終端。
-debug_ts (global)
打印時(shí)間戳信息。它默認(rèn)是關(guān)閉的。此選項(xiàng)主要是用于測(cè)試和調(diào)試目的,輸出格式可從一個(gè)版本切換到另一個(gè),所以它不應(yīng)該在可移植腳本中使用。
參見-fdebug ts選項(xiàng)。
-attach filename (output)
添加一個(gè)附件到輸出文件。這僅由幾個(gè)格式支持。例如Matroska格式,這個(gè)文件可以是用來(lái)渲染字幕使用的字體。附件被實(shí)現(xiàn)為數(shù)據(jù)流的一個(gè)特定類型的,因此該選項(xiàng)將增加一個(gè)新的流的文件。因此,可以以通常的方式在此流使用每個(gè)流的選??項(xiàng)。使用此選項(xiàng)創(chuàng)建的附件流將所有的其他流之后創(chuàng)建(也即那些由-map或自動(dòng)映射創(chuàng)建的流)。
請(qǐng)注意,對(duì)于Matroska,你還必須設(shè)置mimetype元數(shù)據(jù)標(biāo)簽:
ffmpeg -i INPUT -attach DejaVuSans.ttf -metadata:s:2 mimetype=application/x-truetype-font out.mkv
(假設(shè)該附件流將是輸出文件的第三個(gè)流)。
-dump_attachment[:stream_specifier] filename (input,per-stream)
提取匹配的附件流成一個(gè)名??為filename的文件??。如果filename??是空的,那么??元數(shù)據(jù)標(biāo)簽中的filename標(biāo)簽的值將被使用。
例如,提取第一附件到“out.ttf”:
ffmpeg -dump_attachment:t:0 out.ttf -i INPUT
提取所有附件,并按照f(shuō)ilename ?標(biāo)簽命名文件:
ffmpeg -dump_attachment:t "" -i INPUT
技術(shù)說(shuō)明 - 附件是通過(guò)編解碼器額外數(shù)據(jù)實(shí)現(xiàn)的,所以這個(gè)選項(xiàng)實(shí)際上可以用來(lái)提取任意額外數(shù)據(jù),而不僅僅是附件。
5.5 視頻選項(xiàng)
-vframes number (output)
設(shè)置視頻幀的輸出數(shù)量。這是的-frames:v別名 。
-r[:stream_specifier] fps (input/output,per-stream)
設(shè)置幀速率(Hz值,分?jǐn)?shù)或縮寫)。
作為輸入選項(xiàng),忽略存儲(chǔ)在文件中的任何時(shí)間戳,而是產(chǎn)生時(shí)間戳假設(shè)恒定的幀速率fps這與一些輸入格式,諸如image2或者v4l2,中的-framerate選項(xiàng)是不同的(在老版本的ffmpeg中是一樣的)。如有疑問(wèn),使用的輸入選項(xiàng)-framerate代替-r。
作為輸出選項(xiàng),復(fù)制或刪除輸入幀以達(dá)到恒定的輸出幀速率fps。
-s[:stream_specifier] size (input/output,per-stream)
設(shè)置幀尺寸。
作為輸入的選項(xiàng),這是私有選項(xiàng)video_size的快捷方式,部分分流器可以識(shí)別該參數(shù),這時(shí)幀大小或者未存儲(chǔ)在文件中或不可配置,例如原始視頻或視頻采集卡。
作為輸出的選擇,這將插入scale視頻濾鏡到相應(yīng)濾鏡組的末端 。如需改變?yōu)V鏡位置,請(qǐng)將scale濾鏡直接插入到開頭或其他地方。
格式是wxh(默認(rèn)值是使用與源相同的尺寸)。
-aspect[:stream_specifier] aspect (output,per-stream)
設(shè)置指定視頻顯示的寬高比aspect。
aspect可以是一個(gè)浮點(diǎn)數(shù),或使用形如 num: den 的形式,其中num是分子,den是分母。例如,“4:3”,“16:9”,“1.3333”,和“1.7777”都是有效的參數(shù)值。
如果與-vcodec copy一起使用,這會(huì)影響儲(chǔ)存在容器級(jí)別的寬高比,而不是存儲(chǔ)在編碼幀的寬高比,如果有的話。
-vn (output)
禁用視頻錄制。
-vcodec codec (output)
設(shè)置視頻編解碼器。這是-codec:v的別名。
-pass[:stream_specifier] n (output,per-stream)
選擇通過(guò)次數(shù)(1或2)。它是用來(lái)做兩遍視頻編碼。視頻的統(tǒng)計(jì)信息記錄在第一次編碼時(shí)寫入到日志文件中(也參見選項(xiàng)-passlogfile),在第二次編碼時(shí),該日志文件被用于按要求生成準(zhǔn)確比特率的視頻。在第一次編碼中,你可以通過(guò)禁用音頻并將輸出設(shè)置為null,下面為Windows和Unix的例子:
ffmpeg -i foo.mov -c:v libxvid -pass 1 -an -f rawvideo -y NUL
ffmpeg -i foo.mov -c:v libxvid -pass 1 -an -f rawvideo -y /dev/null
-passlogfile[:stream_specifier] prefix (output,per-stream)
設(shè)置二次編碼的日志文件名 ??前綴為prefix ,默認(rèn)的文件名 ??前綴是ffmpeg2pass。完整的文件名 ??將是PREFIX-N.log,其中N是一個(gè)輸出流的特定數(shù)字
-vf filtergraph (output)
創(chuàng)建由filtergraph指定的濾鏡組,并使用它。
這是-filter:v的別名 ,參見-filter選項(xiàng)。
5.6 高級(jí)視頻選項(xiàng)
-pix_fmt[:stream_specifier] format (input/output,per-stream)
設(shè)置的像素格式。使用-pix_fmts顯示所有支持的像素格式。如果所選擇的像素格式不能被選擇,ffmpeg將打印警告,并選擇由編碼器所支持的最好的像素格式。如果pix_fmt前綴+ ,如果請(qǐng)求的像素格式不能被選中,ffmpeg會(huì)出現(xiàn)錯(cuò)誤退出,同時(shí)濾鏡組中的自動(dòng)轉(zhuǎn)換將被禁用。如果pix_fmt是一個(gè)單一的+ ,ffmpeg的選擇與輸入或者濾鏡輸出相同的像素格式,并將禁用自動(dòng)轉(zhuǎn)換。
-sws_flags flags (input/output)
設(shè)置軟件縮放的標(biāo)志。
-vdt n
丟棄的閾值。
-rc_override[:stream_specifier] override (output,per-stream)
覆蓋特定的時(shí)間間隔內(nèi)的幀率控制,格式為用斜杠分隔的“整型,整型,整型”列表。前兩個(gè)值是在開始和結(jié)束幀編號(hào),最后一個(gè)如果是正數(shù),則為量化器;負(fù)數(shù)則為品質(zhì)因數(shù)。
-ilme
支持編碼器force interlacing(僅對(duì)MPEG-2和MPEG-4有效)。如果你的輸入文件是隔行并要保持隔行格式最小損失,請(qǐng)使用此選項(xiàng)。另一種方法是使用-deinterlace反交錯(cuò)輸入流,但這會(huì)引入損失。
-psnr
計(jì)算壓縮幀的PSNR(偽信噪比)。
-vstats
輸出視頻編碼統(tǒng)計(jì)到vstats_HHMMSS.log。
-vstats_file file
輸出頻編碼統(tǒng)計(jì)到file。
-top[:stream_specifier] n (output,per-stream)
top=1/bottom=0/auto=-1 field first
-dc precision
Intra_dc_precision.
vtag fourcc/tag (output)
強(qiáng)制視頻 tag/ fourcc。這是-tag:v的別名。
-qphist (global)
顯示QP直方圖
-vbsf bitstream_filter
已拋棄,見-bsf
-force_key_frames[:stream_specifier] time[,time...] (output,per-stream)
-force_key_frames[:stream_specifier] expr:expr (output,per-stream)
強(qiáng)制關(guān)鍵幀在指定的時(shí)間戳,更精確地在每個(gè)指定的時(shí)間之后的第一幀。
如果參數(shù)的前綴expr:,expr將解釋為一個(gè)表達(dá)式,并在每一幀執(zhí)行。如果運(yùn)行結(jié)果非零,一個(gè)關(guān)鍵幀被強(qiáng)制加入。
如果時(shí)間之一是chapters [ delta ],它被擴(kuò)展成的文件中的所有章節(jié)開始通過(guò)delta偏移的時(shí)間(時(shí)間以秒為單位)。這個(gè)選項(xiàng)可能是有用的,以確保存在一個(gè)搜索點(diǎn)位于章節(jié)標(biāo)記或者在輸出文件中的任何其它指定的地方。
例如,在5分鐘插入一個(gè)關(guān)鍵幀,同時(shí)在每章開始前0.1秒插入一個(gè)關(guān)鍵幀:
-force_key_frames 0:05:00,chapters-0.1
expr中可以包含以下常量:
n
當(dāng)前處理的幀的數(shù)量,從0開始
n_forced
強(qiáng)制幀的數(shù)量
prev_forced_n
先前強(qiáng)制幀的數(shù)目,當(dāng)沒有強(qiáng)制的關(guān)鍵幀時(shí),它是NAN
prev_forced_t
先前強(qiáng)制幀的時(shí)間,當(dāng)沒有強(qiáng)制關(guān)鍵幀時(shí),它是NAN
t
當(dāng)前處理的幀的時(shí)間
例如每5秒強(qiáng)制插入一個(gè)關(guān)鍵幀,你可以使用:
-force_key_frames expr:gte(t,n_forced*5)
自13秒開始,強(qiáng)制插入一個(gè)關(guān)鍵幀在上一強(qiáng)制關(guān)鍵幀后5秒:
-1-force_key_frames expr:if(isnan(prev_forced_t),gte(t,13),gte(t,prev_forced_t+5))
需要注意的是太多強(qiáng)制的關(guān)鍵幀對(duì)某些編碼器的超前算法是非常有害的:使用固定的GOP選項(xiàng)或類似選項(xiàng)會(huì)更有效。
-copyinkf[:stream_specifier] (output,per-stream)
當(dāng)復(fù)制流時(shí),也復(fù)制起始處的非關(guān)鍵幀。
-hwaccel[:stream_specifier] hwaccel (input,per-stream)
使用硬件加速解碼匹配流。hwaccel的允許值包括:
none
不要使用任何硬件加速(默認(rèn))。
auto
自動(dòng)選擇硬件加速的方法。
vda
使用蘋果VDA硬件加速。
vdpau
使用VDPAU(視頻解碼和演示API對(duì)于Unix)硬件加速。
dxva2
使用DXVA2(DirectX視頻加速)硬件加速。
如果選擇的hwaccel不可用或不支持選擇的解碼器,此選項(xiàng)沒有效果。
注意,大多數(shù)加速方法適用于播放,但并不會(huì)比現(xiàn)代CPU軟件解碼更快。此外, ffmpeg通常需要解碼幀從GPU存儲(chǔ)器復(fù)制到系統(tǒng)存儲(chǔ)器,從而導(dǎo)致進(jìn)一步的性能損失。因此此選項(xiàng)主要用于測(cè)試。
-hwaccel_device[:stream_specifier] hwaccel_device (input,per-stream)
選擇一個(gè)設(shè)備使用硬件加速。
此選項(xiàng)僅使得同時(shí)與-hwaccel選項(xiàng)使用。它的確切含義取決于所選擇的具體硬件加速方法。
vdpau
對(duì)于VDPAU,此選項(xiàng)在X11中使用。如果沒有指定這個(gè)選項(xiàng), DISPLAY環(huán)境變量的值被使用
dxva2
對(duì)于DXVA2,這個(gè)選項(xiàng)應(yīng)包含在顯示適配器使用的數(shù)量。如果未指定此選項(xiàng),默認(rèn)的適配器將被使用。
5.7 音頻選項(xiàng)
-aframes number (output)
設(shè)定的音頻幀輸出的數(shù)目。這是-frames:a 的別名。
-ar[:stream_specifier] freq (input/output,per-stream)
設(shè)置音頻采樣頻率。對(duì)于輸出流,將默認(rèn)設(shè)置為相應(yīng)的輸入流的采樣頻率。對(duì)于輸入流該選項(xiàng)僅對(duì)音頻抓取設(shè)備和raw格式分流器和映射到相應(yīng)分流器上的選項(xiàng)有效。
-aq q (output)
設(shè)置音頻質(zhì)量(與編解碼器有關(guān),VBR)。這是-q:a的別名。
-ac[:stream_specifier] channels (input/output,per-stream)
設(shè)置音頻通道的數(shù)目。輸出流默認(rèn)將設(shè)置為輸入音頻信道的數(shù)目。對(duì)于輸入流該選項(xiàng)僅對(duì)音頻抓取設(shè)備和raw格式分流器和映射到相應(yīng)分流器上的選項(xiàng)有效。
-an (output)
禁用錄音。
-acodec codec (input/output)
設(shè)置音頻解碼器。這是-codec:a的別名。
-sample_fmt[:stream_specifier] sample_fmt (output,per-stream)
設(shè)置音頻樣本格式。使用-sample_fmts得到支持的采樣格式的列表。
-af filtergraph (output)
創(chuàng)建由FilterGraph指定的濾鏡組并使用它。
這是-filter:a的別名 ,參見-filter選項(xiàng)。
5.8 高級(jí)音頻選項(xiàng)
-atag fourcc/tag (output)
強(qiáng)制音頻tag/fourcc值。這是-tag:a的別名。
-absf bitstream_filter
已過(guò)時(shí),參見-bsf
-guess_layout_max channels (input,per-stream)
如果一些輸入通道布局是未知的,試圖猜測(cè)它最多的聲道數(shù)量。例如,2要求ffmpeg識(shí)別1個(gè)通道為單聲道和2聲道立體聲,6聲道作為5.1。默認(rèn)是總是試圖去猜測(cè)。用0來(lái)禁用所有的猜測(cè)。
5.9 字幕選項(xiàng)
-scodec codec (input/output)
設(shè)置字幕的編解碼器。這是-codec:s的別名。
-sn (output)
關(guān)閉字幕記錄。
-sbsf bitstream_filter
已過(guò)時(shí),參見-bsf
5.10 高級(jí)字幕選項(xiàng)
-fix_sub_duration
調(diào)整字幕的持續(xù)時(shí)間。對(duì)于每個(gè)字幕,等待在相同的流中的下一個(gè)分組,并調(diào)節(jié)第一持續(xù)時(shí)間,以避免重疊。這對(duì)某些字幕編解碼器是必要的,特別是數(shù)字電視廣播字幕(DVB),因?yàn)樵谠瓉?lái)的分組的持續(xù)時(shí)間僅僅是一個(gè)粗略的估計(jì),結(jié)束標(biāo)記是通過(guò)一個(gè)空的字幕幀完成的。沒有使用這個(gè)選項(xiàng)在必要時(shí)可導(dǎo)致夸張的持續(xù)時(shí)間,或由于非單調(diào)時(shí)間戳混流故障。
注意,此選項(xiàng)將延遲所有數(shù)據(jù)的輸出直到下一個(gè)字幕分組被解碼:它可能會(huì)增加內(nèi)存消耗和延遲。
-canvas_size size
設(shè)置用于呈現(xiàn)字幕的畫布的大小。
5.11 高級(jí)選項(xiàng)
-map [-]input_file_id[:stream_specifier][,sync_file_id[:stream_specifier]] | [linklabel] (output)
指定一個(gè)或多個(gè)輸入流作為用于輸出文件的來(lái)源。每個(gè)輸入流由輸入文件索引input_file_id和輸入流索引input_stream_id標(biāo)識(shí)。這兩個(gè)指標(biāo)都是從0開始。sync_file_id:stream_specifier可用于指定輸入流作為同步參考。
在命令行上第一個(gè)-map選項(xiàng)指定的輸出流0,第二-map選項(xiàng)指定的源輸出流1等
一個(gè)連字符-創(chuàng)建一個(gè)“否定的”的映射。它禁用從已經(jīng)建立映射中匹配流。
另一種LinkLabel的形式將映射從復(fù)雜濾波器組輸出到輸出文件(見-filter_complex選項(xiàng))。 LinkLabel必須對(duì)應(yīng)于一個(gè)鏈路中已定義的輸出標(biāo)簽。
例如,映射第一輸入文件的所有流到輸出
ffmpeg -i INPUT -map 0 output
例如,如果在第一輸入文件中的兩個(gè)音頻流,這些流記為“0:0”,“0:1”。您可以使用-map選擇哪個(gè)流輸出到輸出文件。例如:
ffmpeg -i INPUT -map 0:1 out.wav
將映射INPUT的輸入數(shù)據(jù)流“0:1”到在(單)輸出流out.wav。
例如,從輸入文件a.mov選擇索引2流(由識(shí)別符“0:2”指定的)與從輸入b.mov索引6(由識(shí)別符“1:6”指定)流,復(fù)制到輸出文件out.mov:
ffmpeg -i a.mov -i b.mov -c copy -map 0:2 -map 1:6 out.mov
選擇所有的視頻??和輸入文件中的第三音頻流:
ffmpeg -i INPUT -map 0:v -map 0:a:2 OUTPUT
映射所有的數(shù)據(jù)流,除了第二音頻,使用否定的映射
ffmpeg -i INPUT -map 0 -map -0:a:1 OUTPUT
選擇英語(yǔ)音頻流:
ffmpeg -i INPUT -map 0:m:language:eng OUTPUT
請(qǐng)注意,使用此選項(xiàng)將禁用此輸出文件的默認(rèn)映射。
-map_channel [input_file_id.stream_specifier.channel_id|-1][:output_file_id.stream_specifier]
映射從一個(gè)給定的輸入音頻聲道到輸出。如果output_file_id.stream_specifier未設(shè)置時(shí),聲道將被映射的所有音頻流。
使用-1替代input_file_id.stream_specifier.channel_id將映射一個(gè)靜音聲道。
例如,假設(shè)INPUT是一個(gè)立體聲音頻文件,你可以切換兩個(gè)音頻通道與下面的命令:
ffmpeg -i INPUT -map_channel 0.0.1 -map_channel 0.0.0 OUTPUT
如果您想要靜音的第一聲道,并保留第二個(gè):
ffmpeg -i INPUT -map_channel -1 -map_channel 0.0.1 OUTPUT
-map_channel選項(xiàng)的順序指定在輸出流中的聲道的順序。所述輸出信道的布局是從映射信道數(shù)猜測(cè)的(如果只有一個(gè)-map_channel,則使用單聲道,如果是2,則使用立體聲,如此等等)。如果輸入和輸出信道的布局不匹配(例如2個(gè)-map_channel和-ac 6),聯(lián)合使用-map_channel和-ac將更新聲道的增益水平。
您也可以提取各個(gè)輸入通道到特定的輸出;以下命令中提取的兩個(gè)通道的INPUT音頻流(文件0,流0)到相應(yīng)的OUTPUT_CH0和OUTPUT_CH1輸出:
ffmpeg -i INPUT -map_channel 0.0.0 OUTPUT_CH0 -map_channel 0.0.1 OUTPUT_CH1
以下示例拆分立體聲輸入的通道成兩個(gè)獨(dú)立的數(shù)據(jù)流,其被放入同一個(gè)輸出文件:
ffmpeg -i stereo.wav -map 0:0 -map 0:1 -map_channel 0.0.0:0.0 -map_channel 0.0.1:0.1 -y out.ogg
注意,目前每個(gè)輸出流只能包含來(lái)自單個(gè)輸入流的聲道;不能使用-map_channel從不同的數(shù)據(jù)流提取的多個(gè)輸入音頻聲道(來(lái)自相同的或不同的文件),并將它們合并成一個(gè)單一的輸出流。因此,目前不可能完成例如把兩個(gè)單獨(dú)的單聲道流成一個(gè)單一的立體聲流的任務(wù)。然而,拆分立體聲流分成兩個(gè)單信道單聲道流則是可能的。
如果你需要這個(gè)功能,一個(gè)可能的解決方法是使用amerge濾鏡。例如,如果你需要用2個(gè)單聲道音頻融合媒體中的(在這里是input.mkv)流成一個(gè)單一的立體聲聲道音頻流(并保持視頻流),可以使用下面的命令:
ffmpeg -i input.mkv -filter_complex "[0:1] [0:2] amerge" -c:a pcm_s16le -c:v copy output.mkv
-map_metadata[:metadata_spec_out] infile[:metadata_spec_in] (output,per-metadata)
根據(jù)infile設(shè)置下一個(gè)輸出文件的元數(shù)據(jù)信息。請(qǐng)注意,這些都是文件索引(從零開始),而不是文件名??蛇x參數(shù)metadata_spec_in/out可用于指定哪些元數(shù)據(jù)進(jìn)行復(fù)制。元數(shù)據(jù)說(shuō)明可以有以下幾種形式:
`g`
全局元數(shù)據(jù),即元數(shù)據(jù)應(yīng)用于整個(gè)文件
`s[:stream_spec]`
每個(gè)流的元數(shù)據(jù)`stream_spec`是一個(gè)流標(biāo)識(shí)符,參見流標(biāo)識(shí)符一章。在輸入的元數(shù)據(jù)時(shí),將從第一個(gè)匹配的流復(fù)制。在輸出元數(shù)據(jù)時(shí),將復(fù)制到所有匹配流。
`c:chapter_index`
每章的元數(shù)據(jù)`chapter_index`是從零開始的章節(jié)索引。
`p:program_index`
每個(gè)項(xiàng)目的元數(shù)據(jù)`program_index`是從零開始的的項(xiàng)目索引。
如果元數(shù)據(jù)說(shuō)明被省略,則默認(rèn)為全球性的。
缺省情況下,全局元數(shù)據(jù)是從第一輸入文件復(fù)制的,每個(gè)流和每個(gè)章節(jié)的元數(shù)據(jù)與數(shù)據(jù)流/章節(jié)將被依次復(fù)制。創(chuàng)建相關(guān)類型的任何映射將禁用這些默認(rèn)映射。否定的文件索引可以用來(lái)創(chuàng)建只禁用自動(dòng)復(fù)制的虛擬映射。
例如,從輸入文件的第一數(shù)據(jù)流復(fù)制元數(shù)據(jù)到輸出文件的全局元數(shù)據(jù):
ffmpeg -i in.ogg -map_metadata 0:s:0 out.mp3
反過(guò)來(lái),即全局的元數(shù)據(jù)復(fù)制到所有音頻流:
ffmpeg -i in.mkv -map_metadata:s:a 0:g out.mkv
需要注意的是0在本實(shí)例中能起到相同的效果,由于全局元數(shù)據(jù)被假定默認(rèn)。
-map_chapters input_file_index (output)
從輸入文件復(fù)制章節(jié)與索引input_file_index到下一個(gè)輸出文件中。如果不指定章節(jié)映射,則章節(jié)從第一輸入文件復(fù)制并至少有一個(gè)章節(jié)。使用負(fù)的文件索引來(lái)排除任何章節(jié)的復(fù)制。
-benchmark (global)
在編碼結(jié)束顯示基準(zhǔn)信息。顯示使用的CPU時(shí)間和最大內(nèi)存消耗。不是所有系統(tǒng)都支持最大內(nèi)存消耗,如果不支持,它通常會(huì)顯示為0。
-benchmark_all (global)
顯示編碼過(guò)程中基準(zhǔn)信息。顯示各個(gè)步驟(音頻/視頻編碼/解碼)所使用的CPU時(shí)間。
-timelimit duration (global)
在已經(jīng)運(yùn)行duration秒后退出ffmpeg
-dump (global)
轉(zhuǎn)儲(chǔ)每個(gè)輸入包到標(biāo)準(zhǔn)錯(cuò)誤流。
-hex (global)
當(dāng)dump包時(shí),也dump有效載荷。
-re (input)
讀取輸入的原始幀速率。主要用于模擬抓取設(shè)備?;?qū)崟r(shí)輸入流(例如從文件讀取時(shí))。不應(yīng)該在實(shí)際的抓取設(shè)備或?qū)崟r(shí)輸入流中使用(它可能會(huì)導(dǎo)致數(shù)據(jù)包丟失)。默認(rèn)ffmpeg嘗試盡可能快地讀出輸入端。此選項(xiàng)會(huì)減慢輸入的本地幀速率的讀取。它是用于實(shí)時(shí)輸出(如直播)是有用的。
-loop_input
循環(huán)輸入流。目前,它僅適用于圖像流。此選項(xiàng)用于自動(dòng)測(cè)試ffserver。此選項(xiàng)已被棄用,使用-loop 1。
-loop_output number_of_times
反復(fù)循環(huán)輸出支持循環(huán)的格式如動(dòng)畫GIF(0意味著無(wú)限循環(huán)輸出)。此選項(xiàng)已被棄用,使用-loop。
-vsync parameter
視頻同步方法。出于兼容性考慮舊值可以被指定為數(shù)字。新添加的值將必須總是指定為字符串。
0, passthrough
每一幀傳遞從分流器到復(fù)用器的時(shí)間戳。
1, cfr
幀將被復(fù)制并下降至達(dá)到完全所需的恒定幀速率。
2, vfr
幀通過(guò)與其時(shí)間戳或下降,從而防止兩幀具有相同的時(shí)間戳。
drop
與passthrough相同,但破壞所有時(shí)間戳,使得復(fù)用器生成基于幀速率新的時(shí)間戳。
-1, auto
根據(jù)復(fù)用器的功能選擇1或者2。這是默認(rèn)的方法。
注意,該時(shí)間戳在此之后可以進(jìn)一步由復(fù)用器修改。例如,在格式選項(xiàng)avoid_negative_ts被啟用時(shí)。
與-map聯(lián)用,您可以選擇從哪個(gè)流提取時(shí)間戳。您可以留下視頻或音頻不變,同步剩余流不變的。
-async samples_per_second
音頻同步的方法。“伸展/擠壓”音頻流相匹配的時(shí)間戳,所述參數(shù)是音頻發(fā)生改變所容許的每秒最大點(diǎn)數(shù)。-async 1是一種特殊情況,音頻數(shù)據(jù)流僅在開始校正,而其后將不再校正。
注意,該時(shí)間戳在此之后可以進(jìn)一步由復(fù)用器修改。例如,在格式選項(xiàng)avoid_negative_ts被啟用時(shí)。
此選項(xiàng)已被棄用。使用aresample音頻過(guò)濾器代替。
-copyts
不要處理輸入時(shí)間戳,但保持它們的值,不嘗試對(duì)它們進(jìn)行sanitize。尤其是,不要?jiǎng)h除初始啟動(dòng)時(shí)間偏移值。
需要注意的是,即使使用了該選項(xiàng),根據(jù)不同的vsync選項(xiàng)或?qū)μ囟◤?fù)用器處理(例如格式選項(xiàng)avoid_negative_ts被啟用)輸出時(shí)間戳與輸入可能不匹配時(shí)間戳。
-start_at_zero
當(dāng)與copyts使用,調(diào)整輸入時(shí)間戳,使他們從零開始。
這意味著使用例如-ss 50將使輸出時(shí)間戳開始50秒時(shí),不管輸入文件開始處的時(shí)間戳是多少。
-copytb mode
指定在拷貝流時(shí)如何設(shè)置編碼器的時(shí)間基準(zhǔn),mode是一個(gè)整型,可以假定為下列值之一:
1
使用分流器的時(shí)間基準(zhǔn)。
時(shí)間基準(zhǔn)從相應(yīng)的輸入分流器復(fù)制到輸出編碼器。該情況下,對(duì)可變幀速率的視頻流的復(fù)制,有時(shí)需要避免非單調(diào)的時(shí)間戳。
0
使用解碼器時(shí)間基準(zhǔn)。
時(shí)間基準(zhǔn)從相應(yīng)的輸入解碼器復(fù)制到輸出編碼器。
-1
嘗試自動(dòng)做出選擇,以便產(chǎn)生一個(gè)合理的輸出。
默認(rèn)值為-1。
-shortest (output)
最短的輸入流結(jié)束時(shí)完成編碼。
-dts_delta_threshold
時(shí)間戳間斷門檻。
-muxdelay seconds (input)
設(shè)置最大分流解碼延時(shí)。
-muxpreload seconds (input)
設(shè)定初始解碼分流延遲。
-streamid output-stream-index:new-value (output)
分配一個(gè)新流id值到輸出流。該選項(xiàng)?需指定到輸出文件名之前。對(duì)于在多個(gè)輸出文件存在的情況下,一個(gè)流id將被重新分配到不同的值。
例如,要設(shè)置流0 到流33,同時(shí)流1至流36,到MPEGTS格式的輸出文件:
ffmpeg -i infile -streamid 0:33 -streamid 1:36 out.ts
-bsf[:stream_specifier] bitstream_filters (output,per-stream)
指定匹配流的bitstream_filters。它是一個(gè)逗號(hào)分隔的濾鏡列表。使用-bsfs選項(xiàng)得到的濾鏡列表。
ffmpeg -i h264.mp4 -c:v copy -bsf:v h264_mp4toannexb -an out.h264
ffmpeg -i file.mov -an -vn -bsf:s mov2textsub -c:s copy -f rawvideo sub.txt
-tag[:stream_specifier] codec_tag (input/output,per-stream)
指定匹配流的tag/fourcc。
-timecode hh:mm:ssSEPff
指定寫入的時(shí)間碼。對(duì)于non drop 時(shí)間碼,分隔符SEP是: 對(duì)于drop時(shí)間碼是; (或.)。
ffmpeg -i input.mpg -timecode 01:02:03.04 -r 30000/1001 -s ntsc output.mpg
-filter_complex filtergraph (global)
定義復(fù)雜FilterGraph,即具有輸入和/或輸出任意個(gè)數(shù)的濾鏡組。對(duì)于簡(jiǎn)單濾鏡——那些具有一個(gè)輸入和相同類型的一個(gè)輸出的濾鏡——參見-filter選項(xiàng)。FilterGraph是FilterGraph的描述,參見FFMPEG濾鏡手冊(cè)的“FilterGraph語(yǔ)法”部分中的描述。
輸入鏈路標(biāo)簽必須關(guān)聯(lián)到使用[file_index:stream_specifier]語(yǔ)法標(biāo)記的輸入流(即-map選項(xiàng)中使用的格式)。如果stream_specifier匹配多個(gè)流,第一個(gè)將被使用。未標(biāo)記的輸入將被連接到匹配類型的第一未使用的輸入流。
輸出鏈接標(biāo)簽由-map指定。未標(biāo)記的輸出被加到第一輸出文件。
注意,使用該選項(xiàng),可以只有l(wèi)avfi源而沒有正常的輸入文件。
例如,疊加圖像到視頻
ffmpeg -i video.mkv -i image.png -filter_complex '[0:v][1:v]overlay[out]' -map '[out]' out.mkv
這里[0:v]指的是在第一輸入文件中的第一視頻流,這是與覆蓋濾波器的第一(主)輸入。同樣,在第二輸入的第一視頻流鏈接到覆蓋層的第二(覆蓋)輸入。
假定在每個(gè)輸入文件中只有一個(gè)視頻流,就可以省略輸入標(biāo)簽,因此上述命令相當(dāng)于
ffmpeg -i video.mkv -i image.png -filter_complex 'overlay[out]' -map'[out]' out.mkv
此外,我們可以省略輸出標(biāo)簽和單輸出的濾鏡,它將被自動(dòng)添加到輸出文件,所以我們可以簡(jiǎn)單地寫
ffmpeg -i video.mkv -i image.png -filter_complex 'overlay' out.mkv
要使用lavfi產(chǎn)生5秒鐘的純紅色視頻color來(lái)源:
ffmpeg -filter_complex 'color=c=red' -t 5 out.mkv
-lavfi filtergraph (global)
定義復(fù)雜FilterGraph,即具有輸入和/或輸出任意個(gè)數(shù)的濾鏡組。相當(dāng)于-filter_complex。
-filter_complex_script filename (global)
這個(gè)選項(xiàng)類似于-filter_complex,唯一的區(qū)別是,它的參數(shù)是包含被讀取FilterGraph的文件的名稱。
-accurate_seek (input)
此選項(xiàng)啟用或禁用準(zhǔn)確尋求輸入文件,配合-ss選項(xiàng)使用。它默認(rèn)是啟用的,所以當(dāng)轉(zhuǎn)碼時(shí)是準(zhǔn)確的。使用-noaccurate_seek禁用它,在拷貝一些數(shù)據(jù)流和轉(zhuǎn)碼時(shí),這可能是有用的。
-override_ffserver (global)
從ffserver 覆蓋輸入規(guī)格。使用這個(gè)選項(xiàng),你可以映射任何輸入流到ffserver,并從ffmpeg 控制編碼的許多方面。如果沒有這個(gè)選項(xiàng)ffmpeg將發(fā)送ffserver要求的內(nèi)容。
該選項(xiàng)用于那些不能被指定到ffserver的功能 ,即便他們可以用于ffmpeg 。
-discard (input)
允許在分路器丟棄特定流或流幀。不是所有的分路器都支持。
none
禁止丟棄幀。
default
默認(rèn)情況下,不丟棄幀。
noref
丟棄所有非參考幀。
bidir
放棄所有雙向幀。
nokey
丟棄所有幀除了關(guān)鍵幀。
all
丟棄所有幀。
作為一個(gè)特例,可以使用一個(gè)位圖字幕流作為輸入:它將被轉(zhuǎn)換到文件中最大的視頻相同尺寸,或720×576,如果沒有視頻。需要注意的是,這是一個(gè)實(shí)驗(yàn)性和臨時(shí)解決方案。它會(huì)在libavfilter有適當(dāng)字幕支持后刪除。
例如,硬編碼存儲(chǔ)在MPEG-TS格式的DVB-T的記錄的頂部字幕,1秒延遲字幕:
ffmpeg -i input.ts -filter_complex '[#0x2ef] setpts=PTS+1/TB [sub] ; [#0x2d0] [sub] overlay' -sn -map '#0x2dc' output.mkv
(0x2d0,0x2dc和0x2ef分別是MPEG-TS的PID的視頻,音頻和字幕流; 0:0,0:3和0:7可起到同樣作用)
5.12 預(yù)置文件
預(yù)置文件是包含option = value的文件 ,每行一個(gè),指定的選項(xiàng)需按照命令行中的順序。’?!_頭的字符行被忽略,并用來(lái)提供注釋。參見FFmpeg的源代碼樹中的preset目錄中的例子。
Preset files are specified with the vpre, apre, spre, and fpre options. The fpre option takes the filename of the preset instead of a preset name as input and can be used for any kind of codec. For the vpre, apre, and spre options, the options specified in a preset file are applied to the currently selected codec of the same type as the preset option.
The argument passed to the vpre, apre, and spre preset options identifies the preset file to use according to the following rules:
First ffmpeg searches for a file named arg.ffpreset in the directories FFMPEGDATADIR(ifset),andHOME/.ffmpeg, and in the datadir defined at configuration time (usually PREFIX/share/ffmpeg) or in a ffpresets folder along the executable on win32, in that order. For example, if the argument is libvpx-1080p, it will search for the file libvpx-1080p.ffpreset.
If no such file is found, then ffmpeg will search for a file named codec_name-arg.ffpreset in the above-mentioned directories, where codec_name is the name of the codec to which the preset file options will be applied.
6 提示
為在非常低的比特率流,使用低幀速率和小的GOP大小。這對(duì)于那些配置較低的Linux用戶上播放RealVideo尤是如此,它可能會(huì)丟幀。例如:ffmpeg -g 3 -r 3 -t 10 -b:v 50k -s qcif -f rv10 /tmp/b.rm
編碼中顯示的參數(shù)“q”是當(dāng)前量化器。值1表示非常良好的質(zhì)量。值31表示最差的質(zhì)量。如果Q = 31出現(xiàn)過(guò)于頻繁,這意味著該編碼器無(wú)法壓縮到滿足您的比特率要求的碼率。您必須增加比特率,降低幀率或減少幀的大小。
如果你的電腦不夠快,可以犧牲壓縮比換取速度。你可以用-me 0加快運(yùn)動(dòng)估計(jì)和-g 0完全禁用運(yùn)動(dòng)估計(jì)(你僅有I-frames,這意味著它幾乎和JPEG壓縮一樣好)。
可通過(guò)降低采樣頻率獲得非常低的音頻比特率(對(duì)于MPEG音頻,下降到22050Hz,對(duì)于AC-3, 使用22050或11025Hz)。
有一個(gè)恒定的質(zhì)量(但可變比特率),使用選項(xiàng)-qscale N時(shí),N是1(優(yōu)秀品質(zhì))和31(質(zhì)量最差)之間。
7 范例
7.1 預(yù)置文件
預(yù)置文件包含option=value,一個(gè)用于每行,指定其也可以指定的命令行上的選項(xiàng)的序列的序列?!!_頭的字符行被忽略,并用來(lái)提供注釋??招袑⒁脖缓雎浴z查的例子FFmpeg的源代碼樹中的preset目錄。
預(yù)置文件中指定的pre選項(xiàng),這個(gè)選項(xiàng)需要一個(gè)預(yù)設(shè)名稱作為輸入。FFmpeg在$AVCONV_DATADIR和$HOME/.ffmpeg以及編譯時(shí)指定的目錄(通常是$PREFIX/share/ffmpeg)的目錄中搜索文件名??為preset_name.avpreset的文件。例如,如果該參數(shù)是libx264-max,它會(huì)搜索文件libx264-max.avpreset。
7.2 視頻和音頻抓取
如果指定了輸入格式和設(shè)備,ffmpeg將可以直接抓取視頻和音頻。 ffmpeg -f oss -i /dev/dsp -f video4linux2 -i /dev/video0 /tmp/out.mpg
或從ALSA音源(單聲道輸入,卡ID 1),而不是OSS: ffmpeg -f alsa -ac 1 -i hw:1 -f video4linux2 -i /dev/video0 /tmp/out.mpg
請(qǐng)注意,您必須在啟動(dòng)ffmpeg前激活正確的視頻源和信道,比如的xawtv。你也必須正確設(shè)置混音器中的音頻記錄電平。
7.3 X11抓取
使用ffmpeg抓取X11顯示器 ffmpeg -f x11grab -video_size cif -framerate 25 -i :0.0 /tmp/out.mpg 0.0是display.screen數(shù)量的X11服務(wù)器,與DISPLAY環(huán)境變量一致。
ffmpeg -f x11grab -video_size cif -framerate 25 -i :0.0+10,20 /tmp/out.mpg
0.0是display.screen數(shù)量的X11服務(wù)器,與DISPLAY環(huán)境變量一致。10是在x偏移和20的y偏移。
7.4 視頻和音頻文件格式轉(zhuǎn)換
任何支持的文件格式和協(xié)議可以作為ffmpeg的輸入:
范例:
您可以使用YUV文件作為輸入:ffmpeg -i /tmp/test%d.Y /tmp/out.mpg
它將使用文件:
/tmp/test0.Y, /tmp/test0.U, /tmp/test0.V,/tmp/test1.Y, /tmp/test1.U, /tmp/test1.V, etc...Y,/ tmp目錄/ TEST0。U, /tmp/test0.V,
/tmp/test1.Y, /tmp/test1.U, /tmp/test1.V, etc...
Y文件使用的U和V文件的分辨率的兩倍。他們是原始文件,沒有頭信息。他們可以通過(guò)所有視頻解碼器產(chǎn)生。您必須指定圖像的大小與-s選項(xiàng),如果ffmpeg的不能猜測(cè)它。
您可以從原始YUV420P文件輸入: ffmpeg -i /tmp/test.yuv /tmp/out.avi
test.yuv是含有生YUV平面數(shù)據(jù)的文件。每個(gè)幀是由Y平面后跟U和V平面的一半的垂直和水平分辨率。
可以輸出到原始文件YUV420P: ffmpeg -i mydivx.avi hugefile.yuv
您可以設(shè)置多個(gè)輸入文件和輸出文件: ffmpeg -i /tmp/a.wav -s 640x480 -i /tmp/a.yuv /tmp/a.mpg
轉(zhuǎn)換音頻文件a.wav和原始YUV視頻文件a.yuv到MPEG文件a.mpg。
你也可以同時(shí)做音頻和視頻轉(zhuǎn)換:ffmpeg -i /tmp/a.wav -ar 22050 /tmp/a.mp2
使用22050赫茲的采樣率轉(zhuǎn)換a.wav到MPEG音頻。
可以同時(shí)進(jìn)行多種格式的編碼,并定義從輸入流到輸出數(shù)據(jù)流的映射:ffmpeg -i /tmp/a.wav -map 0:a -b:a 64k /tmp/a.mp2 -map 0:a -b:a 128k /tmp/b.mp2
轉(zhuǎn)換a.wav到64千比特的a.mp2和128千比特的b.mp2。-map file:index輸出數(shù)據(jù)流的定義的順序指定了用于每一個(gè)輸出流的輸入流。
您可以轉(zhuǎn)碼解密的VOB:ffmpeg -i snatch_1.vob -f avi -c:v mpeg4 -b:v 800k -g 300 -bf 2 -c:a libmp3lame -b:a 128k snatch.avi
這是一個(gè)典型的DVD翻錄的例子;輸入是VOB文件,輸出與MPEG-4視頻和MP3音頻的AVI文件。注意,在這個(gè)命令,我們使用B幀,以便對(duì)MPEG-4流與DivX5兼容,并且GOP大小為300,這意味著每10秒插入一幀到29.97fps的輸入視頻。此外,音頻流是MP3編碼,所以你需要啟用通過(guò)傳遞LAME支持可使用–enable-libmp3lame配置。該映射是特別有用的用于DVD的轉(zhuǎn)碼,以獲得所需的音頻語(yǔ)言。
注意:使用ffmpeg -formats查看支持的輸入格式。
您可以從視頻中提取圖像,或從圖像創(chuàng)建視頻:
從視頻中提取圖片: ffmpeg -i foo.avi -r 1 -s WxH -f image2 foo-%03d.jpeg
這將每秒提取一個(gè)視頻幀,并輸出到名為foo-001.jpeg,foo-002.jpeg等圖片中。圖片將被重新縮放到定義的尺寸。
如果你想提取有限數(shù)量的幀,你可以組合使用上面的命令與-vframes或-t選項(xiàng),或與-ss開始從某一個(gè)時(shí)間點(diǎn)提取。
從圖像創(chuàng)建視頻:ffmpeg -f image2 -i foo-%03d.jpeg -r 12 -s WxH foo.avi
語(yǔ)法foo-%03d.jpeg指定要使用的三個(gè)數(shù)字組成的十進(jìn)制數(shù)用零填充到表達(dá)的序列號(hào)。它支持C語(yǔ)言printf函數(shù)相同的語(yǔ)法,但只有格式接受整數(shù)。
當(dāng)導(dǎo)入圖像序列,-i還支持Shell擴(kuò)展通配符。這在內(nèi)部通過(guò)image2-specific-pattern_type glob選項(xiàng)選擇。
例如,從文件名?匹配foo-.jpeg的圖片創(chuàng)建視頻* ffmpeg -f image2 -pattern_type glob -i 'foo-*.jpeg' -r 12 -s WxH foo.avi
可以把相同類型的許多流到輸出文件:ffmpeg -i test1.avi -i test2.avi -map 1:1 -map 1:0 -map 0:1 -map 0:0 -c copy -y test12.nut
產(chǎn)生的輸出文件test12.nut將包含從以相反的順序存儲(chǔ)的輸入文件中的四個(gè)流。
要強(qiáng)制CBR視頻輸出: ffmpeg -i myfile.avi -b 4000k -minrate 4000k -maxrate 4000k -bufsize 1835k out.m2v
lmin,lmax,mblmin和mblmax四個(gè)選項(xiàng)的單位是lambda,但你可以使用QP2LAMBDA常熟輕松地從q單位轉(zhuǎn)換: ffmpeg -i src.ext -lmax 21*QP2LAMBDA dst.ext
8 參見
ffmpeg-all , ffplay , ffprobe , ffserver , ffmpeg-utils , ffmpeg-scaler , ffmpeg-resampler , ffmpeg-codecs , ffmpeg-bitstream-filters , ffmpeg-formats , ffmpeg-devices , ffmpeg-protocols , ffmpeg-filters