ffmpeg命令行工具

1.簡介

ffmpeg [global_options] {[input_file_options] -i input_url} ... {[output_file_options] output_url} ...

2.描述

ffmpeg是一款非忱镀玻快速的視頻和音頻轉(zhuǎn)換器,可以從現(xiàn)場音頻/視頻源獲取。它還可以在任意采樣率之間進(jìn)行轉(zhuǎn)換逸爵,并通過高質(zhì)量的多相濾波器實時調(diào)整視頻大小窖剑。

ffmpeg從任意數(shù)量的由-i選項指定的輸入“文件”(可以是常規(guī)文件俏扩,管道篮幢,網(wǎng)絡(luò)流,抓取設(shè)備等)中讀取淀弹,并寫入任意數(shù)量的輸出“文件”,其中由一個普通的輸出url指定洪添。任何在命令行中發(fā)現(xiàn)的不能被解釋為選項的東西都被認(rèn)為是輸出url垦页。

原則上,每個輸入或輸出url都可以包含任意數(shù)量的不同類型的視頻流(視頻/音頻/字幕/附件/數(shù)據(jù))干奢。流的允許數(shù)量和/或類型可能受容器格式的限制痊焊。選擇哪些輸入流將自動進(jìn)入哪個輸出或使用-map選項進(jìn)行(請參見流選擇章節(jié))。

要引用選項中的輸入文件,您必須使用它們的索引(從0開始)薄啥。例如辕羽。第一個輸入文件是0,第二個輸入文件是1垄惧,等等刁愿。類似地,文件內(nèi)的流被它們的索引引用到逊。例如铣口。 2:3是指第三個輸入文件中的第四個流。另請參閱流說明符一章觉壶。

作為一般規(guī)則脑题,選項將應(yīng)用于下一個指定的文件。因此铜靶,順序很重要叔遂,您可以多次在命令行上使用相同的選項。然后將每個事件應(yīng)用于下一個輸入或輸出文件争剿。該規(guī)則的例外是全局選項(例如詳細(xì)級別)已艰,應(yīng)該首先指定它們。

不要混合輸入和輸出文件 - 首先指定所有輸入文件蚕苇,然后指定所有輸出文件哩掺。也不要混合屬于不同文件的選項。所有選項僅適用于下一個輸入或輸出文件捆蜀,并在文件之間重置疮丛。

  • 要將輸出文件的視頻比特率設(shè)置為64 kbit / s:
    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)制輸入文件的幀速率(僅適用于原始格式)為1 fps,輸出文件的幀速率為24 fps:
    ffmpeg -r 1 -i input.m2v -r 24 output.avi
    原始輸入文件可能需要format選項辆它。

3.詳細(xì)的描述

ffmpeg中每個輸出的代碼轉(zhuǎn)換過程可以用下圖來描述:


轉(zhuǎn)換過程

ffmpeg調(diào)用libavformat庫(包含demuxers)來讀取輸入文件并獲取包含編碼數(shù)據(jù)的數(shù)據(jù)包誊薄。當(dāng)有多個輸入文件時,ffmpeg會嘗試通過跟蹤任何活動輸入流上的最低時間戳來使它們保持同步锰茉。

然后將編碼的數(shù)據(jù)包傳遞給解碼器(除非為數(shù)據(jù)流選擇了流拷貝呢蔫,請參閱進(jìn)一步的描述)。解碼器產(chǎn)生未壓縮的幀(原始視頻/ PCM音頻/ ...)飒筑,可以通過濾波進(jìn)一步處理(參見下一節(jié))片吊。在過濾之后,幀被傳遞給編碼器协屡,編碼器對其進(jìn)行編碼并輸出編碼分組俏脊。最后,這些傳遞給復(fù)用器肤晓,將編碼的數(shù)據(jù)包寫入輸出文件爷贫。

3.1濾波(過濾)

在編碼之前认然,ffmpeg可以使用libavfilter庫中的過濾器處理原始音頻和視頻幀。幾個鏈?zhǔn)竭^濾器形成一個過濾器圖形漫萄。 ffmpeg區(qū)分兩種類型的過濾器圖形:簡單和復(fù)雜卷员。

3.1.1簡單的過濾器圖文

簡單的過濾器圖就是那些只有一個輸入和輸出,都是相同類型的過濾器圖腾务。在上圖中毕骡,它們可以通過簡單地在解碼和編碼之間插入額外的步驟來表示:


簡單的過濾器

簡單的filtergraphs配置了per-stream-filter選項(分別為視頻和音頻使用-vf和-af別名)。一個簡單的視頻濾鏡可以看起來像這樣:


簡單的視頻濾鏡

請注意岩瘦,某些濾鏡會更改幀屬性未巫,但不會改變幀內(nèi)容。例如启昧。上例中的fps過濾器會更改幀數(shù)橱赠,但不會觸及幀內(nèi)容。另一個例子是setpts過濾器箫津,它只設(shè)置時間戳并以其他方式傳遞幀。

3.1.2復(fù)雜的過濾器圖

復(fù)雜的過濾器圖是那些不能簡單描述為應(yīng)用于一個流的線性處理鏈的過濾器圖宰啦。例如,當(dāng)圖形有多個輸入和/或輸出,或者輸出流類型與輸入不同時拐云,就是這種情況查吊。它們可以用下圖表示:


復(fù)雜的過濾器

復(fù)雜的過濾器圖使用-filter_complex選項進(jìn)行配置。請注意漓柑,此選項是全局性的教硫,因為復(fù)雜的過濾器圖形本質(zhì)上不能與單個流或文件明確關(guān)聯(lián)。

-lavfi選項等同于-filter_complex辆布。

一個復(fù)雜的過濾器圖的簡單例子是覆蓋過濾器瞬矩,它有兩個視頻輸入和一個視頻輸出,其中包含一個疊加在另一個之上的視頻锋玲。它的音頻對應(yīng)是amix濾波器景用。

3.2 流拷貝

流復(fù)制是通過將復(fù)制參數(shù)提供給-codec選項來選擇的模式。它使ffmpeg省略了指定流的解碼和編碼步驟惭蹂,因此它只進(jìn)行解復(fù)用和混合伞插。這對于更改容器格式或修改容器級元數(shù)據(jù)很有用。在這種情況下盾碗,上圖將簡化為:


流復(fù)制

由于沒有解碼或編碼媚污,因此速度非常快廷雅,并且沒有質(zhì)量損失耗美。但是京髓,由于許多因素,它在某些情況下可能不起作用幽歼。應(yīng)用過濾器顯然也是不可能的朵锣,因為過濾器處理未壓縮的數(shù)據(jù)。

4.流選擇

默認(rèn)情況下甸私,ffmpeg只包含輸入文件中每種類型(視頻诚些,音頻,字幕)的一個流皇型,并將它們添加到每個輸出文件诬烹。它根據(jù)以下標(biāo)準(zhǔn)挑選每一個的“最佳”:對于視頻,它是具有最高分辨率的流弃鸦,對于音頻绞吁,它是具有最多頻道的流,對于字幕唬格,它是第一個字幕流家破。在多個相同類型的碼流相同的情況下,選擇具有最低索引的碼流购岗。
您可以通過使用-vn / -an / -sn / -dn選項來禁用某些默認(rèn)設(shè)置汰聋。要進(jìn)行全面的手動控制,請使用-map選項喊积,該選項禁用剛描述的默認(rèn)設(shè)置烹困。

5.選項

所有數(shù)字選項(如果未另外指定的話)都接受一個表示數(shù)字的字符串作為輸入,其后可能跟著一個SI單位前綴乾吻,例如:'K'髓梅,'M'或'G'。

如果'i'被附加到SI單元前綴绎签,則完整前綴將被解釋為二進(jìn)制倍數(shù)的單位前綴枯饿,其基于1024的冪而不是1000的冪。將“B”附加到SI單元前綴將乘以值為8.這允許使用辜御,例如:'KB'鸭你,'MiB','G'和'B'作為數(shù)字后綴擒权。

不帶參數(shù)的選項是布爾選項袱巨,并將相應(yīng)的值設(shè)置為true√汲可以通過在選項名稱前加上“no”來將它們設(shè)置為false愉老。例如,使用“-nofoo”將名稱為“foo”的布爾選項設(shè)置為false剖效。

5.1流說明符

每個流都應(yīng)用一些選項嫉入,例如焰盗,比特率或編解碼器。流說明符用于精確指定給定選項屬于哪個流咒林。

流說明符通常是附加到選項名稱的字符串熬拒,并用冒號分隔。例如垫竞。 -codec:a:1 ac3包含a:1流說明符澎粟,它與第二個音頻流相匹配。因此欢瞪,它會為第二個音頻流選擇ac3編解碼器活烙。

流說明符可以匹配多個流,以便該選項適用于所有這些流遣鼓。例如啸盏。 -b:a 128k中的流說明符匹配所有音頻流。

一個空的流說明符匹配所有的流骑祟。例如回懦,-codec copy或-codec:copy將復(fù)制所有流而不重新編碼

流說明符的可能形式是:

stream_index
與此索引匹配的流。例如次企。 -threads:1 4會將第二個流的線程數(shù)設(shè)置為4粉怕。

stream_type[:stream_index]
stream_type是以下之一:視頻的'v'或'V',音頻的'a'抒巢,字幕的's',數(shù)據(jù)的'd'和附件的't'秉犹。 'v'匹配所有視頻流蛉谜,'V'只匹配沒有附加圖片,視頻縮略圖或封面藝術(shù)的視頻流崇堵。如果給出stream_index型诚,則它匹配這種類型的流號碼stream_index。否則鸳劳,它匹配這種類型的所有流狰贯。

p:program_id[:stream_index]
如果給出stream_index,則它將程序中編號為stream_index的流與id為program_id的流進(jìn)行匹配赏廓。否則涵紊,它會匹配程序中的所有流。

#stream_id or i:stream_id
通過流ID匹配流(例如MPEG-TS容器中的PID)幔摸。

m:key[:value]
使用具有指定值的元數(shù)據(jù)標(biāo)簽密鑰匹配流摸柄。如果沒有給出值,則將包含給定標(biāo)簽的流與任何值進(jìn)行匹配既忆。

u
匹配具有可用配置的流驱负,必須定義編解碼器并且必須存在諸如視頻維度或音頻采樣率的基本信息嗦玖。

請注意,在ffmpeg中跃脊,元數(shù)據(jù)匹配僅適用于輸入文件宇挫。

5.2通用選項

這些選項由ff *工具共享。

-L
顯示許可證酪术。

-h, -?, -help, --help [arg]
顯示幫助器瘪。可以指定可選參數(shù)來打印關(guān)于特定項目的幫助拼缝。如果沒有指定參數(shù)娱局,則只顯示基本(非高級)工具選項。
arg的可能值是:
long
除基本工具選項外咧七,還打印高級工具選項衰齐。
full
打印完整的選項列表,包括編碼器继阻,解碼器耻涛,解復(fù)用器,復(fù)用器瘟檩,濾波器等的共享和專用選項抹缕。
decoder=decoder_name
打印有關(guān)名為decoder_name的解碼器的詳細(xì)信息。使用-decoders選項可以獲得所有解碼器的列表墨辛。
encoder=encoder_name
打印有關(guān)名為encoder_name的編碼器的詳細(xì)信息卓研。使用-encoders選項可以獲取所有編碼器的列表。
demuxer=demuxer_name
打印有關(guān)名為demuxer_name的分流器的詳細(xì)信息睹簇。使用-formats選項可以獲得所有分路器和復(fù)用器的列表奏赘。
muxer=muxer_name
打印有關(guān)名為muxer_name的復(fù)用器的詳細(xì)信息。使用-formats選項可以獲得所有muxers和demuxers的列表太惠。
filter=filter_name
打印有關(guān)過濾器名稱filter_name的詳細(xì)信息磨淌。使用-filters選項可以獲取所有過濾器的列表。

-version 版本內(nèi)容

-formats 顯示可用的格式(包括設(shè)備)凿渊。

-demuxers 顯示可用的分流器梁只。

-muxers 顯示可用的復(fù)用器。

-devices 顯示可用的設(shè)備埃脏。

-codecs
顯示libavcodec已知的所有編解碼器搪锣。
請注意,本文檔中使用術(shù)語'編解碼器'作為更正確稱為媒體比特流格式的快捷方式彩掐。

-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]...]
顯示輸入設(shè)備的自動檢測源抡谐。某些設(shè)備可能會提供無法自動檢測的與系統(tǒng)相關(guān)的源名稱裁奇。返回的列表不能被認(rèn)為始終完整。
ffmpeg -sources pulse,server=192.168.0.4

-sinks device[,opt1=val1[,opt2=val2]...]
顯示輸出設(shè)備的自動檢測接收器麦撵。某些設(shè)備可能提供無法自動檢測的系統(tǒng)相關(guān)接收器名稱刽肠。返回的列表不能被認(rèn)為始終完整。
ffmpeg -sinks pulse,server=192.168.0.4

-loglevel [repeat+]loglevel | -v [repeat+]loglevel
設(shè)置庫使用的日志記錄級別免胃。添加“repeat +”表示重復(fù)的日志輸出不應(yīng)壓縮到第一行音五,并且“Last message repeated n times”行將被省略。 “重復(fù)”也可以單獨使用羔沙。如果單獨使用“重復(fù)”躺涝,并且沒有設(shè)置以前的日志級別,則將使用默認(rèn)的日志級別扼雏。如果給出多個loglevel參數(shù)坚嗜,則使用'repeat'將不會更改日志級別。 loglevel是包含以下值之一的字符串或數(shù)字:
‘quiet, -8’
什么都不顯示;安靜诗充。
‘panic, 0’
只顯示可能導(dǎo)致進(jìn)程崩潰的致命錯誤苍蔬,如斷言失敗。這目前不用于任何事情蝴蜓。
‘fatal, 8’
只顯示致命錯誤碟绑。這些錯誤之后,這個過程絕對不能繼續(xù)茎匠。
‘error, 16’
顯示所有錯誤蜈敢,包括可以從中恢復(fù)的錯誤。
‘warning, 24’
顯示所有警告和錯誤汽抚。任何與可能不正確或意外事件相關(guān)的消息都將顯示。
'info伯病,32'
在處理過程中顯示信息性消息造烁。這是除了警告和錯誤。這是默認(rèn)值午笛。
‘verbose, 40’
與info相同惭蟋,但更詳細(xì)。
‘debug, 48’
顯示一切药磺,包括調(diào)試信息告组。
‘trace, 56’
默認(rèn)情況下程序會記錄到stderr。如果終端支持著色癌佩,則會使用顏色標(biāo)記錯誤和警告木缝”阆牵可以禁用日志著色設(shè)置環(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)儲到當(dāng)前目錄中名為program-YYYYMMDD-HHMMSS.log的文件中矫俺。此文件可用于錯誤報告吱殉。它也意味著-loglevel冗長。
將環(huán)境變量FFREPORT設(shè)置為任何值都具有相同的效果厘托。如果該值為':' - 分隔鍵=值序列友雳,則這些選項將影響報告;如果選項值包含特殊字符或選項分隔符':',則必須轉(zhuǎn)義它們(請參閱ffmpeg-utils手冊中的“引用和轉(zhuǎn)義”部分)铅匹。
以下選項被認(rèn)可:
file
設(shè)置報告使用的文件名稱; %p擴(kuò)展為程序名稱押赊,%t擴(kuò)展為時間戳,%%擴(kuò)展為普通%
level
使用數(shù)值設(shè)置日志詳細(xì)級別(請參閱-loglevel)伊群。
例如考杉,要使用日志級別32(日志級別信息的別名)將報告輸出到名為ffreport.log的文件:
FFREPORT=file=ffreport.log:level=32 ffmpeg -i input output
解析環(huán)境變量時的錯誤不是致命的,并且不會出現(xiàn)在報告中舰始。

-hide_banner
禁止打印標(biāo)題崇棠。
所有FFmpeg工具通常會顯示版權(quán)聲明,構(gòu)建選項和庫版本丸卷。該選項可用于抑制打印此信息枕稀。

-cpuflags flags (global)
允許設(shè)置和清除CPU標(biāo)志。此選項用于測試谜嫉。除非你知道你在做什么萎坷,否則不要使用它。

  ffmpeg -cpuflags -sse+mmx ...
  ffmpeg -cpuflags mmx ...
  ffmpeg -cpuflags 0 ...

這個選項可能的標(biāo)志是:
‘x86’
‘mmx’
‘mmxext’
‘sse’
‘sse2’
‘sse2slow’
‘sse3’
‘sse3slow’
‘ssse3’
‘a(chǎn)tom’
‘sse4.1’
‘sse4.2’
‘a(chǎn)vx’
‘a(chǎn)vx2’
‘xop’
‘fma3’
‘fma4’
‘3dnow’
‘3dnowext’
‘bmi1’
‘bmi2’
‘cmov’
‘ARM’
‘a(chǎn)rmv5te’
‘a(chǎn)rmv6’
‘a(chǎn)rmv6t2’
‘vfp’
‘vfpv3’
‘neon’
‘setend’
‘AArch64’
‘a(chǎn)rmv8’
‘vfp’
‘neon’
‘PowerPC’
‘a(chǎn)ltivec’
‘Specific Processors’
‘pentium2’
‘pentium3’
‘pentium4’
‘k6’
‘k62’
‘a(chǎn)thlon’
‘a(chǎn)thlonxp’
‘k8’

5.3 AVOptions

這些選項直接由libavformat沐兰,libavdevice和libavcodec庫提供哆档。要查看可用AVOptions的列表,請使用-help選項住闯。它們分為兩類:

generic
這些選項可以為任何容器瓜浸,編解碼器或設(shè)備設(shè)置。通用選項列在容器/設(shè)備的AVFormatContext選項下比原,以及編解碼器的AVCodecContext選項下插佛。

private
這些選項特定于給定的容器,設(shè)備或編解碼器量窘。私有選項列在相應(yīng)的容器/設(shè)備/編解碼器下雇寇。

例如,要將ID3v2.3標(biāo)題(而不是默認(rèn)ID3v2.4)寫入MP3文件,請使用MP3 muxer的id3v2_version專用選項:
ffmpeg -i input.flac -id3v2_version 3 out.mp3

所有的編解碼器AVOptions都是每個流锨侯,因此應(yīng)該附加一個流說明符嫩海。

注意:-nooption語法不能用于boolean AVOptions,請使用-option 0 / -option 1识腿。

注意:通過將v / a / s預(yù)先添加到選項名稱來指定每個流AVOptions的舊未公開方式現(xiàn)在已過時出革,并且很快就會被移除。

5.4主要選項

-f fmt(輸入/輸出)
強(qiáng)制輸入或輸出文件格式渡讼。格式通常是自動檢測輸入文件并從輸出文件的文件擴(kuò)展名中猜測出來的骂束,所以在大多數(shù)情況下這個選項是不需要的。

-i url(輸入)
輸入文件的網(wǎng)址

-y(global)
覆蓋輸出文件而不詢問成箫。

-n(global)
不要覆蓋輸出文件展箱,如果指定的輸出文件已經(jīng)存在,請立即退出蹬昌。

-stream_loop編號(輸入)
設(shè)置輸入流應(yīng)循環(huán)的次數(shù)混驰。循環(huán)0意味著沒有循環(huán),循環(huán)-1意味著無限循環(huán)皂贩。

-c[:stream_specifier] 編解碼器(輸入/輸出栖榨,每個流)

-codec[:stream_specifier] 編解碼器(輸入/輸出,每個流)
選擇一個編碼器(當(dāng)在輸出文件之前使用)或解碼器(當(dāng)在輸入文件之前使用時)用于一個或多個流明刷。編解碼器是解碼器/編碼器的名稱或特殊值副本(僅輸出)以表明該流不會被重新編碼婴栽。
ffmpeg -i INPUT -map 0 -c:v libx264 -c:a copy OUTPUT
使用libx264編碼所有視頻流并復(fù)制所有音頻流。
對于每個流辈末,都會應(yīng)用最后匹配的c選項
ffmpeg -i INPUT -map 0 -c copy -c:v:1 libx264 -c:a:137 libvorbis OUTPUT
將復(fù)制除了第二個視頻(其將用libx264編碼)和第138個音頻(其將用libvorbis編碼)之外的所有流愚争。

-t 持續(xù)時間(輸入/輸出)
當(dāng)用作輸入選項時(在-i之前),限制從輸入文件讀取數(shù)據(jù)的持續(xù)時間挤聘。
當(dāng)用作輸出選項時(在輸出url之前)轰枝,在持續(xù)時間達(dá)到持續(xù)時間后停止輸出。
持續(xù)時間必須是持續(xù)時間規(guī)范组去,請參閱ffmpeg-utils(1)手冊中的(ffmpeg-utils)持續(xù)時間部分鞍陨。
-to和-t是互斥的,-t優(yōu)先从隆。

-to 位置 (輸入/輸出)
停止寫入輸出或在位置讀取輸入诚撵。位置必須是持續(xù)時間規(guī)范,請參閱ffmpeg-utils(1)手冊中的(ffmpeg-utils)“持續(xù)時間”部分广料。
-to和-t是互斥的,-t優(yōu)先幼驶。

-fs 限制大小 (output)
設(shè)置文件大小限制艾杏,以字節(jié)表示。超出限制后不會寫入更多字節(jié)盅藻。輸出文件的大小略大于請求的文件大小购桑。

-ss 位置 (input/output)
當(dāng)用作輸入選項(在-i之前)時畅铭,會在此輸入文件中尋找位置。請注意勃蜘,在大多數(shù)格式中硕噩,無法準(zhǔn)確查找,因此ffm??peg會在位置前尋找最近的搜索點缭贡。當(dāng)轉(zhuǎn)碼和-accurate_seek被啟用(默認(rèn))時炉擅,搜索點和位置之間的這個額外片段將被解碼并丟棄。在進(jìn)行流式復(fù)制或使用-noaccurate_seek時阳惹,它將被保留谍失。
當(dāng)用作輸出選項時(在輸出url之前),解碼但丟棄輸入莹汤,直到時間戳到達(dá)位置快鱼。
位置必須是持續(xù)時間規(guī)范,請參閱ffmpeg-utils(1)手冊中的(ffmpeg-utils)“持續(xù)時間”部分纲岭。.

-sseof 位置 (input/output)
像-ss選項一樣抹竹,但相對于“文件結(jié)尾”。這是文件中較早的負(fù)值止潮,0表示EOF窃判。

-itsoffset 偏移 (input)
設(shè)置輸入時間偏移。
偏移量必須是持續(xù)時間規(guī)范沽翔,請參閱ffmpeg-utils(1)手冊中的(ffmpeg-utils)Time duration部分兢孝。
偏移量被添加到輸入文件的時間戳中。指定正偏移量意味著相應(yīng)的流延遲了偏移量中指定的持續(xù)時間仅偎。

-timestamp 時間 (output)
在容器中設(shè)置錄制時間戳跨蟹。
日期必須是日期規(guī)范,請參閱(ffmpeg-utils)ffmpeg-utils(1)手冊中的日期部分橘沥。

-metadata[:metadata_specifier] key=value (output,per-metadata)
設(shè)置元數(shù)據(jù)鍵/值對窗轩。
可以給出可選的metadata_specifier來設(shè)置流,章節(jié)或程序的元數(shù)據(jù)座咆。有關(guān)詳細(xì)信息痢艺,請參閱-map_metadata文檔。
該選項覆蓋使用-map_metadata設(shè)置的元數(shù)據(jù)介陶。也可以通過使用空值來刪除元數(shù)據(jù)堤舒。
例如,在輸出文件中設(shè)置標(biāo)題:
ffmpeg -i in.avi -metadata title="my title" out.flv
要設(shè)置第一個音頻流的語言:
ffmpeg -i INPUT -metadata:s:a:0 language=eng OUTPUT

-disposition[:stream_specifier] value (output,per-stream)
設(shè)置流的配置哺呜。
此選項覆蓋從輸入流復(fù)制的配置舌缤。也可以通過將其設(shè)置為0來刪除處置。
以下設(shè)置是有效的:
default
dub
original
comment
lyrics
karaoke
forced
hearing_impaired
visual_impaired
clean_effects
captions
descriptions
metadata
例如,要將第二個音頻流設(shè)置為默認(rèn)流:
ffmpeg -i in.mkv -disposition:a:1 default out.mkv
要將第二個字幕流設(shè)置為默認(rèn)流国撵,并從第一個字幕流刪除默認(rèn)處置:
ffmpeg -i INPUT -disposition:s:0 0 -disposition:s:1 default OUTPUT

-program [title=title:][program_num=program_num:]st=stream[:st=stream...] (output)
使用指定的標(biāo)題program_num創(chuàng)建一個程序并將指定的流添加到該程序中陵吸。

-target type (output)
指定目標(biāo)文件類型(vcd,svcd介牙,dvd壮虫,dv,dv50)环础。類型可能帶有pal-囚似,ntsc-或film-前綴,以使用相應(yīng)的標(biāo)準(zhǔn)喳整。所有的格式選項(比特率谆构,編解碼器,緩沖區(qū)大锌蚨肌)都會自動設(shè)置搬素。你可以輸入ffmpeg -i myfile.avi -target vcd /tmp/vcd.mpg
盡管如此,只要您知道它們不與標(biāo)準(zhǔn)沖突魏保,您可以指定其他選項熬尺,如下所示:ffmpeg -i myfile.avi -target vcd -bf 2 /tmp/vcd.mpg

-dn (output)
禁用數(shù)據(jù)記錄。有關(guān)完整的手動控制谓罗,請參閱-map選項粱哼。

-dframes number (output)
設(shè)置要輸出的數(shù)據(jù)幀的數(shù)量。對于-frames:d檩咱,這是一個過時的別名揭措,您應(yīng)該使用它。

-frames[:stream_specifier] framecount (output,per-stream)
停止在幀計數(shù)幀之后寫入流刻蚯。

-q[:stream_specifier] q (output,per-stream)

-qscale[:stream_specifier] q (output,per-stream)
使用固定質(zhì)量等級(VBR)绊含。 q / qscale的含義是編解碼器相關(guān)的。如果qscale在沒有stream_specifier的情況下使用炊汹,那么它僅適用于視頻流躬充,這是為了保持與先前行為的兼容性,并且為音頻和視頻的2種不同編解碼器指定了相同的編解碼器特定值讨便,而這通常不是當(dāng)沒有stream_specifier用來充甚。

-filter[:stream_specifier] filtergraph (output,per-stream)
創(chuàng)建由filtergraph指定的過濾器圖并使用它過濾流。
filtergraph是要應(yīng)用于流的filtergraph的描述霸褒,并且必須具有相同類型流的單個輸入和單個輸出伴找。在過濾器圖中,輸入與標(biāo)簽相關(guān)聯(lián)废菱,標(biāo)簽輸出與標(biāo)簽相關(guān)聯(lián)技矮。有關(guān)filtergraph語法的更多信息眉反,請參閱ffmpeg-filters手冊。
如果要創(chuàng)建具有多個輸入和/或輸出的過濾器圖形穆役,請參閱-filter_complex選項。

-filter_script[:stream_specifier] filename (output,per-stream)
該選項與-filter類似梳凛,唯一的區(qū)別是它的參數(shù)是要從中讀取filtergraph描述的文件的名稱耿币。

-filter_threads nb_threads (global)
定義用于處理過濾器管道的線程數(shù)。每個管道都會產(chǎn)生一個線程池韧拒,并有多個線程可用于并行處理淹接。缺省值是可用CPU的數(shù)量。

-pre[:stream_specifier] preset_name (output,per-stream)
為匹配的流指定預(yù)設(shè)叛溢。

-stats (global)
打印編碼進(jìn)度/統(tǒng)計塑悼。默認(rèn)情況下,要明確禁用它楷掉,你需要指定-nostats厢蒜。

-progress url (global)
將適合程序的進(jìn)度信息發(fā)送至網(wǎng)址。
進(jìn)度信息大約每秒鐘都在編碼過程結(jié)束時寫入烹植。它由“key = value”行組成斑鸦。密鑰僅包含字母數(shù)字字符。進(jìn)度信息序列的最后一個關(guān)鍵始終是“進(jìn)度”草雕。

-stdin
在標(biāo)準(zhǔn)輸入上啟用交互巷屿。默認(rèn)情況下,除非將標(biāo)準(zhǔn)輸入用作輸入墩虹。要明確禁用交互嘱巾,您需要指定-nostdin。
例如诫钓,如果ffmpeg位于后臺進(jìn)程組中旬昭,禁用標(biāo)準(zhǔn)輸入交互很有用。用ffmpeg ...可以實現(xiàn)相同的結(jié)果... </ dev / null但是它需要一個shell尖坤。

-debug_ts (global)
打印時間戳信息稳懒。它默認(rèn)關(guān)閉。此選項主要用于測試和調(diào)試目的慢味,并且輸出格式可能會從一個版本更改為另一個版本场梆,因此它不應(yīng)該被可移植腳本使用。
另見選項-fdebug ts纯路。

-attach filename (output)
將附件添加到輸出文件或油。這可以通過Matroska等幾種格式來支持,例如字幕中使用的字體驰唬。附件是作為特定類型的流實現(xiàn)的顶岸,因此該選項將為該文件添加一個新流腔彰。然后就可以以通常的方式在這個流上使用每個流選項。使用此選項創(chuàng)建的附件流將在所有其他流(即使用-map或自動映射創(chuàng)建的流)之后創(chuàng)建辖佣。
請注意霹抛,對于Matroska,您還必須設(shè)置mimetype元數(shù)據(jù)標(biāo)記:
ffmpeg -i INPUT -attach DejaVuSans.ttf -metadata:s:2 mimetype=application/x-truetype-font out.mkv(假設(shè)附件流將在輸出文件中排在第三位)

-dump_attachment[:stream_specifier] filename (input,per-stream)
將匹配的附件流提取到名為filename的文件中卷谈。如果filename為空杯拐,則將使用文件名元數(shù)據(jù)標(biāo)記的值。
例如世蔗。將第一個附件提取到名為“out.ttf”的文件中:
ffmpeg -dump_attachment:t:0 out.ttf -i INPUT
將所有附件提取到由文件名標(biāo)記確定的文件中:
ffmpeg -dump_attachment:t "" -i INPUT
技術(shù)說明 - 附件實現(xiàn)為編解碼器extradata端逼,因此該選項實際上可用于從任何流中提取額外數(shù)據(jù),而不僅僅是附件污淋。

-noautorotate
根據(jù)文件元數(shù)據(jù)禁用自動旋轉(zhuǎn)視頻顶滩。

5.5 Video Options

-vframes number (output)
設(shè)置要輸出的視頻幀數(shù)。對于-frames:v寸爆,這是一個過時的別名礁鲁,您應(yīng)該使用它。

-r[:stream_specifier] fps (input/output,per-stream)
設(shè)置幀率(Hz值赁豆,分?jǐn)?shù)或縮寫)救氯。作為輸入選項,忽略存儲在文件中的任何時間戳歌憨,而是生成時間戳着憨,假設(shè)幀速率為fps。這與用于某些輸入格式(如image2或v4l2)的-framerate選項不同(它在FFmpeg的舊版本中與以前版本相同)务嫡。如果有疑問甲抖,請使用-framerate而不是輸入選項-r。
作為輸出選項心铃,復(fù)制或丟棄輸入幀以實現(xiàn)恒定輸出幀頻fps准谚。

-s[:stream_specifier] size (input/output,per-stream)
設(shè)置框架大小。
作為輸入選項去扣,這是video_size專用選項的快捷方式柱衔,由某些分幀器識別,其幀大小未存儲在文件中或可配置 - 例如愉棱,原始視頻或視頻采集卡唆铐。
作為輸出選項,它將縮放視頻過濾器插入到相應(yīng)過濾器圖形的末尾奔滑。請直接使用比例過濾器將其插入開始或其他地方艾岂。
格式為'wxh'(默認(rèn) - 與源相同)。

-aspect[:stream_specifier] aspect (output,per-stream)
設(shè)置方面指定的視頻顯示寬高比朋其。
aspect可以是浮點數(shù)字符串王浴,也可以是num:den形式的字符串脆炎,其中num和den是高寬比的分子和分母。例如“4:3”氓辣,“16:9”秒裕,“1.3333”和“1.7777”是有效的參數(shù)值。
如果與-vcodec副本一起使用钞啸,它將影響存儲在容器級別的寬高比簇爆,但不會影響存儲在編碼幀中的寬高比(如果存在)。

-vn (output)
禁用視頻錄制爽撒。有關(guān)完整的手動控制,請參閱-map選項响蓉。

-vcodec codec (output)
設(shè)置視頻編解碼器硕勿。這是-codec:v的別名。

-pass[:stream_specifier] n (output,per-stream)
選擇通行證號碼(1或2)枫甲。它被用來做兩路視頻編碼源武。視頻的統(tǒng)計信息會在第一階段記錄到日志文件中(另請參閱選項-passlogfile),并在第二階段中使用日志文件以確切的請求比特率生成視頻想幻。在通過1時粱栖,您可以停用音頻并將輸出設(shè)置為空,例如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è)置為前綴脏毯,默認(rèn)文件名前綴為“ffmpeg2pass”闹究。完整的文件名將是PREFIX-N.log,其中N是特定于輸出流的數(shù)字

-vf filtergraph (output)
創(chuàng)建由filtergraph指定的過濾器圖并使用它過濾流食店。
這是-filter:v的別名渣淤,請參閱-filter選項。

5.6 Advanced Video options

-pix_fmt[:stream_specifier] format (input/output,per-stream)
設(shè)置像素格式吉嫩。使用-pix_fmts顯示所有支持的像素格式价认。如果選擇的像素格式不能被選擇,ffmpeg會打印警告并選擇編碼器支持的最佳像素格式自娩。如果pix_fmt前綴為+用踩,則如果無法選擇所請求的像素格式,則ffmpeg將退出忙迁,并顯示錯誤脐彩,并禁用濾鏡圖片中的自動轉(zhuǎn)換。如果pix_fmt是單個+姊扔,則ffmpeg會選擇與輸入(或圖形輸出)相同的像素格式丁屎,并禁用自動轉(zhuǎn)換。

-sws_flags flags (input/output)
設(shè)置SwScaler標(biāo)志旱眯。

-vdt n
放棄閾值晨川。

-rc_override[:stream_specifier] override (output,per-stream)
速率控制覆蓋特定時間間隔证九,格式為“int,int共虑,int”列表愧怜,并用斜杠分隔。兩個第一個值是開始和結(jié)束幀數(shù)妈拌,最后一個是量化器在正面使用拥坛,或者如果是負(fù)面,則使用質(zhì)量因子尘分。

-ilme
編碼器強(qiáng)制隔行掃描支持(僅適用于MPEG-2和MPEG-4)猜惋。如果您的輸入文件是交錯的,并且您希望保持隔行格式以減少損失培愁,請使用此選項著摔。另一種方法是將輸入流與-deinterlace解交錯,但反交錯引入了損失定续。

-psnr
計算壓縮幀的PSNR谍咆。

-vstats
將視頻編碼統(tǒng)計信息轉(zhuǎn)儲到vstats_HHMMSS.log。

-vstats_file file
將視頻編碼統(tǒng)計信息轉(zhuǎn)儲到文件私股。

-vstats_version file
指定要使用哪個版本的vstats格式摹察。缺省值是2。
version = 1 :
frame= %5d q= %2.1f PSNR= %6.2f f_size= %6d s_size= %8.0fkB time= %0.3f br= %7.1fkbits/s avg_br= %7.1fkbits/s
version > 1:
out= %2d st= %2d frame= %5d q= %2.1f PSNR= %6.2f f_size= %6d s_size= %8.0fkB time= %0.3f br= %7.1fkbits/s avg_br= %7.1fkbits/s

-top[:stream_specifier] n (output,per-stream)
top = 1 / bottom = 0 / auto = -1字段在前

-dc precision
Intra_dc_precision.

-vtag fourcc/tag (output)
強(qiáng)制視頻標(biāo)簽/ fourcc倡鲸。這是-tag:v的別名供嚎。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市峭状,隨后出現(xiàn)的幾起案子查坪,更是在濱河造成了極大的恐慌,老刑警劉巖宁炫,帶你破解...
    沈念sama閱讀 216,591評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件偿曙,死亡現(xiàn)場離奇詭異,居然都是意外死亡羔巢,警方通過查閱死者的電腦和手機(jī)望忆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來竿秆,“玉大人启摄,你說我怎么就攤上這事∮母郑” “怎么了歉备?”我有些...
    開封第一講書人閱讀 162,823評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長匪燕。 經(jīng)常有香客問我蕾羊,道長喧笔,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,204評論 1 292
  • 正文 為了忘掉前任龟再,我火速辦了婚禮书闸,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘利凑。我一直安慰自己浆劲,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,228評論 6 388
  • 文/花漫 我一把揭開白布哀澈。 她就那樣靜靜地躺著牌借,像睡著了一般。 火紅的嫁衣襯著肌膚如雪割按。 梳的紋絲不亂的頭發(fā)上膨报,一...
    開封第一講書人閱讀 51,190評論 1 299
  • 那天,我揣著相機(jī)與錄音哲虾,去河邊找鬼。 笑死择示,一個胖子當(dāng)著我的面吹牛束凑,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播栅盲,決...
    沈念sama閱讀 40,078評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼汪诉,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了谈秫?” 一聲冷哼從身側(cè)響起扒寄,我...
    開封第一講書人閱讀 38,923評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎拟烫,沒想到半個月后该编,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,334評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡硕淑,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,550評論 2 333
  • 正文 我和宋清朗相戀三年课竣,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片置媳。...
    茶點故事閱讀 39,727評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡于樟,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出拇囊,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 35,428評論 5 343
  • 正文 年R本政府宣布狸页,位于F島的核電站,受9級特大地震影響关霸,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜鬓长,卻給世界環(huán)境...
    茶點故事閱讀 41,022評論 3 326
  • 文/蒙蒙 一谒拴、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧涉波,春花似錦英上、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,672評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至窗声,卻和暖如春相恃,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背笨觅。 一陣腳步聲響...
    開封第一講書人閱讀 32,826評論 1 269
  • 我被黑心中介騙來泰國打工拦耐, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人见剩。 一個月前我還...
    沈念sama閱讀 47,734評論 2 368
  • 正文 我出身青樓杀糯,卻偏偏與公主長得像,于是被迫代替她去往敵國和親苍苞。 傳聞我的和親對象是個殘疾皇子固翰,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,619評論 2 354

推薦閱讀更多精彩內(nèi)容