FFmpeg 濾鏡文件

目錄

1 描述

本文檔描述 libavfilter 函式庫提供的濾鏡、來源和接收器。

2 濾鏡簡介

FFmpeg 中的濾鏡功能是透過 libavfilter 函式庫啟用的。

在 libavfilter 中,一個濾鏡可以有多個輸入和多個輸出。為了說明可能的各種情況,我們考慮以下濾鏡圖。

                [main]
input --> split ---------------------> overlay --> output
            |                             ^
            |[tmp]                  [flip]|
            +-----> crop --> vflip -------+

此濾鏡圖將輸入串流分割成兩個串流,然後將一個串流透過 crop 濾鏡和 vflip 濾鏡,然後透過覆蓋在頂部的方式與另一個串流合併。您可以使用以下命令來實現此目的

ffmpeg -i INPUT -vf "split [main][tmp]; [tmp] crop=iw:ih/2:0:0, vflip [flip]; [main][flip] overlay=0:H/2" OUTPUT

結果將是視訊的上半部鏡像到輸出視訊的下半部。

在同一線性鏈中的濾鏡以逗號分隔,而不同的線性濾鏡鏈則以分號分隔。在我們的範例中,crop,vflip 在一個線性鏈中,splitoverlay 分別在另一個線性鏈中。線性鏈接合的點以方括號括起來的名稱標記。在範例中,split 濾鏡產生兩個輸出,它們與標籤 [main][tmp] 相關聯。

傳送到 split 的第二個輸出(標記為 [tmp])的串流會透過 crop 濾鏡處理,該濾鏡會裁剪掉視訊的下半部分,然後垂直翻轉。overlay 濾鏡會輸入 split 濾鏡的第一個未變更的輸出(標記為 [main]),並在其下半部分覆蓋由 crop,vflip 濾鏡鏈產生的輸出。

某些濾鏡會輸入參數列表:它們在濾鏡名稱和等號後指定,並以冒號彼此分隔。

存在所謂的 來源濾鏡,它們沒有音訊/視訊輸入,以及 接收器濾鏡,它們沒有音訊/視訊輸出。

3 graph2dot

FFmpeg tools 目錄中包含的 graph2dot 程式可用於解析濾鏡圖描述,並以 dot 語言發出相應的文字表示形式。

調用命令

graph2dot -h

以查看如何使用 graph2dot

然後,您可以將 dot 描述傳遞給 dot 程式(來自 graphviz 程式套件),並獲得濾鏡圖的圖形表示形式。

例如,命令序列

echo GRAPH_DESCRIPTION | \
tools/graph2dot -o graph.tmp && \
dot -Tpng graph.tmp -o graph.png && \
display graph.png

可用於建立和顯示表示由 GRAPH_DESCRIPTION 字串描述的圖形的影像。請注意,此字串必須是完整的獨立圖形,其輸入和輸出已明確定義。例如,如果您的命令行格式如下

ffmpeg -i infile -vf scale=640:360 outfile

您的 GRAPH_DESCRIPTION 字串將需要採用以下格式

nullsrc,scale=640:360,nullsink

您可能還需要設定 nullsrc 參數並新增 format 濾鏡,以模擬特定的輸入檔案。

4 濾鏡圖描述

濾鏡圖是連接濾鏡的有向圖。它可以包含循環,並且濾鏡對之間可以有多個連結。每個連結在一側都有一個輸入襯墊,將其連接到一個濾鏡,它從該濾鏡獲取其輸入,而在另一側有一個輸出襯墊,將其連接到一個濾鏡,該濾鏡接受其輸出。

濾鏡圖中的每個濾鏡都是應用程式中註冊的濾鏡類別的實例,該濾鏡類別定義了濾鏡的功能以及輸入和輸出襯墊的數量。

沒有輸入襯墊的濾鏡稱為「來源」,而沒有輸出襯墊的濾鏡稱為「接收器」。

4.1 濾鏡圖語法

濾鏡圖具有文字表示形式,可由 ffmpeg 中的 -filter/-vf/-af-filter_complex 選項以及 ffplay 中的 -vf/-af 選項以及 libavfilter/avfilter.h 中定義的 avfilter_graph_parse_ptr() 函數識別。

濾鏡鏈由一系列連接的濾鏡組成,每個濾鏡都連接到序列中的前一個濾鏡。濾鏡鏈由以「,」分隔的濾鏡描述列表表示。

濾鏡圖由一系列濾鏡鏈組成。一系列濾鏡鏈由以「;」分隔的濾鏡鏈描述列表表示。

濾鏡由以下形式的字串表示:[in_link_1]...[in_link_N]filter_name@id=arguments[out_link_1]...[out_link_M]

filter_name 是描述濾鏡所屬的濾鏡類別的名稱,並且必須是程式中註冊的濾鏡類別之一的名稱,可選擇後跟 "@id"。濾鏡類別的名稱可選擇後跟字串 "=arguments"。

arguments 是一個字串,其中包含用於初始化濾鏡實例的參數。它可能具有以下兩種形式之一

  • 以「:」分隔的 key=value 配對列表。
  • 以「:」分隔的 value 列表。在這種情況下,金鑰被假定為選項名稱,其順序與它們宣告的順序相同。例如,fade 濾鏡以此順序宣告三個選項 – typestart_framenb_frames。然後參數列表 in:0:30 表示值 in 被指派給選項 type0 指派給 start_frame30 指派給 nb_frames
  • 以「:」分隔的混合直接 value 和長 key=value 配對列表。直接 value 必須在 key=value 配對之前,並遵循前一點的相同約束順序。以下 key=value 配對可以以任何首選順序設定。

如果選項值本身是項目列表(例如,format 濾鏡採用像素格式列表),則列表中的項目通常以「|」分隔。

可以使用字元「'」(作為起始和結束標記)和字元「\」(用於跳脫引號文字中的字元)來引號引起來參數列表;否則,當遇到下一個特殊字元(屬於集合「[]=;,」)時,參數字串將被視為終止。

ffmpeg CLI 工具中實作的特殊語法允許從檔案載入選項值。這是透過在選項名稱前加上斜線「/」來完成的,然後將提供的値解釋為從中載入實際值的路徑。例如

ffmpeg -i <INPUT> -vf drawtext=/text=/tmp/some_text <OUTPUT>

將從 /tmp/some_text 載入要繪製的文字。希望實作類似功能的 API 使用者應將 avfilter_graph_segment_*() 函數與自訂 IO 程式碼一起使用。

濾鏡的名稱和參數可選擇在前面和後面加上連結標籤列表。前面的標籤 in_link_1 ... in_link_N 與濾鏡輸入襯墊相關聯,後面的標籤 out_link_1 ... out_link_M 與輸出襯墊相關聯。

當在濾鏡圖中找到兩個具有相同名稱的連結標籤時,將在相應的輸入和輸出襯墊之間建立連結。

如果未標記輸出襯墊,則預設情況下,它會連結到濾鏡鏈中下一個濾鏡的第一個未標記輸入襯墊。例如,在濾鏡鏈中

nullsrc, split[L1], [L2]overlay, nullsink

split 濾鏡實例具有兩個輸出襯墊,而 overlay 濾鏡實例具有兩個輸入襯墊。split 的第一個輸出襯墊標記為「L1」,overlay 的第一個輸入襯墊標記為「L2」,並且 split 的第二個輸出襯墊連結到 overlay 的第二個輸入襯墊,它們都是未標記的。

在濾鏡描述中,如果未指定第一個濾鏡的輸入標籤,則假定為「in」;如果未指定最後一個濾鏡的輸出標籤,則假定為「out」。

在完整的濾鏡鏈中,所有未標記的濾鏡輸入和輸出襯墊都必須連接。如果所有濾鏡鏈的所有濾鏡輸入和輸出襯墊都已連接,則濾鏡圖被視為有效。

分隔濾鏡圖規格中符記的前導和尾隨空白字元(空格、Tab 或換行符)會被忽略。這表示可以使用空行和空格來表示濾鏡圖,以提高可讀性。

例如,濾鏡圖

testsrc,split[L1],hflip[L2];[L1][L2] hstack

可以表示為

testsrc,
split [L1], hflip [L2];

[L1][L2] hstack

Libavfilter 將在需要格式轉換的地方自動插入 scale 濾鏡。可以透過在濾鏡圖描述前面加上 sws_flags=flags; 來為那些自動插入的縮放器指定 swscale 旗標。

以下是濾鏡圖語法的 BNF 描述

NAME             ::= sequence of alphanumeric characters and '_'
FILTER_NAME      ::= NAME["@"NAME]
LINKLABEL        ::= "[" NAME "]"
LINKLABELS       ::= LINKLABEL [LINKLABELS]
FILTER_ARGUMENTS ::= sequence of chars (possibly quoted)
FILTER           ::= [LINKLABELS] FILTER_NAME ["=" FILTER_ARGUMENTS] [LINKLABELS]
FILTERCHAIN      ::= FILTER [,FILTERCHAIN]
FILTERGRAPH      ::= [sws_flags=flags;] FILTERCHAIN [;FILTERGRAPH]

4.2 關於濾鏡圖跳脫字元的注意事項

濾鏡圖描述組合需要多個層級的跳脫字元。請參閱 (ffmpeg-utils)ffmpeg-utils(1) 手冊中的「引號和跳脫字元」章節,以取得有關所使用跳脫字元程序的更多資訊。

第一個層級的跳脫字元會影響每個濾鏡選項值的內容,其中可能包含用於分隔值的特殊字元 : 或跳脫字元 \' 之一。

第二個層級的跳脫字元會影響整個濾鏡描述,其中可能包含跳脫字元 \' 或濾鏡圖描述使用的特殊字元 [],;

最後,當您在 Shell 命令列上指定濾鏡圖時,您需要為其中包含的 Shell 特殊字元執行第三個層級的跳脫字元。

例如,考慮要嵌入 drawtext 濾鏡描述 text 值中的以下字串

this is a 'string': may contain one, or more, special characters

此字串包含 ' 特殊跳脫字元和 : 特殊字元,因此需要以這種方式跳脫字元

text=this is a \'string\'\: may contain one, or more, special characters

當將濾鏡描述嵌入濾鏡圖描述中時,需要第二個層級的跳脫字元,以便跳脫所有濾鏡圖特殊字元。因此,上面的範例變為

drawtext=text=this is a \\\'string\\\'\\: may contain one\, or more\, special characters

(請注意,除了 \' 跳脫特殊字元外,還需要跳脫 ,)。

最後,當在 Shell 命令中編寫濾鏡圖描述時,需要額外的跳脫字元層級,這取決於所採用 Shell 的跳脫字元規則。例如,假設 \ 是特殊的,需要用另一個 \ 跳脫字元,則先前的字串最終將導致

-vf "drawtext=text=this is a \\\\\\'string\\\\\\'\\\\: may contain one\\, or more\\, special characters"

為了避免在使用接受濾鏡規格作為輸入的命令行工具時出現繁瑣的跳脫字元,建議避免直接在 Shell 中包含濾鏡或選項規格。

例如,在 drawtext 濾鏡 的情況下,您可能更喜歡使用 textfile 選項而不是 text 來指定要呈現的文字。

5 時間軸編輯

某些濾鏡支援一般 enable 選項。對於支援時間軸編輯的濾鏡,此選項可以設定為在將影格傳送到濾鏡之前評估的表達式。如果評估為非零值,則將啟用濾鏡,否則,影格將保持不變地傳送到濾鏡圖中的下一個濾鏡。

表達式接受以下值

t

以秒為單位的時間戳記,如果輸入時間戳記未知,則為 NAN

n

輸入影格的循序編號,從 0 開始

pos

輸入影格在檔案中的位置,如果未知,則為 NAN;已棄用,請勿使用

w
h

輸入影格的寬度和高度(如果為視訊)

此外,這些濾鏡還支援 enable 命令,該命令可用於重新定義表達式。

與任何其他濾鏡選項一樣,enable 選項遵循相同的規則。

例如,若要從 10 秒到 3 分鐘啟用模糊濾鏡 (smartblur),以及從 3 秒開始啟用 curves 濾鏡

smartblur = enable='between(t,10,3*60)',
curves    = enable='gte(t,3)' : preset=cross_process

請參閱 ffmpeg -filters 以檢視哪些濾鏡具有時間軸支援。

6 在執行時使用指令變更選項

某些選項可以在濾鏡操作期間使用命令進行變更。這些選項在 ffmpeg -h filter=<濾鏡名稱> 的輸出中標記為「T」。命令的名稱是選項的名稱,參數是新值。

7 具有多個輸入的濾鏡選項 (framesync)

一些具有多個輸入的濾鏡支援一組通用選項。這些選項只能按名稱設定,而不能使用簡短符號。

eof_action

在輔助輸入上遇到 EOF 時要採取的動作;它接受以下值之一

repeat

重複最後一個影格(預設值)。

endall

結束兩個串流。

pass

傳遞主要輸入。

shortest

如果設定為 1,則強制輸出在最短的輸入終止時終止。預設值為 0。

repeatlast

如果設定為 1,則強制濾鏡擴展輔助串流的最後一個影格,直到主要串流結束。值 0 會停用此行為。預設值為 1。

ts_sync_mode

如何根據輔助輸入時間戳記嚴格同步串流;它接受以下值之一

default

來自輔助輸入的影格,其時間戳記最接近且小於或等於主要輸入影格。

nearest

來自輔助輸入的影格,其時間戳記最接近主要輸入影格的絕對時間戳記。

8 音訊濾鏡

當您配置 FFmpeg 組建時,可以使用 --disable-filters 停用任何現有濾鏡。配置輸出將顯示組建中包含的音訊濾鏡。

以下是目前可用的音訊濾鏡的描述。

8.1 aap

使用第二個音訊串流將仿射投影演算法應用於第一個音訊串流。

此自適應濾鏡用於根據多個輸入音訊樣本估計未知的音訊。仿射投影演算法可以在計算複雜度和收斂速度之間進行權衡。

以下是接受選項的描述。

order

設定濾鏡階數。

projection

設定投影階數。

mu

設定濾鏡 mu。

delta

設定係數以初始化內部共變異數矩陣。

out_mode

設定濾鏡輸出樣本。它接受以下值

i

傳遞第一個輸入。

d

傳遞第二個輸入。

o

傳遞期望訊號、第二個輸入和誤差訊號估計值之間的差異。

n

傳遞輸入訊號、第一個輸入和誤差訊號估計值之間的差異。

e

傳遞誤差訊號估計樣本。

預設值為 o

precision

設定處理樣本時要使用的精度。

auto

根據其他濾鏡自動選擇內部樣本格式。

float

始終使用單精度浮點精度樣本格式。

double

始終使用雙精度浮點精度樣本格式。

8.2 acompressor

壓縮器主要用於降低訊號的動態範圍。尤其是現代音樂,大多以高比率壓縮,以提高整體響度。這樣做是為了獲得聽眾的最大關注、「豐滿」聲音並為曲目帶來更多「力量」。如果訊號壓縮過多,則事後可能會聽起來沉悶或「死氣沉沉」,或者可能會開始「抽吸」(這可能是一種強大的效果,但也可能完全破壞曲目)。正確的壓縮是達到專業聲音的關鍵,並且是混音和母帶後期製作的高超藝術。由於其複雜的設定,可能需要很長時間才能對這種效果產生正確的感覺。

壓縮是透過偵測高於選定等級 threshold 的音量並將其除以使用 ratio 設定的因數來完成的。因此,如果您將臨界值設定為 -12dB,並且您的訊號達到 -6dB,則 2:1 的比率將導致訊號為 -9dB。由於精確地操縱訊號會導致波形失真,因此可以在時間內調整衰減。這是透過設定「Attack」和「Release」來完成的。attack 決定訊號必須在臨界值之上上升多長時間才會發生任何衰減,而 release 設定訊號必須在臨界值之下下降多長時間才能再次減少衰減。短於所選攻擊時間的訊號將保持原樣。訊號的整體衰減可以在事後使用 makeup 設定進行補償。因此,將訊號的峰值壓縮約 6dB 並將 makeup 提高到此等級會導致訊號比來源響亮兩倍。為了在壓縮中獲得更柔和的進入,knee 會在所選分貝範圍內的臨界值處展平硬邊緣。

濾鏡接受以下選項

level_in

設定輸入增益。預設值為 1。範圍介於 0.015625 和 64 之間。

mode

設定壓縮器操作模式。可以是 upwarddownward。預設值為 downward

threshold

如果串流的訊號上升到此等級以上,它將影響增益衰減。預設情況下為 0.125。範圍介於 0.00097563 和 1 之間。

ratio

設定訊號衰減的比率。1:2 表示如果等級上升到臨界值以上 4dB,則衰減後將僅高於 2dB。預設值為 2。範圍介於 1 和 20 之間。

attack

訊號必須在臨界值之上上升多少毫秒才能開始增益衰減。預設值為 20。範圍介於 0.01 和 2000 之間。

release

訊號必須在臨界值之下下降多少毫秒,衰減才會再次減少。預設值為 250。範圍介於 0.01 和 9000 之間。

makeup

設定訊號在處理後將被放大多少。預設值為 1。範圍介於 1 和 64 之間。

knee

彎曲臨界值周圍的尖銳轉折點,以更柔和地進入增益衰減。預設值為 2.82843。範圍介於 1 和 8 之間。

link

選擇輸入串流的所有聲道之間的 average 等級還是輸入串流的較響亮(maximum) 聲道影響衰減。預設值為 average

detection

peak 的情況下應採用精確訊號,還是在 rms 的情況下採用 RMS 訊號。預設值為 rms,這通常更平滑。

mix

在輸出中使用壓縮訊號的程度。預設值為 1。範圍介於 0 和 1 之間。

8.2.1 指令

此濾鏡支援以上所有選項作為 commands

8.3 acontrast

簡單的音訊動態範圍壓縮/擴展濾鏡。

濾鏡接受以下選項

contrast

設定對比度。預設值為 33。允許範圍介於 0 和 100 之間。

8.4 acopy

將輸入音訊來源不變地複製到輸出。這主要用於測試目的。

8.5 acrossfade

將淡入淡出效果從一個輸入音訊串流應用到另一個輸入音訊串流。淡入淡出效果在第一個串流的末尾附近應用指定的持續時間。

濾鏡接受以下選項

nb_samples, ns

指定淡入淡出效果必須持續的樣本數。在淡入淡出效果結束時,第一個輸入音訊將完全靜音。預設值為 44100。

duration, d

指定淡入淡出效果的持續時間。請參閱 (ffmpeg-utils)ffmpeg-utils(1) 手冊中的「時間持續時間」章節,以取得接受的語法。預設情況下,持續時間由 nb_samples 決定。如果設定了此選項,則會使用此選項而不是 nb_samples

overlap, o

第一個串流結束是否應與第二個串流開始重疊。預設為啟用。

curve1

設定第一個串流的淡入淡出轉換曲線。

curve2

設定第二個串流的淡入淡出轉換曲線。

如需可用曲線類型的描述,請參閱 afade 濾鏡描述。

8.5.1 範例

  • 從一個輸入淡入淡出到另一個輸入
    ffmpeg -i first.flac -i second.flac -filter_complex acrossfade=d=10:c1=exp:c2=exp output.flac
    
  • 從一個輸入淡入淡出到另一個輸入,但不重疊
    ffmpeg -i first.flac -i second.flac -filter_complex acrossfade=d=10:o=0:c1=exp:c2=exp output.flac
    

8.6 acrossover

將音訊串流分割成多個頻段。

此濾鏡將音訊串流分割成兩個或多個頻率範圍。將所有串流加總回來將產生平坦的輸出。

濾鏡接受以下選項

split

設定分割頻率。這些頻率必須為正數且遞增。

order

為每個頻段分割設定濾鏡階數。這會控制濾鏡滾降或濾鏡傳輸函數的陡峭度。可用值為

2nd

每八度音程 12 分貝。

4th

每八度音程 24 分貝。

6th

每八度音程 36 分貝。

8th

每八度音程 48 分貝。

10th

每八度音程 60 分貝。

12th

每八度音程 72 分貝。

14th

每八度音程 84 分貝。

16th

每八度音程 96 分貝。

18th

每八度音程 108 分貝。

20th

每八度音程 120 分貝。

預設值為 4th

level

設定輸入增益等級。允許範圍為 0 到 1。預設值為 1。

gains

設定每個頻段的輸出增益。所有頻段的預設值為 1。

precision

設定處理樣本時要使用的精度。

auto

根據其他濾鏡自動選擇內部樣本格式。

float

始終使用單精度浮點精度樣本格式。

double

始終使用雙精度浮點精度樣本格式。

預設值為 auto

8.6.1 範例

  • 將輸入音訊串流分割成兩個頻段(低頻和高頻),分割頻率為 1500 Hz,每個頻段將在單獨的串流中
    ffmpeg -i in.flac -filter_complex 'acrossover=split=1500[LOW][HIGH]' -map '[LOW]' low.wav -map '[HIGH]' high.wav
    
  • 與上述相同,但具有更高的濾鏡階數
    ffmpeg -i in.flac -filter_complex 'acrossover=split=1500:order=8th[LOW][HIGH]' -map '[LOW]' low.wav -map '[HIGH]' high.wav
    
  • 與上述相同,但也具有額外的中頻頻段(頻率介於 1500 和 8000 之間)
    ffmpeg -i in.flac -filter_complex 'acrossover=split=1500 8000:order=8th[LOW][MID][HIGH]' -map '[LOW]' low.wav -map '[MID]' mid.wav -map '[HIGH]' high.wav
    

8.7 acrusher

降低音訊位元解析度。

此濾鏡是具有增強功能的位元粉碎器。位元粉碎器用於以聽覺方式減少音訊訊號採樣的位元數。這根本不會改變位元深度,它只是產生效果。位元深度降低的素材聽起來更刺耳和「數位化」。此濾鏡甚至能夠捨入到連續值而不是離散位元深度。此外,它還具有 D/C 偏移,這會導致訊號的下半部分和上半部分以不同的方式粉碎。抗鋸齒設定能夠產生「更柔和」的粉碎聲音。

此濾鏡的另一個功能是對數模式。此設定從位元之間的線性距離切換到對數距離。結果是一個更「自然」的粉碎器,例如,它不會閘控低訊號。人耳具有對數感知,因此這種粉碎方式更令人愉悅。對數粉碎也能夠抗鋸齒。

濾鏡接受以下選項

level_in

設定輸入等級。

level_out

設定輸出等級。

bits

設定位元衰減。

mix

mix

mode

設定混合量。

mode

可以是線性:lin 或對數:log

dc

設定 DC。

aa

設定抗鋸齒。

samples

設定樣本衰減。

lfo

啟用 LFO。預設為停用。

lforange

設定 LFO 範圍。

8.7.1 指令

此濾鏡支援以上所有選項作為 commands

8.8 acue

lforate

8.9 adeclick

設定 LFO 速率。

延遲音訊濾鏡處理,直到給定的掛鐘時間戳記。請參閱 cue 濾鏡。

從輸入音訊中移除脈衝雜訊。

偵測為脈衝雜訊的樣本將被使用自迴歸建模的內插樣本取代。

overlap, o

window, w

設定視窗大小,以毫秒為單位。允許範圍為從 10100。預設值為 55 毫秒。這會設定將一次處理的視窗大小。

overlap, v

設定視窗重疊,以視窗大小的百分比表示。允許範圍為從 5095。預設值為 75%。將此設定為非常高的值會增加脈衝雜訊移除,但會使整個過程慢得多。

arorder, a

設定自迴歸階數,以視窗大小的百分比表示。允許範圍為從 025。預設值為 2%。此選項還使用相鄰的良好樣本來控制內插樣本的品質。

threshold, t

設定臨界值。允許範圍為從 1100。預設值為 2。這會控制將要移除的脈衝雜訊的強度。值越低,偵測為脈衝雜訊的樣本就越多。

burst, b

設定叢發融合,以視窗大小的百分比表示。允許範圍為 010。預設值為 2。如果偵測為雜訊的任何兩個樣本之間的間隔小於此值,則這兩個樣本之間的任何樣本也將被偵測為雜訊。

method, m

設定重疊方法。

它接受以下值

add, a

選取重疊相加方法。即使是未內插的樣本,使用此方法也會略有改變。

8.10 adeclip

save, s

選取重疊儲存方法。未內插的樣本保持不變。

從輸入音訊中移除脈衝雜訊。

偵測為脈衝雜訊的樣本將被使用自迴歸建模的內插樣本取代。

overlap, o

預設值為 a

設定視窗大小,以毫秒為單位。允許範圍為從 10100。預設值為 55 毫秒。這會設定將一次處理的視窗大小。

從輸入音訊中移除削波樣本。

設定視窗重疊,以視窗大小的百分比表示。允許範圍為從 5095。預設值為 75%。將此設定為非常高的值會增加脈衝雜訊移除,但會使整個過程慢得多。

偵測為削波的樣本將被使用自迴歸建模的內插樣本取代。

overlap, v

設定視窗重疊,以視窗大小的百分比表示。允許範圍為從 5095。預設值為 75%。

設定臨界值。允許範圍為從 1100。預設值為 2。這會控制將要移除的脈衝雜訊的強度。值越低,偵測為脈衝雜訊的樣本就越多。

burst, b

設定叢發融合,以視窗大小的百分比表示。允許範圍為 010。預設值為 2。如果偵測為雜訊的任何兩個樣本之間的間隔小於此值,則這兩個樣本之間的任何樣本也將被偵測為雜訊。

method, m

設定重疊方法。

它接受以下值

add, a

選取重疊相加方法。即使是未內插的樣本,使用此方法也會略有改變。

8.11 adecorrelate

arorder, a

濾鏡接受以下選項

設定自迴歸階數,以視窗大小的百分比表示。允許範圍為從 025。預設值為 8%。此選項還使用相鄰的良好樣本來控制內插樣本的品質。

threshold, t

設定臨界值。允許範圍為從 1100。預設值為 10。值越高,削波偵測的侵略性就越低。

hsize, n

8.12 adelay

設定用於偵測削波的直方圖大小。允許範圍為從 1009999。預設值為 1000。值越高,削波偵測的侵略性就越低。

將去相關性應用於輸入音訊串流。

stages

設定濾鏡處理的去相關性階段。允許範圍為從 1 到 16。預設值為 6。

seed

設定用於設定跨聲道樣本延遲的隨機種子。

延遲一個或多個音訊聲道。

8.12.1 範例

  • 延遲聲道中的樣本會以靜音填充。
    adelay=1500|0|500
    
  • 濾鏡接受以下選項
    adelay=0|500S|700S
    
  • delays
    adelay=delays=64S:all=1
    

8.13 adenorm

設定每個聲道的延遲列表,以「|」分隔,單位為毫秒。未使用的延遲將被靜默忽略。如果給定的延遲數小於聲道數,則所有剩餘的聲道將不會被延遲。如果您想要延遲精確的樣本數,請在數字後附加「S」。如果您想要改為以秒為單位延遲,請在數字後附加「s」。

all

將最後設定的延遲用於所有剩餘聲道。預設為停用。如果啟用此選項,則會變更選項 delays 的解讀方式。

level

將第一個聲道延遲 1.5 秒,將第三個聲道延遲 0.5 秒,並保持第二個聲道(和可能存在的任何其他聲道)不變。

將第二個聲道延遲 500 個樣本,將第三個聲道延遲 700 個樣本,並保持第一個聲道(和可能存在的任何其他聲道)不變。

將所有聲道延遲相同的樣本數

mode

透過新增極低等級的雜訊來補救音訊中的次常態數。

此濾鏡應放置在任何可能產生次常態數的濾鏡之前。

以下是接受參數的描述。

level

以 dB 為單位設定新增雜訊的等級。預設值為 -351。允許範圍為從 -451 到 -90。

type

設定新增雜訊的類型。

dc

8.13.1 指令

此濾鏡支援以上所有選項作為 commands

8.14 aderivative, aintegral

新增 DC 訊號。

ac

8.15 adrc

新增 AC 訊號。

以下是接受選項的描述。

square

新增方波訊號。

pulse

新增脈衝訊號。

預設值為 dc

計算音訊串流的導數/積分。

依序套用兩個濾鏡會產生原始音訊。

將頻譜動態範圍控制器濾鏡套用於輸入音訊串流。

transfer

設定傳輸表達式。

表達式可以包含以下常數

ch

目前聲道號碼

sn

目前樣本號碼

nb_channels

聲道數

t

attack

以秒為單位表示的時間戳記

release

sr

取樣率

p

8.15.1 指令

此濾鏡支援以上所有選項作為 commands

8.15.2 範例

  • 目前頻率功率值(以 dB 為單位)
    adrc=transfer='if(gt(p,-50),-50+(p-(-50))/6,p)':attack=50:release=100
    
  • f
    adrc=transfer='if(gt(p,-50),-50+(p-(-50))/2,p)':attack=50:release=100:channels=FC
    
  • 目前頻率(以 Hz 為單位)
    adrc=transfer='if(lte(p,-85),p-800,p)':attack=1:release=5
    
  • 預設值為 p
    adrc=transfer='if(lt(p,-10),-10+(p-(-10))*2,p)':attack=50:release=100
    
  • attack
    adrc=transfer='min(p,-60)':attack=2:release=10
    

8.16 adynamicequalizer

以毫秒為單位設定攻擊時間。預設值為 50 毫秒。允許範圍為從 1 到 1000 毫秒。

以下是接受選項的描述。

threshold

release

以毫秒為單位設定釋放時間。預設值為 100 毫秒。允許範圍為從 5 到 2000 毫秒。

channels

設定要濾鏡處理的聲道,預設情況下會濾鏡處理音訊串流中的 all 聲道。

將頻譜壓縮套用於所有頻率,臨界值為 -50 dB,比率為 1:6

與上述類似,但比率為 1:2,且僅濾鏡處理前置中央聲道

將頻譜雜訊閘套用於所有頻率,臨界值為 -85 dB,且具有短攻擊時間和短釋放時間

將頻譜擴展套用於所有頻率,臨界值為 -10 dB,比率為 1:2

將限制器套用於最大 -60 dB 的所有頻率,攻擊時間為 2 毫秒,釋放時間為 10 毫秒

attack

將動態等化套用於輸入音訊串流。

release

threshold

ratio

設定用於觸發等化的偵測臨界值。臨界值偵測使用偵測濾鏡。預設值為 0。允許範圍為從 0 到 100。

makeup

dfrequency

設定用於偵測濾鏡的偵測頻率(以 Hz 為單位),該偵測濾鏡用於觸發等化。預設值為 1000 Hz。允許範圍介於 2 和 1000000 Hz 之間。

dqfactor

mode

設定用於偵測濾鏡的偵測共振因數,該偵測濾鏡用於觸發等化。預設值為 1。允許範圍為從 0.001 到 1000。

tfrequency

設定等化濾鏡的目標頻率。預設值為 1000 Hz。允許範圍介於 2 和 1000000 Hz 之間。

tqfactor

設定目標等化濾鏡的目標共振因數。預設值為 1。允許範圍為從 0.001 到 1000。

attack

設定來自偵測的訊號必須在偵測臨界值之上上升多少毫秒,等化才會開始。預設值為 20。允許範圍介於 1 和 2000 之間。

release

設定來自偵測的訊號必須在偵測臨界值之下下降多少毫秒,等化才會結束。預設值為 200。允許範圍介於 1 和 2000 之間。

ratio

設定等化增益提升的比率。預設值為 1。允許範圍介於 0 和 30 之間。

makeup

設定等化增益提升的補償偏移。預設值為 0。允許範圍介於 0 和 100 之間。

range

設定允許的最大削減/提升量。預設值為 50。允許範圍為從 1 到 200。
mode
設定濾鏡操作模式,可以是以下之一
listen

僅輸出隔離的偵測訊號。

cutbelow

削減低於偵測臨界值的頻率。

cutabove
削減高於偵測臨界值的頻率。
boostbelow

提升低於偵測臨界值的頻率。

auto

boostabove

提升高於偵測臨界值的頻率。

預設模式為「cutbelow」。

dftype

設定偵測濾鏡的類型,可以是以下之一

bandpass

lowpass

highpass

peak

預設類型為「bandpass」。

precision

設定處理樣本時要使用的精度。

auto

根據其他濾鏡自動選擇內部樣本格式。

float

始終使用單精度浮點精度樣本格式。

double

始終使用雙精度浮點精度樣本格式。

8.16.1 指令

此濾鏡支援以上所有選項作為 commands

8.17 adynamicsmooth

tftype

以下是接受選項的描述。

設定目標濾鏡的類型,可以是以下之一

bell

lowshelf

highshelf

8.17.1 指令

此濾鏡支援以上所有選項作為 commands

8.18 aecho

預設類型為「bell」。

gather

將最後設定的延遲用於所有剩餘聲道。預設為停用。如果啟用此選項,則會變更選項 delays 的解讀方式。

自動從偵測濾鏡收集臨界值。預設為「disabled」。此選項可用於偵測輸入音訊串流特定時間範圍內的臨界值,在這種情況下,選項值會在執行時變更。

可用值為

disabled

停用使用自動收集的臨界值。

設定濾鏡處理的去相關性階段。允許範圍為從 1 到 16。預設值為 6。

off

停止選取臨界值。

on

8.18.1 範例

  • 開始選取臨界值。
    aecho=0.8:0.88:60:0.4
    
  • adaptive
    aecho=0.8:0.88:6:0.4
    
  • 透過計算滑動視窗熵自適應地選取臨界值。
    aecho=0.8:0.9:1000:0.3
    
  • 將動態平滑化套用於輸入音訊串流。
    aecho=0.8:0.9:1000|1800:0.3|0.25
    

8.19 aemphasis

sensitivity

濾鏡接受以下選項

level_in

設定對頻率波動的靈敏度量。預設值為 2。允許範圍為從 0 到 1e+06。

level_out

basefreq

mode

設定平滑化的基準頻率。預設值為 22050。允許範圍為從 2 到 1e+06。

將第二個聲道延遲 500 個樣本,將第三個聲道延遲 700 個樣本,並保持第一個聲道(和可能存在的任何其他聲道)不變。

將回音套用於輸入音訊。

回音是反射的聲音,自然會發生在山脈(有時是大型建築物)之間,當說話或喊叫時;數位回音效果模擬了此行為,並且經常被用於幫助填補單一樂器或人聲的聲音。原始訊號與反射訊號之間的時間差是 delay,反射訊號的響度是 decay。多個回音可以具有不同的延遲和衰減。

in_gain

設定反射訊號的輸入增益。預設值為 0.6

out_gain

設定反射訊號的輸出增益。預設值為 0.3

delays

設定原始訊號和反射之間的時間間隔列表,以「|」分隔,單位為毫秒。每個 delay 的允許範圍為 (0 - 90000.0]。預設值為 1000

decays

設定反射訊號的響度列表,以「|」分隔。每個 decay 的允許範圍為 (0 - 1.0]。預設值為 0.5

使其聽起來像是實際演奏的樂器數量是兩倍

如果延遲非常短,則聽起來像是機器人(金屬感)在演奏音樂

更長的延遲聽起來像是山區的露天音樂會

與上述相同,但多了一座山

音訊加重濾鏡會建立或還原直接取自 LP 或具有不同濾鏡曲線的加重 CD 的素材。例如,為了將音樂儲存在黑膠唱片上,必須先使用濾鏡改變訊號,以消除此錄音媒體的缺點。一旦播放素材,就必須套用反向濾鏡以還原頻率響應的失真。

in_gain

設定輸入增益。

out_gain

設定輸出增益。

8.19.1 指令

此濾鏡支援以上所有選項作為 commands

8.20 aeval

mode

此濾波器接受一個或多個表達式(每個聲道一個),這些表達式會被評估並用於修改對應的音訊訊號。

它接受以下參數

exprs

為每個獨立聲道設定以 ’|’ 分隔的表達式列表。如果輸入聲道數量大於表達式數量,則最後指定的表達式將用於剩餘的輸出聲道。

channel_layout, c

設定輸出聲道佈局。如果未指定,聲道佈局將由表達式的數量指定。如果設定為 ‘same’,預設將使用相同的輸入聲道佈局。

exprs 中的每個表達式都可以包含以下常數和函數

新增脈衝訊號。

目前表達式的聲道號碼

n

已評估樣本的編號,從 0 開始

s

目前聲道號碼

設定傳輸表達式。

以秒為單位的已評估樣本時間

nb_in_channels
nb_out_channels

輸入和輸出聲道數量

val(CH)

聲道號碼為 CH 的輸入聲道值

注意:此濾波器速度較慢。為了更快的處理速度,您應該使用專用濾波器。

8.20.1 範例

  • 音量減半
    aeval=val(ch)/2:c=same
    
  • 反轉第二聲道的相位
    aeval=val(0)|-val(1)
    

8.21 aexciter

激勵器用於產生原始訊號中不存在的高頻聲音。這是通過創建訊號的諧波失真來完成的,這些諧波失真範圍受限並添加到原始訊號中。激勵器提升音訊訊號的上限,而不是像等化器那樣簡單地提升高頻,以創造更「清脆」或「明亮」的聲音。

濾鏡接受以下選項

level_in

設定訊號處理前的輸入音量。允許範圍為 0 到 64。預設值為 1。

level_out

設定訊號處理後的輸出音量。允許範圍為 0 到 64。預設值為 1。

amount

設定添加到原始訊號的諧波量。允許範圍為 0 到 64。預設值為 1。

drive

設定新創建諧波的量。允許範圍為 0.1 到 10。預設值為 8.5。

blend

設定新創建諧波的八度音程。允許範圍為 -10 到 10。預設值為 0。

freq

設定產生諧波的最低頻率限制,單位為 Hz。允許範圍為 2000 到 12000 Hz。預設值為 7500 Hz。

ceil

設定產生諧波的最高頻率限制。允許範圍為 9999 到 20000 Hz。如果值低於 10000 Hz,則不應用限制。

listen

靜音原始訊號,僅輸出添加的諧波。預設為停用。

8.21.1 指令

此濾鏡支援以上所有選項作為 commands

8.22 afade

對輸入音訊應用淡入/淡出效果。

將最後設定的延遲用於所有剩餘聲道。預設為停用。如果啟用此選項,則會變更選項 delays 的解讀方式。

type, t

指定效果類型,可以是 in 表示淡入,或 out 表示淡出效果。預設值為 in

start_sample, ss

指定開始應用淡化效果的起始樣本編號。預設值為 0。

nb_samples, ns

指定淡化效果持續的樣本數量。在淡入效果結束時,輸出音訊的音量將與輸入音訊相同;在淡出效果結束時,輸出音訊將為靜音。預設值為 44100。

start_time, st

指定淡化效果的開始時間。預設值為 0。該值必須指定為時間長度;請參閱 (ffmpeg-utils)ffmpeg-utils(1) 手冊中的時間長度章節 以了解接受的語法。如果設定此選項,則會使用此選項而不是 start_sample

duration, d

指定淡化效果的持續時間。請參閱 (ffmpeg-utils)ffmpeg-utils(1) 手冊中的時間長度章節 以了解接受的語法。在淡入效果結束時,輸出音訊的音量將與輸入音訊相同;在淡出效果結束時,輸出音訊將為靜音。預設情況下,持續時間由 nb_samples 決定。如果設定此選項,則會使用此選項而不是 nb_samples

curve

設定淡化轉換的曲線。

設定叢發融合,以視窗大小的百分比表示。允許範圍為 010。預設值為 2。如果偵測為雜訊的任何兩個樣本之間的間隔小於此值,則這兩個樣本之間的任何樣本也將被偵測為雜訊。

tri

選擇三角形、線性斜率(預設)

qsin

選擇四分之一正弦波

hsin

選擇半個正弦波

esin

選擇指數正弦波

log

選擇對數

ipar

選擇倒拋物線

qua

選擇二次方

cub

選擇立方

squ

選擇平方根

cbr

選擇立方根

par

選擇拋物線

exp

選擇指數

iqsin

選擇倒四分之一正弦波

ihsin

選擇倒半個正弦波

dese

選擇雙指數座椅

desi

選擇雙指數 S 型曲線

losi

選擇邏輯 S 型曲線

sinc

選擇正弦基數函數

isinc

選擇倒正弦基數函數

quat

選擇四次方

quatr

選擇四次方根

qsin2

選擇平方四分之一正弦波

hsin2

選擇平方半個正弦波

nofade

不應用淡化

silence

設定淡入的初始增益或淡出的最終增益。預設值為 0.0

unity

設定淡出的初始增益或淡入的最終增益。預設值為 1.0

8.22.1 指令

此濾鏡支援以上所有選項作為 commands

8.22.2 範例

  • 音訊前 15 秒淡入
    afade=t=in:ss=0:d=15
    
  • 在 900 秒音訊的最後 25 秒淡出
    afade=t=out:st=875:d=25
    

8.23 afftdn

使用 FFT 對音訊樣本進行降噪。

將最後設定的延遲用於所有剩餘聲道。預設為停用。如果啟用此選項,則會變更選項 delays 的解讀方式。

noise_reduction, nr

設定降噪量,單位為 dB,允許範圍為 0.01 到 97。預設值為 12 dB。

noise_floor, nf

設定底噪,單位為 dB,允許範圍為 -80 到 -20。預設值為 -50 dB。

noise_type, nt

設定雜訊類型。

設定叢發融合,以視窗大小的百分比表示。允許範圍為 010。預設值為 2。如果偵測為雜訊的任何兩個樣本之間的間隔小於此值,則這兩個樣本之間的任何樣本也將被偵測為雜訊。

white, w

選擇白雜訊。

vinyl, v

選擇黑膠唱片雜訊。

shellac, s

選擇蟲膠唱片雜訊。

custom, c

選擇自訂雜訊,在 bn 選項中定義。

預設值為白雜訊。

band_noise, bn

為 15 個頻段中的每一個設定自訂頻段雜訊輪廓。頻段以 ’ ’ 或 ’|’ 分隔。

residual_floor, rf

設定殘餘底噪,單位為 dB,允許範圍為 -80 到 -20。預設值為 -38 dB。

track_noise, tn

啟用底噪追蹤。預設為停用。啟用後,底噪會自動調整。

track_residual, tr

啟用殘餘追蹤。預設為停用。

output_mode, om

設定輸出模式。

設定叢發融合,以視窗大小的百分比表示。允許範圍為 010。預設值為 2。如果偵測為雜訊的任何兩個樣本之間的間隔小於此值,則這兩個樣本之間的任何樣本也將被偵測為雜訊。

input, i

傳遞未更改的輸入。

output, o

傳遞濾除的雜訊。

noise, n

僅傳遞雜訊。

預設值為 output

adaptivity, ad

設定適應性因子,用於控制每個頻率箱中增益調整的適應速度。值 0 啟用即時適應,而較高的值反應速度較慢。允許範圍為 01。預設值為 0.5

floor_offset, fo

設定底噪偏移因子。此選項用於調整應用於測量底噪的偏移量。僅在啟用底噪追蹤時有效。允許範圍為 -2.02.0。預設值為 1.0

noise_link, nl

設定用於多聲道音訊的雜訊連結。

設定叢發融合,以視窗大小的百分比表示。允許範圍為 010。預設值為 2。如果偵測為雜訊的任何兩個樣本之間的間隔小於此值,則這兩個樣本之間的任何樣本也將被偵測為雜訊。

none

使用未更改聲道的底噪。

min

使用所有聲道測量的最小底噪。

max

使用所有聲道測量的最大底噪。

average

使用所有聲道測量的平均底噪。

預設值為 min

band_multiplier, bm

設定頻段乘數因子,用於控制頻段在頻率箱中擴散的程度。允許範圍為 0.25。預設值為 1.25

sample_noise, sn

切換從輸入音訊捕獲和測量雜訊輪廓。

設定叢發融合,以視窗大小的百分比表示。允許範圍為 010。預設值為 2。如果偵測為雜訊的任何兩個樣本之間的間隔小於此值,則這兩個樣本之間的任何樣本也將被偵測為雜訊。

start, begin

開始樣本雜訊捕獲。

stop, end

停止樣本雜訊捕獲並測量新的雜訊頻段輪廓。

預設值為 none

gain_smooth, gs

設定增益平滑空間半徑,用於平滑應用於每個頻率箱的增益。有助於減少隨機音樂雜訊偽影。值越高,增益平滑度越高。允許範圍為 050。預設值為 0

8.23.1 指令

此濾波器支援一些上述選項作為 指令

8.23.2 範例

  • 將白雜訊降低 10dB,並使用先前測量的 -40dB 底噪
    afftdn=nr=10:nf=-40
    
  • 將白雜訊降低 10dB,同時將初始底噪設定為 -80dB,並啟用底噪自動追蹤,以便底噪在處理過程中逐漸變化
    afftdn=nr=10:nf=-80:tn=1
    
  • 將雜訊降低 20dB,使用 -40dB 的底噪,並使用指令擷取輸入音訊前 0.4 秒的雜訊輪廓
    asendcmd=0.0 afftdn sn start,asendcmd=0.4 afftdn sn stop,afftdn=nr=20:nf=-40
    

8.24 afftfilt

對頻域中的樣本應用任意表達式。

real

為每個獨立聲道設定以 ’|’ 分隔的頻域實數表達式。預設值為 "re"。如果輸入聲道數量大於表達式數量,則最後指定的表達式將用於剩餘的輸出聲道。

imag

為每個獨立聲道設定以 ’|’ 分隔的頻域虛數表達式。預設值為 "im"。

realimag 中的每個表達式都可以包含以下常數和函數

ch

目前聲道號碼

b

目前的頻率箱編號

nb

可用箱的數量

新增脈衝訊號。

目前表達式的聲道號碼

chs

transfer

pts

目前幀 PTS

re

目前聲道頻率箱的實部

im

目前聲道頻率箱的虛部

real(b, ch)

傳回位置 (bin,channel) 處頻率箱實部的值

imag(b, ch)

傳回位置 (bin,channel) 處頻率箱虛部的值

win_size

設定視窗大小。允許範圍為 16 到 131072。預設值為 4096

win_func

設定視窗函數。

設定叢發融合,以視窗大小的百分比表示。允許範圍為 010。預設值為 2。如果偵測為雜訊的任何兩個樣本之間的間隔小於此值,則這兩個樣本之間的任何樣本也將被偵測為雜訊。

rect
bartlett
hann, hanning
hamming
blackman
welch
flattop
bharris
bnuttall
bhann
sine
nuttall
lanczos
gauss
tukey
dolph
cauchy
parzen
poisson
bohman
kaiser

預設值為 hann

overlap

設定視窗重疊。如果設定為 1,將選取所選視窗函數的建議重疊。預設值為 0.75

8.24.1 範例

  • 幾乎只留下音訊中的低頻
    afftfilt="'real=re * (1-clip((b/nb)*b,0,1))':imag='im * (1-clip((b/nb)*b,0,1))'"
    
  • 應用機器人效果
    afftfilt="real='hypot(re,im)*sin(0)':imag='hypot(re,im)*cos(0)':win_size=512:overlap=0.75"
    
  • 應用耳語效果
    afftfilt="real='hypot(re,im)*cos((random(0)*2-1)*2*3.14)':imag='hypot(re,im)*sin((random(1)*2-1)*2*3.14)':win_size=128:overlap=0.8"
    
  • 應用相位偏移
    afftfilt="real=re*cos(1)-im*sin(1):imag=re*sin(1)+im*cos(1)"
    

8.25 afir

應用任意有限脈衝響應濾波器。

此濾波器專為應用長 FIR 濾波器而設計,最長可達 60 秒。

它可用作數位分頻濾波器、房間等化、串音消除、波場合成、聽覺化、環境聲學和空間化的組件。

此濾波器使用第一個串流以外的串流作為 FIR 係數。如果非第一個串流包含單聲道,它將用於第一個串流中的所有輸入聲道,否則非第一個串流中的聲道數量必須與第一個串流中的聲道數量相同。

它接受以下參數

dry

設定乾聲增益。這會設定輸入增益。

wet

設定濕聲增益。這會設定最終輸出增益。

length

設定脈衝響應濾波器長度。預設值為 1,表示處理整個 IR。

gtype

此選項已棄用,且無作用。

irnorm

設定在濾波前應用於 IR 係數的範數。允許範圍為 -12。IR 係數會使用此選項設定的計算向量範數進行正規化。對於負值,不會計算範數,且 IR 係數完全不會被修改。預設值為 1

irlink

對於多聲道 IR,如果此選項設定為 true,則所有 IR 聲道將使用所有 IR 聲道係數的最大測量增益進行正規化,如 irnorm 選項所設定。停用時,每個 IR 聲道中的所有 IR 係數將獨立正規化。預設值為 true

irgain

設定在濾波前應用於 IR 係數的增益。允許範圍為 0 到 1。此增益在應用任何使用 irnorm 選項應用的增益之後應用。

irfmt

設定 IR 串流的格式。可以是 monoinput。預設值為 input

maxir

設定允許的最大脈衝響應濾波器持續時間,單位為秒。預設值為 30 秒。允許範圍為 0.1 到 60 秒。

response

此選項已棄用,且無作用。

channel

此選項已棄用,且無作用。

size

此選項已棄用,且無作用。

rate

此選項已棄用,且無作用。

minp

設定用於卷積的最小分割區大小。預設值為 8192。允許範圍為 165536。較低的值會降低延遲,但會增加 CPU 使用率。

maxp

設定用於卷積的最大分割區大小。預設值為 8192。允許範圍為 865536。較低的值可能會增加 CPU 使用率。

nbirs

設定在執行階段可切換的輸入脈衝響應串流數量。允許範圍為 132。預設值為 1

ir

設定將用於卷積的 IR 串流,從 0 開始,應始終低於 nbirs 選項提供的數值。預設值為 0。此選項可以在執行階段通過 指令 更改。

precision

設定處理樣本時要使用的精度。

auto

根據其他濾鏡自動選擇內部樣本格式。

float

始終使用單精度浮點精度樣本格式。

double

始終使用雙精度浮點精度樣本格式。

預設值為 auto。

irload

設定何時載入 IR 串流。可以是 initaccess。第一個在初始化時載入並準備所有 IR,第二個在首次存取特定 IR 時載入並準備。預設值為 init

8.25.1 範例

  • 使用單聲道 IR 檔案作為第二個輸入,將殘響應用於串流,使用 ffmpeg 完成指令
    ffmpeg -i input.wav -i middle_tunnel_1way_mono.wav -lavfi afir output.wav
    
  • 對於給定的輸入立體聲串流,以及左右聲道的兩個立體聲脈衝響應,應用真正的立體聲處理,脈衝響應檔案是名為 l_ir.wav 和 r_ir.wav 的檔案,並設定 irnorm 選項值
    "pan=4C|c0=FL|c1=FL|c2=FR|c3=FR[a];amovie=l_ir.wav[LIR];amovie=r_ir.wav[RIR];[LIR][RIR]amerge[ir];[a][ir]afir=irfmt=input:irnorm=1.2,pan=stereo|FL<c0+c2|FR<c1+c3"
    
  • 與上述範例類似,但明確設定 irgain 為估計值,並停用 irnorm
    "pan=4C|c0=FL|c1=FL|c2=FR|c3=FR[a];amovie=l_ir.wav[LIR];amovie=r_ir.wav[RIR];[LIR][RIR]amerge[ir];[a][ir]afir=irfmt=input:irgain=-5dB:irnom=-1,pan=stereo|FL<c0+c2|FR<c1+c3"
    

8.26 aformat

為輸入音訊設定輸出格式約束。框架將協商最合適的格式以最大程度地減少轉換。

它接受以下參數

sample_fmts, f

以 ’|’ 分隔的請求樣本格式列表。

sample_rates, r

以 ’|’ 分隔的請求取樣率列表。

channel_layouts, cl

以 ’|’ 分隔的請求聲道佈局列表。

請參閱 (ffmpeg-utils)ffmpeg-utils(1) 手冊中的聲道佈局章節 以了解所需的語法。

如果省略參數,則允許所有值。

強制輸出為無符號 8 位元或有符號 16 位元立體聲

aformat=sample_fmts=u8|s16:channel_layouts=stereo

8.27 afreqshift

對輸入音訊樣本應用頻率偏移。

濾鏡接受以下選項

shift

指定頻率偏移。允許範圍為 -INT_MAX 到 INT_MAX。預設值為 0.0。

level

設定應用於最終輸出的輸出增益。允許範圍為 0.0 到 1.0。預設值為 1.0。

order

設定用於濾波的濾波器階數。允許範圍為 1 到 16。預設值為 8。

8.27.1 指令

此濾鏡支援以上所有選項作為 commands

8.28 afwtdn

使用小波減少輸入樣本中的寬頻雜訊。

以下是接受選項的描述。

sigma

設定雜訊西格瑪值,允許範圍為 0 到 1。預設值為 0。此選項控制應用於輸入樣本的降噪強度。設定此選項最有效的方法是通過分貝,例如 -45dB。

levels

設定小波分解的層級數。允許範圍為 1 到 12。預設值為 10。設定過低會使降噪效能非常差。

wavet

設定輸入幀分解的小波類型。它們按係數數量排序,從最低到最高。係數越多,濾波速度越慢,但整體品質越好。可用的 wavelet 為

sym2
sym4
rbior68
deb10
sym10
coif5
bl3
percent

設定完全降噪的百分比。允許範圍為 0 到 100%。預設值為 85%,即部分降噪。

profile

如果啟用,則第一個輸入幀將用作雜訊輪廓。如果第一個幀樣本包含非雜訊,效能將非常差。

adaptive

如果啟用,則會分析輸入幀是否存在雜訊。如果偵測到高機率雜訊,則輸入幀輪廓將用於處理後續幀,直到偵測到新的雜訊幀。

aa

設定單個幀的大小,以樣本數量為單位。允許範圍為 512 到 65536。預設幀大小為 8192 個樣本。

softness

設定在閾值函數內部應用的柔度。允許範圍為 0 到 10。預設柔度為 1。

8.28.1 指令

此濾鏡支援以上所有選項作為 commands

8.29 agate

閘門主要用於減少訊號的較低部分。這種訊號處理減少了有用訊號之間的干擾雜訊。

閘控是通過偵測低於選定水平 threshold 的音量,並將其除以 ratio 設定的因子來完成的。底噪的下限通過 range 設定。由於對訊號的精確操作會導致波形失真,因此可以在一段時間內調整減少量。這是通過設定 attackrelease 來完成的。

attack 決定訊號必須低於閾值多久才會發生任何減少,而 release 設定訊號必須高於閾值多久才能再次減少減少量。短於選定啟動時間的訊號將保持不變。

level_in

設定濾波前的輸入音量。預設值為 1。允許範圍為 0.015625 到 64。

mode

設定操作模式。可以是 upwarddownward。預設值為 downward。如果設定為 upward 模式,則訊號的較高部分將被放大,向上擴展動態範圍。否則,在 downward 模式下,訊號的較低部分將被減少。

設定用於偵測濾鏡的偵測頻率(以 Hz 為單位),該偵測濾鏡用於觸發等化。預設值為 1000 Hz。允許範圍介於 2 和 1000000 Hz 之間。

設定訊號低於閾值時的增益減少量。預設值為 0.06125。允許範圍為 0 到 1。將其設定為 0 會停用減少,然後濾波器的行為類似於擴展器。

threshold

如果訊號上升到此水平以上,則會釋放增益減少。預設值為 0.125。允許範圍為 0 到 1。

ratio

設定訊號減少的比率。預設值為 2。允許範圍為 1 到 9000。

attack

訊號必須高於閾值多少毫秒才能停止增益減少。預設值為 20 毫秒。允許範圍為 0.01 到 9000。

release

訊號必須低於閾值多少毫秒才能再次增加減少量。預設值為 250 毫秒。允許範圍為 0.01 到 9000。

makeup

設定處理後訊號的放大倍數。預設值為 1。允許範圍為 1 到 64。

knee

使閾值周圍的尖銳轉折變彎曲,以更柔和地進入增益減少。預設值為 2.828427125。允許範圍為 1 到 8。

detection

選擇是應使用精確訊號進行偵測還是類似 RMS 的訊號。預設值為 rms。可以是 peakrms

link

選擇是所有聲道之間的平均水平還是較響亮的聲道影響減少量。預設值為 average。可以是 averagemaximum

8.29.1 指令

此濾鏡支援以上所有選項作為 commands

8.30 aiir

應用任意無限脈衝響應濾波器。

它接受以下參數

zeros, z

設定 B/分子/零點/反射係數。

poles, p

設定 A/分母/極點/梯形係數。

gains, k

設定聲道增益。

dry_gain

設定對頻率波動的靈敏度量。預設值為 2。允許範圍為從 0 到 1e+06。

wet_gain

basefreq

format, f

設定係數格式。

ll

晶格-梯形函數

sf

類比傳遞函數

tf

數位傳遞函數

zp

Z 平面零點/極點,笛卡爾座標(預設)

pr

Z 平面零點/極點,極座標弧度

pd

Z 平面零點/極點,極座標角度

sp

S 平面零點/極點

process, r

設定處理類型。

d

直接處理

s

串列處理

p

並行處理

precision, e

設定濾波精度。

dbl

雙精度浮點數(預設)

flt

單精度浮點數

i32

32 位元整數

i16

16 位元整數

normalize, n

正規化濾波器係數,預設為啟用。啟用後,它將在 DC 將幅度響應正規化為 0dB。

mix

輸出中使用濾波訊號的量。預設值為 1。範圍介於 0 和 1 之間。

response

在額外的視訊串流中顯示 IR 頻率響應、幅度(洋紅色)、相位(綠色)和群組延遲(黃色)。預設為停用。

channel

設定要顯示頻率響應的 IR 聲道。預設為顯示第一個聲道。此選項僅在啟用 response 時使用。

size

設定視訊串流大小。此選項僅在啟用 response 時使用。

tfsf 格式的係數以空格分隔,並按升序排列。

zp 格式的係數以空格分隔,係數順序無關緊要。zp 格式的係數是具有 i 虛數單位的複數。

可以為每個聲道提供不同的係數和增益,在這種情況下,請使用 ’|’ 分隔係數或增益。最後提供的係數將用於所有剩餘聲道。

8.30.1 範例

  • 在 48000 Hz 取樣率下,對大約 5000Hz 的位置應用 2 極橢圓陷波
    aiir=k=1:z=7.957584807809675810E-1 -2.575128568908332300 3.674839853930788710 -2.57512875289799137 7.957586296317130880E-1:p=1 -2.86950072432325953 3.63022088054647218 -2.28075678147272232 6.361362326477423500E-1:f=tf:r=d
    
  • 與上述相同,但在 zp 格式中
    aiir=k=0.79575848078096756:z=0.80918701+0.58773007i 0.80918701-0.58773007i 0.80884700+0.58784055i 0.80884700-0.58784055i:p=0.63892345+0.59951235i 0.63892345-0.59951235i 0.79582691+0.44198673i 0.79582691-0.44198673i:f=zp:r=s
    
  • 使用類比傳遞函數格式應用 3 階類比正規化巴特沃斯低通濾波器
    aiir=z=1.3057 0 0 0:p=1.3057 2.3892 2.1860 1:f=sf:r=d
    

8.31 alimiter

限制器可防止輸入訊號上升超過所需的閾值。此限制器使用前瞻技術來防止訊號失真。這表示在處理訊號後會有一個小的延遲。請記住,它產生的延遲是您設定的啟動時間。

濾鏡接受以下選項

level_in

設定輸入增益。預設值為 1。

level_out

設定輸出增益。預設值為 1。

limit

不要讓高於此水平的訊號通過限制器。預設值為 1。

attack

限制器將在此毫秒數內達到其衰減水平。預設值為 5 毫秒。

release

在此毫秒數內從限制恢復到 1.0 衰減。預設值為 50 毫秒。

asc

當始終需要增益減少時,ASC 會負責釋放到平均減少水平,而不是在釋放時間內達到 0 的減少量。

asc_level

選擇釋放時間受 ASC 影響的程度,0 表示釋放時間幾乎沒有變化,而 1 則產生較長的釋放時間。

level

自動調整輸出訊號的音量。預設為啟用。如果啟用此選項,則會將音訊正規化回 0dB。

latency

補償使用啟動參數設定的前瞻緩衝區引入的延遲。當串流達到 EOF 時,也會刷新前瞻緩衝區中的有效音訊資料。

根據選擇的設定,建議在使用此濾波器之前使用 aresample 將輸入升採樣 2 倍或 4 倍。

8.32 allpass

應用一個二階全通濾波器,其中心頻率(單位為 Hz)為 frequency,濾波器寬度為 width。全通濾波器會更改音訊的頻率與相位關係,而不會更改其頻率與幅度關係。

濾鏡接受以下選項

frequency, f

設定頻率,單位為 Hz。

width_type, t

設定指定濾波器頻寬的方法。

h

Hz

q

Q 因子

o

octave

s

斜率

k

kHz

width, w

以 width_type 單位指定濾波器的頻寬。

mix, m

輸出中使用濾波訊號的量。預設值為 1。範圍介於 0 和 1 之間。

channels, c

指定要濾波的聲道,預設情況下會濾波所有可用聲道。

normalize, n

正規化雙二階係數,預設為停用。啟用後,它將在 DC 將幅度響應正規化為 0dB。

order, o

設定濾波器階數,可以是 1 或 2。預設值為 2。

transform, a

設定 IIR 濾波器的轉換類型。

di
dii
tdi
tdii
latt
svf
zdf
precision, r

設定濾波精度。

auto

根據環繞濾波器選擇自動樣本格式。

s16

始終使用有符號 16 位元。

s32

始終使用有符號 32 位元。

f32

始終使用浮點 32 位元。

f64

始終使用浮點 64 位元。

8.32.1 指令

此濾波器支援以下指令

frequency, f

變更全通頻率。指令的語法為:「frequency

width_type, t

變更全通 width_type。指令的語法為:「width_type

width, w

變更全通寬度。指令的語法為:「width

mix, m

變更全通混合。指令的語法為:「mix

8.33 aloop

循環音訊樣本。

濾鏡接受以下選項

loop

設定循環次數。將此值設定為 -1 將導致無限循環。預設值為 0。

size

設定最大樣本數。預設值為 0。

start

設定循環的第一個樣本。預設值為 0。

time

以秒為單位設定循環開始時間。僅在名為 start 的選項設定為 -1 時使用。

8.34 amerge

將兩個或多個音訊串流合併為單個多聲道串流。

濾鏡接受以下選項

inputs

設定輸入數量。預設值為 2。

如果輸入的聲道佈局是不相交的,因此是相容的,則輸出的聲道佈局將相應地設定,並且聲道將根據需要重新排序。如果輸入的聲道佈局不是不相交的,則輸出將包含第一個輸入的所有聲道,然後是第二個輸入的所有聲道,依此順序,並且輸出的聲道佈局將是與聲道總數相對應的預設值。

例如,如果第一個輸入為 2.1 (FL+FR+LF),第二個輸入為 FC+BL+BR,則輸出將為 5.1,聲道順序如下:a1、a2、b1、a3、b2、b3(a1 是第一個輸入的第一個聲道,b1 是第二個輸入的第一個聲道)。

另一方面,如果兩個輸入都是立體聲,則輸出聲道將按預設順序排列:a1、a2、b1、b2,並且聲道佈局將任意設定為 4.0,這可能是也可能不是預期的值。

所有輸入都必須具有相同的取樣率和格式。

如果輸入的持續時間不同,則輸出將在最短的輸入結束時停止。

8.34.1 範例

  • 將兩個單聲道檔案合併為立體聲串流
    amovie=left.wav [l] ; amovie=right.mp3 [r] ; [l] [r] amerge
    
  • 假設 input.mkv 中有 1 個視訊串流和 6 個音訊串流的多個合併
    ffmpeg -i input.mkv -filter_complex "[0:1][0:2][0:3][0:4][0:5][0:6] amerge=inputs=6" -c:a pcm_s16le output.mkv
    

8.35 amix

將多個音訊輸入混合到單個輸出中。

請注意,此濾波器僅支援浮點樣本(amergepan 音訊濾波器支援多種格式)。如果 amix 輸入具有整數樣本,則會自動插入 aresample 以執行到浮點樣本的轉換。

它接受以下參數

inputs

輸入的數量。如果未指定,則預設為 2。

duration

如何確定串流結束。

longest

最長輸入的持續時間。(預設)

shortest

shortest

最短輸入的持續時間。

first

第一個輸入的持續時間。

dropout_transition

當輸入串流結束時,用於音量重新正規化的過渡時間,單位為秒。預設值為 2 秒。

weights

將每個輸入音訊串流的權重指定為以空格分隔的數字序列。如果指定的權重少於輸入數量,則最後一個權重將分配給剩餘的輸入。每個輸入的預設權重為 1。

normalize

8.35.1 範例

  • 始終縮放輸入,而不是僅對樣本求和。如果此選項停用,且輸入在通過此濾波器濾波之前或之後未正規化,請注意嚴重的削波。預設為啟用。
    ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex amix=inputs=3:duration=first:dropout_transition=3 OUTPUT
    
  • 這會將 3 個輸入音訊串流混合到單個輸出,其持續時間與第一個輸入相同,且丟失過渡時間為 3 秒
    ffmpeg -i VOCALS -i MUSIC -filter_complex amix=inputs=2:duration=longest:dropout_transition=0:weights="1 0.25":normalize=0 OUTPUT
    

8.35.2 指令

此濾波器支援以下指令

當輸入串流結束時,用於音量重新正規化的過渡時間,單位為秒。預設值為 2 秒。
將每個輸入音訊串流的權重指定為以空格分隔的數字序列。如果指定的權重少於輸入數量,則最後一個權重將分配給剩餘的輸入。每個輸入的預設權重為 1。

這會將一個人聲輸入和一個音樂輸入音訊串流混合到單個輸出,其持續時間與最長輸入相同。音樂的權重將為人聲的四分之一,並且輸入未正規化

8.36 amultiply

語法與同名選項相同。

將第一個音訊串流與第二個音訊串流相乘,並將結果儲存在輸出音訊串流中。乘法是通過將第一個串流中的每個樣本與第二個串流中相同位置的樣本相乘來完成的。

8.37 anequalizer

通過此元素級乘法,可以創建幅度淡化和幅度調變。

它接受以下參數

用於每個聲道的高階參數多頻段等化器。

params

此選項字串的格式為:「cchn f=cf w=w g=g t=f | ...」。每個等化器頻段都以 ’|’ 分隔。

chn

nb_channels

設定將應用等化的聲道號碼。如果輸入沒有該聲道,則忽略該條目。

f

設定頻段的中心頻率。如果輸入沒有該頻率,則忽略該條目。

w

以赫茲為單位設定頻寬。

設定傳輸表達式。

g

以 dB 為單位設定頻段增益。

t

設定頻段的濾波器類型,可選,可以是

0

巴特沃斯,這是預設值。

1

切比雪夫類型 1。

2

size

切比雪夫類型 2。

curves

啟用此選項後,將在視訊串流中顯示等化器的頻率響應。

size

設定視訊串流大小。僅在啟用 curves 選項時有用。

mgain

設定將顯示的最大增益。僅在啟用 curves 選項時有用。將其設定為合理的值可以顯示從彼此太近的相鄰頻段導出的增益,因此在兩個頻段都啟用時會產生更高的增益。

8.37.1 範例

  • fscale
    anequalizer=c0 f=200 w=100 g=-10 t=1|c1 f=200 w=100 g=-10 t=1
    

8.37.2 指令

此濾波器支援以下指令

設定用於在視訊輸出中繪製頻率響應的頻率刻度。可以是線性或對數。預設值為對數。

colors

設定將在視訊串流中顯示的每個聲道曲線的顏色。這是以空格或 ’|’ 分隔的顏色名稱列表。無法識別或遺失的顏色將替換為白色。

使用切比雪夫類型 1 濾波器,將前 2 個聲道的中心頻率 200Hz 和寬度 100 Hz 的增益降低 10

8.38 anlmdn

change

變更現有的濾波器參數。指令的語法為:「fN|f=freq|w=width|g=gain

濾鏡接受以下選項

fN 是現有的濾波器編號,從 0 開始,如果沒有此類濾波器可用,則會傳回錯誤。freq 設定新的頻率參數。width 以赫茲為單位設定新的寬度參數。gain 以 dB 為單位設定新的增益參數。

使用 asendcmd 的完整濾波器調用可能如下所示:asendcmd=c=’4.0 anequalizer change 0|f=200|w=50|g=1’,anequalizer=...

使用非局部均值演算法減少音訊樣本中的寬頻雜訊。

每個樣本都會通過尋找具有相似上下文的其他樣本來進行調整。此上下文相似性是通過比較大小為 p 的周圍色塊來定義的。色塊在樣本周圍 r 的區域中搜尋。

strength, s

設定降噪強度。允許範圍為 0.00001 到 10000。預設值為 0.00001。

output, o

設定輸出模式。

設定叢發融合,以視窗大小的百分比表示。允許範圍為 010。預設值為 2。如果偵測為雜訊的任何兩個樣本之間的間隔小於此值,則這兩個樣本之間的任何樣本也將被偵測為雜訊。

i

傳遞未更改的輸入。

o

傳遞濾除的雜訊。

n

僅傳遞雜訊。

預設值為 o

patch, p

設定色塊半徑持續時間。允許範圍為 1 到 100 毫秒。預設值為 2 毫秒。

8.38.1 指令

此濾鏡支援以上所有選項作為 commands

8.39 anlmf, anlms

research, r

設定搜尋半徑持續時間。允許範圍為 2 到 300 毫秒。預設值為 6 毫秒。

以下是接受選項的描述。

order

smooth, m

mu

設定平滑因子。預設值為 11。允許範圍為 11000

將正規化最小均方(NLMS)或正規化最小均四方(NLMS4)演算法應用於第一個音訊串流,並使用第二個音訊串流。

此自適應濾波器用於模擬所需的濾波器,方法是尋找與產生誤差訊號(所需訊號,第二個輸入音訊串流與實際訊號,第一個輸入音訊串流之間的差異)的最小均方值相關的濾波器係數。

order

設定濾波器階數。

out_mode

設定叢發融合,以視窗大小的百分比表示。允許範圍為 010。預設值為 2。如果偵測為雜訊的任何兩個樣本之間的間隔小於此值,則這兩個樣本之間的任何樣本也將被偵測為雜訊。

i

傳遞第一個輸入。

d

傳遞第二個輸入。

o

傳遞期望訊號、第二個輸入和誤差訊號估計值之間的差異。

n

傳遞輸入訊號、第一個輸入和誤差訊號估計值之間的差異。

e

傳遞誤差訊號估計樣本。

預設值為 o

precision

設定處理樣本時要使用的精度。

auto

根據其他濾鏡自動選擇內部樣本格式。

float

始終使用單精度浮點精度樣本格式。

double

始終使用雙精度浮點精度樣本格式。

8.39.1 範例

  • mu
    asplit[a][b],[a]adelay=32S|32S[a],[b][a]anlms=order=128:leakage=0.0005:mu=.5:out_mode=o
    

8.39.2 指令

設定濾波器 mu。

8.40 anull

eps

8.41 apad

設定濾波器 eps。

leakage

以下是接受選項的描述。

設定濾波器洩漏。

此濾波器的許多用途之一是降噪,輸入音訊使用延遲固定量的相同樣本進行濾波,立體聲音訊的一個範例如下

此濾波器支援與選項相同的指令,但不包括選項 order

將音訊來源未經更改地傳遞到輸出。

在音訊串流的末尾填充靜音。

這可以與 ffmpeg -shortest 一起使用,以將音訊串流擴展到與視訊串流相同的長度。

packet_size

設定靜音封包大小。預設值為 4096。

pad_len

設定要添加到末尾的靜音樣本數。達到該值後,串流將終止。此選項與 whole_len 互斥。

whole_len

設定輸出音訊串流中的最小樣本總數。如果該值大於輸入音訊長度,則會在末尾添加靜音,直到達到該值。此選項與 pad_len 互斥。

8.41.1 範例

  • pad_dur
    apad=pad_len=1024
    
  • 指定要添加的靜音樣本的持續時間。請參閱 (ffmpeg-utils)ffmpeg-utils(1) 手冊中的時間長度章節 以了解接受的語法。僅在設定為非負值時使用。
    apad=whole_len=10000
    
  • whole_dur
    ffmpeg -i VIDEO -i AUDIO -filter_complex "[1:0]apad" -shortest OUTPUT
    

8.42 aphaser

指定輸出音訊串流中的最小總持續時間。請參閱 (ffmpeg-utils)ffmpeg-utils(1) 手冊中的時間長度章節 以了解接受的語法。僅在設定為非負值時使用。如果該值大於輸入音訊長度,則會在末尾添加靜音,直到達到該值。此選項與 pad_dur 互斥

如果未設定 pad_lenwhole_lenpad_durwhole_dur 選項,則濾波器將無限期地在輸入串流的末尾添加靜音。

將最後設定的延遲用於所有剩餘聲道。預設為停用。如果啟用此選項,則會變更選項 delays 的解讀方式。

自動從偵測濾鏡收集臨界值。預設為「disabled」。此選項可用於偵測輸入音訊串流特定時間範圍內的臨界值,在這種情況下,選項值會在執行時變更。

請注意,對於 ffmpeg 4.4 及更早版本,零 pad_durwhole_dur 也會導致濾波器無限期地添加靜音。

disabled

在輸入末尾添加 1024 個靜音樣本

確保音訊輸出將至少包含 10000 個樣本,如果需要,則在輸入中填充靜音

使用 ffmpeg 在音訊輸入中填充靜音,以便在使用 shortest 選項時,視訊串流始終是最短的,並且將轉換到輸出檔案的末尾

向輸入音訊添加相位效果。

相位器濾波器在頻譜中創建一系列峰值和波谷。峰值和波谷的位置會被調變,使其隨時間變化,從而產生掃描效果。

設定輸入增益。預設值為 0.4。

設定輸出增益。預設值為 0.74

將第二個聲道延遲 500 個樣本,將第三個聲道延遲 700 個樣本,並保持第一個聲道(和可能存在的任何其他聲道)不變。

delay

設定叢發融合,以視窗大小的百分比表示。允許範圍為 010。預設值為 2。如果偵測為雜訊的任何兩個樣本之間的間隔小於此值,則這兩個樣本之間的任何樣本也將被偵測為雜訊。

設定延遲,單位為毫秒。預設值為 3.0。
decay

8.43 aphaseshift

設定衰減。預設值為 0.4。

濾鏡接受以下選項

shift

speed

level

設定應用於最終輸出的輸出增益。允許範圍為 0.0 到 1.0。預設值為 1.0。

order

設定用於濾波的濾波器階數。允許範圍為 1 到 16。預設值為 8。

8.43.1 指令

此濾鏡支援以上所有選項作為 commands

8.44 apsnr

設定調變速度,單位為 Hz。預設值為 0.5。

depth

8.45 apsyclip

設定調變類型。預設值為三角形。

濾鏡接受以下選項

level_in

triangular, t

level_out

sinusoidal, s

對輸入音訊樣本應用相位偏移。

phase

指定相位偏移。允許範圍為 -1.0 到 1.0。預設值為 0.0。

測量音訊峰值訊號雜訊比。

adaptive

此濾波器接受兩個音訊串流作為輸入,並輸出第一個音訊串流。結果以 dB 為單位,每個聲道在任一輸入結束時輸出。

將心理聲學削波器應用於輸入音訊串流。

設定輸入增益。預設值為 1。範圍為 [0.015625 - 64]。

level

設定輸出增益。預設值為 1。範圍為 [0.015625 - 64]。

8.45.1 指令

此濾鏡支援以上所有選項作為 commands

8.46 apulsator

clip

濾鏡接受以下選項

level_in

triangular, t

level_out

sinusoidal, s

mode

設定削波開始值。預設值為 0dBFS 或 1。

amount

diff

僅輸出差分樣本,有助於聽到引入的失真。預設為停用。

distort

設定應用的自適應失真強度。預設值為 0.5。允許範圍為 0 到 1。

iterations

設定心理聲學削波器的迭代次數。允許範圍為 1 到 20。預設值為 10。

normalize

自動調整輸出訊號的音量。預設為停用。如果啟用此選項,則會將音訊正規化回 0dBFS。

音訊脈動器介於自動聲像器和顫音之間。但它也可以產生有趣的立體聲效果。脈動器根據具有不同波形和相位偏移的 LFO(低頻振盪器)來改變左右聲道的音量。此濾波器能夠定義左右聲道之間的偏移。偏移量為 0 表示兩個 LFO 形狀相互匹配。左右聲道會均勻地改變 - 傳統的顫音。偏移量為 50% 表示右聲道的形狀在相位上完全偏移(或向後移動約頻率的一半)- 脈動器充當自動聲像器。在 1 時,兩個曲線再次匹配。介於兩者之間的每個設定都會將相位偏移無間隙地移動到所有階段之間,並產生一些具有正弦波和三角波波形的「旁通」聲音。您將偏移設定得越接近 1(從 0.5 開始),訊號從左揚聲器傳遞到右揚聲器的速度就越快。

shape

設定 LFO 將使用的波形形狀。可以是以下之一:sine、triangle、square、sawup 或 sawdown。預設值為 sine。

modulation

設定調變。定義原始訊號受 LFO 影響的程度。

offset_l

設定左聲道偏移。預設值為 0。允許範圍為 [0 - 1]。

8.47 aresample

offset_r

設定右聲道偏移。預設值為 0.5。允許範圍為 [0 - 1]。

width

8.47.1 範例

  • 設定脈衝寬度。預設值為 1。允許範圍為 [0 - 2]。
    aresample=44100
    
  • timing
    aresample=async=1000
    

8.48 areverse

設定可能的定時模式。可以是以下之一:bpm、ms 或 hz。預設值為 hz。

bpm

8.48.1 範例

  • 設定 bpm。預設值為 120。允許範圍為 [30 - 300]。僅在 timing 設定為 bpm 時使用。
    atrim=end=5,areverse
    

8.49 arls

ms

設定 ms。預設值為 500。允許範圍為 [10 - 2000]。僅在 timing 設定為 ms 時使用。

以下是接受選項的描述。

order

設定濾鏡階數。

hz

以 Hz 為單位設定頻率。預設值為 2。允許範圍為 [0.01 - 100]。僅在 timing 設定為 hz 時使用。

delta

設定係數以初始化內部共變異數矩陣。

out_mode

設定濾鏡輸出樣本。它接受以下值

i

傳遞第一個輸入。

d

傳遞第二個輸入。

o

傳遞期望訊號、第二個輸入和誤差訊號估計值之間的差異。

n

傳遞輸入訊號、第一個輸入和誤差訊號估計值之間的差異。

e

傳遞誤差訊號估計樣本。

預設值為 o

precision

設定處理樣本時要使用的精度。

auto

根據其他濾鏡自動選擇內部樣本格式。

float

始終使用單精度浮點精度樣本格式。

double

始終使用雙精度浮點精度樣本格式。

8.50 arnndn

使用 libswresample 庫將輸入音訊重新取樣為指定的參數。如果未指定任何參數,則濾波器將自動在其輸入和輸出之間進行轉換。

此濾波器還能夠拉伸/壓縮音訊資料以使其與時間戳記匹配,或注入靜音/剪切音訊以使其與時間戳記匹配,執行兩者的組合或兩者都不執行。

濾波器接受語法 [sample_rate:]resampler_options,其中 sample_rate 表示取樣率,resampler_options 是以 ":" 分隔的 key=value 對列表。請參閱 (ffmpeg-resampler)ffmpeg-resampler(1) 手冊中的「重採樣器選項」章節 以獲取支援選項的完整列表。

將輸入音訊重新取樣為 44100Hz

mix

拉伸/壓縮樣本以符合給定的時間戳記,每秒最多補償 1000 個樣本

8.50.1 指令

此濾鏡支援以上所有選項作為 commands

8.51 asdr

反轉音訊剪輯。

depth

8.52 asetnsamples

警告:此濾波器需要記憶體來緩衝整個剪輯,因此建議修剪。

擷取剪輯的前 5 秒,然後將其反轉。

濾鏡接受以下選項

將遞歸最小平方演算法應用於第一個音訊串流,並使用第二個音訊串流。

此自適應濾波器用於模擬所需的濾波器,方法是遞歸尋找與產生誤差訊號(所需訊號,第二個輸入音訊串流與實際訊號,第一個輸入音訊串流之間的差異)的最小加權線性最小平方成本函數相關的濾波器係數。

lambda

設定遺忘因子。

使用遞歸神經網路減少語音中的雜訊。

asetnsamples=n=1234:p=0

8.53 asetrate

此濾波器接受以下選項

濾鏡接受以下選項

model, m

設定要載入的訓練模型檔案。此選項始終是必需的。

8.54 ashowinfo

mix

設定將濾波後的樣本混合到最終輸出中的程度。允許範圍為 -1 到 1。預設值為 1。負值是特殊的,它們設定在最終濾波器輸出中保留多少濾波後的雜訊。將此選項設定為 -1 以聽到從輸入訊號中移除的實際雜訊。

測量音訊訊號失真比。

n

設定每個輸出音訊幀的樣本數。

pts

最後一個輸出封包可能包含不同數量的樣本,因為濾波器將在輸入音訊指示其結束時刷新所有剩餘樣本。

nb_out_samples, n

設定每個輸出音訊幀的幀數。該數量旨在作為每個聲道的樣本數。預設值為 1024。

pad, p

如果設定為 1,則濾波器將用零填充最後一個音訊幀,以便最後一個幀將包含與先前幀相同數量的樣本。預設值為 1。

例如,要將每幀樣本數設定為 1234 並停用最後一幀的填充,請使用

設定取樣率而不改變 PCM 資料。這將導致速度和音調的變化。

rate

sample_rate, r

設定輸出取樣率。預設值為 44100 Hz。

顯示包含每個輸入音訊幀的各種資訊的行。輸入音訊未被修改。

顯示的行包含 key:value 形式的鍵/值對序列。

以下值顯示在輸出中

輸入幀的(順序)編號,從 0 開始。

8.55 asisdr

pts

depth

8.56 asoftclip

輸入幀的呈現時間戳記,以時間基底單位表示;時間基底取決於濾波器輸入填充,通常為 1/sample_rate

pts_time

此濾波器還能夠拉伸/壓縮音訊資料以使其與時間戳記匹配,或注入靜音/剪切音訊以使其與時間戳記匹配,執行兩者的組合或兩者都不執行。

將第二個聲道延遲 500 個樣本,將第三個聲道延遲 700 個樣本,並保持第一個聲道(和可能存在的任何其他聲道)不變。

輸入幀的呈現時間戳記,單位為秒。

設定叢發融合,以視窗大小的百分比表示。允許範圍為 010。預設值為 2。如果偵測為雜訊的任何兩個樣本之間的間隔小於此值,則這兩個樣本之間的任何樣本也將被偵測為雜訊。

fmt
樣本格式。
chlayout
聲道佈局。
exp
rate
音訊幀的取樣率。
nb_samples
幀中的樣本數(每個聲道)。
threshold

checksum

音訊資料的 Adler-32 檢查碼(以十六進制列印)。對於平面音訊,資料被視為所有平面都已連接。

plane_checksums

每個資料平面的 Adler-32 檢查碼列表。

測量音訊縮放不變訊號失真比。

應用音訊柔削波。

柔削波是一種失真效果類型,其中訊號的幅度沿著平滑曲線飽和,而不是硬削波的突兀形狀。

8.56.1 指令

此濾鏡支援以上所有選項作為 commands

8.57 aspectralstats

type

設定柔削波的類型。

win_size

hard

win_func

設定視窗函數。

設定叢發融合,以視窗大小的百分比表示。允許範圍為 010。預設值為 2。如果偵測為雜訊的任何兩個樣本之間的間隔小於此值,則這兩個樣本之間的任何樣本也將被偵測為雜訊。

rect
bartlett
hann, hanning
hamming
blackman
welch
flattop
bharris
bnuttall
bhann
sine
nuttall
lanczos
gauss
tukey
dolph
cauchy
parzen
poisson
bohman
kaiser

預設值為 hann

overlap

tanh

atan

cubic

alg

quintic
sin
erf
threshold
設定從何處開始削波的閾值。預設值為 0dB 或 1。
output
設定應用於輸出的增益。預設值為 0dB 或 1。
param
設定控制 S 型函數的其他參數。
oversample
斜率
設定過採樣因子。
顯示有關音訊聲道的頻域統計資訊。統計資訊會計算並儲存為每個音訊聲道和每個音訊幀的中繼資料。

8.58 asr

它接受以下選項

window_size

設定視窗長度,以樣本為單位。預設值為 2048。允許範圍為 32 到 65536。

rate

overlap

設定視窗重疊。允許範圍為 01。預設值為 0.5

measure

選擇要測量的參數。中繼資料鍵可以用作標誌,預設值為 all,表示測量所有內容。none 停用所有測量。

以下是每個中繼資料鍵的列表

mean

variance

centroid

spread

skewness

kurtosis

entropy

flatness

crest

8.59 astats

flux

設定柔削波的類型。

length

decrease

rolloff

自動語音辨識

此濾波器使用 PocketSphinx 進行語音辨識。要啟用此濾波器的編譯,您需要使用 --enable-pocketsphinx 配置 FFmpeg。

它接受以下選項

samplerate

設定輸入音訊的取樣率。預設值為 16000。這需要與語音模型匹配,否則會得到較差的結果。

hmm

設定包含聲學模型檔案的字典。

dict

設定發音字典。

lm

設定語言模型檔案。

lmctl

none

設定語言模型集。

設定用於設定跨聲道樣本延遲的隨機種子。

lmname

設定要使用的語言模型。

logfn

設定日誌訊息的輸出。

濾波器將辨識的語音匯出為幀中繼資料 lavfi.asr.text

顯示有關音訊聲道的時域統計資訊。統計資訊會針對每個音訊聲道計算和顯示,並且在適用的情況下,還會給出總體數字。

win_length

短視窗長度,單位為秒,用於峰值和波谷 RMS 測量。預設值為 0.05(50 毫秒)。允許範圍為 [0 - 10]

metadata

設定中繼資料注入。所有中繼資料鍵都以 lavfi.astats.X 為前綴,其中 X 是從 1 開始的聲道號碼或字串 Overall。預設為停用。

每個聲道的可用鍵為:Bit_depth Crest_factor DC_offset Dynamic_range Entropy Flat_factor Max_difference Max_level Mean_difference Min_difference Min_level Noise_floor Noise_floor_count Number_of_Infs Number_of_NaNs Number_of_denormals Peak_count Abs_Peak_count Peak_level RMS_difference RMS_peak RMS_trough

以及 Overall 的鍵:Bit_depth DC_offset Entropy Flat_factor Max_difference Max_level Mean_difference Min_difference Min_level Noise_floor Noise_floor_count Number_of_Infs Number_of_NaNs Number_of_denormals Number_of_samples Peak_count Abs_Peak_count Peak_level RMS_difference RMS_level RMS_peak RMS_trough

例如,完整的鍵看起來像 lavfi.astats.1.DC_offsetlavfi.astats.Overall.Peak_count

請閱讀以下內容以了解鍵的描述。

reset

設定在重設之前計算累計統計資訊的幀數。預設為停用。

measure_perchannel

選擇每個聲道測量的參數。中繼資料鍵可以用作標誌,預設值為 all,表示測量所有內容。none 停用所有每個聲道測量。

measure_overall

選擇總體測量的參數。中繼資料鍵可以用作標誌,預設值為 all,表示測量所有內容。none 停用所有總體測量。

以下是測量鍵的描述

none

無測量

all

所有測量

Bit_depth

音訊的整體位元深度,即每個樣本使用的位元數

Crest_factor

峰值與 RMS 水平的標準比率(注意:不是以 dB 為單位)

DC_offset

與零的平均幅度位移

Dynamic_range

以 dB 為單位測量的音訊動態範圍

Entropy

在整個音訊中測量的熵,接近 1.0 的熵值通常針對白雜訊測量

Flat_factor

訊號在其峰值水平(即 Min_levelMax_level)處的平坦度(即具有相同值的連續樣本)

Max_difference

兩個連續樣本之間的最大差異

Max_level

最大樣本水平

Mean_difference

兩個連續樣本之間的平均差異,即兩個連續樣本之間每個差異的平均值

Min_difference

兩個連續樣本之間的最小差異

Min_level
最小樣本水平

Noise_floor

在短視窗內測量的最小局部峰值,單位為 dBFS

Noise_floor_count

訊號達到 Noise floor 的次數(不是樣本數)

Number_of_Infs

8.60 asubboost

具有無限值的樣本數

濾鏡接受以下選項

dry

Number_of_NaNs

wet

具有 NaN(非數字)值的樣本數

Number_of_denormals

具有次正規化值的樣本數

向輸入音訊添加相位效果。

Number_of_samples

樣本數

Peak_count

訊號達到 Min_levelMax_level 的次數(不是樣本數)

Abs_Peak_count

斜率

從訊號中取得的絕對樣本達到 Min_levelMax_level 最大絕對值的次數

確保音訊輸出將至少包含 10000 個樣本,如果需要,則在輸入中填充靜音

Peak_level

取樣率

以 dBFS 為單位測量的標準峰值水平

8.60.1 指令

此濾鏡支援以上所有選項作為 commands

8.61 asubcut

RMS_difference

兩個連續樣本之間的均方根差異

濾鏡接受以下選項

訊號達到 Min_levelMax_level 的次數(不是樣本數)

RMS_level

order

以 dBFS 為單位測量的標準 RMS 水平

level

設定輸入增益等級。允許範圍為 0 到 1。預設值為 1。

8.61.1 指令

此濾鏡支援以上所有選項作為 commands

8.62 asupercut

RMS_peak

濾鏡接受以下選項

訊號達到 Min_levelMax_level 的次數(不是樣本數)

RMS_trough

order

以 dBFS 為單位測量的標準 RMS 水平

level

設定輸入增益等級。允許範圍為 0 到 1。預設值為 1。

8.62.1 指令

此濾鏡支援以上所有選項作為 commands

8.63 asuperpass

在短視窗內測量的 RMS 水平的峰值和波谷值,單位為 dBFS。

濾鏡接受以下選項

Zero crossings

波形穿過零水平軸的點數

order

Zero crossings rate

零交叉率和音訊樣本數

增強超低音頻率。

level

dry

8.63.1 指令

此濾鏡支援以上所有選項作為 commands

8.64 asuperstop

設定乾聲增益,保留多少原始訊號。允許範圍為 0 到 1。預設值為 1.0。

濾鏡接受以下選項

Zero crossings

波形穿過零水平軸的點數

order

Zero crossings rate

零交叉率和音訊樣本數

增強超低音頻率。

level

dry

8.64.1 指令

此濾鏡支援以上所有選項作為 commands

8.65 atempo

wet

設定濕聲增益,保留多少濾波訊號。允許範圍為 0 到 1。預設值為 1.0。

boost

8.65.1 範例

  • 設定最大增強因子。允許範圍為 1 到 12。預設值為 2。
    atempo=0.8
    
  • decay
    atempo=3
    
  • 設定延遲線衰減增益值。允許範圍為 0 到 1。預設值為 0.0。
    atempo=sqrt(3),atempo=sqrt(3)
    

8.65.2 指令

此濾波器支援以下指令

feedback

設定延遲線回饋增益值。允許範圍為 0 到 1。預設值為 0.9。

8.66 atilt

cutoff

設定截止頻率,單位為赫茲。允許範圍為 50 到 900。預設值為 100。

濾鏡接受以下選項

freq

slope

斜率

設定截止頻率的斜率量。允許範圍為 0.0001 到 1。預設值為 0.5。

設定心理聲學削波器的迭代次數。允許範圍為 1 到 20。預設值為 10。

delay

order

設定延遲。允許範圍為 1 到 100。預設值為 20。

level

channels

8.66.1 指令

此濾鏡支援以上所有選項作為 commands

8.67 atrim

設定要處理的聲道。預設值為所有可用聲道。

它接受以下參數

start

削減超低音頻率。

此濾波器允許設定自訂、比高通濾波器更陡峭的滾降,因此能夠更多地衰減阻帶中的頻率內容。

cutoff

設定截止頻率,單位為赫茲。允許範圍為 2 到 200。預設值為 20。

order

設定濾波器階數。可用值為 3 到 20。預設值為 10。

削減超高頻率。

duration

cutoff

設定截止頻率,單位為赫茲。允許範圍為 20000 到 192000。預設值為 20000。

應用高階巴特沃斯帶通濾波器。

centerf

設定中心頻率,單位為赫茲。允許範圍為 2 到 999999。預設值為 1000。

order

設定濾波器階數。可用值為 4 到 20。預設值為 4。

qfactor

設定 Q 因子。允許範圍為 0.01 到 100。預設值為 1。

gain

  • 設定輸入增益水平。允許範圍為 0 到 2。預設值為 1。
    ffmpeg -i INPUT -af atrim=60:120
    
  • 應用高階巴特沃斯帶阻濾波器。
    ffmpeg -i INPUT -af atrim=end_sample=1000
    

8.68 axcorrelate

調整音訊節奏。

此濾波器正好接受一個參數,即音訊節奏。如果未指定,則濾波器將假定標稱節奏為 1.0。節奏必須在 [0.5, 100.0] 範圍內。

濾鏡接受以下選項

size

請注意,大於 2 的節奏將跳過一些樣本,而不是將它們混合在一起。如果出於任何原因擔心這一點,始終可以菊鏈多個 atempo 實例以達到所需的產品節奏。

將音訊減速到 80% 節奏

將音訊加速到 300% 節奏

8.68.1 範例

  • 通過菊鏈兩個 atempo 實例將音訊加速到 300% 節奏
    ffmpeg -i stereo.wav -af channelsplit,axcorrelate=size=1024:algo=fast correlation.wav
    

8.69 bandpass

tempo

濾鏡接受以下選項

frequency, f

變更濾波器節奏縮放因子。指令的語法為:「tempo

將頻譜傾斜濾波器應用於音訊串流。

此濾波器在任何指定的頻段上應用任何頻譜滾降斜率。

width_type, t

設定指定濾波器頻寬的方法。

h

Hz

q

Q 因子

o

octave

s

斜率

k

kHz

width, w

以 width_type 單位指定濾波器的頻寬。

mix, m

輸出中使用濾波訊號的量。預設值為 1。範圍介於 0 和 1 之間。

channels, c

指定要濾波的聲道,預設情況下會濾波所有可用聲道。

normalize, n

正規化雙二階係數,預設為停用。啟用後,它將在 DC 將幅度響應正規化為 0dB。

transform, a

設定 IIR 濾波器的轉換類型。

di
dii
tdi
tdii
latt
svf
zdf
precision, r

設定濾波精度。

auto

根據環繞濾波器選擇自動樣本格式。

s16

始終使用有符號 16 位元。

s32

始終使用有符號 32 位元。

f32

始終使用浮點 32 位元。

f64

始終使用浮點 64 位元。

frequency

設定傾斜的中心頻率,單位為 Hz。預設值為 10000 Hz。

傾斜方向

8.69.1 指令

此濾波器支援以下指令

frequency, f

設定傾斜的斜率方向。預設值為 0。允許範圍為 -1 到 1。

width_type, t

width

width, w

設定傾斜的寬度。預設值為 1000。允許範圍為 100 到 10000。

mix, m

order

8.70 bandreject

設定傾斜濾波器的階數。

濾鏡接受以下選項

frequency, f

變更濾波器節奏縮放因子。指令的語法為:「tempo

width_type, t

設定指定濾波器頻寬的方法。

h

Hz

q

Q 因子

o

octave

s

斜率

k

kHz

width, w

以 width_type 單位指定濾波器的頻寬。

mix, m

輸出中使用濾波訊號的量。預設值為 1。範圍介於 0 和 1 之間。

channels, c

指定要濾波的聲道,預設情況下會濾波所有可用聲道。

normalize, n

正規化雙二階係數,預設為停用。啟用後,它將在 DC 將幅度響應正規化為 0dB。

transform, a

設定 IIR 濾波器的轉換類型。

di
dii
tdi
tdii
latt
svf
zdf
precision, r

設定濾波精度。

auto

根據環繞濾波器選擇自動樣本格式。

s16

始終使用有符號 16 位元。

s32

始終使用有符號 32 位元。

f32

始終使用浮點 32 位元。

f64

始終使用浮點 64 位元。

frequency

設定傾斜的中心頻率,單位為 Hz。預設值為 10000 Hz。

傾斜方向

8.70.1 指令

此濾波器支援以下指令

frequency, f

volume

width_type, t

設定輸入音量水平。允許範圍為 0 到 4。預設值為 1。

width, w

修剪輸入,使輸出包含輸入的一個連續子部分。

mix, m

start

8.71 bass, lowshelf

要保留的區段的開始時間戳記(以秒為單位)。即,時間戳記為 start 的音訊樣本將是輸出中的第一個樣本。

濾鏡接受以下選項

end

指定將丟棄的第一個音訊樣本的時間,即時間戳記為 end 的音訊樣本之前的音訊樣本將是輸出中的最後一個樣本。

frequency, f

start_pts

width_type, t

設定指定濾波器頻寬的方法。

h

Hz

q

Q 因子

o

octave

s

斜率

k

kHz

width, w

start 相同,不同之處在於此選項以樣本而不是秒為單位設定開始時間戳記。

poles, p

end_pts

mix, m

輸出中使用濾波訊號的量。預設值為 1。範圍介於 0 和 1 之間。

channels, c

指定要濾波的聲道,預設情況下會濾波所有可用聲道。

normalize, n

正規化雙二階係數,預設為停用。啟用後,它將在 DC 將幅度響應正規化為 0dB。

transform, a

設定 IIR 濾波器的轉換類型。

di
dii
tdi
tdii
latt
svf
zdf
precision, r

設定濾波精度。

auto

根據環繞濾波器選擇自動樣本格式。

s16

始終使用有符號 16 位元。

s32

始終使用有符號 32 位元。

f32

始終使用浮點 32 位元。

f64

始終使用浮點 64 位元。

frequency

設定傾斜的中心頻率,單位為 Hz。預設值為 10000 Hz。

傾斜方向

8.71.1 指令

此濾波器支援以下指令

frequency, f

end 相同,不同之處在於此選項以樣本而不是秒為單位設定結束時間戳記。

width_type, t

duration

width, w

輸出的最大持續時間,單位為秒。

end

start_sample

mix, m

應輸出的第一個樣本的編號。

8.72 biquad

end_sample

8.72.1 指令

此濾波器支援以下指令

應丟棄的第一個樣本的編號。
startendduration 以時間長度規格表示;請參閱 (ffmpeg-utils)ffmpeg-utils(1) 手冊中的時間長度章節
請注意,前兩組開始/結束選項和 duration 選項會查看幀時間戳記,而 _sample 選項僅計算通過濾波器的樣本。因此,當時間戳記錯誤、不精確或未從零開始時,start/end_pts 和 start/end_sample 將給出不同的結果。另請注意,此濾波器不會修改時間戳記。如果您希望輸出時間戳記從零開始,請在 atrim 濾波器之後插入 asetpts 濾波器。
如果設定了多個開始或結束選項,此濾波器會盡力貪婪地保留至少符合一個指定約束的所有樣本。要僅保留同時符合所有約束的部分,請鏈接多個 atrim 濾波器。
預設值是保留所有輸入。因此,可以設定例如僅結束值以保留指定時間之前的所有內容。
範例

丟棄除輸入的第二分鐘之外的所有內容

mix, m

輸出中使用濾波訊號的量。預設值為 1。範圍介於 0 和 1 之間。

channels, c

指定要濾波的聲道,預設情況下會濾波所有可用聲道。

normalize, n

正規化雙二階係數,預設為停用。啟用後,它將在 DC 將幅度響應正規化為 0dB。

transform, a

設定 IIR 濾波器的轉換類型。

di
dii
tdi
tdii
latt
svf
zdf
precision, r

設定濾波精度。

auto

根據環繞濾波器選擇自動樣本格式。

s16

始終使用有符號 16 位元。

s32

始終使用有符號 32 位元。

f32

始終使用浮點 32 位元。

f64

始終使用浮點 64 位元。

frequency

設定傾斜的中心頻率,單位為 Hz。預設值為 10000 Hz。

傾斜方向

8.73 bs2b

僅保留前 1000 個樣本

計算兩個輸入音訊串流之間正規化視窗互相關。

它接受以下參數

profile

結果樣本始終介於 -1 和 1 之間(包含端點)。如果結果為 1,則表示兩個輸入樣本在選定區段中高度相關。結果 0 表示它們根本不相關。如果結果為 -1,則表示兩個輸入樣本異相,這表示它們相互抵消。

default

size

設定計算互相關的區段大小。預設值為 256。允許範圍為 2 到 131072。

algo

設定互相關的演算法。可以是 slowfastbest。預設值為 best。快速演算法假定任何給定區段的平均值始終為零,因此需要更少的計算。這通常不是真的,但對於典型的音訊串流是有效的。

計算立體聲音訊串流中聲道之間的相關性

應用一個二極巴特沃斯帶通濾波器,其中心頻率為 frequency,(3dB 點)頻寬寬度。如果設定 csg 選項,則會選擇恆定裙邊增益(峰值增益 = Q),而不是預設值:恆定 0dB 峰值增益。濾波器以每八度音程 6dB(每十年 20dB)的速度滾降。

frequency, f

設定濾波器的中心頻率。預設值為 3000

csg

8.74 channelmap

如果設定為 1,則為恆定裙邊增益。預設值為 0。

它接受以下參數

block_size, b

設定用於反向 IIR 處理的區塊大小。如果此值設定得足夠高(高於脈衝響應長度在接近零值時截斷的長度),則濾波將變為線性相位,否則如果不夠大,則只會產生令人討厭的偽影。

請注意,當設定為非零值時,濾波器延遲將正好是這麼多樣本。

變更帶通頻率。指令的語法為:「frequency

變更帶通 width_type。指令的語法為:「width_type

8.74.1 範例

  • 變更帶通寬度。指令的語法為:「width
    ffmpeg -i in.mov -filter 'channelmap=map=DL-FL|DR-FR' out.wav
    

    變更帶通混合。指令的語法為:「mix

  • 應用一個二極巴特沃斯帶阻濾波器,其中心頻率為 frequency,(3dB 點)頻寬為 width。濾波器以每八度音程 6dB(每十年 20dB)的速度滾降。
    ffmpeg -i in.wav -filter 'channelmap=1|2|0|5|3|4:5.1' out.wav
    

8.75 channelsplit

變更帶阻頻率。指令的語法為:「frequency

它接受以下參數

請注意,當設定為非零值時,濾波器延遲將正好是這麼多樣本。

變更帶阻 width_type。指令的語法為:「width_type

取樣率

變更帶阻寬度。指令的語法為:「width

變更帶阻混合。指令的語法為:「mix

8.75.1 範例

  • 使用二極擱架式濾波器(其響應類似於標準高保真音響的音調控制)增強或削減音訊的低音(較低)頻率。這也稱為擱架式等化 (EQ)。
    ffmpeg -i in.mp3 -filter_complex channelsplit out.mkv
    

    gain, g

  • 給出 0 Hz 的增益。其有用範圍約為 -20(用於大幅度削減)到 +20(用於大幅度增強)。使用正增益時請注意削波。
    ffmpeg -i in.wav -filter_complex
    'channelsplit=channel_layout=5.1[FL][FR][FC][LFE][SL][SR]'
    -map '[FL]' front_left.wav -map '[FR]' front_right.wav -map '[FC]'
    front_center.wav -map '[LFE]' lfe.wav -map '[SL]' side_left.wav -map '[SR]'
    side_right.wav
    
  • frequency
    ffmpeg -i in.wav -filter_complex 'channelsplit=channel_layout=5.1:channels=LFE[LFE]'
    -map '[LFE]' lfe.wav
    

8.76 chorus

設定濾波器的中心頻率,因此可用於擴展或縮減要增強或削減的頻率範圍。預設值為 100 Hz。

width_type

確定濾波器的擱架式過渡有多陡峭。

它接受以下參數

自動從偵測濾鏡收集臨界值。預設為「disabled」。此選項可用於偵測輸入音訊串流特定時間範圍內的臨界值,在這種情況下,選項值會在執行時變更。

請注意,對於 ffmpeg 4.4 及更早版本,零 pad_durwhole_dur 也會導致濾波器無限期地添加靜音。

disabled

設定輸出增益。預設值為 0.4。

設定濾鏡處理的去相關性階段。允許範圍為從 1 到 16。預設值為 6。

設定延遲。一般的延遲時間約為 40 毫秒到 60 毫秒。

停止選取臨界值。

設定衰減。

速度

設定速度。

深度

設定深度。

8.76.1 範例

  • 單一延遲
    chorus=0.7:0.9:55:0.4:0.25:2
    
  • 兩個延遲
    chorus=0.6:0.9:50|60:0.4|0.32:0.25|0.4:2|1.3
    
  • 使用三個延遲以獲得更飽滿的合唱效果
    chorus=0.5:0.9:50|60|40:0.4|0.32|0.3:0.25|0.4|0.3:2|2.3|1.3
    

8.77 compand

壓縮或擴展音訊的動態範圍。

它接受以下參數

起音 (attacks)
停止選取臨界值。

每個聲道的時間列表(以秒為單位),輸入訊號的瞬時音量在此時間內被平均,以確定其音量。attacks 指的是音量增加,而 decays 指的是音量減少。在大多數情況下,起音時間(對音訊變大的反應)應短於衰減時間(對音訊變小的反應),因為人耳對突然變大的音訊比對突然變小的音訊更敏感。典型的起音值為 0.3 秒,典型的衰減值為 0.8 秒。如果指定的起音和衰減數量少於聲道數,則最後設定的起音/衰減將用於所有剩餘聲道。

點 (points)

傳輸函數的點列表,以相對於最大可能訊號幅度的 dB 為單位指定。每個關鍵點列表都必須使用以下語法定義:x0/y0|x1/y1|x2/y2|....x0/y0 x1/y1 x2/y2 ....

輸入值必須嚴格遞增,但傳輸函數不必單調遞增。點 0/0 是假定的,但可以被覆蓋(通過 0/out-dBn)。傳輸函數的典型值為 -70/-70|-60/-20|1/0

柔膝 (soft-knee)

設定所有接合點的曲線半徑,單位為 dB。預設值為 0.01。

增益 (gain)

設定要應用於傳輸函數上所有點的額外增益,單位為 dB。這允許輕鬆調整整體增益。預設值為 0。

音量 (volume)

設定每個聲道在濾波開始時假定的初始音量,單位為 dB。這允許使用者提供一個初始的標稱音量,例如,在壓縮開始運作之前,不會對初始訊號音量應用非常大的增益。對於最初很安靜的音訊,典型值為 -90 dB。預設值為 0。

確保音訊輸出將至少包含 10000 個樣本,如果需要,則在輸入中填充靜音

設定延遲,單位為秒。輸入音訊會立即被分析,但音訊在饋送到音量調整器之前會被延遲。指定一個約等於起音/衰減時間的延遲,可以使濾波器有效地以預測模式而不是反應模式運作。預設值為 0。

8.77.1 範例

  • 使音樂的安靜和響亮段落都適合在嘈雜環境中聆聽
    compand=.3|.3:1|1:-90/-60|-60/-40|-40/-30|-20/-20:6:0:-90:0.2
    

    另一個用於包含耳語和爆炸聲的音訊範例

    compand=0|0:1|1:-90/-900|-70/-70|-30/-9|0/-3:6:0:0:0
    
  • 當雜訊水平低於訊號水平時使用的雜訊閘
    compand=.1|.1:.2|.2:-900/-900|-50.1/-900|-50/-50:.01:0:-90:.1
    
  • 這是另一個雜訊閘,這次適用於雜訊水平高於訊號水平的情況(在某些方面使其類似於靜噪)
    compand=.1|.1:.1|.1:-45.1/-45.1|-45/-900|0/-900:.01:45:-90:.1
    
  • 從 -6dB 開始的 2:1 壓縮
    compand=points=-80/-80|-6/-6|0/-3.8|20/3.5
    
  • 從 -9dB 開始的 2:1 壓縮
    compand=points=-80/-80|-9/-9|0/-5.3|20/2.9
    
  • 從 -12dB 開始的 2:1 壓縮
    compand=points=-80/-80|-12/-12|0/-6.8|20/1.9
    
  • 從 -18dB 開始的 2:1 壓縮
    compand=points=-80/-80|-18/-18|0/-9.8|20/0.7
    
  • 從 -15dB 開始的 3:1 壓縮
    compand=points=-80/-80|-15/-15|0/-10.8|20/-5.2
    
  • 壓縮器/閘 (Compressor/Gate)
    compand=points=-80/-105|-62/-80|-15.4/-15.4|0/-12|20/-7.6
    
  • 擴展器 (Expander)
    compand=attacks=0:points=-80/-169|-54/-80|-49.5/-64.6|-41.1/-41.1|-25.8/-15|-10.8/-4.5|0/0|20/8.3
    
  • 在 -6dB 的硬式限制器 (Hard limiter)
    compand=attacks=0:points=-80/-80|-6/-6|20/-6
    
  • 在 -12dB 的硬式限制器 (Hard limiter)
    compand=attacks=0:points=-80/-80|-12/-12|20/-12
    
  • 在 -35 dB 的硬式雜訊閘 (Hard noise gate)
    compand=attacks=0:points=-80/-115|-35.1/-80|-35/-35|20/20
    
  • 柔式限制器 (Soft limiter)
    compand=attacks=0:points=-80/-80|-12.4/-12.4|-6/-8|0/-6.8|20/-2.8
    

8.78 compensationdelay

補償延遲線 (Compensation Delay Line) 是一種基於公制的延遲,用於補償麥克風或喇叭的不同位置。

例如,您使用放置在不同位置的兩個麥克風錄製了吉他。由於聲波前進在正常條件下具有固定的速度,因此麥克風的相位可能會有所不同,並且取決於它們的位置和相互位置。當這些麥克風同相位(同步)時,可以獲得最佳的聲音混音。請注意,麥克風之間約 30 公分的距離會使一個麥克風捕捉到的訊號與另一個麥克風的訊號反相。這會使最終混音聽起來沉悶。此濾波器通過為每個麥克風軌道添加不同的延遲並使其同步來幫助解決相位問題。

當您將一個軌道作為基準並將其他軌道逐一與其同步時,可以達到最佳效果。請記住,同步/延遲容限也取決於取樣率。較高的取樣率將提供更大的容限。

此濾波器接受以下參數

mm

設定毫米距離。這是用於微調的補償距離。預設值為 0。

cm

設定公分距離。這是用於收緊距離設定的補償距離。預設值為 0。

m

設定公尺距離。這是用於硬性距離設定的補償距離。預設值為 0。

dry

設定乾訊號量。未處理(乾)訊號的量。預設值為 0。

wet

設定濕訊號量。已處理(濕)訊號的量。預設值為 1。

temp

設定攝氏溫度。這是環境溫度。預設值為 20。

8.78.1 指令

此濾鏡支援以上所有選項作為 commands

8.79 crossfeed

套用耳機聲場 (headphone crossfeed) 濾波器。

聲場 (Crossfeed) 是混合立體聲音訊錄音的左右聲道的過程。它主要用於減少低頻的極端立體聲分離。

目的是為聽者產生更像喇叭的聲音。

濾鏡接受以下選項

強度 (strength)

設定聲場 (crossfeed) 的強度。預設值為 0.2。允許範圍為 0 到 1。這設定立體聲影像側邊部分的低頻擱架濾波器的增益。預設值為 -6dB。當強度設定為 1 時,最大允許值為 -30db。

設定用於偵測濾鏡的偵測頻率(以 Hz 為單位),該偵測濾鏡用於觸發等化。預設值為 1000 Hz。允許範圍介於 2 和 1000000 Hz 之間。

設定聲場寬度 (soundstage wideness)。預設值為 0.5。允許範圍為 0 到 1。這設定低頻擱架濾波器的截止頻率。預設值為接近 1550 Hz 的截止頻率。當範圍設定為 1 時,截止頻率設定為 2100 Hz。

斜率

設定低頻擱架濾波器的曲線斜率。預設值為 0.5。允許範圍為 0.01 到 1。

level_in

設定輸入增益。預設值為 0.9。

level_out

設定輸出增益。預設值為 1。

block_size

設定傾斜的中心頻率,單位為 Hz。預設值為 10000 Hz。

傾斜方向

8.79.1 指令

此濾鏡支援以上所有選項作為 commands

8.80 crystalizer

用於音訊雜訊銳化的簡單演算法。

此濾波器線性地增加每個音訊樣本之間的差異。

濾鏡接受以下選項

i

設定效果強度(預設值:2.0)。必須在 -10.0 到 0(聲音不變)到 10.0(最大效果)的範圍內。要反轉濾波,請使用負值。

c

啟用削波 (clipping)。預設為啟用。

8.80.1 指令

此濾鏡支援以上所有選項作為 commands

8.81 dcshift

對音訊套用直流偏移 (DC shift)。

這可用於從音訊中移除直流偏移(可能由錄音鏈中的硬體問題引起)。直流偏移的效果是降低動態餘裕 (headroom),進而降低音量。astats 濾波器可用於確定訊號是否具有直流偏移。

shift

設定直流偏移量,允許範圍為 [-1, 1]。它表示音訊的偏移量。

limitergain

可選。它應該有一個遠小於 1 的值(例如 0.05 或 0.02),用於防止削波 (clipping)。

8.82 deesser

對音訊樣本套用齒音消除 (de-essing)。

i

設定觸發齒音消除 (de-essing) 的強度。允許範圍為 0 到 1。預設值為 0。

m

設定對聲音高音部分進行衰減 (ducking) 的程度。允許範圍為 0 到 1。預設值為 0.5。

nb_channels

齒音消除 (de-essing) 時要保留多少原始頻率內容。允許範圍為 0 到 1。預設值為 0.5。

s

設定輸出模式。

設定叢發融合,以視窗大小的百分比表示。允許範圍為 010。預設值為 2。如果偵測為雜訊的任何兩個樣本之間的間隔小於此值,則這兩個樣本之間的任何樣本也將被偵測為雜訊。

i

傳遞未更改的輸入。

o

通過濾除的齒音 (ess)。

e

僅通過齒音 (ess)。

預設值為 o

8.83 dialoguenhance

增強立體聲音訊中的對話。

此濾波器接受立體聲輸入並產生環繞聲 (3.0) 聲道輸出。新產生的前置中央聲道具有增強的語音對話,最初在立體聲聲道中可用。此濾波器輸出的前置左聲道和前置右聲道與立體聲輸入中的聲道相同。

濾鏡接受以下選項

原始 (original)

設定在前置中央聲道輸出中保留的原始中央聲道因子。允許範圍為 0 到 1。預設值為 1。

增強 (enhance)

設定要放入前置中央聲道輸出的對話增強因子。允許範圍為 0 到 3。預設值為 1。

語音 (voice)

設定語音偵測因子。允許範圍為 2 到 32。預設值為 2。

8.83.1 指令

此濾鏡支援以上所有選項作為 commands

8.84 drmeter

測量音訊動態範圍。

DR 值為 14 或更高時,表示非常動態的素材。DR 值為 8 到 13 時,表示過渡素材。任何小於 8 的值都具有非常差的動態,並且被高度壓縮。

濾鏡接受以下選項

length

設定用於將音訊分割成相等長度片段的視窗長度,單位為秒。預設值為 3 秒。

8.85 dynaudnorm

動態音訊正規化器 (Dynamic Audio Normalizer)。

此濾波器對輸入音訊應用一定量的增益,以使其峰值幅度達到目標水平(例如 0 dBFS)。但是,與更「簡單」的正規化演算法相比,動態音訊正規化器會*動態地*重新調整輸入音訊的增益因子。這允許對音訊的「安靜」部分應用額外增益,同時避免「響亮」部分的失真或削波 (clipping)。換句話說:動態音訊正規化器將「均勻化」安靜和響亮部分的音量,從某種意義上說,每個部分的音量都被帶到相同的目標水平。但是請注意,動態音訊正規化器在實現此目標時*沒有*應用「動態範圍壓縮」。它將保留音訊檔案每個部分*內* 100% 的動態範圍。

framelen, f

設定幀長度,單位為毫秒。範圍從 10 到 8000 毫秒。預設值為 500 毫秒。動態音訊正規化器以小塊處理輸入音訊,稱為幀。這是必需的,因為峰值幅度對於僅單個樣本值沒有意義。相反,我們需要確定連續樣本值序列的峰值幅度。雖然「標準」正規化器只會使用完整檔案的峰值幅度,但動態音訊正規化器會單獨確定每個幀的峰值幅度。幀的長度以毫秒為單位指定。預設情況下,動態音訊正規化器使用 500 毫秒的幀長度,這已被發現對於大多數檔案都能提供良好的結果。請注意,幀的確切長度(以樣本數為單位)將根據個別輸入音訊檔案的取樣率自動確定。

gausssize, g

設定高斯濾波器視窗大小。範圍從 3 到 301,必須為奇數。預設值為 31。動態音訊正規化器最重要的參數可能是高斯平滑濾波器的 視窗大小。濾波器的視窗大小以幀為單位指定,以當前幀為中心。為了簡單起見,這必須是一個奇數。因此,預設值 31 會考慮到當前幀,以及前 15 個幀和後 15 個幀。使用較大的視窗會產生更強的平滑效果,從而減少增益變化,即較慢的增益適應。相反,使用較小的視窗會產生較弱的平滑效果,從而產生更多的增益變化,即更快的增益適應。換句話說,您越增加此值,動態音訊正規化器的行為就越像「傳統」正規化濾波器。相反,您越減少此值,動態音訊正規化器的行為就越像動態範圍壓縮器。

peak, p

設定目標峰值。這指定正規化音訊輸入的最高允許幅度水平。此濾波器將嘗試盡可能接近目標峰值幅度,但同時它也確保正規化訊號永遠不會超過峰值幅度。幀的最大本地增益因子直接由目標峰值幅度施加。預設值為 0.95,因此保留了 5%* 的動態餘裕 (headroom)。不建議超過此值。

maxgain, m

設定最大增益因子。範圍從 1.0 到 100.0。預設值為 10.0。動態音訊正規化器確定每個輸入幀的最大可能(本地)增益因子,即不會導致削波 (clipping) 或失真的最大增益因子。最大增益因子由幀的最高幅度樣本確定。但是,動態音訊正規化器還將幀的最大增益因子限制在預定的(全域)最大增益因子內。這樣做的目的是為了避免在「靜音」或幾乎靜音的幀中出現過大的增益因子。預設情況下,最大增益因子為 10.0。對於大多數輸入,預設值應該足夠,通常不建議增加此值。但是,對於整體音量水平極低的輸入,可能有必要允許更高的增益因子。但是請注意,動態音訊正規化器並非簡單地應用「硬」閾值(即,切斷高於閾值的值)。相反,將應用「S 型」閾值函數。這樣,增益因子將平滑地接近閾值,但永遠不會超過該值。

targetrms, r

設定目標 RMS。範圍從 0.0 到 1.0。預設值為 0.0 - 停用。預設情況下,動態音訊正規化器執行「峰值」正規化。這表示每個幀的最大本地增益因子僅由幀的最高幅度樣本定義。這樣,樣本可以被盡可能地放大,而不會超過最大訊號水平,即不會削波 (clipping)。但是,可選地,動態音訊正規化器也可以考慮幀的均方根值 (root mean square),縮寫為 RMS。在電機工程中,RMS 通常用於確定時變訊號的功率。因此,人們認為 RMS 比僅查看訊號的峰值幅度更能近似「感知響度」。因此,通過將所有幀調整為恆定的 RMS 值,可以建立均勻的「感知響度」。如果已指定目標 RMS 值,則幀的本地增益因子被定義為將導致該 RMS 值的因子。但是請注意,最大本地增益因子仍然受到幀的最高幅度樣本的限制,以防止削波 (clipping)。

coupling, n

啟用聲道耦合 (channels coupling)。預設為啟用。預設情況下,動態音訊正規化器將所有聲道放大相同的量。這表示相同的增益因子將應用於所有聲道,即最大可能的增益因子由「最響亮」的聲道確定。但是,在某些錄音中,不同聲道的音量可能會不均勻,例如,一個聲道可能比其他聲道「安靜」。在這種情況下,可以使用此選項停用聲道耦合。這樣,增益因子將針對每個聲道獨立確定,僅取決於個別聲道的最高幅度樣本。這允許協調不同聲道的音量。

correctdc, c

啟用直流偏移校正 (DC bias correction)。預設為停用。音訊訊號(在時域中)是樣本值序列。在動態音訊正規化器中,這些樣本值以 -1.0 到 1.0 的範圍表示,而與原始輸入格式無關。通常,音訊訊號或「波形」應以零點為中心。這表示如果我們計算檔案中或單個幀中所有樣本的平均值,則結果應為 0.0 或至少非常接近該值。但是,如果平均值與 0.0 有顯著偏差,無論是正方向還是負方向,這都稱為直流偏移或 DC 偏移。由於直流偏移顯然是不希望有的,因此動態音訊正規化器提供可選的直流偏移校正。啟用直流偏移校正後,動態音訊正規化器將確定每個輸入幀的平均值或「直流校正」偏移量,並從幀的所有樣本值中減去該值,這確保了這些樣本再次以 0.0 為中心。此外,為了避免幀邊界處出現「間隙」,直流校正偏移值將在相鄰幀之間平滑插值。

altboundary, b

啟用替代邊界模式 (alternative boundary mode)。預設為停用。動態音訊正規化器會考慮每個幀周圍的特定鄰域。這包括先前的幀以及後續的幀。但是,對於位於音訊檔案最開始和最結尾的「邊界」幀,並非所有相鄰幀都可用。特別是,對於音訊檔案中的前幾個幀,先前的幀是未知的。並且,類似地,對於音訊檔案中的最後幾個幀,後續的幀是未知的。因此,問題出現了,對於「邊界」區域中遺失的幀,應該假定哪些增益因子。動態音訊正規化器實作了兩種模式來處理這種情況。預設邊界模式假設遺失幀的增益因子正好為 1.0,從而在輸入的開始和結尾分別產生平滑的「淡入」和「淡出」。

compress, s

設定壓縮因子。範圍從 0.0 到 30.0。預設值為 0.0。預設情況下,動態音訊正規化器不應用「傳統」壓縮。這表示訊號峰值不會被修剪,因此每個本地鄰域內將保留完整的動態範圍。但是,在某些情況下,可能希望將動態音訊正規化器的正規化演算法與更「傳統」的壓縮結合使用。為此,動態音訊正規化器提供可選的壓縮(閾值)函數。如果(且僅當)啟用壓縮功能時,所有輸入幀都將在實際正規化過程之前通過柔膝閾值函數處理。簡而言之,閾值函數將修剪所有幅度超過特定閾值的樣本。但是,動態音訊正規化器並非簡單地應用固定的閾值。相反,閾值將針對每個個別幀進行調整。通常,較小的參數會導致更強的壓縮,反之亦然。不建議使用低於 3.0 的值,因為可能會出現可聽見的失真。

設定視窗重疊,以視窗大小的百分比表示。允許範圍為從 5095。預設值為 75%。將此設定為非常高的值會增加脈衝雜訊移除,但會使整個過程慢得多。

設定目標閾值。這指定將被正規化的音訊輸入的最低允許幅度水平。如果輸入幀音量高於此值,則幀將被正規化。否則,幀可能根本不會被正規化。預設值設定為 0,表示所有輸入幀都將被正規化。如果不想放大數位雜訊,此選項最有用。

channels, h

指定要濾波的聲道,預設情況下會濾波所有可用的聲道。

overlap, o

指定幀的重疊。如果設定為 0(預設值),則不進行幀重疊。使用 >0 和 <1 的值將進行不太保守的增益調整,就像當 framelen 選項設定為較小值時一樣,如果 framelen 選項值針對非零重疊進行補償,則增益調整在時間上將比零重疊情況更平滑。

curve, v

指定峰值映射曲線表達式,該表達式將用於計算應用於幀的增益。最大輸出幀增益仍將受到此濾波器先前提及的其他選項的限制。

pulse

新增脈衝訊號。

預設值為 dc

計算音訊串流的導數/積分。

依序套用兩個濾鏡會產生原始音訊。

將頻譜動態範圍控制器濾鏡套用於輸入音訊串流。

transfer

設定傳輸表達式。

表達式可以包含以下常數

ch

目前聲道號碼

sn

當前幀峰值

8.85.1 指令

此濾鏡支援以上所有選項作為 commands

8.86 earwax

使音訊在耳機上更容易聆聽。

此濾波器向 44.1kHz 立體聲(即音訊 CD 格式)音訊添加「提示」,以便在耳機上聆聽時,立體聲影像從您的頭部內部(耳機的標準)移動到聽者外部和前方(喇叭的標準)。

從 SoX 移植。

8.87 equalizer

套用雙極峰值等化 (EQ) 濾波器。使用此濾波器,可以在選定頻率及其周圍增加或減少訊號水平,同時(與帶通和帶阻濾波器不同)所有其他頻率的訊號水平保持不變。

為了產生複雜的等化曲線,可以多次給定此濾波器,每次使用不同的中心頻率。

濾鏡接受以下選項

frequency, f

設定濾波器的中心頻率,單位為 Hz。

width_type, t

設定指定濾波器頻寬的方法。

h

Hz

q

Q 因子

o

octave

s

斜率

k

kHz

width, w

以 width_type 單位指定濾波器的頻寬。

end

設定所需的增益或衰減,單位為 dB。使用正增益時請注意削波 (clipping)。

mix, m

輸出中使用濾波訊號的量。預設值為 1。範圍介於 0 和 1 之間。

channels, c

指定要濾波的聲道,預設情況下會濾波所有可用聲道。

normalize, n

正規化雙二階係數,預設為停用。啟用後,它將在 DC 將幅度響應正規化為 0dB。

transform, a

設定 IIR 濾波器的轉換類型。

di
dii
tdi
tdii
latt
svf
zdf
precision, r

設定濾波精度。

auto

根據環繞濾波器選擇自動樣本格式。

s16

始終使用有符號 16 位元。

s32

始終使用有符號 32 位元。

f32

始終使用浮點 32 位元。

f64

始終使用浮點 64 位元。

frequency

設定傾斜的中心頻率,單位為 Hz。預設值為 10000 Hz。

傾斜方向

8.87.1 範例

  • 在 1000 Hz 衰減 10 dB,頻寬為 200 Hz
    equalizer=f=1000:t=h:width=200:g=-10
    
  • 在 1000 Hz 套用 2 dB 增益,Q 值為 1,並在 100 Hz 衰減 5 dB,Q 值為 2
    equalizer=f=1000:t=q:w=1:g=2,equalizer=f=100:t=q:w=2:g=-5
    

8.87.2 指令

此濾波器支援以下指令

frequency, f

變更等化器頻率。指令的語法為:「<var>frequency</var>」

width_type, t

變更等化器 width_type。指令的語法為:「<var>width_type</var>」

width, w

變更等化器寬度。指令的語法為:「<var>width</var>」

end

變更等化器增益。指令的語法為:「<var>gain</var>」

mix, m

變更等化器混音。指令的語法為:「<var>mix</var>」

8.88 extrastereo

線性地增加左右聲道之間的差異,這為播放添加某種「現場」效果。

濾鏡接受以下選項

m

設定差異係數(預設值:2.5)。0.0 表示單聲道聲音(兩個聲道的平均值),1.0 表示聲音不變,-1.0 表示左右聲道將被交換。

c

啟用削波 (clipping)。預設為啟用。

8.88.1 指令

此濾鏡支援以上所有選項作為 commands

8.89 firequalizer

使用任意頻率響應套用 FIR 等化。

stages

增益 (gain)

設定增益曲線方程式(單位為 dB)。表達式可以包含變數

nb_channels

已評估的頻率

ch

目前聲道號碼

新增脈衝訊號。

聲道號碼,當停用多聲道評估時設定為 0

chid

聲道 ID,請參閱 libavutil/channel_layout.h,當停用多聲道評估時設定為第一個聲道 ID

chs

transfer

例如,要將每幀樣本數設定為 1234 並停用最後一幀的填充,請使用

channel_layout,請參閱 libavutil/channel_layout.h

和函數

gain_interpolate(f)

根據 gain_entry 在頻率 f 上插值增益

cubic_interpolate(f)

與 gain_interpolate 相同,但更平滑

此選項也可用作指令。預設值為 gain_interpolate(f)

gain_entry

為 gain_interpolate 函數設定增益條目。表達式可以包含函數

entry(f, g)

以值 g 在頻率 f 處儲存增益條目

此選項也可用作指令。

確保音訊輸出將至少包含 10000 個樣本,如果需要,則在輸入中填充靜音

設定濾波器延遲,單位為秒。值越高表示越準確。預設值為 0.01

accuracy

設定濾波器準確度,單位為 Hz。值越低表示越準確。預設值為 5

wfunc

設定視窗函數。可接受的值為

rectangular

矩形視窗,當增益曲線已經平滑時很有用

hann

漢恩 (hann) 視窗(預設值)

hamming

漢明 (hamming) 視窗

blackman

布萊克曼 (blackman) 視窗

nuttall3

3 項連續一階導數納塔爾 (nuttall) 視窗

mnuttall3

最小 3 項不連續納塔爾 (nuttall) 視窗

nuttall

4 項連續一階導數納塔爾 (nuttall) 視窗

bnuttall

最小 4 項不連續納塔爾 (nuttall)(布萊克曼-納塔爾 (blackman-nuttall))視窗

bharris

布萊克曼-哈里斯 (blackman-harris) 視窗

tukey

圖基 (tukey) 視窗

fixed

如果啟用,則使用固定數量的音訊樣本。這提高了使用大延遲進行濾波時的速度。預設為停用。

multi

在增益上啟用多聲道評估。預設為停用。

zero_phase

通過減去時間戳以補償延遲來啟用零相位模式。預設為停用。

scale

設定增益使用的比例。可接受的值為

linlin

線性頻率,線性增益

linlog

線性頻率,對數(以 dB 為單位)增益(預設值)

loglin

對數(在 20 Hz 為 0 的八度音階中)頻率,線性增益

loglog

對數頻率,對數增益

dumpfile

設定用於轉儲的檔案,適用於 gnuplot。

dumpscale

設定 dumpfile 的比例。可接受的值與 scale 選項相同。預設值為 linlog。

fft2

啟用使用複數 FFT 的 2 聲道迴旋積。這顯著提高了速度。預設為停用。

min_phase

啟用最小相位脈衝響應。預設為停用。

8.89.1 範例

  • 在 1000 Hz 的低通濾波器
    firequalizer=gain='if(lt(f,1000), 0, -INF)'
    
  • 在 1000 Hz 的低通濾波器,帶有 gain_entry
    firequalizer=gain_entry='entry(1000,0); entry(1001, -INF)'
    
  • 自訂等化
    firequalizer=gain_entry='entry(100,0); entry(400, -4); entry(1000, -6); entry(2000, 0)'
    
  • 具有零相位以補償延遲的更高延遲
    firequalizer=delay=0.1:fixed=on:zero_phase=on
    
  • 左聲道的低通濾波器,右聲道的高通濾波器
    firequalizer=gain='if(eq(chid,1), gain_interpolate(f), if(eq(chid,2), gain_interpolate(1e6+f), 0))'
    :gain_entry='entry(1000, 0); entry(1001,-INF); entry(1e6+1000,0)':multi=on
    

8.90 flanger

對音訊套用鑲邊 (flanging) 效果。

濾鏡接受以下選項

確保音訊輸出將至少包含 10000 個樣本,如果需要,則在輸入中填充靜音

設定基礎延遲,單位為毫秒。範圍從 0 到 30。預設值為 0。

深度 (depth)

設定新增的掃頻延遲,單位為毫秒。範圍從 0 到 10。預設值為 2。

regen

設定再生百分比(延遲訊號回饋)。範圍從 -95 到 95。預設值為 0。

設定心理聲學削波器的迭代次數。允許範圍為 1 到 20。預設值為 10。

設定與原始訊號混合的延遲訊號的百分比。範圍從 0 到 100。預設值為 71。

設定輸入增益。預設值為 0.4。

設定每秒掃頻次數 (Hz)。範圍從 0.1 到 10。預設值為 0.5。

形狀 (shape)

設定掃頻波形狀,可以是 <var>triangular</var> 或 <var>sinusoidal</var>。預設值為 <var>sinusoidal</var>。

相位 (phase)

設定多聲道的掃頻波形百分比偏移。範圍從 0 到 100。預設值為 25。

interp

設定延遲線插值,<var>linear</var> 或 <var>quadratic</var>。預設值為 <var>linear</var>。

8.91 haas

對音訊套用哈斯 (Haas) 效果。

請注意,這最適合應用於單聲道訊號。將此濾波器應用於單聲道訊號,可以賦予其方向性並擴展其立體聲影像。

濾鏡接受以下選項

level_in

設定輸入音量。預設值為 <var>1</var>,或 0dB

level_out

設定輸出音量。預設值為 <var>1</var>,或 0dB。

side_gain

設定應用於訊號側邊部分的增益。預設值為 <var>1</var>。

middle_source

設定中間訊號源的種類。可以是以下之一

‘<samp>left</samp>’

選擇左聲道。

‘<samp>right</samp>’

選擇右聲道。

‘<samp>mid</samp>’

選擇立體聲影像的中間部分訊號。

‘<samp>side</samp>’

選擇立體聲影像的側邊部分訊號。

middle_phase

變更中間相位。預設為停用。

left_delay

設定左聲道延遲。預設值為 <var>2.05</var> 毫秒。

left_balance

設定左聲道平衡。預設值為 <var>-1</var>。

left_gain

設定左聲道增益。預設值為 <var>1</var>。

left_phase

變更左相位。預設為停用。

right_delay

設定右聲道延遲。預設值為 <var>2.12</var> 毫秒。

right_balance

設定右聲道平衡。預設值為 <var>1</var>。

right_gain

設定右聲道增益。預設值為 <var>1</var>。

right_phase

變更右相位。預設為啟用。

8.92 hdcd

解碼高解析度相容數位 (HDCD) 數據。具有嵌入式 HDCD 代碼的 16 位元 PCM 流被擴展為 20 位元 PCM 流。

此濾波器支援 HDCD 的峰值擴展和低音量增益調整功能,並偵測瞬態濾波器標誌。

ffmpeg -i HDCD16.flac -af hdcd OUT24.flac

將此濾波器與 wav 結合使用時,請注意 wav 的預設編碼為 16 位元,因此產生的 20 位元流將被截斷回 16 位元。在濾波器後使用類似 -acodec pcm_s24le 的命令,以獲得 24 位元 PCM 輸出。

ffmpeg -i HDCD16.wav -af hdcd OUT16.wav
ffmpeg -i HDCD16.wav -af hdcd -c:a pcm_s24le OUT24.wav

濾鏡接受以下選項

disable_autoconvert

停用濾波器圖中的任何自動格式轉換或重新取樣。

process_stereo

一起處理立體聲聲道。如果聲道之間的 target_gain 不匹配,則視為無效並使用最後一個有效的 target_gain。

cdt_ms

設定代碼偵測計時器週期,單位為毫秒。

force_pe

即使未發出 PE 訊號,也始終擴展高於 -3dBFS 的峰值。

analyze_mode

用純音取代音訊並調整幅度以指示解碼過程的某些特定方面。輸出檔案可以與原始檔案一起載入音訊編輯器中,以協助分析。

analyze_mode=pe:force_pe=true 可用於查看 PE 水平以上的所有樣本。

模式為

‘<samp>0, off</samp>’

停用

‘<samp>1, lle</samp>’

每個樣本的增益調整水平

‘<samp>2, pe</samp>’

發生峰值擴展的樣本

‘<samp>3, cdt</samp>’

代碼偵測計時器處於活動狀態的樣本

‘<samp>4, tgm</samp>’

聲道之間的目標增益不匹配的樣本

8.93 headphone

套用頭部相關傳輸函數 (HRTF) 以在使用者周圍創建虛擬喇叭,以便通過耳機進行雙耳聆聽。HRIR 通過額外的流提供,每個聲道需要一個立體聲輸入流。

濾鏡接受以下選項

block_size, b

設定用於迴旋積的輸入流映射。參數是以「|」分隔的聲道名稱列表,順序與它們作為濾波器的額外流輸入給出的順序相同。這也指定了輸入流的數量。輸入流的數量必須不小於第一個流中的聲道數加一。

增益 (gain)

設定應用於音訊的增益。值以 dB 為單位。預設值為 0。

將第二個聲道延遲 500 個樣本,將第三個聲道延遲 700 個樣本,並保持第一個聲道(和可能存在的任何其他聲道)不變。

設定處理類型。可以是 <var>time</var> 或 <var>freq</var>。<var>time</var> 是在時域中處理音訊,速度較慢。<var>freq</var> 是在頻域中處理音訊,速度較快。預設值為 <var>freq</var>。

lfe

設定 LFE 聲道的自訂增益。值以 dB 為單位。預設值為 0。

size

設定幀大小,單位為樣本數,將一次處理。預設值為 <var>1024</var>。允許範圍為 1024 到 96000。

hrir

設定 hrir 流的格式。預設值為 <var>stereo</var>。替代值為 <var>multich</var>。如果值設定為 <var>stereo</var>,則額外流的數量應大於或等於第一個輸入流中的輸入聲道數。此外,每個額外流應具有立體聲聲道數。如果值設定為 <var>multich</var>,則額外流的數量應正好為一個。此外,額外流的輸入聲道數應等於或大於第一個輸入流的聲道數的兩倍。

8.93.1 範例

  • 完整範例,使用 wav 檔案作為係數,並使用 amovie 濾波器進行 7.1 降混,每個 amovie 濾波器使用具有 IR 係數的立體聲檔案作為輸入。這些檔案提供每個虛擬喇叭位置的係數
    ffmpeg -i input.wav
    -filter_complex "amovie=azi_270_ele_0_DFC.wav[sr];amovie=azi_90_ele_0_DFC.wav[sl];amovie=azi_225_ele_0_DFC.wav[br];amovie=azi_135_ele_0_DFC.wav[bl];amovie=azi_0_ele_0_DFC.wav,asplit[fc][lfe];amovie=azi_35_ele_0_DFC.wav[fl];amovie=azi_325_ele_0_DFC.wav[fr];[0:a][fl][fr][fc][lfe][bl][br][sl][sr]headphone=FL|FR|FC|LFE|BL|BR|SL|SR"
    output.wav
    
  • 完整範例,使用 wav 檔案作為係數,並使用 amovie 濾波器進行 7.1 降混,但現在採用 <var>multich</var> <var>hrir</var> 格式。
    ffmpeg -i input.wav -filter_complex "amovie=minp.wav[hrirs];[0:a][hrirs]headphone=map=FL|FR|FC|LFE|BL|BR|SL|SR:hrir=multich"
    output.wav
    

8.94 highpass

套用 3dB 點頻率的高通濾波器。濾波器可以是單極或雙極(預設值)。濾波器滾降為每極每八度音程 6dB(每極每十年 20dB)。

濾鏡接受以下選項

frequency, f

設定頻率,單位為 Hz。預設值為 3000。

poles, p

end_pts

width_type, t

設定指定濾波器頻寬的方法。

h

Hz

q

Q 因子

o

octave

s

斜率

k

kHz

width, w

以 width_type 單位指定濾波器的頻寬。僅適用於雙極濾波器。預設值為 0.707q,並提供巴特沃斯 (Butterworth) 響應。

mix, m

輸出中使用濾波訊號的量。預設值為 1。範圍介於 0 和 1 之間。

channels, c

指定要濾波的聲道,預設情況下會濾波所有可用聲道。

normalize, n

正規化雙二階係數,預設為停用。啟用後,它將在 DC 將幅度響應正規化為 0dB。

transform, a

設定 IIR 濾波器的轉換類型。

di
dii
tdi
tdii
latt
svf
zdf
precision, r

設定濾波精度。

auto

根據環繞濾波器選擇自動樣本格式。

s16

始終使用有符號 16 位元。

s32

始終使用有符號 32 位元。

f32

始終使用浮點 32 位元。

f64

始終使用浮點 64 位元。

frequency

設定傾斜的中心頻率,單位為 Hz。預設值為 10000 Hz。

傾斜方向

8.94.1 指令

此濾波器支援以下指令

frequency, f

變更高通濾波器頻率。指令的語法為:「<var>frequency</var>」

width_type, t

變更高通濾波器 width_type。指令的語法為:「<var>width_type</var>」

width, w

變更高通濾波器寬度。指令的語法為:「<var>width</var>」

mix, m

變更高通濾波器混音。指令的語法為:「<var>mix</var>」

8.95 join

將多個輸入流合併為一個多聲道流。

它接受以下參數

inputs

輸入流的數量。預設值為 2。

請注意,當設定為非零值時,濾波器延遲將正好是這麼多樣本。

所需的輸出聲道佈局。預設值為立體聲。

block_size, b

將聲道從輸入映射到輸出。參數是以「|」分隔的映射列表,每個映射的格式為 <var>input_idx</var>.<var>in_channel</var>-<var>out_channel</var>。<var>input_idx</var> 是輸入流的從 0 開始的索引。<var>in_channel</var> 可以是輸入聲道的名稱(例如 FL 代表前置左聲道)或其在指定輸入流中的索引。<var>out_channel</var> 是輸出聲道的名稱。

當未明確指定映射時,濾波器將嘗試猜測映射。它通過首先嘗試找到未使用的匹配輸入聲道來完成此操作,如果失敗,則選擇第一個未使用的輸入聲道。

合併 3 個輸入(具有正確設定的聲道佈局)

ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex join=inputs=3 OUTPUT

從 6 個單聲道流建立 5.1 輸出

ffmpeg -i fl -i fr -i fc -i sl -i sr -i lfe -filter_complex
'join=inputs=6:channel_layout=5.1:map=0.0-FL|1.0-FR|2.0-FC|3.0-SL|4.0-SR|5.0-LFE'
out

8.96 ladspa

載入 LADSPA(Linux 音訊開發人員簡易外掛程式 API)外掛程式。

要啟用此濾波器的編譯,您需要使用 --enable-ladspa 配置 FFmpeg。

file, f

指定要載入的 LADSPA 外掛程式庫的名稱。如果定義了環境變數 LADSPA_PATH,則 LADSPA 外掛程式將在 LADSPA_PATH 中以冒號分隔的列表指定的每個目錄中搜尋,否則在標準 LADSPA 路徑中搜尋,順序如下:<samp>HOME/.ladspa/lib/</samp>、<samp>/usr/local/lib/ladspa/</samp>、<samp>/usr/lib/ladspa/</samp>。

plugin, p

指定庫中的外掛程式。某些庫僅包含一個外掛程式,但其他庫包含許多外掛程式。如果未設定此項,濾波器將列出指定庫中的所有可用外掛程式。

controls, c

設定「|」分隔的控制項列表,這些控制項是零個或多個浮點值,用於確定載入的外掛程式的行為(例如延遲、閾值或增益)。控制項需要使用以下語法定義:c0=<var>value0</var>|c1=<var>value1</var>|c2=<var>value2</var>|...,其中 <var>valuei</var> 是在第 <var>i</var> 個控制項上設定的值。或者,它們也可以使用以下語法定義:<var>value0</var>|<var>value1</var>|<var>value2</var>|...,其中 <var>valuei</var> 是在第 <var>i</var> 個控制項上設定的值。如果 <samp>controls</samp> 設定為 help,則會印出所有可用的控制項及其有效範圍。

sample_rate, s

指定取樣率,預設值為 44100。僅在外掛程式具有零輸入時使用。

nb_samples, n

設定每個輸出幀中每個聲道的樣本數,預設值為 1024。僅在外掛程式具有零輸入時使用。

duration, d

設定來源音訊的最小持續時間。請參閱 <a href="ffmpeg-utils.html#time-duration-syntax">(ffmpeg-utils)ffmpeg-utils(1) 手冊中的時間持續時間章節</a>,了解接受的語法。請注意,結果持續時間可能大於指定的持續時間,因為產生的音訊始終在完整幀的末尾被剪切。如果未指定,或表示的持續時間為負數,則音訊應永久產生。僅在外掛程式具有零輸入時使用。

latency, l

啟用延遲補償,預設為停用。僅在外掛程式具有輸入時使用。

8.96.1 範例

  • 列出 amp(LADSPA 範例外掛程式)庫中的所有可用外掛程式
    ladspa=file=amp
    
  • 列出 VCF 庫中 vcf_notch 外掛程式的所有可用控制項及其有效範圍
    ladspa=f=vcf:p=vcf_notch:c=help
    
  • 使用 Computer Music Toolkit (CMT) 外掛程式庫模擬低品質音訊設備
    ladspa=file=cmt:plugin=lofi:controls=c0=22|c1=12|c2=12
    
  • 使用 TAP-plugins(Tom’s Audio Processing plugins)向音訊添加殘響
    ladspa=file=tap_reverb:tap_reverb
    
  • 產生白雜訊,振幅為 0.2
    ladspa=file=cmt:noise_source_white:c=c0=.2
    
  • 使用 C* Audio Plugin Suite (CAPS) 庫中的外掛程式 C* Click - Metronome 產生 20 bpm 的滴答聲
    ladspa=file=caps:Click:c=c1=20'
    
  • 套用 C* Eq10X2 - Stereo 10-band equaliser 效果
    ladspa=caps:Eq10X2:c=c0=-48|c9=-24|c3=12|c4=2
    
  • 使用 Steve Harris SWH Plugins 合集中的快速前瞻限制器將音量增加 20dB
    ladspa=fast_lookahead_limiter_1913:fastLookaheadLimiter:20|0|2
    
  • 使用 Steve Harris SWH Plugins 合集中的 Multiband EQ 衰減低頻
    ladspa=mbeq_1197:mbeq:-24|-24|-24|0|0|0|0|0|0|0|0|0|0|0|0
    
  • 使用 C* Audio Plugin Suite (CAPS) 庫中的 Narrower 縮減立體聲影像
    ladspa=caps:Narrower
    
  • 另一個白雜訊,現在使用 C* Audio Plugin Suite (CAPS) 庫
    ladspa=caps:White:.2
    
  • 一些碎形雜訊,使用 C* Audio Plugin Suite (CAPS) 庫
    ladspa=caps:Fractal:c=c1=1
    
  • 使用 VLevel 外掛程式進行動態音量正規化
    ladspa=vlevel-ladspa:vlevel_mono
    

8.96.2 指令

此濾波器支援以下指令

cN

修改第 <var>N</var> 個控制值。

如果指定的值無效,則會被忽略並保留先前的值。

8.97 loudnorm

EBU R128 響度正規化。包括動態和線性正規化模式。支援單次傳遞(直播、檔案)和雙次傳遞(檔案)模式。此演算法可以針對 IL、LRA 和最大真實峰值。在動態模式下,為了準確偵測真實峰值,音訊流將被升取樣至 192 kHz。使用 -ar 選項或 aresample 濾波器來明確設定輸出取樣率。

濾鏡接受以下選項

I, i

設定整合響度目標。範圍為 -70.0 - -5.0。預設值為 -24.0。

LRA, lra

設定響度範圍目標。範圍為 1.0 - 50.0。預設值為 7.0。

TP, tp

設定最大真實峰值。範圍為 -9.0 - +0.0。預設值為 -2.0。

measured_I, measured_i

輸入檔案的測量 IL。範圍為 -99.0 - +0.0。

measured_LRA, measured_lra

輸入檔案的測量 LRA。範圍為 0.0 - 99.0。

measured_TP, measured_tp

輸入檔案的測量真實峰值。範圍為 -99.0 - +99.0。

measured_thresh

輸入檔案的測量閾值。範圍為 -99.0 - +0.0。

offset

設定偏移增益。增益在真實峰值限制器之前應用。範圍為 -99.0 - +99.0。預設值為 +0.0。

linear

通過線性縮放來源音訊進行正規化。必須指定 measured_Imeasured_LRAmeasured_TPmeasured_thresh。目標 LRA 不應低於來源 LRA,並且整合響度的變化不應導致真實峰值超過目標 TP。如果未滿足任何這些條件,正規化模式將恢復為 <var>dynamic</var>。選項為 truefalse。預設值為 true

dual_mono

將單聲道輸入檔案視為「雙單聲道」。如果單聲道檔案旨在在立體聲系統上播放,則其 EBU R128 測量在感知上將不正確。如果設定為 true,則此選項將補償此效果。多聲道輸入檔案不受此選項的影響。選項為 true 或 false。預設值為 false。

print_format

設定統計資訊的列印格式。選項為 summary、json 或 none。預設值為 none。

8.98 lowpass

套用 3dB 點頻率的低通濾波器。濾波器可以是單極或雙極(預設值)。濾波器滾降為每極每八度音程 6dB(每極每十年 20dB)。

濾鏡接受以下選項

frequency, f

設定頻率,單位為 Hz。預設值為 500。

poles, p

end_pts

width_type, t

設定指定濾波器頻寬的方法。

h

Hz

q

Q 因子

o

octave

s

斜率

k

kHz

width, w

以 width_type 單位指定濾波器的頻寬。僅適用於雙極濾波器。預設值為 0.707q,並提供巴特沃斯 (Butterworth) 響應。

mix, m

輸出中使用濾波訊號的量。預設值為 1。範圍介於 0 和 1 之間。

channels, c

指定要濾波的聲道,預設情況下會濾波所有可用聲道。

normalize, n

正規化雙二階係數,預設為停用。啟用後,它將在 DC 將幅度響應正規化為 0dB。

transform, a

設定 IIR 濾波器的轉換類型。

di
dii
tdi
tdii
latt
svf
zdf
precision, r

設定濾波精度。

auto

根據環繞濾波器選擇自動樣本格式。

s16

始終使用有符號 16 位元。

s32

始終使用有符號 32 位元。

f32

始終使用浮點 32 位元。

f64

始終使用浮點 64 位元。

frequency

設定傾斜的中心頻率,單位為 Hz。預設值為 10000 Hz。

傾斜方向

8.98.1 範例

  • 僅對 LFE 聲道進行低通濾波,如果不存在 LFE 聲道,則不執行任何操作
    lowpass=c=LFE
    

8.98.2 指令

此濾波器支援以下指令

frequency, f

變更低通濾波器頻率。指令的語法為:「<var>frequency</var>」

width_type, t

變更低通濾波器 width_type。指令的語法為:「<var>width_type</var>」

width, w

變更低通濾波器寬度。指令的語法為:「<var>width</var>」

mix, m

變更低通濾波器混音。指令的語法為:「<var>mix</var>」

8.99 lv2

載入 LV2(LADSPA 版本 2)外掛程式。

要啟用此濾波器的編譯,您需要使用 --enable-lv2 配置 FFmpeg。

plugin, p

指定外掛程式 URI。您可能需要跳脫字元「:」。

controls, c

設定「|」分隔的控制項列表,這些控制項是零個或多個浮點值,用於確定載入的外掛程式的行為(例如延遲、閾值或增益)。如果 <samp>controls</samp> 設定為 help,則會印出所有可用的控制項及其有效範圍。

sample_rate, s

指定取樣率,預設值為 44100。僅在外掛程式具有零輸入時使用。

nb_samples, n

設定每個輸出幀中每個聲道的樣本數,預設值為 1024。僅在外掛程式具有零輸入時使用。

duration, d

設定來源音訊的最小持續時間。請參閱 <a href="ffmpeg-utils.html#time-duration-syntax">(ffmpeg-utils)ffmpeg-utils(1) 手冊中的時間持續時間章節</a>,了解接受的語法。請注意,結果持續時間可能大於指定的持續時間,因為產生的音訊始終在完整幀的末尾被剪切。如果未指定,或表示的持續時間為負數,則音訊應永久產生。僅在外掛程式具有零輸入時使用。

8.99.1 範例

  • 套用 Calf 的低音增強器外掛程式
    lv2=p=http\\\\://calf.sourceforge.net/plugins/BassEnhancer:c=amount=2
    
  • 套用 Calf 的黑膠唱片外掛程式
    lv2=p=http\\\\://calf.sourceforge.net/plugins/Vinyl:c=drone=0.2|aging=0.5
    
  • 套用 ArtyFX 的位元破壞器外掛程式
    lv2=p=http\\\\://www.openavproductions.com/artyfx#bitta:c=crush=0.3
    

8.99.2 指令

此濾波器支援外掛程式作為指令匯出的所有選項。

8.100 mcompand

多頻段壓縮或擴展音訊的動態範圍。

輸入音訊使用 4 階林克維茨-瑞利 (Linkwitz-Riley) IIR 分頻器分為多個頻段。這類似於喇叭的分頻器,並且在沒有壓縮器動作時會產生平坦的頻率響應。

它接受以下參數

args

此選項語法為:attack,decay,[attack,decay..] soft-knee points crossover_frequency [delay [initial_volume [gain]]] | attack,decay ... 有關每個項目的說明,請參閱 compand 濾波器文件。

8.101 pan

以特定的增益水平混合聲道。此濾波器接受輸出聲道佈局,後跟一組聲道定義。

此濾波器也旨在有效率地重新映射音訊流的聲道。

此濾波器接受以下形式的參數:「<var>l</var>|<var>outdef</var>|<var>outdef</var>|...」

l

輸出聲道佈局或聲道數

outdef

輸出聲道規格,格式為:「<var>out_name</var>=[<var>gain</var>*]<var>in_name</var>[(+-)[<var>gain</var>*]<var>in_name</var>...]」

out_name

要定義的輸出聲道,可以是聲道名稱(FL、FR 等)或聲道號碼(c0、c1 等)

增益 (gain)

聲道的乘法係數,1 表示音量不變

in_name

要使用的輸入聲道,請參閱 out_name 以了解詳細資訊;無法混合命名和編號的輸入聲道

如果聲道規格中的「=」被「<」取代,則該規格的增益將被重新正規化,以使總和為 1,從而避免削波雜訊。

8.101.1 混音範例

例如,如果您想從立體聲降混到單聲道,但左聲道的因子更大

pan=1c|c0=0.9*c0+0.1*c1

自訂降混到立體聲,可自動適用於 3 聲道、4 聲道、5 聲道和 7 聲道環繞聲

pan=stereo| FL < FL + 0.5*FC + 0.6*BL + 0.6*SL | FR < FR + 0.5*FC + 0.6*BR + 0.6*SR

請注意,除非您有非常特殊的需求,否則應優先使用 ffmpeg 整合的預設降混(和升混)系統(請參閱 "-ac" 選項)。

8.101.2 重新映射範例

聲道重新映射將在以下情況下有效,且僅在以下情況下有效

  • 增益係數為零或一,
  • 每個聲道輸出僅一個輸入,

如果所有這些條件都滿足,濾波器將通知使用者(「偵測到純聲道映射」),並使用最佳化且無損的方法進行重新映射。

例如,如果您有一個 5.1 來源,並想通過捨棄額外聲道來獲得立體聲音訊流

pan="stereo| c0=FL | c1=FR"

給定相同的來源,您也可以切換前置左聲道和前置右聲道,並保持輸入聲道佈局

pan="5.1| c0=c1 | c1=c0 | c2=c2 | c3=c3 | c4=c4 | c5=c5"

如果輸入是立體聲音訊流,您可以使用以下命令將前置左聲道靜音(並仍然保持立體聲聲道佈局)

pan="stereo|c1=c1"

仍然使用立體聲音訊流輸入,您可以將右聲道複製到前置左聲道和右聲道

pan="stereo| c0=FR | c1=FR"

8.102 replaygain

ReplayGain 掃描器濾波器。此濾波器將音訊流作為輸入並按原樣輸出。在濾波結束時,它會顯示 track_gaintrack_peak

此濾波器接受以下匯出的唯讀選項

track_gain

在流結束時匯出的軌道增益,單位為 dB。

track_peak

在流結束時匯出的軌道峰值。

8.103 resample

轉換音訊樣本格式、取樣率和聲道佈局。不應直接使用。

8.104 rubberband

使用 librubberband 套用時間伸縮和音調偏移。

要啟用此濾波器的編譯,您需要使用 --enable-librubberband 配置 FFmpeg。

濾鏡接受以下選項

feedback

設定速度縮放因子。

pitch

設定音調縮放因子。

transients

設定瞬態偵測器。可能的值為

crisp
mixed
smooth
detector

設定偵測器。可能的值為

compound
percussive
soft
相位 (phase)

設定相位。可能的值為

laminar
independent
window

設定處理視窗大小。可能的值為

standard
short
long
smoothing

設定平滑。可能的值為

off
on
formant

在偏移音調時啟用共振峰保留。可能的值為

shifted
preserved
pitchq

設定音調品質。可能的值為

quality
設定輸入增益。預設值為 0.4。
consistency
取樣率

channels

設定聲道。可能的值為
apart

8.104.1 指令

此濾波器支援以下指令

feedback

設定延遲線回饋增益值。允許範圍為 0 到 1。預設值為 0.9。

pitch

together

8.105 sidechaincompress

變更濾波器音調縮放因子。指令的語法為:「<var>pitch</var>」

濾鏡接受以下選項

level_in

設定輸入增益。預設值為 1。範圍介於 0.015625 和 64 之間。

mode

設定壓縮器操作模式。可以是 upwarddownward。預設值為 downward

threshold

此濾波器的作用類似於普通壓縮器,但能夠使用第二個輸入訊號壓縮偵測到的訊號。它需要兩個輸入流並返回一個輸出流。第一個輸入流將根據第二個流訊號進行處理。然後,濾波後的訊號可以在處理的後續階段使用其他濾波器進行濾波。請參閱 <a href="#pan">pan</a> 和 <a href="#amerge">amerge</a> 濾波器。

ratio

如果第二個流的訊號升至此水平以上,則會影響第一個流的增益降低。預設值為 0.125。範圍介於 0.00097563 和 1 之間。

attack

訊號必須在臨界值之上上升多少毫秒才能開始增益衰減。預設值為 20。範圍介於 0.01 和 2000 之間。

release

訊號必須在臨界值之下下降多少毫秒,衰減才會再次減少。預設值為 250。範圍介於 0.01 和 9000 之間。

makeup

設定訊號在處理後將被放大多少。預設值為 1。範圍介於 1 和 64 之間。

knee

彎曲臨界值周圍的尖銳轉折點,以更柔和地進入增益衰減。預設值為 2.82843。範圍介於 1 和 8 之間。

link

設定訊號降低的比率。1:2 表示如果水平升高到閾值以上 4dB,則降低後將僅高出 2dB。預設值為 2。範圍介於 1 和 20 之間。

detection

選擇側鏈流的所有聲道之間的 average 水平或側鏈流的較響亮 (maximum) 聲道是否會影響降低。預設值為 average

peak 的情況下應採用精確訊號,還是在 rms 的情況下應採用 RMS 訊號。預設值為 rms,這主要是更平滑。

level_sc

mix

在輸出中使用壓縮訊號的程度。預設值為 1。範圍介於 0 和 1 之間。

8.105.1 指令

此濾鏡支援以上所有選項作為 commands

8.105.2 範例

  • 設定側鏈增益。預設值為 1。範圍介於 0.015625 和 64 之間。
    ffmpeg -i main.flac -i sidechain.flac -filter_complex "[1:a]asplit=2[sc][mix];[0:a][sc]sidechaincompress[compr];[compr][mix]amerge"
    

8.106 sidechaingate

完整 ffmpeg 範例,採用 2 個音訊輸入,第一個輸入根據第二個輸入的訊號進行壓縮,然後將壓縮後的訊號與第二個輸入合併

濾鏡接受以下選項

level_in

設定濾波前的輸入音量。預設值為 1。允許範圍為 0.015625 到 64。

mode

設定操作模式。可以是 upwarddownward。預設值為 downward。如果設定為 upward 模式,則訊號的較高部分將被放大,向上擴展動態範圍。否則,在 downward 模式下,訊號的較低部分將被減少。

設定用於偵測濾鏡的偵測頻率(以 Hz 為單位),該偵測濾鏡用於觸發等化。預設值為 1000 Hz。允許範圍介於 2 和 1000000 Hz 之間。

設定訊號低於閾值時的增益減少量。預設值為 0.06125。允許範圍為 0 到 1。將其設定為 0 會停用減少,然後濾波器的行為類似於擴展器。

threshold

如果訊號上升到此水平以上,則會釋放增益減少。預設值為 0.125。允許範圍為 0 到 1。

ratio

側鏈閘的作用類似於普通(寬頻)閘,但能夠在將偵測到的訊號發送到增益降低階段之前對其進行濾波。通常,閘使用全頻訊號來偵測高於閾值的水平。例如:如果您從側鏈訊號中切斷所有低頻,則只有在高頻不夠的情況下,閘才會降低軌道的音量。使用此技術,您可以減少自然鼓的共振或消除嚴重失真吉他的悶音「隆隆聲」。它需要兩個輸入流並返回一個輸出流。第一個輸入流將根據第二個流訊號進行處理。

attack

訊號必須高於閾值多少毫秒才能停止增益減少。預設值為 20 毫秒。允許範圍為 0.01 到 9000。

release

訊號必須低於閾值多少毫秒才能再次增加減少量。預設值為 250 毫秒。允許範圍為 0.01 到 9000。

makeup

設定處理後訊號的放大倍數。預設值為 1。允許範圍為 1 到 64。

knee

使閾值周圍的尖銳轉折變彎曲,以更柔和地進入增益減少。預設值為 2.828427125。允許範圍為 1 到 8。

detection

設定訊號降低的比率。預設值為 2。允許範圍為 1 到 9000。

link

選擇應採用精確訊號進行偵測,還是應採用類似 RMS 的訊號。預設值為 rms。可以是 peak 或 rms。

peak 的情況下應採用精確訊號,還是在 rms 的情況下應採用 RMS 訊號。預設值為 rms,這主要是更平滑。

選擇所有聲道之間的平均水平還是較響亮的聲道影響降低。預設值為 average。可以是 average 或 maximum。

8.106.1 指令

此濾鏡支援以上所有選項作為 commands

8.107 silencedetect

設定側鏈增益。預設值為 1。範圍介於 0.015625 和 64 之間。

偵測音訊流中的靜音。

當偵測到輸入音訊音量小於或等於雜訊容限值且持續時間大於或等於最小偵測到的雜訊持續時間時,此濾波器會記錄訊息。

印出的時間和持續時間以秒為單位表示。lavfi.silence_startlavfi.silence_start.X 元數據鍵設定在時間戳等於或超過偵測持續時間的第一個幀上,並且它包含靜音的第一個幀的時間戳。

濾鏡接受以下選項

noise, n

lavfi.silence_durationlavfi.silence_duration.Xlavfi.silence_endlavfi.silence_end.X 元數據鍵設定在靜音之後的第一個幀上。如果啟用 <samp>mono</samp>,並且每個聲道都單獨評估,則使用帶有 <code>.X</code> 後綴的鍵,並且 <code>X</code> 對應於聲道號碼。

duration, d

設定雜訊容限。可以以 dB(如果指定值後附加「dB」)或振幅比率指定。預設值為 -60dB 或 0.001。

設定靜音持續時間,直到通知(預設值為 2 秒)。請參閱 <a href="ffmpeg-utils.html#time-duration-syntax">(ffmpeg-utils)ffmpeg-utils(1) 手冊中的時間持續時間章節</a>,了解接受的語法。

mono, m

8.107.1 範例

  • 單獨處理每個聲道,而不是組合處理。預設為停用。
    silencedetect=n=-50dB:d=5
    
  • 偵測 5 秒的靜音,雜訊容限為 -50dB
    ffmpeg -i silence.mp3 -af silencedetect=noise=0.0001 -f null -
    

8.108 silenceremove

使用 <code>ffmpeg</code> 的完整範例,以偵測 <samp>silence.mp3</samp> 中雜訊容限為 0.0001 的靜音

濾鏡接受以下選項

從音訊的開頭、中間或結尾移除靜音。

start_periods

此值用於指示是否應在音訊開頭修剪音訊。值為零表示不應從開頭修剪靜音。當指定非零值時,它會修剪音訊,直到找到非靜音。通常,當從音訊開頭修剪靜音時,<var>start_periods</var> 將為 <code>1</code>,但可以增加到更高的值以修剪所有音訊,直到特定的非靜音週期計數。預設值為 <code>0</code>。

start_duration

指定在停止修剪音訊之前必須偵測到非靜音的時間量。通過增加持續時間,突發雜訊可以被視為靜音並修剪掉。預設值為 <code>0</code>。

start_threshold

這表示應將哪個樣本值視為靜音。對於數位音訊,值 <code>0</code> 可能很好,但對於從類比錄製的音訊,您可能希望增加值以考慮背景雜訊。可以以 dB(如果指定值後附加「dB」)或振幅比率指定。預設值為 <code>0</code>。

start_silence

指定在修剪後將保留的開頭靜音的最大持續時間。預設值為 0,這等於修剪所有偵測為靜音的樣本。

start_mode

指定多聲道音訊開頭靜音結束偵測模式。可以是 <var>any</var> 或 <var>all</var>。預設值為 <var>any</var>。使用 <var>any</var> 時,從任何聲道偵測到的任何樣本為非靜音都將觸發音訊流開頭的靜音修剪結束。使用 <var>all</var> 時,只有當從每個聲道的每個樣本都偵測為非靜音時,才會觸發音訊流開頭的靜音修剪結束,使用受限。

stop_periods

設定從音訊結尾修剪靜音的計數。當指定正值時,它會在找到指定的靜音週期後修剪音訊。要從檔案中間移除靜音,請指定一個負數的 <var>stop_periods</var>。然後此值被視為正值,並用於指示效果應按 <var>stop_periods</var> 指定的方式重新開始處理,使其適用於移除音訊中間的靜音週期。預設值為 <code>0</code>。

stop_duration

指定必須存在的靜音持續時間,之後將不再複製音訊。通過指定更長的持續時間,可以將想要的靜音保留在音訊中。預設值為 <code>0</code>。

stop_threshold

這與 <samp>start_threshold</samp> 相同,但用於從音訊結尾修剪靜音。可以以 dB(如果指定值後附加「dB」)或振幅比率指定。預設值為 <code>0</code>。

stop_silence

指定在修剪後將保留的結尾靜音的最大持續時間。預設值為 0,這等於修剪所有偵測為靜音的樣本。

stop_mode

detection

指定多聲道音訊開始後靜音開始偵測模式。可以是 <var>any</var> 或 <var>all</var>。預設值為 <var>all</var>。使用 <var>any</var> 時,從任何聲道偵測到的任何樣本為靜音都將觸發音訊流開始後的靜音修剪開始,使用受限。使用 <var>all</var> 時,只有當從每個聲道的每個樣本都偵測為靜音時,才會觸發音訊流開始後的靜音修剪開始。

設定如何偵測靜音。

avg

移動視窗中樣本絕對值的平均值。

rms

移動視窗中樣本絕對值的均方根值。

peak

移動視窗中樣本絕對值的最大值。

median

移動視窗中樣本絕對值的中位數。

ptp

移動視窗中樣本的最大峰值與最小峰值差異的絕對值。

dev

移動視窗中樣本值的標準差。

window

預設值為 <code>rms</code>。

設定用於計算視窗大小(以樣本數為單位)以偵測靜音的持續時間,單位為秒。使用 <code>0</code> 將有效地停用任何視窗化,並且僅對每個聲道使用單個樣本進行靜音偵測。在這種情況下,可能還需要將 <samp>start_silence</samp> 和/或 <samp>stop_silence</samp> 設定為非零值,同時也將 <samp>start_duration</samp> 和/或 <samp>stop_duration</samp> 設定為非零值。預設值為 <code>0.02</code>。允許範圍為 <code>0</code> 到 <code>10</code>。

timestamp

設定每個音訊幀輸出時間戳的處理模式。

write

完整時間戳重寫,僅保留第一個輸出幀的開始時間。

copy

未丟棄的幀保留與輸入音訊幀相同時間戳。

8.108.1 範例

  • 預設值為 <code>write</code>。
    silenceremove=start_periods=1:start_duration=5:start_threshold=0.02
    
  • 以下範例示範如何使用此濾波器來開始錄音,該錄音不包含通常在按下錄音按鈕和表演開始之間發生的開頭延遲
    silenceremove=stop_periods=-1:stop_duration=1:stop_threshold=-90dB
    
  • 修剪從開頭到結尾遇到的所有靜音,其中音訊中有超過 1 秒的靜音
    silenceremove=window=0:detection=peak:stop_mode=all:start_mode=all:stop_periods=-1:stop_threshold=0
    
  • 使用峰值偵測,從開頭到結尾修剪所有數位靜音樣本,其中音訊中有超過 0 個數位靜音樣本,並且在流中相同位置的所有聲道中都偵測到數位靜音
    silenceremove=stop_periods=-2:stop_duration=1:stop_threshold=-90dB
    
  • 從開頭到結尾修剪每第 2 個遇到的靜音週期,其中每個靜音週期的音訊中有超過 1 秒的靜音
    silenceremove=stop_periods=-2:stop_duration=1:stop_threshold=-90dB:stop_silence=0.5
    
  • 與上面類似,但從每個修剪週期保留最多 0.5 秒的靜音
    silenceremove=stop_periods=-2:stop_duration=1:stop_threshold=-90dB:stop_silence=0.5:start_periods=1:start_duration=1:start_silence=1.5:stop_threshold=-90dB
    

8.108.2 指令

與上面類似,但從音訊開頭保留最多 1.5 秒的靜音

8.109 sofalizer

此濾波器支援以上一些選項作為 <a href="#commands">指令</a>。

SOFAlizer 使用頭部相關傳輸函數 (HRTF) 以在使用者周圍創建虛擬喇叭,以便通過耳機進行雙耳聆聽(支援最多 9 個聲道的音訊格式)。HRTF 儲存在 SOFA 檔案中(有關資料庫,請參閱 <a href="http://www.sofacoustics.org/">http://www.sofacoustics.org/</a>)。SOFAlizer 由奧地利科學院聲學研究所 (ARI) 開發。

濾鏡接受以下選項

要啟用此濾波器的編譯,您需要使用 <code>--enable-libmysofa</code> 配置 FFmpeg。

sofa

增益 (gain)

設定應用於音訊的增益。值以 dB 為單位。預設值為 0。

設定用於渲染的 SOFA 檔案。

rotation

設定虛擬喇叭的旋轉角度,單位為度。預設值為 0。

elevation

設定虛擬喇叭的仰角,單位為度。預設值為 0。

radius

將第二個聲道延遲 500 個樣本,將第三個聲道延遲 700 個樣本,並保持第一個聲道(和可能存在的任何其他聲道)不變。

設定處理類型。可以是 <var>time</var> 或 <var>freq</var>。<var>time</var> 是在時域中處理音訊,速度較慢。<var>freq</var> 是在頻域中處理音訊,速度較快。預設值為 <var>freq</var>。

設定喇叭與近場 HRTF 聽者之間的距離,單位為公尺。預設值為 1。

speakers

設定虛擬喇叭的自訂位置。此選項的語法為:<CH> <AZIM> <ELEV>[|<CH> <AZIM> <ELEV>|...]。每個虛擬喇叭都使用簡短的聲道名稱進行描述,後跟方位角和仰角,單位為度。每個虛擬喇叭描述都以「|」分隔。例如,要覆寫前置左聲道和前置右聲道位置,請使用:「speakers=FL 45 15|FR 345 15」。具有無法辨識的聲道名稱的描述將被忽略。

設定 LFE 聲道的自訂增益。值以 dB 為單位。預設值為 0。

lfegain

framesize

將每個輸入音訊串流的權重指定為以空格分隔的數字序列。如果指定的權重少於輸入數量,則最後一個權重將分配給剩餘的輸入。每個輸入的預設權重為 1。

設定自訂幀大小,單位為樣本數。預設值為 1024。允許範圍為 1024 到 96000。僅當選項「<samp>type</samp>」設定為 <var>freq</var> 時使用。

normalize

是否應在匯入 SOFA 檔案時正規化所有 IR。預設為啟用。

interpolate

如果精確位置不匹配,是否應將最近的 IR 與相鄰的 IR 內插。預設為停用。

minphase

在載入 SOFA 檔案時,對所有 IR 進行最小相位處理。預設為停用。

anglestep

設定相鄰搜尋角度步長。僅當啟用 <var>interpolate</var> 選項時使用。

8.109.1 範例

  • radstep
    sofalizer=sofa=/path/to/ClubFritz6.sofa:type=freq:radius=1
    
  • 設定相鄰搜尋半徑步長。僅當啟用 <var>interpolate</var> 選項時使用。
    sofalizer=sofa=/path/to/ClubFritz12.sofa:type=freq:radius=2:rotation=5
    
  • 使用 ClubFritz6 sofa 檔案
    "sofalizer=sofa=/path/to/ClubFritz6.sofa:type=freq:radius=2:speakers=FL 45|FR 315|BL 135|BR 225:gain=28"
    

8.110 speechnorm

使用 ClubFritz12 sofa 檔案和更大的半徑,並帶有小的旋轉

與上面類似,但具有前置左聲道、前置右聲道、後置左聲道和後置右聲道的自訂喇叭位置,以及自訂增益

濾鏡接受以下選項

peak, p

語音正規化器 (Speech Normalizer)。

此濾波器根據閾值擴展或壓縮音訊樣本的每個半週期(所有高於或所有低於零且在兩個最近的過零點之間的樣本的本地集合),因此音訊在受以下選項控制的條件下達到目標峰值。

peak_target, t

設定擴展目標峰值。這指定正規化音訊輸入的最高允許絕對幅度水平。預設值為 0.95。允許範圍為 0.0 到 1.0。

expansion, e

設定視窗重疊,以視窗大小的百分比表示。允許範圍為從 5095。預設值為 75%。將此設定為非常高的值會增加脈衝雜訊移除,但會使整個過程慢得多。

設定最大擴展因子。允許範圍為 1.0 到 50.0。預設值為 2.0。此選項控制樣本最大本地半週期擴展。最大擴展應使本地峰值達到目標峰值,但永遠不會超過它,並且新峰值與先前峰值之間的比例不會超過此選項值。

compression, c

設定最大壓縮因子。允許範圍為 1.0 到 50.0。預設值為 2.0。此選項控制樣本最大本地半週期壓縮。僅當 <samp>threshold</samp> 選項設定為大於 0.0 的值時才使用此選項,在這種情況下,當本地峰值低於或等於 <samp>threshold</samp> 設定的值時,屬於該峰值半週期的所有樣本將按當前壓縮因子壓縮。

threshold, h

設定閾值。預設值為 0.0。允許範圍為 0.0 到 1.0。此選項指定將壓縮哪些樣本的半週期,以及擴展哪些樣本的半週期。任何半週期樣本,如果其本地峰值低於或等於此選項值,將按當前壓縮因子壓縮,否則,如果大於閾值,它們將以擴展因子擴展,使其可以達到峰值目標值,但永遠不會超過它。

channels, h

指定要濾波的聲道,預設情況下會濾波所有可用的聲道。

raise, r

設定每個樣本半週期的擴展升高量。預設值為 0.001。允許範圍為 0.0 到 1.0。這控制擴展因子在每個新的半週期中升高速度,直到達到 <samp>expansion</samp> 值。將此選項設定得太高可能會導致失真。

fall, f

設定每個樣本半週期的壓縮升高量。預設值為 0.001。允許範圍為 0.0 到 1.0。這控制壓縮因子在每個新的半週期中升高速度,直到達到 <samp>compression</samp> 值。

invert, i

啟用反向濾波,預設為停用。這反轉了 <samp>threshold</samp> 選項的解釋。啟用後,任何半週期樣本,如果其本地峰值低於或等於 <samp>threshold</samp> 選項,將被擴展,否則將被壓縮。

8.110.1 指令

此濾鏡支援以上所有選項作為 commands

8.110.2 範例

  • link, l
    speechnorm=e=3:r=0.00001:l=1
    
  • 在計算應用於每個濾波聲道樣本的增益時連結聲道,預設為停用。停用後,每個濾波聲道增益計算都是獨立的,否則,當啟用此選項時,將使用每個濾波聲道的所有可能增益的最小值。
    speechnorm=e=6.25:r=0.00001:l=1
    
  • rms, m
    speechnorm=e=12.5:r=0.0001:l=1
    
  • 設定擴展目標 RMS 值。這指定正規化音訊輸入的最高允許 RMS 水平。預設值為 0.0,因此停用。允許範圍為 0.0 到 1.0。
    speechnorm=e=25:r=0.0001:l=1
    
  • 微弱且緩慢的放大
    speechnorm=e=50:r=0.0001:l=1
    

8.111 stereotools

中等且緩慢的放大

濾鏡接受以下選項

level_in

強烈且快速的放大

level_out

非常強烈且快速的放大

極端且快速的放大

此濾波器具有一些方便的工具來管理立體聲訊號、將 M/S 立體聲錄音轉換為 L/R 訊號,同時控制參數或擴展主軌的立體聲影像。

in_gain

設定濾波前兩個聲道的輸入音量。預設值為 1。允許範圍為 0.015625 到 64。

out_gain

設定濾波後兩個聲道的輸出音量。預設值為 1。允許範圍為 0.015625 到 64。

balance_in

設定兩個聲道之間的輸入平衡。預設值為 0。允許範圍為 -1 到 1。

balance_out

設定兩個聲道之間的輸出平衡。預設值為 0。允許範圍為 -1 到 1。

softclip

啟用柔削波 (softclipping)。產生類比失真而不是刺耳的數位 0dB 削波 (clipping)。預設為停用。

mutel

使左聲道靜音。預設為停用。

mode

muter

使右聲道靜音。預設為停用。

phasel

變更左聲道的相位。預設為停用。

phaser

變更右聲道的相位。預設為停用。

stereo_mode

設定立體聲模式。可用值為

‘<samp>lr>lr</samp>’

左/右到左/右,這是預設值。

‘<samp>lr>ms</samp>’

左/右到中/側。

‘<samp>ms>lr</samp>’

中/側到左/右。

‘<samp>lr>ll</samp>’

左/右到左/左。

‘<samp>lr>rr</samp>’

左/右到右/右。

‘<samp>lr>l+r</samp>’

左/右到左 + 右。

‘<samp>lr>rl</samp>’

左/右到右/左。

‘<samp>ms>ll</samp>’

中/側到左/左。

‘<samp>ms>rr</samp>’

中/側到右/右。

‘<samp>ms>rl</samp>’

中/側到右/左。

‘<samp>lr>l-r</samp>’

左/右到左 - 右。

slev

設定側邊訊號的音量。預設值為 1。允許範圍為 0.015625 到 64。

sbal

確保音訊輸出將至少包含 10000 個樣本,如果需要,則在輸入中填充靜音

設定側邊訊號的平衡。預設值為 0。允許範圍為 -1 到 1。

mlev

設定中間訊號的音量。預設值為 1。允許範圍為 0.015625 到 64。

相位 (phase)

mpan

設定中間訊號的聲像 (pan)。預設值為 0。允許範圍為 -1 到 1。

base

設定單聲道和反相聲道之間的立體聲基礎。預設值為 0。允許範圍為 -1 到 1。

delay

設定延遲,單位為毫秒,表示將左聲道從右聲道延遲多少,反之亦然。預設值為 0。允許範圍為 -20 到 20。

sclevel

設定 S/C 音量。預設值為 1。允許範圍為 1 到 100。

stereo_phase

設定立體聲相位,單位為度。預設值為 0。允許範圍為 0 到 360。

8.111.1 指令

此濾鏡支援以上所有選項作為 commands

8.111.2 範例

  • bmode_in, bmode_out
    stereotools=mlev=0.015625
    
  • 設定 balance_in/balance_out 選項的平衡模式。
    "stereotools=mode=ms>lr"
    

8.112 stereowiden

可以是以下之一

濾鏡接受以下選項

確保音訊輸出將至少包含 10000 個樣本,如果需要,則在輸入中填充靜音

‘<samp>balance</samp>’

樣本數

經典平衡模式。一次衰減一個聲道。增益最多提高到 1。

‘<samp>amplitude</samp>’

與上面的經典模式類似,但增益最多提高到 2。

‘<samp>power</samp>’

等功率分佈,範圍從 -6dB 到 +6dB。

8.112.1 指令

套用類似卡拉 OK 的效果

8.113 superequalizer

將 M/S 訊號轉換為 L/R

濾鏡接受以下選項

此濾波器通過抑制兩個聲道共有的訊號並通過將左聲道的訊號延遲到右聲道中,反之亦然,從而增強立體聲效果,從而擴大立體聲效果。

delay

將左訊號延遲到右訊號中以及反之亦然的時間,單位為毫秒。預設值為 20 毫秒。

level

延遲訊號到右訊號中以及反之亦然的增益量。產生左訊號在右輸出中以及反之亦然的延遲效果,從而產生擴展效果。預設值為 0.3。

crossfeed

將左訊號以反相饋送到右訊號中。這有助於抑制單聲道。如果值為 1,它將消除兩個聲道共有的所有訊號。預設值為 0.3。

drymix

設定原始聲道的輸入訊號音量。預設值為 0.8。

此濾波器支援除 <code>delay</code> 之外的所有上述選項作為 <a href="#commands">指令</a>。

套用 18 頻段等化器。

1b

設定 65Hz 頻段增益。

2b

設定 92Hz 頻段增益。

3b

設定 131Hz 頻段增益。

4b

設定 185Hz 頻段增益。

5b

設定 262Hz 頻段增益。

6b

設定 370Hz 頻段增益。

7b

設定 523Hz 頻段增益。

8b

設定 740Hz 頻段增益。

9b

設定 1047Hz 頻段增益。

10b

設定 1480Hz 頻段增益。

11b

設定 2093Hz 頻段增益。

12b

設定 2960Hz 頻段增益。

13b

8.114 surround

設定 4186Hz 頻段增益。

14b

濾鏡接受以下選項

設定 5920Hz 頻段增益。

15b

請參閱 (ffmpeg-utils)ffmpeg-utils(1) 手冊中的聲道佈局章節 以了解所需的語法。

設定 8372Hz 頻段增益。

16b

請參閱 (ffmpeg-utils)ffmpeg-utils(1) 手冊中的聲道佈局章節 以了解所需的語法。

level_in

設定 11840Hz 頻段增益。

level_out

17b

lfe

設定 16744Hz 頻段增益。

18b

設定 20000Hz 頻段增益。

套用音訊環繞升混濾波器。

此濾波器允許從音訊流產生多聲道輸出。

chl_out

設定輸出聲道佈局。預設情況下,這是 <var>5.1</var>。

smooth

chl_in

設定輸入聲道佈局。預設情況下,這是 <var>stereo</var>。

in_gain

設定輸入音量水平。預設情況下,這是 <var>1</var>。

out_gain

設定輸出音量水平。預設情況下,這是 <var>1</var>。

lfe

如果輸出聲道佈局具有 LFE 聲道,則啟用 LFE 聲道輸出。預設情況下,這是啟用的。

lfe_low

設定 LFE 低截止頻率。預設情況下,這是 <var>128</var> Hz。

lfe_high

設定 LFE 高截止頻率。預設情況下,這是 <var>256</var> Hz。

lfe_mode

設定 LFE 模式,可以是 <var>add</var> 或 <var>sub</var>。預設值為 <var>add</var>。在 <var>add</var> 模式下,LFE 聲道從輸入音訊創建並添加到輸出。在 <var>sub</var> 模式下,LFE 聲道從輸入音訊創建並添加到輸出,但所有非 LFE 輸出聲道也從輸出 LFE 聲道中減去。

smooth

設定時間平滑強度,用於在時間上轉換立體聲時逐漸改變因子。允許範圍為 <var>0.0</var> 到 <var>1.0</var>。使用大於 <var>0.0</var> 的 <var>focus</var> 選項值時,有助於提高輸出品質。預設值為 <var>0.0</var>。僅在此範圍內且沒有邊緣的值才有效。

angle

設定立體聲環繞聲轉換的角度,允許範圍為 <var>0</var> 到 <var>360</var>。預設值為 <var>90</var>。

focus

設定立體聲環繞聲轉換的焦點,允許範圍為 <var>-1</var> 到 <var>1</var>。預設值為 <var>0</var>。

fc_in

設定前置中央聲道輸入音量。預設情況下,這是 <var>1</var>。

fc_out

設定前置中央聲道輸出音量。預設情況下,這是 <var>1</var>。

fl_in

設定前置左聲道輸入音量。預設情況下,這是 <var>1</var>。

fl_out

設定前置左聲道輸出音量。預設情況下,這是 <var>1</var>。

fr_in

設定前置右聲道輸入音量。預設情況下,這是 <var>1</var>。

設定後置右聲道輸入音量。預設值為 1

br_out

設定後置右聲道輸出音量。預設值為 1

bc_in

設定後置中置聲道輸入音量。預設值為 1

bc_out

設定後置中置聲道輸出音量。預設值為 1

lfe_in

設定 LFE 輸入音量。預設值為 1

lfe_out

設定 LFE 輸出音量。預設值為 1

allx

設定立體聲影像在 X 軸上對於所有聲道的擴散使用量。允許範圍從 -115。預設值為負值 -1,因此未使用。

ally

設定立體聲影像在 Y 軸上對於所有聲道的擴散使用量。允許範圍從 -115。預設值為負值 -1,因此未使用。

fcx, flx, frx, blx, brx, slx, srx, bcx

設定立體聲影像在 X 軸上對於每個聲道的擴散使用量。允許範圍從 0.0615。預設值為 0.5

fcy, fly, fry, bly, bry, sly, sry, bcy

設定立體聲影像在 Y 軸上對於每個聲道的擴散使用量。允許範圍從 0.0615。預設值為 0.5

win_size

設定視窗大小。允許範圍從 102465536。預設大小為 4096

win_func

設定視窗函數。

設定叢發融合,以視窗大小的百分比表示。允許範圍為 010。預設值為 2。如果偵測為雜訊的任何兩個樣本之間的間隔小於此值,則這兩個樣本之間的任何樣本也將被偵測為雜訊。

rect
bartlett
hann, hanning
hamming
blackman
welch
flattop
bharris
bnuttall
bhann
sine
nuttall
lanczos
gauss
tukey
dolph
cauchy
parzen
poisson
bohman
kaiser

預設值為 hann

overlap

設定視窗重疊量。若設定為 1,將會選取建議用於所選視窗函數的重疊量。預設值為 0.5

8.115 tiltshelf

使用雙極性擱架式濾波器,以類似於標準高傳真音響的音調控制方式,增強或削減音訊的低頻,並削減或增強高頻。這也稱為擱架式等化 (EQ)。

濾鏡接受以下選項

end

指定將丟棄的第一個音訊樣本的時間,即時間戳記為 end 的音訊樣本之前的音訊樣本將是輸出中的最後一個樣本。

frequency, f

設定濾波器的中心頻率,因此可用於擴展或縮減要增強或削減的頻率範圍。預設值為 3000 Hz。

width_type, t

設定指定濾波器頻寬的方法。

h

Hz

q

Q 因子

o

octave

s

斜率

k

kHz

width, w

start 相同,不同之處在於此選項以樣本而不是秒為單位設定開始時間戳記。

poles, p

end_pts

mix, m

輸出中使用濾波訊號的量。預設值為 1。範圍介於 0 和 1 之間。

channels, c

指定要濾波的聲道,預設情況下會濾波所有可用聲道。

normalize, n

正規化雙二階係數,預設為停用。啟用後,它將在 DC 將幅度響應正規化為 0dB。

transform, a

設定 IIR 濾波器的轉換類型。

di
dii
tdi
tdii
latt
svf
zdf
precision, r

設定濾波精度。

auto

根據環繞濾波器選擇自動樣本格式。

s16

始終使用有符號 16 位元。

s32

始終使用有符號 32 位元。

f32

始終使用浮點 32 位元。

f64

始終使用浮點 64 位元。

frequency

設定傾斜的中心頻率,單位為 Hz。預設值為 10000 Hz。

傾斜方向

8.115.1 指令

此濾波器支援一些選項,如同 commands

8.116 treble, highshelf

使用雙極性擱架式濾波器,以類似於標準高傳真音響的音調控制方式,增強或削減音訊的高頻(高音)。這也稱為擱架式等化 (EQ)。

濾鏡接受以下選項

end

給出在約 22 kHz 和奈奎斯特頻率中較低者的增益。其可用範圍約為 -20(大幅削減)到 +20(大幅增強)。使用正增益時請注意削波。

frequency, f

設定濾波器的中心頻率,因此可用於擴展或縮減要增強或削減的頻率範圍。預設值為 3000 Hz。

width_type, t

設定指定濾波器頻寬的方法。

h

Hz

q

Q 因子

o

octave

s

斜率

k

kHz

width, w

start 相同,不同之處在於此選項以樣本而不是秒為單位設定開始時間戳記。

poles, p

end_pts

mix, m

輸出中使用濾波訊號的量。預設值為 1。範圍介於 0 和 1 之間。

channels, c

指定要濾波的聲道,預設情況下會濾波所有可用聲道。

normalize, n

正規化雙二階係數,預設為停用。啟用後,它將在 DC 將幅度響應正規化為 0dB。

transform, a

設定 IIR 濾波器的轉換類型。

di
dii
tdi
tdii
latt
svf
zdf
precision, r

設定濾波精度。

auto

根據環繞濾波器選擇自動樣本格式。

s16

始終使用有符號 16 位元。

s32

始終使用有符號 32 位元。

f32

始終使用浮點 32 位元。

f64

始終使用浮點 64 位元。

frequency

設定傾斜的中心頻率,單位為 Hz。預設值為 10000 Hz。

傾斜方向

8.116.1 指令

此濾波器支援以下指令

frequency, f

變更高音頻率。指令的語法為:「frequency」。

width_type, t

變更高音寬度類型。指令的語法為:「width_type」。

width, w

變更高音寬度。指令的語法為:「width」。

end

變更高音增益。指令的語法為:「gain」。

mix, m

變更高音混合。指令的語法為:「mix」。

8.117 tremolo

正弦波幅度調變。

濾鏡接受以下選項

nb_channels

調變頻率,單位為赫茲。次諧波範圍(20 赫茲或更低)內的調變頻率將產生顫音效果。此濾波器也可作為環狀調變器使用,方法是指定高於 20 赫茲的調變頻率。範圍為 0.1 - 20000.0。預設值為 5.0 赫茲。

d

調變深度,以百分比表示。範圍為 0.0 - 1.0。預設值為 0.5。

8.118 vibrato

正弦波相位調變。

濾鏡接受以下選項

nb_channels

調變頻率,單位為赫茲。範圍為 0.1 - 20000.0。預設值為 5.0 赫茲。

d

調變深度,以百分比表示。範圍為 0.0 - 1.0。預設值為 0.5。

8.119 virtualbass

套用音訊虛擬低音濾波器。

此濾波器接受立體聲輸入,並產生具有 LFE (2.1) 聲道輸出的立體聲。新產生的 LFE 聲道具有增強的虛擬低音,最初是從兩個立體聲聲道獲得的。此濾波器輸出前置左聲道和前置右聲道,與立體聲輸入中提供的聲道相同,未經變更。

濾鏡接受以下選項

訊號達到 Min_levelMax_level 的次數(不是樣本數)

設定虛擬低音截止頻率。預設值為 250 赫茲。允許範圍從 100 到 500 赫茲。

強度 (strength)

設定虛擬低音強度。允許範圍從 0.5 到 3。預設值為 3。

8.120 volume

調整輸入音訊音量。

它接受以下參數

音量 (volume)

設定音訊音量表達式。

輸出值會被削波到最大值。

輸出音訊音量由以下關係式給出

output_volume = volume * input_volume

volume 的預設值為「1.0」。

precision

此參數代表數學精度。

它決定了允許哪些輸入取樣格式,這會影響音量縮放的精度。

fixed

8 位元定點;這將輸入取樣格式限制為 U8、S16 和 S32。

float

32 位元浮點;這將輸入取樣格式限制為 FLT。(預設)

double

64 位元浮點;這將輸入取樣格式限制為 DBL。

replaygain

選擇在輸入訊框中遇到 ReplayGain 邊資訊時的行為。

drop

移除 ReplayGain 邊資訊,忽略其內容(預設)。

ignore

忽略 ReplayGain 邊資訊,但將其留在訊框中。

track

如果存在,優先使用音軌增益。

album

如果存在,優先使用專輯增益。

replaygain_preamp

以前置放大增益 (dB) 套用至選定的 replaygain 增益。

replaygain_preamp 的預設值為 0.0。

replaygain_noclip

透過限制套用的增益來防止削波。

replaygain_noclip 的預設值為 1。

eval

設定評估音量表達式的時機。

設定叢發融合,以視窗大小的百分比表示。允許範圍為 010。預設值為 2。如果偵測為雜訊的任何兩個樣本之間的間隔小於此值,則這兩個樣本之間的任何樣本也將被偵測為雜訊。

once

僅在濾波器初始化期間或傳送「volume」指令時評估表達式一次

frame

針對每個輸入訊框評估表達式

預設值為「once」。

音量表達式可以包含以下參數。

n

訊框編號(從零開始)

將頻譜動態範圍控制器濾鏡套用於輸入音訊串流。

transfer

nb_consumed_samples

濾波器消耗的取樣數

設定輸出取樣率。預設值為 44100 Hz。

nb_samples

pos

檔案中原始訊框位置;已棄用,請勿使用

pts

frame_pts

sample_rate

目前聲道號碼

startpts

串流開始時的 PTS

startt

串流開始時的時間

設定傳輸表達式。

frame_time

tb

時間戳記時基

音量 (volume)

val

請注意,當 eval 設定為「once」時,只有 sample_ratetb 變數可用,所有其他變數都將評估為 NAN。

8.120.1 指令

此濾波器支援以下指令

音量 (volume)

修改音量表達式。指令接受與對應選項相同的語法。

如果指定的表達式無效,則會保持其目前值。

8.120.2 範例

  • volume
    volume=volume=0.5
    volume=volume=1/2
    volume=volume=-6.0206dB
    

    在以上所有範例中,volume 的具名鍵可以省略,例如在

    volume=0.5
    
  • volume
    volume=volume=6dB:precision=fixed
    
  • volume
    volume='if(lt(t,10),1,max(1-(t-10)/5,0))':eval=frame
    

8.121 volumedetect

detect

此濾波器沒有參數。它僅支援 16 位元帶號整數取樣,因此在需要時會轉換輸入。當輸入串流結束時,音量統計資訊將會印在記錄中。

特別是,它將顯示平均音量(均方根)、最大音量(以每個取樣為基礎)以及已註冊音量值的直方圖的開頭(從最大值到累積的 1/1000 取樣)。

所有音量均以分貝為單位,相對於最大 PCM 值。

8.121.1 範例

以下是輸出的摘錄

[Parsed_volumedetect_0  0xa23120] mean_volume: -27 dB
[Parsed_volumedetect_0  0xa23120] max_volume: -4 dB
[Parsed_volumedetect_0  0xa23120] histogram_4db: 6
[Parsed_volumedetect_0  0xa23120] histogram_5db: 62
[Parsed_volumedetect_0  0xa23120] histogram_6db: 286
[Parsed_volumedetect_0  0xa23120] histogram_7db: 1042
[Parsed_volumedetect_0  0xa23120] histogram_8db: 2551
[Parsed_volumedetect_0  0xa23120] histogram_9db: 4609
[Parsed_volumedetect_0  0xa23120] histogram_10db: 8409

這表示

  • 均方能量約為 -27 dB,或 10^-2.7。
  • 最大取樣為 -4 dB,或更精確地說,介於 -4 dB 和 -5 dB 之間。
  • 有 6 個取樣在 -4 dB,62 個在 -5 dB,286 個在 -6 dB,依此類推。

換句話說,將音量提高 +4 dB 不會造成任何削波,將其提高 +5 dB 會導致 6 個取樣削波,依此類推。

9 音訊來源

以下是目前可用的音訊來源的說明。

9.1 abuffer

緩衝音訊訊框,並使其可用於濾波器鏈。

此來源主要用於程式化用途,特別是透過 libavfilter/buffersrc.h 中定義的介面。

它接受以下參數

time_base

將用於提交訊框的時間戳記的時基。它必須是浮點數或 numerator/denominator 形式。

sample_rate

sample_rate

sample_fmt

輸入音訊緩衝區的取樣格式。取樣格式名稱或其在 libavutil/samplefmt.h 中來自列舉 AVSampleFormat 的對應整數表示法

請注意,當設定為非零值時,濾波器延遲將正好是這麼多樣本。

channel_layout

取樣率

channels

9.1.1 範例

abuffer=sample_rate=44100:sample_fmt=s16p:channel_layout=stereo

將指示來源接受 44100Hz 的平面 16 位元帶號立體聲。由於名稱為「s16p」的取樣格式對應於數字 6,而「stereo」聲道佈局對應於值 0x3,因此這等效於

abuffer=sample_rate=44100:sample_fmt=6:channel_layout=0x3

9.2 aevalsrc

abuffer

abuffer

abuffer

exprs

設定每個獨立聲道的「|」分隔表達式清單。如果未指定 channel_layout 選項,則選定的聲道佈局取決於提供的表達式數量。否則,最後指定的表達式將套用於剩餘的輸出聲道。

channel_layout, c

設定聲道佈局。指定佈局中的聲道數目必須等於指定的表達式數目。

duration, d

設定來源音訊的最小持續時間。請參閱 (ffmpeg-utils)ffmpeg-utils(1) 手冊中的「時間持續時間」章節,以取得接受的語法。請注意,產生的持續時間可能大於指定的持續時間,因為產生的音訊始終在完整訊框的末尾被截斷。

如果未指定,或表達的持續時間為負數,則音訊應永遠產生。

nb_samples, n

設定每個輸出訊框每個聲道的取樣數,預設為 1024。

sample_rate, s

指定取樣率,預設為 44100。

exprs

n

已評估樣本的編號,從 0 開始

設定傳輸表達式。

t

s

目前聲道號碼

9.2.1 範例

  • silence
    aevalsrc=0
    
  • sine
    aevalsrc="sin(440*2*PI*t):s=8000"
    
  • sine
    aevalsrc="sin(420*2*PI*t)|cos(430*2*PI*t):c=FC|BC"
    
  • anoisesrc
    aevalsrc="-2+random(0)"
    
  • amovie
    aevalsrc="sin(10*2*PI*t)*sin(880*2*PI*t)"
    
  • binauralbeat
    aevalsrc="0.1*sin(2*PI*(360-2.5/2)*t) | 0.1*sin(2*PI*(360+2.5/2)*t)"
    

9.3 afdelaysrc

afir_coeffs

產生的串流可以與 afir 濾波器搭配使用,以濾波音訊訊號。

濾鏡接受以下選項

delay, d

設定分數延遲。預設值為 0。

model, m

設定取樣率,預設為 44100。

nb_samples, n

設定每個訊框的取樣數。預設值為 1024。

taps, t

設定輸出音訊串流中濾波器係數的數量。預設值為 0。

channel_layout, c

channel_layout

9.4 afireqsrc

aequalizer_coeffs

產生的串流可以與 afir 濾波器搭配使用,以濾波音訊訊號。

濾鏡接受以下選項

preset, p

設定等化器預設。預設預設為 flat

可用的預設為

custom
flat
acoustic
bass
beats
classic
clear
deep bass
dubstep
electronic
hard-style
hip-hop
jazz
metal
movie
pop
r&b
rock
vocal booster
gains, g

設定每個頻段的自訂增益。僅當預設選項設定為 custom 時使用。增益以空格分隔,每個增益都以 dBFS 設定。預設值為 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

bands, b

設定自訂頻段,從中設定自訂等化器增益。這必須嚴格遞增。僅當預設選項設定為 custom 時使用。頻段以空格分隔,每個頻段代表頻率,單位為赫茲。預設值為 25 40 63 100 160 250 400 630 1000 1600 2500 4000 6300 10000 16000 24000

taps, t

taps, t

model, m

sample_rate, r

nb_samples, n

frame_size, fs

interp, i

設定 FIR 等化器係數的內插法。可以是 linearcubic

phase, h

設定 FIR 濾波器的相位類型。可以是 linearmin:最小相位。預設為最小相位濾波器。

9.5 afirsrc

afrequency_coeffs

產生的串流可以與 afir 濾波器搭配使用,以濾波音訊訊號。

濾鏡接受以下選項

taps, t

taps, t

frequency, f

frequency, f

magnitude, m

設定由 frequency 設定的每個頻率點的幅度值。值的數量必須與頻率點的數量相同。值以空格分隔。

phase, p

設定由 frequency 設定的每個頻率點的相位值。值的數量必須與頻率點的數量相同。值以空格分隔。

model, m

sample_rate, r

nb_samples, n

frame_size, fs

win_func, w

設定視窗函數。預設為 blackman。

9.6 anullsrc

anullsrc

abuffer

channel_layout, cl

Specifies the channel layout, and can be either an integer or a string representing a channel layout. The default value of channel_layout is "stereo".

Check the channel_layout_map definition in libavutil/channel_layout.c for the mapping between strings and channel layout values.

model, m

sample_rate, r

nb_samples, n

frame_size, fs

duration, d

duration, d

如果未指定,或表達的持續時間為負數,則音訊應永遠產生。

9.6.1 範例

  • anullsrc
    anullsrc=r=48000:cl=4
    
  • anullsrc
    anullsrc=r=48000:cl=mono
    

anullsrc

9.7 flite

flite

若要啟用此濾波器的編譯,您需要使用 --enable-libflite 配置 FFmpeg。

請注意,2.0 之前的 flite 程式庫版本不是安全執行緒。

濾鏡接受以下選項

list_voices

若設定為 1,列出可用語音的名稱並立即結束。預設值為 0。

nb_samples, n

frame_size, fs

textfile

設定包含要說出的文字的檔案名稱。

text

設定要說出的文字。

voice, v

設定用於語音合成的語音。預設值為 kal。另請參閱 list_voices 選項。

9.7.1 範例

  • flite
    flite=textfile=speech.txt
    
  • flite
    flite=text='So fare thee well, poor devil of a Sub-Sub, whose commentator I am':voice=slt
    
  • flite
    ffmpeg -f lavfi -i flite=text='So fare thee well, poor devil of a Sub-Sub, whose commentator I am':voice=slt
    
  • flite
    ffplay -f lavfi flite=text='No more be grieved for which that thou hast done.'
    

如需有關 libflite 的更多資訊,請查看:http://www.festvox.org/flite/

9.8 anoisesrc

anoisesrc

濾鏡接受以下選項

model, m

sample_rate, r

amplitude, a

指定產生音訊串流的振幅 (0.0 - 1.0)。預設值為 1.0。

duration, d

duration, d

color, colour, c

指定雜訊的顏色。可用的雜訊顏色為白色、粉紅色、棕色、藍色、紫色和絲絨色。預設顏色為白色。

seed, s

指定用於設定 PRNG 種子的值。

nb_samples, n

frame_size, fs

density

設定絲絨雜訊產生器的密度 (0.0 - 1.0),預設值為 0.05。

9.8.1 範例

  • anoisesrc
    anoisesrc=d=60:c=pink:r=44100:a=0.5
    

9.9 hilbert

hilbert_coeffs

產生的串流可以與 afir 濾波器搭配使用,以將訊號相移 90 度。

這用於許多矩陣編碼方案和分析訊號產生。此過程通常寫為乘以 i(或 j),即虛數單位。

濾鏡接受以下選項

sample_rate, s

sample_rate, r

taps, t

length, l

nb_samples, n

frame_size, fs

win_func, w

win_func, w

9.10 sinc

asinc_coeffs

產生的串流可以與 afir 濾波器搭配使用,以濾波音訊訊號。

濾鏡接受以下選項

model, m

sample_rate, r

nb_samples, n

frame_size, fs

hp

設定高通頻率。預設值為 0。

lp

設定低通頻率。預設值為 0。如果高通頻率低於低通頻率,且低通頻率高於 0,則濾波器將建立帶通濾波器係數,否則為帶拒濾波器係數。

相位 (phase)

phase_response, pr

beta

設定 Kaiser 視窗 beta。

att

設定阻帶衰減。預設值為 120dB,允許範圍從 40 到 180 dB。

round

啟用捨入,預設為停用。

hptaps

設定高通濾波器的抽頭數。

lptaps

設定低通濾波器的抽頭數。

9.11 sine

asine

音訊訊號是位元精確的。

濾鏡接受以下選項

frequency, f

frequency, f

beep_factor, b

samples_per_frame

model, m

sample_rate, r

duration, d

duration, d

samples_per_frame

frame_size, fs

pulse

n

n

pts

pts

設定傳輸表達式。

t

tb

timebase

frame_size, fs

9.11.1 範例

  • asine
    sine
    
  • asine
    sine=220:4:d=5
    sine=f=220:b=4:d=5
    sine=frequency=220:beep_factor=4:duration=5
    
  • asine
    sine=1000:samples_per_frame='st(0,mod(n,5)); 1602-not(not(eq(ld(0),1)+eq(ld(0),3)))'
    

10 音訊接收器

以下是目前可用的音訊接收器的說明。

10.1 abuffersink

abuffersink

此接收器主要用於程式化用途,特別是透過 libavfilter/buffersink.h 中定義的介面或選項系統。

它接受 AVABufferSinkContext 結構的指標,該結構定義了傳入緩衝區的格式,要作為不透明參數傳遞給 avfilter_init_filter 以進行初始化。

10.2 anullsink

anullsink

11 視訊濾鏡

當您配置 FFmpeg 建置時,可以使用 --disable-filters 停用任何現有的濾波器。配置輸出將顯示您的建置中包含的視訊濾波器。

以下是目前可用的視訊濾波器的說明。

11.1 addroi

區域標記

訊框資料會保持不變地傳遞,但中繼資料會附加到訊框,指示感興趣的區域,這些區域可能會影響後續編碼的行為。可以透過多次套用濾波器來標記多個區域。

x

區域與訊框左邊緣的距離,以像素為單位。

y

區域與訊框頂部邊緣的距離,以像素為單位。

f

w

h

h

參數 xywh 是表達式,可能包含以下變數

iw

輸入訊框的寬度。

ih

輸入訊框的高度。

qoffset

在區域內套用的量化偏移。

這必須是 -1 到 +1 範圍內的實數值。值為零表示品質沒有變化。負值要求更好的品質(更少的量化),而正值要求更差的品質(更多的量化)。

範圍經過校準,因此極端值表示最大的可能偏移 - 如果訊框的其餘部分以最差的可能品質編碼,則 -1 的偏移表示此區域應始終以最佳的可能品質編碼。然後,中間值會以某種編解碼器相關的方式內插。

例如,在 10 位元 H.264 中,量化參數在 -12 到 51 之間變化。因此,典型的 qoffset 值 -1/10 表示此區域應以比訊框其餘部分好約十分之一的完整範圍的 QP 編碼。因此,如果訊框的大部分要以約 30 的 QP 編碼,則此區域將獲得約 24 的 QP(偏移約為 -1/10 * (51 - -12) = -6.3)。-1 的極端值表示此區域應以最佳的可能品質編碼,而與訊框其餘部分的處理方式無關 - 也就是說,應以 -12 的 QP 編碼。

clear

若設定為 true,則在新增新區域之前,移除在訊框上標記的任何現有感興趣區域。

11.1.1 範例

  • 區域標記
    addroi=iw/4:ih/4:iw/2:ih/2:-1/10
    
  • 區域標記
    addroi=0:0:100:ih:+1/5
    

11.2 alphaextract

alphaextract

11.3 alphamerge

alphamerge

alphamerge

movie=in_alpha.mkv [alpha]; [in][alpha] alphamerge [out]

11.4 amplify

amplify

此濾波器還能夠拉伸/壓縮音訊資料以使其與時間戳記匹配,或注入靜音/剪切音訊以使其與時間戳記匹配,執行兩者的組合或兩者都不執行。

設定虛擬喇叭的仰角,單位為度。預設值為 0。

radius

factor

設定放大差異的係數。預設值為 2。允許範圍從 0 到 65535。

threshold

threshold

tolerance

low

low

high

high

planes

planes

planes

11.4.1 指令

amplify

factor
threshold
tolerance
low
high
planes

11.5 ass

ass

ass

shaping

設定塑形引擎

提升高於偵測臨界值的頻率。

auto

預設 libass 塑形引擎,是可用的最佳引擎。

simple

快速、字型無關的塑形器,只能進行替換

complex

較慢的塑形器,使用 OpenType 進行替換和定位

預設值為 auto

11.6 atadenoise

atadenoise

濾鏡接受以下選項

0a

設定第 1 個平面的閾值 A。預設值為 0.02。有效範圍為 0 到 0.3。

0b

設定第 1 個平面的閾值 B。預設值為 0.04。有效範圍為 0 到 5。

1a

設定第 2 個平面的閾值 A。預設值為 0.02。有效範圍為 0 到 0.3。

此濾波器通過抑制兩個聲道共有的訊號並通過將左聲道的訊號延遲到右聲道中,反之亦然,從而增強立體聲效果,從而擴大立體聲效果。

1b

2a

設定第 3 個平面的閾值 A。預設值為 0.02。有效範圍為 0 到 0.3。

將左訊號延遲到右訊號中以及反之亦然的時間,單位為毫秒。預設值為 20 毫秒。

2b

閾值 A 設計用於對輸入訊號的突發變化做出反應,而閾值 B 設計用於對輸入訊號的持續變化做出反應。

s

size

sn

planes

a

設定濾波器將用於平均的演算法變體。預設值為 p 平行。或者,可以設定為 s 序列。

平行可能比序列更快,而反之則不然。平行將在第一個變化大於閾值時提前中止,而序列將繼續處理訊框的另一側(如果它們等於或低於閾值)。

0s
1s
2s

atadenoise

11.6.1 指令

atadenoise

11.7 avgblur

avgblur

濾鏡接受以下選項

sizeX

設定水平半徑大小。

planes

planes

sizeY

設定垂直半徑大小,如果為零,則與 sizeX 相同。預設值為 0

11.7.1 指令

avgblur

如果指定的表達式無效,則會保持其目前值。

11.8 backgroundkey

backgroundkey

stages

threshold

delta

similarity

similarity

blend

blend

11.8.1 指令

此濾鏡支援以上所有選項作為 commands

11.9 bbox

bbox

bbox

stages

min_val

設定最小亮度值。預設值為 16

11.9.1 指令

此濾鏡支援以上所有選項作為 commands

11.10 bilateral

bilateral

濾鏡接受以下選項

sigmaS

設定高斯函數的 sigma 以計算空間權重。允許範圍為 0 到 512。預設值為 0.1。

sigmaR

設定高斯函數的 sigma 以計算範圍權重。允許範圍為 0 到 1。預設值為 0.1。

planes

planes

11.10.1 指令

此濾鏡支援以上所有選項作為 commands

11.11 bilateral_cuda

bilateral_cuda

濾鏡接受以下選項

sigmaS

sigmaS

sigmaR

sigmaR

window_size

設定雙邊函數的視窗大小,以決定要迴圈處理的鄰居數目。如果輸入的數字是偶數,則會自動新增一個。允許範圍為 1 到 255。預設值為 1。

11.11.1 範例

  • bilateral_cuda
    ./ffmpeg -v verbose \
    -hwaccel cuda -hwaccel_output_format cuda -i input.mp4  \
    -init_hw_device cuda \
    -filter_complex \
    " \
    [0:v]scale_cuda=format=yuv444p[scaled_video];
    [scaled_video]bilateral_cuda=window_size=9:sigmaS=3.0:sigmaR=50.0" \
    -an -sn -c:v h264_nvenc -cq 20 out.mp4
    

11.12 bitplanenoise

bitplanenoise

濾鏡接受以下選項

bitplane

設定要分析的平面。預設值為 1

filter

bitplanenoise

11.13 blackdetect

blackdetect

blackdetect

blackdetect

濾鏡接受以下選項

black_min_duration, d

black_min_duration, d

預設值為 2.0。

picture_black_ratio_th, pic_th

picture_black_ratio_th, pic_th

nb_black_pixels / nb_pixels

預設值為 0.98。

pixel_black_th, pix_th

pixel_black_th, pix_th

pixel_black_th, pix_th

absolute_threshold = luma_minimum_value + pixel_black_th * luma_range_size

luma_range_sizeluma_minimum_value 取決於輸入視訊格式,範圍對於 YUV 全範圍格式為 [0-255],對於 YUV 非全範圍格式為 [16-235]。

預設值為 0.10。

blackdetect

blackdetect=d=2:pix_th=0.00

11.14 blackframe

blackframe

blackframe

blackframe

它接受以下參數

amount

percent

threshold, thresh

threshold, thresh

11.15 blend

blend

blend

tblend

以下是接受選項的描述。

c0_mode
c1_mode
c2_mode
c3_mode
all_mode

blend

blend

addition
and
average
bleach
burn
darken
difference
divide
dodge
exclusion
extremity
freeze
geometric
glow
grainextract
grainmerge
hardlight
hardmix
hardoverlay
harmonic
heat
interpolate
lighten
linearlight
multiply
multiply128
negation
normal
or
overlay
phoenix
pinlight
reflect
screen
softdifference
softlight
stain
subtract
vividlight
xor
c0_opacity
c1_opacity
c2_opacity
c3_opacity
all_opacity

blend

c0_expr
c1_expr
c2_expr
c3_expr
all_expr

blend

blend

n

blend

x
y

blend

w
h

blend

sw
sh

blend

t

blend

top, a

blend

bottom, b

blend

blend

11.15.1 範例

  • blend
    blend=all_expr='A*(if(gte(T,10),1,T/10))+B*(1-(if(gte(T,10),1,T/10)))'
    
  • blend
    blend=all_expr='A*(X/W)+B*(1-X/W)'
    
  • blend
    blend=all_expr='if(eq(mod(X,2),mod(Y,2)),A,B)'
    
  • blend
    blend=all_expr='if(gte(N*SW+X,W),A,B)'
    
  • blend
    blend=all_expr='if(gte(Y-N*SH,0),A,B)'
    
  • blend
    blend=all_expr='if(gte(T*SH*40+Y,H)*gte((T*40*SW+X)*W/H,W),A,B)'
    
  • blend
    blend=all_expr='if(gt(X,Y*(W/H)),A,B)'
    
  • tblend
    tblend=all_mode=grainextract
    

11.15.2 指令

blend

11.16 blockdetect

blockdetect

blockdetect

濾鏡接受以下選項

period_min
period_max

blockdetect

planes

planes

11.16.1 範例

  • blockdetect
    blockdetect=period_min=8:period_max=32:planes=1
    

11.17 blurdetect

blurdetect

blurdetect

濾鏡接受以下選項

low
high

threshold

threshold

threshold

threshold

設定虛擬喇叭的仰角,單位為度。預設值為 0。

max_radius

block_pct

block_pct

block_width

block_width

block_height

block_height

planes

planes

11.17.1 範例

  • blurdetect
    blurdetect=block_width=32:block_height=32:block_pct=80
    

11.18 bm3d

bm3d

bm3d

sigma

sigma

block

block

bstep

bstep

group

group

設定用於偵測濾鏡的偵測頻率(以 Hz 為單位),該偵測濾鏡用於觸發等化。預設值為 1000 Hz。允許範圍介於 2 和 1000000 Hz 之間。

radius

mstep

mstep

thmse

thmse

hdthr

hdthr

estim

estim

ref

ref

planes

planes

11.18.1 範例

  • bm3d
    bm3d=sigma=3:block=4:bstep=2:group=1:estim=basic
    
  • bm3d
    bm3d=sigma=3:block=4:bstep=2:group=1:estim=basic:planes=1
    
  • bm3d
    split[a][b],[a]bm3d=sigma=3:block=4:bstep=2:group=1:estim=basic[a],[b][a]bm3d=sigma=3:block=4:bstep=2:group=16:estim=final:ref=1
    
  • bm3d
    split[a][b],[a]nlmeans=s=3:r=7:p=3[a],[b][a]bm3d=sigma=3:block=4:bstep=2:group=16:estim=final:ref=1
    

11.19 boxblur

boxblur

它接受以下參數

luma_radius, lr
luma_power, lp
chroma_radius, cr
chroma_power, cp
alpha_radius, ar
alpha_power, ap

以下是接受選項的描述。

luma_radius, lr
chroma_radius, cr
alpha_radius, ar

boxblur

boxblur

boxblur

boxblur

f
h

w

cw
新增脈衝訊號。

boxblur

hsub
vsub

boxblur

luma_power, lp
chroma_power, cp
alpha_power, ap

boxblur

boxblur

boxblur

11.19.1 範例

  • boxblur
    boxblur=luma_radius=2:luma_power=1
    boxblur=2:1
    
  • boxblur
    boxblur=2:1:cr=0:ar=0
    
  • boxblur
    boxblur=luma_radius=min(h\,w)/10:luma_power=1:chroma_radius=min(cw\,ch)/10:chroma_power=1
    

11.20 bwdif

bwdif

bwdif

mode

mode

0, send_frame

mode

1, send_field

mode

mode

parity

parity

0, tff

parity

1, bff

parity

-1, auto

parity

parity

deint

deint

0, all

deint

1, interlaced

deint

deint

11.21 bwdif_cuda

bwdif_cuda

它接受以下參數

mode

mode

0, send_frame

mode

1, send_field

mode

mode

parity

parity

0, tff

parity

1, bff

parity

-1, auto

parity

parity

deint

deint

0, all

deint

1, interlaced

deint

deint

11.22 ccrepack

cc708

cc708

11.23 cas

cas

濾鏡接受以下選項

強度 (strength)

sharpness

planes

planes

11.23.1 指令

blend

11.24 chromahold

colorkey

濾鏡接受以下選項

color

color

similarity

similarity

blend

blend

yuv

yuv

yuv

11.24.1 指令

colorkey

如果指定的表達式無效,則會保持其目前值。

11.25 chromakey

chromakey

濾鏡接受以下選項

color

color

similarity

similarity

chromakey

blend

blend

chromakey

chromakey

yuv

yuv

yuv

11.25.1 指令

colorkey

如果指定的表達式無效,則會保持其目前值。

11.25.2 範例

  • chromakey
    ffmpeg -i input.png -vf chromakey=green out.png
    
  • chromakey
    ffmpeg -f lavfi -i color=c=black:s=1280x720 -i video.mp4 -shortest -filter_complex "[1:v]chromakey=0x70de77:0.1:0.2[ckout];[0:v][ckout]overlay[out]" -map "[out]" output.mkv
    

11.26 chromakey_cuda

chromakey_cuda

chromakey_cuda

11.26.1 範例

  • chromakey_cuda
    ./ffmpeg \
        -hwaccel cuda -hwaccel_output_format cuda -i input_green.mp4  \
        -hwaccel cuda -hwaccel_output_format cuda -i base_video.mp4 \
        -init_hw_device cuda \
        -filter_complex \
        " \
            [0:v]chromakey_cuda=0x25302D:0.1:0.12:1[overlay_video]; \
            [1:v]scale_cuda=format=yuv420p[base]; \
            [base][overlay_video]overlay_cuda" \
        -an -sn -c:v h264_nvenc -cq 20 output.mp4
    
  • concat
    ./ffmpeg -init_hw_device cuda=cuda -filter_hw_device cuda \
        -f lavfi -i color=size=800x600:color=white,format=yuv420p \
        -f lavfi -i yuvtestsrc=size=200x200,format=yuv420p \
        -filter_complex \
        " \
            [0]hwupload[under]; \
            [1]hwupload,chromakey_cuda=green:0.1:0.12[over]; \
            [under][over]overlay_cuda" \
        -c:v hevc_nvenc -cq 18 -preset slow output.mp4
    

11.27 chromanr

convolution

濾鏡接受以下選項

thres

thres

sizew

sizew

sizeh

sizeh

stepw

stepw

steph

steph

threy

threy

threu

threu

threv

threv

distance

distance

manhattan

distance

euclidean

distance

distance

11.27.1 指令

colorkey

11.28 chromashift

chromashift

濾鏡接受以下選項

cbh

cbh

cbv

cbv

crh

crh

crv

crv

edge

edge

11.28.1 指令

此濾鏡支援以上所有選項作為 commands

11.29 ciescope

ciescope

濾鏡接受以下選項

system

system

ntsc, 470m
ebu, 470bg
smpte
240m
apple
widergb
cie1931
rec709, hdtv
uhdtv, rec2020
dcip3
cie

cie

xyy
ucs
luv
gamuts

gamuts

gamuts

size, s

size, s

intensity, i

intensity, i

contrast

contrast

corrgamma

corrgamma

showwhite

showwhite

gamma

gamma

fill

fill

11.30 codecview

codecview

codecview

stages

block

codecview

mv

mv

mv

pf

mv

bf

mv

bb

mv

qp

qp

mv_type, mvt

mv_type, mvt

mv_type, mvt

fp

mv_type, mvt

bp

mv_type, mvt

frame_type, ft

frame_type, ft

frame_type, ft

if

frame_type, ft

pf

frame_type, ft

bf

frame_type, ft

11.30.1 範例

  • codecview
    ffplay -flags2 +export_mvs input.mp4 -vf codecview=mv_type=fp
    
  • codecview
    ffplay -flags2 +export_mvs input.mp4 -vf codecview=mv=pf+bf+bb
    

11.31 colorbalance

colorbalance

colorbalance

colorbalance

濾鏡接受以下選項

rs
gs
bs

colorbalance

rm
gm
bm

colorbalance

rh
gh
bh

colorbalance

colorbalance

pl

pl

11.31.1 範例

  • colorbalance
    colorbalance=rs=.3
    

11.31.2 指令

此濾鏡支援以上所有選項作為 commands

11.32 colorcontrast

colorcontrast

濾鏡接受以下選項

rc

rc

gm

gm

by

by

rcw
gmw
byw

rcw

pl

protect

11.32.1 指令

此濾鏡支援以上所有選項作為 commands

11.33 colorcorrect

colorlevels

濾鏡接受以下選項

rl

rl

bl

bl

rh

rh

bh

bh

saturation

saturation

analyze

analyze

analyze

manual
average
minmax
median

analyze

11.33.1 指令

此濾鏡支援以上所有選項作為 commands

11.34 colorchannelmixer

colormatrix

colormatrix

red=red*rr + blue*rb + green*rg + alpha*ra

濾鏡接受以下選項

rr
rg
rb
ra

colormatrix

gr
gg
gb
ga

colormatrix

br
bg
bb
ba

colormatrix

ar
ag
ab
dc

aa

colormatrix

pc

pc

none

pc

lum

pc

max

pc

avg

pc

sum

pc

nrm

pc

pwr

pc

pa

pa

11.34.1 範例

  • colormatrix
    colorchannelmixer=.3:.4:.3:0:.3:.4:.3:0:.3:.4:.3
    
  • colormatrix
    colorchannelmixer=.393:.769:.189:0:.349:.686:.168:0:.272:.534:.131
    

11.34.2 指令

此濾鏡支援以上所有選項作為 commands

11.35 colorize

coloroverlay

濾鏡接受以下選項

hue

hue

saturation

saturation

lightness

lightness

mix

mix

11.35.1 指令

此濾鏡支援以上所有選項作為 commands

11.36 colorkey

colorkey_rgb

濾鏡接受以下選項

color

color

similarity

radius

blend

blend

11.36.1 範例

  • chromakey
    ffmpeg -i input.png -vf colorkey=green out.png
    
  • colorkey_rgb
    ffmpeg -i background.png -i video.mp4 -filter_complex "[1:v]colorkey=0x3BBD1E:0.3:0.2[ckout];[0:v][ckout]overlay[out]" -map "[out]" output.flv
    

11.36.2 指令

colorkey

如果指定的表達式無效,則會保持其目前值。

11.37 colorhold

colorhold

濾鏡接受以下選項

color

color

similarity

similarity

blend

blend

11.37.1 指令

colorkey

如果指定的表達式無效,則會保持其目前值。

11.38 colorlevels

levels

濾鏡接受以下選項

rimin
gimin
bimin
aimin

levels

rimax
gimax
bimax
aimax

levels

levels

romin
gomin
bomin
aomin

levels

romax
gomax
bomax
aomax

levels

levels

preserve_opacity, po

pc

none

pc

lum

pc

max

pc

avg

pc

sum

pc

nrm

pc

pwr

pc

11.38.1 範例

  • levels
    colorlevels=rimin=0.058:gimin=0.058:bimin=0.058
    
  • levels
    colorlevels=rimin=0.039:gimin=0.039:bimin=0.039:rimax=0.96:gimax=0.96:bimax=0.96
    
  • levels
    colorlevels=rimax=0.902:gimax=0.902:bimax=0.902
    
  • levels
    colorlevels=romin=0.5:gomin=0.5:bomin=0.5
    

11.38.2 指令

此濾鏡支援以上所有選項作為 commands

11.39 colormap

lut2d

lut2d

濾鏡接受以下選項

patch_size

patch_size

nb_patches

nb_patches

將第二個聲道延遲 500 個樣本,將第三個聲道延遲 700 個樣本,並保持第一個聲道(和可能存在的任何其他聲道)不變。

adjust

kernel

kernel

kernel

euclidean
weuclidean

kernel

11.40 colormatrix

lutyuv

濾鏡接受以下選項

src
dst

lutyuv

kernel

bt709

lutyuv

fcc

lutyuv

bt601

lutyuv

bt470

lutyuv

bt470bg

lutyuv

smpte170m

lutyuv

smpte240m

lutyuv

bt2020

lutyuv

lutyuv

colormatrix=bt601:smpte240m

11.41 colorspace

lut3d

濾鏡接受以下選項

設定用於設定跨聲道樣本延遲的隨機種子。

lut3d

kernel

bt470m

lut3d

bt470bg

lutyuv

bt601-6-525

lut3d

bt601-6-625

lut3d

bt709

lutyuv

smpte170m

lutyuv

smpte240m

lutyuv

bt2020

lutyuv

space

space

kernel

bt709

lutyuv

fcc

lutyuv

bt470bg

space

smpte170m

space

smpte240m

lutyuv

ycgco

space

bt2020ncl

space

trc

trc

kernel

bt709

lutyuv

bt470m

lut3d

bt470bg

lutyuv

gamma22

trc

gamma28

trc

smpte170m

trc

smpte240m

lutyuv

srgb

trc

iec61966-2-1

trc

iec61966-2-4

trc

xvycc

trc

bt2020-10

trc

bt2020-12

trc

primaries

primaries

kernel

bt709

lutyuv

bt470m

lut3d

bt470bg

space

smpte170m

space

smpte240m

lutyuv

film

primaries

smpte431

primaries

smpte432

primaries

bt2020

lutyuv

jedec-p22

primaries

設定用於偵測濾鏡的偵測頻率(以 Hz 為單位),該偵測濾鏡用於觸發等化。預設值為 1000 Hz。允許範圍介於 2 和 1000000 Hz 之間。

range

kernel

tv

range

mpeg

range

pc

range

jpeg

range

format

format

kernel

yuv420p

format

yuv420p10

format

yuv420p12

format

yuv422p

format

yuv422p10

format

yuv422p12

format

yuv444p

format

yuv444p10

format

yuv444p12

format

fast

fast

dither

dither

kernel

none

dither

fsb

dither

wpadapt

wpadapt

kernel

bradford

wpadapt

vonkries

wpadapt

identity

wpadapt

iall

iall

ispace

ispace

iprimaries

iprimaries

itrc

itrc

irange

irange

lut3d

lut3d

colorspace=smpte240m

11.42 colorspace_cuda

lut3d_cuda

lut3d_cuda

濾鏡接受以下選項

設定用於偵測濾鏡的偵測頻率(以 Hz 為單位),該偵測濾鏡用於觸發等化。預設值為 1000 Hz。允許範圍介於 2 和 1000000 Hz 之間。

range

kernel

tv

range

mpeg

range

pc

range

jpeg

range

11.43 colortemperature

তাপমাত্রা

濾鏡接受以下選項

temperature

temperature

mix

mix

pl

protect

11.43.1 指令

blend

11.44 convolution

convolve

濾鏡接受以下選項

0m
1m
2m
3m

convolve

0rdiv
1rdiv
2rdiv
3rdiv

convolve

0bias
1bias
2偏移量
3偏移量

設定每個平面的偏移量。此值會加到乘法結果。適用於使整體影像更亮或更暗。預設值為 0.0。

0模式
1模式
2模式
3模式

設定每個平面的矩陣模式。可以是 squarerowcolumn。預設值為 square

11.44.1 指令

此濾鏡支援以上所有選項作為 commands

11.44.2 範例

  • 套用銳化
    convolution="0 -1 0 -1 5 -1 0 -1 0:0 -1 0 -1 5 -1 0 -1 0:0 -1 0 -1 5 -1 0 -1 0:0 -1 0 -1 5 -1 0 -1 0"
    
  • 套用模糊
    convolution="1 1 1 1 1 1 1 1 1:1 1 1 1 1 1 1 1 1:1 1 1 1 1 1 1 1 1:1 1 1 1 1 1 1 1 1:1/9:1/9:1/9:1/9"
    
  • 套用邊緣增強
    convolution="0 0 0 -1 1 0 0 0 0:0 0 0 -1 1 0 0 0 0:0 0 0 -1 1 0 0 0 0:0 0 0 -1 1 0 0 0 0:5:1:1:1:0:128:128:128"
    
  • 套用邊緣偵測
    convolution="0 1 0 1 -4 1 0 1 0:0 1 0 1 -4 1 0 1 0:0 1 0 1 -4 1 0 1 0:0 1 0 1 -4 1 0 1 0:5:5:5:1:0:128:128:128"
    
  • 套用包含對角線的拉普拉斯邊緣偵測器
    convolution="1 1 1 1 -8 1 1 1 1:1 1 1 1 -8 1 1 1 1:1 1 1 1 -8 1 1 1 1:1 1 1 1 -8 1 1 1 1:5:5:5:1:0:128:128:0"
    
  • 套用浮雕
    convolution="-2 -1 0 -1 1 1 0 1 2:-2 -1 0 -1 1 1 0 1 2:-2 -1 0 -1 1 1 0 1 2:-2 -1 0 -1 1 1 0 1 2"
    

11.45 convolve

使用第二個串流作為脈衝,在頻域中套用視訊串流的 2D 卷積。

濾鏡接受以下選項

planes

設定要處理的平面。

脈衝

設定將處理哪些脈衝視訊影格,可以是 firstall。預設值為 all

convolve 濾鏡也支援 framesync 選項。

11.46 copy

將輸入視訊來源不變地複製到輸出。這主要用於測試目的。

11.47 coreimage

在 OSX 上使用 Apple 的 CoreImage API 進行 GPU 視訊濾鏡處理。

硬體加速基於 OpenGL 環境。通常,這表示它由視訊硬體處理。然而,存在基於軟體的 OpenGL 實作,這表示不保證硬體處理。這取決於各自的 OSX。

Apple 提供了許多濾鏡和影像產生器,它們帶有各種各樣的選項。濾鏡必須通過其名稱及其選項來引用。

coreimage 濾鏡接受以下選項

list_filters

列出所有可用的濾鏡和產生器,以及它們各自的所有選項,以及可能的最小值和最大值以及預設值。

list_filters=true
filter

通過各自的名稱和選項指定所有濾鏡。使用 list_filters 來確定所有有效的濾鏡名稱和選項。數值選項由浮點值指定,並自動鉗制在其各自的值範圍內。向量和顏色選項必須由空格分隔的浮點值列表指定。必須完成字元跳脫。特殊的選項名稱 default 可用於濾鏡的預設選項。

必須指定 default 或至少一個濾鏡選項。所有省略的選項都使用其預設值。濾鏡字串的語法如下

filter=<NAME>@<OPTION>=<VALUE>[@<OPTION>=<VALUE>][@...][#<NAME>@<OPTION>=<VALUE>[@<OPTION>=<VALUE>][@...]][#...]
output_rect

指定一個矩形,濾鏡鏈的輸出將複製到輸入影像中。它由空格分隔的浮點值列表給出

output_rect=x\ y\ width\ height

如果未給出,則輸出矩形等於輸入影像的尺寸。輸出矩形會在輸入影像的邊界處自動裁剪。負值對於每個組件都有效。

output_rect=25\ 25\ 100\ 100

可以鏈接多個濾鏡以進行連續處理,而無需 GPU-HOST 傳輸,從而可以快速處理複雜的濾鏡鏈。目前,僅支援具有零個(產生器)或正好一個(濾鏡)輸入影像和一個輸出影像的濾鏡。此外,過渡濾鏡尚無法按預期使用。

某些濾鏡會根據各自的濾鏡核心產生帶有額外邊距的輸出影像。邊距會自動移除,以確保濾鏡輸出與輸入影像具有相同的大小。

對於影像產生器,輸出影像的大小由濾鏡鏈的先前輸出影像或整個濾鏡鏈的輸入影像決定。產生器不使用此影像的像素資訊來產生其輸出。然而,產生的輸出會混合到此影像上,導致輸出影像的部分或完全覆蓋。

coreimagesrc 視訊來源可用於產生直接饋入濾鏡鏈的輸入影像。通過使用它,不需要通過另一個視訊來源或輸入視訊來提供輸入影像。

11.47.1 範例

  • 列出所有可用的濾鏡
    coreimage=list_filters=true
    
  • 使用預設選項的 CIBoxBlur 濾鏡來模糊影像
    coreimage=filter=CIBoxBlur@default
    
  • 使用具有預設值的 CISepiaTone 和中心在 100x100 且半徑為 50 像素的 CIVignetteEffect 的濾鏡鏈
    coreimage=filter=CIBoxBlur@default#CIVignetteEffect@inputCenter=100\ 100@inputRadius=50
    
  • 使用 nullsrc 和 CIQRCodeGenerator 為 FFmpeg 首頁建立 QR 碼,以 Apple 標準 bash shell 的完整且跳脫的命令列形式給出
    ffmpeg -f lavfi -i nullsrc=s=100x100,coreimage=filter=CIQRCodeGenerator@inputMessage=https\\\\\://FFmpeg.org/@inputCorrectionLevel=H -frames:v 1 QRCode.png
    

11.48 corr

取得兩個輸入視訊之間的相關性。

此濾鏡採用兩個輸入視訊。

為了使此濾鏡正常工作,兩個輸入視訊必須具有相同的解析度和像素格式。此外,它假設兩個輸入具有相同數量的影格,這些影格將逐個比較。

獲得的每個組件、平均值、最小值和最大值相關性通過日誌系統列印。

濾鏡將每個影格的計算相關性儲存在影格元數據中。

此濾鏡也支援 framesync 選項。

在以下範例中,正在處理的輸入檔案 main.mpg 與參考檔案 ref.mpg 進行比較。

ffmpeg -i main.mpg -i ref.mpg -lavfi corr -f null -

11.49 cover_rect

覆蓋矩形物件

設定視窗長度,以樣本為單位。預設值為 2048。允許範圍為 32 到 65536。

cover

可選覆蓋影像的檔案路徑,需要為 yuv420。

mode

設定覆蓋模式。

設定叢發融合,以視窗大小的百分比表示。允許範圍為 010。預設值為 2。如果偵測為雜訊的任何兩個樣本之間的間隔小於此值,則這兩個樣本之間的任何樣本也將被偵測為雜訊。

cover

用提供的影像覆蓋它

blur

通過內插周圍的像素來覆蓋它

預設值為 blur

11.49.1 範例

  • 使用 ffmpeg 通過給定視訊的提供的影像覆蓋矩形物件
    ffmpeg -i file.ts -vf find_rect=newref.pgm,cover_rect=cover.jpg:mode=cover new.mkv
    

11.50 crop

將輸入視訊裁剪為給定的尺寸。

它接受以下參數

w, out_w

輸出視訊的寬度。預設值為 iw。此表達式僅在濾鏡配置期間或發送 ‘w’ 或 ‘out_w’ 命令時評估一次。

h, out_h

輸出視訊的高度。預設值為 ih。此表達式僅在濾鏡配置期間或發送 ‘h’ 或 ‘out_h’ 命令時評估一次。

x

輸出視訊左邊緣在輸入視訊中的水平位置。預設值為 (in_w-out_w)/2。此表達式是逐影格評估的。

y

輸出視訊頂部邊緣在輸入視訊中的垂直位置。預設值為 (in_h-out_h)/2。此表達式是逐影格評估的。

keep_aspect

如果設定為 1,將通過更改輸出樣本縱橫比,強制輸出顯示縱橫比與輸入相同。預設值為 0。

exact

啟用精確裁剪。如果啟用,子採樣視訊將按指定的精確寬度/高度/x/y 裁剪,並且不會四捨五入到最接近的較小值。預設值為 0。

out_wout_hxy 參數是包含以下常數的表達式

x
y

xy 的計算值。它們是為每個新影格評估的。

in_w
in_h

輸入寬度和高度。

iw
ih

這些與 in_win_h 相同。

out_w
out_h

輸出(裁剪後)寬度和高度。

ow
oh

這些與 out_wout_h 相同。

a

iw / ih 相同

sar

輸入樣本縱橫比

dar

輸入顯示縱橫比,它與 (iw / ih) * sar 相同

hsub
vsub

水平和垂直色度子採樣值。例如,對於像素格式 "yuv422p",hsub 為 2,vsub 為 1。

n

輸入影格的編號,從 0 開始。

pos

輸入影格在檔案中的位置,如果未知,則為 NAN;已棄用,請勿使用

設定傳輸表達式。

以秒為單位表示的時間戳記。如果輸入時間戳記未知,則為 NAN。

out_w 的表達式可能取決於 out_h 的值,而 out_h 的表達式可能取決於 out_w,但它們不能取決於 xy,因為 xy 是在 out_wout_h 之後評估的。

xy 參數指定輸出(非裁剪)區域的左上角位置的表達式。它們是為每個影格評估的。如果評估值無效,則將其近似為最接近的有效值。

x 的表達式可能取決於 y,而 y 的表達式可能取決於 x

11.50.1 範例

  • 在位置 (12,34) 裁剪大小為 100x100 的區域。
    crop=100:100:12:34
    

    使用具名選項,以上範例變為

    crop=w=100:h=100:x=12:y=34
    
  • 裁剪大小為 100x100 的中央輸入區域
    crop=100:100
    
  • 裁剪大小為輸入視訊 2/3 的中央輸入區域
    crop=2/3*in_w:2/3*in_h
    
  • 裁剪輸入視訊中央正方形
    crop=out_w=in_h
    crop=in_h
    
  • 劃定矩形,其左上角放置在位置 100:100,右下角對應於輸入影像的右下角。
    crop=in_w-100:in_h-100:100:100
    
  • 從左邊界和右邊界裁剪 10 個像素,從頂部邊界和底部邊界裁剪 20 個像素
    crop=in_w-2*10:in_h-2*20
    
  • 僅保留輸入影像的右下四分之一
    crop=in_w/2:in_h/2:in_w/2:in_h/2
    
  • 裁剪高度以獲得希臘和諧
    crop=in_w:1/PHI*in_w
    
  • 套用顫抖效果
    crop=in_w/2:in_h/2:(in_w-out_w)/2+((in_w-out_w)/2)*sin(n/10):(in_h-out_h)/2 +((in_h-out_h)/2)*sin(n/7)
    
  • 套用取決於時間戳記的不穩定相機效果
    crop=in_w/2:in_h/2:(in_w-out_w)/2+((in_w-out_w)/2)*sin(t*10):(in_h-out_h)/2 +((in_h-out_h)/2)*sin(t*13)
    
  • 根據 y 的值設定 x
    crop=in_w/2:in_h/2:y:10+10*sin(n/10)
    

11.50.2 指令

此濾波器支援以下指令

w, out_w
h, out_h
x
y

設定輸出視訊的寬度/高度以及輸入視訊中的水平/垂直位置。該命令接受相應選項的相同語法。

如果指定的表達式無效,則會保持其目前值。

11.51 cropdetect

自動偵測裁剪大小。

它計算必要的裁剪參數,並通過日誌系統列印建議的參數。偵測到的尺寸對應於輸入視訊的非黑色或視訊區域,根據 mode

它接受以下參數

mode

根據 mode,裁剪偵測基於周圍像素的純黑色值或運動向量和邊緣像素的組合。

black

偵測播放視訊周圍的黑色像素。為了精細控制,請使用選項 limit

mvedges

通過視訊內部的運動向量偵測播放視訊,並掃描通常形成播放視訊邊界的邊緣像素。

limit

設定更高的黑色值閾值,可以選擇從無 (0) 到所有 (8 位元格式為 255) 指定。強度值大於設定值被視為非黑色。預設值為 24。您還可以指定介於 0.0 和 1.0 之間的值,該值將根據像素格式的位元深度進行縮放。

round

寬度/高度應可被整除的值。預設值為 16。偏移量會自動調整以使視訊居中。使用 2 僅獲得偶數尺寸(4:2:2 視訊需要)。編碼為大多數視訊編解碼器時,16 是最佳的。

skip

設定要跳過評估的初始影格數。預設值為 2。範圍為 0 到 INT_MAX。

reset_count, reset

設定計數器,該計數器確定在多少影格後,cropdetect 將重置先前偵測到的最大視訊區域,並重新開始偵測當前最佳裁剪區域。預設值為 0。

當頻道標誌扭曲視訊區域時,這可能很有用。0 表示「永不重置」,並傳回播放期間遇到的最大區域。

mv_threshold

以像素單位設定運動作為運動偵測的閾值。預設值為 8。

low
high

threshold

threshold

threshold

low 的預設值為 5/255high 的預設值為 15/255

11.51.1 範例

  • 查找黑色邊框環繞的視訊區域
    ffmpeg -i file.mp4 -vf cropdetect,metadata=mode=print -f null -
    
  • 查找嵌入式視訊區域,預先產生運動向量
    ffmpeg -i file.mp4 -vf mestimate,cropdetect=mode=mvedges,metadata=mode=print -f null -
    
  • 查找嵌入式視訊區域,使用來自解碼器的運動向量
    ffmpeg -flags2 +export_mvs -i file.mp4 -vf cropdetect=mode=mvedges,metadata=mode=print -f null -
    

11.51.2 指令

此濾波器支援以下指令

limit

該命令接受相應選項的相同語法。如果指定的表達式無效,則將其保留為當前值。

11.52 cue

延遲視訊濾鏡處理,直到給定的掛鐘時間戳記。濾鏡首先傳遞 preroll 量的影格,然後緩衝最多 buffer 量的影格並等待提示。到達提示後,它會轉發緩衝的影格以及隨後輸入的任何影格。

濾鏡可用於同步多個 ffmpeg 進程的輸出,用於即時輸出設備(如 decklink)。通過將延遲放在濾鏡鏈中並預緩衝影格,進程可以在達到目標掛鐘時間戳記後幾乎立即將資料傳遞到輸出。

無法保證完美的影格準確性,但結果對於某些用例來說已經足夠好了。

cue

以微秒為單位的 UNIX 時間戳記表示的提示時間戳記。預設值為 0。

preroll

以秒為單位表示的預先滾動傳遞內容的持續時間。預設值為 0。

buffer

等待提示之前要緩衝的最大內容持續時間,以秒為單位表示。預設值為 0。

11.53 curves

使用曲線套用色彩調整。

此濾鏡類似於 Adobe Photoshop 和 GIMP 曲線工具。每個組件(紅色、綠色和藍色)的值由 N 個關鍵點定義,這些關鍵點使用平滑曲線相互連接。x 軸表示來自輸入影格的像素值,y 軸表示要為輸出影格設定的新像素值。

預設情況下,組件曲線由兩個點 (0;0)(1;1) 定義。這會建立一條直線,其中每個原始像素值都「調整」為其自身的值,這表示影像沒有變化。

濾鏡允許您重新定義這兩個點並新增更多點。將定義一條新曲線,以平滑地穿過所有這些新坐標。新定義的點需要在 x 軸上嚴格遞增,並且它們的 xy 值必須在 [0;1] 區間內。曲線是通過使用自然或單調三次樣條內插形成的,具體取決於 interp 選項(預設值:natural)。natural 樣條通常產生更平滑的曲線,而單調 (pchip) 樣條保證指定點之間的過渡是單調的。如果計算出的曲線恰好超出向量空間,則值將被相應地裁剪。

濾鏡接受以下選項

preset

選擇可用的顏色預設之一。此選項可以與 rgb 參數一起使用;在這種情況下,後面的選項優先於預設值。可用的預設值為

none
color_negative
cross_process
darker
increase_contrast
lighter
linear_contrast
medium_contrast
negative
strong_contrast
vintage

預設值為 none

master, m

設定主關鍵點。這些點將定義第二次傳遞映射。它有時被稱為「亮度」或「值」映射。它可以與 rgball 一起使用,因為它的作用類似於後處理 LUT。

red, r

設定紅色組件的關鍵點。

green, g

設定綠色組件的關鍵點。

blue, b

設定藍色組件的關鍵點。

設定用於設定跨聲道樣本延遲的隨機種子。

all

設定所有組件(不包括主組件)的關鍵點。可以與其他關鍵點組件選項結合使用。在這種情況下,未設定的組件將回退到此 all 設定。

psfile

指定 Photoshop 曲線檔案 (.acv) 以從中導入設定。

plot

interp

將曲線的 Gnuplot 腳本儲存在指定檔案中。

interp

指定內插種類。可用的演算法有

natural

自然三次樣條,使用分段三次多項式,該多項式是兩次連續可微分的。

pchip

11.53.1 指令

blend

11.53.2 範例

  • 單調三次樣條,使用分段三次 Hermite 內插多項式 (PCHIP)。
    curves=blue='0/0 0.5/0.58 1/1'
    
  • 為了避免某些濾鏡圖語法衝突,每個關鍵點列表都需要使用以下語法定義:x0/y0 x1/y1 x2/y2 ...
    curves=r='0/0.11 .42/.51 1/0.95':g='0/0 0.50/0.48 1/1':b='0/0.22 .49/.44 1/0.8'
    

    稍微增加藍色的中間層級

    復古效果

    (0;0.11) (0.42;0.51) (1;0.95)

    在這裡,我們獲得每個組件的以下坐標

    (0;0) (0.50;0.48) (1;1)

    紅色

    (0;0.22) (0.49;0.44) (1;0.80)

  • 綠色
    curves=preset=vintage
    
  • 藍色
    curves=vintage
    
  • 先前的範例也可以通過相關的內建預設值來實現
    curves=psfile='MyCurvesPresets/purple.acv':green='0/0 0.45/0.53 1/1'
    
  • 或只是
    ffmpeg -f lavfi -i color -vf curves=cross_process:plot=/tmp/curves.plt -frames:v 1 -f null -
    gnuplot -p /tmp/curves.plt
    

11.54 datascope

使用 Photoshop 預設值並重新定義綠色組件的點

使用 ffmpeggnuplot 檢查 cross_process 配置文件的曲線

濾鏡接受以下選項

size, s

視訊資料分析濾鏡。

x

此濾鏡顯示部分視訊的十六進制像素值。

y

size

mode

設定輸出視訊大小。

x

設定從何處選取像素的 x 偏移量。

y

設定從何處選取像素的 y 偏移量。

mode

設定範圍模式,可以是以下之一

mono

在黑色背景上用白色繪製十六進制像素值。

color

在黑色背景上用輸入視訊像素顏色繪製十六進制像素值。

format

color2

在從輸入視訊中選取的彩色背景上繪製十六進制像素值,文字顏色以使其始終可見的方式選取。

axis

11.54.1 指令

在視訊的左側和頂部繪製行號和列號。

11.55 dblur

opacity

濾鏡接受以下選項

設定輸入聲道佈局。預設情況下,這是 <var>stereo</var>。

設定背景不透明度。

設定虛擬喇叭的仰角,單位為度。預設值為 0。

format

planes

planes

11.55.1 指令

colorkey

如果指定的表達式無效,則會保持其目前值。

11.56 dctdnoiz

設定顯示數字格式。可以是 hexdec。預設值為 hex

components

濾鏡接受以下選項

設定要顯示的像素組件。預設情況下,顯示所有像素組件。

此濾鏡支援與選項相同的 commands,不包括 size 選項。

套用方向模糊濾鏡。

angle

設定方向模糊的角度。預設值為 45

overlap

radius

設定方向模糊的半徑。預設值為 5

使用 2D DCT(頻域濾鏡處理)對影格進行去噪。

此濾鏡並非為即時設計。

sigma, s

設定雜訊 sigma 常數。

sigma 定義了 3 * sigma 的硬閾值;低於此閾值的每個 DCT 係數(絕對值)都將被丟棄。

如果您需要更進階的濾鏡處理,請參閱 expr

n

預設值為 0

overlap

11.56.1 範例

設定每個區塊的重疊像素數。由於濾鏡可能很慢,您可能需要降低此值,但代價是濾鏡效果較差以及出現各種偽影的風險。

dctdnoiz=4.5

如果重疊值不允許處理整個輸入寬度或高度,則會顯示警告,並且相應的邊界將不會被去噪。

dctdnoiz=e='gte(c, 4.5*3)'

預設值為 blocksize-1,這是最佳設定。

dctdnoiz=15:n=4

11.57 deband

expr, e

濾鏡接受以下選項

設定係數因子表達式。
對於 DCT 區塊的每個係數,此表達式將評估為係數的乘數值。
如果設定此選項,則將忽略 sigma 選項。
可以通過 c 變數存取係數的絕對值。

bits

使用位元數設定 blocksize1<<n 定義 blocksize,它是處理區塊的寬度和高度。

預設值為 3 (8x8),可以提高到 4 以獲得 blocksize 為 16x16。請注意,更改此設定對速度處理有巨大的影響。此外,更大的區塊大小並不一定意味著更好的去噪。

套用 sigma 為 4.5 的去噪

可以使用表達式系統實現相同的操作

使用 16x16 的區塊大小進行暴力去噪

從輸入視訊中移除條帶偽影。它的工作原理是用參考像素的平均值替換條帶像素。

1thr

2thr

11.57.1 指令

此濾鏡支援以上所有選項作為 commands

11.58 deblock

3thr

濾鏡接受以下選項

filter

4thr

block

設定每個平面的條帶偵測閾值。預設值為 0.02。有效範圍為 0.00003 到 0.5。如果當前像素與參考像素之間的差異小於閾值,則將其視為條帶。

range, r
beta
gamma
delta

像素條帶偵測範圍。預設值為 16。如果為正數,將使用範圍 0 到設定值之間的隨機數。如果為負數,將使用精確的絕對值。範圍定義了當前像素周圍四個像素的正方形。

planes

direction, d

11.58.1 範例

  • 設定弧度方向,將從該方向比較四個像素。如果為正數,將選取從 0 到設定方向的隨機方向。如果為負數,將選取絕對值的精確值。例如,方向 0、-PI 或 -2*PI 弧度將僅選取同一行上的像素,而 -PI/2 將僅選取同一列上的像素。
    deblock=filter=weak:block=4
    
  • blur, b
    deblock=filter=strong:block=4:alpha=0.12:beta=0.07:gamma=0.06:delta=0.05
    
  • 如果啟用,當前像素將與所有四個周圍像素的平均值進行比較。預設情況下為啟用。如果禁用,當前像素將與所有四個周圍像素進行比較。只有當與周圍像素的所有四個差異都小於閾值時,像素才被視為條帶。
    deblock=filter=strong:block=4:alpha=0.12:beta=0.07:gamma=0.06:delta=0.05:planes=1
    
  • coupling, c
    deblock=filter=strong:block=4:alpha=0.12:beta=0.07:gamma=0.06:delta=0.05:planes=6
    

11.58.2 指令

此濾鏡支援以上所有選項作為 commands

11.59 decimate

如果啟用,則僅當所有像素組件都為條帶時才更改當前像素,例如,為所有顏色組件觸發條帶偵測閾值。預設情況下為禁用。

濾鏡接受以下選項

從輸入視訊中移除區塊偽影。

filter

設定濾鏡類型,可以是 weakstrong。預設值為 strong。這控制應用哪種類型的去塊。

block

設定區塊的大小,允許的範圍為 4 到 512。預設值為 8

alpha

設定區塊偵測閾值。允許的範圍為 0 到 1。預設值為:alpha0.098,其餘為 0.05。使用更高的閾值可提供更強的去塊強度。設定 alpha 控制區塊精確邊緣的閾值偵測。剩餘選項控制邊緣附近的閾值偵測。每個選項用於下方/上方或左側/右側。將其中任何一個設定為 0 會禁用去塊。
planes

設定要濾鏡處理的平面。預設值為濾鏡處理所有可用的平面。

使用弱濾鏡和 4 像素的區塊大小進行去塊。

使用強濾鏡、4 像素的區塊大小和自訂閾值進行去塊,以去塊更多邊緣。

與上述類似,但僅濾鏡處理第一個平面。

與上述類似,但僅濾鏡處理第二個和第三個平面。

mixed

以規律的間隔丟棄重複的影格。

11.60 deconvolve

cycle

濾鏡接受以下選項

planes

設定要處理的平面。

脈衝

設定將處理哪些脈衝視訊影格,可以是 firstall。預設值為 all

設定將丟棄一個影格的影格數。將此值設定為 N 表示每批 N 個影格中將丟棄一個影格。預設值為 5

dupthresh

設定重複偵測的閾值。如果影格的差異度量小於或等於此值,則將其宣告為重複。預設值為 1.1

11.61 dedot

scthresh

設定視窗長度,以樣本為單位。預設值為 2048。允許範圍為 32 到 65536。

m

設定場景變更閾值。預設值為 15

blockx

blocky

設定度量計算期間使用的 x 軸和 y 軸區塊的大小。較大的區塊可提供更好的雜訊抑制,但也使小運動的偵測效果更差。必須是 2 的冪。預設值為 32

ppsrc

將主輸入標記為預處理輸入並啟用乾淨來源輸入串流。這允許使用各種濾鏡預處理輸入,以幫助度量計算,同時保持影格選擇無損。當設定為 1 時,第一個串流用於預處理輸入,第二個串流是乾淨來源,從中選擇保留的影格。預設值為 0

chroma

設定是否在度量計算中考慮色度。預設值為 1

partial

11.62 deflate

設定輸入是否僅部分包含要縮減取樣的內容。預設值為 false。如果啟用,視訊輸出串流將採用可變影格率。

使用第二個串流作為脈衝,在頻域中套用視訊串流的 2D 反卷積。

設定視窗長度,以樣本為單位。預設值為 2048。允許範圍為 32 到 65536。

noise
設定執行除法時的雜訊。預設值為 0.0000001。當寬度和高度不相同且不是 2 的冪,或者卷積之前的串流有雜訊時很有用。
deconvolve 濾鏡也支援 framesync 選項。
減少視訊中的交叉亮度(點爬行)和交叉顏色(彩虹)。

mode

11.62.1 指令

此濾鏡支援以上所有選項作為 commands

11.63 deflicker

設定操作模式。可以是 dotcrawl(用於交叉亮度減少)和/或 rainbows(用於交叉顏色減少)的組合。

設定視窗長度,以樣本為單位。預設值為 2048。允許範圍為 32 到 65536。

size, s

lt

設定空間亮度閾值。較低的值會增加交叉亮度的減少。

tl

提升高於偵測臨界值的頻率。

設定時間亮度容差。較高的值會增加交叉亮度的減少。

tc

設定色度時間變化的容差。較高的值會增加交叉顏色的減少。

ct

設定時間色度閾值。較低的值會增加交叉顏色的減少。

將放氣效果套用到視訊。

此濾鏡通過僅考慮小於像素的值,用局部 (3x3) 平均值替換像素。

threshold0

threshold1

threshold2

threshold3

限制每個平面的最大變化,預設值為 65535。如果為 0,則平面將保持不變。

median

移除時間影格亮度變化。

size

以影格為單位設定移動平均濾鏡大小。預設值為 5。允許的範圍為 2 - 129。

11.64 dejudder

mode, m

設定平均模式以平滑時間亮度變化。

am

從輸入視訊中移除區塊偽影。

算術平均值

gm

幾何平均值

hm

調和平均值

qm

二次平均值

cm

立方平均值

11.65 delogo

pm

它接受以下參數

x
y

冪平均值

f
h

median

中位數

bypass

實際上不修改影格。當只想使用元數據時很有用。

11.65.1 範例

  • 移除由部分交錯電視電影內容產生的顫動。
    delogo=x=0:y=0:w=100:h=77
    

11.66 derain

例如,pullup 濾鏡可能會引入顫動。如果原始來源是部分電視電影內容,則 pullup,dejudder 的輸出將具有可變影格率。可能會更改容器的記錄影格率。除了該更改之外,此濾鏡不會影響恆定影格率視訊。

  • 此濾鏡中可用的選項為

cycle

濾鏡接受以下選項

指定顫動重複的窗口長度。

接受任何大於 1 的整數。有用的值為

4

如果原始影片是從 24 fps 電影膠片轉換為 30 fps (電影到 NTSC)。

5

如果原始影片是從 25 fps PAL 轉換為 30 fps (PAL 到 NTSC)。

20

如果兩者混合。

預設值為 ‘4’。

通過簡單地內插周圍的像素來抑制電視台標誌。只需設定一個覆蓋標誌的矩形,然後觀看它消失(有時甚至會出現更醜陋的東西 - 效果因情況而異)。

x

指定標誌的左上角坐標。它們必須指定。

w

指定要清除的標誌的寬度和高度。它們必須指定。

11.67 deshake

show

濾鏡接受以下選項

x
y
f
h

當設定為 1 時,會在螢幕上繪製一個綠色矩形,以簡化查找正確的 xywh 參數。預設值為 0。

矩形繪製在最外層像素上,這些像素將(部分)被內插值替換。每個方向上緊鄰此矩形外部的下一個像素的值將用於計算矩形內部的內插像素值。

設定一個矩形,覆蓋左上角坐標為 0,0 且大小為 100x77 的區域

通過應用基於卷積神經網路的去雨方法,移除輸入影像/視訊中的雨水。支援的模型

循環擠壓和激勵上下文聚合網路 (RESCAN)。請參閱 http://openaccess.thecvf.com/content_ECCV_2018/papers/Xia_Li_Recurrent_Squeeze-and-Excitation_Context_ECCV_2018_paper.pdf
訓練以及模型產生腳本在 https://github.com/XueweiMeng/derain_filter.git 的儲存庫中提供。

filter_type

edge

指定要使用的濾鏡。此選項接受以下值

derain

去雨濾鏡。要執行去雨濾鏡,您需要使用去雨模型。

dehaze

去霧濾鏡。要執行去霧濾鏡,您需要使用去霧模型。

預設值為 ‘derain’。

dnn_backend

指定要用於模型載入和執行的 DNN 後端。此選項接受以下值

tensorflow

TensorFlow 後端。要啟用此後端,您需要安裝 TensorFlow for C 庫(請參閱 https://tensorflow.dev.org.tw/install/lang_c)並使用 --enable-libtensorflow 配置 FFmpeg

model

設定模型檔案的路徑,該檔案指定網路架構及其參數。請注意,不同的後端使用不同的檔案格式。TensorFlow 只能載入其格式的檔案。

contrast

要獲得完整功能(例如異步執行),請使用 dnn_processing 濾鏡。

嘗試修復水平和/或垂直偏移的微小變化。此濾鏡有助於消除手持相機、碰撞三腳架、在車輛上移動等引起的相機抖動。

motion_区域

指定一個矩形區域,在其中限制運動向量的搜尋。如果需要,可以將運動向量的搜尋限制在影格的矩形區域內,該區域由其左上角、寬度和高度定義。這些參數的含義與 drawbox 濾鏡相同,drawbox 濾鏡可用於視覺化邊界框的位置。

當影格內主體的同時運動可能會被運動向量搜尋誤認為是相機運動時,這很有用。

如果 xywh 中的任何一個或全部設定為 -1,則使用整個影格。這允許稍後設定選項,而無需為運動向量搜尋指定邊界框。

預設值 - 搜尋整個影格。

rx

ry

指定 x 和 y 方向上的最大移動範圍,範圍為 0-64 像素。預設值為 16。

11.68 despill

邊緣

此濾波器還能夠拉伸/壓縮音訊資料以使其與時間戳記匹配,或注入靜音/剪切音訊以使其與時間戳記匹配,執行兩者的組合或兩者都不執行。

將第二個聲道延遲 500 個樣本,將第三個聲道延遲 700 個樣本,並保持第一個聲道(和可能存在的任何其他聲道)不變。

指定如何產生像素以填充影格邊緣的空白。可用的值為

mix

blank, 0

在空白位置填充零

original, 1

復古效果

空白位置的原始影像

在這裡,我們獲得每個組件的以下坐標

clamp, 2

紅色

空白位置的擠壓邊緣值

mirror, 3

空白位置的鏡像邊緣

range, r

預設值為 ‘mirror’。

11.68.1 指令

此濾鏡支援以上所有選項作為 commands

11.69 detelecine

blocksize

此濾波器還能夠拉伸/壓縮音訊資料以使其與時間戳記匹配,或注入靜音/剪切音訊以使其與時間戳記匹配,執行兩者的組合或兩者都不執行。

指定用於運動搜尋的區塊大小。範圍 4-128 像素,預設值為 8。
contrast

指定區塊的對比度閾值。僅考慮對比度(最暗像素和最亮像素之間的差異)大於指定對比度的區塊。範圍 1-255,預設值為 125。

search

指定搜尋策略。可用的值為

exhaustive, 0

設定窮盡搜尋

less, 1

設定較少窮盡搜尋。

11.70 dilation

預設值為 ‘exhaustive’。

logfile

設定視窗長度,以樣本為單位。預設值為 2048。允許範圍為 32 到 65536。

noise
設定執行除法時的雜訊。預設值為 0.0000001。當寬度和高度不相同且不是 2 的冪,或者卷積之前的串流有雜訊時很有用。
deconvolve 濾鏡也支援 framesync 選項。
減少視訊中的交叉亮度(點爬行)和交叉顏色(彩虹)。

mode

filename

如果設定,則運動搜尋的詳細日誌將寫入指定的檔案。

移除前景顏色的不必要污染,這些污染是由綠幕或藍幕的反射顏色引起的。

1 2 3 4 5 6 7 8

11.70.1 指令

此濾鏡支援以上所有選項作為 commands

11.71 displace

type

設定要使用的去除溢色類型。

method

設定將如何產生溢色圖。

以下是接受選項的描述。

edge

expand

提升高於偵測臨界值的頻率。

設定要去除多少剩餘溢色。

red

控制溢色區域中的紅色量。

green

控制溢色區域中的綠色量。綠幕應為 -1。

blue

控制溢色區域中的藍色量。藍幕應為 -1。

brightness

控制溢色區域的亮度,同時保留顏色。

11.71.1 範例

  • alpha
    ffmpeg -i INPUT -f lavfi -i nullsrc=s=hd720,lutrgb=128:128:128 -f lavfi -i nullsrc=s=hd720,geq='r=128+30*sin(2*PI*X/400+T):g=128+30*sin(2*PI*X/400+T):b=128+30*sin(2*PI*X/400+T)' -lavfi '[0][1][2]displace' OUTPUT
    
  • 從產生的溢色圖修改 alpha。
    ffmpeg -i INPUT -f lavfi -i nullsrc=hd720,geq='r=128+80*(sin(sqrt((X-W/2)*(X-W/2)+(Y-H/2)*(Y-H/2))/220*2*PI+T)):g=128+80*(sin(sqrt((X-W/2)*(X-W/2)+(Y-H/2)*(Y-H/2))/220*2*PI+T)):b=128+80*(sin(sqrt((X-W/2)*(X-W/2)+(Y-H/2)*(Y-H/2))/220*2*PI+T))' -lavfi '[1]split[x][y],[0][x][y]displace' OUTPUT
    

11.72 dnn_classify

套用電視電影操作的精確逆運算。它需要使用 pattern 選項指定的預定義模式,該模式必須與傳遞給電視電影濾鏡的模式相同。

濾鏡接受以下選項

如果兩者混合。

first_field

指定標誌的左上角坐標。它們必須指定。

top, t

頂場優先

bottom, b

音訊資料的 Adler-32 檢查碼(以十六進制列印)。對於平面音訊,資料被視為所有平面都已連接。

底場優先。預設值為 top

pattern

表示您要套用的下拉模式的數字字串。預設值為 23

start_frame

表示相對於電視電影模式的第一個影格位置的數字。如果串流被剪切,則使用此選項。預設值為 0

將擴張效果套用到視訊。

此濾鏡用局部 (3x3) 最大值替換像素。

coordinates

11.73 dnn_detect

標記,用於指定要參考的像素。預設值為 255,即使用所有八個像素。

濾鏡接受以下選項

如果兩者混合。

first_field

指定標誌的左上角坐標。它們必須指定。

top, t

頂場優先

bottom, b

音訊資料的 Adler-32 檢查碼(以十六進制列印)。對於平面音訊,資料被視為所有平面都已連接。

底場優先。預設值為 top

pattern

表示您要套用的下拉模式的數字字串。預設值為 23

start_frame

標記到局部 3x3 坐標的映射,如下所示

將擴張效果套用到視訊。

根據第二個和第三個輸入串流指示的方式置換像素。

11.74 dnn_processing

它採用三個輸入串流並輸出一個串流,第一個輸入是來源,第二個和第三個輸入是置換圖。

濾鏡接受以下選項

如果兩者混合。

預設值為 ‘4’。

通過簡單地內插周圍的像素來抑制電視台標誌。只需設定一個覆蓋標誌的矩形,然後觀看它消失(有時甚至會出現更醜陋的東西 - 效果因情況而異)。

x

第二個輸入指定沿 x 軸置換像素的量,而第三個輸入指定沿 y 軸置換像素的量。如果其中一個置換圖串流終止,將使用來自該置換圖的最後一個影格。

請注意,一旦產生,置換圖可以重複使用。

邊界

設定超出範圍的像素的置換行為。

指定標誌的左上角坐標。它們必須指定。

blank

頂場優先

bottom, b

音訊資料的 Adler-32 檢查碼(以十六進制列印)。對於平面音訊,資料被視為所有平面都已連接。

底場優先。預設值為 top

將擴張效果套用到視訊。

根據第二個和第三個輸入串流指示的方式置換像素。

遺失的像素將被黑色像素替換。

11.74.1 範例

  • smear
    ./ffmpeg -i rain.jpg -vf format=rgb24,dnn_processing=dnn_backend=tensorflow:model=can.pb:input=x:output=y derain.jpg
    
  • 相鄰像素將展開以替換遺失的像素。
    ./ffmpeg -i 480p.jpg -vf format=yuv420p,scale=w=iw*2:h=ih*2,dnn_processing=dnn_backend=tensorflow:model=srcnn.pb:input=x:output=y -y srcnn.jpg
    
  • wrap
    ./ffmpeg -i 480p.jpg -vf format=yuv420p,dnn_processing=dnn_backend=tensorflow:model=espcn.pb:input=x:output=y:backend_configs=sess_config=0x10022805320e09cdccccccccccec3f20012a01303801 -y tmp.espcn.jpg
    

11.75 drawbox

超出範圍的像素將被包裹,以便它們指向另一側的像素。

它接受以下參數

x
y

mirror

width, w
超出範圍的像素將被鏡像像素替換。

預設值為 ‘smear’。

向 hd720 視訊大小的 rgb 輸入新增波紋效果

向 hd720 視訊大小的 rgb 輸入新增波浪效果

使用基於邊界框的深度神經網路進行分類。

dnn_backend

指定要用於模型載入和執行的 DNN 後端。此選項現在僅接受 openvino,將新增 tensorflow 後端。

model

設定模型檔案的路徑,該檔案指定網路架構及其參數。請注意,不同的後端使用不同的檔案格式。

input

dar

設定 dnn 網路的輸入名稱。

hsub
vsub

水平和垂直色度子採樣值。例如,對於像素格式 "yuv422p",hsub 為 2,vsub 為 1。

output
設定 dnn 網路的輸出名稱。

輸入寬度和高度。

sar

confidence

x
y

設定置信度閾值(預設值:0.5)。

f
h

labels

設定標籤檔案的路徑,該檔案指定標籤 ID 和名稱之間的映射。每個標籤名稱都寫在一行中,跳過尾隨空格和空行。第一行是標籤 ID 0 的名稱,第二行是標籤 ID 1 的名稱,依此類推。如果未提供標籤檔案,則標籤 ID 將被視為名稱。

backend_configs

設定要傳遞到後端的配置

設定傳輸表達式。

對於 tensorflow 後端,您可以使用 sess_config 選項設定其配置,請使用 tools/python/tf_sess_config.py 來獲取系統的配置。

使用深度神經網路進行物件偵測。

11.75.1 範例

  • labels
    drawbox
    
  • 設定標籤檔案的路徑,該檔案指定標籤 ID 和名稱之間的映射。每個標籤名稱都寫在一行中,跳過尾隨空格和空行。第一行是標籤 ID 0 的名稱(通常為「背景」),第二行是標籤 ID 1 的名稱,依此類推。如果未提供標籤檔案,則標籤 ID 將被視為名稱。
    drawbox=10:20:200:60:red@0.5
    

    backend_configs

    drawbox=x=10:y=20:w=200:h=60:color=red@0.5
    
  • 設定要傳遞到後端的配置。要使用異步執行,請設定 async(預設值:設定)。如果後端不支持異步,則回退到同步執行。
    drawbox=x=10:y=10:w=100:h=100:color=pink@0.5:t=fill
    
  • 使用深度神經網路進行影像處理。它與另一個濾鏡一起工作,該濾鏡將影格的像素格式轉換為 dnn 網路所需的内容。
    drawbox=x=-t:y=0.5*(ih-iw/2.4)-t:w=iw+t*2:h=iw/2.4+t*2:t=2:c=red
    

11.75.2 指令

avgblur

如果指定的表達式無效,則會保持其目前值。

11.76 drawgraph

dnn_backend

它接受以下參數

openvino

OpenVINO 後端。要啟用此後端,您需要構建並安裝 OpenVINO for C 庫(請參閱 https://github.com/openvinotoolkit/openvino/blob/master/build-instruction.md)並使用 --enable-libopenvino 配置 FFmpeg(如果標頭檔案和庫未安裝到系統路徑中,則可能需要 –extra-cflags=-I... –extra-ldflags=-L...)

torch

Libtorch 後端。要啟用此後端,您需要構建並安裝 Libtroch for C++ 庫。請下載 cxx11 ABI 版本(請參閱 https://pytorch.dev.org.tw/get-started/locally)並使用 --enable-libtorch --extra-cflags=-I/libtorch_root/libtorch/include --extra-cflags=-I/libtorch_root/libtorch/include/torch/csrc/api/include --extra-ldflags=-L/libtorch_root/libtorch/lib/ 配置 FFmpeg

model

設定模型檔案的路徑,該檔案指定網路架構及其參數。請注意,不同的後端使用不同的檔案格式。TensorFlow、OpenVINO 和 Libtorch 後端只能載入其格式的檔案。

backend_configs

對於 tensorflow 後端,您可以使用 sess_config 選項設定其配置,請使用 tools/python/tf_sess_config.py 來獲取系統的 TensorFlow 後端的配置。

使用 can.pb 移除 rgb24 影格中的雨水(請參閱 derain 濾鏡)

對於 yuv420p 格式(支援平面 YUV 格式)的影格,使用 srcnn.pb 處理 Y 通道(請參閱 sr 濾鏡)

對於格式為 yuv420p(支援平面 YUV 格式)的影格,使用 espcn.pb 處理 Y 通道(請參閱 sr 濾鏡),這會更改影格大小,請使用 tools/python/tf_sess_config.py 來獲取系統的 TensorFlow 後端的配置。

在輸入影像上繪製彩色框。

x, left

指定框的左上角坐標的表達式。預設值為 0。

height, h

y, top

min

指定框的左上角坐標的表達式。預設值為 0。

max

width, w

bg

height, h

mode

指定框的寬度和高度的表達式;如果為 0,則將其解釋為輸入寬度和高度。預設值為 0。

color, c

指定要寫入的框的顏色。有關此選項的通用語法,請查看 (ffmpeg-utils) 手冊中的「顏色」部分。如果使用特殊值 invert,則框邊緣顏色與反轉亮度的視訊相同。
thickness, t
設定框邊緣厚度的表達式。值 fill 將建立一個填充框。預設值為 3

請參閱下文以獲取接受的常數列表。

replace

如果輸入具有 alpha,則適用。值為 1 時,繪製框的像素將覆蓋視訊的顏色和 alpha 像素。預設值為 0,它將框複合到輸入上,使視訊的 alpha 保持不變。

用於 xywh 以及 t 的參數是包含以下常數的表達式

frame

dar

輸入顯示縱橫比,它與 (w / h) * sar 相同。

in_h, ih

in_w, iw

sar

輸入樣本縱橫比。

x, box_x

y, box_y

框的繪製位置的 x 和 y 偏移坐標。

w, box_w

size

h, box_h

繪製框的寬度和高度。

box_source

如果想要使用側資料偵測邊界框中的框資料,則可以將框來源設定為 side_data_detection_bboxes。

如果設定了 box_source,則將忽略 xywidthheight,並且仍然使用側資料偵測邊界框中的框資料。因此,如果您不確定框來源,請不要使用此參數。

t, thickness

繪製框的厚度。

這些常數允許 xywht 表達式相互引用,因此例如您可以指定 y=x/darh=w/dar

在輸入影像的邊緣周圍繪製一個黑色框

繪製一個顏色為紅色且不透明度為 50% 的框

先前的範例可以指定為

用粉紅色填充框

signalstats,drawgraph=lavfi.signalstats.YAVG:min=0:max=255

繪製一個 2 像素紅色 2.40:1 遮罩

ebur128=metadata=1,adrawgraph=lavfi.r128.M:min=-120:max=5

11.77 drawgrid

使用輸入視訊元數據繪製圖表。

它接受以下參數

x
y

m1

width, w
超出範圍的像素將被鏡像像素替換。

設定第一個影格元數據鍵,將從中獲取元數據值以繪製圖表。

向 hd720 視訊大小的 rgb 輸入新增波紋效果

fg1

使用基於邊界框的深度神經網路進行分類。

設定第一個前景顏色表達式。

指定要用於模型載入和執行的 DNN 後端。此選項現在僅接受 openvino,將新增 tensorflow 後端。

model

m2

input

dar

設定 dnn 網路的輸入名稱。

hsub
vsub

水平和垂直色度子採樣值。例如,對於像素格式 "yuv422p",hsub 為 2,vsub 為 1。

output
設定 dnn 網路的輸出名稱。

設定第二個影格元數據鍵,將從中獲取元數據值以繪製圖表。

sar

confidence

x
y

fg2

f
h

設定第二個前景顏色表達式。

設定傳輸表達式。

m3

使用深度神經網路進行物件偵測。

11.77.1 範例

  • 設定第三個影格元數據鍵,將從中獲取元數據值以繪製圖表。
    drawgrid=width=100:height=100:thickness=2:color=red@0.5
    
  • fg3
    drawgrid=w=iw/3:h=ih/3:t=2:c=white@0.5
    

11.77.2 指令

avgblur

如果指定的表達式無效,則會保持其目前值。

11.78 drawtext

設定第三個前景顏色表達式。

m4

11.78.1 語法

它接受以下參數

設定第四個影格元數據鍵,將從中獲取元數據值以繪製圖表。

fg4

設定第四個前景顏色表達式。

min

  • 設定元數據值的最小值。
  • max
  • 設定元數據值的最大值。
  • bgcolor

設定圖表背景顏色。預設值為白色。

mode

設定圖表模式。

模式的可用值為

bar

dot

line

預設值為 line

slide

設定滑動模式。

  • 滑動的可用值為
  • frame
  • 到達右邊界時繪製新影格。

replace

用新的列替換舊的列。

scroll

從右向左滾動。

rscroll

從左向右滾動。

picture

繪製單張圖片。

預設值為 frame

size

設定圖表視訊的大小。有關此選項的語法,請查看 (ffmpeg-utils) 手冊中的「視訊大小」部分。預設值為 900x256

rate, r

設定輸出影格率。預設值為 25

前景顏色表達式可以使用以下變數

MIN

元數據值的最小值。

MAX

元數據值的最大值。

VAL

當前元數據鍵值。

顏色定義為 0xAABBGGRR。

range, r

使用來自 signalstats 濾鏡的元數據的範例

使用來自 ebur128 濾鏡的元數據的範例

在輸入影像上繪製網格。

x, left

y, top

指定網格交叉點的某些點的坐標的表達式(旨在配置偏移量)。兩者都預設為 0。

width, w

height, h

default
指定網格單元格的寬度和高度的表達式,如果為 0,則分別將其解釋為輸入寬度和高度,減去 thickness,因此影像會被框起來。預設為 0。
color, c
指定網格的顏色。有關此選項的通用語法,請查看 (ffmpeg-utils) 手冊中的「顏色」部分。如果使用特殊值 invert,則網格顏色與反轉亮度的視訊相同。
thickness, t
設定網格線條厚度的表達式。預設值為 1
replace
如果輸入具有 alpha,則適用。值為 1 時,繪製網格的像素將覆蓋視訊的顏色和 alpha 像素。預設值為 0,它將網格複合到輸入上,使視訊的 alpha 保持不變。
iw, grid_w
ih, grid_h
輸入網格單元格寬度和高度。
x, grid_x
y, grid_y
網格交叉點的某些點的 x 和 y 坐標(旨在配置偏移量)。
w, cell_w

h, cell_h

繪製單元格的寬度和高度。

t, thickness

繪製單元格的厚度。

繪製單元格為 100x100 像素、厚度為 2 像素、顏色為紅色且不透明度為 50% 的網格

繪製不透明度為 50% 的白色 3x3 網格

使用 libfreetype 庫在視訊頂部繪製文字字串或來自指定檔案的文字。

要啟用此濾鏡的編譯,您需要使用 --enable-libfreetype--enable-libharfbuzz 配置 FFmpeg。要啟用預設字體回退和 font 選項,您需要使用 --enable-libfontconfig 配置 FFmpeg。要啟用 text_shaping 選項,您需要使用 --enable-libfribidi 配置 FFmpeg。

box

用於使用背景顏色在文字周圍繪製框。值必須為 1(啟用)或 0(禁用)。box 的預設值為 0。
boxborderw

設定要使用 boxcolor 在框周圍繪製的邊框的寬度。必須使用以下格式之一指定值

boxborderw=10 將所有邊框的寬度設定為 10

boxborderw=10|20 將頂部和底部邊框的寬度設定為 10,將左側和右側邊框的寬度設定為 20

boxborderw=10|20|30 將頂部邊框的寬度設定為 10,將底部邊框的寬度設定為 30,將左側和右側邊框的寬度設定為 20

boxborderw=10|20|30|40 將邊框寬度設定為 10(頂部)、20(右側)、30(底部)、40(左側)

boxborderw 的預設值為 "0"。

boxcolor

用於在文字周圍繪製框的顏色。有關此選項的語法,請查看 (ffmpeg-utils) 手冊中的「顏色」部分

boxcolor 的預設值為 "白色"。

line_spacing

設定行間距(以像素為單位)。line_spacing 的預設值為 0。

text

text_align

textfile

設定文字相對於框邊界的垂直和水平對齊方式。該值是標記的組合,一個用於垂直對齊(T=頂部,M=中間,B=底部),另一個用於水平對齊(L=左側,C=中心,R=右側)。請注意,僅當水平對齊方式為左側時,才支援 Tab 字元。

y_align

指定 y 值所指的內容。可能的值為

text 第一行文字的最高字形頂部放置在 y

baseline 第一行文字的基線放置在 y

font 第一行文字的基線放置在 y 加上字體度量中定義的上升高度(以像素為單位)

為了向後兼容,y_align 的預設值為 "text"。

borderw

x
y

設定要使用 bordercolor 在文字周圍繪製的邊框的寬度。borderw 的預設值為 0。

bordercolor

設定用於在文字周圍繪製邊框的顏色。有關此選項的語法,請查看 (ffmpeg-utils) 手冊中的「顏色」部分

bordercolor 的預設值為 "黑色"。

dar

expansion

hsub
vsub

水平和垂直色度子採樣值。例如,對於像素格式 "yuv422p",hsub 為 2,vsub 為 1。

選擇如何展開 text。可以是 nonestrftime(已棄用)或 normal(預設值)。請參閱下文的 文字展開 部分以獲取詳細資訊。

basetime

設定計數的開始時間。值以微秒為單位。僅應用於已棄用的 strftime 展開模式。要在正常展開模式下模擬,請使用 pts 函數,並提供開始時間(以秒為單位)作為第二個參數。

fix_bounds

如果為 true,則檢查並修復文字坐標以避免裁剪。

fontcolor

用於繪製字體的顏色。有關此選項的語法,請查看 (ffmpeg-utils) 手冊中的「顏色」部分

fontcolor 的預設值為 "黑色"。

fontcolor_expr

字串,其展開方式與 text 相同,以獲得動態 fontcolor 值。預設情況下,此選項具有空值且未處理。設定此選項後,它會覆蓋 fontcolor 選項。

font

用於繪製文字的字體系列。預設值為 Sans。

fontfile

用於繪製文字的字體檔案。必須包含路徑。如果禁用了 fontconfig 支援,則此參數是強制性的。

alpha

繪製文字時套用 alpha 混合。值可以是介於 0.0 和 1.0 之間的數字。表達式也接受相同的變數 x, y。預設值為 1。請參閱 fontcolor_expr

fontsize

用於繪製文字的字體大小。fontsize 的預設值為 16。

text_shaping

如果設定為 1,則嘗試在繪製文字之前對文字進行整形(例如,反轉從右到左的文字的順序並連接阿拉伯字元)。否則,僅按給定的方式繪製文字。預設值為 1(如果支援)。

ft_load_flags

用於載入字體的標記。

n

標記映射 libfreetype 支援的相應標記,並且是以下值的組合

no_scale

no_hinting

sar

confidence

設定傳輸表達式。

以秒為單位的時間戳記,如果輸入時間戳記未知,則為 NAN

render

no_bitmap

vertical_layout

force_autohint

x
y

crop_bitmap

pedantic

ignore_global_advance_width

no_recurse

ignore_transform

monochrome

duration

linear_design

no_autohint

預設值為 "default"。

11.78.2 文字擴展

有關更多資訊,請查閱 FT_LOAD_* libfreetype 標記的文檔。

shadowcolor

用於在繪製文字後面繪製陰影的顏色。有關此選項的語法,請查看 (ffmpeg-utils) 手冊中的「顏色」部分

shadowcolor 的預設值為 "黑色"。

boxw

設定要在文字周圍繪製的框的寬度。boxw 的預設值會自動計算以匹配文字寬度

boxh

此濾鏡並非為即時設計。

設定要在文字周圍繪製的框的高度。boxh 的預設值會自動計算以匹配文字高度

shadowx

shadowy

文字陰影位置相對於文字位置的 x 和 y 偏移量。它們可以是正值或負值。兩者的預設值均為 "0"。

start_number

n/frame_num 變數的起始影格編號。預設值為 "0"。

tabsize

用於呈現 Tab 的空格數大小。預設值為 4。

timecode

rolloff

以 "hh:mm:ss[:;.]ff" 格式設定初始時間碼表示形式。它可以與或不與 text 參數一起使用。必須指定 timecode_rate 選項。

timecode_rate, rate, r

設定時間碼影格率(僅限時間碼)。值將四捨五入到最接近的整數。最小值為 "1"。影格丟失時間碼支援影格率 30 和 60。

tc24hmax

如果設定為 1,則 timecode 選項的輸出將在 24 小時後環繞。預設值為 0(禁用)。

text

要繪製的文字字串。文字必須是 UTF-8 編碼字元的序列。如果未使用參數 textfile 指定檔案,則此參數是強制性的。

ignore_global_advance_width

textfile

pts

包含要繪製的文字的文字檔案。文字必須是 UTF-8 編碼字元的序列。

如果未使用參數 text 指定文字字串,則此參數是強制性的。

如果同時指定了 texttextfile,則會引發錯誤。

text_source

如果想要使用側資料偵測邊界框中的文字資料,則應將文字來源設定為 side_data_detection_bboxes。

11.78.3 指令

如果設定了文字來源,則將忽略 texttextfile,並且仍然使用側資料偵測邊界框中的文字資料。因此,如果您不確定文字來源,請不要使用此參數。

reload

textfile 將在指定的影格間隔重新載入。請務必以原子方式更新 textfile,否則可能會部分讀取,甚至失敗。範圍為 0 到 INT_MAX。預設值為 0。

x, left

fontsize=56:fontcolor=green:text='Hello World'

y, top

sendcmd=c='56.0 drawtext reinit fontsize=56\:fontcolor=green\:text=Hello\\ World'

指定文字將在視訊影格內繪製的偏移量的表達式。它們相對於輸出影像的頂部/左側邊框。

xy 的預設值為 "0"。

  • x
  • y
  • range, r
  • 使用來自 ebur128 濾鏡的元數據的範例
  • 設定輸出影格率。預設值為 25
  • mode
  • 從右向左滾動。
  • t, thickness
  • 設定第四個影格元數據鍵,將從中獲取元數據值以繪製圖表。
  • 繪製不透明度為 50% 的白色 3x3 網格
  • 要啟用此濾鏡的編譯,您需要使用 --enable-libfreetype--enable-libharfbuzz 配置 FFmpeg。要啟用預設字體回退和 font 選項,您需要使用 --enable-libfontconfig 配置 FFmpeg。要啟用 text_shaping 選項,您需要使用 --enable-libfribidi 配置 FFmpeg。
  • 設定第四個前景顏色表達式。
  • bar
  • line
  • 用於使用背景顏色在文字周圍繪製框。值必須為 1(啟用)或 0(禁用)。box 的預設值為 0。
  • boxborderw
  • 用新的列替換舊的列。

11.78.4 範例

  • 請參閱下文以獲取接受的常數和函數列表。
    drawtext="fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text'"
    
  • 繪製字型為 FreeSerif、大小為 24 的「Test Text」,位置在 x=100 和 y=50(從螢幕左上角開始計算),文字顏色為黃色,並以紅色方框框住。文字和方框的透明度均為 20%。
    drawtext="fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text':\
              x=100: y=50: fontsize=24: fontcolor=yellow@0.2: box=1: boxcolor=red@0.2"
    

    請注意,如果參數列表中未使用空格,則雙引號不是必要的。

  • 在視訊影格的中心顯示文字
    drawtext="fontsize=30:fontfile=FreeSerif.ttf:text='hello world':x=(w-text_w)/2:y=(h-text_h)/2"
    
  • 在隨機位置顯示文字,每 30 秒切換到新位置
    drawtext="fontsize=30:fontfile=FreeSerif.ttf:text='hello world':x=if(eq(mod(t\,30)\,0)\,rand(0\,(w-text_w))\,x):y=if(eq(mod(t\,30)\,0)\,rand(0\,(h-text_h))\,y)"
    
  • 在視訊影格的最後一行顯示從右向左滑動的文字行。檔案 LONG_LINE 假設包含單行文字,沒有換行符號。
    drawtext="fontsize=15:fontfile=FreeSerif.ttf:text=LONG_LINE:y=h-line_h:x=-50*t"
    
  • 在影格底部外顯示檔案 CREDITS 的內容並向上捲動。
    drawtext="fontsize=20:fontfile=FreeSerif.ttf:textfile=CREDITS:y=h-20*t"
    
  • 在輸入視訊的中心繪製單個綠色字母 "g"。字形基線放置在螢幕高度的一半位置。
    drawtext="fontsize=60:fontfile=FreeSerif.ttf:fontcolor=green:text=g:x=(w-max_glyph_w)/2:y=h/2-ascent"
    
  • 每 3 秒顯示文字 1 秒
    drawtext="fontfile=FreeSerif.ttf:fontcolor=white:x=100:y=x/dar:enable=lt(mod(t\,3)\,1):text='blink'"
    
  • 使用 fontconfig 設定字型。請注意,冒號需要跳脫字元。
    drawtext='fontfile=Linux Libertine O-40\\:style=Semibold:text=FFmpeg'
    
  • 繪製「Test Text」,字型大小取決於視訊的高度。
    drawtext="text='Test Text': fontsize=h/30: x=(w-text_w)/2: y=(h-text_h*2)"
    
  • 印出現場編碼的日期(請參閱 strftime C 函數的文件)
    drawtext='fontfile=FreeSans.ttf:text=%{localtime\:%a %b %d %Y}'
    
  • 顯示文字淡入和淡出(出現/消失)
    #!/bin/sh
    DS=1.0 # display start
    DE=10.0 # display end
    FID=1.5 # fade in duration
    FOD=5 # fade out duration
    ffplay -f lavfi "color,drawtext=text=TEST:fontsize=50:fontfile=FreeSerif.ttf:fontcolor_expr=ff0000%{eif\\\\: clip(255*(1*between(t\\, $DS + $FID\\, $DE - $FOD) + ((t - $DS)/$FID)*between(t\\, $DS\\, $DS + $FID) + (-(t - $DE)/$FOD)*between(t\\, $DE - $FOD\\, $DE) )\\, 0\\, 255) \\\\: x\\\\: 2 }"
    
  • 水平對齊多個獨立文字。請注意,max_glyph_afontsize 值包含在 y 偏移量中。
    drawtext=fontfile=FreeSans.ttf:text=DOG:fontsize=24:x=10:y=20+24-max_glyph_a,
    drawtext=fontfile=FreeSans.ttf:text=cow:fontsize=24:x=80:y=20+24-max_glyph_a
    
  • 如果存在特殊的中繼資料 lavf.image2dec.source_basename,則將其繪製到每個影格上。否則,繪製字串 "NA"。請注意,image2 解多工器必須具有選項 -export_path_metadata 1,特殊中繼資料欄位才能用於濾鏡。
    drawtext="fontsize=20:fontcolor=white:fontfile=FreeSans.ttf:text='%{metadata\:lavf.image2dec.source_basename\:NA}':x=10:y=10"
    

有關 libfreetype 的更多資訊,請查看:http://www.freetype.org/

有關 fontconfig 的更多資訊,請查看:http://freedesktop.org/software/fontconfig/fontconfig-user.html

有關 libfribidi 的更多資訊,請查看:http://fribidi.org/

有關 libharfbuzz 的更多資訊,請查看:https://github.com/harfbuzz/harfbuzz

11.79 edgedetect

偵測並繪製邊緣。此濾鏡使用 Canny 邊緣偵測演算法。

濾鏡接受以下選項

low
high

threshold

threshold

threshold

threshold

mode

定義繪圖模式。

wires

在黑色背景上繪製白色/灰色線條。

colormix

混合色彩以建立繪畫/卡通效果。

canny

在所有選定的平面上套用 Canny 邊緣偵測器。

預設值為 wires

planes

選取要篩選的平面。預設情況下,會篩選所有可用的平面。

11.79.1 範例

  • 使用自訂值進行遲滯閾值處理的標準邊緣偵測
    edgedetect=low=0.1:high=0.4
    
  • 無閾值處理的繪畫效果
    edgedetect=mode=colormix:high=0
    

11.80 elbg

使用 ELBG (Enhanced LBG) 演算法套用色調分離效果。

對於每個輸入影像,此濾鏡將計算從輸入到輸出的最佳映射,給定碼本長度,即不同輸出色彩的數量。

此濾鏡接受以下選項。

codebook_length, l

設定碼本長度。該值必須為正整數,並表示不同輸出色彩的數量。預設值為 256。

nb_steps, n

設定用於計算最佳映射的最大迭代次數。值越高,結果越好,計算時間也越長。預設值為 1。

seed, s

設定隨機種子,必須是介於 0 和 UINT32_MAX 之間的整數。如果未指定,或明確設定為 -1,則濾鏡將盡力使用良好的隨機種子。

pal8

設定 pal8 輸出像素格式。此選項不適用於碼本長度大於 256 的情況。預設為停用。

use_alpha

在量化計算中包含 alpha 值。允許建立具有多個 alpha 平滑混合的調色盤輸出影像 (例如 PNG8)。

11.81 entropy

測量視訊影格色彩通道直方圖中的灰階熵。

它接受以下參數

mode

可以是 normaldiff。預設值為 normal

diff 模式測量直方圖增量值(相鄰直方圖值之間的絕對差異)的熵。

11.82 epx

套用 EPX 放大濾鏡,該濾鏡專為像素藝術而設計。

設定柔削波的類型。

n

設定縮放尺寸:2 代表 2xEPX3 代表 3xEPX。預設值為 3

11.83 eq

設定亮度、對比度、飽和度和近似 gamma 調整。

濾鏡接受以下選項

contrast

設定對比度表示式。該值必須是介於 -1000.01000.0 之間的浮點值。預設值為 "1"。

mirror, 3

設定亮度表示式。該值必須是介於 -1.01.0 之間的浮點值。預設值為 "0"。

saturation

設定飽和度表示式。該值必須是介於 0.03.0 之間的浮點值。預設值為 "1"。

gamma

設定 gamma 表示式。該值必須是介於 0.110.0 之間的浮點值。預設值為 "1"。

gamma_r

設定紅色的 gamma 表示式。該值必須是介於 0.110.0 之間的浮點值。預設值為 "1"。

gamma_g

設定綠色的 gamma 表示式。該值必須是介於 0.110.0 之間的浮點值。預設值為 "1"。

gamma_b

設定藍色的 gamma 表示式。該值必須是介於 0.110.0 之間的浮點值。預設值為 "1"。

gamma_weight

設定 gamma 權重表示式。它可用於降低高 gamma 值對明亮影像區域的影響,例如,防止它們過度放大並變成純白色。該值必須是介於 0.01.0 之間的浮點值。值為 0.0 會完全關閉 gamma 校正,而 1.0 會保持其完整強度。預設值為 "1"。

eval

設定何時評估亮度、對比度、飽和度和 gamma 表示式。

設定叢發融合,以視窗大小的百分比表示。允許範圍為 010。預設值為 2。如果偵測為雜訊的任何兩個樣本之間的間隔小於此值,則這兩個樣本之間的任何樣本也將被偵測為雜訊。

init

僅在濾鏡初始化期間或處理命令時評估表示式一次

frame

為每個傳入的影格評估表示式

預設值為 ‘init’。

表示式接受以下參數

n

輸入影格的影格計數,從 0 開始

pos

輸入檔案中對應封包的位元組位置,如果未指定則為 NAN;已棄用,請勿使用

r

輸入視訊的影格率,如果輸入影格率未知則為 NAN

設定傳輸表達式。

以秒為單位的時間戳記,如果輸入時間戳記未知,則為 NAN

11.83.1 指令

此濾鏡支援以下命令

contrast

設定對比度表示式。

mirror, 3

設定亮度表示式。

saturation

設定飽和度表示式。

gamma

設定 gamma 表示式。

gamma_r

設定 gamma_r 表示式。

gamma_g

設定 gamma_g 表示式。

gamma_b

設定 gamma_b 表示式。

gamma_weight

設定 gamma_weight 表示式。

命令接受與對應選項相同的語法。

如果指定的表達式無效,則會保持其目前值。

11.84 erosion

將侵蝕效果套用於視訊。

此濾鏡將像素替換為局部 (3x3) 最小值。

設定視窗長度,以樣本為單位。預設值為 2048。允許範圍為 32 到 65536。

noise
設定執行除法時的雜訊。預設值為 0.0000001。當寬度和高度不相同且不是 2 的冪,或者卷積之前的串流有雜訊時很有用。
deconvolve 濾鏡也支援 framesync 選項。
減少視訊中的交叉亮度(點爬行)和交叉顏色(彩虹)。

mode

filename

如果設定,則運動搜尋的詳細日誌將寫入指定的檔案。

移除前景顏色的不必要污染,這些污染是由綠幕或藍幕的反射顏色引起的。

1 2 3 4 5 6 7 8

11.84.1 指令

此濾鏡支援以上所有選項作為 commands

11.85 estdif

為輸入視訊解交錯處理("estdif" 代表 "Edge Slope Tracing Deinterlacing Filter")。

僅空間濾鏡,使用邊緣斜率追蹤演算法來內插遺失的線條。它接受以下參數

mode

mode

frame

mode

field

mode

預設值為 field

parity

parity

tff

parity

bff

parity

auto

parity

parity

deint

deint

設定用於設定跨聲道樣本延遲的隨機種子。

deint

interlaced

deint

deint

rslope

指定邊緣斜率追蹤的搜尋半徑。預設值為 1。允許範圍為 1 到 15。

redge

指定最佳邊緣匹配的搜尋半徑。預設值為 2。允許範圍為 0 到 15。

ecost

指定邊緣匹配的邊緣成本。預設值為 2。允許範圍為 0 到 50。

mcost

指定邊緣匹配的中間成本。預設值為 1。允許範圍為 0 到 50。

dcost

指定邊緣匹配的距離成本。預設值為 1。允許範圍為 0 到 50。

interp

指定使用的內插法。預設為 4 點內插法。它接受以下值之一

2p

兩點內插法。

4p

四點內插法。

6p

六點內插法。

11.85.1 指令

blend

11.86 exposure

調整視訊串流的曝光。

濾鏡接受以下選項

exposure

以 EV 為單位設定曝光校正。允許範圍為 -3.0 到 3.0 EV。預設值為 0 EV。

black

設定黑階校正。允許範圍為 -1.0 到 1.0。預設值為 0。

11.86.1 指令

blend

11.87 extractplanes

從輸入視訊串流中提取色彩通道組件到獨立的灰階視訊串流中。

stages

planes

設定要提取的平面。

平面的可用值為

y
u
v
a
r
g
b

選擇輸入中不可用的平面將導致錯誤。這表示您無法同時選擇具有 yuv 平面的 rgb 平面。

11.87.1 範例

  • 從輸入視訊影格中提取亮度、u 和 v 色彩通道組件到 3 個灰階輸出
    ffmpeg -i video.avi -filter_complex 'extractplanes=y+u+v[y][u][v]' -map '[y]' y.avi -map '[u]' u.avi -map '[v]' v.avi
    

11.88 fade

將淡入/淡出效果套用於輸入視訊。

它接受以下參數

type, t

效果類型可以是 "in" 代表淡入,或 "out" 代表淡出效果。預設值為 in

start_frame, s

指定開始套用淡化效果的影格編號。預設值為 0。

nb_frames, n

淡化效果持續的影格數。在淡入效果結束時,輸出視訊將具有與輸入視訊相同的強度。在淡出轉換結束時,輸出視訊將填滿選定的 color。預設值為 25。

range, r

如果設定為 1,則僅淡化 alpha 通道(如果輸入中存在)。預設值為 0。

start_time, st

指定開始套用淡化效果的影格時間戳記(以秒為單位)。如果同時指定了 start_frame 和 start_time,則淡化將在最後發生的時間開始。預設值為 0。

duration, d

淡化效果必須持續的秒數。在淡入效果結束時,輸出視訊將具有與輸入視訊相同的強度,在淡出轉換結束時,輸出視訊將填滿選定的 color。如果同時指定了 duration 和 nb_frames,則使用 duration。預設值為 0(預設使用 nb_frames)。

向 hd720 視訊大小的 rgb 輸入新增波紋效果

指定淡化的色彩。預設值為 "black"。

11.88.1 範例

  • 淡入視訊的前 30 個影格
    fade=in:0:30
    

    以上命令等同於

    fade=t=in:s=0:n=30
    
  • 淡出 200 個影格視訊的最後 45 個影格
    fade=out:155:45
    fade=type=out:start_frame=155:nb_frames=45
    
  • 淡入 1000 個影格視訊的前 25 個影格,並淡出最後 25 個影格
    fade=in:0:25, fade=out:975:25
    
  • 將前 5 個影格設為黃色,然後從影格 5-24 淡入
    fade=in:5:20:color=yellow
    
  • 在視訊的前 25 個影格中淡入 alpha
    fade=in:0:25:alpha=1
    
  • 將前 5.5 秒設為黑色,然後淡入 0.5 秒
    fade=t=in:st=5.5:d=0.5
    

11.89 feedback

套用回饋視訊濾鏡。

此濾鏡將裁切的輸入影格傳遞到第二個輸出。從那裡可以使用其他視訊濾鏡進行篩選。在濾鏡從第二個輸入接收到影格後,該影格會與來自第一個輸入的原始影格組合,並傳遞到第一個輸出。

典型的用法是僅篩選影格的一部分。

濾鏡接受以下選項

x
y

設定左上角裁切位置。

f
h

設定裁切尺寸。

11.89.1 範例

  • 僅使用 gblur 濾鏡模糊視訊影格左上角 100x100 矩形部分。
    [in][blurin]feedback=x=0:y=0:w=100:h=100[out][blurout];[blurout]gblur=8[blurin]
    
  • 使用 drawbox 濾鏡在視訊影格左上角 100x100 部分繪製黑色方框。
    [in][blurin]feedback=x=0:y=0:w=100:h=100[out][blurout];[blurout]drawbox=x=0:y=0:w=100:h=100:t=100[blurin]
    
  • 使用 pixelize 濾鏡將視訊影格 100x100 矩形部分像素化。
    [in][blurin]feedback=x=320:y=240:w=100:h=100[out][blurout];[blurout]pixelize[blurin]
    

11.90 fftdnoiz

使用 3D FFT(頻域濾波)對影格進行降噪。

濾鏡接受以下選項

sigma

設定雜訊 sigma 常數。這會設定降噪強度。預設值為 1。允許範圍為 0 到 30。在高重疊率下使用非常高的 sigma 值可能會產生區塊偽影。

amount

設定降噪量。預設情況下,會減少所有偵測到的雜訊。預設值為 1。允許範圍為 0 到 1。

block

設定區塊的像素大小,預設值為 32,範圍為 8 到 256。

overlap

設定區塊重疊率。預設值為 0.5。允許範圍為 0.2 到 0.8。

method

設定降噪方法。預設值為 wiener,也可以是 hard

prev

設定用於降噪的先前影格數。預設值為 0。

next

設定用於降噪的後續影格數。預設值為 0。

planes

設定要篩選的平面,預設情況下會篩選所有可用的平面,alpha 除外。

11.91 fftfilt

將任意表示式套用於頻域中的樣本

dc_Y

調整影像亮度平面的直流值(增益)。濾鏡接受介於 01000 之間的整數值。預設值設定為 0

dc_U

調整影像第一個色度平面的直流值(增益)。濾鏡接受介於 01000 之間的整數值。預設值設定為 0

dc_V

調整影像第二個色度平面的直流值(增益)。濾鏡接受介於 01000 之間的整數值。預設值設定為 0

weight_Y

設定亮度平面的頻域權重表示式。

weight_U

設定第一個色度平面的頻域權重表示式。

weight_V

設定第二個色度平面的頻域權重表示式。

eval

設定何時評估表示式。

設定叢發融合,以視窗大小的百分比表示。允許範圍為 010。預設值為 2。如果偵測為雜訊的任何兩個樣本之間的間隔小於此值,則這兩個樣本之間的任何樣本也將被偵測為雜訊。

init

僅在濾鏡初始化期間評估表示式一次。

frame

為每個傳入的影格評估表示式。

預設值為 ‘init’。

濾鏡接受以下變數

x
y

目前樣本的座標。

w
h

影像的寬度和高度。

n

輸入影格的編號,從 0 開始。

WS
HS

用於水平和垂直處理的 FFT 陣列大小。

11.91.1 範例

  • 高通
    fftfilt=dc_Y=128:weight_Y='squish(1-(Y+X)/100)'
    
  • 低通
    fftfilt=dc_Y=0:weight_Y='squish((Y+X)/100-1)'
    
  • 銳化
    fftfilt=dc_Y=0:weight_Y='1+squish(1-(Y+X)/100)'
    
  • 模糊
    fftfilt=dc_Y=0:weight_Y='exp(-4 * ((Y+X)/(W+H)))'
    

11.92 field

使用步幅算術從交錯影像中提取單個場景,以避免浪費 CPU 時間。輸出影格標記為非交錯。

濾鏡接受以下選項

將第二個聲道延遲 500 個樣本,將第三個聲道延遲 700 個樣本,並保持第一個聲道(和可能存在的任何其他聲道)不變。

指定要提取頂部場景(如果值為 0top)還是底部場景(如果值為 1bottom)。

11.93 fieldhint

透過複製提示檔案中提供的周圍影格的頂部和底部場景來建立新影格。

hint

設定包含提示的檔案:絕對/相對影格編號。

剪輯片段中的每個影格都必須有一行。每一行必須包含兩個以逗號分隔的數字,可選擇後面跟著 -+。檔案每一行提供的數字不能超出 [N-1,N+1],其中 N 是 absolute 模式的目前影格編號,或超出 relative 模式的 [-1, 1] 範圍。第一個數字指出從哪個影格擷取頂部場景,第二個數字指出從哪個影格擷取底部場景。

如果選擇性地跟著 +,則輸出影格將標記為交錯,否則如果跟著 -,則輸出影格將標記為漸進式,否則它將標記為與輸入影格相同。如果選擇性地跟著 t,則輸出影格將僅使用頂部場景,或者在 b 的情況下,它將僅使用底部場景。如果行以 #; 開頭,則會跳過該行。

mode

可以是項目 absoluterelativepattern。預設值為 absolutepattern 模式與 relative 模式相同,除了檔案的最後一個條目,如果需要處理的影格多於 hint 檔案,則會尋找回開頭。

relative 模式的 hint 檔案的前幾行範例

0,0 - # first frame
1,0 - # second frame, use third's frame top field and second's frame bottom field
1,0 - # third frame, use fourth's frame top field and third's frame bottom field
1,0 -
0,0 -
0,0 -
1,0 -
1,0 -
1,0 -
0,0 -
0,0 -
1,0 -
1,0 -
1,0 -
0,0 -

11.94 fieldmatch

用於反向電影電視轉換的場景匹配濾鏡。它旨在從電影電視轉換串流重建漸進式影格。此濾鏡不會刪除重複的影格,因此為了實現完整的反向電影電視轉換,fieldmatch 需要在濾鏡圖中接續使用抽取濾鏡,例如 decimate

場景匹配和抽取的區隔顯著地受到在兩者之間插入解交錯濾鏡備用方案的可能性所驅動。如果來源具有混合的電影電視轉換和真實交錯內容,fieldmatch 將無法為交錯部分匹配場景。但是,這些剩餘的梳狀影格將標記為交錯,因此可以在抽取之前由後續濾鏡(例如 yadif)進行解交錯處理。

除了各種組態選項外,fieldmatch 還可以使用選用的第二個串流,透過 ppsrc 選項啟動。如果啟用,影格重建將基於來自此第二個串流的場景和影格。這允許預先處理第一個輸入,以協助濾鏡的各種演算法,同時保持輸出無損(假設場景已正確匹配)。通常,場景感知降噪器或亮度/對比度調整可能會有所幫助。

請注意,此濾鏡使用與 TIVTC/TFM (AviSynth 專案) 和 VIVTC/VFM (VapourSynth 專案) 相同的演算法。後者是 TFM 的輕量級複製品,fieldmatch 是基於該複製品。雖然語意和用法非常接近,但某些行為和選項名稱可能會有所不同。

decimate 濾鏡目前僅適用於恆定影格率輸入。如果您的輸入具有混合的電影電視轉換 (30fps) 和漸進式內容,且影格率較低(例如 24fps),請使用以下濾鏡鏈來產生必要的 cfr 串流:dejudder,fps=30000/1001,fieldmatch,decimate

濾鏡接受以下選項

order

指定輸入串流的假設場景順序。可用值為

auto

自動偵測同位(使用 FFmpeg 的內部同位值)。

bff

假設底部場景優先。

tff

假設頂部場景優先。

請注意,有時建議不要信任串流宣告的同位。

預設值為 auto

mode

設定要使用的匹配模式或策略。pc 模式是最安全的,因為它不會冒著因重複影格而產生抖動的風險(在可能的情況下),但是如果存在錯誤的編輯或混合場景,它最終會輸出梳狀影格,即使可能實際上存在良好的匹配。另一方面,pcn_ub 模式在產生抖動方面風險最高,但幾乎總是可以找到良好的影格(如果存在)。其他值都介於 pcpcn_ub 之間,在冒著抖動風險和建立重複影格與在具有錯誤編輯、孤立場景、混合場景等的部分中尋找良好匹配之間取得平衡。

有關 p/c/n/u/b 的更多詳細資訊,請參閱 p/c/n/u/b 意義 章節。

提升高於偵測臨界值的頻率。

pc

雙向匹配 (p/c)

pc_n

雙向匹配,如果仍然是梳狀則嘗試第三次匹配 (p/c + n)

pc_u

雙向匹配,如果仍然是梳狀則嘗試第三次匹配(相同順序)(p/c + u)

pc_n_ub

雙向匹配,如果仍然是梳狀則嘗試第三次匹配,如果仍然是梳狀則嘗試第四次/第五次匹配 (p/c + n + u/b)

pcn

三向匹配 (p/c/n)

pcn_ub

三向匹配,如果原始匹配中的所有 3 個都被偵測為梳狀,則嘗試第四次/第五次匹配 (p/c/n + u/b)

結尾的括號表示假設 order=tff(且 fieldautotop)的情況下,該模式將使用的匹配項。

就速度而言,pc 模式是最快的,而 pcn_ub 是最慢的。

預設值為 pc_n

使用弱濾鏡和 4 像素的區塊大小進行去塊。

將主要輸入串流標記為預先處理的輸入,並啟用第二個輸入串流作為乾淨的來源,以從中選取場景。有關更多詳細資訊,請參閱濾鏡簡介。它類似於 VFM/TFM 中的 clip2 功能。

預設值為 0(停用)。

field

設定要從哪個場景進行匹配。建議將此設定為與 order 相同的值,除非您使用該設定時遇到匹配失敗。在某些情況下,變更用於匹配的場景可能會對匹配效能產生重大影響。可用值為

auto

自動(與 order 相同的值)。

bottom

從底部場景匹配。

top

從頂部場景匹配。

預設值為 auto

mchroma

設定在匹配比較期間是否包含色度。在大多數情況下,建議保持啟用狀態。只有當您的剪輯片段有嚴重的色度問題(例如嚴重的彩虹效應或其他偽影)時,才應將此設定為 0。將此設定為 0 也可用於加快速度,但會犧牲一些準確性。

預設值為 1

y0
y1

這些定義了一個排除帶,該排除帶會排除 y0y1 之間的線條,使其不包含在場景匹配決策中。排除帶可用於忽略字幕、標誌或其他可能會干擾匹配的事物。y0 設定開始掃描線,y1 設定結束線;y0y1 之間的所有線條(包括 y0y1)都將被忽略。將 y0y1 設定為相同的值將停用此功能。y0y1 預設值為 0

設定區塊的大小,允許的範圍為 4 到 512。預設值為 8

將場景變更偵測閾值設定為亮度平面上最大變更的百分比。良好的值在 [8.0, 14.0] 範圍內。場景變更偵測僅在 combmatch=sc 的情況下相關。scthresh 的範圍為 [0.0, 100.0]

預設值為 12.0

combmatch

combatch 不是 none 時,fieldmatch 將在決定使用哪個匹配作為最終匹配時,將考慮匹配的梳狀分數。可用值為

none

不進行基於梳狀分數的最終匹配。

sc

僅在偵測到場景變更時才使用梳狀分數。

full

始終使用梳狀分數。

預設值為 sc

combdbg

強制 fieldmatch 計算某些匹配的梳狀度量並列印它們。此設定在 TFM/VFM 詞彙中稱為 micout。可用值為

none

無強制計算。

pcn

pcn

強制 p/c/n 計算。

pcnub

強制 p/c/n/u/b 計算。

預設值為 none

cthresh

預設值為 9

與上述類似,但僅濾鏡處理第一個平面。

設定在梳狀影格決策中是否考慮色度。僅當您的來源有色度問題(彩虹效應等)導致啟用色度時梳狀影格偵測出現問題時,才停用此功能。實際上,使用 chroma=0 通常更可靠,除非來源中存在僅色度的梳狀。

預設值為 0

設定區塊偵測閾值。允許的範圍為 0 到 1。預設值為:alpha0.098,其餘為 0.05。使用更高的閾值可提供更強的去塊強度。設定 alpha 控制區塊精確邊緣的閾值偵測。剩餘選項控制邊緣附近的閾值偵測。每個選項用於下方/上方或左側/右側。將其中任何一個設定為 0 會禁用去塊。
planes

分別設定在梳狀影格偵測期間使用的視窗的 x 軸和 y 軸大小。這與 combpel 像素需要偵測為梳狀以宣告影格為梳狀的區域大小有關。有關更多資訊,請參閱 combpel 參數描述。可能的值是從 4 開始到 512 的任何 2 的冪次。

預設值為 16

combpel

影格上任何 blockyblockx 大小的區塊內部的梳狀像素數量,以便將影格偵測為梳狀。雖然 cthresh 控制梳狀必須「可見」的程度,但此設定控制影格上任何局部區域(由 blockxblocky 設定定義的視窗)中必須有多少梳狀。最小值為 0,最大值為 blocky x blockx(此時永遠不會偵測到任何影格為梳狀)。此設定在 TFM/VFM 詞彙中稱為 MI

預設值為 80

11.94.1 p/c/n/u/b 意義

11.94.1.1 p/c/n

我們假設以下電影電視轉換串流

Top fields:     1 2 2 3 4
Bottom fields:  1 2 3 4 4

數字對應於場景相關的漸進式影格。在這裡,前兩個影格是漸進式的,第三個和第四個是梳狀的,依此類推。

fieldmatch 設定為從底部執行匹配時 (field=bottom),輸入串流的轉換方式如下

Input stream:
                T     1 2 2 3 4
                B     1 2 3 4 4   <-- matching reference

Matches:              c c n n c

Output stream:
                T     1 2 3 4 4
                B     1 2 3 4 4

由於場景匹配的結果,我們可以看到某些影格被重複了。若要執行完整的反向電影電視轉換,您需要在此操作之後依賴抽取濾鏡。例如,請參閱 decimate 濾鏡。

現在從頂部場景匹配的相同操作 (field=top) 如下所示

Input stream:
                T     1 2 2 3 4   <-- matching reference
                B     1 2 3 4 4

Matches:              c c p p c

Output stream:
                T     1 2 2 3 4
                B     1 2 2 3 4

在這些範例中,我們可以看到 pcn 的含義;基本上,它們指的是相反同位的影格和場景

  • p 匹配先前影格中相反同位的場景
  • c 匹配目前影格中相反同位的場景
  • n 匹配下一個影格中相反同位的場景

11.94.1.2 u/b

ub 匹配有點特殊,因為它們從相反的同位旗標進行匹配。在以下範例中,我們假設目前正在匹配第二個影格(頂部:2,底部:2)。根據匹配,在每個匹配的場景上方和下方放置一個「x」。

使用底部匹配 (field=bottom)

Match:           c         p           n          b          u

                 x       x               x        x          x
  Top          1 2 2     1 2 2       1 2 2      1 2 2      1 2 2
  Bottom       1 2 3     1 2 3       1 2 3      1 2 3      1 2 3
                 x         x           x        x              x

Output frames:
                 2          1          2          2          2
                 2          2          2          1          3

使用頂部匹配 (field=top)

Match:           c         p           n          b          u

                 x         x           x        x              x
  Top          1 2 2     1 2 2       1 2 2      1 2 2      1 2 2
  Bottom       1 2 3     1 2 3       1 2 3      1 2 3      1 2 3
                 x       x               x        x          x

Output frames:
                 2          2          2          1          2
                 2          1          3          2          2

11.94.2 範例

頂部場景優先電影電視轉換串流的簡單 IVTC

fieldmatch=order=tff:combmatch=none, decimate

進階 IVTC,針對仍然是梳狀的影格備用 yadif

fieldmatch=order=tff:combmatch=full, yadif=deint=interlaced, decimate

11.95 fieldorder

轉換輸入視訊的場景順序。

它接受以下參數

order

輸出場景順序。有效值為 tff 代表頂部場景優先,或 bff 代表底部場景優先。

預設值為 ‘tff’。

轉換是透過將圖片內容向上或向下移動一行,並使用適當的圖片內容填滿剩餘的線條來完成。此方法與大多數廣播場景順序轉換器一致。

如果輸入視訊未標記為交錯,或已標記為所需的輸出場景順序,則此濾鏡不會變更傳入的視訊。

當轉換為或從 PAL DV 素材轉換時,這非常有用,PAL DV 素材是底部場景優先。

例如

ffmpeg -i in.vob -vf "fieldorder=bff" out.dv

11.96 fillborders

填滿輸入視訊的邊框,而不會變更視訊串流尺寸。有時視訊的四個邊緣可能有垃圾,您可能不想裁切視訊輸入以保持尺寸為某個數字的倍數。

此濾波器還能夠拉伸/壓縮音訊資料以使其與時間戳記匹配,或注入靜音/剪切音訊以使其與時間戳記匹配,執行兩者的組合或兩者都不執行。

left

從左邊框填滿的像素數。

right

從右邊框填滿的像素數。

top

從頂部邊框填滿的像素數。

bottom

從底部邊框填滿的像素數。

mode

設定填滿模式。

設定叢發融合,以視窗大小的百分比表示。允許範圍為 010。預設值為 2。如果偵測為雜訊的任何兩個樣本之間的間隔小於此值,則這兩個樣本之間的任何樣本也將被偵測為雜訊。

控制溢色區域中的紅色量。

使用最外層的像素填滿像素

控制溢色區域中的藍色量。藍幕應為 -1。

使用鏡像(半樣本對稱)填滿像素

fixed

使用常數值填滿像素

reflect

使用反射(全樣本對稱)填滿像素

控制溢色區域中的綠色量。綠幕應為 -1。

使用包裝填滿像素

fade

將像素淡化為常數值

margins

使用邊框附近像素的加權平均值填滿頂部和底部的像素

預設值為 smear

color

設定固定或淡化模式中像素的色彩。預設值為 black

11.96.1 指令

colorkey

如果指定的表達式無效,則會保持其目前值。

11.97 find_rect

在輸入視訊中尋找矩形物件。

要搜尋的物件必須指定為以 object 選項指定的 gray8 影像。

對於每個可能的匹配,都會計算分數。如果分數達到指定的閾值,則認為已找到物件。

如果輸入視訊包含物件的多個實例,則濾鏡只會找到其中一個。

找到物件後,會在匹配影格中設定以下中繼資料條目

lavfi.rect.w

物件的寬度

lavfi.rect.h

物件的高度

lavfi.rect.x

物件的 x 位置

lavfi.rect.y

物件的 y 位置

lavfi.rect.score

找到物件的匹配分數

設定視窗長度,以樣本為單位。預設值為 2048。允許範圍為 32 到 65536。

object

物件影像的檔案路徑,需要為 gray8。

threshold

偵測閾值,表示為 0-1 範圍內的十進位數字。

閾值為 0.01 表示僅精確匹配,閾值為 0.99 表示幾乎所有項目都匹配。

預設值為 0.5。

mipmaps

mipmap 的數量,預設值為 3。

xmin, ymin, xmax, ymax

指定要搜尋的矩形。

discard

捨棄未偵測到物件的影格。預設為停用。

11.97.1 範例

  • 使用 ffmpeg 通過給定視訊的提供的影像覆蓋矩形物件
    ffmpeg -i file.ts -vf find_rect=newref.pgm,cover_rect=cover.jpg:mode=cover new.mkv
    
  • 使用 ffprobe 尋找每個影格中物件的位置,並將其寫入記錄檔
    ffprobe -f lavfi movie=test.mp4,find_rect=object=object.pgm:threshold=0.3 \
      -show_entries frame=pkt_pts_time:frame_tags=lavfi.rect.x,lavfi.rect.y \
      -of csv -o find_rect.csv
    

11.98 floodfill

使用另一個值填滿具有相同像素組件值的區域。

設定視窗長度,以樣本為單位。預設值為 2048。允許範圍為 32 到 65536。

x

設定像素 x 座標。

y

設定像素 y 座標。

s0

設定來源 #0 組件值。

s1

設定來源 #1 組件值。

s2

設定來源 #2 組件值。

s3

設定來源 #3 組件值。

d0

設定目的地 #0 組件值。

d1

設定目的地 #1 組件值。

d2

設定目的地 #2 組件值。

d3

設定目的地 #3 組件值。

11.99 format

將輸入視訊轉換為指定的像素格式之一。Libavfilter 將嘗試選取一個適合作為下一個濾鏡輸入的格式。

它接受以下參數

pix_fmts

以「|」分隔的像素格式名稱清單,例如 "pix_fmts=yuv420p|monow|rgb24"。

color_spaces

以「|」分隔的色彩空間名稱清單,例如 "color_spaces=bt709|bt470bg|bt2020nc"。

color_ranges

以「|」分隔的色彩範圍名稱清單,例如 "color_spaces=tv|pc"。

11.99.1 範例

  • 將輸入視訊轉換為 yuv420p 格式
    format=pix_fmts=yuv420p
    

    將輸入視訊轉換為清單中的任何格式

    format=pix_fmts=yuv420p|yuv444p|yuv410p
    

11.100 fps

透過複製或捨棄影格,將視訊轉換為指定的恆定影格率。

它接受以下參數

fps

所需的輸出影格率。它接受包含以下常數的表示式

source_fps

輸入的影格率

ntsc

NTSC 影格率為 30000/1001

pal

PAL 影格率為 25.0

film

電影影格率為 24.0

ntsc_film

NTSC 電影片影格率為 24000/1001

預設值為 25

start_time

假設第一個 PTS 應為給定的值(以秒為單位)。這允許在串流開始時進行填補/修剪。預設情況下,不會對第一個影格的預期 PTS 做出任何假設,因此不會進行填補或修剪。例如,如果視訊串流在音訊串流之後開始,則可以將其設定為 0,以使用第一個影格的重複項來填補開頭,或修剪任何具有負 PTS 的影格。

round

時間戳記 (PTS) 四捨五入方法。

analyze

zero

向 0 四捨五入

inf

遠離 0 四捨五入

down

向負無限大四捨五入

up

向正無限大四捨五入

near

四捨五入到最近的值

預設值為 near

eof_action

讀取最後一個影格時執行的動作。

analyze

round

使用與其他影格相同時間戳記四捨五入方法。

pass

如果尚未達到輸入持續時間,則傳遞最後一個影格。

預設值為 round

或者,選項可以指定為扁平字串:fps[:start_time[:round]]。

另請參閱 setpts 濾鏡。

11.100.1 範例

  • 將 fps 設定為 25 的典型用法
    fps=fps=25
    
  • 將 fps 設定為 24,使用縮寫和四捨五入方法四捨五入到最近的值
    fps=fps=film:round=near
    

11.101 framepack

將兩個不同的視訊串流封裝到立體視訊中,在支援的編解碼器上設定正確的中繼資料。兩個視圖應具有相同的大小和影格率,並且處理將在較短的視訊結束時停止。請注意,您可以使用 scalefps 濾鏡方便地調整視圖屬性。

它接受以下參數

format

所需的封裝格式。支援的值為

sbs

視圖彼此相鄰(預設)。

tab

視圖彼此堆疊。

lines

視圖按行封裝。

columns

視圖按列封裝。

frameseq

視圖在時間上交錯。

一些範例

# Convert left and right views into a frame-sequential video
ffmpeg -i LEFT -i RIGHT -filter_complex framepack=frameseq OUTPUT

# Convert views into a side-by-side video with the same output resolution as the input
ffmpeg -i LEFT -i RIGHT -filter_complex [0:v]scale=w=iw/2[left],[1:v]scale=w=iw/2[right],[left][right]framepack=sbs OUTPUT

11.102 framerate

透過從來源影格內插新的視訊輸出影格來變更影格率。

此濾鏡並非設計為與交錯媒體正確運作。如果您希望變更交錯媒體的影格率,則需要在此濾鏡之前進行解交錯處理,並在此濾鏡之後重新交錯。

以下是接受選項的描述。

fps

指定每秒輸出影格數。此選項也可以單獨指定為值。預設值為 50

interp_start

指定範圍的開始位置,其中輸出影格將建立為兩個影格的線性內插。範圍為 [0-255],預設值為 15

interp_end

指定範圍的結束位置,其中輸出影格將建立為兩個影格的線性內插。範圍為 [0-255],預設值為 240

scene

指定偵測到場景變更的層級,值介於 0 到 100 之間,表示新場景;較低的值反映目前影格引入新場景的可能性較低,而較高的值表示目前影格更有可能成為新場景。預設值為 8.2

flags

指定影響濾鏡處理的旗標。

flags 的可用值為

scene_change_detect, scd

使用選項 scene 的值啟用場景變更偵測。預設情況下啟用此旗標。

11.103 framestep

每 N 個影格選取一個影格。

此濾鏡接受以下選項

step

每隔 step 個影格選取影格。允許值為大於 0 的正整數。預設值為 1

11.104 freezedetect

偵測凍結的視訊。

當此濾鏡偵測到輸入視訊在指定的持續時間內內容沒有顯著變更時,它會記錄訊息並設定影格中繼資料。視訊凍結偵測會計算視訊影格所有組件的平均絕對差值,並將其與雜訊基底進行比較。

列印的時間和持續時間以秒為單位表示。lavfi.freezedetect.freeze_start 中繼資料金鑰設定在時間戳記等於或超過偵測持續時間的第一個影格上,並且它包含凍結的第一個影格的時間戳記。lavfi.freezedetect.freeze_durationlavfi.freezedetect.freeze_end 中繼資料金鑰設定在凍結之後的第一個影格上。

濾鏡接受以下選項

noise, n

設定雜訊容差。可以 dB 為單位指定(如果指定的數值後附加 "dB"),或指定為介於 0 和 1 之間的差異比率。預設值為 -60dB 或 0.001。

duration, d

設定凍結持續時間直到通知(預設為 2 秒)。

11.105 freezeframes

凍結視訊影格。

此濾鏡使用來自第二個輸入的影格凍結視訊影格。

濾鏡接受以下選項

最短輸入的持續時間。

設定開始凍結的第一個影格編號。

last

設定結束凍結的最後一個影格編號。

model

設定將用於取代已取代影格的第二個輸入中的影格編號。

11.106 frei0r

將 frei0r 效果套用於輸入視訊。

若要啟用此濾鏡的編譯,您需要安裝 frei0r 標頭並使用 --enable-frei0r 設定 FFmpeg。

它接受以下參數

filter_name

要載入的 frei0r 效果的名稱。如果定義了環境變數 FREI0R_PATH,則會在 FREI0R_PATH 中以冒號分隔的清單指定的每個目錄中搜尋 frei0r 效果。否則,將依此順序搜尋標準 frei0r 路徑:HOME/.frei0r-1/lib//usr/local/lib/frei0r-1//usr/lib/frei0r-1/

filter_params

要傳遞給 frei0r 效果的以「|」分隔的參數清單。

frei0r 效果參數可以是布林值(其值為 "y" 或 "n")、雙精度浮點數、色彩(指定為 R/G/B,其中 RGB 是介於 0.0 和 1.0 之間(含)的浮點數)或色彩描述,如 ffmpeg-utils 手冊中的「色彩」章節中所指定、位置(指定為 X/Y,其中 XY 是浮點數)和/或字串。

參數的數量和類型取決於載入的效果。如果未指定效果參數,則會設定預設值。

11.106.1 範例

  • 套用 distort0r 效果,設定前兩個雙精度浮點參數
    frei0r=filter_name=distort0r:filter_params=0.5|0.01
    
  • 套用 colordistance 效果,將色彩作為第一個參數
    frei0r=colordistance:0.2/0.3/0.4
    frei0r=colordistance:violet
    frei0r=colordistance:0x112233
    
  • 套用 perspective 效果,指定左上角和右上角影像位置
    frei0r=perspective:0.2/0.2|0.8/0.2
    

有關更多資訊,請參閱 http://frei0r.dyne.org

11.106.2 指令

此濾鏡支援作為 commandsfilter_params 選項。

11.107 fspp

套用快速且簡單的後處理。它是 spp 的更快版本。

它將 (I)DCT 分割為水平/垂直通道。與簡單的後處理濾鏡不同,其中一個是每個區塊執行一次,而不是每個像素執行一次。這允許更高的速度。

濾鏡接受以下選項

quality

設定品質。此選項定義平均的層級數。它接受介於 4-5 之間的整數。預設值為 4

qp

強制恆定量化參數。它接受介於 0-63 之間的整數。如果未設定,則濾鏡將使用來自視訊串流的 QP(如果可用)。

強度 (strength)

設定濾鏡強度。它接受介於 -15 到 32 之間的整數。較低的值表示更多細節,但也表示更多偽影,而較高的值使影像更平滑,但也更模糊。預設值為 0 − PSNR 最佳。

use_bframe_qp

如果設定為 1,則啟用 B 影格中 QP 的使用。使用此選項可能會導致閃爍,因為 B 影格通常具有更大的 QP。預設值為 0(未啟用)。

11.108 fsync

使用來自檔案的外部映射同步視訊影格。

對於映射檔案中給定的每個輸入 PTS,它會捨棄或建立盡可能多的影格,以重新建立映射檔案中給定的輸出影格序列。

此濾鏡可用於重新建立 fps 濾鏡的影格率轉換的輸出影格,使用 ffmpeg 選項 -stats_mux_pre 記錄到映射檔案中,並對相應的影格執行進一步處理,例如品質比較。

映射檔案的每一行必須包含每個輸入影格的三個項目、輸入 PTS(十進位)、輸出 PTS(十進位)和輸出 TIMEBASE(十進位/十進位),以空格分隔。此檔案格式對應於 -stats_mux_pre_fmt="{ptsi} {pts} {tb}" 的輸出。

濾鏡假設映射檔案按遞增輸入 PTS 排序。

濾鏡接受以下選項

file, f

要使用的映射檔案的檔案名稱。

範例

# Convert a video to 25 fps and record a MAP_FILE file with the default format of this filter
ffmpeg -i INPUT -vf fps=fps=25 -stats_mux_pre MAP_FILE -stats_mux_pre_fmt "{ptsi} {pts} {tb}" OUTPUT

# Sort MAP_FILE by increasing input PTS
sort -n MAP_FILE

# Use INPUT, OUTPUT and the MAP_FILE from above to compare the corresponding frames in INPUT and OUTPUT via SSIM
ffmpeg -i INPUT -i OUTPUT -filter_complex '[0:v]fsync=file=MAP_FILE[ref];[1:v][ref]ssim' -f null -

11.109 gblur

套用高斯模糊濾鏡。

濾鏡接受以下選項

sigma

設定水平 sigma,高斯模糊的標準差。預設值為 0.5

steps

設定高斯近似的步驟數。預設值為 1

planes

planes

sigmaV

設定垂直 sigma,如果為負值,則與 sigma 相同。預設值為 -1

11.109.1 指令

avgblur

如果指定的表達式無效,則會保持其目前值。

11.110 geq

將通用方程式套用於每個像素。

濾鏡接受以下選項

lum_expr, lum

設定亮度表示式。

cb_expr, cb

設定藍色色度表示式。

cr_expr, cr

設定紅色色度表示式。

alpha_expr, a

設定 alpha 表示式。

red_expr, r

設定紅色表示式。

green_expr, g

設定綠色表示式。

blue_expr, b

設定藍色表示式。

色彩空間是根據指定的選項選取的。如果指定了 lum_exprcb_exprcr_expr 選項之一,則濾鏡將自動選取 YCbCr 色彩空間。如果指定了 red_exprgreen_exprblue_expr 選項之一,則將選取 RGB 色彩空間。

如果未定義色度表示式之一,則會回退到另一個。如果未指定 alpha 表示式,則將評估為不透明值。如果未指定任何色度表示式,則將評估為亮度表示式。

表示式可以使用以下變數和函數

n

blend

x
y

目前樣本的座標。

w
h

影像的寬度和高度。

sw
sh

寬度和高度縮放取決於目前篩選的平面。它是對應亮度平面像素數與目前平面像素數之間的比率。例如,對於 YUV4:2:0,亮度平面的值為 1,1,色度平面的值為 0.5,0.5

t

blend

p(x, y)

傳回目前平面的位置 (x,y) 處的像素值。

lum(x, y)

傳回亮度平面的位置 (x,y) 處的像素值。

cb(x, y)

傳回藍色差色度平面的位置 (x,y) 處的像素值。如果沒有這樣的平面,則傳回 0。

cr(x, y)

傳回紅色差色度平面的位置 (x,y) 處的像素值。如果沒有這樣的平面,則傳回 0。

r(x, y)
g(x, y)
b(x, y)

傳回紅色/綠色/藍色組件的位置 (x,y) 處的像素值。如果沒有這樣的組件,則傳回 0。

alpha(x, y)

傳回 alpha 平面的位置 (x,y) 處的像素值。如果沒有這樣的平面,則傳回 0。

psum(x,y), lumsum(x, y), cbsum(x,y), crsum(x,y), rsum(x,y), gsum(x,y), bsum(x,y), alphasum(x,y)

從 (0,0) 到 (x,y) 的矩形中樣本值的總和,這允許取得矩形內樣本的總和。請參閱沒有總和後綴的函數。

interpolation

設定內插方法之一

nearest, n
bilinear, b

預設值為雙線性。

對於函數,如果 xy 超出區域,則值將自動裁剪到較近的邊緣。

請注意,此濾鏡可以使用多個執行緒,在這種情況下,每個切片將具有其自己的表示式狀態。如果您只想使用單個表示式狀態,因為您的表示式取決於先前的狀態,則應將濾鏡執行緒的數量限制為 1。

11.110.1 範例

  • 水平翻轉影像
    geq=p(W-X\,Y)
    
  • 產生二維正弦波,角度為 PI/3,波長為 100 像素
    geq=128 + 100*sin(2*(PI/100)*(cos(PI/3)*(X-50*T) + sin(PI/3)*Y)):128:128
    
  • 產生奇特的神秘移動光
    nullsrc=s=256x256,geq=random(1)/hypot(X-cos(N*0.07)*W/2-W/2\,Y-sin(N*0.09)*H/2-H/2)^2*1000000*sin(N*0.02):128:128
    
  • 產生快速浮雕效果
    format=gray,geq=lum_expr='(p(X,Y)+(256-p(X-4,Y-4)))/2'
    
  • 根據像素位置修改 RGB 組件
    geq=r='X/W*r(X,Y)':g='(1-X/W)*g(X,Y)':b='(H-Y)/H*b(X,Y)'
    
  • 建立與輸入大小相同的徑向漸層(另請參閱 vignette 濾鏡)
    geq=lum=255*gauss((X/W-0.5)*3)*gauss((Y/H-0.5)*3)/gauss(0)/gauss(0),format=gray
    

11.111 gradfun

修復有時因截斷為 8 位元色彩深度而引入到接近平坦區域中的條帶偽影。內插應該在條帶所在位置的漸層,並對其進行抖動處理。

它僅適用於播放。請勿在有損壓縮之前使用它,因為壓縮往往會遺失抖動並帶回條帶。

它接受以下參數

強度 (strength)

濾鏡將變更任何一個像素的最大量。這也是偵測接近平坦區域的閾值。可接受的值範圍為 .51 到 64;預設值為 1.2。超出範圍的值將被裁剪到有效範圍。

設定虛擬喇叭的仰角,單位為度。預設值為 0。

要擬合漸層的鄰域。較大的半徑會產生更平滑的漸層,但也阻止濾鏡修改詳細區域附近的像素。可接受的值為 8-32;預設值為 16。超出範圍的值將被裁剪到有效範圍。

或者,選項可以指定為扁平字串:strength[:radius]

11.111.1 範例

  • 3.5 強度和半徑 8 套用濾鏡
    gradfun=3.5:8
    
  • 指定半徑,省略強度(強度將回退到預設值)
    gradfun=radius=8
    

11.112 graphmonitor

顯示各種濾鏡圖統計資訊。

使用此濾鏡,可以偵錯完整的濾鏡圖。特別是連結中填滿佇列影格的問題。

濾鏡接受以下選項

size, s

設定視訊輸出大小。預設值為 hd720

opacity, o

設定視訊不透明度。預設值為 0.9。允許範圍為 01

設定空間亮度閾值。較低的值會增加交叉亮度的減少。

設定輸出模式旗標。

旗標的可用值為

full

無任何篩選。預設值。

compact

僅顯示具有佇列影格的濾鏡。

nozero

僅顯示具有非零統計資訊的濾鏡。

noeof

僅顯示具有非 eof 統計資訊的濾鏡。

nodisabled

僅顯示時間軸中啟用的濾鏡。

flags, f

設定旗標,啟用視訊中顯示哪些統計資訊。

旗標的可用值為

none

所有旗標都已關閉。

all

所有旗標都已開啟。

queue

顯示每個連結中佇列影格的數量。

frame_count_in

顯示從濾鏡中取得的影格數量。

frame_count_out

顯示從濾鏡中輸出的影格數量。

frame_count_delta

顯示上述兩個值之間的差異影格數量。

pts

顯示目前篩選影格 pts。

pts_delta

顯示目前影格和先前影格之間的 pts 差異。

time

顯示目前篩選影格時間。

time_delta

顯示目前影格和先前影格之間的時間差異。

timebase

顯示濾鏡連結的時間基底。

format

顯示濾鏡連結使用的格式。

size

顯示視訊大小或濾鏡連結使用的音訊通道數(如果是音訊)。

rate

顯示視訊影格率或濾鏡連結使用的音訊取樣率(如果是音訊)。

eof

顯示連結輸出狀態。

sample_count_in

顯示從濾鏡中取得的樣本數。

sample_count_out

顯示從濾鏡中輸出的樣本數。

sample_count_delta

顯示上述兩個值之間的差異樣本數。

預設模式為「cutbelow」。

顯示時間軸濾鏡狀態。

繪製框的寬度和高度。

設定輸出串流的視訊速率上限,預設值為 25。這保證輸出視訊影格率不會高於此值。

11.113 grayworld

色彩恆定性濾鏡,根據灰度世界假設套用色彩校正

請參閱:https://www.researchgate.net/publication/275213614_A_New_Color_Correction_Method_for_Underwater_Imaging

該演算法使用線性光,因此應預先將輸入資料線性化(並可能正確標記)。

ffmpeg -i INPUT -vf zscale=transfer=linear,grayworld,zscale=transfer=bt709,format=yuv420p OUTPUT

11.114 greyedge

色彩恆定性變異濾鏡,透過灰邊緣演算法估計場景照明,並相應地校正場景色彩。

請參閱:https://staff.science.uva.nl/th.gevers/pub/GeversTIP07.pdf

濾鏡接受以下選項

difford

要套用於場景的微分階數。必須在 [0,2] 範圍內選擇,預設值為 1。

minknorm

用於計算 Minkowski 距離的 Minkowski 參數。必須在 [0,20] 範圍內選擇,預設值為 1。設定為 0 以取得最大值,而不是計算 Minkowski 距離。

sigma

要套用於場景的高斯模糊的標準差。必須在 [0,1024.0] 範圍內選擇,預設值 = 1。floor( sigma * break_off_sigma(3) ) 不能等於 0,如果 difford 大於 0。

11.114.1 範例

  • 灰邊緣
    greyedge=difford=1:minknorm=5:sigma=2
    
  • 最大邊緣
    greyedge=difford=1:minknorm=0:sigma=2
    

11.115 guided

套用引導濾鏡以進行邊緣保留平滑、去霧等。

濾鏡接受以下選項

設定虛擬喇叭的仰角,單位為度。預設值為 0。

設定像素的方框半徑。允許範圍為 1 到 20。預設值為 3。

將正規化最小均方(NLMS)或正規化最小均四方(NLMS4)演算法應用於第一個音訊串流,並使用第二個音訊串流。

設定正規化參數(帶平方)。允許範圍為 0 到 1。預設值為 0.01。

mode

設定濾鏡模式。可以是 basicfast。預設值為 basic

sub

設定 fast 模式的子取樣比率。範圍為 2 到 64。預設值為 4。basic 模式中不會發生子取樣。

guidance

設定引導模式。可以是 offon。預設值為 off。如果為 on,則需要兩個相同解析度和像素格式的輸入。第二個輸入用作引導。

planes

planes

11.115.1 指令

此濾鏡支援以上所有選項作為 commands

11.115.2 範例

  • 使用引導濾鏡進行邊緣保留平滑
    ffmpeg -i in.png -vf guided out.png
    
  • 使用引導濾鏡進行去霧、結構轉換濾波、細節增強。如需產生引導影像,請參閱論文「引導影像濾波」。請參閱:http://kaiminghe.com/publications/pami12guidedfilter.pdf
    ffmpeg -i in.png -i guidance.png -filter_complex guided=guidance=on out.png
    

11.116 haldclut

將 Hald CLUT 套用於視訊串流。

第一個輸入是要處理的視訊串流,第二個輸入是 Hald CLUT。Hald CLUT 輸入可以是簡單的圖片或完整的視訊串流。

濾鏡接受以下選項

clut

設定將從第二個輸入串流處理哪個 CLUT 視訊影格,可以是 firstall。預設值為 all

shortest

強制在最短的輸入終止時終止。預設值為 0

repeatlast

在串流結束後繼續套用最後一個 CLUT。值為 0 會在達到 CLUT 的最後一個影格後停用濾鏡。預設值為 1

haldclut 也具有與 lut3d 相同的內插選項(兩個濾鏡共用相同的內部結構)。

此濾鏡也支援 framesync 選項。

有關 Hald CLUT 的更多資訊,請在 Eskil Steenberg 的網站(Hald CLUT 作者)上找到:http://www.quelsolaar.com/technology/clut.html

11.116.1 指令

此濾鏡支援作為 commandsinterp 選項。

11.116.2 工作流程範例

11.116.2.1 Hald CLUT 視訊串流

產生使用各種效果變更的身分 Hald CLUT 串流

ffmpeg -f lavfi -i haldclutsrc=8 -vf "hue=H=2*PI*t:s=sin(2*PI*t)+1, curves=cross_process" -t 10 -c:v ffv1 clut.nut

注意:請確保您使用無損編解碼器。

然後將其與 haldclut 一起使用,以將其套用於一些隨機串流

ffmpeg -f lavfi -i mandelbrot -i clut.nut -filter_complex '[0][1] haldclut' -t 20 mandelclut.mkv

Hald CLUT 將套用於前 10 秒(clut.nut 的持續時間),然後該 CLUT 串流的最新圖片將套用於 mandelbrot 串流的剩餘影格。

11.116.2.2 具有預覽的 Hald CLUT

Hald CLUT 應該是 Level*Level*LevelLevel*Level*Level 像素的方形影像。對於給定的 Hald CLUT,FFmpeg 將選取從圖片左上角開始的最大可能正方形。剩餘的填補像素(底部或右側)將被忽略。此區域可用於新增 Hald CLUT 的預覽。

通常,haldclut 濾鏡將支援以下產生的 Hald CLUT

ffmpeg -f lavfi -i haldclutsrc=8 -vf "
   pad=iw+320 [padded_clut];
   smptebars=s=320x256, split [a][b];
   [padded_clut][a] overlay=W-320:h, curves=color_negative [main];
   [main][b] overlay=W-320" -frames:v 1 clut.png

它包含原始 CLUT 的效果預覽:SMPTE 色條顯示在右上方,下方是由色彩變更處理的相同色條。

然後,可以使用以下方法可視化此 Hald CLUT 的效果

ffplay input.mkv -vf "movie=clut.png, [in] haldclut"

11.117 hflip

水平翻轉輸入視訊。

例如,若要使用 ffmpeg 水平翻轉輸入視訊

ffmpeg -i in.avi -vf "hflip" out.avi

11.118 histeq

此濾鏡在逐個影格的基礎上套用全域色彩直方圖等化。

它可用於校正像素強度範圍壓縮的視訊。此濾鏡重新分配像素強度,以等化它們在強度範圍內的分布。它可以被視為「自動調整對比度濾鏡」。此濾鏡僅適用於校正劣化或拍攝效果不佳的來源視訊。

濾鏡接受以下選項

強度 (strength)

判斷要套用的等化量。隨著強度的降低,像素強度的分佈越來越接近輸入影格的分佈。該值必須是 [0,1] 範圍內的浮點數,預設值為 0.200。

intensity

設定可以產生的最大強度並適當地縮放輸出值。應根據需要設定強度,然後可以限制強度(如果需要)以避免洗出色。該值必須是 [0,1] 範圍內的浮點數,預設值為 0.210。

antibanding

設定反條帶層級。如果啟用,濾鏡將隨機將輸出像素的亮度變更少量,以避免直方圖出現條帶。可能的值為 noneweakstrong。預設值為 none

11.119 histogram

計算並繪製輸入視訊的色彩分布直方圖。

計算出的直方圖是影像中色彩組件分布的表示。

標準直方圖顯示影像中色彩組件的分布。顯示每個色彩組件的色彩圖形。根據輸入格式,顯示目前影格中 Y、U、V、A 或 R、G、B 組件的分布。每個圖形下方都會顯示色彩組件刻度儀。

濾鏡接受以下選項

level_height

設定層級的高度。預設值為 200。允許範圍為 [50, 2048]。

scale_height

設定色彩刻度的高度。預設值為 12。允許範圍為 [0, 40]。

display_mode

設定顯示模式。它接受以下值

stack

每個色彩組件圖形彼此堆疊放置。

parade

每個色彩組件圖形並排放置。

overlay

呈現與 parade 中相同的資訊,除了表示色彩組件的圖形直接相互疊加。

預設值為 stack

levels_mode

設定模式。可以是 linearlogarithmic。預設值為 linear

在從輸入視訊中選取的彩色背景上繪製十六進制像素值,文字顏色以使其始終可見的方式選取。

設定要顯示的色彩組件。預設值為 7

fgopacity

設定前景不透明度。預設值為 0.7

bgopacity

設定背景不透明度。預設值為 0.5

colors_mode

設定色彩模式。它接受以下值

whiteonblack
blackonwhite
whiteongray
blackongray
coloronblack
coloronwhite
colorongray
blackoncolor
whiteoncolor
grayoncolor

預設值為 whiteonblack

11.119.1 範例

  • 計算並繪製直方圖
    ffplay -i input -vf histogram
    

11.120 hqdn3d

這是高精確度/高品質 3d 降噪濾鏡。它旨在減少影像雜訊,產生平滑的影像並使靜態影像真正靜止。它應該增強可壓縮性。

它接受以下選用參數

luma_spatial

非負浮點數,指定空間亮度強度。預設值為 4.0。

chroma_spatial

非負浮點數,指定空間色度強度。預設值為 3.0*luma_spatial/4.0。

luma_tmp

浮點數,指定亮度時間強度。預設值為 6.0*luma_spatial/4.0。

chroma_tmp

浮點數,指定色度時間強度。預設值為 luma_tmp*chroma_spatial/luma_spatial

11.120.1 指令

colorkey

如果指定的表達式無效,則會保持其目前值。

11.121 hwdownload

將硬體影格下載到系統記憶體。

輸入必須為硬體影格,輸出為非硬體格式。並非所有格式都將在輸出上受到支援 - 可能需要在圖形中緊接其後插入額外的 format 濾鏡,以取得受支援格式的輸出。

11.122 hwmap

將硬體影格映射到系統記憶體或另一個裝置。

此濾鏡有多種不同的運作模式;使用哪一種取決於輸入和輸出格式

  • 硬體影格輸入,一般影格輸出

    將輸入影格映射到系統記憶體並將它們傳遞到輸出。如果稍後需要原始硬體影格(例如,在將其他內容覆蓋在其部分內容之後),則可以在下一個模式中再次使用 hwmap 濾鏡來擷取它。

  • 一般影格輸入,硬體影格輸出

    如果輸入實際上是軟體映射的硬體影格,則取消映射它 - 也就是說,傳回原始硬體影格。

    否則,必須提供裝置。在該裝置上為輸出建立新的硬體表面,然後將它們映射回輸入的軟體格式,並將這些影格提供給先前的濾鏡。然後,這將像 hwupload 濾鏡一樣運作,但當輸入已採用相容格式時,可能會避免額外的複製。

  • 硬體影格輸入和輸出

    必須為輸出提供裝置,可以直接提供或使用 derive_device 選項提供。輸入和輸出裝置必須是不同類型且相容的 - 其確切含義取決於系統,但通常表示它們必須參考相同的底層硬體內容(例如,參考相同的圖形卡)。

    如果輸入影格最初是在輸出裝置上建立的,則取消映射以檢索原始影格。

    否則,將影格映射到輸出裝置 - 在輸出端建立新的硬體影格,對應於輸入端的影格。

接受以下額外參數

mode

設定影格映射模式。以下組合的某種形式

read

映射的影格應為可讀取的。

設定每個音訊幀輸出時間戳的處理模式。

映射的影格應為可寫入的。

overwrite

映射將始終覆寫整個影格。

這在某些情況下可能會提高效能,因為不需要載入影格的原始內容。

direct

映射不得涉及任何複製。

在某些情況下,當直接映射不可行或會產生意外屬性時,會建立到影格副本的間接映射。設定此旗標可確保映射是直接的,並且在不可能的情況下會失敗。

如果未指定,則預設為 read+write

derive_device type

不要使用初始化時提供的裝置,而是從輸入影格所在的裝置衍生一個新的 type 類型的裝置。

reverse

在硬體到硬體的映射中,反向映射 - 在接收器中建立影格並將其映射回來源。在某些情況下,當需要單向映射,但裝置僅支援反向映射時,這可能是必要的。

此選項很危險 - 如果對該濾鏡的輸出有任何額外限制,則可能會以未定義的方式破壞先前的濾鏡。請勿在未完全理解其使用含義的情況下使用它。

11.123 hwupload

將系統記憶體影格上傳到硬體表面。

初始化濾鏡時必須提供上傳目標裝置。如果使用 ffmpeg,請使用 -filter_hw_device 選項或 derive_device 選項選擇適當的裝置。輸入和輸出裝置必須是不同類型且相容的 - 其確切含義取決於系統,但通常表示它們必須參考相同的底層硬體上下文(例如,參考相同的顯示卡)。

接受以下額外參數

derive_device type

不要使用初始化時提供的裝置,而是從輸入影格所在的裝置衍生一個新的 type 類型的裝置。

11.124 hwupload_cuda

將系統記憶體影格上傳到 CUDA 裝置。

它接受以下選用參數

device

要使用的 CUDA 裝置編號

11.125 hqx

套用專為像素藝術設計的高品質放大濾鏡。此濾鏡最初由 Maxim Stepin 建立。

設定柔削波的類型。

n

設定縮放尺寸:2 代表 hq2x3 代表 hq3x4 代表 hq4x。預設值為 3

11.126 hstack

水平堆疊輸入影片。

所有串流必須具有相同的像素格式和相同的高度。

請注意,此濾鏡比使用 overlaypad 濾鏡建立相同的輸出更快。

stages

inputs

設定輸入串流的數量。預設值為 2。

shortest

如果設定為 1,則強制輸出在最短的輸入終止時終止。預設值為 0。

11.127 hsvhold

將特定的 HSV 範圍轉換為灰階值。

此濾鏡測量選項中設定的 HSV 顏色與影片串流中測量的顏色之間的色差。根據選項,輸出顏色可以更改為灰色或不更改。

濾鏡接受以下選項

hue

設定將用於色差計算的色相值。允許的範圍是從 -360 到 360。預設值為 0。

sat

設定將用於色差計算的飽和度值。允許的範圍是從 -1 到 1。預設值為 0。

val

設定將用於色差計算的值。允許的範圍是從 -1 到 1。預設值為 0。

similarity

設定與關鍵色的相似度百分比。允許的範圍是從 0 到 1。預設值為 0.01。

0.00001 僅匹配精確的關鍵色,而 1.0 匹配所有顏色。

blend

混合百分比。允許的範圍是從 0 到 1。預設值為 0。

0.0 使像素完全變成灰色,或完全不變成灰色。

值越高,產生的灰色像素越多,像素顏色越接近關鍵色,灰色像素越高。

11.128 hsvkey

將特定的 HSV 範圍轉換為透明度。

此濾鏡測量選項中設定的 HSV 顏色與影片串流中測量的顏色之間的色差。根據選項,可以透過新增 Alpha 通道將輸出顏色更改為透明。

濾鏡接受以下選項

hue

設定將用於色差計算的色相值。允許的範圍是從 -360 到 360。預設值為 0。

sat

設定將用於色差計算的飽和度值。允許的範圍是從 -1 到 1。預設值為 0。

val

設定將用於色差計算的值。允許的範圍是從 -1 到 1。預設值為 0。

similarity

設定與關鍵色的相似度百分比。允許的範圍是從 0 到 1。預設值為 0.01。

0.00001 僅匹配精確的關鍵色,而 1.0 匹配所有顏色。

blend

混合百分比。允許的範圍是從 0 到 1。預設值為 0。

chromakey

chromakey

11.129 hue

修改輸入的色相和/或飽和度。

它接受以下參數

h

將色相角指定為度數。它接受表達式,預設為 "0"。

s

在 [-10,10] 範圍內指定飽和度。它接受表達式,預設為 "1"。

h

將色相角指定為弧度。它接受表達式,預設為 "0"。

b

在 [-10,10] 範圍內指定亮度。它接受表達式,預設為 "0"。

hH 是互斥的,不能同時指定。

bhHs 選項值是包含以下常數的表達式

n

輸入影格的影格計數,從 0 開始

pts

輸入影格的呈現時間戳記,以時間基底單位表示

r

輸入視訊的影格率,如果輸入影格率未知則為 NAN

設定傳輸表達式。

以秒為單位的時間戳記,如果輸入時間戳記未知,則為 NAN

tb

輸入影片的時間基底

11.129.1 範例

  • 將色相設定為 90 度,飽和度設定為 1.0
    hue=h=90:s=1
    
  • 相同的指令,但以弧度表示色相
    hue=H=PI/2:s=1
    
  • 旋轉色相並使飽和度在一秒內在 0 到 2 之間擺動
    hue="H=2*PI*t: s=sin(2*PI*t)+1"
    
  • 套用從 0 開始的 3 秒飽和度淡入效果
    hue="s=min(t/3\,1)"
    

    一般的淡入表達式可以寫成

    hue="s=min(0\, max((t-START)/DURATION\, 1))"
    
  • 套用從 5 秒開始的 3 秒飽和度淡出效果
    hue="s=max(0\, min(1\, (8-t)/3))"
    

    一般的淡出表達式可以寫成

    hue="s=max(0\, min(1\, (START+DURATION-t)/DURATION))"
    

11.129.2 指令

此濾波器支援以下指令

b
s
h
h

修改輸入影片的色相和/或飽和度和/或亮度。該命令接受與相應選項相同的語法。

如果指定的表達式無效,則會保持其目前值。

11.130 huesaturation

對輸入影片串流套用色相-飽和度-強度調整。

此濾鏡在 RGB 色彩空間中運作。

此濾波器還能夠拉伸/壓縮音訊資料以使其與時間戳記匹配,或注入靜音/剪切音訊以使其與時間戳記匹配,執行兩者的組合或兩者都不執行。

hue

設定要套用的色相偏移量(以度為單位)。預設值為 0。允許的範圍是從 -180 到 180。

saturation

設定飽和度偏移量。預設值為 0。允許的範圍是從 -1 到 1。

intensity

設定強度偏移量。預設值為 0。允許的範圍是從 -1 到 1。

mgain

設定將要調整的主要顏色和互補顏色。此選項透過提供一個或多個值來設定。這可以一次選擇多種顏色。預設情況下,會選取所有顏色。

r

調整紅色。

y

調整黃色。

g

調整綠色。

c

調整青色。

b

調整藍色。

m

調整洋紅色。

a

調整所有顏色。

強度 (strength)

設定濾鏡的強度。允許的範圍是從 0 到 100。預設值為 1。

rw, gw, bw

設定每個 RGB 成分的權重。允許的範圍是從 0 到 1。預設值設定為 0.333、0.334、0.333。這些選項用於飽和度和亮度處理。

lightness

設定保留亮度,預設情況下停用。調整色相可能會改變原始 RGB 三元組的亮度,啟用此選項後,亮度將保持相同的值。

11.131 hysteresis

透過連接組件將第一個串流擴展到第二個串流。這使得建立更穩健的邊緣遮罩成為可能。

此濾波器還能夠拉伸/壓縮音訊資料以使其與時間戳記匹配,或注入靜音/剪切音訊以使其與時間戳記匹配,執行兩者的組合或兩者都不執行。

planes

設定哪些平面將作為點陣圖處理,未處理的平面將從第一個串流複製。預設值為 0xf,所有平面都將被處理。

threshold

設定濾鏡中使用的閾值。如果像素組件值高於此值,則會啟動連接組件的濾鏡演算法。預設值為 0。

hysteresis 濾鏡也支援 framesync 選項。

11.132 iccdetect

從嵌入的 ICC 設定檔(如果存在)偵測色彩空間,並相應地更新影格的標籤。

此濾波器還能夠拉伸/壓縮音訊資料以使其與時間戳記匹配,或注入靜音/剪切音訊以使其與時間戳記匹配,執行兩者的組合或兩者都不執行。

force

如果為 true,則影格現有的色彩空間標籤將始終被從 ICC 設定檔偵測到的值覆寫。否則,它們只會在包含 unknown 時才被指派。預設啟用。

11.133 iccgen

產生 ICC 設定檔並將其附加到影格。

此濾波器還能夠拉伸/壓縮音訊資料以使其與時間戳記匹配,或注入靜音/剪切音訊以使其與時間戳記匹配,執行兩者的組合或兩者都不執行。

color_primaries
color_trc

設定將為其產生 ICC 設定檔的色彩空間。auto 的預設值會從輸入影格的中繼資料推斷值,並適當地預設為 BT.709/sRGB。

請參閱 setparams 濾鏡以取得可能值的列表,但請注意,unknown 不是此濾鏡的有效值。

force

如果為 true,即使 ICC 設定檔會覆寫現有的 ICC 設定檔,也會產生 ICC 設定檔。預設停用。

11.134 identity

取得兩個輸入影片之間的識別分數。

此濾鏡採用兩個輸入視訊。

為了使此濾鏡正常工作,兩個輸入視訊必須具有相同的解析度和像素格式。此外,它假設兩個輸入具有相同數量的影格,這些影格將逐個比較。

獲得的每個組件、平均值、最小值和最大值識別分數會透過記錄系統列印出來。

濾鏡將每個影格的計算識別分數儲存在影格中繼資料中。

此濾鏡也支援 framesync 選項。

在以下範例中,正在處理的輸入檔案 main.mpg 與參考檔案 ref.mpg 進行比較。

ffmpeg -i main.mpg -i ref.mpg -lavfi identity -f null -

11.135 idet

偵測影片交錯類型。

此濾鏡嘗試偵測輸入影格是交錯、漸進式、頂場優先還是底場優先。它還將嘗試偵測在相鄰影格之間重複的場(電視電影的徵兆)。

單影格偵測在分類每個影格時僅考慮緊鄰的相鄰影格。多影格偵測納入了先前影格的分類歷史記錄。

濾鏡將記錄這些中繼資料值

single.current_frame

使用單影格偵測偵測到的目前影格類型。以下之一:“tff”(頂場優先)、“bff”(底場優先)、“progressive”(漸進式)或 “undetermined”(未確定)

single.tff

使用單影格偵測偵測為頂場優先的累積影格數。

multiple.tff

使用多影格偵測偵測為頂場優先的累積影格數。

single.bff

使用單影格偵測偵測為底場優先的累積影格數。

multiple.current_frame

使用多影格偵測偵測到的目前影格類型。以下之一:“tff”(頂場優先)、“bff”(底場優先)、“progressive”(漸進式)或 “undetermined”(未確定)

multiple.bff

使用多影格偵測偵測為底場優先的累積影格數。

single.progressive

使用單影格偵測偵測為漸進式的累積影格數。

multiple.progressive

使用多影格偵測偵測為漸進式的累積影格數。

single.undetermined

無法使用單影格偵測分類的累積影格數。

multiple.undetermined

無法使用多影格偵測分類的累積影格數。

repeated.current_frame

目前影格中哪個場是從上一個影格重複的。以下之一:“neither”(皆非)、“top”(頂部)或 “bottom”(底部)。

repeated.neither

沒有重複場的累積影格數。

repeated.top

頂場從前一個影格的頂場重複的累積影格數。

repeated.bottom

底場從前一個影格的底場重複的累積影格數。

濾鏡接受以下選項

intl_thres

設定交錯閾值。

prog_thres

設定漸進式閾值。

rep_thres

重複場偵測的閾值。

half_life

給定影格對統計資訊的貢獻減半(即,它對其分類的貢獻僅為 0.5)的影格數。預設值 0 表示所有看到的影格都永遠給予 1.0 的完整權重。

analyze_interlaced_flag

當此值不為 0 時,idet 將使用指定的影格數來判斷交錯旗標是否準確,它不會計算未確定的影格。如果發現旗標準確,則將使用該旗標,而無需任何進一步的計算,如果發現旗標不準確,則將清除該旗標,而無需任何進一步的計算。這允許將 idet 濾鏡作為一種低計算量的方法插入,以清理交錯旗標

11.135.1 範例

以詳細模式檢查影片中前 360 個影格的場序

ffmpeg -i INPUT -filter:v idet,metadata=mode=print -frames:v 360 -an -f null -

idet 濾鏡將分析中繼資料新增到每個影格,然後將其丟棄。最後,濾鏡還將列印包含統計資訊的最終報告。

11.136 il

解交錯或交錯場。

此濾鏡允許使用者處理交錯影像場,而無需對其進行解交錯。解交錯將輸入影格分割成 2 個場(稱為半圖片)。奇數行移動到輸出影像的上半部分,偶數行移動到下半部分。您可以獨立處理(濾鏡)它們,然後重新交錯它們。

濾鏡接受以下選項

luma_mode, l
chroma_mode, c
alpha_mode, a

luma_modechroma_modealpha_mode 的可用值為

none

不執行任何操作。

deinterleave, d

解交錯場,將一個場放置在另一個場之上。

interleave, i

交錯場。反轉解交錯的效果。

預設值為 none

luma_swap, ls
chroma_swap, cs
alpha_swap, as

交換亮度/色度/Alpha 場。交換偶數行和奇數行。預設值為 0

11.136.1 指令

此濾鏡支援以上所有選項作為 commands

11.137 inflate

對影片套用膨脹效果。

此濾鏡透過僅考慮高於像素的值,用局部 (3x3) 平均值替換像素。

設定視窗長度,以樣本為單位。預設值為 2048。允許範圍為 32 到 65536。

noise
設定執行除法時的雜訊。預設值為 0.0000001。當寬度和高度不相同且不是 2 的冪,或者卷積之前的串流有雜訊時很有用。
deconvolve 濾鏡也支援 framesync 選項。
減少視訊中的交叉亮度(點爬行)和交叉顏色(彩虹)。

mode

11.137.1 指令

此濾鏡支援以上所有選項作為 commands

11.138 interlace

來自漸進式內容的簡單交錯濾鏡。這會將奇數影格的上(或下)行與偶數影格的下(或上)行交錯,從而使影格率減半並保留影像高度。

   Original        Original             New Frame
   Frame 'j'      Frame 'j+1'             (tff)
  ==========      ===========       ==================
    Line 0  -------------------->    Frame 'j' Line 0
    Line 1          Line 1  ---->   Frame 'j+1' Line 1
    Line 2 --------------------->    Frame 'j' Line 2
    Line 3          Line 3  ---->   Frame 'j+1' Line 3
     ...             ...                   ...
New Frame + 1 will be generated by Frame 'j+2' and Frame 'j+3' and so on

它接受以下選用參數

scan

這決定了交錯影格是從漸進式影格的偶數行(tff - 預設值)還是奇數行(bff)中取得。

lowpass

垂直低通濾鏡,以避免推特交錯並減少摩爾紋圖案。

‘<samp>0, off</samp>’

停用垂直低通濾鏡

1, linear

啟用線性濾鏡(預設值)

2, complex

啟用複雜濾鏡。這將稍微減少推特和摩爾紋,但更好地保留細節和主觀清晰度印象。

11.139 kerndeint

透過套用 Donald Graft 的自適應核心解交錯來解交錯輸入影片。處理影片的交錯部分以產生漸進式影格。

接受的參數說明如下。

thresh

設定閾值,該閾值會影響濾鏡在判斷是否必須處理像素行時的容差。它必須是 [0,255] 範圍內的整數,預設值為 10。值為 0 將導致在每個像素上套用該處理。

block_size, b

如果設定為 1,則將超過閾值的像素繪製為白色。預設值為 0。

order

設定場序。如果設定為 1,則交換場,如果設定為 0,則保持場不變。預設值為 0。

sharp

如果設定為 1,則啟用額外的銳化。預設值為 0。

twoway

如果設定為 1,則啟用雙向銳化。預設值為 0。

11.139.1 範例

  • 套用預設值
    kerndeint=thresh=10:map=0:order=0:sharp=0:twoway=0
    
  • 啟用額外的銳化
    kerndeint=sharp=1
    
  • 將處理後的像素繪製成白色
    kerndeint=map=1
    

11.140 kirsch

對輸入影片串流套用 Kirsch 運算子。

stages

planes

設定將處理哪些平面,未處理的平面將被複製。預設值為 0xf,所有平面都將被處理。

scale

設定將與濾鏡結果相乘的值。

delta

設定將新增到濾鏡結果的值。

11.140.1 指令

此濾鏡支援以上所有選項作為 commands

11.141 lagfun

緩慢更新較暗的像素。

此濾鏡使短暫的光閃爍看起來更長。此濾鏡接受以下選項

向輸入音訊添加相位效果。

設定衰減因子。預設值為 .95。允許的範圍是從 0 到 1。

planes

planes

11.141.1 指令

此濾鏡支援以上所有選項作為 commands

11.142 lenscorrection

校正徑向鏡頭失真

此濾鏡可用於校正因使用廣角鏡頭而導致的徑向失真,從而重新校正影像。若要找到正確的參數,可以使用例如 opencv 或簡單的試錯法中提供的工具。若要使用 opencv,請使用 opencv 來源中的校準範例(在 samples/cpp 下),並從結果矩陣中提取 k1 和 k2 係數。

請注意,實際上相同的濾鏡在 KDE 專案的開源工具 Krita 和 Digikam 中也可用。

與也可以用於補償鏡頭錯誤的 vignette 濾鏡相比,此濾鏡校正影像的失真,而 vignette 校正亮度分佈,因此您可能希望在某些情況下將這兩個濾鏡一起使用,但您必須注意順序,即漸暈應在鏡頭校正之前還是之後套用。

11.142.1 選項

濾鏡接受以下選項

cx

影像焦點的相對 x 座標,以及失真的中心。此值的範圍為 [0,1],以影像寬度的百分比表示。預設值為 0.5。

cy

影像焦點的相對 y 座標,以及失真的中心。此值的範圍為 [0,1],以影像高度的百分比表示。預設值為 0.5。

k1

二次校正項的係數。此值的範圍為 [-1,1]。0 表示不校正。預設值為 0。

k2

雙二次校正項的係數。此值的範圍為 [-1,1]。0 表示不校正。預設值為 0。

i

設定內插類型。可以是 nearestbilinear。預設值為 nearest

fc

指定未映射像素的顏色。如需此選項的語法,請查看 (ffmpeg-utils) 手冊中的 "Color" 章節。預設顏色為 black@0

產生校正的公式為

r_src = r_tgt * (1 + k1 * (r_tgt / r_0)^2 + k2 * (r_tgt / r_0)^4)

其中 r_0 是影像對角線的一半,r_srcr_tgt 分別是來源影像和目標影像中到焦點的距離。

11.142.2 指令

此濾鏡支援以上所有選項作為 commands

11.143 lensfun

透過 lensfun 函式庫 (http://lensfun.sourceforge.net/) 套用鏡頭校正。

lensfun 濾鏡需要相機製造商、相機型號和鏡頭型號才能套用鏡頭校正。濾鏡將載入 lensfun 資料庫並查詢它,以在資料庫中找到對應的相機和鏡頭條目。只要可以使用給定的選項找到這些條目,濾鏡就可以對影格執行校正。請注意,不完整的字串將導致濾鏡選擇與給定選項的最佳匹配,並且濾鏡將輸出選定的相機和鏡頭型號(以 "info" 層級記錄)。您必須按要求提供製造商、相機型號和鏡頭型號。

若要取得可用製造商和型號的列表,請省略 makemodel 選項中的一個或兩個。濾鏡將以 INFO 層級將完整列表傳送到日誌。第一列是製造商,第二列是型號。若要取得可用鏡頭的列表,請為製造商和型號設定任何值,並省略 lens_model 選項。濾鏡將以 INFO 層級將鏡頭的完整列表傳送到日誌。ffmpeg 工具將在列印列表後退出。

濾鏡接受以下選項

make

相機的製造商(例如 "Canon")。此選項為必填項。

指定標誌的左上角坐標。它們必須指定。

相機的型號(例如 "Canon EOS 100D")。此選項為必填項。

lens_model

鏡頭的型號(例如 "Canon EF-S 18-55mm f/3.5-5.6 IS STM")。此選項為必填項。

db_path

鏡頭資料庫資料夾的完整路徑。如果未設定,濾鏡將嘗試在建置函式庫時從安裝路徑載入資料庫。預設為未設定。

mode

要套用的校正類型。以下值是有效選項

vignetting

啟用修正鏡頭漸暈。

geometry

啟用修正鏡頭幾何形狀。這是預設值。

subpixel

啟用修正色差。

vig_geo

啟用修正鏡頭漸暈和鏡頭幾何形狀。

vig_subpixel

啟用修正鏡頭漸暈和色差。

distortion

啟用修正鏡頭幾何形狀和色差。

all

啟用所有可能的校正。

focal_length

影像/影片的焦距(變焦;預計影片為常數)。例如,18–55mm 鏡頭的焦距範圍為 [18–55],因此在使用該鏡頭時應選擇該範圍內的值。預設值為 18。

aperture

影像/影片的光圈(預計影片為常數)。請注意,光圈僅用於漸暈校正。預設值為 3.5。

focus_distance

影像/影片的對焦距離(預計影片為常數)。請注意,對焦距離僅用於漸暈,並且僅輕微影響漸暈校正過程。如果未知,請將其保留為預設值(即 1000)。

scale

變換後套用的縮放比例因子。校正後,影片不再一定是矩形的。此參數控制結果影像的可見程度。值 0 表示將自動選擇一個值,以便輸出影像中幾乎沒有或沒有未映射區域。1.0 表示不執行額外的縮放。較低的值可能會使更多校正後的影像可見,而較高的值可能會避免輸出中出現未映射區域。

target_geometry

輸出影像/影片的目標幾何形狀。以下值是有效選項

rectilinear (default)
fisheye
panoramic
equirectangular
fisheye_orthographic
fisheye_stereographic
fisheye_equisolid
fisheye_thoby
reverse

套用影像校正的反向操作(不是校正失真,而是套用失真)。

interpolation

校正失真時使用的內插類型。以下值是有效選項

nearest
linear (default)
lanczos

11.143.1 範例

  • 套用鏡頭校正,製造商為 "Canon",相機型號為 "Canon EOS 100D",鏡頭型號為 "Canon EF-S 18-55mm f/3.5-5.6 IS STM",焦距為 "18",光圈為 "8.0"。
    ffmpeg -i input.mov -vf lensfun=make=Canon:model="Canon EOS 100D":lens_model="Canon EF-S 18-55mm f/3.5-5.6 IS STM":focal_length=18:aperture=8 -c:v h264 -b:v 8000k output.mov
    
  • 套用與之前相同的設定,但僅適用於影片的前 5 秒。
    ffmpeg -i input.mov -vf lensfun=make=Canon:model="Canon EOS 100D":lens_model="Canon EF-S 18-55mm f/3.5-5.6 IS STM":focal_length=18:aperture=8:enable='lte(t\,5)' -c:v h264 -b:v 8000k output.mov
    

11.144 lcevc

基於 liblcevc_dec 的低複雜度增強影片編碼解碼器濾鏡 (https://github.com/v-novaltd/LCEVCdec)。

11.145 libplacebo

基於 libplacebo 的彈性 GPU 加速處理濾鏡 (https://code.videolan.org/videolan/libplacebo)。

11.145.1 選項

此濾鏡的選項分為以下幾個部分

11.145.1.1 輸出模式

這些選項控制整體輸出模式。預設情況下,libplacebo 將嘗試盡可能保留來源色度學和尺寸,但它將套用來源影格中存在的任何嵌入式膠片顆粒、杜比視界中繼資料或變形 SAR。

inputs

設定輸入數量。這可以與 idx 變數一起使用,以允許在輸出影格內放置/混合多個輸入。這有效地啟用了類似於 hstackoverlay 等的功能。

f
h

設定輸出影片尺寸表達式。預設值為 iwih

允許與 scale 濾鏡相同的表達式。

crop_x
crop_y

設定輸入裁剪 x/y 表達式,預設值為 (iw-cw)/2(ih-ch)/2

crop_w
crop_h

設定輸入裁剪寬度/高度表達式,預設值為 iwih

pos_x
pos_y

設定輸出放置 x/y 表達式,預設值為 (ow-pw)/2(oh-ph)/2

pos_w
pos_h

設定輸出放置寬度/高度表達式,預設值為 owoh

fps

設定輸出影格率。這可以是合理的,例如 60000/1001。如果設定為特殊字串 none(預設值),則輸入時間戳記將改為未修改地傳遞到輸出。否則,輸入影片影格將根據需要進行內插,以將影片重新縮放到指定的目標影格率,方式由 frame_mixer 選項決定。

format

設定輸出格式覆寫。如果未設定(預設值),則影格將以與各自的輸入影格相同的格式輸出。否則,將執行格式轉換。

force_original_aspect_ratio
force_divisible_by

與相同的 scale 濾鏡選項的工作方式相同。

normalize_sar

如果啟用,輸出影格將始終具有 1:1 的像素縱橫比。這將根據需要引入額外的填充/裁剪。如果停用(預設值),則任何縱橫比不符的情況,包括來自例如變形影片來源的情況,都會轉發到輸出像素縱橫比。

pad_crop_ratio

指定填充和裁剪之間的比例(介於 0.01.0 之間),當輸入縱橫比與輸出縱橫比不符且 normalize_sar 生效時。預設值 0.0 始終使用黑色邊框填充內容,而值 1.0 始終裁剪掉部分內容。可以使用中間值,從而混合使用這兩種方法。

fillcolor

設定用於填充輸出影像未涵蓋的輸出區域的顏色,例如,由於 normalize_sar 的結果。如需此選項的一般語法,請查看 (ffmpeg-utils) 手冊中的 "Color" 章節。預設值為 black

corner_rounding

使用圓角呈現影格。該值以介於 0.01.0 之間的浮點數給出,表示圓角的相對程度,從完全正方形到完全圓形。換句話說,它給出了半徑除以較小邊長度的一半。預設值為 0.0

extra_opts

傳遞額外的 libplacebo 內部組態選項。這些可以指定為以 ':' 分隔的 key=value 對列表。以下範例顯示如何組態自訂濾鏡核心 ("EWA LanczosSharp") 並使用它將輸入影像解析度加倍

-vf "libplacebo=w=iw*2:h=ih*2:extra_opts='upscaler=custom\:upscaler_preset=ewa_lanczos\:upscaler_blur=0.9812505644269356'"
colorspace
color_primaries
color_trc
設定用於偵測濾鏡的偵測頻率(以 Hz 為單位),該偵測濾鏡用於觸發等化。預設值為 1000 Hz。允許範圍介於 2 和 1000000 Hz 之間。

組態將在其中交付輸出影格的色彩空間。auto 的預設值以與輸入影格相同的格式輸出影格,從而不會產生任何變更。對於任何其他值,將執行轉換。

請參閱 setparams 濾鏡以取得可能值的列表。

apply_filmgrain

如果來源影格中存在膠片顆粒(例如 AV1 或 H.274),則套用膠片顆粒,並從輸出中剝離它。預設啟用。

apply_dolbyvision

如果來源影格中存在杜比視界 RPU 中繼資料,則套用杜比視界 RPU 中繼資料,並從輸出中剝離它。預設啟用。請注意,杜比視界將始終輸出 BT.2020+PQ,覆寫通常的輸入影格中繼資料。這些也將被選取為各自影格輸出選項的 auto 值。

除了 scale 濾鏡記錄的表達式常數外,crop_wcrop_hcrop_xcrop_ypos_wpos_hpos_xpos_y 選項還可以包含以下常數

in_idx, idx

目前活動輸入串流的(從 0 開始的)數字索引。

crop_w, cw
crop_h, ch

crop_wcrop_h 的計算值。

pos_w, pw
pos_h, ph

pos_wpos_h 的計算值。

in_t, t

輸入影格時間戳記,以秒為單位。如果輸入時間戳記未知,則為 NAN。

out_t, ot

輸入影格時間戳記,以秒為單位。如果輸入時間戳記未知,則為 NAN。

n

輸入影格編號,從 0 開始。

11.145.1.2 縮放

本節中的選項控制 libplacebo 如何執行升級取樣和(如果需要)降級取樣。請注意,libplacebo 將始終在內部以 4:4:4 內容運作,因此任何子取樣色度格式(例如 yuv420p)都將必須在呈現過程中進行升級取樣和降級取樣。這表示即使來源和目的地解析度相同,縮放也可能生效。

upscaler
downscaler

組態用於升級取樣和降級取樣的濾鏡核心。各自的預設值為 spline36mitchell。如需可能值的完整列表,請將 help 傳遞給這些選項。最重要的值為

none

強制使用內建 GPU 紋理取樣(通常為雙線性)。速度極快,但品質差,尤其是在降級取樣時。

bilinear

雙線性內插。通常可以在 GPU 上免費完成,除非這樣做會導致混疊。速度快且品質低。

nearest

最近鄰內插。清晰但高度混疊。

oversample

演算法看起來與最近鄰內插在視覺上相似,但嘗試保留像素縱橫比。適用於像素藝術,因為它會最大程度地減少藝術外觀的失真。

lanczos

標準 sinc-sinc 內插核心。

spline36

lanczos 的三次樣條近似值。效能上沒有差異,但振鈴效應稍有減輕。

ewa_lanczos

lanczos 的橢圓加權平均版本,基於 jinc-sinc 核心。這也通常被稱為 "Jinc 縮放"。速度慢但品質非常高。

gaussian

高斯核心。具有某些理想的數學屬性,但在主觀上非常模糊。

mitchell

Mitchell 和 Netravali 建議的參數的三次 BC 樣條。振鈴效應非常小。

frame_mixer

控制用於時間上混合影格的核心。預設值為 none,這會停用影格混合。如需可能值的完整列表,請將 help 傳遞給此選項。最重要的值為

none

停用影格混合,產生與 "最近鄰" 語義等效的結果。

oversample

過度取樣輸入影片以建立 "平滑運動" 類型效果:如果輸出影格恰好落在兩個影片影格之間的轉換上,則會根據相對重疊進行混合。只要需要保留原始主觀外觀,就建議使用此選項。

mitchell_clamp

更大的濾鏡核心,可平滑地內插多個影格,其方式旨在盡可能消除振鈴和其他偽影。在需要最大視覺平滑度的任何地方都建議使用此選項。

linear

影格之間的線性混合/淡入淡出。特別適用於建構例如幻燈片。

lut_entries

組態縮放器 LUT 的大小,範圍從 1256。預設值 0 將選擇 libplacebo 的內部預設值,通常為 64

antiringing

啟用抗振鈴(對於非 EWA 濾鏡)。該值(介於 0.01.0 之間)組態抗振鈴演算法的強度。如果設定得太高,可能會增加混疊。預設停用。

sigmoid

在升級取樣期間啟用 S 型壓縮。稍微減少振鈴。預設啟用。

11.145.1.3 去色帶

Libplacebo 隨附內建去色帶濾鏡,該濾鏡擅長抵消許多常見的色帶和區塊效應來源。在需要品質時,強烈建議開啟此功能。

deband

啟用(快速)去色帶演算法。預設停用。

deband_iterations

去色帶演算法的去色帶迭代次數。每次迭代都以逐漸增加的半徑(和減小的閾值)執行。建議值在 14 的範圍內。預設值為 1

deband_threshold

去色帶濾鏡強度。數值越高,去色帶越積極。預設值為 4.0

deband_radius

去色帶濾鏡半徑。較高的半徑更適合緩慢的漸層,而較低的半徑更適合陡峭的漸層。預設值為 16.0

deband_grain

要新增的額外輸出顆粒量。有助於隱藏瑕疵。預設值為 6.0

11.145.1.4 色彩調整

一組主觀顏色控制項。不是很嚴謹,因此確切效果會因輸入原色和色彩空間而異。

mirror, 3

亮度提升,介於 -1.01.0 之間。預設值為 0.0

contrast

對比度增益,介於 0.016.0 之間。預設值為 1.0

saturation

飽和度增益,介於 0.016.0 之間。預設值為 1.0

hue

色相偏移量(以弧度為單位),介於 -3.143.14 之間。預設值為 0.0。這將旋轉 UV 子向量,RGB 輸入預設為 BT.709 係數。

gamma

Gamma 調整,介於 0.016.0 之間。預設值為 1.0

cones

用於色盲模擬的錐體模型。接受 lms 的任意組合。以下是一些範例

m

Deuteranomaly / deuteranopia(影響 3%-4% 的人口)

l

Protanomaly / protanopia(影響 1%-2% 的人口)

l+m

Monochromacy(非常罕見)

l+m+s

Achromatopsy(完全喪失白天視力,極其罕見)

cone-strength

cones 指定的錐體的增益因子,介於 0.010.0 之間。值 1.0 會導致色覺沒有任何變化。值 0.0(預設值)模擬完全喪失這些錐體。高於 1.0 的值會導致誇大錐體之間的差異,這可能有助於補償降低的色覺。

11.145.1.5 峰值偵測

為了幫助處理僅具有靜態 HDR10 中繼資料(或根本沒有標記)的來源,libplacebo 使用其自己的內部影格分析計算著色器來分析來源影格,並即時調整色調映射函式。如果這太慢,或者如果需要精確可重現的影格完美結果,建議關閉此功能。

peak_detect

啟用 HDR 峰值偵測。忽略靜態 MaxCLL/MaxFALL 值,而支援從輸入進行動態偵測。請注意,偵測到的值不會寫回輸出影格,它們僅引導內部色調映射過程。預設啟用。

smoothing_period

峰值偵測平滑週期,介於 0.01000.0 之間。值越高,峰值偵測對輸入變更的反應越慢。預設值為 100.0

minimum_peak

偵測到的峰值的下限(相對於 SDR 白色),介於 0.0100.0 之間。預設值為 1.0

scene_threshold_low
scene_threshold_high

場景變更偵測的下限和上限閾值。以介於 0.0100.0 之間的對數刻度表示。預設值分別為 5.510.0。將任一個設定為負值會停用此功能。

percentile

要用作色調映射的來源峰值的影格亮度直方圖的百分位數。預設值為 99.995,這是一個相當保守的值。將其設定為 100.0 會停用影格直方圖測量,而是使用真實峰值亮度進行色調映射。

11.145.1.6 色調映射

本節中的選項控制 libplacebo 在處理寬色域或 HDR 內容之間的不匹配時如何執行色調映射和色域映射。一般而言,libplacebo 依靠準確的來源標記和母帶顯示色域資訊來產生最佳結果。

gamut_mode

如何處理可能因比色色域映射而發生的超出色域的顏色。

clip

不執行任何操作,只需將超出範圍的顏色裁剪到 RGB 體積即可。品質低但速度極快。

perceptual

在感知上將顏色柔和地裁剪到色域體積。這是預設值。

relative

相對比色硬裁剪。與 perceptual 相似,但沒有軟膝部。

saturation

飽和度映射,將原色直接映射到 RGB 空間中的原色。除了需要明亮、飽和顯示器的人工電腦圖形外,不建議使用。

absolute

絕對比色硬裁剪。不執行白點調整。

desaturate

將超出色域的顏色向白色硬去飽和,同時保留亮度。傾向於扭曲明亮物體的視覺外觀。

darken

線性降低內容亮度以保留飽和細節,然後裁剪剩餘的超出色域的顏色。

warn

醒目提示超出色域的像素(透過反轉/標記它們)。

linear

線性降低整個影像的色度,使其適合目標顏色體積。在沒有正確母帶製作中繼資料的情況下在 BT.2020 來源上使用此功能時要小心,因為這樣做會導致過度去飽和。

tonemapping

要使用的色調映射演算法。可用值為

auto

基於內部啟發式的自動選擇。這是預設值。

clip

不執行色調映射,僅裁剪超出範圍的顏色。保留範圍內顏色的完美顏色準確度,但完全破壞超出範圍的資訊。不執行任何黑點調整。不可組態。

st2094-40

來自 SMPTE ST 2094-40 附錄 B 的 EETF,它套用來自 HDR10+ 動態中繼資料的貝茲曲線,根據貝茲曲線執行色調映射。使用的 OOTF 會根據目標顯示峰值亮度與實際顯示峰值亮度之間的比例進行調整。

st2094-10

來自 SMPTE ST 2094-10 附錄 B.2 的 EETF,除了最大值/最小值外,它還考慮了輸入訊號平均亮度。可組態的對比度參數會影響線性輸出段的斜率,預設值為 1.0,表示對比度沒有增加/減少。請注意,這目前不包括附錄 B.3 中定義的主觀增益/偏移量/Gamma 控制項。

bt.2390

來自 ITU-R 報告 BT.2390 的 EETF,一種具有線性段的 Hermite 樣條滾降。膝點偏移量可組態。請注意,此參數預設為 1.0,而不是 ITU-R 規範中的值 0.5

bt.2446a

來自 ITU-R 報告 BT.2446 的 EETF,方法 A。專為良好母帶製作的 HDR 來源設計。可用於正向和反向色調映射。不可組態。

spline

由兩個多項式組成的簡單樣條,由單個樞軸點連接。該參數給出樞軸點(在 PQ 空間中),預設值為 0.30。可用於正向和反向色調映射。

reinhard

簡單的非線性、全域色調映射演算法。該參數指定顯示峰值處的局部對比度係數。基本上,參數 0.5 表示參考白色將約為裁剪時亮度的一半。預設值為 0.5,這會產生此函式的最簡單公式。

mobius

reinhard 色調映射演算法的推廣,以支援黑色附近的額外線性斜率。色調映射參數指示線性段和非線性段之間的權衡。基本上,對於給定的參數 x,每個低於 x 的顏色值都將線性映射,而較高的值將進行非線性色調映射。接近 1.0 的值使此曲線的行為類似於 clip,而接近 0.0 的值使此曲線的行為類似於 reinhard。預設值為 0.3,這在比色準確度和保留超出色域的細節之間提供了良好的平衡。

hable

由 John Hable 開發的片段式、電影式色調映射演算法,用於 Uncharted 2,其靈感來自 Kodak 使用的類似色調映射演算法。因其在具有 HDR 呈現效果的電玩遊戲中的使用而普及。可以很好地保留暗部和亮部細節,但缺點是平均亮度變化非常顯著。這有點類似於參數為 0.24reinhard

gamma

擬合 Gamma(冪)函式以在來源和目標色彩空間之間轉換,有效地產生感知硬膝部,將兩個大致線性的段連接起來。這可以相當準確地保留所有比例的細節,但可能會產生外觀柔和或暗淡的影像。該參數用作截止點,預設值為 0.5

linear

在 PQ 空間中將輸入範圍線性延伸到輸出範圍。這將準確地保留所有細節,但會導致平均亮度明顯不同。除了常規色調映射外,還可用於反向色調映射。該參數可以用作額外的線性增益係數(預設值為 1.0)。

tonemapping_param

對於可調整的色調映射函式,此參數可用於微調曲線行為。請參閱 tonemapping 的文件。預設值 0.0 會替換為曲線的首選預設設定。

inverse_tonemapping

如果啟用,此濾鏡也將嘗試延伸 SDR 訊號以填充 HDR 輸出顏色體積。預設停用。

tonemapping_lut_size

色調映射 LUT 的大小,介於 21024 之間。預設值為 256。請注意,當與 peak_detect 結合使用時,此數字會平方。

contrast_recovery

對比度恢復強度。如果設定為高於 0.0 的值,則來源影像將分為高頻和低頻組件,並且一部分高頻影像會新增回色調映射輸出。可能會導致某些 HDR 來源出現過度振鈴偽影,但可以改善色調映射後影像中剩餘的主觀清晰度和細節。預設值為 0.30

contrast_smoothness

對比度恢復低通核心大小。預設值為 3.5。增加或減少此值將顯著影響視覺外觀。當 contrast_recovery 停用時,無效。

11.145.1.7 抖動

預設情況下,libplacebo 將在必要時進行抖動,這包括呈現為任何低於 16 位元精度的整數格式。建議始終保持開啟此功能,因為不這樣做可能會導致輸出中出現可見的色帶,即使啟用了 debanding 濾鏡也是如此。如果需要最大效能,請使用 ordered_fixed 而不是停用抖動。

dithering

要使用的抖動方法。接受以下值

none

完全停用抖動。可能會導致出現可見的色帶。

blue

使用偽藍色雜訊進行抖動。這是預設值。

ordered

可調整的有序抖動模式。

ordered_fixed

速度更快的有序抖動,固定大小為 6。無紋理。

white

使用白色雜訊進行抖動。無紋理。

dither_lut_size

抖動 LUT 大小,以 18 之間的 log base2 表示。預設值為 6,對應於 64x64 的 LUT 大小。

dither_temporal

啟用時間抖動。預設停用。

11.145.1.8 自訂著色器

libplacebo 支援許多基於 mpv .hook GLSL 語法的自訂著色器。可以在這裡找到此類著色器的集合:https://github.com/mpv-player/mpv/wiki/User-Scripts#user-shaders

mpv 著色器格式的完整說明超出本節的範圍,但摘要可以在這裡找到:https://mpv.io/manual/master/#options-glsl-shader

custom_shader_path

指定要在執行階段載入的自訂著色器檔案的路徑。

custom_shader_bin

將完整的自訂著色器指定為原始字串。

11.145.1.9 偵錯 / 效能

本節中的所有選項預設為關閉。它們可能在嘗試以品質為代價來擠出最大效能時提供協助。

skip_aa

降級取樣時停用反鋸齒。

polar_cutoff

截斷低於此絕對大小的極座標 (EWA) 縮放器核心,介於 0.01.0 之間。

disable_linear

停用線性光縮放。

disable_builtin

停用內建 GPU 取樣(強制 LUT)。

disable_fbos

強制停用 FBO,導致幾乎所有功能都喪失,但提供最大可能的速度。

11.145.2 指令

此濾鏡幾乎支援上述所有選項作為 commands

11.145.3 範例

  • 將輸入色調映射到標準色域 BT.709 輸出
    libplacebo=colorspace=bt709:color_primaries=bt709:color_trc=bt709:range=tv
    
  • 重新縮放輸入以適合標準 1080p,並進行高品質縮放
    libplacebo=w=1920:h=1080:force_original_aspect_ratio=decrease:normalize_sar=true:upscaler=ewa_lanczos:downscaler=ewa_lanczos
    
  • 內插低 FPS / VFR 輸入以平滑恆定 60 fps 輸出
    libplacebo=fps=60:frame_mixer=mitchell_clamp
    
  • 將輸入轉換為標準 sRGB JPEG
    libplacebo=format=yuv420p:colorspace=bt470bg:color_primaries=bt709:color_trc=iec61966-2-1:range=pc
    
  • 使用更高品質的去色帶設定
    libplacebo=deband=true:deband_iterations=3:deband_radius=8:deband_threshold=6
    
  • 在安裝 Mesa 的系統上(並停用最昂貴的選項)在 CPU 上執行此濾鏡
    ffmpeg ... -init_hw_device vulkan:llvmpipe ... -vf libplacebo=upscaler=none:downscaler=none:peak_detect=false
    
  • 在解碼器中抑制基於 CPU 的 AV1/H.274 膠片顆粒套用,而支援使用此濾鏡執行此操作。請注意,只有當影格已經在 GPU 上,或者您將 libplacebo 用於其他目的時,這才是一種優勢,因為否則 VRAM 往返將超過任何預期的加速。
    ffmpeg -export_side_data +film_grain ... -vf libplacebo=apply_filmgrain=true
    
  • 與 VAAPI hwdec 互通以避免透過 RAM 往返
    ffmpeg -init_hw_device vulkan -hwaccel vaapi -hwaccel_output_format vaapi ... -vf libplacebo
    

11.146 libvmaf

計算參考/失真輸入影片組的 VMAF(影片多方法評估融合)分數。

第一個輸入是失真影片,第二個輸入是參考影片。

獲得的 VMAF 分數會透過記錄系統列印出來。

它需要 Netflix 的 vmaf 函式庫 (libvmaf) 作為先決條件。安裝函式庫後,可以使用以下命令啟用它:./configure --enable-libvmaf

濾鏡具有以下選項

指定標誌的左上角坐標。它們必須指定。

以 ‘|‘ 分隔的 vmaf 模型列表。每個模型都可以組態多個參數。預設值:"version=vmaf_v0.6.1"

feature

以 ‘|‘ 分隔的功能列表。每個功能都可以組態多個參數。

log_path

設定用於儲存日誌檔案的檔案路徑。

log_fmt

設定日誌檔案的格式(xml、json、csv 或 sub)。

pool

設定用於計算 vmaf 的集區方法。選項為 minharmonic_meanmean(預設值)。

n_threads

設定初始化 libvmaf 時要使用的執行緒數。預設值:0,無執行緒。

n_subsample

設定要使用的影格子取樣間隔。

此濾鏡也支援 framesync 選項。

11.146.1 範例

  • 在以下範例中,失真影片 distorted.mpg 與參考檔案 reference.mpg 進行比較。
  • 基本用法
    ffmpeg -i distorted.mpg -i reference.mpg -lavfi libvmaf=log_path=output.xml -f null -
    
  • 使用多個模型的範例
    ffmpeg -i distorted.mpg -i reference.mpg -lavfi libvmaf='model=version=vmaf_v0.6.1\\:name=vmaf|version=vmaf_v0.6.1neg\\:name=vmaf_neg' -f null -
    
  • 使用多個額外功能的範例
    ffmpeg -i distorted.mpg -i reference.mpg -lavfi libvmaf='feature=name=psnr|name=ciede' -f null -
    
  • 使用選項和不同容器的範例
    ffmpeg -i distorted.mpg -i reference.mkv -lavfi "[0:v]settb=AVTB,setpts=PTS-STARTPTS[main];[1:v]settb=AVTB,setpts=PTS-STARTPTS[ref];[main][ref]libvmaf=log_fmt=json:log_path=output.json" -f null -
    

11.147 libvmaf_cuda

這是 libvmaf 濾鏡的 CUDA 變體。它僅接受 CUDA 影格。

它需要 Netflix 的 vmaf 函式庫 (libvmaf) 作為先決條件。安裝函式庫後,可以使用以下命令啟用它:./configure --enable-nonfree --enable-ffnvcodec --enable-libvmaf

11.147.1 範例

  • 基本用法,顯示 CUVID 硬體解碼和使用 scale_cuda 進行 CUDA 縮放
    ffmpeg \
        -hwaccel cuda -hwaccel_output_format cuda -codec:v av1_cuvid -i dis.obu \
        -hwaccel cuda -hwaccel_output_format cuda -codec:v av1_cuvid -i ref.obu \
        -filter_complex "
            [0:v]scale_cuda=format=yuv420p[dis]; \
            [1:v]scale_cuda=format=yuv420p[ref]; \
            [dis][ref]libvmaf_cuda=log_fmt=json:log_path=output.json
        " \
        -f null -
    

11.148 limitdiff

使用第二個和可選的第三個影片串流套用有限差異濾鏡。

濾鏡接受以下選項

threshold

設定閾值,以在允許影片串流之間存在某些差異時使用。任何絕對差值低於或等於此閾值的值都將從第一個影片串流中選取像素組件。

elasticity

設定處理影片串流時軟閾值的彈性。此值與第一個值相乘會設定第二個閾值。任何絕對差值大於或等於第二個閾值的值都將從第二個影片串流中選取像素組件。對於這兩個閾值之間的值,將使用第一個和第二個影片串流之間的線性內插。

reference

啟用參考(第三個)影片串流處理。預設情況下停用。如果設定,此影片串流將用於計算與第一個影片串流的絕對差值。

planes

指定將處理哪些平面。預設為所有可用平面。

11.148.1 指令

此濾鏡支援上述所有選項作為 commands,但選項 ‘reference’ 除外。

11.149 limiter

將像素組件值限制在指定的範圍 [min, max] 內。

濾鏡接受以下選項

min

下限。預設值為輸入允許的最低值。

max

上限。預設值為輸入允許的最高值。

planes

指定將處理哪些平面。預設為所有可用平面。

11.149.1 指令

此濾鏡支援以上所有選項作為 commands

11.150 loop

循環播放影片影格。

濾鏡接受以下選項

loop

設定循環次數。將此值設定為 -1 將導致無限循環。預設值為 0。

size

設定最大尺寸(以影格數為單位)。預設值為 0。

start

設定循環的第一個影格。預設值為 0。

time

以秒為單位設定循環開始時間。僅在名為 start 的選項設定為 -1 時使用。

11.150.1 範例

  • 無限循環播放單個第一個影格
    loop=loop=-1:size=1:start=0
    
  • 循環播放單個第一個影格 10 次
    loop=loop=10:size=1:start=0
    
  • 循環播放前 10 個影格 5 次
    loop=loop=5:size=10:start=0
    

11.151 lut1d

對輸入影片套用 1D LUT。

濾鏡接受以下選項

file

設定 1D LUT 檔案名。

目前支援的格式

cube

Iridas

csp

cineSpace

interp

選取內插模式。

提升高於偵測臨界值的頻率。

nearest

使用來自最近定義點的值。

linear

使用線性內插法內插值。

cosine

使用餘弦內插法內插值。

cubic

使用三次內插法內插值。

spline

使用樣條內插法內插值。

11.151.1 指令

此濾鏡支援以上所有選項作為 commands

11.152 lut3d

對輸入影片套用 3D LUT。

濾鏡接受以下選項

file

設定 3D LUT 檔案名。

目前支援的格式

3dl

AfterEffects

cube

Iridas

dat

DaVinci

m3d

Pandora

csp

cineSpace

interp

選取內插模式。

提升高於偵測臨界值的頻率。

nearest

使用來自最近定義點的值。

trilinear

使用定義立方體的 8 個點內插值。

tetrahedral

使用四面體內插值。

pyramid

使用金字塔內插值。

prism

使用棱鏡內插值。

11.152.1 指令

此濾鏡支援作為 commandsinterp 選項。

11.153 lumakey

將某些亮度值轉換為透明度。

濾鏡接受以下選項

threshold

設定將用作透明度基礎的亮度。預設值為 0

tolerance

設定要鍵控輸出的亮度值範圍。預設值為 0.01

softness

設定柔和度範圍。預設值為 0。使用此選項可控制從零到完全透明的逐漸過渡。

11.153.1 指令

colorkey

如果指定的表達式無效,則會保持其目前值。

11.154 lut, lutrgb, lutyuv

計算查閱表,以將每個像素組件輸入值繫結到輸出值,並將其套用到輸入影片。

lutyuv 將查閱表套用到 YUV 輸入影片,lutrgb 套用到 RGB 輸入影片。

這些濾鏡接受以下參數

c0

設定第一個像素組件表達式

c1

設定第二個像素組件表達式

c2

設定第三個像素組件表達式

c3

設定第四個像素組件表達式,對應於 Alpha 組件

r

r

w

g

b

b

a

a

y

y

u

v

設定 V/Cr 組件表達式

每個選項都指定用於計算對應像素組件值的查閱表的表達式。

與每個 c* 選項關聯的確切組件取決於輸入的格式。

lut 濾鏡需要輸入為 YUV 或 RGB 像素格式,lutrgb 需要輸入為 RGB 像素格式,而 lutyuv 需要輸入為 YUV。

表達式可以包含以下常數和函式

val

f
h

輸入寬度和高度。

val

像素組件的輸入值。

clipval

輸入值,裁剪到 minval-maxval 範圍。

maxval

像素組件的最大值。

minval

像素組件的最小值。

negval

像素組件值的負值,裁剪到 minval-maxval 範圍;它對應於表達式 "maxval-clipval+minval"。

clip(val)

val 中計算的值,裁剪到 minval-maxval 範圍。

gammaval(gamma)

像素組件值的計算 Gamma 校正值,裁剪到 minval-maxval 範圍。它對應於表達式 "pow((clipval-minval)/(maxval-minval)\,gamma)*(maxval-minval)+minval"

所有表達式預設為 "clipval"。

11.154.1 指令

blend

11.154.2 範例

  • 反轉輸入影片
    lutrgb="r=maxval+minval-val:g=maxval+minval-val:b=maxval+minval-val"
    lutyuv="y=maxval+minval-val:u=maxval+minval-val:v=maxval+minval-val"
    

    以上與以下內容相同

    lutrgb="r=negval:g=negval:b=negval"
    lutyuv="y=negval:u=negval:v=negval"
    
  • 反轉亮度
    lutyuv=y=negval
    
  • 移除色度組件,將影片轉換為灰階影像
    lutyuv="u=128:v=128"
    
  • 套用亮度燒毀效果
    lutyuv="y=2*val"
    
  • 移除綠色和藍色組件
    lutrgb="g=0:b=0"
    
  • 在輸入上設定恆定的 Alpha 通道值
    format=rgba,lutrgb=a="maxval-minval/2"
    
  • 將亮度 Gamma 校正 0.5 倍
    lutyuv=y=gammaval(0.5)
    
  • 捨棄亮度的最低有效位元
    lutyuv=y='bitand(val, 128+64+32)'
    
  • 類似於 Technicolor 的效果
    lutyuv=u='(val-maxval/2)*2+maxval/2':v='(val-maxval/2)*2+maxval/2'
    

11.155 lut2, tlut2

lut2 濾鏡採用兩個輸入串流並輸出一個串流。

tlut2(時間 lut2)濾鏡從單個串流中取得兩個連續的影格。

此濾鏡接受以下參數

c0

設定第一個像素組件表達式

c1

設定第二個像素組件表達式

c2

設定第三個像素組件表達式

c3

設定第四個像素組件表達式,對應於 Alpha 組件

d

d

lut2 濾鏡也支援 framesync 選項。

與每個 c* 選項關聯的確切組件取決於輸入的格式。

與每個 c* 選項關聯的確切組件取決於輸入中的格式。

boxblur

f
h

輸入寬度和高度。

x

x

y

y

bdx

第一個輸入影片位元深度。

bdy

第二個輸入影片位元深度。

所有表達式預設為 "x"。

11.155.1 指令

此濾鏡支援上述所有選項作為 commands,但選項 d 除外。

11.155.2 範例

  • 醒目提示兩個 RGB 影片串流之間的差異
    lut2='ifnot(x-y,0,pow(2,bdx)-1):ifnot(x-y,0,pow(2,bdx)-1):ifnot(x-y,0,pow(2,bdx)-1)'
    
  • 醒目提示兩個 YUV 影片串流之間的差異
    lut2='ifnot(x-y,0,pow(2,bdx)-1):ifnot(x-y,pow(2,bdx-1),pow(2,bdx)-1):ifnot(x-y,pow(2,bdx-1),pow(2,bdx)-1)'
    
  • 顯示兩個影片串流之間的最大差異
    lut2='if(lt(x,y),0,if(gt(x,y),pow(2,bdx)-1,pow(2,bdx-1))):if(lt(x,y),0,if(gt(x,y),pow(2,bdx)-1,pow(2,bdx-1))):if(lt(x,y),0,if(gt(x,y),pow(2,bdx)-1,pow(2,bdx-1)))'
    

11.156 maskedclamp

使用第二個輸入串流和第三個輸入串流鉗制第一個輸入串流。

傳回第一個串流的值,使其介於第二個輸入串流 - undershoot 和第三個輸入串流 + overshoot 之間。

此濾波器還能夠拉伸/壓縮音訊資料以使其與時間戳記匹配,或注入靜音/剪切音訊以使其與時間戳記匹配,執行兩者的組合或兩者都不執行。

undershoot

預設值為 0

overshoot

預設值為 0

planes

設定哪些平面將作為點陣圖處理,未處理的平面將從第一個串流複製。預設值為 0xf,所有平面都將被處理。

11.156.1 指令

此濾鏡支援以上所有選項作為 commands

11.157 maskedmax

使用第二個輸入串流與第一個輸入串流之間的絕對差值以及第三個輸入串流與第一個輸入串流之間的絕對差值,將第二個輸入串流和第三個輸入串流合併到輸出串流中。如果第二個絕對差值大於第一個絕對差值,則選取的值將來自第二個輸入串流,否則來自第三個輸入串流。

此濾波器還能夠拉伸/壓縮音訊資料以使其與時間戳記匹配,或注入靜音/剪切音訊以使其與時間戳記匹配,執行兩者的組合或兩者都不執行。

planes

設定哪些平面將作為點陣圖處理,未處理的平面將從第一個串流複製。預設值為 0xf,所有平面都將被處理。

11.157.1 指令

此濾鏡支援以上所有選項作為 commands

11.158 maskedmerge

使用第三個輸入串流中的每像素權重,將第一個輸入串流與第二個輸入串流合併。

第三個串流像素組件中的值 0 表示第一個串流的像素組件保持不變,而最大值(例如 8 位元影片為 255)表示第二個串流的像素組件保持不變。中間值定義兩個輸入串流的像素組件之間的合併量。

此濾波器還能夠拉伸/壓縮音訊資料以使其與時間戳記匹配,或注入靜音/剪切音訊以使其與時間戳記匹配,執行兩者的組合或兩者都不執行。

planes

設定哪些平面將作為點陣圖處理,未處理的平面將從第一個串流複製。預設值為 0xf,所有平面都將被處理。

11.158.1 指令

此濾鏡支援以上所有選項作為 commands

11.159 maskedmin

使用第二個輸入串流與第一個輸入串流之間的絕對差值以及第三個輸入串流與第一個輸入串流之間的絕對差值,將第二個輸入串流和第三個輸入串流合併到輸出串流中。如果第二個絕對差值小於第一個絕對差值,則選取的值將來自第二個輸入串流,否則來自第三個輸入串流。

此濾波器還能夠拉伸/壓縮音訊資料以使其與時間戳記匹配,或注入靜音/剪切音訊以使其與時間戳記匹配,執行兩者的組合或兩者都不執行。

planes

設定哪些平面將作為點陣圖處理,未處理的平面將從第一個串流複製。預設值為 0xf,所有平面都將被處理。

11.159.1 指令

此濾鏡支援以上所有選項作為 commands

11.160 maskedthreshold

透過比較兩個影片串流的絕對差值與固定閾值來選取像素。

如果第一個和第二個影片串流的像素組件之間的絕對差值等於或低於使用者提供的閾值,則選取第一個影片串流的像素組件,否則選取第二個影片串流的像素組件。

此濾波器還能夠拉伸/壓縮音訊資料以使其與時間戳記匹配,或注入靜音/剪切音訊以使其與時間戳記匹配,執行兩者的組合或兩者都不執行。

threshold

設定從兩個輸入影片串流的絕對差值中選取像素時使用的閾值。

planes

設定哪些平面將作為點陣圖處理,未處理的平面將從第二個串流複製。預設值為 0xf,所有平面都將被處理。

mode

設定濾鏡運作模式。可以是 absdiff。預設值為 abs

11.160.1 指令

此濾鏡支援以上所有選項作為 commands

11.161 maskfun

從輸入影片建立遮罩。

例如,在 tblend 濾鏡之後建立運動遮罩非常有用。

此濾波器還能夠拉伸/壓縮音訊資料以使其與時間戳記匹配,或注入靜音/剪切音訊以使其與時間戳記匹配,執行兩者的組合或兩者都不執行。

low

設定低閾值。任何像素組件低於或等於此值的值都將設定為 0。

high

設定高閾值。任何像素組件高於此值的值都將設定為目前像素格式允許的最大值。

planes

設定要濾鏡的平面,預設情況下,所有可用平面都會被濾鏡。

fill

使用此值填充所有影格像素。

sum

設定影格的最大平均像素值。如果所有像素組件的總和高於此平均值,輸出影格將完全填滿由 fill 選項設定的值。通常與 tblend 濾鏡結合使用時,對於場景變換非常有用。

11.161.1 指令

此濾鏡支援以上所有選項作為 commands

11.162 mcdeint

套用動態補償反交錯。

每個影格需要一個場景作為輸入,因此必須與 yadif=1/3 或同等功能一起使用。

此濾波器還能夠拉伸/壓縮音訊資料以使其與時間戳記匹配,或注入靜音/剪切音訊以使其與時間戳記匹配,執行兩者的組合或兩者都不執行。

mode

設定反交錯模式。

它接受下列其中一個值

fast
medium
slow

使用迭代動態估算

extra_slow

類似 ‘slow’,但使用多個參考影格。

預設值為 ‘fast’。

parity

設定輸入視訊所假設的圖像場景奇偶性。它必須是下列其中一個值

0, tff

假設頂場優先

1, bff

假設底場優先

預設值為 ‘bff’。

qp

設定內部編碼器使用的每個區塊量化參數 (QP)。

較高的值應產生更平滑的動態向量場,但個別向量的最佳化程度較低。預設值為 1。

11.163 median

從由半徑定義的特定矩形中選取中間像素。

此濾波器還能夠拉伸/壓縮音訊資料以使其與時間戳記匹配,或注入靜音/剪切音訊以使其與時間戳記匹配,執行兩者的組合或兩者都不執行。

設定虛擬喇叭的仰角,單位為度。預設值為 0。

設定水平半徑大小。預設值為 1。允許範圍為 1 到 127 的整數。

planes

設定要處理的平面。預設值為 15,即所有可用的平面。

radiusV

設定垂直半徑大小。預設值為 0。允許範圍為 0 到 127 的整數。如果為 0,則將從水平 radius 選項中選取值。

percentile

設定中位數百分位數。預設值為 0.5。預設值 0.5 將始終選取中位數,而 0 將選取最小值,1 將選取最大值。

11.163.1 指令

colorkey

如果指定的表達式無效,則會保持其目前值。

11.164 mergeplanes

從多個視訊串流合併色彩通道組件。

此濾鏡最多接受 4 個輸入串流,並將選定的輸入平面合併到輸出視訊。

此濾波器還能夠拉伸/壓縮音訊資料以使其與時間戳記匹配,或注入靜音/剪切音訊以使其與時間戳記匹配,執行兩者的組合或兩者都不執行。

mapping

設定輸入到輸出平面的映射。預設值為 0

映射指定為點陣圖。它應以十六進制數字的形式指定,如 0xAa[Bb[Cc[Dd]]]。「Aa」描述輸出串流第一個平面的映射。「A」設定要使用的輸入串流編號(從 0 到 3),「a」設定要使用的對應輸入的平面編號(從 0 到 3)。其餘映射類似,「Bb」描述輸出串流第二個平面的映射,「Cc」描述輸出串流第三個平面的映射,「Dd」描述輸出串流第四個平面的映射。

format

設定輸出像素格式。預設值為 yuva444p

map0s
map1s
map2s
map3s

設定輸出第 N 個平面的輸入到輸出串流映射。預設值為 0

map0p
map1p
map2p
map3p

設定輸出第 N 個平面的輸入到輸出平面映射。預設值為 0

11.164.1 範例

  • 將三個相同寬度和高度的灰度視訊串流合併為單個視訊串流
    [a0][a1][a2]mergeplanes=0x001020:yuv444p
    
  • 將第一個 yuv444p 串流和第二個灰度視訊串流合併為 yuva444p 視訊串流
    [a0][a1]mergeplanes=0x00010210:yuva444p
    
  • 在 yuva444p 串流中交換 Y 和 A 平面
    format=yuva444p,mergeplanes=0x03010200:yuva444p
    
  • 在 yuv420p 串流中交換 U 和 V 平面
    format=yuv420p,mergeplanes=0x000201:yuv420p
    
  • 將 rgb24 片段轉換為 yuv444p
    format=rgb24,mergeplanes=0x000102:yuv444p
    

11.165 mestimate

使用區塊匹配演算法估算和匯出動態向量。動態向量儲存在影格邊數據中,供其他濾鏡使用。

此濾波器還能夠拉伸/壓縮音訊資料以使其與時間戳記匹配,或注入靜音/剪切音訊以使其與時間戳記匹配,執行兩者的組合或兩者都不執行。

method

指定動態估算方法。接受下列其中一個值

esa

窮舉搜尋演算法。

tss

三步搜尋演算法。

tdls

二維對數搜尋演算法。

ntss

新三步搜尋演算法。

fss

四步搜尋演算法。

ds

菱形搜尋演算法。

hexbs

基於六邊形的搜尋演算法。

epzs

增強型預測區域搜尋演算法。

umh

不均勻多六邊形搜尋演算法。

預設值為 ‘esa’。

mb_size

巨集區塊大小。預設值 16

search_param

搜尋參數。預設值 7

11.166 midequalizer

使用兩個視訊串流套用中間影像均衡效果。

中間影像均衡調整一對影像,使其具有相同的直方圖,同時盡可能保持其動態範圍。它對於匹配一對立體相機的曝光非常有用。

此濾鏡有兩個輸入和一個輸出,它們必須具有相同的像素格式,但大小可能不同。濾鏡的輸出是第一個輸入,並使用兩個輸入的中間直方圖進行調整。

此濾鏡接受以下選項

planes

設定要處理的平面。預設值為 15,即所有可用的平面。

11.167 minterpolate

使用動態內插將視訊轉換為指定的影格率。

此濾波器還能夠拉伸/壓縮音訊資料以使其與時間戳記匹配,或注入靜音/剪切音訊以使其與時間戳記匹配,執行兩者的組合或兩者都不執行。

fps

指定輸出影格率。這可以是有理數,例如 60000/1001。如果 fps 低於來源 fps,則會丟棄影格。預設值 60

mi_mode

動態內插模式。接受以下值

dup

複製前一個或下一個影格以內插新影格。

blend

混合來源影格。內插影格是前一個和下一個影格的平均值。

mci

動態補償內插。當選取此模式時,以下選項有效

mc_mode

動態補償模式。接受以下值

obmc

重疊區塊動態補償。

aobmc

自適應重疊區塊動態補償。視窗加權係數根據相鄰動態向量的可靠性自適應控制,以減少過度平滑。

預設模式為 ‘obmc’。

me_mode

動態估算模式。接受以下值

bidir

雙向動態估算。為每個來源影格在向前和向後方向上估算動態向量。

bilat

雙邊動態估算。直接為內插影格估算動態向量。

預設模式為 ‘bilat’。

me

用於動態估算的演算法。接受以下值

esa

窮舉搜尋演算法。

tss

三步搜尋演算法。

tdls

二維對數搜尋演算法。

ntss

新三步搜尋演算法。

fss

四步搜尋演算法。

ds

菱形搜尋演算法。

hexbs

基於六邊形的搜尋演算法。

epzs

增強型預測區域搜尋演算法。

umh

不均勻多六邊形搜尋演算法。

預設演算法為 ‘epzs’。

mb_size

巨集區塊大小。預設值 16

search_param

動態估算搜尋參數。預設值 32

vsbmc

啟用可變大小區塊動態補償。動態估算應用於物件邊界處的較小區塊大小,以使其不那麼模糊。預設值為 0(停用)。

scd

場景變換偵測方法。場景變換導致動態向量朝隨機方向。場景變換將內插影格替換為重複的影格。其他模式可能不需要。接受以下值

none

停用場景變換偵測。

fdiff

影格差異。比較對應的像素值,如果滿足 scd_threshold,則偵測到場景變換。

預設方法為 ‘fdiff’。

scd_threshold

場景變換偵測閾值。預設值為 10.

11.168 mix

將多個視訊輸入串流混合成一個視訊串流。

以下是接受選項的描述。

inputs

輸入的數量。如果未指定,則預設為 2。

當輸入串流結束時,用於音量重新正規化的過渡時間,單位為秒。預設值為 2 秒。

將每個輸入視訊串流的權重指定為序列。每個權重以空格分隔。如果權重數量小於 frames 的數量,則最後指定的權重將用於所有剩餘未設定的權重。

scale

指定縮放比例,如果設定,它將與每個權重乘以像素值的總和相乘,以得出最終目標像素值。預設情況下,scale 會自動縮放到權重總和。

planes

planes

duration

指定如何確定串流結束。

longest

最長輸入的持續時間。(預設)

shortest

shortest

first

first

11.168.1 指令

此濾波器支援以下指令

當輸入串流結束時,用於音量重新正規化的過渡時間,單位為秒。預設值為 2 秒。
scale
planes

這會將一個人聲輸入和一個音樂輸入音訊串流混合到單個輸出,其持續時間與最長輸入相同。音樂的權重將為人聲的四分之一,並且輸入未正規化

11.169 monochrome

使用自訂色彩濾鏡將視訊轉換為灰度。

以下是接受選項的描述。

cb

設定色度藍點。允許範圍為 -1 到 1。預設值為 0。

cr

設定色度紅點。允許範圍為 -1 到 1。預設值為 0。

size

設定色彩濾鏡大小。允許範圍為 .1 到 10。預設值為 1。

high

設定高光強度。允許範圍為 0 到 1。預設值為 0。

11.169.1 指令

此濾鏡支援以上所有選項作為 commands

11.170 morpho

此濾鏡允許套用主要的形態學灰度變換、腐蝕和膨脹,並在第二個輸入串流中設定任意結構。

腐蝕膨脹 濾鏡中的樸素實作和較慢的效能不同,當速度至關重要時,應改用 morpho 濾鏡。

以下是接受選項的描述:

mode

設定要套用的形態學變換,可以是

erode
dilate
open
close
gradient
tophat
blackhat

預設值為 erode

planes

設定要濾鏡的平面,預設情況下,除了 alpha 之外的所有平面都會被濾鏡。

structure

設定將從第二個輸入串流處理哪個結構視訊影格,可以是 firstall。預設值為 all

morpho 濾鏡也支援 framesync 選項。

11.170.1 指令

blend

11.171 mpdecimate

丟棄與前一個影格差異不大的影格,以降低影格率。

此濾鏡的主要用途是用於極低位元率編碼(例如,透過撥接數據機串流),但在理論上,它可以用於修復反向電影膠捲轉換不正確的影片。

以下是接受選項的描述。

max

設定可以連續丟棄的最大影格數(如果為正數),或丟棄影格之間的最小間隔(如果為負數)。如果值為 0,則會丟棄影格,而忽略先前循序丟棄的影格數。

預設值為 0。

keep

設定在開始丟棄之前要忽略的最大連續相似影格數。如果值為 0,則會丟棄影格,而忽略先前循序相似的影格數。

預設值為 0。

hi
lo
frac

設定丟棄閾值。

hilo 的值適用於 8x8 像素區塊,並表示實際像素值差異,因此 64 的閾值對應於每個像素 1 個單位的差異,或以不同方式分散在區塊上的相同差異。

如果沒有 8x8 區塊的差異超過 hi 的閾值,且沒有超過 frac 個區塊(1 表示整個影像)的差異超過 lo 的閾值,則該影格是丟棄的候選者。

hi 的預設值為 64*12,lo 的預設值為 64*5,frac 的預設值為 0.33。

11.172 msad

取得兩個輸入視訊之間的 MSAD(平均絕對差總和)。

此濾鏡採用兩個輸入視訊。

為了使此濾鏡正常工作,兩個輸入視訊必須具有相同的解析度和像素格式。此外,它假設兩個輸入具有相同數量的影格,這些影格將逐個比較。

獲得的每個組件、平均值、最小值和最大值 MSAD 會透過日誌系統印出。

濾鏡將每個影格的計算 MSAD 儲存在影格元數據中。

此濾鏡也支援 framesync 選項。

在以下範例中,正在處理的輸入檔案 main.mpg 與參考檔案 ref.mpg 進行比較。

ffmpeg -i main.mpg -i ref.mpg -lavfi msad -f null -

11.173 multiply

將第一個視訊串流像素值與第二個視訊串流像素值相乘。

濾鏡接受以下選項

scale

設定套用於第二個視訊串流的縮放比例。預設值為 1。允許範圍為 09

offset

設定套用於第二個視訊串流的偏移量。預設值為 0.5。允許範圍為 -11

planes

指定將處理輸入視訊串流中的哪些平面。預設情況下,所有平面都會被處理。

11.173.1 指令

blend

11.174 negate

反轉(反相)輸入視訊。

設定柔削波的類型。

在從輸入視訊中選取的彩色背景上繪製十六進制像素值,文字顏色以使其始終可見的方式選取。

設定要反轉的組件。

組件的可用值為

y
u
v
a
r
g
b
negate_alpha

值為 1 時,它會反轉 alpha 組件(如果存在)。預設值為 0。

11.174.1 指令

blend

11.175 nlmeans

使用非局部均值演算法對影格進行去噪。

每個像素都會透過尋找具有相似內容的其他像素來調整。此內容相似性是透過比較其大小為 pxp 的周圍區塊來定義的。區塊在像素周圍 rxr 的區域中搜尋。

請注意,研究區域定義了區塊的中心,這表示某些區塊將由研究區域外部的像素組成。

bm3d

s

設定去噪強度。預設值為 1.0。必須在 [1.0, 30.0] 範圍內。

sn

設定區塊大小。預設值為 7。必須是 [0, 99] 範圍內的奇數。

pc

p 相同,但適用於色度平面。

預設值為 0,表示自動。

r

設定研究大小。預設值為 15。必須是 [0, 99] 範圍內的奇數。

rc

r 相同,但適用於色度平面。

預設值為 0,表示自動。

11.176 nnedi

使用神經網路邊緣導向內插法對視訊進行反交錯。

此濾波器還能夠拉伸/壓縮音訊資料以使其與時間戳記匹配,或注入靜音/剪切音訊以使其與時間戳記匹配,執行兩者的組合或兩者都不執行。

當輸入串流結束時,用於音量重新正規化的過渡時間,單位為秒。預設值為 2 秒。

強制選項,沒有二進制檔案,濾鏡無法運作。目前可以在這裡找到檔案:https://github.com/dubhater/vapoursynth-nnedi3/blob/master/src/nnedi3_weights.bin

deint

設定要反交錯哪些影格,預設值為 all。可以是 allinterlaced

field

設定操作模式。

設定單聲道和反相聲道之間的立體聲基礎。預設值為 0。允許範圍為 -1 到 1。

af

使用影格標誌,兩個場景。

a

使用影格標誌,單個場景。

t

僅使用頂場。

b

僅使用底場。

tf

使用兩個場景,頂場優先。

bf

使用兩個場景,底場優先。

planes

設定要處理哪些平面,預設情況下,濾鏡會處理所有影格。

nsize

設定每個像素周圍局部鄰域的大小,供預測器神經網路使用。

設定單聲道和反相聲道之間的立體聲基礎。預設值為 0。允許範圍為 -1 到 1。

s8x6
s16x6
s32x6
s48x6
s8x4
s16x4
s32x4
nns

設定預測器神經網路中的神經元數量。可以是下列其中之一

n16
n32
n64
n128
n256
qual

控制混合在一起以計算最終輸出值的不同神經網路預測的數量。可以是 fast、default 或 slow

etype

設定預測器中要使用的權重集。可以是下列其中之一

a, abs

經過訓練以最小化絕對誤差的權重

s, mse

經過訓練以最小化均方誤差的權重

pscrn

控制是否使用預篩選器神經網路來決定哪些像素應由預測器神經網路處理,哪些像素可以由簡單的立方內插法處理。預篩選器經過訓練,知道立方內插法是否足以處理像素,或者是否應由預測器神經網路預測。預篩選器神經網路的計算複雜度遠低於預測器神經網路。由於大多數像素都可以由立方內插法處理,因此使用預篩選器通常會導致更快的處理速度。預篩選器非常準確,因此使用它和不使用它之間的差異幾乎總是難以察覺。

設定單聲道和反相聲道之間的立體聲基礎。預設值為 0。允許範圍為 -1 到 1。

none
original
new
new2
new3

預設值為 new

11.176.1 指令

此濾鏡支援與選項相同的 指令,但不包括 weights 選項。

11.177 noformat

強制 libavfilter 不要對下一個濾鏡的輸入使用任何指定的像素格式。

它接受以下參數

pix_fmts

像素格式名稱的「|」分隔清單,例如 pix_fmts=yuv420p|monow|rgb24"。

11.177.1 範例

  • 強制 libavfilter 對 vflip 濾鏡的輸入使用與 yuv420p 不同的格式
    noformat=pix_fmts=yuv420p,vflip
    
  • 將輸入視訊轉換為未包含在清單中的任何格式
    noformat=yuv420p|yuv444p|yuv410p
    

11.178 noise

在視訊輸入影格上新增雜訊。

濾鏡接受以下選項

all_seed
c0_seed
c1_seed
c2_seed
c3_seed

設定特定像素組件或所有像素組件的雜訊種子,如果是 all_seed 的情況。預設值為 123457

all_strength, alls
c0_strength, c0s
c1_strength, c1s
c2_strength, c2s
c3_strength, c3s

設定特定像素組件或所有像素組件的雜訊強度,如果是 all_strength 的情況。預設值為 0。允許範圍為 [0, 100]。

all_flags, allf
c0_flags, c0f
c1_flags, c1f
c2_flags, c2f
c3_flags, c3f

設定像素組件標誌,如果為 all_flags,則設定所有組件的標誌。組件標誌的可用值為

a

平均時間雜訊(更平滑)

p

將隨機雜訊與(半)規則模式混合

t

時間雜訊(影格之間的雜訊模式變化)

u

均勻雜訊(否則為高斯雜訊)

11.178.1 範例

將時間和均勻雜訊新增至輸入視訊

noise=alls=20:allf=t+u

11.179 normalize

正規化 RGB 視訊(又稱直方圖拉伸、對比度拉伸)。請參閱:https://en.wikipedia.org/wiki/Normalization_(image_processing)

對於每個影格的每個通道,濾鏡會計算輸入範圍,並將其線性映射到使用者指定的輸出範圍。輸出範圍預設為從純黑色到純白色的完整動態範圍。

時間平滑可用於輸入範圍,以減少當小的黑暗或明亮物件進入或離開場景時引起的閃爍(亮度快速變化)。這類似於視訊攝影機上的自動曝光(自動增益控制),並且與視訊攝影機一樣,它可能會導致視訊的過度曝光或曝光不足一段時間。

R、G、B 通道可以獨立正規化,這可能會導致一些色彩偏移,或者可以連結在一起作為單個通道,這可以防止色彩偏移。連結正規化保留色調。獨立正規化則不會,因此可用於消除一些色偏。獨立正規化和連結正規化可以以任何比例組合。

正規化濾鏡接受以下選項

blackpt
whitept

定義輸出範圍的色彩。最小輸入值映射到 blackpt。最大輸入值映射到 whitept。預設值分別為黑色和白色。為 blackpt 指定白色,為 whitept 指定黑色將產生色彩反轉的正規化視訊。灰度陰影可用於減少動態範圍(對比度)。在此處指定飽和色彩可以產生一些有趣的效果。

smoothing

用於時間平滑的前一個影格的數量。每個通道的輸入範圍都使用當前影格和 smoothing 前一個影格的滾動平均值進行平滑處理。預設值為 0(無時間平滑)。

independence

控制獨立(色彩偏移)通道正規化與連結(色彩保留)正規化的比例。0.0 完全連結,1.0 完全獨立。預設值為 1.0(完全獨立)。

強度 (strength)

濾鏡的整體強度。1.0 為全強度。0.0 是一個相當昂貴的空操作。預設值為 1.0(全強度)。

11.179.1 指令

此濾鏡支援與選項相同的 指令,但不包括 smoothing 選項。指令接受與對應選項相同的語法。

如果指定的表達式無效,則會保持其目前值。

11.179.2 範例

拉伸視訊對比度以使用完整動態範圍,不進行時間平滑;可能會根據來源內容閃爍

normalize=blackpt=black:whitept=white:smoothing=0

與上述相同,但具有 50 個影格的時間平滑;應減少閃爍,具體取決於來源內容

normalize=blackpt=black:whitept=white:smoothing=50

與上述相同,但具有保留色調的連結通道正規化

normalize=blackpt=black:whitept=white:smoothing=50:independence=0

與上述相同,但強度減半

normalize=blackpt=black:whitept=white:smoothing=50:independence=0:strength=0.5

將最暗的輸入色彩映射為紅色,將最亮的輸入色彩映射為青色

normalize=blackpt=red:whitept=cyan

11.180 null

將視訊來源未經變更地傳遞到輸出。

11.181 ocr

光學字元辨識

此濾鏡使用 Tesseract 進行光學字元辨識。若要啟用此濾鏡的編譯,您需要使用 --enable-libtesseract 配置 FFmpeg。

設定視窗長度,以樣本為單位。預設值為 2048。允許範圍為 32 到 65536。

datapath

設定 Tesseract 資料的路徑。預設值為使用安裝時設定的任何路徑。

language

設定語言,預設值為 "eng"。

whitelist

設定字元白名單。

blacklist

設定字元黑名單。

濾鏡將辨識的文字匯出為影格元數據 lavfi.ocr.text。濾鏡將辨識單字的信賴度匯出為影格元數據 lavfi.ocr.confidence

11.182 ocv

使用 libopencv 套用視訊變換。

若要啟用此濾鏡,請安裝 libopencv 程式庫和標頭,並使用 --enable-libopencv 配置 FFmpeg。

它接受以下參數

filter_name

要套用的 libopencv 濾鏡的名稱。

filter_params

要傳遞給 libopencv 濾鏡的參數。如果未指定,則假設為預設值。

請參閱官方 libopencv 文件以取得更精確的資訊:http://docs.opencv.org/master/modules/imgproc/doc/filtering.html

支援多種 libopencv 濾鏡;請參閱以下小節。

11.182.1 擴張

透過使用特定的結構元素來膨脹影像。它對應於 libopencv 函數 cvDilate

它接受參數:struct_el|nb_iterations

struct_el 代表結構元素,其語法為:colsxrows+anchor_xxanchor_y/shape

colsrows 代表結構元素的欄數和列數,anchor_xanchor_y 代表錨點,shape 代表結構元素的形狀。shape 必須是 "rect"、"cross"、"ellipse" 或 "custom"。

如果 shape 的值為 "custom",則必須後跟 "=filename" 形式的字串。名稱為 filename 的檔案假設代表二進制影像,每個可列印的字元對應於一個亮像素。當使用自訂 shape 時,colsrows 會被忽略,而是假設為讀取檔案的欄數和列數。

struct_el 的預設值為 "3x3+0x0/rect"。

nb_iterations 指定變換套用於影像的次數,預設值為 1。

一些範例

# Use the default values
ocv=dilate

# Dilate using a structuring element with a 5x5 cross, iterating two times
ocv=filter_name=dilate:filter_params=5x5+2x2/cross|2

# Read the shape from the file diamond.shape, iterating two times.
# The file diamond.shape may contain a pattern of characters like this
#   *
#  ***
# *****
#  ***
#   *
# The specified columns and rows are ignored
# but the anchor point coordinates are not
ocv=dilate:0x0+2x2/custom=diamond.shape|2

11.182.2 侵蝕

透過使用特定的結構元素來腐蝕影像。它對應於 libopencv 函數 cvErode

它接受參數:struct_el:nb_iterations,其語法和語意與 dilate 濾鏡相同。

11.182.3 平滑化

平滑輸入視訊。

濾鏡採用以下參數:type|param1|param2|param3|param4

type 是要套用的平滑濾鏡的類型,並且必須是以下值之一:"blur"、"blur_no_scale"、"median"、"gaussian" 或 "bilateral"。預設值為 "gaussian"。

param1param2param3param4 的含義取決於平滑類型。param1param2 接受整數正值或 0。param3param4 接受浮點值。

param1 的預設值為 3。其他參數的預設值為 0。

這些參數對應於指派給 libopencv 函數 cvSmooth 的參數。

11.183 oscilloscope

2D 視訊示波器。

用於測量空間脈衝、步階響應、色度延遲等。

它接受以下參數

x

設定示波器中心 x 位置。

y

設定示波器中心 y 位置。

s

設定示波器大小,相對於影格對角線。

設定傳輸表達式。

設定示波器傾斜/旋轉。

o

設定追蹤不透明度。

tx

設定追蹤中心 x 位置。

ty

設定追蹤中心 y 位置。

tw

設定追蹤寬度,相對於影格寬度。

th

設定追蹤高度,相對於影格高度。

c

設定要追蹤的組件。預設情況下,它會追蹤前三個組件。

w

繪製追蹤網格。預設情況下為啟用。

st

繪製一些統計資訊。預設情況下為啟用。

sc

繪製示波器。預設情況下為啟用。

11.183.1 指令

colorkey

如果指定的表達式無效,則會保持其目前值。

11.183.2 範例

  • 檢查視訊影格完整的第一列。
    oscilloscope=x=0.5:y=0:s=1
    
  • 檢查視訊影格完整的最後一列。
    oscilloscope=x=0.5:y=1:s=1
    
  • 檢查高度為 1080 的視訊影格的完整第 5 行。
    oscilloscope=x=0.5:y=5/1080:s=1
    
  • 檢查視訊影格完整的最後一欄。
    oscilloscope=x=1:y=0.5:s=1:t=1
    

11.184 overlay

將一個視訊覆蓋在另一個視訊之上。

它接受兩個輸入並具有一個輸出。第一個輸入是「主要」視訊,第二個輸入覆蓋在該視訊之上。

它接受以下參數

以下是接受選項的描述。

x
y

設定主要視訊上覆蓋視訊的 x 和 y 坐標的表達式。兩個表達式的預設值均為 "0"。如果表達式無效,則會將其設定為一個很大的值(表示覆蓋將不會顯示在輸出可見區域內)。

eof_action

請參閱 framesync

eval

設定何時評估 xy 的表達式。

設定叢發融合,以視窗大小的百分比表示。允許範圍為 010。預設值為 2。如果偵測為雜訊的任何兩個樣本之間的間隔小於此值,則這兩個樣本之間的任何樣本也將被偵測為雜訊。

init

僅在濾鏡初始化期間或處理命令時評估表示式一次

frame

為每個傳入的影格評估表示式

預設值為 ‘frame’。

shortest

請參閱 framesync

format

設定輸出視訊的格式。

設定叢發融合,以視窗大小的百分比表示。允許範圍為 010。預設值為 2。如果偵測為雜訊的任何兩個樣本之間的間隔小於此值,則這兩個樣本之間的任何樣本也將被偵測為雜訊。

yuv420

強制 YUV 4:2:0 8 位元平面輸出

yuv420p10

強制 YUV 4:2:0 10 位元平面輸出

yuv422

強制 YUV 4:2:2 8 位元平面輸出

yuv422p10

強制 YUV 4:2:2 10 位元平面輸出

yuv444

強制 YUV 4:4:4 8 位元平面輸出

yuv444p10

強制 YUV 4:4:4 10 位元平面輸出

rgb

強制 RGB 8 位元封裝輸出

gbrp

強制 RGB 8 位元平面輸出

auto

自動選取格式

預設值為 ‘yuv420’。

repeatlast

請參閱 framesync

range, r

設定覆蓋視訊的 alpha 格式,它可以是 straightpremultiplied。預設值為 straight

xy 表達式可以包含以下參數。

main_w, W
main_h, H

主要輸入寬度和高度。

overlay_w, w
overlay_h, h

覆蓋輸入寬度和高度。

x
y

xy 的計算值。它們是為每個新影格評估的。

hsub
vsub

輸出格式的水平和垂直色度子採樣值。例如,對於像素格式 "yuv422p",hsub 為 2,vsub 為 1。

n

標記映射 libfreetype 支援的相應標記,並且是以下值的組合

pos

輸入影格在檔案中的位置,如果未知,則為 NAN;已棄用,請勿使用

設定傳輸表達式。

時間戳記,以秒為單位表示。如果輸入時間戳記未知,則為 NAN。

此濾鏡也支援 framesync 選項。

請注意,nt 變數僅在每個影格完成評估時可用,並且當 eval 設定為 ‘init’ 時,將評估為 NAN。

請注意,影格是從每個輸入視訊中按時間戳記順序取得的,因此,如果它們的初始時間戳記不同,最好將兩個輸入都透過 setpts=PTS-STARTPTS 濾鏡傳遞,以使它們以相同的零時間戳記開始,如 movie 濾鏡的範例所示。

您可以將更多覆蓋鏈接在一起,但您應該測試這種方法的效率。

11.184.1 指令

此濾波器支援以下指令

x
y

修改覆蓋輸入的 x 和 y。指令接受與對應選項相同的語法。

如果指定的表達式無效,則會保持其目前值。

11.184.2 範例

  • 將覆蓋繪製在距主要視訊右下角 10 像素的位置
    overlay=main_w-overlay_w-10:main_h-overlay_h-10
    

    使用具名選項,上述範例變為

    overlay=x=main_w-overlay_w-10:y=main_h-overlay_h-10
    
  • 使用 ffmpeg 工具和 -filter_complex 選項,在輸入的左下角插入透明 PNG 標誌
    ffmpeg -i input -i logo -filter_complex 'overlay=10:main_h-overlay_h-10' output
    
  • 使用 ffmpeg 工具插入 2 個不同的透明 PNG 標誌(第二個標誌位於右下角)
    ffmpeg -i input -i logo1 -i logo2 -filter_complex 'overlay=x=10:y=H-h-10,overlay=x=W-w-10:y=H-h-10' output
    
  • 在主要視訊之上新增透明色彩圖層;WxH 必須指定覆蓋濾鏡主要輸入的大小
    color=color=red@.3:size=WxH [over]; [in][over] overlay [out]
    
  • 使用 ffplay 工具並排播放原始視訊和已濾鏡版本(此處使用 deshake 濾鏡)
    ffplay input.avi -vf 'split[a][b]; [a]pad=iw*2:ih[src]; [b]deshake[filt]; [src][filt]overlay=w'
    

    上述指令與以下指令相同

    ffplay input.avi -vf 'split[b], pad=iw*2[src], [b]deshake, [src]overlay=w'
    
  • 製作一個從螢幕左側滑動到右上方部分並從時間 2 開始出現的滑動覆蓋
    overlay=x='if(gte(t,2), -w+(t-2)*20, NAN)':y=0
    
  • 將兩個輸入視訊並排放置來組成輸出
    ffmpeg -i left.avi -i right.avi -filter_complex "
    nullsrc=size=200x100 [background];
    [0:v] setpts=PTS-STARTPTS, scale=100x100 [left];
    [1:v] setpts=PTS-STARTPTS, scale=100x100 [right];
    [background][left]       overlay=shortest=1       [background+left];
    [background+left][right] overlay=shortest=1:x=100 [left+right]
    "
    
  • 透過將 delogo 濾鏡套用於某個區段來遮罩視訊的 10-20 秒
    ffmpeg -i test.avi -codec:v:0 wmv2 -ar 11025 -b:v 9000k
    -vf '[in]split[split_main][split_delogo];[split_delogo]trim=start=360:end=371,delogo=0:0:640:480[delogoed];[split_main][delogoed]overlay=eof_action=pass[out]'
    masked.avi
    
  • 以串聯方式鏈接多個覆蓋
    nullsrc=s=200x200 [bg];
    testsrc=s=100x100, split=4 [in0][in1][in2][in3];
    [in0] lutrgb=r=0, [bg]   overlay=0:0     [mid0];
    [in1] lutrgb=g=0, [mid0] overlay=100:0   [mid1];
    [in2] lutrgb=b=0, [mid1] overlay=0:100   [mid2];
    [in3] null,       [mid2] overlay=100:100 [out0]
    

11.185 overlay_cuda

將一個視訊覆蓋在另一個視訊之上。

這是 overlay 濾鏡的 CUDA 變體。它僅接受 CUDA 影格。底層輸入像素格式必須匹配。

它接受兩個輸入並具有一個輸出。第一個輸入是「主要」視訊,第二個輸入覆蓋在該視訊之上。

它接受以下參數

x
y

設定主要視訊上覆蓋視訊的 x 和 y 坐標的表達式。

它們可以包含以下參數

main_w, W
main_h, H

主要輸入寬度和高度。

overlay_w, w
overlay_h, h

覆蓋輸入寬度和高度。

x
y

xy 的計算值。它們是為每個新影格評估的。

n

主要輸入影格的序數索引,從 0 開始。

pos

主要輸入影格檔案中的位元組偏移位置,如果未知,則為 NAN。已棄用,請勿使用。

設定傳輸表達式。

主要輸入影格的時間戳記,以秒為單位表示,如果未知,則為 NAN。

兩個表達式的預設值均為 "0"。

eval

設定何時評估 xy 的表達式。

設定叢發融合,以視窗大小的百分比表示。允許範圍為 010。預設值為 2。如果偵測為雜訊的任何兩個樣本之間的間隔小於此值,則這兩個樣本之間的任何樣本也將被偵測為雜訊。

init

在濾鏡初始化期間或處理指令時評估表達式一次。

frame

為每個傳入影格評估表達式

預設值為 frame

eof_action

請參閱 framesync

shortest

請參閱 framesync

repeatlast

請參閱 framesync

此濾鏡也支援 framesync 選項。

11.186 owdenoise

套用過完備小波去噪器。

濾鏡接受以下選項

深度 (depth)

設定深度。

較大的深度值將更多地對低頻組件進行去噪,但會減慢濾鏡速度。

必須是 8-16 範圍內的整數,預設值為 8

luma_strength, ls

設定亮度強度。

必須是 0-1000 範圍內的雙精度值,預設值為 1.0

chroma_strength, cs

設定色度強度。

必須是 0-1000 範圍內的雙精度值,預設值為 1.0

11.187 pad

將填充新增至輸入影像,並將原始輸入放置在提供的 xy 坐標處。

它接受以下參數

width, w
超出範圍的像素將被鏡像像素替換。

指定輸出影像大小的表達式,並新增填充。如果 widthheight 的值為 0,則輸出將使用對應的輸入大小。

width 表達式可以參考 height 表達式設定的值,反之亦然。

widthheight 的預設值為 0。

x
y

指定在填充區域內放置輸入影像的偏移量,相對於輸出影像的頂部/左側邊框。

x 表達式可以參考 y 表達式設定的值,反之亦然。

xy 的預設值為 0。

如果 xy 評估為負數,則會變更它們,使輸入影像在填充區域中居中。

color

指定填充區域的色彩。有關此選項的語法,請查看 ffmpeg-utils 手冊中的 "(ffmpeg-utils)「Color」章節"

color 的預設值為 "black"。

eval

指定何時評估 widthheightxy 表達式。

設定叢發融合,以視窗大小的百分比表示。允許範圍為 010。預設值為 2。如果偵測為雜訊的任何兩個樣本之間的間隔小於此值,則這兩個樣本之間的任何樣本也將被偵測為雜訊。

init

僅在濾鏡初始化期間或處理指令時評估表達式一次。

frame

為每個傳入的影格評估表示式。

預設值為 ‘init’。

aspect

填充到縱橫比而不是解析度。

widthheightxy 選項的值是包含以下常數的表達式

in_w
in_h

輸入視訊寬度和高度。

iw
ih

這些與 in_win_h 相同。

out_w
out_h

輸出寬度和高度(填充區域的大小),如 widthheight 表達式所指定。

ow
oh

這些與 out_wout_h 相同。

x
y

x 和 y 偏移量,如 xy 表達式所指定,如果尚未指定,則為 NAN。

a

iw / ih 相同

sar

輸入樣本縱橫比

dar

輸入顯示縱橫比,它與 (iw / ih) * sar 相同

hsub
vsub

水平和垂直色度子採樣值。例如,對於像素格式 "yuv422p",hsub 為 2,vsub 為 1。

11.187.1 範例

  • 使用色彩 "violet" 將填充新增至輸入視訊。輸出視訊大小為 640x480,輸入視訊的左上角位於第 0 欄、第 40 列
    pad=640:480:0:40:violet
    

    上述範例等效於以下指令

    pad=width=640:height=480:x=0:y=40:color=violet
    
  • 填充輸入以取得尺寸增加 3/2 的輸出,並將輸入視訊放置在填充區域的中心
    pad="3/2*iw:3/2*ih:(ow-iw)/2:(oh-ih)/2"
    
  • 填充輸入以取得大小等於輸入寬度和高度之間最大值的正方形輸出,並將輸入視訊放置在填充區域的中心
    pad="max(iw\,ih):ow:(ow-iw)/2:(oh-ih)/2"
    
  • 填充輸入以取得 16:9 的最終寬高比
    pad="ih*16/9:ih:(ow-iw)/2:(oh-ih)/2"
    
  • 在變形寬螢幕視訊的情況下,為了正確設定輸出顯示縱橫比,必須在表達式中使用 sar,根據以下關係
    (ih * X / ih) * sar = output_dar
    X = output_dar / sar
    

    因此,先前的範例需要修改為

    pad="ih*16/9/sar:ih:(ow-iw)/2:(oh-ih)/2"
    
  • 將輸出大小加倍,並將輸入視訊放置在輸出填充區域的右下角
    pad="2*iw:2*ih:ow-iw:oh-ih"
    

11.188 palettegen

為整個視訊串流產生一個調色盤。

設定視窗長度,以樣本為單位。預設值為 2048。允許範圍為 32 到 65536。

max_colors

設定調色盤中要量化的最大色彩數。注意:調色盤仍將包含 256 種色彩;未使用的調色盤項目將為黑色。

reserve_transparent

建立最多 255 種色彩的調色盤,並保留最後一種用於透明度。保留透明度色彩對於 GIF 優化非常有用。如果未設定,則調色盤中的最大色彩數為 256。您可能希望為獨立影像停用此選項。預設情況下設定。

transparency_color

設定將用作透明度背景的色彩。

stats_mode

設定統計模式。

設定叢發融合,以視窗大小的百分比表示。允許範圍為 010。預設值為 2。如果偵測為雜訊的任何兩個樣本之間的間隔小於此值,則這兩個樣本之間的任何樣本也將被偵測為雜訊。

full

計算完整影格直方圖。

diff

僅針對與前一個影格不同的部分計算直方圖。如果背景是靜態的,這可能與更重視輸入的移動部分有關。

single

為每個影格計算新的直方圖。

預設值為 full

濾鏡還匯出影格元數據 lavfi.color_quant_ratio (nb_color_in / nb_color_out),您可以使用它來評估調色盤的色彩量化程度。此資訊在 info 日誌層級也可见。

11.188.1 範例

  • 使用 ffmpeg 產生給定視訊的代表性調色盤
    ffmpeg -i input.mkv -vf palettegen palette.png
    

11.189 paletteuse

使用調色盤來降採樣輸入視訊串流。

濾鏡採用兩個輸入:一個視訊串流和一個調色盤。調色盤必須是 256 像素的影像。

設定視窗長度,以樣本為單位。預設值為 2048。允許範圍為 32 到 65536。

dither

選取抖動模式。可用的演算法為

bayer

有序 8x8 拜耳抖動(確定性)

heckbert

Paul Heckbert 在 1982 年定義的抖動(簡單的錯誤擴散)。注意:此抖動有時被認為是「錯誤的」,並且作為參考包含在內。

floyd_steinberg

Floyd 和 Steingberg 抖動(錯誤擴散)

sierra2

Frankie Sierra 抖動 v2(錯誤擴散)

sierra2_4a

Frankie Sierra 抖動 v2 "Lite"(錯誤擴散)

sierra3

Frankie Sierra 抖動 v3(錯誤擴散)

burkes

Burkes 抖動(錯誤擴散)

atkinson

Apple Computer 的 Bill Atkinson 的 Atkinson 抖動(錯誤擴散)

none

停用抖動。

預設值為 sierra2_4a

bayer_scale

當選取 bayer 抖動時,此選項定義圖案的縮放比例(交叉影線圖案的可見程度)。低值表示圖案更可見以減少條帶,而高值表示圖案不太可見,但會以更多條帶為代價。

選項必須是 [0,5] 範圍內的整數值。預設值為 2

diff_mode

如果設定,則定義要處理的區域

rectangle

僅將重新處理變更的矩形。這類似於 GIF 裁剪/偏移壓縮機制。如果只有影像的一部分正在變更,則此選項對於速度可能很有用,並且具有諸如將錯誤擴散 dither 的範圍限制為界定移動場景的矩形之類的用例(如果場景沒有太大變化,則會導致更具確定性的輸出,並因此減少移動雜訊並改善 GIF 壓縮)。

預設值為 none

new

為每個輸出影格採用新的調色盤。

alpha_threshold

設定透明度的 alpha 閾值。高於此閾值的 Alpha 值將被視為完全不透明,而低於此閾值的 Alpha 值將被視為完全透明。

選項必須是 [0,255] 範圍內的整數值。預設值為 128

11.189.1 範例

  • 使用調色盤(例如使用 palettegen 產生)來使用 ffmpeg 編碼 GIF
    ffmpeg -i input.mkv -i palette.png -lavfi paletteuse output.gif
    

11.190 perspective

校正未垂直於螢幕記錄的視訊的透視。

將最後設定的延遲用於所有剩餘聲道。預設為停用。如果啟用此選項,則會變更選項 delays 的解讀方式。

x0
y0
x1
y1
x2
y2
x3
y3

設定左上角、右上角、左下角和右下角的坐標表達式。預設值為 0:0:W:0:0:H:W:H,透視將保持不變。如果 sense 選項設定為 source,則指定的點將傳送到目的地的角落。如果 sense 選項設定為 destination,則來源的角落將傳送到指定的坐標。

blend

w
h

視訊影格的寬度和高度。

in

輸入影格計數。

on

輸出影格計數。

interpolation

設定透視校正的內插法。

設定叢發融合,以視窗大小的百分比表示。允許範圍為 010。預設值為 2。如果偵測為雜訊的任何兩個樣本之間的間隔小於此值,則這兩個樣本之間的任何樣本也將被偵測為雜訊。

linear
cubic

預設值為 ‘linear’。

sense

設定坐標選項的解譯。

設定叢發融合,以視窗大小的百分比表示。允許範圍為 010。預設值為 2。如果偵測為雜訊的任何兩個樣本之間的間隔小於此值,則這兩個樣本之間的任何樣本也將被偵測為雜訊。

0, source

將給定坐標指定的來源點傳送到目的地的角落。

1, destination

將來源的角落傳送到給定坐標指定的目的地點。

預設值為 ‘source’。

eval

設定何時評估坐標 x0,y0,...x3,y3 的表達式。

設定叢發融合,以視窗大小的百分比表示。允許範圍為 010。預設值為 2。如果偵測為雜訊的任何兩個樣本之間的間隔小於此值,則這兩個樣本之間的任何樣本也將被偵測為雜訊。

init

僅在濾鏡初始化期間或處理命令時評估表示式一次

frame

為每個傳入的影格評估表示式

預設值為 ‘init’。

11.191 phase

將交錯視訊延遲一個場景時間,以便場景順序變更。

預期用途是修復以與電影到視訊傳輸相反的場景順序捕獲的 PAL 電影。

將最後設定的延遲用於所有剩餘聲道。預設為停用。如果啟用此選項,則會變更選項 delays 的解讀方式。

mode

設定相位模式。

設定叢發融合,以視窗大小的百分比表示。允許範圍為 010。預設值為 2。如果偵測為雜訊的任何兩個樣本之間的間隔小於此值,則這兩個樣本之間的任何樣本也將被偵測為雜訊。

t

捕獲場景順序頂場優先,傳輸底場優先。濾鏡將延遲底場。

b

捕獲場景順序底場優先,傳輸頂場優先。濾鏡將延遲頂場。

p

以相同的場景順序捕獲和傳輸。此模式僅為了記錄其他選項而存在,但如果您實際選取它,濾鏡將忠實地不做任何事情。

a

捕獲場景順序由場景標誌自動確定,傳輸相反。濾鏡根據影格的場景標誌在 ‘t’ 和 ‘b’ 模式之間選取。如果沒有場景資訊可用,則此模式的工作方式與 ‘u’ 完全相同。

u

捕獲未知或變更,傳輸相反。濾鏡透過分析影像並選取在場景之間產生最佳匹配的替代方案,在影格的 ‘t’ 和 ‘b’ 之間選取。

T

捕獲頂場優先,傳輸未知或變更。濾鏡使用影像分析在 ‘t’ 和 ‘p’ 之間選取。

B

捕獲底場優先,傳輸未知或變更。濾鏡使用影像分析在 ‘b’ 和 ‘p’ 之間選取。

A

捕獲由場景標誌確定,傳輸未知或變更。濾鏡使用場景標誌和影像分析在 ‘t’、‘b’ 和 ‘p’ 之間選取。如果沒有場景資訊可用,則此模式的工作方式與 ‘U’ 完全相同。這是預設模式。

U

捕獲和傳輸均未知或變更。濾鏡僅使用影像分析在 ‘t’、‘b’ 和 ‘p’ 之間選取。

11.191.1 指令

此濾鏡支援以上所有選項作為 commands

11.192 photosensitivity

減少視訊中的各種閃爍,以協助癲癇症使用者。

設定視窗長度,以樣本為單位。預設值為 2048。允許範圍為 32 到 65536。

frames, f

設定濾鏡時要使用的影格數。預設值為 30。

設定視窗重疊,以視窗大小的百分比表示。允許範圍為從 5095。預設值為 75%。將此設定為非常高的值會增加脈衝雜訊移除,但會使整個過程慢得多。

設定偵測閾值因子。預設值為 1。較低的值更嚴格。

skip

設定取樣影格時要跳過的像素數。預設值為 1。允許範圍為 1 到 1024。

size

保持影格不變。預設情況下為停用。

11.193 pixdesctest

像素格式描述符號測試濾鏡,主要用於內部測試。輸出視訊應與輸入視訊相同。

例如

format=monow, pixdesctest

可用於測試 monowhite 像素格式描述符號定義。

11.194 pixelize

對視訊串流套用像素化效果。

濾鏡接受以下選項

width, w
超出範圍的像素將被鏡像像素替換。

設定將用於像素化的區塊尺寸。預設值為 16

設定空間亮度閾值。較低的值會增加交叉亮度的減少。

設定使用的像素化模式。

analyze

avg
min
max

預設值為 avg

planes, p

設定要濾鏡的平面。預設值為濾鏡所有平面。

11.194.1 指令

此濾鏡支援所有選項作為 指令

11.195 pixscope

顯示色彩通道的樣本值。主要用於檢查色彩和層級。支援的最小解析度為 640x480。

濾鏡接受以下選項

x

設定示波器 X 位置,X 軸上的相對偏移量。

y

設定示波器 Y 位置,Y 軸上的相對偏移量。

f

設定示波器寬度。

h

設定示波器高度。

o

設定視窗不透明度。此視窗還包含有關像素區域的統計資訊。

wx

設定視窗 X 位置,X 軸上的相對偏移量。

wy

設定視窗 Y 位置,Y 軸上的相對偏移量。

11.195.1 指令

blend

11.196 pp

使用 libpostproc 啟用指定的後處理子濾鏡鏈。此程式庫應透過 GPL 建置 (--enable-gpl) 自動選取。子濾鏡必須以 ‘/’ 分隔,並且可以透過在前面加上 ‘-’ 來停用。每個子濾鏡和某些選項都有一個短名稱和一個長名稱,可以互換使用,即 dr/dering 是相同的。

濾鏡接受以下選項

subfilters

設定後處理子濾鏡字串。

所有子濾鏡共用決定其範圍的通用選項

a/autoq

遵循此子濾鏡的品質指令。

c/chrom

也執行色度濾鏡(預設)。

y/nochrom

僅執行亮度濾鏡(無色度)。

n/noluma

僅執行色度濾鏡(無亮度)。

這些選項可以附加在子濾鏡名稱之後,以 ‘|’ 分隔。

可用的子濾鏡為

hb/hdeblock[|difference[|flatness]]

水平去區塊濾鏡

difference

差異因子,較高的值表示更多的去區塊(預設值:32)。

param

平坦度閾值,較低的值表示更多的去區塊(預設值:39)。

vb/vdeblock[|difference[|flatness]]

垂直去區塊濾鏡

difference

差異因子,較高的值表示更多的去區塊(預設值:32)。

param

平坦度閾值,較低的值表示更多的去區塊(預設值:39)。

ha/hadeblock[|difference[|flatness]]

精確水平去區塊濾鏡

difference

差異因子,較高的值表示更多的去區塊(預設值:32)。

param

平坦度閾值,較低的值表示更多的去區塊(預設值:39)。

va/vadeblock[|difference[|flatness]]

精確垂直去區塊濾鏡

difference

差異因子,較高的值表示更多的去區塊(預設值:32)。

param

平坦度閾值,較低的值表示更多的去區塊(預設值:39)。

水平和垂直去區塊濾鏡共用差異和平坦度值,因此您無法設定不同的水平和垂直閾值。

h1/x1hdeblock

實驗性水平去區塊濾鏡

v1/x1vdeblock

實驗性垂直去區塊濾鏡

dr/dering

去環狀效應濾鏡

tn/tmpnoise[|threshold1[|threshold2[|threshold3]]], 時間雜訊降低器
設定執行除法時的雜訊。預設值為 0.0000001。當寬度和高度不相同且不是 2 的冪,或者卷積之前的串流有雜訊時很有用。

較大 -> 更強的濾鏡

deconvolve 濾鏡也支援 framesync 選項。

較大 -> 更強的濾鏡

減少視訊中的交叉亮度(點爬行)和交叉顏色(彩虹)。

較大 -> 更強的濾鏡

al/autolevels[:f/fullyrange], 自動亮度/對比度校正
f/fullyrange

將亮度拉伸到 0-255

lb/linblenddeint

線性混合反交錯濾鏡,透過使用 (1 2 1) 濾鏡濾鏡所有線條來對給定區塊進行反交錯。

li/linipoldeint

線性內插反交錯濾鏡,透過線性內插每隔一行來對給定區塊進行反交錯。

ci/cubicipoldeint

立方內插反交錯濾鏡,透過立方內插每隔一行來對給定區塊進行反交錯。

md/mediandeint

中值反交錯濾鏡,透過對每隔一行套用中值濾鏡來對給定區塊進行反交錯。

fd/ffmpegdeint

FFmpeg 反交錯濾鏡,透過使用 (-1 4 2 4 -1) 濾鏡濾鏡每隔一行來對給定區塊進行反交錯。

l5/lowpass5

垂直套用的 FIR 低通反交錯濾鏡,透過使用 (-1 2 6 2 -1) 濾鏡濾鏡所有線條來對給定區塊進行反交錯。

fq/forceQuant[|quantizer]

使用您指定的常數量化器覆寫來自輸入的量化器表。

quantizer

要使用的量化器

de/default

預設 pp 濾鏡組合 (hb|a,vb|a,dr|a)

fa/fast

快速 pp 濾鏡組合 (h1|a,v1|a,dr|a)

此濾鏡應放置在任何可能產生次常態數的濾鏡之前。

高品質 pp 濾鏡組合 (ha|a|128|7,va|a,dr|a)

11.196.1 範例

  • 套用水平和垂直去區塊、去環狀效應和自動亮度/對比度
    pp=hb/vb/dr/al
    
  • 套用預設濾鏡,但不進行亮度/對比度校正
    pp=de/-al
    
  • 套用預設濾鏡和時間去噪器
    pp=default/tmpnoise|1|2|3
    
  • 僅在亮度上套用去區塊,並根據可用的 CPU 時間自動開啟或關閉垂直去區塊
    pp=hb|y/vb|a
    

11.197 pp7

套用後處理濾鏡 7。它是 spp 濾鏡的變體,類似於 spp = 6,具有 7 點 DCT,其中僅在 IDCT 後使用中心樣本。

濾鏡接受以下選項

qp

強制使用常數量化參數。它接受 0 到 63 範圍內的整數。如果未設定,濾鏡將使用來自視訊串流的 QP(如果可用)。

mode

設定閾值模式。可用的模式為

hard

設定硬閾值。

soft

設定軟閾值(去環狀效應更好,但可能更模糊)。

medium

設定中等閾值(良好結果,預設)。

11.198 premultiply

使用第二個串流的第一個平面作為 alpha,將 alpha 預乘效果套用於輸入視訊串流。

兩個串流必須具有相同的尺寸和相同的像素格式。

stages

planes

設定將處理哪些平面,未處理的平面將被複製。預設值為 0xf,所有平面都將被處理。

inplace

不需要第二個輸入進行處理,而是使用來自輸入串流的 alpha 平面。

11.199 prewitt

將 prewitt 運算子套用於輸入視訊串流。

stages

planes

設定將處理哪些平面,未處理的平面將被複製。預設值為 0xf,所有平面都將被處理。

scale

設定將與濾鏡結果相乘的值。

delta

設定將新增到濾鏡結果的值。

11.199.1 指令

此濾鏡支援以上所有選項作為 commands

11.200 pseudocolor

使用偽色彩變更視訊中的影格色彩。

此濾波器還能夠拉伸/壓縮音訊資料以使其與時間戳記匹配,或注入靜音/剪切音訊以使其與時間戳記匹配,執行兩者的組合或兩者都不執行。

c0

設定像素第一個組件表達式

c1

設定像素第二個組件表達式

c2

設定像素第三個組件表達式

c3

設定像素第四個組件表達式,對應於 alpha 組件

index, i

設定要用作變更色彩基礎的組件

preset, p

選取內建 LUT 之一。預設情況下設定為 none。

可用的 LUT

magma
inferno
plasma
viridis
turbo
cividis
range1
range2
shadows
highlights
solar
nominal
preferred
total
spectral
cool
heat
fiery
blues
green
helix
color

設定輸出色彩的不透明度。允許範圍為 0 到 1。預設值設定為 1。

每個表達式選項都指定用於計算對應像素組件值的查找表的表達式。

val

f
h

輸入寬度和高度。

val

像素組件的輸入值。

ymin, umin, vmin, amin

允許的最小組件值。

ymax, umax, vmax, amax

允許的最大組件值。

所有表達式的預設值均為 "val"。

11.200.1 指令

此濾鏡支援以上所有選項作為 commands

11.200.2 範例

  • 將過高的亮度值變更為漸層
    pseudocolor="'if(between(val,ymax,amax),lerp(ymin,ymax,(val-ymax)/(amax-ymax)),-1):if(between(val,ymax,amax),lerp(umax,umin,(val-ymax)/(amax-ymax)),-1):if(between(val,ymax,amax),lerp(vmin,vmax,(val-ymax)/(amax-ymax)),-1):-1'"
    

11.201 psnr

取得兩個輸入視訊之間的平均值、最大值和最小值 PSNR(峰值訊噪比)。

此濾鏡輸入兩個輸入視訊,第一個輸入被視為「主要」來源,並未經變更地傳遞到輸出。第二個輸入用作計算 PSNR 的「參考」視訊。

兩個視訊輸入必須具有相同的解析度和像素格式,此濾鏡才能正常運作。此外,它假設兩個輸入具有相同的影格數,這些影格會逐一比較。

獲得的平均 PSNR 會透過日誌系統印出。

濾鏡儲存每個影格的累積 MSE(均方誤差),並且在處理結束時,它會在所有影格之間平均分配,並套用以下公式以獲得 PSNR

PSNR = 10*log10(MAX^2/MSE)

其中 MAX 是影像每個組件的最大值的平均值。

接受的參數說明如下。

stats_file, f

如果指定,濾鏡將使用具名檔案來儲存每個個別影格的 PSNR。當檔案名稱等於 "-" 時,數據將傳送到標準輸出。

stats_version

指定要使用的統計檔案格式的版本。每個格式的詳細資訊都寫在下面。預設值為 1。

stats_add_max

決定是否將最大值輸出到統計日誌。預設值為 0。需要 stats_version >= 2。如果設定此值且 stats_version < 2,則濾鏡將傳回錯誤。

此濾鏡也支援 framesync 選項。

如果選取 stats_file,則印出的檔案包含每個比較的影格對的 key:value 形式的鍵/值對序列。

如果指定大於 1 的 stats_version,則標頭行會在每個影格對統計資訊清單之前,鍵值對遵循具有以下參數的影格格式

psnr_log_version

日誌檔案格式的版本。將與 stats_version 匹配。

fields

以逗號分隔的日誌中包含的每個影格對參數清單。

以下是每個顯示的每個影格對參數的描述

n

輸入影格的循序編號,從 1 開始

mse_avg

比較影格的逐像素平均差異的均方誤差,在所有影像組件上平均。

mse_y, mse_u, mse_v, mse_r, mse_g, mse_b, mse_a

比較影格的逐像素平均差異的均方誤差,適用於後綴指定的組件。

psnr_y, psnr_u, psnr_v, psnr_r, psnr_g, psnr_b, psnr_a

比較影格的峰值訊噪比,適用於後綴指定的組件。

max_avg, max_y, max_u, max_v

每個通道允許的最大值,以及所有通道的平均值。

11.201.1 範例

  • 例如
    movie=ref_movie.mpg, setpts=PTS-STARTPTS [main];
    [main][ref] psnr="stats_file=stats.log" [out]
    

    在此範例中,正在處理的輸入檔案與參考檔案 ref_movie.mpg 進行比較。每個個別影格的 PSNR 儲存在 stats.log 中。

  • 另一個具有不同容器的範例
    ffmpeg -i main.mpg -i ref.mkv -lavfi  "[0:v]settb=AVTB,setpts=PTS-STARTPTS[main];[1:v]settb=AVTB,setpts=PTS-STARTPTS[ref];[main][ref]psnr" -f null -
    

11.202 pullup

反向下拉(反向電影膠捲轉換)濾鏡,能夠處理混合的硬式電影膠捲轉換、24000/1001 fps 漸進式和 30000/1001 fps 漸進式內容。

pullup 濾鏡旨在利用未來的內容來做出決策。此濾鏡是無狀態的,因為它不會鎖定要遵循的模式,而是會向前看後續的場景,以識別匹配項並重建漸進式影格。

若要產生具有均勻影格率的內容,請在 pullup 之後插入 fps 濾鏡,如果輸入影格率為 29.97fps,則使用 fps=24000/1001,對於 30fps 和(罕見的)電影膠捲轉換 25fps 輸入,則使用 fps=24

濾鏡接受以下選項

jl
jr
jt
jb

這些選項分別設定要忽略影像左側、右側、頂部和底部的「垃圾」量。左側和右側以 8 像素為單位,而頂部和底部以 2 行為單位。預設值為每側 8 像素。

sb

設定嚴格中斷。將此選項設定為 1 將減少濾鏡產生偶爾不匹配影格的機率,但也可能導致在高動態序列期間丟棄過多的影格。相反,將其設定為 -1 將使濾鏡更容易匹配場景。這可能有助於處理場景之間略有模糊的視訊,但也可能導致輸出中存在交錯影格。預設值為 0

mp

設定要使用的度量平面。它接受以下值

l

使用亮度平面。

u

使用色度藍色平面。

v

使用色度紅色平面。

可以設定此選項以使用色度平面而不是預設亮度平面來執行濾鏡的計算。這可以提高非常乾淨的來源素材的準確性,但更可能降低準確性,尤其是在存在色度雜訊(彩虹效應)或任何灰度視訊的情況下。將 mp 設定為色度平面的主要目的是降低 CPU 負載,並使 pullup 可在慢速機器上即時使用。

為了獲得最佳結果(輸出檔案中沒有重複的影格),有必要變更輸出影格率。例如,要反向電影膠捲轉換 NTSC 輸入

ffmpeg -i input -vf pullup -r 24000/1001 ...

11.203 qp

變更視訊量化參數 (QP)。

stages

qp

設定量化參數的表達式。

表達式透過 eval API 評估,並且可以包含以下常數

known

如果索引不是 129,則為 1,否則為 0。

qp

從 -129 到 128 的循序索引。

11.203.1 範例

  • 一些方程式,例如
    qp=2+2*sin(PI*qp)
    

11.204 qrencode

使用 libqrencode 程式庫(請參閱 https://fukuchi.org/works/qrencode/)產生 QR 代碼,並將其覆蓋在目前影格之上。

若要啟用此濾鏡的編譯,您需要使用 --enable-libqrencode 配置 FFmpeg。

QR 代碼是從提供的文字或文字圖案產生的。對應的 QR 代碼會根據指定的選項進行縮放並覆蓋到視訊輸出中。

如果未指定任何文字,則不會覆蓋 QR 代碼。

此濾波器還能夠拉伸/壓縮音訊資料以使其與時間戳記匹配,或注入靜音/剪切音訊以使其與時間戳記匹配,執行兩者的組合或兩者都不執行。

qrcode_width, q
padded_qrcode_width, Q

指定已渲染 QR 代碼寬度的表達式,包括帶填充和不帶填充。 qrcode_width 表達式可以參考 padded_qrcode_width 表達式設定的值,反之亦然。預設情況下,padded_qrcode_width 設定為 qrcode_width,表示沒有填充。

這些表達式會針對每個新影格進行評估。

有關詳細資訊,請參閱 qrencode 表達式 章節。

x
y

指定用於定位填充 QR 代碼左上角的表達式。x 表達式可以參考 y 表達式設定的值,反之亦然。

預設情況下,xy 設定為 0,表示 QR 代碼放置在輸入的左上角。

這些表達式會針對每個新影格進行評估。

有關詳細資訊,請參閱 qrencode 表達式 章節。

case_sensitive, cs

指示 libqrencode 使用區分大小寫的編碼。預設情況下啟用此功能。可以停用此功能以減少 QR 編碼大小。

level, l

指定 QR 編碼錯誤校正層級。使用較高的校正層級,編碼大小將增加,但代碼將更強大,更能抵抗損壞。較低層級為 L

設定叢發融合,以視窗大小的百分比表示。允許範圍為 010。預設值為 2。如果偵測為雜訊的任何兩個樣本之間的間隔小於此值,則這兩個樣本之間的任何樣本也將被偵測為雜訊。

L
M
Q
H
picture

選取輸入文字的擴展方式。可以是 nonenormal(預設)。有關詳細資訊,請參閱下面的 qrencode 文字擴展 章節。

text
textfile

定義要渲染的文字。如果未指定兩者,則不會編碼 QR(僅為空彩色影格)。

如果啟用擴展,則文字將被視為文字範本,使用 qrencode 擴展機制。有關詳細資訊,請參閱下面的 qrencode 文字擴展 章節。

background_color, bc
foreground_color, fc

設定 QR 代碼和背景色彩。foreground_color 的預設值為 "black",background_color 的預設值為 "white"。

有關色彩選項的語法,請查看 ffmpeg-utils 手冊中的 "(ffmpeg-utils)「Color」章節"

11.204.1 qrencode 表達式

選項設定的表達式包含以下常數和函數。

dar

expansion

duration

目前影格的持續時間,以秒為單位

hsub
vsub

水平和垂直色度子採樣值。例如,對於像素格式 "yuv422p",hsub 為 2,vsub 為 1。

main_h, H

fix_bounds

main_w, W

fontcolor

n

標記映射 libfreetype 支援的相應標記,並且是以下值的組合

ignore_global_advance_width

表示圖片類型的數字

qr_w, w

編碼 QR 代碼的寬度

rendered_qr_w, q
rendered_padded_qr_w, Q

已渲染 QR 代碼的寬度,包括帶填充和不帶填充。

這些參數允許 qQ 表達式相互參考,因此您可以例如指定 q=3/4*Q

no_scale

no_hinting

sar

輸入樣本縱橫比

設定傳輸表達式。

以秒為單位的時間戳記,如果輸入時間戳記未知,則為 NAN

x
y

crop_bitmap

pedantic

11.204.2 qrencode 文字擴展

shadowcolor

用於在繪製文字後面繪製陰影的顏色。有關此選項的語法,請查看 (ffmpeg-utils) 手冊中的「顏色」部分

shadowcolor 的預設值為 "黑色"。

boxw

設定要在文字周圍繪製的框的寬度。boxw 的預設值會自動計算以匹配文字寬度

boxh

text

傳回影格編號

pts

傳回目前影格的演示時間戳記。

它最多可以接受兩個引數。

第一個引數是時間戳記的格式;預設值為 flt,表示以秒為單位的十進制數字,精確到微秒;hms 代表格式化的 [-]HH:MM:SS.mmm 時間戳記,精確到毫秒。 gmtime 代表格式化為 UTC 時間的影格時間戳記;localtime 代表格式化為當地時區時間的影格時間戳記。如果格式設定為 hms24hh,則時間將以 24 小時格式 (00-23) 格式化。

如果同時指定了 texttextfile,則會引發錯誤。

如果想要使用側資料偵測邊界框中的文字資料,則應將文字來源設定為 side_data_detection_bboxes。

此濾鏡並非為即時設計。

評估表達式的值並以雙精度輸出。

它必須採用一個引數,指定要評估的表達式,接受 qrencode_expressions 中定義的常數和函數。

expr_formatted, ef

評估表達式的值並以格式化的字串輸出。

start_number

n/frame_num 變數的起始影格編號。預設值為 "0"。

tabsize

用於呈現 Tab 的空格數大小。預設值為 4。

timecode

rolloff

以 "hh:mm:ss[:;.]ff" 格式設定初始時間碼表示形式。它可以與或不與 text 參數一起使用。必須指定 timecode_rate 選項。

timecode_rate, rate, r

設定時間碼影格率(僅限時間碼)。值將四捨五入到最接近的整數。最小值為 "1"。影格丟失時間碼支援影格率 30 和 60。

tc24hmax

在導致 qrencode 濾鏡的濾鏡中產生的字串元數據也可用。

no_scale

no_hinting

11.204.3 範例

  • 產生編碼指定文字的 QR 代碼,具有預設大小,覆蓋在輸入視訊的左上角,具有預設大小
    qrencode=text=www.ffmpeg.org
    
  • 與下述相同,但選取藍色和粉紅色
    qrencode=text=www.ffmpeg.org:bc=pink@0.5:fc=blue
    
  • 將 QR 代碼放置在輸入視訊的右下角
    qrencode=text=www.ffmpeg.org:x=W-Q:y=H-Q
    
  • 產生寬度為 200 像素且具有填充的 QR 代碼,使填充寬度為 QR 代碼寬度的 4/3
    qrencode=text=www.ffmpeg.org:q=200:Q=4/3*q
    
  • 產生填充寬度為 200 像素且具有填充的 QR 代碼,使 QR 代碼寬度為填充寬度的 3/4
    qrencode=text=www.ffmpeg.org:Q=200:q=3/4*Q
    
  • 使 QR 代碼成為輸入視訊寬度的一部分
    qrencode=text=www.ffmpeg.org:q=W/5
    
  • 產生編碼影格編號的 QR 代碼
    qrencode=text=%{n}
    
  • 產生編碼 GMT 時間戳記的 QR 代碼
    qrencode=text=%{gmtime}
    
  • 產生編碼為浮點數的時間戳記的 QR 代碼
    qrencode=text=%{pts}
    

11.205 quirc

使用 libquirc 程式庫(請參閱 https://github.com/dlbeer/quirc/)識別和解碼 QR 代碼,並印出識別的 QR 代碼位置和酬載作為元數據。

若要啟用此濾鏡的編譯,您需要使用 --enable-libquirc 配置 FFmpeg。

對於輸入視訊中找到的每個 QR 代碼,都會新增一些元數據條目,前綴為 lavfi.quirc.N,其中 N 是與 QR 代碼關聯的索引,從 0 開始。

以下是每個元數據值的描述

lavfi.quirc.count

找到的 QR 代碼數量,如果未找到,則不會設定

lavfi.quirc.N.corner.M.x
lavfi.quirc.N.coreer.M.y

包含 QR 代碼的正方形的四個角落的 x/y 位置,其中 M 是角落的索引,從 0 開始

lavfi.quirc.N.payload

QR 代碼的酬載

11.206 random

以隨機順序刷新來自影格內部快取記憶體的視訊影格。不會丟棄任何影格。靈感來自 frei0r nervous 濾鏡。

frames

設定內部快取記憶體的大小,以影格數為單位,範圍為 2512。預設值為 30

設定臨界值。允許範圍為從 1100。預設值為 10。值越高,削波偵測的侵略性就越低。

設定隨機數字產生器的種子,必須是包含在 0UINT32_MAX 之間的整數。如果未指定,或明確設定為小於 0,則濾鏡將盡最大努力使用良好的隨機種子。

11.207 readeia608

從視訊影格的頂部行讀取隱藏式字幕 (EIA-608) 資訊。

此濾鏡為 lavfi.readeia608.X.cclavfi.readeia608.X.line 新增影格元數據,其中 X 是已識別的具有 EIA-608 數據的行號(從 0 開始)。以下是每個元數據值的描述

lavfi.readeia608.X.cc

儲存為 EIA-608 數據的兩個位元組(以十六進制印出)。

lavfi.readeia608.X.line

識別和讀取 EIA-608 數據的行號。

此濾波器還能夠拉伸/壓縮音訊資料以使其與時間戳記匹配,或注入靜音/剪切音訊以使其與時間戳記匹配,執行兩者的組合或兩者都不執行。

scan_min

設定開始掃描 EIA-608 數據的行。預設值為 0

scan_max

設定結束掃描 EIA-608 數據的行。預設值為 29

spw

設定為同步代碼偵測保留的寬度比率。預設值為 0.27。允許範圍為 [0.1 - 0.7]

chp

啟用檢查奇偶校驗位元。如果發生奇偶校驗錯誤,濾鏡將為該字元輸出 0x00。預設值為 false。

lp

在進一步處理之前對線條進行低通濾波。預設情況下為啟用。

11.207.1 指令

此濾鏡支援以上所有選項作為 commands

11.207.2 範例

  • 輸出 csv,其中包含演示時間和已識別的 EIA-608 字幕數據的前兩行。
    ffprobe -f lavfi -i movie=captioned_video.mov,readeia608 -show_entries frame=pts_time:frame_tags=lavfi.readeia608.0.cc,lavfi.readeia608.1.cc -of csv
    

11.208 readvitc

從視訊影格的頂部行讀取垂直間隔時間碼 (VITC) 資訊。

如果偵測到有效時間碼,濾鏡會新增影格元數據鍵 lavfi.readvitc.tc_str,其中包含時間碼值。此外,元數據鍵 lavfi.readvitc.found 會根據是否找到時間碼數據設定為 0/1。

此濾波器還能夠拉伸/壓縮音訊資料以使其與時間戳記匹配,或注入靜音/剪切音訊以使其與時間戳記匹配,執行兩者的組合或兩者都不執行。

scan_max

設定要掃描 VITC 數據的最大行數。如果值設定為 -1,則會掃描整個視訊影格。預設值為 45

thr_b

設定黑色的亮度閾值。接受 [0.0,1.0] 範圍內的浮點數,預設值為 0.2。該值必須等於或小於 thr_w

thr_w

設定白色的亮度閾值。接受 [0.0,1.0] 範圍內的浮點數,預設值為 0.6。該值必須等於或大於 thr_b

11.208.1 範例

  • 偵測並在視訊影格上繪製 VITC 數據;如果未偵測到有效的 VITC,則繪製 --:--:--:-- 作為佔位符
    ffmpeg -i input.avi -filter:v 'readvitc,drawtext=fontfile=FreeMono.ttf:text=%{metadata\\:lavfi.readvitc.tc_str\\:--\\\\\\:--\\\\\\:--\\\\\\:--}:x=(w-tw)/2:y=400-ascent'
    

11.209 remap

使用第二個:Xmap 和第三個:Ymap 輸入視訊串流重新映射像素。

位置 (X, Y) 的目標像素將從來源 (x, y) 位置選取,其中 x = Xmap(X, Y) 且 y = Ymap(X, Y)。如果映射值超出範圍,目標像素將使用零值。

Xmap 和 Ymap 輸入視訊串流必須具有相同的尺寸。輸出視訊串流將具有 Xmap/Ymap 視訊串流尺寸。Xmap 和 Ymap 輸入視訊串流為 16 位元深度、單通道。

format

指定此濾鏡輸出的像素格式。可以是 colorgray。預設值為 color

fill

指定未映射像素的色彩。有關此選項的語法,請查看 ffmpeg-utils 手冊中的 "(ffmpeg-utils)「Color」章節"。預設色彩為 black

11.210 removegrain

removegrain 濾鏡是適用於漸進式視訊的空間去噪器。

m0

設定第一個平面的模式。

openvino

設定第二個平面的模式。

model

設定第三個平面的模式。

使用 can.pb 移除 rgb24 影格中的雨水(請參閱 derain 濾鏡)

設定第四個平面的模式。

模式範圍為 0 到 24。以下是每個模式的描述

0

保持輸入平面不變。預設值。

1

使用 8 個相鄰像素的最小值和最大值剪裁像素。

2

使用 8 個相鄰像素的第二個最小值和最大值剪裁像素。

3

使用 8 個相鄰像素的第三個最小值和最大值剪裁像素。

4

使用 8 個相鄰像素的第四個最小值和最大值剪裁像素。這相當於中值濾鏡。

5

線條敏感型剪裁,提供最小的變更。

6

線條敏感型剪裁,中間。

7

線條敏感型剪裁,中間。

8

線條敏感型剪裁,中間。

9

在相鄰像素最接近的線上進行線條敏感型剪裁。

10

將目標像素替換為最接近的相鄰像素。

11

[1 2 1] 水平和垂直核心模糊。

12

與模式 11 相同。

13

Bob 模式,從相鄰像素最接近的線內插頂場。

14

Bob 模式,從鄰近像素最接近的線條內插底部圖場。

15

Bob 模式,內插頂部圖場。與模式 13 相同,但使用更複雜的內插公式。

16

Bob 模式,內插底部圖場。與模式 14 相同,但使用更複雜的內插公式。

17

剪裁像素,分別使用每對相對鄰近像素的最大值和最小值的最大值和最小值。

18

線條敏感剪裁,使用與目前像素距離最小的相對鄰近像素。

19

以其 8 個鄰近像素的平均值取代像素。

20

平均 9 個像素(水平和垂直 [1 1 1] 模糊)。

21

使用相對鄰近像素的平均值剪裁像素。

22

與模式 21 相同,但更簡單快速。

23

小型邊緣和光暈消除,但據稱無用。

24

與模式 23 類似。

11.211 removelogo

抑制電視台標誌,使用圖像檔案判斷哪些像素組成標誌。其運作方式是使用鄰近像素填滿組成標誌的像素。

濾鏡接受以下選項

檔案名稱,f

設定濾鏡點陣圖檔案,可以是 libavformat 支援的任何圖像格式。圖像檔案的寬度和高度必須與正在處理的視訊串流的寬度和高度相符。

所提供點陣圖圖像中值為零的像素不被視為標誌的一部分,非零像素則被視為標誌的一部分。如果您對標誌使用白色 (255),其餘部分使用黑色 (0),則會是安全的做法。為了製作濾鏡點陣圖,建議擷取一個黑色影格的螢幕截圖,其中標誌清晰可見,然後使用閾值濾鏡,接著使用侵蝕濾鏡一到兩次。

如果需要,可以手動修正小斑點。請記住,如果標誌像素未被覆蓋,濾鏡品質將會大幅降低。將過多像素標記為標誌的一部分不會造成太大損害,但會增加覆蓋圖像所需的模糊量,並破壞更多不必要的資訊,而且過多的像素會拖慢大型標誌的處理速度。

11.212 repeatfields

此濾鏡使用來自視訊 ES 標頭的 repeat_field 旗標,並根據其值硬性重複圖場。

11.213 reverse

反轉視訊片段。

bpm

11.213.1 範例

  • 設定 bpm。預設值為 120。允許範圍為 [30 - 300]。僅在 timing 設定為 bpm 時使用。
    trim=end=5,reverse
    

11.214 rgbashift

水平和/或垂直位移 R/G/B/A 像素。

濾鏡接受以下選項

rh

設定水平位移紅色的量。

rv

設定垂直位移紅色的量。

gh

設定水平位移綠色的量。

gv

設定垂直位移綠色的量。

bh

設定水平位移藍色的量。

bv

設定垂直位移藍色的量。

ah

設定水平位移 Alpha 值的量。

av

設定垂直位移 Alpha 值的量。

edge

edge

11.214.1 指令

此濾鏡支援以上所有選項作為 commands

11.215 roberts

將羅伯茲交叉運算元套用至輸入視訊串流。

stages

planes

設定將處理哪些平面,未處理的平面將被複製。預設值為 0xf,所有平面都將被處理。

scale

設定將與濾鏡結果相乘的值。

delta

設定將新增到濾鏡結果的值。

11.215.1 指令

此濾鏡支援以上所有選項作為 commands

11.216 rotate

依任意角度(以弧度表示)旋轉視訊。

濾鏡接受以下選項

以下是選用參數的說明。

角度,a

設定旋轉輸入視訊的時鐘方向角度的表達式,以弧度數表示。負值將導致逆時鐘旋轉。預設值設定為 "0"。

此表達式會針對每個影格進行評估。

輸出寬度,ow

設定輸出寬度表達式,預設值為 "iw"。此表達式僅在配置期間評估一次。

輸出高度,oh

設定輸出高度表達式,預設值為 "ih"。此表達式僅在配置期間評估一次。

雙線性

如果設定為 1,則啟用雙線性內插,值為 0 則停用。預設值為 1。

填滿顏色,c

設定用於填滿未被旋轉圖像覆蓋的輸出區域的顏色。如需此選項的通用語法,請查看 (ffmpeg-utils) ffmpeg-utils 手冊中的「顏色」章節。如果選擇特殊值 "none",則不會列印背景(例如,如果永遠不會顯示背景,則很有用)。

預設值為 "black"。

角度和輸出尺寸的表達式可以包含以下常數和函數

n

輸入影格的循序編號,從 0 開始。在第一個影格被濾鏡處理之前,它始終為 NAN。

設定傳輸表達式。

輸入影格的時間(以秒為單位),在配置濾鏡時設定為 0。在第一個影格被濾鏡處理之前,它始終為 NAN。

hsub
vsub

水平和垂直色度子採樣值。例如,對於像素格式 "yuv422p",hsub 為 2,vsub 為 1。

設定 dnn 網路的輸出名稱。
output

輸入視訊的寬度和高度

輸出寬度,ow
輸出高度,oh

輸出寬度和高度,即由 widthheight 表達式指定的填補區域的大小

rotw(a)
roth(a)

完全包含旋轉 a 弧度的輸入視訊所需的最小寬度/高度。

這些僅在計算 out_wout_h 表達式時可用。

11.216.1 範例

  • 將輸入順時鐘旋轉 PI/6 弧度
    rotate=PI/6
    
  • 將輸入逆時鐘旋轉 PI/6 弧度
    rotate=-PI/6
    
  • 將輸入順時鐘旋轉 45 度
    rotate=45*PI/180
    
  • 套用週期為 T 的恆定旋轉,從 PI/3 的角度開始
    rotate=PI/3+2*PI*t/T
    
  • 使輸入視訊旋轉以 T 秒的週期和 A 弧度的振幅振盪
    rotate=A*sin(2*PI/T*t)
    
  • 旋轉視訊,選擇輸出尺寸,使整個旋轉輸入視訊始終完全包含在輸出中
    rotate='2*PI*t:ow=hypot(iw,ih):oh=ow'
    
  • 旋轉視訊,縮減輸出尺寸,使永遠不會顯示背景
    rotate=2*PI*t:ow='min(iw,ih)/sqrt(2)':oh=ow:c=none
    

11.216.2 指令

此濾鏡支援以下命令

a,角度

設定角度表達式。此命令接受與對應選項相同的語法。

如果指定的表達式無效,則會保持其目前值。

11.217 sab

套用形狀自適應模糊。

濾鏡接受以下選項

luma_radius, lr

設定亮度模糊濾鏡強度,必須是 0.1-4.0 範圍內的值,預設值為 1.0。較大的值將導致更模糊的圖像,以及較慢的處理速度。

亮度預先濾鏡半徑,lpfr

設定亮度預先濾鏡半徑,必須是 0.1-2.0 範圍內的值,預設值為 1.0。

luma_strength, ls

設定亮度像素之間的最大差異以仍被考慮,必須是 0.1-100.0 範圍內的值,預設值為 1.0。

chroma_radius, cr

設定色度模糊濾鏡強度,必須是 -0.9-4.0 範圍內的值。較大的值將導致更模糊的圖像,以及較慢的處理速度。

色度預先濾鏡半徑,cpfr

設定色度預先濾鏡半徑,必須是 -0.9-2.0 範圍內的值。

chroma_strength, cs

設定色度像素之間的最大差異以仍被考慮,必須是 -0.9-100.0 範圍內的值。

如果未明確指定,則每個色度選項值都會設定為對應的亮度選項值。

11.218 scale

使用 libswscale 函式庫縮放(調整大小)輸入視訊。

縮放濾鏡透過變更輸出取樣縱橫比,強制輸出顯示縱橫比與輸入相同。

如果輸入圖像格式與下一個濾鏡要求的格式不同,縮放濾鏡會將輸入轉換為要求的格式。

11.218.1 選項

此濾鏡接受以下選項,libswscale 縮放器支援的任何選項,以及任何 framesync 選項。

請參閱 (ffmpeg-scaler) ffmpeg-scaler 手冊,以取得完整的縮放器選項清單。

width, w
超出範圍的像素將被鏡像像素替換。

設定輸出視訊尺寸表達式。預設值為輸入尺寸。

如果 widthw 值為 0,則輸出會使用輸入寬度。如果 heighth 值為 0,則輸出會使用輸入高度。

如果只有一個值為 -n 且 n >= 1,縮放濾鏡將使用一個值來維持輸入圖像的縱橫比,該縱橫比是根據另一個指定的尺寸計算得出。之後,它將確保計算出的尺寸可被 n 整除,並在必要時調整值。

如果兩個值都是 -n 且 n >= 1,則行為將與先前詳細說明的兩個值都設定為 0 相同。

請參閱下文,以取得可用於尺寸表達式的已接受常數清單。

eval

指定何時評估 widthheight 表達式。它接受以下值

init

僅在濾鏡初始化期間或處理指令時評估表達式一次。

frame

為每個傳入的影格評估表示式。

預設值為 ‘init’。

交錯

設定交錯模式。它接受以下值

設定頻段的濾波器類型,可選,可以是

強制執行交錯感知縮放。

以 dB 為單位設定頻段增益。

不套用交錯縮放。

-1

根據來源影格是否標記為交錯來選擇交錯感知縮放。

預設值為 ‘0’。

flags

設定 libswscale 縮放旗標。請參閱 (ffmpeg-scaler) ffmpeg-scaler 手冊,以取得完整的值清單。如果未明確指定,濾鏡會套用預設旗標。

param0,param1

為需要它們的縮放演算法設定 libswscale 輸入參數。請參閱 (ffmpeg-scaler) ffmpeg-scaler 手冊,以取得完整的說明文件。如果未明確指定,濾鏡會套用空的參數。

意圖

設定在不同色彩空間之間轉換時要使用的 ICC 渲染意圖。它接受以下值

perceptual

使用感知引導的色調和色域映射曲線。所使用映射的確切細節可能隨時變更,不應將其視為穩定。此意圖建議用於在典型觀看設定中最終觀看圖像/視訊內容。

relative_colorimetric

使用色度計剪裁曲線靜態剪裁超出色域的顏色,該曲線嘗試尋找在色度上最不相似的色域內顏色。此意圖執行白點適應和黑點適應。這是預設值。在需要忠實色彩重現至關重要的地方,即使以剪裁為代價,也建議使用此意圖。

absolute_colorimetric

硬性剪裁超出色域的顏色,而不嘗試重現白點或黑點。假設輸出顯示器已適當校準,此意圖將在輸出顯示器上以 1:1 的比例重現色域內顏色,如同它們在參考顯示器上顯示一樣。

saturation

執行飽和度映射 - 也就是說,以非線性方式將輸入色彩體積直接拉伸到輸出色彩體積上,以盡可能保留原始訊號外觀。此意圖建議用於訊號內容評估,因為它不會導致任何剪裁。它大致相當於不執行任何色彩映射,儘管它仍然考慮了母帶製作顯示器原色和編碼 TRC 的任何差異。

size, s

設定視訊尺寸。如需此選項的語法,請查看 (ffmpeg-utils) ffmpeg-utils 手冊中的「視訊尺寸」章節

in_color_matrix
out_color_matrix

設定輸入/輸出 YCbCr 色彩空間類型。

這允許覆寫自動偵測到的值,並允許強制輸出和編碼器使用特定值。

如果未指定,色彩空間類型取決於像素格式。

可能的值

auto

自動選擇。

bt709

符合國際電信聯盟 (ITU) 建議 BT.709 的格式。

fcc

設定符合美國聯邦通信委員會 (FCC) 聯邦法規彙編 (CFR) 第 47 篇(2003 年)73.682 (a) 的色彩空間。

bt601
bt470
smpte170m

設定符合以下規範的色彩空間

  • 國際電信聯盟無線電通信部門 (ITU-R) 建議 BT.601
  • ITU-R Rec. BT.470-6 (1998) 系統 B、B1 和 G
  • 美國電影與電視工程師協會 (SMPTE) ST 170:2004
smpte240m

設定符合 SMPTE ST 240:1999 的色彩空間。

bt2020

設定符合 ITU-R BT.2020 非恆定亮度系統的色彩空間。

in_range
out_range

設定輸入/輸出 YCbCr 取樣範圍。

這允許覆寫自動偵測到的值,並允許強制輸出和編碼器使用特定值。如果未指定,範圍取決於像素格式。可能的值

auto/unknown

自動選擇。

jpeg/full/pc

設定全範圍(8 位元亮度時為 0-255)。

mpeg/limited/tv

設定 "MPEG" 範圍(8 位元亮度時為 16-235)。

in_chroma_loc
out_chroma_loc

設定輸入/輸出色度取樣位置。如果未指定,預設會使用中心定位的色度。可能的值

auto, unknown
‘<samp>left</samp>’
center
topleft
top
bottomleft
bottom
in_primaries
out_primaries

設定輸入/輸出 RGB 原色。

這允許覆寫自動偵測到的值,並允許強制輸出和編碼器使用特定值。可能的值

auto

自動選擇。這是預設值。

bt709
bt470m
bt470bg
smpte170m
smpte240m
film
bt2020
smpte428
smpte431
smpte432
jedec-p22
ebu3213
in_transfer
out_transfer

設定輸入/輸出傳輸響應曲線 (TRC)。

這允許覆寫自動偵測到的值,並允許強制輸出和編碼器使用特定值。可能的值

auto

自動選擇。這是預設值。

bt709
bt470m
gamma22
bt470bg
gamma28
smpte170m
smpte240m
linear
iec61966-2-1
srgb
iec61966-2-4
xvycc
bt1361e
bt2020-10
bt2020-12
smpte2084
smpte428
arib-std-b67
force_original_aspect_ratio

如果需要,啟用減少或增加輸出視訊寬度或高度,以保持原始縱橫比。可能的值

disable

依指定縮放視訊並停用此功能。

decrease

如果需要,將自動減少輸出視訊尺寸。

increase

如果需要,將自動增加輸出視訊尺寸。

此選項的一個有用實例是,當您知道特定裝置的最大允許解析度時,您可以使用此選項將輸出視訊限制為該解析度,同時保留縱橫比。例如,裝置 A 允許 1280x720 播放,而您的視訊為 1920x800。使用此選項(設定為 decrease)並在命令列中指定 1280x720,會使輸出變為 1280x533。

請注意,這與為 wh 指定 -1 不同,您仍然需要指定輸出解析度才能使此選項生效。

force_divisible_by

force_original_aspect_ratio 一起使用時,確保輸出尺寸(寬度和高度)都可被給定的整數整除。這與在 wh 選項中使用 -n 類似。

此選項尊重為 force_original_aspect_ratio 設定的值,並相應地增加或減少解析度。視訊的縱橫比可能會稍微修改。

如果您需要讓視訊在使用 force_original_aspect_ratio 的情況下符合或超出定義的解析度,但同時對寬度或高度的可整除性有限制,則此選項可能很方便。

wh 選項的值是包含以下常數的表達式

in_w
in_h

輸入寬度和高度

iw
ih

這些與 in_win_h 相同。

out_w
out_h

輸出(縮放)寬度和高度

ow
oh

這些與 out_wout_h 相同

a

iw / ih 相同

sar

輸入樣本縱橫比

dar

輸入顯示縱橫比。從 (iw / ih) * sar 計算得出。

hsub
vsub

水平和垂直輸入色度子取樣值。例如,對於像素格式 "yuv422p",hsub 為 2,vsub 為 1。

ohsub
ovsub

水平和垂直輸出色度子取樣值。例如,對於像素格式 "yuv422p",hsub 為 2,vsub 為 1。

n

輸入影格的(循序)編號,從 0 開始。僅適用於 eval=frame

設定傳輸表達式。

輸入影格的呈現時間戳記,以秒數表示。僅適用於 eval=frame

pos

影格在輸入串流中的位置(位元組偏移量),如果此資訊不可用和/或沒有意義(例如,在合成視訊的情況下),則為 NaN。僅適用於 eval=frame。已棄用,請勿使用。

ref_w,rw
ref_h,rh
ref_a
ref_dar,rdar
ref_n
ref_t
ref_pos

與上述等效,但適用於第二個參考輸入。如果存在任何這些變數,此濾鏡會接受兩個輸入。

11.218.2 範例

  • 將輸入視訊縮放為 200x100 的尺寸
    scale=w=200:h=100
    

    這相當於

    scale=200:100
    

    scale=200x100
    
  • 為輸出尺寸指定尺寸縮寫
    scale=qcif
    

    也可以寫成

    scale=size=qcif
    
  • 將輸入縮放為 2 倍
    scale=w=2*iw:h=2*ih
    
  • 以上與以下內容相同
    scale=2*in_w:2*in_h
    
  • 將輸入縮放為 2 倍,並強制執行交錯縮放
    scale=2*iw:2*ih:interl=1
    
  • 將輸入縮放為一半大小
    scale=w=iw/2:h=ih/2
    
  • 增加寬度,並將高度設定為相同大小
    scale=3/2*iw:ow
    
  • 尋求希臘和諧
    scale=iw:1/PHI*iw
    scale=ih*PHI:ih
    
  • 增加高度,並將寬度設定為高度的 3/2
    scale=w=3/2*oh:h=3/5*ih
    
  • 增加尺寸,使尺寸成為色度子取樣值的倍數
    scale="trunc(3/2*iw/hsub)*hsub:trunc(3/2*ih/vsub)*vsub"
    
  • 將寬度增加到最大 500 像素,同時保持與輸入相同的縱橫比
    scale=w='min(500\, iw*3/2):h=-1'
    
  • 透過組合縮放和 setsar 使像素變成正方形
    scale='trunc(ih*dar):ih',setsar=1/1
    
  • 透過組合縮放和 setsar 使像素變成正方形,確保產生的解析度為偶數(某些編解碼器需要)
    scale='trunc(ih*dar/2)*2:trunc(ih/2)*2',setsar=1/1
    
  • 縮放字幕串流 (sub) 以符合主要視訊 (main) 的大小,然後再覆疊。(「scale2ref」)
    '[main]split[a][b]; [ref][a]scale=rw:rh[c]; [b][c]overlay'
    
  • 將標誌縮放到視訊高度的 1/10,同時保留其顯示縱橫比。
    [logo-in][video-in]scale=w=oh*dar:h=rh/10[logo-out]
    

11.218.3 指令

此濾波器支援以下指令

width, w
超出範圍的像素將被鏡像像素替換。

設定輸出視訊尺寸表達式。此命令接受與對應選項相同的語法。

如果指定的表達式無效,則會保持其目前值。

11.219 scale_cuda

使用加速 CUDA 核心縮放(調整大小)和轉換(像素格式)輸入視訊。設定輸出寬度和高度的方式與 scale 濾鏡相同。

濾鏡接受以下選項

f
h

設定輸出視訊尺寸表達式。預設值為輸入尺寸。

允許與 scale 濾鏡相同的表達式。

interp_algo

設定用於縮放的演算法

nearest

最近鄰

如果輸入參數符合所需的輸出,則預設使用。

雙線性

雙線性

雙立方

雙立方

這是預設值。

蘭索斯

蘭索斯

format

控制輸出像素格式。依預設,或如果未指定,則會使用輸入像素格式。

此濾鏡不支援在 YUV 和 RGB 像素格式之間轉換。

passthrough

如果設定為 0,則會處理每個影格,即使不需要轉換。此模式可用於將濾鏡用作下游影格消費者的緩衝區,該消費者耗盡了有限的解碼器影格池。

如果設定為 1,如果影格符合所需的輸出參數,則會按原樣傳遞影格。這是預設行為。

每個資料平面的 Adler-32 檢查碼列表。

演算法特定參數。

影響雙立方演算法的曲線。

force_original_aspect_ratio
force_divisible_by

與相同的 scale 濾鏡選項的工作方式相同。

11.219.1 範例

  • 將輸入縮放到 720p,保持縱橫比並確保輸出為 yuv420p。
    scale_cuda=-2:720:format=yuv420p
    
  • 使用最近鄰演算法放大到 4K。
    scale_cuda=4096:2160:interp_algo=nearest
    
  • 不執行任何轉換或縮放,但將所有輸入影格複製到新分配的影格中。這可用於處理濾鏡和編碼鏈,否則會耗盡解碼器的影格池。
    scale_cuda=passthrough=0
    

11.220 scale_npp

使用 NVIDIA Performance Primitives (libnpp) 在 CUDA 視訊影格上執行縮放和/或像素格式轉換。設定輸出寬度和高度的方式與 scale 濾鏡相同。

接受以下其他選項

format

輸出 CUDA 影格的像素格式。如果設定為字串 "same"(預設值),則會保留輸入格式。請注意,硬體影格尚不支援自動格式協商和轉換

interp_algo

用於調整大小的內插演算法。下列其中之一

nn

最近鄰。

linear
聲道佈局。
cubic2p_bspline

2 參數立方(B=1,C=0)

cubic2p_catmullrom

2 參數立方(B=0,C=1/2)

cubic2p_b05c03

2 參數立方(B=1/2,C=3/10)

超取樣

超取樣

蘭索斯
force_original_aspect_ratio

如果需要,啟用減少或增加輸出視訊寬度或高度,以保持原始縱橫比。可能的值

disable

依指定縮放視訊並停用此功能。

decrease

如果需要,將自動減少輸出視訊尺寸。

increase

如果需要,將自動增加輸出視訊尺寸。

此選項的一個有用實例是,當您知道特定裝置的最大允許解析度時,您可以使用此選項將輸出視訊限制為該解析度,同時保留縱橫比。例如,裝置 A 允許 1280x720 播放,而您的視訊為 1920x800。使用此選項(設定為 decrease)並在命令列中指定 1280x720,會使輸出變為 1280x533。

請注意,這與為 wh 指定 -1 不同,您仍然需要指定輸出解析度才能使此選項生效。

force_divisible_by

force_original_aspect_ratio 一起使用時,確保輸出尺寸(寬度和高度)都可被給定的整數整除。這與在 wh 選項中使用 -n 類似。

此選項尊重為 force_original_aspect_ratio 設定的值,並相應地增加或減少解析度。視訊的縱橫比可能會稍微修改。

如果您需要讓視訊在使用 force_original_aspect_ratio 的情況下符合或超出定義的解析度,但同時對寬度或高度的可整除性有限制,則此選項可能很方便。

eval

指定何時評估 widthheight 表達式。它接受以下值

init

僅在濾鏡初始化期間或處理指令時評估表達式一次。

frame

為每個傳入的影格評估表示式。

wh 選項的值是包含以下常數的表達式

in_w
in_h

輸入寬度和高度

iw
ih

這些與 in_win_h 相同。

out_w
out_h

輸出(縮放)寬度和高度

ow
oh

這些與 out_wout_h 相同

a

iw / ih 相同

sar

輸入樣本縱橫比

dar

輸入顯示縱橫比。從 (iw / ih) * sar 計算得出。

n

輸入影格的(循序)編號,從 0 開始。僅適用於 eval=frame

設定傳輸表達式。

輸入影格的呈現時間戳記,以秒數表示。僅適用於 eval=frame

pos

影格在輸入串流中的位置(位元組偏移量),如果此資訊不可用和/或沒有意義(例如,在合成視訊的情況下),則為 NaN。僅適用於 eval=frame。已棄用,請勿使用。

11.221 scale2ref_npp

使用 NVIDIA Performance Primitives (libnpp) 根據參考視訊縮放(調整大小)輸入視訊。

請參閱 scale_npp 濾鏡以取得可用的選項,scale2ref_npp 支援相同的選項,但使用參考視訊而非主要輸入作為基礎。scale2ref_npp 也支援 wh 選項的以下其他常數

main_w
main_h

主要輸入視訊的寬度和高度

main_a

main_w / main_h 相同

main_sar

主要輸入視訊的取樣縱橫比

main_dar,mdar

主要輸入視訊的顯示縱橫比。從 (main_w / main_h) * main_sar 計算得出。

main_n

主要輸入影格的(循序)編號,從 0 開始。僅適用於 eval=frame

main_t

主要輸入影格的呈現時間戳記,以秒數表示。僅適用於 eval=frame

main_pos

影格在主要輸入串流中的位置(位元組偏移量),如果此資訊不可用和/或沒有意義(例如,在合成視訊的情況下),則為 NaN。僅適用於 eval=frame

11.221.1 範例

  • 縮放字幕串流 (b) 以符合主要視訊 (a) 的大小,然後再覆疊
    'scale2ref_npp[b][a];[a][b]overlay_cuda'
    
  • 將標誌縮放到視訊高度的 1/10,同時保留其顯示縱橫比。
    [logo-in][video-in]scale2ref_npp=w=oh*mdar:h=ih/10[logo-out][video-out]
    

11.222 scale_vt

使用 VTPixelTransferSession 縮放和轉換色彩參數。

濾鏡接受以下選項

f
h

設定輸出視訊尺寸表達式。預設值為輸入尺寸。

color_matrix

設定輸出色彩空間矩陣。

color_primaries

設定輸出原色。

color_transfer

設定輸出傳輸特性。

11.223 scharr

將 Scharr 運算元套用至輸入視訊串流。

stages

planes

設定將處理哪些平面,未處理的平面將被複製。預設值為 0xf,所有平面都將被處理。

scale

設定將與濾鏡結果相乘的值。

delta

設定將新增到濾鏡結果的值。

11.223.1 指令

此濾鏡支援以上所有選項作為 commands

11.224 scroll

依恆定速度水平和/或垂直捲動輸入視訊。

濾鏡接受以下選項

水平,h

設定水平捲動速度。預設值為 0。允許範圍為 -1 到 1。負值會變更捲動方向。

垂直,v

設定垂直捲動速度。預設值為 0。允許範圍為 -1 到 1。負值會變更捲動方向。

hpos

設定初始水平捲動位置。預設值為 0。允許範圍為 0 到 1。

vpos

設定初始垂直捲動位置。預設值為 0。允許範圍為 0 到 1。

11.224.1 指令

此濾鏡支援以下 命令

水平,h

設定水平捲動速度。

垂直,v

設定垂直捲動速度。

11.225 scdet

偵測視訊場景變更。

此濾鏡設定影格中 mafd 的影格元資料、場景分數,並將影格轉發到下一個濾鏡,以便它們可以使用這些元資料來偵測場景變更或其他內容。

此外,當此濾鏡透過 threshold 偵測到場景變更時,它會記錄訊息並設定影格元資料。

lavfi.scd.mafd 元資料鍵會針對每個影格設定 mafd。

lavfi.scd.score 元資料鍵會針對每個影格設定場景變更分數,以偵測場景變更。

lavfi.scd.time 元資料鍵會設定當前濾鏡處理後的影格時間,以透過 threshold 偵測場景變更。

濾鏡接受以下選項

設定視窗重疊,以視窗大小的百分比表示。允許範圍為從 5095。預設值為 75%。將此設定為非常高的值會增加脈衝雜訊移除,但會使整個過程慢得多。

設定場景變更偵測閾值,以最大變更的百分比表示。良好的值在 [8.0, 14.0] 範圍內。threshold 的範圍為 [0., 100.]

預設值為 10.

sc_pass,s

設定旗標以將場景變更影格傳遞到下一個濾鏡。預設值為 0。如果您只想取得場景變更影格的快照,可以啟用它。

11.226 selectivecolor

將青色、洋紅色、黃色和黑色 (CMYK) 調整為特定顏色範圍(例如「紅色」、「黃色」、「綠色」、「青色」...)。調整範圍由顏色的「純度」(即,它已有多飽和)定義。

此濾鏡類似於 Adobe Photoshop 的「選取顏色」工具。

濾鏡接受以下選項

correction_method

選取顏色校正方法。

提升高於偵測臨界值的頻率。

absolute

指定的調整會「按原樣」套用(新增/減去原始像素元件值)。

relative

指定的調整相對於原始元件值。

預設值為 absolute

紅色

紅色像素的調整(紅色元件為最大值的像素)

黃色

黃色像素的調整(藍色元件為最小值的像素)

綠色

綠色像素的調整(綠色元件為最大值的像素)

青色

青色像素的調整(紅色元件為最小值的像素)

藍色

藍色像素的調整(藍色元件為最大值的像素)

洋紅色

洋紅色像素的調整(綠色元件為最小值的像素)

白色

白色像素的調整(所有元件都大於 128 的像素)

中性色

純黑色和純白色以外的所有像素的調整

黑色

黑色像素的調整(所有元件都小於 128 的像素)

設定所有組件(不包括主組件)的關鍵點。可以與其他關鍵點組件選項結合使用。在這種情況下,未設定的組件將回退到此 all 設定。

指定 Photoshop 選取顏色檔案 (.asv) 以從中匯入設定。

所有調整設定(redsyellows、...)最多接受 4 個以空格分隔的浮點調整值,範圍為 [-1,1],分別用於調整其範圍像素的青色、洋紅色、黃色和黑色量。

11.226.1 範例

  • 在每個綠色區域中增加 50% 的青色並減少 33% 的黃色,並在藍色區域中增加 27% 的洋紅色
    selectivecolor=greens=.5 0 -.33 0:blues=0 .27
    
  • 使用 Photoshop 選取顏色預設
    selectivecolor=psfile=MySelectiveColorPresets/Misty.asv
    

11.227 separatefields

separatefields 採用基於影格的視訊輸入,並將每個影格分割為其元件圖場,產生一個新的半高片段,其影格速率和影格計數是原來的兩倍。

此濾鏡使用影格中的圖場主導資訊來決定在輸出中首先放置每對圖場中的哪一個。如果它弄錯了,請在 separatefields 濾鏡之前使用 setfield 濾鏡。

11.228 setdar, setsar

setdar 濾鏡為濾鏡輸出視訊設定顯示縱橫比。

這是透過根據以下方程式變更指定的取樣(又名像素)縱橫比來完成的

DAR = HORIZONTAL_RESOLUTION / VERTICAL_RESOLUTION * SAR

請記住,setdar 濾鏡不會修改視訊影格的像素尺寸。此外,由此濾鏡設定的顯示縱橫比可能會被濾鏡鏈中的後續濾鏡變更,例如,在縮放或套用另一個「setdar」或「setsar」濾鏡的情況下。

setsar 濾鏡為濾鏡輸出視訊設定取樣(又名像素)縱橫比。

請注意,由於套用此濾鏡,輸出顯示縱橫比將根據上述方程式變更。

請記住,由 setsar 濾鏡設定的取樣縱橫比可能會被濾鏡鏈中的後續濾鏡變更,例如,如果套用另一個「setsar」或「setdar」濾鏡。

它接受以下參數

r、ratio、dar(僅 setdar)、sar(僅 setsar

設定濾鏡使用的縱橫比。

參數可以是浮點數字串或表達式。如果未指定參數,則會假設值為 "0",表示使用相同的輸入值。

max

設定在將表達的縱橫比縮減為有理數時要使用的最大整數值。預設值為 100

參數 sar 是一個包含以下常數的表達式

w,h

輸入寬度和高度。

a

w / h 相同。

sar

confidence

dar

輸入顯示縱橫比。它與 (w / h) * sar 相同。

hsub,vsub

水平和垂直色度子取樣值。例如,對於像素格式 "yuv422p",hsub 為 2,vsub 為 1。

11.228.1 範例

  • 若要將顯示縱橫比變更為 16:9,請指定以下其中一項
    setdar=dar=1.77777
    setdar=dar=16/9
    
  • 若要將取樣縱橫比變更為 10:11,請指定
    setsar=sar=10/11
    
  • 若要設定 16:9 的顯示縱橫比,並在縱橫比縮減中指定最大整數值 1000,請使用命令
    setdar=ratio=16/9:max=1000
    

11.229 setfield

強制輸出視訊影格的圖場。

setfield 濾鏡標記輸出影格的交錯類型圖場。它不會變更輸入影格,而只會設定對應的屬性,這會影響後續濾鏡(例如 fieldorderyadif)如何處理影格。

濾鏡接受以下選項

mode

提升高於偵測臨界值的頻率。

auto

保持相同的圖場屬性。

bff

將影格標記為底圖場優先。

tff

將影格標記為頂圖場優先。

prog

將影格標記為循序掃描。

11.230 setparams

強制輸出視訊影格的影格參數。

setparams 濾鏡標記輸出影格的交錯和色彩範圍。它不會變更輸入影格,而只會設定對應的屬性,這會影響濾鏡/編碼器如何處理影格。

field_mode

提升高於偵測臨界值的頻率。

auto

保持相同的圖場屬性(預設)。

bff

將影格標記為底圖場優先。

tff

將影格標記為頂圖場優先。

prog

將影格標記為循序掃描。

設定用於偵測濾鏡的偵測頻率(以 Hz 為單位),該偵測濾鏡用於觸發等化。預設值為 1000 Hz。允許範圍介於 2 和 1000000 Hz 之間。

提升高於偵測臨界值的頻率。

auto

保持相同的色彩範圍屬性(預設)。

unspecified, unknown

將影格標記為未指定的色彩範圍。

limited, tv, mpeg

將影格標記為有限範圍。

full, pc, jpeg

將影格標記為全範圍。

color_primaries

設定原色。可用值為

auto

保持相同的原色屬性(預設)。

bt709
unknown
bt470m
bt470bg
smpte170m
smpte240m
film
bt2020
smpte428
smpte431
smpte432
jedec-p22
color_trc

設定色彩傳輸。可用值為

auto

保持相同的色彩 trc 屬性(預設)。

bt709
unknown
bt470m
bt470bg
smpte170m
smpte240m
linear
log100
log316
iec61966-2-4
bt1361e
iec61966-2-1
bt2020-10
bt2020-12
smpte2084
smpte428
arib-std-b67
colorspace

設定色彩空間。可用值為

auto

保持相同的色彩空間屬性(預設)。

gbr
bt709
unknown
fcc
bt470bg
smpte170m
smpte240m
ycgco
bt2020nc
bt2020c
smpte2085
chroma-derived-nc
chroma-derived-c
ictcp
chroma_location

設定色度取樣位置。可用值為

auto

保持相同的色度位置(預設)。

unspecified, unknown
‘<samp>left</samp>’
center
topleft
top
bottomleft
bottom

11.231 sharpen_npp

使用 NVIDIA Performance Primitives (libnpp) 執行影像銳化,並具有邊框控制。

接受以下其他選項

border_type

要用於影格邊框的取樣類型。下列其中之一

replicate

複製像素值。

11.232 shear

將剪切變換套用至輸入視訊。

此濾鏡支援以下選項

shx

X 方向的剪切因子。預設值為 0。允許範圍為 -2 到 2。

shy

Y 方向的剪切因子。預設值為 0。允許範圍為 -2 到 2。

填滿顏色,c

設定用於填滿未被變換視訊覆蓋的輸出區域的顏色。如需此選項的通用語法,請查看 (ffmpeg-utils) ffmpeg-utils 手冊中的「顏色」章節。如果選擇特殊值 "none",則不會列印背景(例如,如果永遠不會顯示背景,則很有用)。

預設值為 "black"。

interp

設定內插類型。可以是 bilinearnearest。預設值為 bilinear

11.232.1 指令

此濾鏡支援以上所有選項作為 commands

11.233 showinfo

顯示包含每個輸入視訊影格各種資訊的行。輸入視訊未修改。

此濾鏡支援以下選項

顯示的行包含 key:value 形式的鍵/值對序列。

計算每個平面的檢查總和。依預設啟用。

udu_sei_as_ascii

盡可能嘗試以 ASCII 字元列印使用者資料未註冊 SEI,否則以十六進位格式列印。

設定將濾波後的樣本混合到最終輸出中的程度。允許範圍為 -1 到 1。預設值為 1。負值是特殊的,它們設定在最終濾波器輸出中保留多少濾波後的雜訊。將此選項設定為 -1 以聽到從輸入訊號中移除的實際雜訊。

測量音訊訊號失真比。

n

設定每個輸出音訊幀的樣本數。

pts

輸入影格的呈現時間戳記,以時間基底單位數表示。時間基底單位取決於濾鏡輸入填充。

nb_out_samples, n

輸入影格的呈現時間戳記,以秒數表示。

pad, p

像素格式名稱。

sar

輸入影格的取樣縱橫比,以 num/den 格式表示。

s

輸入影格的大小。如需此選項的語法,請查看 (ffmpeg-utils) ffmpeg-utils 手冊中的「視訊尺寸」章節

i

交錯模式的類型(「P」代表「循序掃描」、「T」代表頂圖場優先、「B」代表底圖場優先)。

iskey

如果影格是關鍵影格,則為 1,否則為 0。

將第二個聲道延遲 500 個樣本,將第三個聲道延遲 700 個樣本,並保持第一個聲道(和可能存在的任何其他聲道)不變。

輸入影格的圖片類型(「I」代表 I 影格、「P」代表 P 影格、「B」代表 B 影格,或「?」代表未知類型)。另請參閱 AVPictureType 列舉和 libavutil/avutil.h 中定義的 av_get_picture_type_char 函數的文件。

顯示的行包含 key:value 形式的鍵/值對序列。

輸入影格所有平面的 Adler-32 檢查總和(以十六進位列印)。

plane_checksum

輸入影格每個平面的 Adler-32 檢查總和(以十六進位列印),以 "[c0 c1 c2 c3]" 格式表示。

quintic

輸入影格每個平面中像素的平均值,以 "[mean0 mean1 mean2 mean3]" 格式表示。

stdev

輸入影格每個平面中像素值的標準差,以 "[stdev0 stdev1 stdev2 stdev3]" 格式表示。

11.234 showpalette

顯示每個影格的 256 色調色盤。此濾鏡僅與 pal8 像素格式影格相關。

設定柔削波的類型。

s

設定用於表示一個調色盤顏色條目的方塊大小。預設值為 30(適用於 30x30 像素方塊)。

11.235 shuffleframes

重新排序和/或複製和/或捨棄視訊影格。

它接受以下參數

mapping

設定輸入影格的目的索引。這是以空格或「|」分隔的索引清單,將輸入影格對應到輸出影格。索引數也會設定每個索引可能具有的最大值。「-1」索引具有特殊含義,表示捨棄影格。

第一個影格的索引為 0。預設值是保持輸入不變。

11.235.1 範例

  • 交換每三個輸入影格中的第二個和第三個影格
    ffmpeg -i INPUT -vf "shuffleframes=0 2 1" OUTPUT
    
  • 交換每十個輸入影格中的第十個和第一個影格
    ffmpeg -i INPUT -vf "shuffleframes=9 1 2 3 4 5 6 7 8 0" OUTPUT
    

11.236 shufflepixels

重新排序視訊影格中的像素。

此濾波器還能夠拉伸/壓縮音訊資料以使其與時間戳記匹配,或注入靜音/剪切音訊以使其與時間戳記匹配,執行兩者的組合或兩者都不執行。

套用 sigma 為 4.5 的去噪

設定混洗方向。可以是向前或反向方向。預設方向為向前。

設定空間亮度閾值。較低的值會增加交叉亮度的減少。

設定混洗模式。可以是水平、垂直或區塊模式。

width, w
超出範圍的像素將被鏡像像素替換。

設定混洗區塊大小。在水平混洗模式下,僅使用大小的寬度部分,而在垂直混洗模式下,僅使用大小的高度部分。

seed, s

設定用於混洗像素的隨機種子。主要用於設定能夠反轉濾鏡處理以取得原始輸入。例如,若要反轉向前混洗,您需要使用相同的參數和完全相同的種子,並將方向設定為反向。

11.237 shuffleplanes

重新排序和/或複製視訊平面。

它接受以下參數

map0

要用作第一個輸出平面的輸入平面的索引。

map1

要用作第二個輸出平面的輸入平面的索引。

map2

要用作第三個輸出平面的輸入平面的索引。

map3

要用作第四個輸出平面的輸入平面的索引。

第一個平面的索引為 0。預設值是保持輸入不變。

11.237.1 範例

  • 交換輸入的第二個和第三個平面
    ffmpeg -i INPUT -vf shuffleplanes=0:2:1:3 OUTPUT
    

11.238 signalstats

評估各種視覺指標,以協助判斷與類比視訊媒體數位化相關的問題。

依預設,濾鏡將記錄這些元資料值

YMIN

顯示輸入影格中包含的最小 Y 值。以 [0-255] 範圍表示。

YLOW

顯示輸入影格中第 10 個百分位數的 Y 值。以 [0-255] 範圍表示。

YAVG

顯示輸入影格中的平均 Y 值。以 [0-255] 範圍表示。

YHIGH

顯示輸入影格中第 90 個百分位數的 Y 值。以 [0-255] 範圍表示。

YMAX

顯示輸入影格中包含的最大 Y 值。以 [0-255] 範圍表示。

UMIN

顯示輸入影格中包含的最小 U 值。以 [0-255] 範圍表示。

ULOW

顯示輸入影格中第 10 個百分位數的 U 值。以 [0-255] 範圍表示。

UAVG

顯示輸入影格中的平均 U 值。以 [0-255] 範圍表示。

UHIGH

顯示輸入影格中第 90 個百分位數的 U 值。以 [0-255] 範圍表示。

UMAX

顯示輸入影格中包含的最大 U 值。以 [0-255] 範圍表示。

VMIN

顯示輸入影格中包含的最小 V 值。以 [0-255] 範圍表示。

VLOW

顯示輸入影格中第 10 個百分位數的 V 值。以 [0-255] 範圍表示。

VAVG

顯示輸入影格中的平均 V 值。以 [0-255] 範圍表示。

VHIGH

顯示輸入影格中第 90 個百分位數的 V 值。以 [0-255] 範圍表示。

VMAX

顯示輸入影格中包含的最大 V 值。以 [0-255] 範圍表示。

SATMIN

顯示輸入影格中包含的最小飽和度值。以 [0-~181.02] 範圍表示。

SATLOW

顯示輸入影格中第 10 個百分位數的飽和度值。以 [0-~181.02] 範圍表示。

SATAVG

顯示輸入影格中的平均飽和度值。以 [0-~181.02] 範圍表示。

SATHIGH

顯示輸入影格中第 90 個百分位數的飽和度值。以 [0-~181.02] 範圍表示。

SATMAX

顯示輸入影格中包含的最大飽和度值。以 [0-~181.02] 範圍表示。

HUEMED

顯示輸入影格中色相的中位數值。以 [0-360] 範圍表示。

HUEAVG

顯示輸入影格中色相的平均值。以 [0-360] 範圍表示。

YDIF

顯示目前影格中 Y 平面的所有值與先前輸入影格的對應值之間的取樣值差異平均值。以 [0-255] 範圍表示。

UDIF

顯示目前影格中 U 平面的所有值與先前輸入影格的對應值之間的取樣值差異平均值。以 [0-255] 範圍表示。

VDIF

顯示目前影格中 V 平面的所有值與先前輸入影格的對應值之間的取樣值差異平均值。以 [0-255] 範圍表示。

YBITDEPTH

顯示目前影格中 Y 平面的位元深度。以 [0-16] 範圍表示。

UBITDEPTH

顯示目前影格中 U 平面的位元深度。以 [0-16] 範圍表示。

VBITDEPTH

顯示目前影格中 V 平面的位元深度。以 [0-16] 範圍表示。

濾鏡接受以下選項

stat
out

stat 指定影像分析的其他形式。out 輸出具有指定類型像素突顯的視訊。

兩個選項都接受以下值

tout

識別 時間離群值 像素。時間離群值 是與同一圖場的鄰近像素不同的像素。時間離群值的範例包括視訊遺失、磁頭堵塞或磁帶追蹤問題的結果。

vrep

識別 垂直線重複。垂直線重複包括影格內相似的像素行。在原生數位視訊中,垂直線重複很常見,但此模式在從類比來源數位化的視訊中不常見。當它發生在從類比來源數位化產生的視訊中時,可能表示來自遺失補償器的隱藏。

brng

識別超出合法廣播範圍的像素。

向 hd720 視訊大小的 rgb 輸入新增波紋效果

out 選項設定突顯顏色。預設顏色為黃色。

11.238.1 範例

  • 輸出各種視訊指標的資料
    ffprobe -f lavfi movie=example.mov,signalstats="stat=tout+vrep+brng" -show_frames
    
  • 輸出每個影格 Y 平面最小值和最大值的特定資料
    ffprobe -f lavfi movie=example.mov,signalstats -show_entries frame_tags=lavfi.signalstats.YMAX,lavfi.signalstats.YMIN
    
  • 播放視訊,同時以紅色突顯超出廣播範圍的像素。
    ffplay example.mov -vf signalstats="out=brng:color=red"
    
  • 播放視訊,並在影格上繪製 signalstats 元資料。
    ffplay example.mov -vf signalstats=stat=brng+vrep+tout,drawtext=fontfile=FreeSerif.ttf:textfile=signalstat_drawtext.txt
    

    命令中使用的 signalstat_drawtext.txt 的內容為

    time %{pts:hms}
    Y (%{metadata:lavfi.signalstats.YMIN}-%{metadata:lavfi.signalstats.YMAX})
    U (%{metadata:lavfi.signalstats.UMIN}-%{metadata:lavfi.signalstats.UMAX})
    V (%{metadata:lavfi.signalstats.VMIN}-%{metadata:lavfi.signalstats.VMAX})
    saturation maximum: %{metadata:lavfi.signalstats.SATMAX}
    
    

11.239 signature

計算 MPEG-7 視訊簽章。濾鏡可以處理多個輸入。在這種情況下,還可以額外計算輸入之間的匹配。濾鏡始終傳遞第一個輸入。每個串流的簽章可以寫入檔案。

設定視窗長度,以樣本為單位。預設值為 2048。允許範圍為 32 到 65536。

detectmode

啟用或停用匹配程序。

提升高於偵測臨界值的頻率。

設定偵測濾鏡的類型,可以是以下之一

停用匹配計算(預設)。

full

計算整個視訊的匹配,並輸出整個視訊是否匹配或僅部分匹配。

fast

僅計算到找到匹配或視訊結束。在某些情況下應該更快。

nb_inputs

設定輸入數量。選項值必須是非負整數。預設值為 1。

ry

設定輸出寫入的路徑。如果有多個輸入,路徑必須是原型,即必須包含 %d 或 %0nd(其中 n 是正整數),這將被輸入編號取代。如果未指定檔案名稱,則不會寫入任何輸出。這是預設值。

format

選擇輸出格式。

提升高於偵測臨界值的頻率。

binary

使用指定的二進位表示法(預設)。

xml

使用指定的 XML 表示法。

th_d

設定閾值以偵測一個單字是否相似。選項值必須是> 0 的整數。預設值為 9000。

th_dc

設定閾值以偵測所有單字是否相似。選項值必須是> 0 的整數。預設值為 60000。

th_xh

設定閾值以偵測影格是否相似。選項值必須是> 0 的整數。預設值為 116。

th_di

設定序列的最小長度(以影格為單位),以將其識別為匹配序列。選項值必須是非負整數值。預設值為 0。

th_it

設定最小關係,即匹配影格必須具有與所有影格的關係。選項值必須是介於 0 和 1 之間的雙精度值。預設值為 0.5。

11.239.1 範例

  • 若要計算輸入視訊的簽章並將其儲存在 signature.bin 中
    ffmpeg -i input.mkv -vf signature=filename=signature.bin -map 0:v -f null -
    
  • 若要偵測兩個視訊是否匹配,並以 XML 格式將簽章儲存在 signature0.xml 和 signature1.xml 中
    ffmpeg -i input1.mkv -i input2.mkv -filter_complex "[0:v][1:v] signature=nb_inputs=2:detectmode=full:format=xml:filename=signature%d.xml" -map :v -f null -
    

11.240 siti

計算視訊的空間資訊 (SI) 和時間資訊 (TI) 分數,如 ITU-T Rec. P.910 (11/21) 中定義:多媒體應用程式的主觀視訊品質評估方法。可用的 PDF 位於 https://www.itu.int/rec/T-REC-P.910-202111-S/en。請注意,這是對應於已取代建議的舊版實作。如需最新版本,請參閱 ITU-T Rec. P.910 (07/22):https://www.itu.int/rec/T-REC-P.910-202207-I/en

設定柔削波的類型。

print_summary

如果設定為 1,摘要統計資料將列印到主控台。預設值為 0。

11.240.1 範例

  • 若要計算 SI/TI 指標並列印摘要
    ffmpeg -i input.mp4 -vf siti=print_summary=1 -f null -
    

11.241 smartblur

模糊輸入視訊,而不影響輪廓。

設定視窗長度,以樣本為單位。預設值為 2048。允許範圍為 32 到 65536。

luma_radius, lr

設定亮度半徑。選項值必須是 [0.1,5.0] 範圍內的浮點數,指定用於模糊影像的高斯濾鏡的變異數(值越大速度越慢)。預設值為 1.0。

luma_strength, ls

設定亮度強度。選項值必須是 [-1.0,1.0] 範圍內的浮點數,設定模糊程度。包含在 [0.0,1.0] 中的值將模糊影像,而包含在 [-1.0,0.0] 中的值將銳化影像。預設值為 1.0。

亮度閾值,lt

設定亮度閾值,用作係數以判斷是否應模糊像素。選項值必須是 [-30,30] 範圍內的整數。值為 0 將過濾整個影像,包含在 [0,30] 中的值將過濾平面區域,而包含在 [-30,0] 中的值將過濾邊緣。預設值為 0。

chroma_radius, cr

設定色度半徑。選項值必須是 [0.1,5.0] 範圍內的浮點數,指定用於模糊影像的高斯濾鏡的變異數(值越大速度越慢)。預設值為 luma_radius

chroma_strength, cs

設定色度強度。選項值必須是 [-1.0,1.0] 範圍內的浮點數,設定模糊程度。包含在 [0.0,1.0] 中的值將模糊影像,而包含在 [-1.0,0.0] 中的值將銳化影像。預設值為 luma_strength

色度閾值,ct

設定色度閾值,用作係數以判斷是否應模糊像素。選項值必須是 [-30,30] 範圍內的整數。值為 0 將過濾整個影像,包含在 [0,30] 中的值將過濾平面區域,而包含在 [-30,0] 中的值將過濾邊緣。預設值為 luma_threshold

alpha_radius, ar

設定 Alpha 半徑。選項值必須是 [0.1,5.0] 範圍內的浮點數,指定用於模糊影像的高斯濾鏡的變異數(值越大速度越慢)。預設值為 luma_radius

Alpha 強度,as

設定 Alpha 強度。選項值必須是 [-1.0,1.0] 範圍內的浮點數,設定模糊程度。包含在 [0.0,1.0] 中的值將模糊影像,而包含在 [-1.0,0.0] 中的值將銳化影像。預設值為 luma_strength

Alpha 閾值,at

設定 Alpha 閾值,用作係數以判斷是否應模糊像素。選項值必須是 [-30,30] 範圍內的整數。值為 0 將過濾整個影像,包含在 [0,30] 中的值將過濾平面區域,而包含在 [-30,0] 中的值將過濾邊緣。預設值為 luma_threshold

如果未明確設定色度或 Alpha 選項,則會設定對應的亮度值。

11.242 sobel

將索伯運算元套用至輸入視訊串流。

stages

planes

設定將處理哪些平面,未處理的平面將被複製。預設值為 0xf,所有平面都將被處理。

scale

設定將與濾鏡結果相乘的值。

delta

設定將新增到濾鏡結果的值。

11.242.1 指令

此濾鏡支援以上所有選項作為 commands

11.243 spp

套用簡單的後處理濾鏡,該濾鏡在多個(或在 quality 等級 6 的情況下為所有)位移中壓縮和解壓縮影像,並平均結果。

濾鏡接受以下選項

quality

設定品質。此選項定義用於平均的等級數。它接受範圍 0-6 的整數。如果設定為 0,則濾鏡將不會有任何效果。值為 6 表示品質較高。對於該值的每次遞增,速度會下降大約 2 倍。預設值為 3

qp

強制恆定量化參數。如果未設定,濾鏡將使用來自視訊串流的 QP(如果可用)。

mode

設定閾值模式。可用的模式為

hard

設定硬閾值(預設)。

soft

設定軟閾值(去環狀效應更好,但可能更模糊)。

use_bframe_qp

如果設定為 1,則啟用 B 影格中 QP 的使用。使用此選項可能會導致閃爍,因為 B 影格通常具有更大的 QP。預設值為 0(未啟用)。

11.243.1 指令

此濾波器支援以下指令

品質,等級

設定品質等級。值 max 可用於設定最大等級,目前為 6

11.244 sr

透過套用基於卷積神經網路的超解析度方法來縮放輸入。支援的模型

訓練腳本以及用於模型檔案 (.pb) 儲存的腳本可以在 https://github.com/XueweiMeng/sr/tree/sr_dnn_native 中找到。原始儲存庫位於 https://github.com/HighVoltageRocknRoll/sr.git

濾鏡接受以下選項

如果兩者混合。

預設值為 ‘4’。

通過簡單地內插周圍的像素來抑制電視台標誌。只需設定一個覆蓋標誌的矩形,然後觀看它消失(有時甚至會出現更醜陋的東西 - 效果因情況而異)。

x

指定標誌的左上角坐標。它們必須指定。

設定模型檔案的路徑,指定網路架構及其參數。請注意,不同的後端使用不同的檔案格式。TensorFlow、OpenVINO 後端只能載入其格式的檔案。

scale_factor

設定 SRCNN 模型的縮放因子。允許值為 234。預設值為 2。縮放因子對於 SRCNN 模型是必要的,因為它接受使用雙立方放大並具有適當縮放因子的放大輸入。

指定要清除的標誌的寬度和高度。它們必須指定。

11.245 ssim

取得兩個輸入視訊之間的 SSIM(結構相似性指標)。

此濾鏡接受兩個輸入視訊,第一個輸入被視為「主要」來源,並按原樣傳遞到輸出。第二個輸入用作計算 SSIM 的「參考」視訊。

兩個視訊輸入必須具有相同的解析度和像素格式,此濾鏡才能正常運作。此外,它假設兩個輸入具有相同的影格數,這些影格會逐一比較。

濾鏡儲存每個影格的計算 SSIM。

接受的參數說明如下。

stats_file, f

如果指定,濾鏡將使用指定的檔案來儲存每個個別影格的 SSIM。當檔案名稱等於 "-" 時,資料會傳送到標準輸出。

如果選取 stats_file,則印出的檔案包含每個比較的影格對的 key:value 形式的鍵/值對序列。

以下是每個顯示參數的說明

n

輸入影格的循序編號,從 1 開始

Y、U、V、R、G、B

針對後綴指定的元件,比較影格的 SSIM。

全部

針對整個影格,比較影格的 SSIM。

dB

與上述相同,但在 dB 表示法中。

此濾鏡也支援 framesync 選項。

11.245.1 範例

  • 例如
    movie=ref_movie.mpg, setpts=PTS-STARTPTS [main];
    [main][ref] ssim="stats_file=stats.log" [out]
    

    在此範例中,正在處理的輸入檔案會與參考檔案 ref_movie.mpg 進行比較。每個個別影格的 SSIM 儲存在 stats.log 中。

  • 另一個同時具有 psnr 和 ssim 的範例
    ffmpeg -i main.mpg -i ref.mpg -lavfi  "ssim;[0:v][1:v]psnr" -f null -
    
  • 另一個具有不同容器的範例
    ffmpeg -i main.mpg -i ref.mkv -lavfi  "[0:v]settb=AVTB,setpts=PTS-STARTPTS[main];[1:v]settb=AVTB,setpts=PTS-STARTPTS[ref];[main][ref]ssim" -f null -
    

11.246 stereo3d

在不同的立體影像格式之間轉換。

濾鏡接受以下選項

in

設定輸入的立體影像格式。

輸入影像格式的可用值為

sbsl

並排平行(左眼左側,右眼右側)

sbsr

並排交叉眼(右眼左側,左眼右側)

sbs2l

並排平行,解析度為半寬(左眼左側,右眼右側)

sbs2r

並排交叉眼,解析度為半寬(右眼左側,左眼右側)

abl
tbl

上下(左眼在上,右眼在下)

abr
tbr

上下(右眼在上,左眼在下)

ab2l
tb2l

上下,解析度為半高(左眼在上,右眼在下)

ab2r
tb2r

上下,解析度為半高(右眼在上,左眼在下)

al

交替影格(左眼優先,右眼第二個)

ar

交替影格(右眼優先,左眼第二個)

irl

交錯列(左眼具有頂列,右眼從下一列開始)

irr

交錯列(右眼具有頂列,左眼從下一列開始)

icl

交錯欄,左眼優先

icr

交錯欄,右眼優先

預設值為 ‘sbsl’。

out

設定輸出的立體影像格式。

sbsl

並排平行(左眼左側,右眼右側)

sbsr

並排交叉眼(右眼左側,左眼右側)

sbs2l

並排平行,解析度為半寬(左眼左側,右眼右側)

sbs2r

並排交叉眼,解析度為半寬(右眼左側,左眼右側)

abl
tbl

上下(左眼在上,右眼在下)

abr
tbr

上下(右眼在上,左眼在下)

ab2l
tb2l

上下,解析度為半高(左眼在上,右眼在下)

ab2r
tb2r

上下,解析度為半高(右眼在上,左眼在下)

al

交替影格(左眼優先,右眼第二個)

ar

交替影格(右眼優先,左眼第二個)

irl

交錯列(左眼具有頂列,右眼從下一列開始)

irr

交錯列(右眼具有頂列,左眼從下一列開始)

arbg

浮雕紅/藍灰階(左眼紅色濾鏡,右眼藍色濾鏡)

argg

浮雕紅/綠灰階(左眼紅色濾鏡,右眼綠色濾鏡)

arcg

浮雕紅/青灰階(左眼紅色濾鏡,右眼青色濾鏡)

arch

浮雕紅/青半彩色(左眼紅色濾鏡,右眼青色濾鏡)

arcc

浮雕紅/青彩色(左眼紅色濾鏡,右眼青色濾鏡)

arcd

浮雕紅/青彩色,使用杜布瓦最小平方投影最佳化(左眼紅色濾鏡,右眼青色濾鏡)

agmg

浮雕綠/洋紅灰階(左眼綠色濾鏡,右眼洋紅色濾鏡)

agmh

浮雕綠/洋紅半彩色(左眼綠色濾鏡,右眼洋紅色濾鏡)

agmc

浮雕綠/洋紅色(左眼綠色濾鏡,右眼洋紅色濾鏡)

agmd

浮雕綠/洋紅彩色,使用杜布瓦最小平方投影最佳化(左眼綠色濾鏡,右眼洋紅色濾鏡)

aybg

浮雕黃/藍灰階(左眼黃色濾鏡,右眼藍色濾鏡)

aybh

浮雕黃/藍半彩色(左眼黃色濾鏡,右眼藍色濾鏡)

aybc

浮雕黃/藍彩色(左眼黃色濾鏡,右眼藍色濾鏡)

aybd

浮雕黃/藍彩色,使用杜布瓦最小平方投影最佳化(左眼黃色濾鏡,右眼藍色濾鏡)

ml

單聲道輸出(僅限左眼)

mr

單聲道輸出(僅限右眼)

chl

棋盤格,左眼優先

chr

棋盤格,右眼優先

icl

交錯欄,左眼優先

icr

交錯欄,右眼優先

hdmi

HDMI 影格封裝

預設值為 ‘arcd’。

11.246.1 範例

  • 將輸入視訊從並排平行轉換為浮雕黃/藍杜布瓦
    stereo3d=sbsl:aybd
    
  • 將輸入視訊從上下(左眼在上,右眼在下)轉換為並排交叉眼。
    stereo3d=abl:sbsr
    

11.247 streamselect, astreamselect

選取視訊或音訊串流。

濾鏡接受以下選項

inputs

設定輸入數量。預設值為 2。

block_size, b

設定要重新對應到輸出的輸入索引。

11.247.1 指令

streamselectastreamselect 濾鏡支援以下命令

block_size, b

設定要重新對應到輸出的輸入索引。

11.247.2 範例

  • 選取前 5 秒的第一個串流,其餘時間選取第二個串流
    sendcmd='5.0 streamselect map 1',streamselect=inputs=2:map=0
    
  • 與上述相同,但適用於音訊
    asendcmd='5.0 astreamselect map 1',astreamselect=inputs=2:map=0
    

11.248 subtitles

使用 libass 函式庫在輸入視訊頂部繪製字幕。

若要啟用此濾鏡的編譯,您需要使用 --enable-libass 配置 FFmpeg。此濾鏡還需要使用 libavcodec 和 libavformat 進行建置,才能將傳遞的字幕檔案轉換為 ASS(Advanced Substation Alpha)字幕格式。

濾鏡接受以下選項

檔案名稱,f

設定要讀取的字幕檔案的檔案名稱。必須指定。

original_size

指定原始視訊的大小,即 ASS 檔案所撰寫的視訊。如需此選項的語法,請查看 (ffmpeg-utils) ffmpeg-utils 手冊中的「視訊尺寸」章節。由於 ASS 縱橫比算術中的錯誤設計,如果縱橫比已變更,則必須這樣做才能正確縮放字型。

fontsdir

設定包含濾鏡可使用字型的目錄路徑。這些字型將與字型提供者使用的任何字型一起使用。

range, r

處理 Alpha 通道,依預設 Alpha 通道保持不變。

charenc

設定字幕輸入字元編碼。僅限 subtitles 濾鏡。僅在不是 UTF-8 時有用。

stream_index,si

設定字幕串流索引。僅限 subtitles 濾鏡。

force_style

覆寫字幕的預設樣式或腳本資訊參數。它接受一個字串,其中包含以 ASS 樣式格式 KEY=VALUE 配對,並以 "," 分隔。

wrap_unicode

根據 Unicode 行分隔演算法換行。可用性至少需要 libass 版本 0.17.0(或 LIBASS_VERSION 0x01600010), libass 必須已使用 libunibreak 建置。

依預設啟用此選項,但原生 ASS 除外。

如果未指定第一個鍵,則假定第一個值指定 filename

例如,若要在輸入視訊頂部呈現檔案 sub.srt,請使用命令

subtitles=sub.srt

這相當於

subtitles=filename=sub.srt

若要從檔案 video.mkv 呈現預設字幕串流,請使用

subtitles=video.mkv

若要從該檔案呈現第二個字幕串流,請使用

subtitles=video.mkv:si=1

若要使來自 sub.srt 的字幕串流以 80% 透明藍色 DejaVu Serif 顯示,請使用

subtitles=sub.srt:force_style='Fontname=DejaVu Serif,PrimaryColour=&HCCFF0000'

11.249 super2xsai

使用 Super2xSaI(縮放和內插)像素藝術縮放演算法將輸入縮放 2 倍並平滑化。

適用於放大像素藝術影像,而不會降低清晰度。

11.250 swaprect

交換視訊中的兩個矩形物件。

此濾波器還能夠拉伸/壓縮音訊資料以使其與時間戳記匹配,或注入靜音/剪切音訊以使其與時間戳記匹配,執行兩者的組合或兩者都不執行。

f

設定物件寬度。

h

設定物件高度。

x1

設定第一個矩形的 x 座標。

y1

設定第一個矩形的 y 座標。

x2

設定第二個矩形的 x 座標。

y2

設定第二個矩形的 y 座標。

所有表達式都會針對每個影格評估一次。

所有選項都是包含以下常數的表達式

f
h

輸入寬度和高度。

a

w / h 相同

sar

輸入樣本縱橫比

dar

expansion

n

輸入影格的編號,從 0 開始。

設定傳輸表達式。

以秒為單位表示的時間戳記。如果輸入時間戳記未知,則為 NAN。

pos

輸入影格在檔案中的位置,如果未知,則為 NAN;已棄用,請勿使用

11.250.1 指令

此濾鏡支援以上所有選項作為 commands

11.251 swapuv

交換 U 和 V 平面。

11.252 tblend

混合連續視訊影格。

請參閱 blend

11.253 telecine

將電視電影程序套用至視訊。

此濾波器還能夠拉伸/壓縮音訊資料以使其與時間戳記匹配,或注入靜音/剪切音訊以使其與時間戳記匹配,執行兩者的組合或兩者都不執行。

指定用於運動搜尋的區塊大小。範圍 4-128 像素,預設值為 8。
contrast

指定區塊的對比度閾值。僅考慮對比度(最暗像素和最亮像素之間的差異)大於指定對比度的區塊。範圍 1-255,預設值為 125。

search

指定搜尋策略。可用的值為

exhaustive, 0

設定窮盡搜尋

Some typical patterns:

NTSC output (30i):
27.5p: 32222
24p: 23 (classic)
24p: 2332 (preferred)
20p: 33
18p: 334
16p: 3444

PAL output (25i):
27.5p: 12222
24p: 222222222223 ("Euro pulldown")
16.67p: 33
16p: 33333334

11.254 thistogram

計算並繪製輸入視訊在時間軸上的色彩分佈長條圖。

與僅顯示特定時間單個輸入影格長條圖的 histogram 視訊濾鏡不同,此濾鏡也顯示由 width 選項定義的影格數的過去長條圖。

計算出的直方圖是影像中色彩組件分布的表示。

濾鏡接受以下選項

width, w

設定單個色彩元件輸出的寬度。預設值為 0。值 0 表示寬度將從輸入視訊中選取。這也會設定要保留的已傳遞長條圖的數量。允許範圍為 [0, 8192]。

display_mode,d

設定顯示模式。它接受以下值

stack

每個色彩組件圖形彼此堆疊放置。

parade

每個色彩組件圖形並排放置。

overlay

呈現與 parade 中相同的資訊,除了表示色彩組件的圖形直接相互疊加。

預設值為 stack

levels_mode,m

設定模式。可以是 linearlogarithmic。預設值為 linear

components,c

設定要顯示的色彩組件。預設值為 7

bgopacity,b

設定背景不透明度。預設值為 0.9

envelope,e

顯示包絡線。預設為停用。

ecolor,ec

設定包絡線顏色。預設值為 gold

replace

如果輸入具有 alpha,則適用。值為 1 時,繪製框的像素將覆蓋視訊的顏色和 alpha 像素。預設值為 0,它將框複合到輸入上,使視訊的 alpha 保持不變。

用於 xywh 以及 t 的參數是包含以下常數的表達式

frame

dar

輸入顯示縱橫比,它與 (w / h) * sar 相同。

in_h, ih

in_w, iw

sar

輸入樣本縱橫比。

x, box_x

y, box_y

框的繪製位置的 x 和 y 偏移坐標。

預設值為 replace

11.255 threshold

將閾值效果套用至視訊串流。

此濾鏡需要四個視訊串流才能執行閾值處理。第一個串流是我們要過濾的串流。第二個串流保存閾值,第三個串流保存最小值,最後第四個串流保存最大值。

stages

planes

設定將處理哪些平面,未處理的平面將被複製。預設值為 0xf,所有平面都將被處理。

例如,如果第一個串流像素的元件值小於來自第二個閾值串流的像素元件的閾值,則將選取第三個串流值,否則將選取第四個串流像素元件值。

使用色彩來源濾鏡,可以執行各種閾值處理

11.255.1 指令

此濾鏡支援與 命令 相同的所有選項。

11.255.2 範例

  • 二元閾值,使用灰色作為閾值
    ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=black -f lavfi -i color=white -lavfi threshold output.avi
    
  • 反轉二元閾值,使用灰色作為閾值
    ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=white -f lavfi -i color=black -lavfi threshold output.avi
    
  • 截斷二元閾值,使用灰色作為閾值
    ffmpeg -i 320x240.avi -f lavfi -i color=gray -i 320x240.avi -f lavfi -i color=gray -lavfi threshold output.avi
    
  • 閾值歸零,使用灰色作為閾值
    ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=white -i 320x240.avi -lavfi threshold output.avi
    
  • 反轉閾值歸零,使用灰色作為閾值
    ffmpeg -i 320x240.avi -f lavfi -i color=gray -i 320x240.avi -f lavfi -i color=white -lavfi threshold output.avi
    

11.256 thumbnail

在給定連續影格序列中選取最具代表性的影格。

濾鏡接受以下選項

n

設定要分析的影格批次大小;在一組 n 個影格中,濾鏡將選取其中一個,然後處理下一個批次的 n 個影格,直到結束。預設值為 100

log

設定記錄層級以顯示選取的影格統計資料。預設值為 info

由於濾鏡會追蹤整個影格序列,因此較大的 n 值將導致更高的記憶體使用量,因此不建議使用較高的值。

11.256.1 範例

  • 每 50 個影格擷取一張圖片
    thumbnail=50
    
  • 使用 ffmpeg 建立縮圖的完整範例
    ffmpeg -i in.avi -vf thumbnail,scale=300:200 -frames:v 1 out.png
    

11.257 tile

將多個連續影格平鋪在一起。

untile 濾鏡可以執行相反的操作。

濾鏡接受以下選項

layout

COLUMNSxROWS 格式設定網格大小。範圍最多為 UINT_MAX 個儲存格。預設值為 6x5

nb_frames

設定要在給定區域中呈現的最大影格數。它必須小於或等於 wxh。預設值為 0,表示將使用所有區域。

margin

以像素為單位設定外邊框邊距。範圍為 0 到 1024。預設值為 0

padding

設定內邊框厚度(即影格之間的像素數)。如需更進階的填充選項(例如,邊緣具有不同的值),請參閱 pad 視訊濾鏡。範圍為 0 到 1024。預設值為 0

color

指定未使用區域的顏色。如需此選項的語法,請查看 (ffmpeg-utils) ffmpeg-utils 手冊中的「顏色」章節color 的預設值為 "black"。

overlap

設定在將多個連續影格平鋪在一起時要重疊的影格數。該值必須介於 0nb_frames - 1 之間。預設值為 0

init_padding

設定在顯示第一個輸出影格之前最初要為空的影格數。這控制著何時會獲得第一個輸出影格。該值必須介於 0nb_frames - 1 之間。預設值為 0

11.257.1 範例

  • 產生電影中所有關鍵影格 (-skip_frame nokey) 的 8x8 PNG 圖塊
    ffmpeg -skip_frame nokey -i file.avi -vf 'scale=128:72,tile=8x8' -an -vsync 0 keyframes%03d.png
    

    -vsync 0 是必要的,以防止 ffmpeg 複製每個輸出影格以適應最初偵測到的影格速率。

  • 3x2 影格的區域中顯示 5 張圖片,它們之間有 7 個像素,初始邊距為 2 像素,使用混合的平面和具名選項
    tile=3x2:nb_frames=5:padding=7:margin=2
    

11.258 tiltandshift

套用傾斜偏移效果。

當您反轉時間和空間時會發生什麼事?

通常,視訊由多個影格組成,這些影格代表不同的時間瞬間,並顯示在影格捕捉的空間中演進的場景。此濾鏡是該概念的對立面,其靈感來自傾斜和偏移攝影。

已濾鏡處理的影格包含組成序列的整個事件時間軸,這是透過將每個影格的像素切片放入單個影格中來獲得的。但是,由於沒有無限寬度的影格,因此這是完成到輸入影格的寬度,並且視訊是透過為每個後續影格移開一個欄來重新組成的。為了將空間映射到時間,濾鏡也會傾斜每個輸入影格,以便保留運動。這是透過從每個輸入影格逐步選取不同的欄來完成的。

最終結果是一種反轉視差,因此遠處的物件比前方的物件移動得更快。此視訊效果的理想條件是,當運動非常少且背景靜態,或者當運動很多且景深非常寬時(例如,寬廣的全景圖,同時在火車上移動)。

此濾波器接受以下參數

tilt

在移位時傾斜視訊(預設)。取消設定時,視訊將滑動靜態影像,該影像由每個影格的第一欄組成。

start

在濾鏡處理開始時要執行的操作(請參閱下文)。

此濾波器允許設定自訂、比高通濾波器更陡峭的滾降,因此能夠更多地衰減阻帶中的頻率內容。

在濾鏡處理結束時要執行的操作(請參閱下文)。

hold

在濾鏡處理開始之前應經過多少欄。

pad

在濾鏡處理結束之前應插入多少欄。

通常,濾鏡會從第一個影格開始移位和傾斜,並在收到最後一個影格時停止。但是,在濾鏡處理開始之前,可以保留正常視訊,以便效果慢慢移位到位。同樣地,最後一個視訊影格可能會在結束時重新建構。或者,可以只以黑色開始和結束。

none

濾鏡處理立即開始,並在收到最後一個影格時結束。

frame

第一個影格或最後一個影格在處理期間保持不變。

black

黑色在濾鏡處理的開始或結束時填充。

11.259 tinterlace

執行各種時間圖場交錯類型。

影格從 1 開始計數,因此第一個輸入影格被視為奇數。

濾鏡接受以下選項

mode

指定交錯模式。此選項也可以單獨指定為一個值。請參閱下文以取得此選項的值清單。

提升高於偵測臨界值的頻率。

merge, 0

將奇數影格移動到上部圖場,將偶數影格移動到下部圖場,以一半的影格速率產生雙倍高度的影格。

 ------> time
Input:
Frame 1         Frame 2         Frame 3         Frame 4

11111           22222           33333           44444
11111           22222           33333           44444
11111           22222           33333           44444
11111           22222           33333           44444

Output:
11111                           33333
22222                           44444
11111                           33333
22222                           44444
11111                           33333
22222                           44444
11111                           33333
22222                           44444
drop_even, 1

僅輸出奇數影格,偶數影格會被捨棄,以一半的影格速率產生高度不變的影格。

 ------> time
Input:
Frame 1         Frame 2         Frame 3         Frame 4

11111           22222           33333           44444
11111           22222           33333           44444
11111           22222           33333           44444
11111           22222           33333           44444

Output:
11111                           33333
11111                           33333
11111                           33333
11111                           33333
drop_odd, 2

僅輸出偶數影格,奇數影格會被捨棄,以一半的影格速率產生高度不變的影格。

 ------> time
Input:
Frame 1         Frame 2         Frame 3         Frame 4

11111           22222           33333           44444
11111           22222           33333           44444
11111           22222           33333           44444
11111           22222           33333           44444

Output:
                22222                           44444
                22222                           44444
                22222                           44444
                22222                           44444
pad, 3

將每個影格擴展到全高,但用黑色填充交替線條,以相同的輸入影格速率產生雙倍高度的影格。

 ------> time
Input:
Frame 1         Frame 2         Frame 3         Frame 4

11111           22222           33333           44444
11111           22222           33333           44444
11111           22222           33333           44444
11111           22222           33333           44444

Output:
11111           .....           33333           .....
.....           22222           .....           44444
11111           .....           33333           .....
.....           22222           .....           44444
11111           .....           33333           .....
.....           22222           .....           44444
11111           .....           33333           .....
.....           22222           .....           44444
interleave_top, 4

交錯奇數影格的上半圖場與偶數影格的下半圖場,產生高度不變但影格率減半的影格。

 ------> time
Input:
Frame 1         Frame 2         Frame 3         Frame 4

11111<-         22222           33333<-         44444
11111           22222<-         33333           44444<-
11111<-         22222           33333<-         44444
11111           22222<-         33333           44444<-

Output:
11111                           33333
22222                           44444
11111                           33333
22222                           44444
interleave_bottom, 5

交錯奇數影格的下半圖場與偶數影格的上半圖場,產生高度不變但影格率減半的影格。

 ------> time
Input:
Frame 1         Frame 2         Frame 3         Frame 4

11111           22222<-         33333           44444<-
11111<-         22222           33333<-         44444
11111           22222<-         33333           44444<-
11111<-         22222           33333<-         44444

Output:
22222                           44444
11111                           33333
22222                           44444
11111                           33333
interlacex2, 6

在高度不變的情況下,將影格率加倍。插入的每個影格都包含前一個輸入影格的第二個時間圖場和下一個輸入影格的第一個時間圖場。此模式依賴 top_field_first 旗標。適用於沒有圖場同步的交錯視訊顯示器。

 ------> time
Input:
Frame 1         Frame 2         Frame 3         Frame 4

11111           22222           33333           44444
 11111           22222           33333           44444
11111           22222           33333           44444
 11111           22222           33333           44444

Output:
11111   22222   22222   33333   33333   44444   44444
 11111   11111   22222   22222   33333   33333   44444
11111   22222   22222   33333   33333   44444   44444
 11111   11111   22222   22222   33333   33333   44444
mergex2, 7

將奇數影格移動到上半圖場,偶數影格移動到下半圖場,產生高度加倍但影格率不變的影格。

 ------> time
Input:
Frame 1         Frame 2         Frame 3         Frame 4

11111           22222           33333           44444
11111           22222           33333           44444
11111           22222           33333           44444
11111           22222           33333           44444

Output:
11111           33333           33333           55555
22222           22222           44444           44444
11111           33333           33333           55555
22222           22222           44444           44444
11111           33333           33333           55555
22222           22222           44444           44444
11111           33333           33333           55555
22222           22222           44444           44444

數值已被棄用,但為了向後相容性而接受。

預設模式為 merge

flags

指定影響濾鏡處理的旗標。

flags 的可用值為

low_pass_filter, vlpf

在濾波器中啟用線性垂直低通濾波。當從包含高頻垂直細節的漸進式來源建立交錯目的地時,需要垂直低通濾波。濾波將減少交錯「閃爍」和摩爾紋圖案。

complex_filter, cvlpf

啟用複雜垂直低通濾波。這將稍微減少交錯「閃爍」和摩爾紋圖案,但更好地保留細節和主觀清晰度印象。

bypass_il

繞過已交錯的影格,僅調整影格率。

垂直低通濾波和繞過已交錯的影格只能針對 mode interleave_topinterleave_bottom 啟用。

11.260 tmedian

從連續的輸入視訊影格中選取中位數像素。

濾鏡接受以下選項

設定虛擬喇叭的仰角,單位為度。預設值為 0。

設定中位數濾波器的半徑。預設值為 1。允許範圍為 1 到 127。

planes

設定要濾波的平面。預設值為 15,表示處理所有平面。

percentile

設定中位數百分位數。預設值為 0.5。預設值 0.5 將始終選取中位數,而 0 將選取最小值,1 將選取最大值。

11.260.1 指令

此濾波器支援上述所有選項作為指令,排除選項 radius

11.261 tmidequalizer

套用時間中途視訊均衡效果。

中途視訊均衡調整一系列視訊影格,使其具有相同的直方圖,同時盡可能保持其動態範圍。它對於例如匹配視訊影格序列中的曝光非常有用。

此濾鏡接受以下選項

設定虛擬喇叭的仰角,單位為度。預設值為 0。

設定濾波半徑。預設值為 5。允許範圍為 1 到 127。

sigma

設定濾波 sigma 值。預設值為 0.5。這控制濾波的強度。將此選項設定為 0 實際上不會執行任何操作。

planes

設定要處理的平面。預設值為 15,即所有可用的平面。

11.262 tmix

混合連續的視訊影格。

以下是接受選項的描述。

frames

要混合的連續影格數量。如果未指定,則預設為 3。

當輸入串流結束時,用於音量重新正規化的過渡時間,單位為秒。預設值為 2 秒。

指定每個輸入視訊影格的權重。每個權重以空格分隔。如果權重數量小於 frames 數量,則最後指定的權重將用於所有剩餘未設定的權重。

scale

指定縮放比例,如果設定,它將與每個權重乘以像素值的總和相乘,以得出最終目標像素值。預設情況下,scale 會自動縮放到權重總和。

planes

planes

11.262.1 範例

  • 平均 7 個連續影格
    tmix=frames=7:weights="1 1 1 1 1 1 1"
    
  • 套用簡單的時間卷積
    tmix=frames=3:weights="-1 3 -1"
    
  • 與上述類似,但僅顯示時間差異
    tmix=frames=3:weights="-1 2 -1":scale=1
    

11.262.2 指令

此濾波器支援以下指令

當輸入串流結束時,用於音量重新正規化的過渡時間,單位為秒。預設值為 2 秒。
scale
planes

這會將一個人聲輸入和一個音樂輸入音訊串流混合到單個輸出,其持續時間與最長輸入相同。音樂的權重將為人聲的四分之一,並且輸入未正規化

11.263 tonemap

色調映射來自不同動態範圍的色彩。

此濾波器預期單精度浮點格式的資料,因為它需要在(並且可以輸出)超出範圍的值上運作。需要另一個濾波器,例如 zscale,以將結果影格轉換為可用的格式。

色調映射演算法僅適用於線性光,因此輸入資料應事先線性化(並可能正確標記)。

ffmpeg -i INPUT -vf zscale=transfer=linear,tonemap=clip,zscale=transfer=bt709,format=yuv420p OUTPUT

11.263.1 選項

bm3d

tonemap

設定要使用的色調映射演算法。

analyze

none

不套用任何色調映射,僅對過亮像素進行去飽和處理。

對輸入音訊樣本應用相位偏移。

硬式剪裁任何超出範圍的值。對於範圍內的值,使用它可以獲得完美的色彩準確度,同時扭曲超出範圍的值。

linear

將整個參考色域拉伸到顯示器的線性倍數。

gamma

在色調曲線之間擬合對數轉換。

reinhard

使用簡單的曲線保留整體影像亮度,使用非線性對比度,這會導致細節扁平化並降低色彩準確度。

hable

reinhard 更好地保留暗部和亮部細節,但會稍微使所有內容變暗。當細節保留比色彩和亮度準確度更重要時使用它。

mobius

平滑地映射超出範圍的值,同時盡可能保留範圍內素材的對比度和色彩。當色彩準確度比細節保留更重要時使用它。

預設值為 none。

每個資料平面的 Adler-32 檢查碼列表。

調整色調映射演算法。

這會影響以下演算法

none

忽略。

linear

指定拉伸時使用的縮放因子。預設值為 1.0。

gamma

指定函數的指數。預設值為 1.8。

對輸入音訊樣本應用相位偏移。

指定一個額外的線性係數,在剪裁之前乘以訊號。預設值為 1.0。

reinhard

指定顯示器峰值處的局部對比度係數。預設值為 0.5,這表示色域內的值大約是剪裁時亮度的一半。

hable

忽略。

mobius

指定從線性轉換到 Mobius 轉換的轉換點。低於此點的每個值都保證以 1:1 映射。值越高,結果越準確,但會犧牲亮部細節。預設值為 0.3,由於初始斜率陡峭,因此仍能相當準確地保留範圍內的色彩。

desat

對亮度超過此水平的亮部套用去飽和處理。參數越高,保留的色彩資訊就越多。此設定有助於防止超亮部出現不自然的過曝色彩,而是(平滑地)變成白色。這使得影像感覺更自然,但會犧牲有關超出範圍色彩的資訊。

預設值 2.0 有點保守,主要僅適用於天空或陽光直射的表面。設定為 0.0 會停用此選項。

此選項僅在輸入影格具有支援的色彩標籤時才有效。

移動視窗中樣本絕對值的均方根值。

使用此值覆寫訊號/標稱/參考峰值。當顯示器中繼資料中的嵌入式峰值資訊不可靠或從較低範圍色調映射到較高範圍時很有用。

11.264 tpad

暫時填充視訊影格。

濾鏡接受以下選項

start

指定輸入視訊串流之前的延遲影格數。預設值為 0。

stop

指定輸入視訊串流之後的填充影格數。設定為 -1 以無限期填充。預設值為 0。

指定在修剪後將保留的開頭靜音的最大持續時間。預設值為 0,這等於修剪所有偵測為靜音的樣本。

設定新增到串流開頭的影格種類。可以是 addclone。使用 add 會新增純色的影格。使用 clone 影格是第一個影格的複製。預設值為 add

指定在修剪後將保留的結尾靜音的最大持續時間。預設值為 0,這等於修剪所有偵測為靜音的樣本。

設定新增到串流結尾的影格種類。可以是 addclone。使用 add 會新增純色的影格。使用 clone 影格是最後一個影格的複製。預設值為 add

start_duration, stop_duration

指定開始/停止延遲的持續時間。請參閱 (ffmpeg-utils)ffmpeg-utils(1) 手冊中的時間持續時間章節,以瞭解可接受的語法。這些選項會覆寫 startstop。預設值為 0。

color

指定填充區域的色彩。有關此選項的語法,請查看 ffmpeg-utils 手冊中的 "(ffmpeg-utils)「Color」章節"

color 的預設值為 "black"。

11.265 transpose

轉置輸入視訊中的行與列,並可選擇性地翻轉它。

它接受以下參數

dir

指定轉置方向。

可以假設以下值

0, 4, cclock_flip

逆時針旋轉 90 度並垂直翻轉(預設),即

L.R     L.l
. . ->  . .
l.r     R.r
1, 5, clock

順時針旋轉 90 度,即

L.R     l.L
. . ->  . .
l.r     r.R
2, 6, cclock

逆時針旋轉 90 度,即

L.R     R.r
. . ->  . .
l.r     L.l
3, 7, clock_flip

順時針旋轉 90 度並垂直翻轉,即

L.R     r.R
. . ->  . .
l.r     l.L

對於 4-7 之間的值,僅當輸入視訊幾何形狀為直向而非橫向時才執行轉置。這些值已被棄用,應改為使用 passthrough 選項。

數值已被棄用,應改為使用符號常數。

passthrough

如果輸入幾何形狀符合指定值所指定的幾何形狀,則不套用轉置。它接受以下值

none

始終套用轉置。

portrait

保留直向幾何形狀(當 height >= width 時)。

landscape

保留橫向幾何形狀(當 width >= height 時)。

預設值為 none

例如,要順時針旋轉 90 度並保留直向版面配置

transpose=dir=1:passthrough=portrait

上述指令也可以指定為

transpose=1:portrait

11.266 transpose_npp

轉置輸入視訊中的行與列,並可選擇性地翻轉它。如需更深入的範例,請參閱 transpose 視訊濾波器,它主要共用相同的選項。

它接受以下參數

dir

指定轉置方向。

可以假設以下值

cclock_flip

逆時針旋轉 90 度並垂直翻轉。(預設)

clock

順時針旋轉 90 度。

cclock

逆時針旋轉 90 度。

clock_flip

順時針旋轉 90 度並垂直翻轉。

passthrough

如果輸入幾何形狀符合指定值所指定的幾何形狀,則不套用轉置。它接受以下值

none

始終套用轉置。(預設)

portrait

保留直向幾何形狀(當 height >= width 時)。

landscape

保留橫向幾何形狀(當 width >= height 時)。

11.267 trim

設定要處理的聲道。預設值為所有可用聲道。

它接受以下參數

start

指定要保留的區段的開始時間,即時間戳記為 start 的影格將是輸出中的第一個影格。

此濾波器允許設定自訂、比高通濾波器更陡峭的滾降,因此能夠更多地衰減阻帶中的頻率內容。

指定將被捨棄的第一個影格的時間,即時間戳記為 end 的影格之前的影格將是輸出中的最後一個影格。

設定截止頻率,單位為赫茲。允許範圍為 2 到 200。預設值為 20。

這與 start 相同,但此選項以時間基底單位而非秒為單位設定開始時間戳記。

設定濾波器階數。可用值為 3 到 20。預設值為 10。

這與 end 相同,但此選項以時間基底單位而非秒為單位設定結束時間戳記。

duration

cutoff

less, 1

應該傳遞到輸出的第一個影格的編號。

end_frame

應該捨棄的第一個影格的編號。

startendduration 表示為時間持續時間規格;請參閱 (ffmpeg-utils)ffmpeg-utils(1) 手冊中的時間持續時間章節,以瞭解可接受的語法。

請注意,前兩組開始/結束選項和 duration 選項會查看影格時間戳記,而 _frame 變體僅計算通過濾波器的影格。另請注意,此濾波器不會修改時間戳記。如果您希望輸出時間戳記從零開始,請在 trim 濾波器之後插入 setpts 濾波器。

如果設定了多個開始或結束選項,則此濾波器會嘗試貪婪地保留至少符合一個指定約束的所有影格。若要僅保留同時符合所有約束的部分,請鏈接多個 trim 濾波器。

設定 Q 因子。允許範圍為 0.01 到 100。預設值為 1。

gain

  • 設定輸入增益水平。允許範圍為 0 到 2。預設值為 1。
    ffmpeg -i INPUT -vf trim=60:120
    
  • 僅保留前一秒
    ffmpeg -i INPUT -vf trim=duration=1
    

11.268 unpremultiply

使用第二個串流的第一個平面作為 Alpha 值,將 Alpha 值預乘效果套用至輸入視訊串流。

兩個串流必須具有相同的尺寸和相同的像素格式。

stages

planes

設定將處理哪些平面,未處理的平面將被複製。預設值為 0xf,所有平面都將被處理。

如果格式有 1 個或 2 個組件,則亮度為位元 0。如果格式有 3 個或 4 個組件:對於 RGB 格式,位元 0 為綠色,位元 1 為藍色,位元 2 為紅色;對於 YUV 格式,位元 0 為亮度,位元 1 為色度-U,位元 2 為色度-V。如果存在,則 Alpha 通道始終是最後一個位元。

inplace

不需要第二個輸入進行處理,而是使用來自輸入串流的 alpha 平面。

11.269 unsharp

銳化或模糊輸入視訊。

它接受以下參數

luma_msize_x, lx

設定亮度矩陣水平大小。它必須是介於 3 到 23 之間的奇數整數。預設值為 5。

luma_msize_y, ly

設定亮度矩陣垂直大小。它必須是介於 3 到 23 之間的奇數整數。預設值為 5。

luma_amount, la

設定亮度效果強度。它必須是浮點數,合理值介於 -1.5 和 1.5 之間。

負值將模糊輸入視訊,而正值將銳化它,值為零將停用效果。

預設值為 1.0。

chroma_msize_x, cx

設定色度矩陣水平大小。它必須是介於 3 到 23 之間的奇數整數。預設值為 5。

chroma_msize_y, cy

設定色度矩陣垂直大小。它必須是介於 3 到 23 之間的奇數整數。預設值為 5。

chroma_amount, ca

設定色度效果強度。它必須是浮點數,合理值介於 -1.5 和 1.5 之間。

負值將模糊輸入視訊,而正值將銳化它,值為零將停用效果。

預設值為 0.0。

alpha_msize_x, ax

設定 Alpha 矩陣水平大小。它必須是介於 3 到 23 之間的奇數整數。預設值為 5。

alpha_msize_y, ay

設定 Alpha 矩陣垂直大小。它必須是介於 3 到 23 之間的奇數整數。預設值為 5。

alpha_amount, aa

設定 Alpha 效果強度。它必須是浮點數,合理值介於 -1.5 和 1.5 之間。

負值將模糊輸入視訊,而正值將銳化它,值為零將停用效果。

預設值為 0.0。

所有參數都是可選的,預設值相當於字串「5:5:1.0:5:5:0.0」。

11.269.1 範例

  • 套用強烈的亮度銳化效果
    unsharp=luma_msize_x=7:luma_msize_y=7:luma_amount=2.5
    
  • 對亮度和色度參數套用強烈的模糊效果
    unsharp=7:7:-2:7:7:-2
    

11.270 untile

將由平鋪影像組成的視訊分解為個別影像。

輸出視訊的影格率是輸入視訊的影格率乘以平鋪數量。

此濾波器執行與 tile 相反的操作。

濾鏡接受以下選項

layout

設定網格大小(即行數和列數)。如需此選項的語法,請查看 (ffmpeg-utils)ffmpeg-utils 手冊中的「視訊大小」章節

11.270.1 範例

  • 從靜態影像檔案產生 1 秒的視訊,該檔案由 25 個垂直堆疊的影格組成,就像類比膠捲一樣
    ffmpeg -r 1 -i image.jpg -vf untile=1x25 movie.mkv
    

11.271 uspp

套用超慢/簡單的後處理濾波器,該濾波器以多個(或在 quality 等級 8 的情況下為所有)位移壓縮和解壓縮影像,並對結果進行平均。

這與 spp 行為的不同之處在於,uspp 實際上使用 libavcodec Snow 編碼和解碼每個案例,而 spp 使用類似於 MJPEG 的簡化僅限內部 8x8 DCT。

此濾波器在 5.0 到 6.0 之間的 ffmpeg 版本中不可用。

濾鏡接受以下選項

quality

設定品質。此選項定義用於平均的等級數量。它接受 0-8 範圍內的整數。如果設定為 0,則濾波器將不起作用。值 8 表示最高品質。對於該值的每次遞增,速度大約會下降 2 倍。預設值為 3

qp

強制恆定量化參數。如果未設定,濾鏡將使用來自視訊串流的 QP(如果可用)。

codec

使用指定的編解碼器而不是 snow。

11.272 v360

在各種格式之間轉換 360 度視訊。

濾鏡接受以下選項

頂場優先
音訊資料的 Adler-32 檢查碼(以十六進制列印)。對於平面音訊,資料被視為所有平面都已連接。

設定輸入/輸出視訊的格式。

可用格式

e
equirect

等距柱狀投影。

c3x2
c6x1
c1x6

立方體貼圖,具有 3x2/6x1/1x6 版面配置。

格式特定選項

in_pad
out_pad

設定輸入/輸出立方體貼圖的填充比例。值為小數。

範例值

以 dB 為單位設定頻段增益。

無填充。

0.01

1% 的面是填充。例如,對於 1920x1280 解析度,面大小將為 640x640,填充將為每邊 3 個像素。(640 * 0.01 = 6 像素)

預設值為 0。最大值為 0.1

fin_pad
fout_pad

設定輸入/輸出立方體貼圖的固定填充。值以像素為單位。

預設值為 0。如果大於零,則會覆寫其他填充選項。

in_forder
out_forder

設定輸入/輸出立方體貼圖的面順序。為每個位置選擇一個方向。

方向的指定

r

right

l

left

u

up

d

down

f

forward

b

back

預設值為 rludfb

in_frot
out_frot

設定輸入/輸出立方體貼圖的面的旋轉。為每個位置選擇一個角度。

角度的指定

以 dB 為單位設定頻段增益。

0 度順時針

設定頻段的濾波器類型,可選,可以是

90 度順時針

巴特沃斯,這是預設值。

180 度順時針

3

270 度順時針

預設值為 000000

eac

等角立方體貼圖。

flat
gnomonic
rectilinear

常規視訊。

格式特定選項

h_fov
v_fov
d_fov

設定輸出水平/垂直/對角線視野。值以度為單位。

如果設定了對角線視野,則會覆寫水平和垂直視野。

ih_fov
iv_fov
id_fov

設定輸入水平/垂直/對角線視野。值以度為單位。

如果設定了對角線視野,則會覆寫水平和垂直視野。

dfisheye

雙魚眼。

格式特定選項

h_fov
v_fov
d_fov

設定輸出水平/垂直/對角線視野。值以度為單位。

如果設定了對角線視野,則會覆寫水平和垂直視野。

ih_fov
iv_fov
id_fov

設定輸入水平/垂直/對角線視野。值以度為單位。

如果設定了對角線視野,則會覆寫水平和垂直視野。

barrel
fb
barrelsplit

Facebook 的 360 度格式。

sg

立體格式。

格式特定選項

h_fov
v_fov
d_fov

設定輸出水平/垂直/對角線視野。值以度為單位。

如果設定了對角線視野,則會覆寫水平和垂直視野。

ih_fov
iv_fov
id_fov

設定輸入水平/垂直/對角線視野。值以度為單位。

如果設定了對角線視野,則會覆寫水平和垂直視野。

mercator

麥卡托格式。

ball

球體格式,朝後方產生顯著的失真。

hammer

漢默-艾托夫地圖投影格式。

sinusoidal

正弦曲線地圖投影格式。

fisheye

魚眼投影。

格式特定選項

h_fov
v_fov
d_fov

設定輸出水平/垂直/對角線視野。值以度為單位。

如果設定了對角線視野,則會覆寫水平和垂直視野。

ih_fov
iv_fov
id_fov

設定輸入水平/垂直/對角線視野。值以度為單位。

如果設定了對角線視野,則會覆寫水平和垂直視野。

pannini

潘尼尼投影。

格式特定選項

h_fov

設定輸出潘尼尼參數。

ih_fov

設定輸入潘尼尼參數。

cylindrical

圓柱投影。

格式特定選項

h_fov
v_fov
d_fov

設定輸出水平/垂直/對角線視野。值以度為單位。

如果設定了對角線視野,則會覆寫水平和垂直視野。

ih_fov
iv_fov
id_fov

設定輸入水平/垂直/對角線視野。值以度為單位。

如果設定了對角線視野,則會覆寫水平和垂直視野。

perspective

透視投影。(僅限輸出)

格式特定選項

v_fov

設定透視參數。

tetrahedron

四面體投影。

tsp

截角四角錐投影。

he
hequirect

半等距柱狀投影。

equisolid

等立體角格式。

格式特定選項

h_fov
v_fov
d_fov

設定輸出水平/垂直/對角線視野。值以度為單位。

如果設定了對角線視野,則會覆寫水平和垂直視野。

ih_fov
iv_fov
id_fov

設定輸入水平/垂直/對角線視野。值以度為單位。

如果設定了對角線視野,則會覆寫水平和垂直視野。

og

正交格式。

格式特定選項

h_fov
v_fov
d_fov

設定輸出水平/垂直/對角線視野。值以度為單位。

如果設定了對角線視野,則會覆寫水平和垂直視野。

ih_fov
iv_fov
id_fov

設定輸入水平/垂直/對角線視野。值以度為單位。

如果設定了對角線視野,則會覆寫水平和垂直視野。

octahedron

八面體投影。

cylindricalea

圓柱等面積投影。

interp

設定插值方法。
注意:更複雜的插值方法需要更多的記憶體才能執行。

可用方法

near
nearest

最近鄰。

設定框邊緣厚度的表達式。值 fill 將建立一個填充框。預設值為 3
linear

雙線性插值。

lagrange9

Lagrange9 插值。

cube
cubic

雙三次插值。

lanc
lanczos

Lanczos 插值。

sp16
spline16

Spline16 插值。

gauss
gaussian

高斯插值。

mitchell

Mitchell 插值。

預設值為 line

f
h

設定輸出視訊解析度。

預設解析度取決於格式。

in_stereo
out_stereo

設定輸入/輸出立體格式。

2d

2D 單聲道

sbs

並排

tb

上下

輸入和輸出格式的預設值為 2d

yaw
pitch
roll

設定輸出視訊的旋轉。值以度為單位。

rorder

設定輸出視訊的旋轉順序。為每個位置選擇一個項目。

y, Y

yaw

p, P

pitch

r, R

roll

預設值為 ypr

h_flip
v_flip
d_flip

水平(交換左右)/垂直(交換上下)/深度(交換前後)翻轉輸出視訊。布林值。

ih_flip
iv_flip

設定輸入視訊是否水平/垂直翻轉。布林值。

in_trans

設定輸入視訊是否已轉置。布林值,預設為停用。

out_trans

設定輸出視訊是否需要轉置。布林值,預設為停用。

h_offset
v_offset

設定輸出水平/垂直軸外偏移。預設設定為 0。允許範圍為 -1 到 1。

alpha_mask

透過將所有未映射的像素標記為完全透明,在 Alpha 平面中建立遮罩。布林值,預設為停用。

reset_rot

重設輸出視訊的旋轉。布林值,預設為停用。

11.272.1 範例

  • 使用雙三次插值將等距柱狀視訊轉換為具有 3x2 版面配置和 1% 填充的立方體貼圖
    ffmpeg -i input.mkv -vf v360=e:c3x2:cubic:out_pad=0.01 output.mkv
    
  • 擷取等角立方體貼圖的後視圖
    ffmpeg -i input.mkv -vf v360=eac:flat:yaw=180 output.mkv
    
  • 將並排立體格式中轉置和水平翻轉的等角立方體貼圖轉換為上下立體格式
    v360=eac:equirect:in_stereo=sbs:in_trans=1:ih_flip=1:out_stereo=tb
    

11.272.2 指令

此濾波器支援上述選項的子集作為指令

11.273 vaguedenoiser

套用基於小波的去噪器。

它使用 Cohen-Daubechies-Feauveau 9/7 將來自視訊輸入的每個影格轉換為小波域。然後,它對獲得的係數套用一些濾波。之後執行反小波轉換。由於小波特性,它應該提供良好的平滑結果,並減少雜訊,而不會模糊圖片特徵。

此濾波器還能夠拉伸/壓縮音訊資料以使其與時間戳記匹配,或注入靜音/剪切音訊以使其與時間戳記匹配,執行兩者的組合或兩者都不執行。

threshold

濾波強度。越高,視訊濾波效果越強。硬閾值處理可以使用比軟閾值處理更高的閾值,然後視訊看起來會過度濾波。預設值為 2。

method

濾波器將使用的濾波方法。

設定叢發融合,以視窗大小的百分比表示。允許範圍為 010。預設值為 2。如果偵測為雜訊的任何兩個樣本之間的間隔小於此值,則這兩個樣本之間的任何樣本也將被偵測為雜訊。

hard

低於閾值的所有值都將歸零。

soft

低於閾值的所有值都將歸零。高於閾值的所有值都將減少閾值。

garrote

縮放或無效化係數 - 介於(更)軟和(更少)硬閾值處理之間。

預設值為 garrote。

nsteps

小波將分解圖片的次數。圖片無法分解超過特定點(通常,對於 640x480 影格為 8 - 因為 2^9 = 512 > 480)。有效值為 1 到 32 之間的整數。預設值為 6。

percent

部分或完整去噪(有限係數縮減),從 0 到 100。預設值為 85。

planes

要處理的平面的列表。預設情況下,會處理所有平面。

將第二個聲道延遲 500 個樣本,將第三個聲道延遲 700 個樣本,並保持第一個聲道(和可能存在的任何其他聲道)不變。

濾波器將使用的閾值類型。

設定叢發融合,以視窗大小的百分比表示。允許範圍為 010。預設值為 2。如果偵測為雜訊的任何兩個樣本之間的間隔小於此值,則這兩個樣本之間的任何樣本也將被偵測為雜訊。

universal

用於所有分解的閾值相同。

bayes

使用的閾值也取決於每個分解係數。

預設值為 universal。

11.274 varblur

透過使用第二個視訊串流設定模糊半徑,套用可變模糊濾波器。第二個串流必須具有相同的尺寸。

此濾波器還能夠拉伸/壓縮音訊資料以使其與時間戳記匹配,或注入靜音/剪切音訊以使其與時間戳記匹配,執行兩者的組合或兩者都不執行。

min_r

設定允許的最小半徑。允許範圍為 0 到 254。預設值為 0。

max_r

設定允許的最大半徑。允許範圍為 1 到 255。預設值為 8。

planes

設定要處理的平面。預設情況下,使用所有平面。

varblur 濾波器也支援 framesync 選項。

11.274.1 指令

此濾波器支援上述所有選項作為指令

11.275 vectorscope

在二維圖形(稱為向量示波器)中顯示 2 個色彩組件值。

此濾波器還能夠拉伸/壓縮音訊資料以使其與時間戳記匹配,或注入靜音/剪切音訊以使其與時間戳記匹配,執行兩者的組合或兩者都不執行。

設定空間亮度閾值。較低的值會增加交叉亮度的減少。

設定向量示波器模式。

設定叢發融合,以視窗大小的百分比表示。允許範圍為 010。預設值為 2。如果偵測為雜訊的任何兩個樣本之間的間隔小於此值,則這兩個樣本之間的任何樣本也將被偵測為雜訊。

gray
tint

灰階值顯示在圖形上,亮度越高表示在圖形位置上具有相同組件色彩值的像素越多。這是預設模式。

y

灰階值顯示在圖形上。視訊影格中不存在的周圍像素值以選項 xy 設定的 2 個色彩組件的漸層繪製。第三個色彩組件是靜態的。

mode

圖形上顯示視訊影格中存在的實際色彩組件值。

color3

與 color2 類似,但在圖形上,相同值 xy 的頻率越高,另一個色彩組件的值就越高,預設值 xy 預設為亮度。

color4

圖形上顯示視訊影格中存在的實際色彩。如果兩個不同的色彩映射到圖形上的相同位置,則選擇在圖形中不存在的組件值較高的色彩。

color5

灰階值顯示在圖形上。與 color 類似,但第三個色彩組件從徑向漸層中選取。

x

設定哪個色彩組件將在 X 軸上表示。預設值為 1

y

設定哪個色彩組件將在 Y 軸上表示。預設值為 2

intensity, i

設定強度,用於模式:gray、color、color3 和 color5,以增加表示圖形中 (X, Y) 位置頻率的色彩組件的亮度。

envelope,e
none

無包絡線,這是預設值。

instant

即時包絡線,即使是最暗的單個像素也會被清楚地突出顯示。

listen

隨時間推移保持圖形中呈現的最大值和最小值。這樣,您仍然可以發現超出範圍的值,而無需持續查看向量示波器。

peak+instant

峰值和即時包絡線組合在一起。

graticule, g

設定要繪製哪種刻度線。

none
green
y
invert
opacity, o

設定刻度線不透明度。

flags, f

設定刻度線旗標。

white

繪製白點的刻度線。

black

繪製黑點的刻度線。

name

繪製色彩點簡短名稱。

bgopacity,b

在黑色背景上用輸入視訊像素顏色繪製十六進制像素值。

lthreshold, l

設定未在 X 或 Y 軸上表示的色彩組件的低閾值。低於此值的值將被忽略。預設值為 0。請注意,此值與單個像素組件可以具有的實際最大可能值相乘。因此,對於 8 位元輸入和 0.1 的低閾值,實際閾值為 0.1 * 255 = 25。

hthreshold, h

設定未在 X 或 Y 軸上表示的色彩組件的高閾值。高於此值的值將被忽略。預設值為 1。請注意,此值與單個像素組件可以具有的實際最大可能值相乘。因此,對於 8 位元輸入和 0.9 的高閾值,實際閾值為 0.9 * 255 = 230。

colorspace, c

設定繪製刻度線時要使用的色彩空間種類。

auto
601
709

預設值為 auto。

tint0, t0
tint1, t1

設定灰階/色調向量示波器模式的色彩色調。預設情況下,這兩個選項都為零。這表示沒有色調,輸出將保持灰階。

11.276 vidstabdetect

分析視訊穩定/去抖動。執行 2 次傳遞中的第 1 次傳遞,請參閱 vidstabtransform 進行第 2 次傳遞。

此濾波器產生一個檔案,其中包含有關後續影格的相對平移和旋轉變換資訊,然後由 vidstabtransform 濾波器使用。

若要啟用此濾波器的編譯,您需要使用 --enable-libvidstab 配置 FFmpeg。

此濾波器還能夠拉伸/壓縮音訊資料以使其與時間戳記匹配,或注入靜音/剪切音訊以使其與時間戳記匹配,執行兩者的組合或兩者都不執行。

result

設定用於寫入變換資訊的檔案路徑。預設值為 transforms.trf

shakiness

設定視訊的抖動程度以及攝影機的速度。它接受 1-10 範圍內的整數,值 1 表示輕微抖動,值 10 表示強烈抖動。預設值為 5。

accuracy

設定偵測過程的準確度。它必須是 1-15 範圍內的值。值 1 表示低準確度,值 15 表示高準確度。預設值為 15。

stepsize

設定搜尋過程的步長。以 1 像素解析度掃描最小值周圍的區域。預設值為 6。

mincontrast

設定最小對比度。低於此值時,會捨棄本機測量欄位。必須是 0-1 範圍內的浮點值。預設值為 0.3。

tripod

設定三腳架模式的參考影格編號。

如果啟用,則將影格的運動與已篩選串流中的參考影格進行比較,並由指定的編號識別。目的是補償更或更少靜態場景中的所有運動,並保持攝影機視圖絕對靜止。

如果設定為 0,則停用。影格從 1 開始計數。

中位數

在結果影格中顯示圖場和變換。它接受 0-2 範圍內的整數。預設值為 0,表示停用任何視覺化。

fileformat

要寫入的變換資料檔案的格式。可接受的值為

ascii

人類可讀的純文字

binary

二進位格式,比 ascii 小約 40%。(預設

11.276.1 範例

  • 使用預設值
    vidstabdetect
    
  • 分析強烈抖動的影片,並將結果放入檔案 mytransforms.trf
    vidstabdetect=shakiness=10:accuracy=15:result="mytransforms.trf"
    
  • 在結果視訊中視覺化內部變換的結果
    vidstabdetect=show=1
    
  • 使用 ffmpeg 分析具有中等抖動的視訊
    ffmpeg -i input -vf vidstabdetect=shakiness=5:show=1 dummy.avi
    

11.277 vidstabtransform

視訊穩定/去抖動:2 次傳遞中的第 2 次傳遞,請參閱 vidstabdetect 進行第 1 次傳遞。

讀取包含每個影格的變換資訊的檔案,並套用/補償它們。與 vidstabdetect 濾波器一起使用,可用於去抖動視訊。另請參閱 http://public.hronopik.de/vid.stab。務必也使用 unsharp 濾波器,請參閱下文。

若要啟用此濾波器的編譯,您需要使用 --enable-libvidstab 配置 FFmpeg。

11.277.1 選項

頂場優先

設定用於讀取變換的檔案路徑。預設值為 transforms.trf

smoothing

設定用於低通濾波攝影機運動的影格數(值 * 2 + 1)。預設值為 10。

例如,數字 10 表示使用 21 個影格(過去 10 個和未來 10 個)來平滑視訊中的運動。值越大,視訊越平滑,但會限制攝影機的加速度(平移/傾斜運動)。0 是一種特殊情況,其中模擬靜態攝影機。

optalgo

設定攝影機路徑最佳化演算法。

可接受的值為

gauss

攝影機運動上的高斯核心低通濾波器(預設)

avg

變換平均

maxshift

設定平移影格的最大像素數。預設值為 -1,表示無限制。

maxangle

設定旋轉影格的最大角度(以弧度為單位)(度 * PI/180)。預設值為 -1,表示無限制。

crop

指定如何處理可能因運動補償而可見的邊框。

提升高於偵測臨界值的頻率。

keep

保留前一個影格的影像資訊(預設)

black

將邊框填滿黑色

invert

如果設定為 1,則反轉變換。預設值為 0。

relative

如果設定為 1,則將變換視為相對於前一個影格,如果設定為 0,則視為絕對值。預設值為 0。

zoom

設定要縮放的百分比。正值將產生放大效果,負值將產生縮小效果。預設值為 0(無縮放)。

optzoom

設定最佳縮放以避免邊框。

可接受的值為

以 dB 為單位設定頻段增益。

disabled

設定頻段的濾波器類型,可選,可以是

確定最佳靜態縮放值(只有非常強烈的運動才會導致可見的邊框)(預設)

巴特沃斯,這是預設值。

確定最佳自適應縮放值(不會看到邊框),請參閱 zoomspeed

請注意,在 zoom 處給定的值會新增到此處計算的值。

zoomspeed

設定每個影格最大縮放百分比(當 optzoom 設定為 2 時啟用)。範圍為 0 到 5,預設值為 0.25。

interpol

指定插值類型。

提升高於偵測臨界值的頻率。

no

無插值

linear

僅水平線性

bilinear

在兩個方向上都是線性的(預設)

bicubic

在兩個方向上都是三次的(慢速)

tripod

如果設定為 1,則啟用虛擬三腳架模式,這相當於 relative=0:smoothing=0。預設值為 0。

也請使用 vidstabdetecttripod 選項。

debug

如果設定為 1,則增加記錄詳細程度。偵測到的全域運動也會寫入暫存檔案 global_motions.trf。預設值為 0。

11.277.2 範例

  • 使用 ffmpeg 進行具有預設值的典型穩定
    ffmpeg -i inp.mpeg -vf vidstabtransform,unsharp=5:5:0.8:3:3:0.4 inp_stabilized.mpeg
    

    請注意,建議始終使用 unsharp 濾波器。

  • 稍微放大並從給定檔案載入變換資料
    vidstabtransform=zoom=5:input="mytransforms.trf"
    
  • 使視訊更加平滑
    vidstabtransform=smoothing=30
    

11.278 vflip

垂直翻轉輸入視訊。

例如,若要使用 ffmpeg 垂直翻轉視訊

ffmpeg -i in.avi -vf "vflip" out.avi

11.279 vfrdet

偵測可變影格率視訊。

此濾波器嘗試偵測輸入是可變影格率還是恆定影格率。

最後,它將輸出偵測為具有可變 delta pts 的影格數,以及具有恆定 delta pts 的影格數。如果存在具有可變 delta 的影格,則它也會顯示遇到的最小、最大和平均 delta。

11.280 vibrance

增強或改變飽和度。

濾鏡接受以下選項

intensity

如果值為正數,則設定增強強度,如果值為負數,則設定改變強度。預設值為 0。允許範圍為 -2 到 2。

rbal

設定紅色平衡。預設值為 1。允許範圍為 -10 到 10。

gbal

設定綠色平衡。預設值為 1。允許範圍為 -10 到 10。

bbal

設定藍色平衡。預設值為 1。允許範圍為 -10 到 10。

rlum

設定紅色亮度係數。

glum

設定綠色亮度係數。

blum

設定藍色亮度係數。

alternate

如果 intensity 為負數且此項設定為 1,則色彩將會改變,否則色彩的飽和度會降低,更接近灰色。

11.280.1 指令

此濾鏡支援以上所有選項作為 commands

11.281 vif

取得兩個輸入視訊之間的平均 VIF(視覺資訊保真度)。

此濾鏡採用兩個輸入視訊。

為了使此濾鏡正常工作,兩個輸入視訊必須具有相同的解析度和像素格式。此外,它假設兩個輸入具有相同數量的影格,這些影格將逐個比較。

取得的平均 VIF 分數透過記錄系統列印。

濾波器儲存每個影格的計算 VIF 分數。

此濾鏡也支援 framesync 選項。

在以下範例中,正在處理的輸入檔案 main.mpg 與參考檔案 ref.mpg 進行比較。

ffmpeg -i main.mpg -i ref.mpg -lavfi vif -f null -

11.282 vignette

產生或反轉自然的暈影效果。

濾鏡接受以下選項

角度,a

將鏡頭角度表示式設定為弧度數。

該值被剪裁在 [0,PI/2] 範圍內。

預設值:"PI/5"

x0
y0

設定中心座標表示式。預設值分別為 "w/2""h/2"

mode

設定正向/反向模式。

可用模式為

forward

距離中心點越遠,影像越暗。

backward

距離中心點越遠,影像越亮。這可用於反轉暈影效果,但沒有自動偵測來擷取鏡頭 angle 和其他設定(目前尚無)。它也可用於產生燃燒效果。

預設值為 ‘forward’。

eval

設定表示式(anglex0y0)的評估模式。

設定叢發融合,以視窗大小的百分比表示。允許範圍為 010。預設值為 2。如果偵測為雜訊的任何兩個樣本之間的間隔小於此值,則這兩個樣本之間的任何樣本也將被偵測為雜訊。

init

僅在濾波器初始化期間評估表示式一次。

frame

評估每個傳入影格的表示式。這比「init」模式慢得多,因為它需要重新計算所有縮放器,但它允許進階動態表示式。

預設值為 ‘init’。

dither

設定顫色以減少圓形條帶效應。預設值為 1(已啟用)。

aspect

設定暈影縱橫比。此設定允許調整暈影的形狀。將此值設定為輸入的 SAR 將產生遵循視訊尺寸的矩形暈影。

預設值為 1/1

11.282.1 表達式

alphax0y0 表示式可以包含以下參數。

f
h

輸入寬度和高度

n

標記映射 libfreetype 支援的相應標記,並且是以下值的組合

pts

已篩選視訊影格的 PTS(展示時間戳記)時間,以 TB 單位表示,如果未定義則為 NAN

r

輸入視訊的影格率,如果輸入影格率未知則為 NAN

設定傳輸表達式。

已篩選視訊影格的 PTS(展示時間戳記),以秒為單位表示,如果未定義則為 NAN

tb

輸入影片的時間基底

11.282.2 範例

  • 套用簡單的強暈影效果
    vignette=PI/4
    
  • 產生閃爍的暈影
    vignette='PI/4+random(1)*PI/50':eval=frame
    

11.283 vmafmotion

取得視訊的平均 VMAF 運動分數。它是 VMAF 的組件指標之一。

取得的平均運動分數透過記錄系統列印。

濾鏡接受以下選項

stats_file

如果指定,濾波器將使用指定的檔案來儲存每個影格相對於前一個影格的運動分數。當檔名等於 "-" 時,資料會傳送到標準輸出。

範例

ffmpeg -i ref.mpg -vf vmafmotion -f null -

11.284 vstack

垂直堆疊輸入視訊。

所有串流都必須具有相同的像素格式和相同的寬度。

請注意,此濾鏡比使用 overlaypad 濾鏡建立相同的輸出更快。

濾鏡接受以下選項

inputs

設定輸入串流的數量。預設值為 2。

shortest

如果設定為 1,則強制輸出在最短的輸入終止時終止。預設值為 0。

11.285 w3fdif

解交錯輸入視訊("w3fdif" 代表 "Weston 3 Field Deinterlacing Filter")。

Weston 3 圖場解交錯濾波器基於 Martin Weston 為 BBC R&D 描述的過程,並根據 Jim Easterbrook 為 BBC R&D 編寫的解交錯演算法實作,使用 BBC R&D 計算的濾波器係數。

此濾波器使用影格中的圖場主導資訊來決定在輸出中先放置每對圖場中的哪一個。如果它弄錯了,請在 w3fdif 濾波器之前使用 setfield 濾波器。

有兩組濾波器係數,稱為「簡單」和「複雜」。可以透過傳遞可選參數來設定使用哪組濾波器係數

filter

設定交錯濾波器係數。接受下列其中一個值

simple

簡單濾波器係數集。

complex

更複雜的濾波器係數集。

預設值為 ‘complex’。

mode

mode

frame

mode

field

mode

預設值為 field

parity

parity

tff

parity

bff

parity

auto

parity

parity

deint

deint

all

解交錯所有影格,

interlaced

deint

預設值為 ‘all’。

11.285.1 指令

blend

11.286 waveform

視訊波形監視器。

波形監視器繪製色彩組件強度。預設情況下僅為亮度。波形的每一列對應於來源視訊中的一列像素。

設定視窗長度,以樣本為單位。預設值為 2048。允許範圍為 32 到 65536。

設定空間亮度閾值。較低的值會增加交叉亮度的減少。

可以是 rowcolumn。預設值為 column。在 row 模式下,左側的圖形表示色彩組件值 0,右側表示值 = 255。在 column 模式下,頂側表示色彩組件值 = 0,底側表示值 = 255。

intensity, i

設定強度。較小的值有助於找出在輸入行/列中分佈了多少個相同亮度的值。預設值為 0.04。允許範圍為 [0, 1]。

mirror, r

設定鏡像模式。0 表示未鏡像,1 表示已鏡像。在鏡像模式下,較高的值將在 row 模式下表示在左側,在 column 模式下表示在頂部。預設值為 1(已鏡像)。

display, d

設定顯示模式。它接受以下值

overlay

呈現與 parade 中相同的資訊,除了表示色彩組件的圖形直接相互疊加。

此顯示模式使您可以更輕鬆地發現色彩組件的重疊區域中的相對差異或相似性,這些色彩組件應該是相同的,例如中性白色、灰色或黑色。

stack

row 模式下並排顯示色彩組件的獨立圖形,或在 column 模式下上下顯示色彩組件的獨立圖形。

parade

column 模式下並排顯示色彩組件的獨立圖形,或在 row 模式下上下顯示色彩組件的獨立圖形。

使用此顯示模式,可以輕鬆發現影像亮部和暗部的色偏,方法是比較每個波形的頂部和底部圖形的輪廓。由於白色、灰色和黑色的特徵是紅色、綠色和藍色量完全相等,因此圖片的中性區域應顯示三個寬度/高度大致相等的波形。如果不是,則可以透過調整三個波形的水平來輕鬆執行校正。

預設值為 stack

components,c

設定要顯示哪些色彩組件。預設值為 1,表示僅亮度或紅色組件(如果輸入為 RGB 色彩空間)。如果設定為例如 7,則它將顯示所有 3 個(如果)可用的色彩組件。

envelope,e
none

無包絡線,這是預設值。

instant

即時包絡線,即使步長值較小,圖形中呈現的最小值和最大值也將很容易看到 step 值。

listen

隨時間推移保持圖形中呈現的最小值和最大值。這樣,您仍然可以發現超出範圍的值,而無需持續查看波形。

peak+instant

峰值和即時包絡線組合在一起。

filter, f
mode

無濾波,這是預設值。

flat

亮度和色度組合在一起。

aflat

與上述類似,但顯示藍色和紅色色度之間的差異。

xflat

與上述類似,但使用不同的色彩。

yflat

與上述類似,但再次使用不同的色彩。

chroma

僅顯示色度。

y

在波形上顯示實際色彩值。

acolor

與上述類似,但亮度顯示色度值的頻率。

graticule, g

設定要顯示哪個刻度線。

none

不顯示刻度線。

green

顯示綠色刻度線,顯示合法的廣播範圍。

orange

顯示橘色刻度線,顯示合法的廣播範圍。

invert

顯示反轉刻度線,顯示合法的廣播範圍。

opacity, o

設定刻度線不透明度。

flags, fl

設定刻度線旗標。

numbers

在線條上方繪製數字。預設情況下啟用。

dots

繪製點而不是線條。

scale, s

設定用於顯示刻度線的比例。

digital
millivolts
ire

預設值為 digital。

bgopacity,b

在黑色背景上用輸入視訊像素顏色繪製十六進制像素值。

tint0, t0
tint1, t1

設定輸出的色調。僅在低通濾波器且顯示器不是覆蓋圖且輸入像素格式不是 RGB 時使用。

fitmode, fm

設定視訊輸出影格的樣本縱橫比。可用於配置波形,使其在其中一個方向上不會過度拉伸。

none

將樣本縱橫比設定為 1/1。

size

將樣本縱橫比設定為符合視訊的輸入大小

預設值為 ‘none’。

頂場優先

設定濾波器要選取的輸入格式。可以是 ‘all’(用於從所有可用格式中選取)或 ‘first’(用於選取第一個可用格式)。預設值為 ‘first’。

11.287 weave, doubleweave

weave 採用基於圖場的視訊輸入,並將每兩個連續的圖場合併為單個影格,從而產生新的雙倍高度剪輯,其影格率和影格計數減半。

doubleweave 的工作方式與 weave 相同,但不會使影格率和影格計數減半。

設定柔削波的類型。

指定用於運動搜尋的區塊大小。範圍 4-128 像素,預設值為 8。

設定第一個圖場。可用值為

contrast

將影格設定為頂圖場優先。

search

將影格設定為底圖場優先。

11.287.1 範例

  • 使用 selectseparatefields 濾波器交錯視訊
    separatefields,select=eq(mod(n,4),0)+eq(mod(n,4),3),weave
    

11.288 xbr

套用 xBR 高品質放大濾波器,該濾波器專為像素藝術設計。它遵循一組邊緣偵測規則,請參閱 https://forums.libretro.com/t/xbr-algorithm-tutorial/123

設定柔削波的類型。

n

設定縮放尺寸:2 代表 2xBR3 代表 3xBR4 代表 4xBR。預設值為 3

11.289 xcorrelate

在第一個和第二個輸入視訊串流之間套用正規化互相關。

第二個輸入視訊串流的尺寸必須小於第一個輸入視訊串流。

濾鏡接受以下選項

planes

設定要處理的平面。

secondary

設定將從第二個輸入視訊串流處理哪些輔助視訊影格,可以是 firstall。預設值為 all

xcorrelate 濾波器也支援 framesync 選項。

11.290 xfade

從一個輸入視訊串流到另一個輸入視訊串流套用交叉淡入淡出。交叉淡入淡出會套用指定的持續時間。

兩個輸入都必須是恆定影格率,並且具有相同的解析度、像素格式、影格率和時間基底。

濾鏡接受以下選項

transition

設定其中一種可用的轉場效果

custom
fade
wipeleft
wiperight
wipeup
wipedown
slideleft
slideright
slideup
slidedown
circlecrop
rectcrop
distance
fadeblack
fadewhite
radial
smoothleft
smoothright
smoothup
smoothdown
circleopen
circleclose
vertopen
vertclose
horzopen
horzclose
dissolve
pixelize
diagtl
diagtr
diagbl
diagbr
hlslice
hrslice
vuslice
vdslice
hblur
fadegrays
wipetl
wipetr
wipebl
wipebr
squeezeh
squeezev
zoomin
fadefast
fadeslow
hlwind
hrwind
vuwind
vdwind
coverleft
coverright
coverup
coverdown
revealleft
revealright
revealup
revealdown

預設轉場效果為 fade。

duration

以秒為單位設定交叉淡入淡出持續時間。範圍為 0 到 60 秒。預設持續時間為 1 秒。

offset

設定交叉淡入淡出相對於第一個輸入串流的開始時間(以秒為單位)。預設偏移量為 0。

expr

設定自訂轉場效果的表示式。

表示式可以使用以下變數和函數

x
y

目前樣本的座標。

w
h

影像的寬度和高度。

P

轉場效果的進度。

PLANE

目前處理的平面。

A

傳回目前位置和平面處第一個輸入的值。

B

傳回目前位置和平面處第二個輸入的值。

a0(x, y)
a1(x, y)
a2(x, y)
a3(x, y)

傳回第一個輸入的第一/第二/第三/第四個組件在位置 (x,y) 處的像素值。

b0(x, y)
b1(x, y)
b2(x, y)
b3(x, y)

傳回第二個輸入的第一/第二/第三/第四個組件在位置 (x,y) 處的像素值。

11.290.1 範例

  • 從一個輸入視訊交叉淡入淡出到另一個輸入視訊,具有淡入淡出轉場效果,轉場持續時間為 2 秒,從偏移量 5 秒開始
    ffmpeg -i first.mp4 -i second.mp4 -filter_complex xfade=transition=fade:duration=2:offset=5 output.mp4
    

11.291 xmedian

從多個輸入視訊中選取中位數像素。

濾鏡接受以下選項

inputs

設定輸入數量。預設值為 3。允許範圍為 3 到 255。如果輸入數量為偶數,則結果將是兩個中位數之間的平均值。

planes

設定要濾波的平面。預設值為 15,表示處理所有平面。

percentile

設定中位數百分位數。預設值為 0.5。預設值 0.5 將始終選取中位數,而 0 將選取最小值,1 將選取最大值。

11.291.1 指令

此濾波器支援上述所有選項作為指令,排除選項 inputs

11.292 xpsnr

取得兩個輸入視訊之間的平均值(跨所有輸入影格)和最小值(跨所有色彩平面平均值)eXtended Perceptually weighted peak Signal-to-Noise Ratio (XPSNR)。

XPSNR 是一種低複雜度的心理視覺動機失真測量演算法,用於評估兩個視訊串流或影像之間的差異。這對於客觀量化視訊和影像編解碼器引起的失真特別有用,作為正式主觀測試的替代方案。對數 XPSNR 輸出值與傳統 psnr 評估的值範圍相似,但更好地反映了人類對視覺編碼品質的印象。有關 XPSNR 測量的更多詳細資訊(基本上表示 PSNR 測量的區塊式加權變體),可以在以下免費提供的論文中找到

  • C. R. Helmrich、M. Siekmann、S. Becker、S. Bosse、D. Marpe 和 T. Wiegand,“XPSNR: A Low-Complexity Extension of the Perceptually Weighted Peak Signal-to-Noise Ratio for High-Resolution Video Quality Assessment”,載於 Proc. IEEE Int. Conf. Acoustics, Speech, Sig. Process. (ICASSP),虛擬/線上,2020 年 5 月。www.ecodis.de/xpsnr.htm
  • C. R. Helmrich、S. Bosse、H. Schwarz、D. Marpe 和 T. Wiegand,“A Study of the Extended Perceptually Weighted Peak Signal-to-Noise Ratio (XPSNR) for Video Compression with Different Resolutions and Bit Depths”,ITU Journal: ICT Discoveries,第 3 卷,第 1 期,第 65 - 72 頁,2020 年 5 月。http://handle.itu.int/11.1002/pub/8153d78b-en

當發佈使用(例如)此 FFmpeg 濾波器獲得的 XPSNR 評估結果時,強烈建議參考上述論文作為文件記錄手段。濾波器需要兩個輸入視訊。第一個輸入被視為(通常未失真的)參考來源,並未經更改地傳遞到輸出,而第二個輸入是(失真的)測試訊號。除了位元深度之外,這兩個視訊輸入必須具有相同的像素格式。此外,為了獲得最佳效能,兩個比較的輸入視訊都應採用 YCbCr 色彩格式。

上面提到的獲得的整體 XPSNR 值透過記錄系統列印。在具有多個色彩平面的輸入的情況下,我們建議報告最小 XPSNR 平均值。

接受以下參數,其行為類似於 psnr 濾波器的參數

stats_file, f

如果指定,濾波器將使用指定的檔案來儲存每個個別影格和色彩平面的 XPSNR 值。當檔名等於 "-" 時,該資料會傳送到標準輸出。

此濾鏡也支援 framesync 選項。

11.292.1 範例

  • 對兩個 1080p HD 視訊 ref_source.yuv 和 test_video.yuv 進行 XPSNR 分析,兩者均為每秒 24 個影格,色彩格式為 4:2:0,位元深度為 8,並輸出名為 "xpsnr.log" 的記錄檔
    ffmpeg -s 1920x1080 -framerate 24 -pix_fmt yuv420p -i ref_source.yuv -s 1920x1080 -framerate
    24 -pix_fmt yuv420p -i test_video.yuv -lavfi xpsnr="stats_file=xpsnr.log" -f null -
    
  • 對兩個 2160p UHD 視訊 ref_source.yuv(位元深度為 8)和 test_video.yuv(位元深度為 10)進行 XPSNR 分析,兩者均為每秒 60 個影格,色彩格式為 4:2:0,無記錄檔輸出
    ffmpeg -s 3840x2160 -framerate 60 -pix_fmt yuv420p -i ref_source.yuv -s 3840x2160 -framerate
    60 -pix_fmt yuv420p10le -i test_video.yuv -lavfi xpsnr="stats_file=-" -f null -
    

11.293 xstack

將視訊輸入堆疊到自訂版面配置中。

所有串流都必須具有相同的像素格式。

濾鏡接受以下選項

inputs

設定輸入串流的數量。預設值為 2。

layout

指定輸入的版面配置。此選項需要使用者明確設定所需的版面配置配置。這會在輸出中設定每個視訊輸入的位置。每個輸入以 "|" 分隔。第一個數字表示列,第二個數字表示行。數字從 0 開始,並以 "_" 分隔。可以選擇性地使用 wX 和 hX,其中 X 是要從中取得寬度或高度的視訊輸入。當以 "+" 分隔時,可以使用多個值。在這種情況下,值會加總在一起。

請注意,如果輸入大小不同,則可能會出現間隙,因為並非所有輸出視訊影格都會被填滿。同樣地,如果視訊的位置沒有為相鄰視訊的完整影格留下足夠的空間,則視訊可能會彼此重疊。

對於 2 個輸入,預設版面配置為 0_0|w0_0(相當於 grid=2x1)。在所有其他情況下,必須由使用者設定版面配置或網格。一次只能指定 gridlayout。同時指定兩者將導致錯誤。

grid

指定固定大小的輸入網格。此選項用於建立輸入串流的固定大小網格。以 COLUMNSxROWS 形式設定網格大小。必須有 ROWS * COLUMNS 個輸入串流,它們將排列為具有 ROWS 行和 COLUMNS 列的網格。使用此選項時,同一行中的每個輸入串流都必須具有相同的高度,並且所有行都必須具有相同的寬度。

如果設定了 grid,則 inputs 選項會被忽略,並且隱含地設定為 ROWS * COLUMNS

對於 2 個輸入,預設網格為 2x1(相當於 layout=0_0|w0_0)。在所有其他情況下,必須由使用者設定版面配置或網格。一次只能指定 gridlayout。同時指定兩者將導致錯誤。

shortest

如果設定為 1,則強制輸出在最短的輸入終止時終止。預設值為 0。

fill

如果設定為有效色彩,則所有未使用的像素都將填滿該色彩。預設情況下,fill 設定為 none,因此停用。

11.293.1 範例

  • 將 4 個輸入顯示到 2x2 網格中。

    Layout

    input1(0, 0)  | input3(w0, 0)
    input2(0, h0) | input4(w0, h0)
    
    xstack=inputs=4:layout=0_0|0_h0|w0_0|w0_h0
    

    請注意,如果輸入大小不同,則可能會發生間隙或重疊。

  • 將 4 個輸入顯示到 1x4 網格中。

    Layout

    input1(0, 0)
    input2(0, h0)
    input3(0, h0+h1)
    input4(0, h0+h1+h2)
    
    xstack=inputs=4:layout=0_0|0_h0|0_h0+h1|0_h0+h1+h2
    

    請注意,如果輸入寬度不同,則會出現未使用的空間。

  • 將 9 個輸入顯示到 3x3 網格中。

    Layout

    input1(0, 0)       | input4(w0, 0)      | input7(w0+w3, 0)
    input2(0, h0)      | input5(w0, h0)     | input8(w0+w3, h0)
    input3(0, h0+h1)   | input6(w0, h0+h1)  | input9(w0+w3, h0+h1)
    
    xstack=inputs=9:layout=0_0|0_h0|0_h0+h1|w0_0|w0_h0|w0_h0+h1|w0+w3_0|w0+w3_h0|w0+w3_h0+h1
    

    請注意,如果輸入大小不同,則可能會發生間隙或重疊。

  • 將 16 個輸入顯示到 4x4 網格中。

    Layout

    input1(0, 0)       | input5(w0, 0)       | input9 (w0+w4, 0)       | input13(w0+w4+w8, 0)
    input2(0, h0)      | input6(w0, h0)      | input10(w0+w4, h0)      | input14(w0+w4+w8, h0)
    input3(0, h0+h1)   | input7(w0, h0+h1)   | input11(w0+w4, h0+h1)   | input15(w0+w4+w8, h0+h1)
    input4(0, h0+h1+h2)| input8(w0, h0+h1+h2)| input12(w0+w4, h0+h1+h2)| input16(w0+w4+w8, h0+h1+h2)
    
    xstack=inputs=16:layout=0_0|0_h0|0_h0+h1|0_h0+h1+h2|w0_0|w0_h0|w0_h0+h1|w0_h0+h1+h2|w0+w4_0|
    w0+w4_h0|w0+w4_h0+h1|w0+w4_h0+h1+h2|w0+w4+w8_0|w0+w4+w8_h0|w0+w4+w8_h0+h1|w0+w4+w8_h0+h1+h2
    

    請注意,如果輸入大小不同,則可能會發生間隙或重疊。

11.294 yadif

解交錯輸入視訊("yadif" 代表 "yet another deinterlacing filter")。

它接受以下參數

mode

mode

0, send_frame

mode

1, send_field

mode

2, send_frame_nospatial

send_frame 類似,但它會略過空間交錯檢查。

3, send_field_nospatial

send_field 類似,但它會略過空間交錯檢查。

預設值為 send_frame

parity

parity

0, tff

parity

1, bff

parity

-1, auto

parity

parity

deint

deint

0, all

deint

1, interlaced

deint

deint

11.295 yadif_cuda

使用 yadif 演算法解交錯輸入視訊,但在 CUDA 中實作,使其可以作為 GPU 加速管線的一部分與 nvdec 和/或 nvenc 一起運作。

它接受以下參數

mode

mode

0, send_frame

mode

1, send_field

mode

2, send_frame_nospatial

send_frame 類似,但它會略過空間交錯檢查。

3, send_field_nospatial

send_field 類似,但它會略過空間交錯檢查。

預設值為 send_frame

parity

parity

0, tff

parity

1, bff

parity

-1, auto

parity

parity

deint

deint

0, all

deint

1, interlaced

deint

deint

11.296 yaepblur

套用模糊濾波器,同時保留邊緣("yaepblur" 代表 "yet another edge preserving blur filter")。該演算法在 "J. S. Lee, Digital image enhancement and noise filtering by use of local statistics, IEEE Trans. Pattern Anal. Mach. Intell. PAMI-2, 1980." 中描述。

它接受以下參數

radius, r

設定視窗半徑。預設值為 3。

planes, p

設定要濾波的平面。預設值僅為第一個平面。

設定要顯示的像素組件。預設情況下,顯示所有像素組件。

設定模糊強度。預設值為 128。

11.296.1 指令

blend

11.297 zoompan

套用縮放和搖攝效果。

此濾波器還能夠拉伸/壓縮音訊資料以使其與時間戳記匹配,或注入靜音/剪切音訊以使其與時間戳記匹配,執行兩者的組合或兩者都不執行。

zoom, z

設定縮放表示式。範圍為 1-10。預設值為 1。

x
y

設定 x 和 y 表示式。預設值為 0。

d

以影格數設定持續時間表示式。這會設定單個輸入影像的效果將持續多少影格。預設值為 90。

s

設定輸出影像大小,預設值為 'hd720'。

fps

設定輸出影格率,預設值為 '25'。

每個表示式都可以包含以下常數

設定 dnn 網路的輸出名稱。

輸入寬度。

output

輸入高度。

輸出寬度,ow

輸出寬度。

輸出高度,oh

輸出高度。

in

輸入影格計數。

on

輸出影格計數。

in_time, it

以秒為單位表示的輸入時間戳記。如果輸入時間戳記未知,則為 NAN。

out_time, time, ot

以秒為單位表示的輸出時間戳記。

x
y

從目前輸入影格的 'x' 和 'y' 表示式中最後計算出的 'x' 和 'y' 位置。

px
py

先前輸入影格的最後一個輸出影格的 'x' 和 'y',或當尚無此影格時為 0(第一個輸入影格)。

zoom

從目前輸入影格的 'z' 表示式中最後計算出的縮放。

pzoom

先前輸入影格的最後一個輸出影格的最後計算出的縮放。

duration

目前輸入影格的輸出影格數。從每個輸入影格的 'd' 表示式計算得出。

pduration

為先前輸入影格建立的輸出影格數

a

有理數:輸入寬度 / 輸入高度

sar

樣本縱橫比

dar

顯示縱橫比

11.297.1 範例

  • 放大至 1.5 倍並同時搖攝至圖片中心附近的某個位置
    zoompan=z='min(zoom+0.0015,1.5)':d=700:x='if(gte(zoom,1.5),x,x+1/a)':y='if(gte(zoom,1.5),y,y+1)':s=640x360
    
  • 放大至 1.5 倍並始終搖攝至圖片中心
    zoompan=z='min(zoom+0.0015,1.5)':d=700:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)'
    
  • 與上述相同,但不暫停
    zoompan=z='min(max(zoom,pzoom)+0.0015,1.5)':d=1:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)'
    
  • 僅在輸入視訊的第一秒將圖片中心放大 2 倍
    zoompan=z='if(between(in_time,0,1),2,1)':d=1:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)'
    

11.298 zscale

使用 z.lib 程式庫縮放(調整大小)輸入視訊:https://github.com/sekrit-twc/zimg。若要啟用此濾波器的編譯,您需要使用 --enable-libzimg 配置 FFmpeg。

zscale 濾波器透過變更輸出樣本縱橫比,強制輸出顯示縱橫比與輸入相同。

如果輸入影像格式與下一個濾波器要求的格式不同,則 zscale 濾波器會將輸入轉換為要求的格式。

11.298.1 選項

bm3d

width, w
超出範圍的像素將被鏡像像素替換。

設定輸出視訊尺寸表達式。預設值為輸入尺寸。

如果 widthw 值為 0,則輸出會使用輸入寬度。如果 heighth 值為 0,則輸出會使用輸入高度。

如果只有一個值為 -n 且 n >= 1,則 zscale 濾波器將使用一個值來維持輸入影像的縱橫比,該值是根據另一個指定的尺寸計算得出的。之後,它將確保計算出的尺寸可被 n 整除,並在必要時調整該值。

如果兩個值都是 -n 且 n >= 1,則行為將與先前詳細說明的兩個值都設定為 0 相同。

請參閱下文,以取得可用於尺寸表達式的已接受常數清單。

size, s

設定視訊尺寸。如需此選項的語法,請查看 (ffmpeg-utils) ffmpeg-utils 手冊中的「視訊尺寸」章節

dither, d

設定顫色類型。

analyze

none
ordered
random
error_diffusion

預設值為 none。

filter, f

設定調整大小濾波器類型。

analyze

point
雙線性
雙立方
spline16
spline36
蘭索斯

預設值為雙線性。

使用位元數設定 blocksize1<<n 定義 blocksize,它是處理區塊的寬度和高度。

設定色彩範圍。

analyze

頂場優先
limited
full

預設值與輸入相同。

primaries, p

設定色彩原色。

analyze

頂場優先
709
unspecified
170m
240m
2020

預設值與輸入相同。

transfer, t

設定傳輸特性。

analyze

頂場優先
709
unspecified
601
linear
2020_10
2020_12
smpte2084
trc
arib-std-b67

預設值與輸入相同。

matrix, m

設定色彩空間矩陣。

可能的值為

頂場優先
709
unspecified
470bg
170m
2020_ncl
2020_cl

預設值與輸入相同。

rangein, rin

設定輸入色彩範圍。

analyze

頂場優先
limited
full

預設值與輸入相同。

primariesin, pin

設定輸入色彩原色。

analyze

頂場優先
709
unspecified
170m
240m
2020

預設值與輸入相同。

transferin, tin

設定輸入傳輸特性。

analyze

頂場優先
709
unspecified
601
linear
2020_10
2020_12

預設值與輸入相同。

matrixin, min

設定輸入色彩空間矩陣。

可能的值為

頂場優先
709
unspecified
470bg
170m
2020_ncl
2020_cl
chromal, c

設定輸出色度位置。

analyze

頂場優先
left
center
topleft
top
bottomleft
bottom
chromalin, cin

設定輸入色度位置。

analyze

頂場優先
left
center
topleft
top
bottomleft
bottom
npl

設定標稱峰值亮度。

param_a

縮放濾波器的參數 A。雙三次的參數 "b" 和 lanczos 的濾波器抽頭數。

param_b

縮放濾波器的參數 B。雙三次的參數 "c"。

wh 選項的值是包含以下常數的表達式

in_w
in_h

輸入寬度和高度

iw
ih

這些與 in_win_h 相同。

out_w
out_h

輸出(縮放)寬度和高度

ow
oh

這些與 out_wout_h 相同

a

iw / ih 相同

sar

輸入樣本縱橫比

dar

輸入顯示縱橫比。從 (iw / ih) * sar 計算得出。

hsub
vsub

水平和垂直輸入色度子取樣值。例如,對於像素格式 "yuv422p",hsub 為 2,vsub 為 1。

ohsub
ovsub

水平和垂直輸出色度子取樣值。例如,對於像素格式 "yuv422p",hsub 為 2,vsub 為 1。

11.298.2 指令

此濾波器支援以下指令

width, w
超出範圍的像素將被鏡像像素替換。

設定輸出視訊尺寸表達式。此命令接受與對應選項相同的語法。

如果指定的表達式無效,則會保持其目前值。

12 OpenCL 視訊濾鏡

以下是目前可用的 OpenCL 視訊濾波器的說明。

若要啟用這些濾波器的編譯,您需要使用 --enable-opencl 配置 FFmpeg。

執行 OpenCL 濾波器需要您初始化硬體裝置,並將該裝置傳遞給任何濾波器圖形中的所有濾波器。

-init_hw_device opencl[=name][:device[,key=value...]]

使用給定的裝置參數,初始化名為 nameopencl 類型的新硬體裝置。

-filter_hw_device name

將名為 name 的硬體裝置傳遞給任何濾波器圖形中的所有濾波器。

如需更詳細的資訊,請參閱 https://www.ffmpeg.org/ffmpeg.html#Advanced-Video-options

  • 在第二個平台上選擇第一個裝置並在其上執行具有預設參數的 avgblur_opencl 濾波器的範例。
    -init_hw_device opencl=gpu:1.0 -filter_hw_device gpu -i INPUT -vf "hwupload, avgblur_opencl, hwdownload" OUTPUT
    

由於 OpenCL 濾波器無法存取正常記憶體中的影格資料,因此所有影格資料都需要上傳 (hwupload) 到連接到適當裝置的硬體表面,然後下載 (hwdownload) 回到正常記憶體。請注意,hwupload 將上傳到具有與軟體影格相同版面配置的表面,因此可能需要在前面立即新增 format 濾波器,以使輸入進入正確的格式,並且 hwdownload 不支援輸出上的所有格式 - 可能需要在圖形中緊接在後面插入額外的 format 濾波器,以使輸出進入支援的格式。

12.1 avgblur_opencl

avgblur

濾鏡接受以下選項

sizeX

設定水平半徑大小。範圍為 [1, 1024],預設值為 1

planes

設定要濾波的平面。預設值為 0xf,表示處理所有平面。

sizeY

設定垂直半徑大小。範圍為 [1, 1024],預設值為 0。如果為零,則將使用 sizeX 值。

12.1.1 範例

  • 套用平均模糊濾波器,水平和垂直大小為 3,將輸出的每個像素設定為輸入中以其為中心的 7x7 區域的平均值。對於影像邊緣上的像素,區域不會超出影像邊界,因此不會在計算中使用超出範圍的座標。
    -i INPUT -vf "hwupload, avgblur_opencl=3, hwdownload" OUTPUT
    

12.2 boxblur_opencl

boxblur

它接受以下參數

luma_radius, lr
luma_power, lp
chroma_radius, cr
chroma_power, cp
alpha_radius, ar
alpha_power, ap

以下是接受選項的描述。

luma_radius, lr
chroma_radius, cr
alpha_radius, ar

boxblur

boxblur

boxblur

boxblur

f
h

w

cw
新增脈衝訊號。

boxblur

hsub
vsub

boxblur

luma_power, lp
chroma_power, cp
alpha_power, ap

boxblur

boxblur

boxblur

12.2.1 範例

套用方框模糊濾波器,將輸出的每個像素設定為每個平面的方框半徑 luma_radiuschroma_radiusalpha_radius 的平均值。濾波器將對應的平面上套用 luma_powerchroma_poweralpha_power 次。對於影像邊緣上的像素,半徑不會超出影像邊界,因此不會在計算中使用超出範圍的座標。

  • 套用方框模糊濾波器,亮度、色度和 Alpha 半徑設定為 2,亮度、色度和 Alpha 強度設定為 3。濾波器將對影像的每個平面執行 3 次,方框半徑設定為 2。
    -i INPUT -vf "hwupload, boxblur_opencl=luma_radius=2:luma_power=3, hwdownload" OUTPUT
    -i INPUT -vf "hwupload, boxblur_opencl=2:3, hwdownload" OUTPUT
    
  • 套用方框模糊濾波器,亮度半徑設定為 2,亮度強度為 1,色度半徑為 4,色度強度為 5,Alpha 半徑為 3,Alpha 強度為 7。

    對於亮度平面,將執行一次 2x2 方框半徑。

    對於色度平面,將執行 5 次 4x4 方框半徑。

    對於 Alpha 平面,將執行 7 次 3x3 方框半徑。

    -i INPUT -vf "hwupload, boxblur_opencl=2:1:4:5:3:7, hwdownload" OUTPUT
    

12.3 colorkey_opencl

RGB 色彩空間色彩鍵控。

濾鏡接受以下選項

color

color

similarity

similarity

chromakey

blend

blend

chromakey

chromakey

12.3.1 範例

  • 使輸入中每個半綠色像素都變成透明,並帶有一些輕微的混合
    -i INPUT -vf "hwupload, colorkey_opencl=green:0.3:0.1, hwdownload" OUTPUT
    

12.4 convolution_opencl

套用 3x3、5x5、7x7 矩陣的卷積。

濾鏡接受以下選項

0m
1m
2m
3m

設定每個平面的矩陣。矩陣是 9、25 或 49 個帶號數字的序列。每個平面的預設值為 0 0 0 0 1 0 0 0 0

0rdiv
1rdiv
2rdiv
3rdiv

設定每個平面的計算值的乘數。如果未設定或為 0,則它將是所有矩陣元素的總和。選項值必須是等於或大於 0.0 的浮點數。預設值為 1.0

0bias
1bias
2偏移量
3偏移量

設定每個平面的偏移量。此值會新增到乘法的結果。適用於使整體影像更亮或更暗。選項值必須是等於或大於 0.0 的浮點數。預設值為 0.0

12.4.1 範例

  • 套用銳化
    -i INPUT -vf "hwupload, convolution_opencl=0 -1 0 -1 5 -1 0 -1 0:0 -1 0 -1 5 -1 0 -1 0:0 -1 0 -1 5 -1 0 -1 0:0 -1 0 -1 5 -1 0 -1 0, hwdownload" OUTPUT
    
  • 套用模糊
    -i INPUT -vf "hwupload, convolution_opencl=1 1 1 1 1 1 1 1 1:1 1 1 1 1 1 1 1 1:1 1 1 1 1 1 1 1 1:1 1 1 1 1 1 1 1 1:1/9:1/9:1/9:1/9, hwdownload" OUTPUT
    
  • 套用邊緣增強
    -i INPUT -vf "hwupload, convolution_opencl=0 0 0 -1 1 0 0 0 0:0 0 0 -1 1 0 0 0 0:0 0 0 -1 1 0 0 0 0:0 0 0 -1 1 0 0 0 0:5:1:1:1:0:128:128:128, hwdownload" OUTPUT
    
  • 套用邊緣偵測
    -i INPUT -vf "hwupload, convolution_opencl=0 1 0 1 -4 1 0 1 0:0 1 0 1 -4 1 0 1 0:0 1 0 1 -4 1 0 1 0:0 1 0 1 -4 1 0 1 0:5:5:5:1:0:128:128:128, hwdownload" OUTPUT
    
  • 套用包含對角線的拉普拉斯邊緣偵測器
    -i INPUT -vf "hwupload, convolution_opencl=1 1 1 1 -8 1 1 1 1:1 1 1 1 -8 1 1 1 1:1 1 1 1 -8 1 1 1 1:1 1 1 1 -8 1 1 1 1:5:5:5:1:0:128:128:0, hwdownload" OUTPUT
    
  • 套用浮雕
    -i INPUT -vf "hwupload, convolution_opencl=-2 -1 0 -1 1 1 0 1 2:-2 -1 0 -1 1 1 0 1 2:-2 -1 0 -1 1 1 0 1 2:-2 -1 0 -1 1 1 0 1 2, hwdownload" OUTPUT
    

12.5 erosion_opencl

將侵蝕效果套用於視訊。

此濾鏡將像素替換為局部 (3x3) 最小值。

設定視窗長度,以樣本為單位。預設值為 2048。允許範圍為 32 到 65536。

noise
設定執行除法時的雜訊。預設值為 0.0000001。當寬度和高度不相同且不是 2 的冪,或者卷積之前的串流有雜訊時很有用。
deconvolve 濾鏡也支援 framesync 選項。
減少視訊中的交叉亮度(點爬行)和交叉顏色(彩虹)。

限制每個平面的最大變更。範圍為 [0, 65535],預設值為 65535。如果為 0,則平面將保持不變。

filename

旗標,指定要參考的像素。範圍為 [0, 255],預設值為 255,即使用所有八個像素。

旗標到以 x 為中心的本機 3x3 座標區域

1 2 3

4 x 5

6 7 8

12.5.1 範例

  • 套用侵蝕濾波器,閾值 0 設定為 30,閾值 1 設定為 40,閾值 2 設定為 50,座標設定為 231,將輸出的每個像素設定為輸入中以其為中心的 3x3 區域的像素 1、2、3、6、7、8 之間的本機最小值。如果輸入像素與本機最小值之間的差異大於對應平面的閾值,則輸出像素將設定為輸入像素 - 對應平面的閾值。
    -i INPUT -vf "hwupload, erosion_opencl=30:40:50:coordinates=231, hwdownload" OUTPUT
    

12.6 deshake_opencl

基於特徵點的視訊穩定濾波器。

濾鏡接受以下選項

tripod

透過防止原始影格中的任何攝影機運動來模擬三腳架。預設值為 0

debug

是否應顯示額外的偵錯資訊,包括在處理後的輸出中和在主控台中。

請注意,為了查看主控台偵錯輸出,您還需要將 -v verbose 傳遞給 ffmpeg。

僅 RGB 輸入支援在輸出視訊中檢視點匹配。

預設值為 0

adaptive_crop

是否在邊框處進行少量裁切,以減少鏡像像素的數量。

預設值為 1

refine_features

是否應在子像素層級細化特徵點。

可以關閉此功能以稍微提高效能,但會犧牲精確度。

預設值為 1

smooth_strength

套用至攝影機路徑的平滑強度,從 0.01.0

1.0 是最大平滑強度,而小於該值的值會導致平滑度降低。

0.0 會使濾波器根據每個影格自適應地選擇平滑強度。

預設值為 0.0

smooth_window_multiplier

控制平滑視窗的大小(緩衝以從中判斷運動資訊的影格數)。

平滑視窗的大小是透過將視訊的影格率乘以該數字來決定的。

可接受的值範圍為 0.110.0

較大的值會增加可用於判斷如何平滑攝影機路徑的運動資料量,從而可能提高平滑度,但也增加了延遲和記憶體使用量。

預設值為 2.0

12.6.1 範例

  • 使用固定的中等平滑強度穩定視訊
    -i INPUT -vf "hwupload, deshake_opencl=smooth_strength=0.5, hwdownload" OUTPUT
    
  • 使用偵錯(在主控台和呈現的視訊中)穩定視訊
    -i INPUT -filter_complex "[0:v]format=rgba, hwupload, deshake_opencl=debug=1, hwdownload, format=rgba, format=yuv420p" -v verbose OUTPUT
    

12.7 dilation_opencl

預設值為 ‘exhaustive’。

logfile

設定視窗長度,以樣本為單位。預設值為 2048。允許範圍為 32 到 65536。

noise
設定執行除法時的雜訊。預設值為 0.0000001。當寬度和高度不相同且不是 2 的冪,或者卷積之前的串流有雜訊時很有用。
deconvolve 濾鏡也支援 framesync 選項。
減少視訊中的交叉亮度(點爬行)和交叉顏色(彩虹)。

限制每個平面的最大變更。範圍為 [0, 65535],預設值為 65535。如果為 0,則平面將保持不變。

filename

旗標,指定要參考的像素。範圍為 [0, 255],預設值為 255,即使用所有八個像素。

旗標到以 x 為中心的本機 3x3 座標區域

1 2 3

4 x 5

6 7 8

12.7.1 範例

  • 套用膨脹濾波器,閾值 0 設定為 30,閾值 1 設定為 40,閾值 2 設定為 50,座標設定為 231,將輸出的每個像素設定為輸入中以其為中心的 3x3 區域的像素 1、2、3、6、7、8 之間的本機最大值。如果輸入像素與本機最大值之間的差異大於對應平面的閾值,則輸出像素將設定為輸入像素 + 對應平面的閾值。
    -i INPUT -vf "hwupload, dilation_opencl=30:40:50:coordinates=231, hwdownload" OUTPUT
    

12.8 nlmeans_opencl

透過 OpenCL 的非本機均值去噪濾波器,此濾波器接受與 nlmeans 相同的選項。

12.9 overlay_opencl

將一個視訊覆蓋在另一個視訊之上。

它採用兩個輸入,並具有一個輸出。第一個輸入是「主要」視訊,第二個輸入覆蓋在其上。此濾波器要求所有輸入都具有相同的記憶體版面配置。因此,可能需要格式轉換。

濾鏡接受以下選項

x

設定覆蓋視訊在主要視訊上的 x 座標。預設值為 0

y

設定覆蓋視訊在主要視訊上的 y 座標。預設值為 0

12.9.1 範例

  • 將影像 LOGO 覆蓋在 INPUT 視訊的左上角。兩個輸入都是 yuv420p 格式。
    -i INPUT -i LOGO -filter_complex "[0:v]hwupload[a], [1:v]format=yuv420p, hwupload[b], [a][b]overlay_opencl, hwdownload" OUTPUT
    
  • 輸入具有色彩通道的相同記憶體版面配置,覆蓋圖具有額外的 Alpha 平面,例如 INPUT 為 yuv420p,LOGO 為 yuva420p。
    -i INPUT -i LOGO -filter_complex "[0:v]hwupload[a], [1:v]format=yuva420p, hwupload[b], [a][b]overlay_opencl, hwdownload" OUTPUT
    

12.10 pad_opencl

將填充新增至輸入影像,並將原始輸入放置在提供的 xy 坐標處。

設定視窗長度,以樣本為單位。預設值為 2048。允許範圍為 32 到 65536。

width, w
超出範圍的像素將被鏡像像素替換。

指定輸出影像大小的表達式,並新增填充。如果 widthheight 的值為 0,則輸出將使用對應的輸入大小。

width 表達式可以參考 height 表達式設定的值,反之亦然。

widthheight 的預設值為 0。

x
y

指定在填充區域內放置輸入影像的偏移量,相對於輸出影像的頂部/左側邊框。

x 表達式可以參考 y 表達式設定的值,反之亦然。

xy 的預設值為 0。

如果 xy 評估為負數,則會變更它們,使輸入影像在填充區域中居中。

color

指定填充區域的色彩。有關此選項的語法,請查看 ffmpeg-utils 手冊中的 "(ffmpeg-utils)「Color」章節"

aspect

填充到縱橫比而不是解析度。

widthheightxy 選項的值是包含以下常數的表達式

in_w
in_h

輸入視訊寬度和高度。

iw
ih

這些與 in_win_h 相同。

out_w
out_h

輸出寬度和高度(填充區域的大小),如 widthheight 表達式所指定。

ow
oh

這些與 out_wout_h 相同。

x
y

x 和 y 偏移量,如 xy 表達式所指定,如果尚未指定,則為 NAN。

a

iw / ih 相同

sar

輸入樣本縱橫比

dar

輸入顯示縱橫比,它與 (iw / ih) * sar 相同

12.11 prewitt_opencl

將 Prewitt 運算子 (https://en.wikipedia.org/wiki/Prewitt_operator) 套用至輸入視訊串流。

stages

planes

設定要濾波的平面。預設值為 0xf,表示處理所有平面。

scale

設定將與已篩選結果相乘的值。範圍為 [0.0, 65535],預設值為 1.0

delta

設定將新增到已篩選結果的值。範圍為 [-65535, 65535],預設值為 0.0

12.11.1 範例

  • 套用 Prewitt 運算子,比例設定為 2,delta 設定為 10。
    -i INPUT -vf "hwupload, prewitt_opencl=scale=2:delta=10, hwdownload" OUTPUT
    

12.12 program_opencl

使用 OpenCL 程式濾波視訊。

source

OpenCL 程式原始碼檔案。

kernel

程式中的核心名稱。

inputs

濾波器的輸入數量。預設值為 1。

size, s

輸出影格的大小。預設值與第一個輸入相同。

program_opencl 濾波器也支援 framesync 選項。

程式原始碼檔案必須包含具有給定名稱的核心函數,該函數將針對輸出的每個平面執行一次。在平面上執行的每次執行都會排入佇列,作為單獨的 2D 全域 NDRange,每個像素都有一個工作項目要產生。因此,每個工作項目的全域 ID 偏移量是目的地影像中像素的座標。

核心函數需要採用以下引數

  • 目的地影像,__write_only image2d_t

    此影像將成為輸出;核心應寫入所有內容。

  • 影格索引,unsigned int

    這是一個從零開始計數的計數器,每個影格遞增 1。

  • 來源影像,__read_only image2d_t

    這些是每個輸入上最新的影像。核心可以從中讀取以產生輸出,但不能寫入它們。

範例程式

  • 將輸入複製到輸出(輸出必須與輸入大小相同)。
    __kernel void copy(__write_only image2d_t destination,
                       unsigned int index,
                       __read_only  image2d_t source)
    {
        const sampler_t sampler = CLK_NORMALIZED_COORDS_FALSE;
    
        int2 location = (int2)(get_global_id(0), get_global_id(1));
    
        float4 value = read_imagef(source, sampler, location);
    
        write_imagef(destination, location, value);
    }
    
  • 套用簡單的變換,將輸入旋轉一個量,該量隨著索引計數器而增加。像素值由取樣器線性插值,並且輸出不必與輸入具有相同的尺寸。
    __kernel void rotate_image(__write_only image2d_t dst,
                               unsigned int index,
                               __read_only  image2d_t src)
    {
        const sampler_t sampler = (CLK_NORMALIZED_COORDS_FALSE |
                                   CLK_FILTER_LINEAR);
    
        float angle = (float)index / 100.0f;
    
        float2 dst_dim = convert_float2(get_image_dim(dst));
        float2 src_dim = convert_float2(get_image_dim(src));
    
        float2 dst_cen = dst_dim / 2.0f;
        float2 src_cen = src_dim / 2.0f;
    
        int2   dst_loc = (int2)(get_global_id(0), get_global_id(1));
    
        float2 dst_pos = convert_float2(dst_loc) - dst_cen;
        float2 src_pos = {
            cos(angle) * dst_pos.x - sin(angle) * dst_pos.y,
            sin(angle) * dst_pos.x + cos(angle) * dst_pos.y
        };
        src_pos = src_pos * src_dim / dst_dim;
    
        float2 src_loc = src_pos + src_cen;
    
        if (src_loc.x < 0.0f      || src_loc.y < 0.0f ||
            src_loc.x > src_dim.x || src_loc.y > src_dim.y)
            write_imagef(dst, dst_loc, 0.5f);
        else
            write_imagef(dst, dst_loc, read_imagef(src, sampler, src_loc));
    }
    
  • 將兩個輸入混合在一起,每個輸入的使用量隨索引計數器而變化。
    __kernel void blend_images(__write_only image2d_t dst,
                               unsigned int index,
                               __read_only  image2d_t src1,
                               __read_only  image2d_t src2)
    {
        const sampler_t sampler = (CLK_NORMALIZED_COORDS_FALSE |
                                   CLK_FILTER_LINEAR);
    
        float blend = (cos((float)index / 50.0f) + 1.0f) / 2.0f;
    
        int2  dst_loc = (int2)(get_global_id(0), get_global_id(1));
        int2 src1_loc = dst_loc * get_image_dim(src1) / get_image_dim(dst);
        int2 src2_loc = dst_loc * get_image_dim(src2) / get_image_dim(dst);
    
        float4 val1 = read_imagef(src1, sampler, src1_loc);
        float4 val2 = read_imagef(src2, sampler, src2_loc);
    
        write_imagef(dst, dst_loc, val1 * blend + val2 * (1.0f - blend));
    }
    

12.13 remap_opencl

使用第二個:Xmap 和第三個:Ymap 輸入視訊串流重新映射像素。

位置 (X, Y) 的目標像素將從來源 (x, y) 位置選取,其中 x = Xmap(X, Y) 且 y = Ymap(X, Y)。如果映射值超出範圍,目標像素將使用零值。

Xmap 和 Ymap 輸入視訊串流必須具有相同的尺寸。輸出視訊串流將具有 Xmap/Ymap 視訊串流尺寸。Xmap 和 Ymap 輸入視訊串流為 32 位元浮點像素格式,單通道。

interp

指定用於像素重新映射的插值。允許值為 nearlinear。預設值為 linear

fill

指定未映射像素的色彩。有關此選項的語法,請查看 ffmpeg-utils 手冊中的 "(ffmpeg-utils)「Color」章節"。預設色彩為 black

12.14 roberts_opencl

將 Roberts 交叉運算子 (https://en.wikipedia.org/wiki/Roberts_cross) 套用至輸入視訊串流。

stages

planes

設定要濾波的平面。預設值為 0xf,表示處理所有平面。

scale

設定將與已篩選結果相乘的值。範圍為 [0.0, 65535],預設值為 1.0

delta

設定將新增到已篩選結果的值。範圍為 [-65535, 65535],預設值為 0.0

12.14.1 範例

  • 套用 Roberts 交叉運算子,比例設定為 2,delta 設定為 10
    -i INPUT -vf "hwupload, roberts_opencl=scale=2:delta=10, hwdownload" OUTPUT
    

12.15 sobel_opencl

將 Sobel 運算子 (https://en.wikipedia.org/wiki/Sobel_operator) 套用至輸入視訊串流。

stages

planes

設定要濾波的平面。預設值為 0xf,表示處理所有平面。

scale

設定將與已篩選結果相乘的值。範圍為 [0.0, 65535],預設值為 1.0

delta

設定將新增到已篩選結果的值。範圍為 [-65535, 65535],預設值為 0.0

12.15.1 範例

  • 套用 sobel 運算子,比例設定為 2,delta 設定為 10
    -i INPUT -vf "hwupload, sobel_opencl=scale=2:delta=10, hwdownload" OUTPUT
    

12.16 tonemap_opencl

執行 HDR(PQ/HLG) 到 SDR 轉換,並進行色調映射。

它接受以下參數

tonemap

指定要使用的色調映射運算子。與 tonemap 中的 tonemap 選項相同。

每個資料平面的 Adler-32 檢查碼列表。

調整色調映射演算法。與 tonemap 中的 param 選項相同。

desat

對亮度超過此水平的亮部套用去飽和處理。參數越高,保留的色彩資訊就越多。此設定有助於防止超亮部出現不自然的過曝色彩,而是(平滑地)變成白色。這使得影像感覺更自然,但會犧牲有關超出範圍色彩的資訊。

預設值為 0.5,此處的演算法與目前 CPU 版本的色調映射略有不同。設定為 0.0 會停用此選項。

threshold

色調映射演算法參數針對每個場景進行微調。並使用閾值來偵測場景是否已變更。如果目前影格平均亮度與目前執行平均值之間的距離超過閾值,我們將重新計算場景平均值和峰值亮度。預設值為 0.2。

format

指定輸出像素格式。

目前支援的格式為

p010
nv12
使用位元數設定 blocksize1<<n 定義 blocksize,它是處理區塊的寬度和高度。

設定輸出色彩範圍。

analyze

tv/mpeg
pc/jpeg

預設值與輸入相同。

primaries, p

設定輸出原色。

analyze

bt709
bt2020

預設值與輸入相同。

transfer, t

設定輸出傳輸特性。

analyze

bt709
bt2020

預設值為 bt709。

matrix, m

設定輸出色彩空間矩陣。

可能的值為

bt709
bt2020

預設值與輸入相同。

12.16.1 範例

  • 使用線性運算子將 HDR(PQ/HLG) 視訊轉換為 bt2020-transfer-characteristic p010 格式。
    -i INPUT -vf "format=p010,hwupload,tonemap_opencl=t=bt2020:tonemap=linear:format=p010,hwdownload,format=p010" OUTPUT
    

12.17 unsharp_opencl

銳化或模糊輸入視訊。

它接受以下參數

luma_msize_x, lx

設定亮度矩陣水平尺寸。範圍為 [1, 23],預設值為 5

luma_msize_y, ly

設定亮度矩陣垂直尺寸。範圍為 [1, 23],預設值為 5

luma_amount, la

設定亮度效果強度。範圍為 [-10, 10],預設值為 1.0

負值將模糊輸入視訊,而正值將銳化它,值為零將停用效果。

chroma_msize_x, cx

設定色度矩陣水平尺寸。範圍為 [1, 23],預設值為 5

chroma_msize_y, cy

設定色度矩陣垂直尺寸。範圍為 [1, 23],預設值為 5

chroma_amount, ca

設定色度效果強度。範圍為 [-10, 10],預設值為 0.0

負值將模糊輸入視訊,而正值將銳化它,值為零將停用效果。

所有參數都是可選的,預設值相當於字串「5:5:1.0:5:5:0.0」。

12.17.1 範例

  • 套用強烈的亮度銳化效果
    -i INPUT -vf "hwupload, unsharp_opencl=luma_msize_x=7:luma_msize_y=7:luma_amount=2.5, hwdownload" OUTPUT
    
  • 對亮度和色度參數套用強烈的模糊效果
    -i INPUT -vf "hwupload, unsharp_opencl=7:7:-2:7:7:-2, hwdownload" OUTPUT
    

12.18 xfade_opencl

使用 OpenCL 以自訂轉場效果淡入淡出兩個影片。

設定視窗長度,以樣本為單位。預設值為 2048。允許範圍為 32 到 65536。

transition

設定其中一種可能的轉場效果。

自訂

選擇自訂轉場效果,實際轉場描述將從來源和核心選項中選取。

淡入淡出
向左擦拭
向右擦拭
向上擦拭
向下擦拭
向左滑動
向右滑動
向上滑動
向下滑動

預設轉場效果為淡入淡出。

source

用於自訂轉場的 OpenCL 程式原始碼檔案。

kernel

設定要用於自訂轉場的核心名稱,從程式原始碼檔案中選取。

duration

設定影片轉場的持續時間。

offset

設定轉場開始時間,相對於第一個影片。

程式原始碼檔案必須包含具有給定名稱的核心函數,該函數將針對輸出的每個平面執行一次。在平面上執行的每次執行都會排入佇列,作為單獨的 2D 全域 NDRange,每個像素都有一個工作項目要產生。因此,每個工作項目的全域 ID 偏移量是目的地影像中像素的座標。

核心函數需要採用以下引數

  • 目的地影像,__write_only image2d_t

    此影像將成為輸出;核心應寫入所有內容。

  • 第一個來源影像,__read_only image2d_t。第二個來源影像,__read_only image2d_t

    這些是每個輸入上最新的影像。核心可以從中讀取以產生輸出,但不能寫入它們。

  • 轉場進度,float。此值始終介於 0 和 1 之間(包含 0 和 1)。

範例程式

  • 套用點狀幕簾轉場效果
    __kernel void blend_images(__write_only image2d_t dst,
                               __read_only  image2d_t src1,
                               __read_only  image2d_t src2,
                               float progress)
    {
        const sampler_t sampler = (CLK_NORMALIZED_COORDS_FALSE |
                                   CLK_FILTER_LINEAR);
        int2  p = (int2)(get_global_id(0), get_global_id(1));
        float2 rp = (float2)(get_global_id(0), get_global_id(1));
        float2 dim = (float2)(get_image_dim(src1).x, get_image_dim(src1).y);
        rp = rp / dim;
    
        float2 dots = (float2)(20.0, 20.0);
        float2 center = (float2)(0,0);
        float2 unused;
    
        float4 val1 = read_imagef(src1, sampler, p);
        float4 val2 = read_imagef(src2, sampler, p);
        bool next = distance(fract(rp * dots, &unused), (float2)(0.5, 0.5)) < (progress / distance(rp, center));
    
        write_imagef(dst, p, next ? val1 : val2);
    }
    

13 VAAPI 視訊濾鏡

VAAPI 影片濾鏡通常與 VAAPI 解碼器和 VAAPI 編碼器一起使用。以下是 VAAPI 影片濾鏡的描述。

若要啟用這些濾鏡的編譯,您需要使用 --enable-vaapi 設定 FFmpeg。

若要使用 vaapi 濾鏡,您需要正確設定 vaapi 裝置。如需更多資訊,請閱讀 https://trac.ffmpeg.org/wiki/Hardware/VAAPI

13.1 overlay_vaapi

將一個影片疊加在另一個影片的頂部。

它接受兩個輸入並具有一個輸出。第一個輸入是「主要」視訊,第二個輸入覆蓋在該視訊之上。

濾鏡接受以下選項

x
y

設定主要視訊上覆蓋視訊的 x 和 y 坐標的表達式。

兩個表達式的預設值均為 "0"。

f
h

設定疊加在主影片上的影片寬度和高度的表達式。

預設值中,寬度 'w' 為 'overlay_iw',高度 'h' 為 'overlay_ih*w/overlay_iw'。

表達式可以包含以下參數

main_w, W
main_h, H

主要輸入寬度和高度。

overlay_iw
overlay_ih

覆蓋輸入寬度和高度。

overlay_w, w
overlay_h, h

疊加輸出的寬度和高度。

overlay_x, x
overlay_y, y

疊加圖層在主圖層內的位置

range, r

設定疊加影片的透明度。允許範圍為 0.0 到 1.0。值越高表示透明度越低。預設值為 1.0

eof_action

請參閱 framesync

shortest

請參閱 framesync

repeatlast

請參閱 framesync

此濾鏡也支援 framesync 選項。

13.1.1 範例

  • 將影像 LOGO 疊加在輸入影片的左上角。此濾鏡的兩個輸入皆為 yuv420p 格式。
    -i INPUT -i LOGO -filter_complex "[0:v]hwupload[a], [1:v]format=yuv420p, hwupload[b], [a][b]overlay_vaapi" OUTPUT
    
  • 將影像 LOGO 疊加在輸入影片左上角偏移 (200, 100) 的位置。輸入具有相同的顏色通道記憶體佈局,疊加具有額外的 alpha 平面,例如輸入為 yuv420p,而 LOGO 為 yuva420p。
    -i INPUT -i LOGO -filter_complex "[0:v]hwupload[a], [1:v]format=yuva420p, hwupload[b], [a][b]overlay_vaapi=x=200:y=100:w=400:h=300:alpha=1.0, hwdownload, format=nv12" OUTPUT
    

13.2 tonemap_vaapi

執行 HDR 到 SDR 或 HDR 到 HDR 色調映射。目前僅接受 HDR10 作為輸入。

它接受以下參數

format

指定輸出像素格式。

HDR 到 SDR 色調映射的預設值為 nv12,HDR 到 HDR 色調映射的預設值為 p010。

primaries, p

設定輸出原色。

HDR 到 SDR 色調映射的預設值為 bt709,HDR 到 HDR 色調映射的預設值與輸入相同。

transfer, t

設定輸出傳輸特性。

HDR 到 SDR 色調映射的預設值為 bt709,HDR 到 HDR 色調映射的預設值與輸入相同。

matrix, m

設定輸出色彩空間矩陣。

HDR 到 SDR 色調映射的預設值為 bt709,HDR 到 HDR 色調映射的預設值與輸入相同。

顯示

設定輸出母帶顯示器色彩容量。它由以 '|' 分隔的兩個值列表給出,兩個值之間以空格分隔。它依序設定 G、B、R 中的顯示器原色 x 和 y,然後是白點 x 和 y,以及標稱最小和最大顯示器亮度。

當設定此選項時,將執行 HDR 到 HDR 色調映射。

光線

設定輸出內容光線等級資訊。它接受 2 個以空格分隔的值,第一個輸入是最大光線等級,第二個輸入是最大平均光線等級。

對於 HDR 到 SDR 色調映射會忽略此選項,對於 HDR 到 HDR 色調映射則為可選。

13.2.1 範例

  • 將 HDR(HDR10)影片轉換為 bt2020 傳輸特性 p010 格式
    tonemap_vaapi=format=p010:t=bt2020-10
    
  • 將 HDR 影片轉換為 HDR 影片
    tonemap_vaapi=display=7500\ 3000|34000\ 16000|13250\ 34500|15635\ 16450|500\ 10000000
    

13.3 hstack_vaapi

水平堆疊輸入影片。

這是 hstack 濾鏡的 VA-API 變體,每個輸入串流可能具有不同的高度,此濾鏡將縮小/放大每個輸入串流,同時保持原始縱橫比。

設定視窗長度,以樣本為單位。預設值為 2048。允許範圍為 32 到 65536。

inputs

請參閱 hstack

shortest

請參閱 hstack

高度

設定輸出高度。如果設定為 0,此濾鏡會將輸出高度設定為第一個輸入串流的高度。預設值為 0。

13.4 vstack_vaapi

垂直堆疊輸入視訊。

這是 vstack 濾鏡的 VA-API 變體,每個輸入串流可能具有不同的寬度,此濾鏡將縮小/放大每個輸入串流,同時保持原始縱橫比。

設定視窗長度,以樣本為單位。預設值為 2048。允許範圍為 32 到 65536。

inputs

請參閱 vstack

shortest

請參閱 vstack

設定心理聲學削波器的迭代次數。允許範圍為 1 到 20。預設值為 10。

設定輸出寬度。如果設定為 0,此濾鏡會將輸出寬度設定為第一個輸入串流的寬度。預設值為 0。

13.5 xstack_vaapi

將視訊輸入堆疊到自訂版面配置中。

這是 xstack 濾鏡的 VA-API 變體,每個輸入串流可能具有不同的大小,此濾鏡將縮小/放大每個輸入串流至指定的輸出大小,或第一個輸入串流的大小。

設定視窗長度,以樣本為單位。預設值為 2048。允許範圍為 32 到 65536。

inputs

請參閱 xstack

shortest

請參閱 xstack

layout

請參閱 xstack。此外,這允許使用者為每個輸入串流提供輸出大小。

xstack_vaapi=inputs=4:layout=0_0_1920x1080|0_h0_1920x1080|w0_0_1920x1080|w0_h0_1920x1080
grid

請參閱 xstack

grid_tile_size

當設定 grid 時,為每個輸入串流設定輸出大小。如果未設定此選項,此濾鏡預設會將輸出大小設定為第一個輸入串流的大小。如需此選項的語法,請查看 (ffmpeg-utils)「影片大小」章節在 ffmpeg-utils 手冊中

fill

請參閱 xstack

13.6 pad_vaapi

將填充新增至輸入影像,並將原始輸入放置在提供的 xy 坐標處。

設定視窗長度,以樣本為單位。預設值為 2048。允許範圍為 32 到 65536。

width, w
超出範圍的像素將被鏡像像素替換。

指定輸出影像大小的表達式,並新增填充。如果 widthheight 的值為 0,則輸出將使用對應的輸入大小。

width 表達式可以參考 height 表達式設定的值,反之亦然。

widthheight 的預設值為 0。

x
y

指定在填充區域內放置輸入影像的偏移量,相對於輸出影像的頂部/左側邊框。

x 表達式可以參考 y 表達式設定的值,反之亦然。

xy 的預設值為 0。

如果 xy 評估為負數,則會變更它們,使輸入影像在填充區域中居中。

color

指定填充區域的色彩。有關此選項的語法,請查看 ffmpeg-utils 手冊中的 "(ffmpeg-utils)「Color」章節"

aspect

填充到縱橫比而不是解析度。

widthheightxy 選項的值是包含以下常數的表達式

in_w
in_h

輸入視訊寬度和高度。

iw
ih

這些與 in_win_h 相同。

out_w
out_h

輸出寬度和高度(填充區域的大小),如 widthheight 表達式所指定。

ow
oh

這些與 out_wout_h 相同。

x
y

x 和 y 偏移量,如 xy 表達式所指定,如果尚未指定,則為 NAN。

a

iw / ih 相同

sar

輸入樣本縱橫比

dar

輸入顯示縱橫比,它與 (iw / ih) * sar 相同

13.7 drawbox_vaapi

超出範圍的像素將被包裹,以便它們指向另一側的像素。

它接受以下參數

x
y

mirror

width, w
超出範圍的像素將被鏡像像素替換。

預設值為 ‘smear’。

向 hd720 視訊大小的 rgb 輸入新增波紋效果

指定要寫入的方塊顏色。如需此選項的一般語法,請查看 (ffmpeg-utils)「顏色」章節在 ffmpeg-utils 手冊中

使用基於邊界框的深度神經網路進行分類。

dnn_backend

指定要用於模型載入和執行的 DNN 後端。此選項現在僅接受 openvino,將新增 tensorflow 後端。

model

若值為 1,繪製方塊的像素將覆寫影片的顏色和 alpha 像素。預設值為 0,這會將方塊合成到輸入影片上。

input

output
設定 dnn 網路的輸出名稱。

輸入寬度和高度。

x
y

設定置信度閾值(預設值:0.5)。

f
h

labels

設定傳輸表達式。

對於 tensorflow 後端,您可以使用 sess_config 選項設定其配置,請使用 tools/python/tf_sess_config.py 來獲取系統的配置。

13.7.1 範例

  • labels
    drawbox
    
  • 設定標籤檔案的路徑,該檔案指定標籤 ID 和名稱之間的映射。每個標籤名稱都寫在一行中,跳過尾隨空格和空行。第一行是標籤 ID 0 的名稱(通常為「背景」),第二行是標籤 ID 1 的名稱,依此類推。如果未提供標籤檔案,則標籤 ID 將被視為名稱。
    drawbox=10:20:200:60:red@0.5
    

    backend_configs

    drawbox=x=10:y=20:w=200:h=60:color=red@0.5
    
  • 設定要傳遞到後端的配置。要使用異步執行,請設定 async(預設值:設定)。如果後端不支持異步,則回退到同步執行。
    drawbox=x=10:y=10:w=100:h=100:color=pink@0.5:t=fill
    
  • 使用深度神經網路進行影像處理。它與另一個濾鏡一起工作,該濾鏡將影格的像素格式轉換為 dnn 網路所需的内容。
    drawbox=x=-t:y=0.5*(ih-iw/2.4)-t:w=iw+t*2:h=iw/2.4+t*2:t=2:c=red
    

14 Vulkan 視訊濾鏡

以下是目前可用的 Vulkan 影片濾鏡的描述。

若要啟用這些濾鏡的編譯,您需要使用 --enable-vulkan 以及 --enable-libglslang--enable-libshaderc 設定 FFmpeg。

執行 Vulkan 濾鏡需要您初始化硬體裝置,並將該裝置傳遞給任何濾鏡圖中的所有濾鏡。

-init_hw_device vulkan[=name][:device[,key=value...]]

初始化一個名為 namevulkan 類型的新硬體裝置,使用給定的裝置參數和 key=value 中的選項。支援以下選項

debug

如果設定為 1,則開啟驗證層。

linear_images

分配線性影像。不適用於解碼。

disable_multiplane

停用多平面影像。不適用於解碼。

-filter_hw_device name

將名為 name 的硬體裝置傳遞給任何濾波器圖形中的所有濾波器。

如需更詳細的資訊,請參閱 https://www.ffmpeg.org/ffmpeg.html#Advanced-Video-options

  • 選擇第一個裝置並在其上使用預設參數執行 nlmeans_vulkan 濾鏡的範例。
    -init_hw_device vulkan=vk:0 -filter_hw_device vk -i INPUT -vf "hwupload,nlmeans_vulkan,hwdownload" OUTPUT
    

由於 Vulkan 濾鏡無法存取一般記憶體中的幀資料,因此所有幀資料都需要上傳 (hwupload) 到連接到適當裝置的硬體表面,然後下載 (hwdownload) 回到一般記憶體。請注意,hwupload 將上傳到與軟體幀佈局相同的幀,因此可能有必要在之前立即新增 format 濾鏡,以使輸入進入正確的格式,而 hwdownload 不支援輸出上的所有格式 - 通常有必要在圖形中緊隨其後插入一個額外的 format 濾鏡,以使輸出進入支援的格式。

14.1 avgblur_vulkan

套用平均模糊濾鏡,在 GPU 上使用 Vulkan 實作。

濾鏡接受以下選項

sizeX

設定水平半徑大小。範圍為 [1, 32],預設值為 3

sizeY

設定垂直半徑大小。範圍為 [1, 32],預設值為 3

planes

設定要濾波的平面。預設值為 0xf,表示處理所有平面。

14.2 blend_vulkan

將兩個 Vulkan 幀混合到彼此之中。

blend

以下是接受選項的描述。

c0_mode
c1_mode
c2_mode
c3_mode
all_mode

blend

blend

normal
multiply

14.3 bwdif_vulkan

使用 bwdif 的解交錯器,「Bob Weaver 解交錯濾鏡」演算法,在 GPU 上使用 Vulkan 實作。

它接受以下參數

mode

mode

0, send_frame

mode

1, send_field

mode

mode

parity

parity

0, tff

parity

1, bff

parity

-1, auto

parity

parity

deint

deint

0, all

deint

1, interlaced

deint

deint

14.4 chromaber_vulkan

套用模擬色差的效果。最適合 RGB 輸入,但也為 YCbCr 輸入提供類似的效果。

dist_x

水平位移乘數。每個色度像素的位置將乘以這個量,從影像中心開始。預設值為 0

dist_y

同樣地,這會設定垂直位移乘數。預設值為 0

14.5 color_vulkan

影片來源,建立純色的 Vulkan 幀。適用於基準測試或疊加。

它接受以下參數

color

要使用的顏色。可以是名稱或十六進位值。預設值為 black

size

輸出幀的大小。預設值為 1920x1080

rate

輸出的幀率。預設值為每秒 60 幀。

duration

影片持續時間。預設值為 -0.000001

sar

影片訊號縱橫比。預設值為 1/1

format

輸出 Vulkan 幀的像素格式。預設值為 yuv444p

out_range

設定輸出 YCbCr 樣本範圍。

這允許覆寫自動偵測到的值,並允許強制輸出和編碼器使用特定值。如果未指定,範圍取決於像素格式。可能的值

auto/unknown

自動選擇。

jpeg/full/pc

設定全範圍(8 位元亮度時為 0-255)。

mpeg/limited/tv

設定 "MPEG" 範圍(8 位元亮度時為 16-235)。

14.6 vflip_vulkan

垂直翻轉影像。

14.7 hflip_vulkan

水平翻轉影像。

14.8 flip_vulkan

沿垂直和水平軸翻轉影像。

14.9 gblur_vulkan

在 Vulkan 幀上套用高斯模糊濾鏡。

濾鏡接受以下選項

sigma

設定水平 sigma,高斯模糊的標準差。預設值為 0.5

sigmaV

設定垂直 sigma,如果為負值,則與 sigma 相同。預設值為 -1

planes

planes

size

設定沿水平軸的核心大小。預設值為 19

sizeV

設定沿垂直軸的核心大小。預設值為 0,這會設定為使用與 size 相同的值。

14.10 nlmeans_vulkan

使用非局部均值演算法對幀進行降噪,在 GPU 上使用 Vulkan 實作。支援比 nlmeansnlmeans_opencl 更多的像素格式,包括 alpha 通道支援。

bm3d

s

設定所有元件的降噪強度。預設值為 1.0。必須在範圍 [1.0, 100.0] 內。

sn

設定所有平面的修補程式大小。預設值為 7。必須是範圍 [0, 99] 中的奇數。

r

設定研究大小。預設值為 15。必須是 [0, 99] 範圍內的奇數。

設定傳輸表達式。

設定平行處理。預設值為 36。必須是範圍 [1, 168] 中的數字。較大的值可能會加速處理,但會犧牲更多的 VRAM。較小的值會減慢速度,減少 VRAM 使用量。僅在具有原子浮點運算的 GPU 上支援 (RDNA3+、Ampere+)。

s0
s1
s2
s3

設定特定元件的降噪強度。預設值為 1,等於 s。必須是範圍 [1, 100] 中的奇數。

p0
p1
p2
p3

設定特定元件的修補程式大小。預設值為 7,等於 p。必須是範圍 [0, 99] 中的奇數。

14.11 overlay_vulkan

將一個視訊覆蓋在另一個視訊之上。

它接受兩個輸入,並有一個輸出。第一個輸入是「主」影片,第二個輸入疊加在其上。此濾鏡要求所有輸入使用相同的像素格式。因此,可能需要格式轉換。

濾鏡接受以下選項

x

設定覆蓋視訊在主要視訊上的 x 座標。預設值為 0

y

設定覆蓋視訊在主要視訊上的 y 座標。預設值為 0

14.12 transpose_vt

轉置輸入視訊中的行與列,並可選擇性地翻轉它。如需更深入的範例,請參閱 transpose 視訊濾波器,它主要共用相同的選項。

它接受以下參數

dir

指定轉置方向。

可以假設以下值

cclock_flip

逆時針旋轉 90 度並垂直翻轉。(預設)

clock

順時針旋轉 90 度。

cclock

逆時針旋轉 90 度。

clock_flip

順時針旋轉 90 度並垂直翻轉。

hflip

水平翻轉輸入視訊。

vflip

垂直翻轉輸入視訊。

passthrough

如果輸入幾何形狀符合指定值所指定的幾何形狀,則不套用轉置。它接受以下值

none

始終套用轉置。(預設)

portrait

保留直向幾何形狀(當 height >= width 時)。

landscape

保留橫向幾何形狀(當 width >= height 時)。

14.13 transpose_vulkan

轉置輸入視訊中的行與列,並可選擇性地翻轉它。如需更深入的範例,請參閱 transpose 視訊濾波器,它主要共用相同的選項。

它接受以下參數

dir

指定轉置方向。

可以假設以下值

cclock_flip

逆時針旋轉 90 度並垂直翻轉。(預設)

clock

順時針旋轉 90 度。

cclock

逆時針旋轉 90 度。

clock_flip

順時針旋轉 90 度並垂直翻轉。

passthrough

如果輸入幾何形狀符合指定值所指定的幾何形狀,則不套用轉置。它接受以下值

none

始終套用轉置。(預設)

portrait

保留直向幾何形狀(當 height >= width 時)。

landscape

保留橫向幾何形狀(當 width >= height 時)。

15 QSV 視訊濾鏡

以下是目前可用的 QSV 影片濾鏡的描述。

若要啟用這些濾鏡的編譯,您需要使用 --enable-libmfx--enable-libvpl 設定 FFmpeg。

若要使用 QSV 濾鏡,您需要正確設定 QSV 裝置。如需更多資訊,請閱讀 https://trac.ffmpeg.org/wiki/Hardware/QuickSync

15.1 hstack_qsv

水平堆疊輸入影片。

這是 hstack 濾鏡的 QSV 變體,每個輸入串流可能具有不同的高度,此濾鏡將縮小/放大每個輸入串流,同時保持原始縱橫比。

設定視窗長度,以樣本為單位。預設值為 2048。允許範圍為 32 到 65536。

inputs

請參閱 hstack

shortest

請參閱 hstack

高度

設定輸出高度。如果設定為 0,此濾鏡會將輸出高度設定為第一個輸入串流的高度。預設值為 0。

15.2 vstack_qsv

垂直堆疊輸入視訊。

這是 vstack 濾鏡的 QSV 變體,每個輸入串流可能具有不同的寬度,此濾鏡將縮小/放大每個輸入串流,同時保持原始縱橫比。

設定視窗長度,以樣本為單位。預設值為 2048。允許範圍為 32 到 65536。

inputs

請參閱 vstack

shortest

請參閱 vstack

設定心理聲學削波器的迭代次數。允許範圍為 1 到 20。預設值為 10。

設定輸出寬度。如果設定為 0,此濾鏡會將輸出寬度設定為第一個輸入串流的寬度。預設值為 0。

15.3 xstack_qsv

將視訊輸入堆疊到自訂版面配置中。

這是 xstack 濾鏡的 QSV 變體。

設定視窗長度,以樣本為單位。預設值為 2048。允許範圍為 32 到 65536。

inputs

請參閱 xstack

shortest

請參閱 xstack

layout

請參閱 xstack。此外,這允許使用者為每個輸入串流提供輸出大小。

xstack_qsv=inputs=4:layout=0_0_1920x1080|0_h0_1920x1080|w0_0_1920x1080|w0_h0_1920x1080
grid

請參閱 xstack

grid_tile_size

當設定 grid 時,為每個輸入串流設定輸出大小。如果未設定此選項,此濾鏡預設會將輸出大小設定為第一個輸入串流的大小。如需此選項的語法,請查看 (ffmpeg-utils)「影片大小」章節在 ffmpeg-utils 手冊中

fill

請參閱 xstack

16 視訊來源

以下是目前可用的影片來源的描述。

16.1 buffer

緩衝影片幀,並使其可用於濾鏡鏈。

此來源主要用於程式化用途,特別是透過 libavfilter/buffersrc.h 中定義的介面。

它接受以下參數

video_size

指定緩衝影片幀的大小(寬度和高度)。如需此選項的語法,請查看 (ffmpeg-utils)「影片大小」章節在 ffmpeg-utils 手冊中

設定心理聲學削波器的迭代次數。允許範圍為 1 到 20。預設值為 10。

輸入影片寬度。

高度

輸入影片高度。

pix_fmt

代表緩衝影片幀像素格式的字串。它可以是與像素格式對應的數字,或是像素格式名稱。

time_base

指定緩衝幀的時間戳記所假設的時基。

frame_rate

指定影片串流預期的幀率。

colorspace

代表緩衝影片幀色彩空間的字串。它可以是與色彩空間對應的數字,或是色彩空間名稱。

設定用於偵測濾鏡的偵測頻率(以 Hz 為單位),該偵測濾鏡用於觸發等化。預設值為 1000 Hz。允許範圍介於 2 和 1000000 Hz 之間。

代表緩衝影片幀色彩範圍的字串。它可以是與色彩範圍對應的數字,或是色彩範圍名稱。

pixel_aspect, sar

輸入影片的樣本(像素)縱橫比。

hw_frames_ctx

當使用硬體像素格式時,這應該是對描述輸入幀的 AVHWFramesContext 的參考。

例如

buffer=width=320:height=240:pix_fmt=yuv410p:time_base=1/24:sar=1

將指示來源接受大小為 320x240 且格式為 "yuv410p" 的影片幀,假設 1/24 作為時間戳記時基和正方形像素(1:1 樣本縱橫比)。由於名稱為 "yuv410p" 的像素格式對應於數字 6(檢查 libavutil/pixfmt.h 中的 enum AVPixelFormat 定義),此範例對應於

buffer=size=320x240:pixfmt=6:time_base=1/24:pixel_aspect=1/1

或者,這些選項可以指定為平面字串,但此語法已棄用

width:height:pix_fmt:time_base.num:time_base.den:pixel_aspect.num:pixel_aspect.den

16.2 cellauto

建立由基本細胞自動機產生的圖案。

細胞自動機的初始狀態可以透過 filenamepattern 選項定義。如果未指定此類選項,則會隨機建立初始狀態。

在每個新幀中,影片中的新列都會填滿細胞自動機下一個世代的結果。當整個幀填滿時的行為由 scroll 選項定義。

abuffer

檔案名稱,f

從指定檔案讀取初始細胞自動機狀態,即起始列。在檔案中,每個非空白字元都被視為一個活細胞,換行符號將終止該列,並且檔案中的後續字元將被忽略。

pattern, p

從指定的字串讀取初始細胞自動機狀態,即起始列。

字串中的每個非空白字元都被視為一個活細胞,換行符號將終止該列,並且字串中的後續字元將被忽略。

繪製框的寬度和高度。

設定影片速率,即每秒產生的幀數。預設值為 25。

random_fill_ratio, ratio

設定初始細胞自動機列的隨機填充率。它是介於 0 到 1 之間的浮點數值,預設為 1/PHI。

當指定檔案或圖案時,將忽略此選項。

random_seed, seed

設定隨機填充初始列的種子,必須是介於 0 和 UINT32_MAX 之間的整數。如果未指定,或明確設定為 -1,則濾鏡將盡力使用良好的隨機種子。

rule

設定細胞自動機規則,它是介於 0 到 255 之間的數字。預設值為 110。

size, s

設定輸出影片的大小。如需此選項的語法,請查看 (ffmpeg-utils)「影片大小」章節在 ffmpeg-utils 手冊中

如果指定 filenamepattern,則預設將大小設定為指定初始狀態列的寬度,而高度則設定為 width * PHI。

如果設定 size,則它必須包含指定圖案字串的寬度,並且指定的圖案將在較大的列中居中。

如果未指定檔案名或圖案字串,則大小值預設為 "320x518"(用於隨機產生的初始狀態)。

scroll

如果設定為 1,當輸出中的所有列都已填滿時,向上捲動輸出。如果設定為 0,則在填滿底列後,新產生的列將覆寫頂列。預設為 1。

start_full, full

如果設定為 1,在輸出第一個幀之前,完全用產生的列填滿輸出。這是預設行為,若要停用,請將值設定為 0。

stitch

如果設定為 1,將左側和右側列邊緣縫合在一起。這是預設行為,若要停用,請將值設定為 0。

16.2.1 範例

  • pattern 讀取初始狀態,並指定大小為 200x400 的輸出。
    cellauto=f=pattern:s=200x400
    
  • 產生寬度為 200 個細胞的隨機初始列,填充率為 2/3
    cellauto=ratio=2/3:s=200x200
    
  • 建立由規則 18 產生的圖案,從寬度為 100 的初始列中心的一個活細胞開始
    cellauto=p=@:s=100x400:full=0:rule=18
    
  • 指定更精細的初始圖案
    cellauto=p='@@ @ @@':s=100x400:full=0:rule=18
    

16.3 coreimagesrc

在 OSX 上使用 Apple 的 CoreImage API 在 GPU 上產生的影片來源。

此影片來源是 coreimage 影片濾鏡的特殊版本。在套用的濾鏡鏈的開頭使用核心影像產生器來產生內容。

coreimagesrc 影片來源接受以下選項

list_generators

列出所有可用的產生器以及它們的所有各自選項,以及可能的最小值和最大值以及預設值。

list_generators=true
size, s

指定來源影片的大小。如需此選項的語法,請查看 (ffmpeg-utils)「影片大小」章節在 ffmpeg-utils 手冊中。預設值為 320x240

繪製框的寬度和高度。

指定來源影片的幀率,以每秒產生的幀數表示。它必須是 frame_rate_num/frame_rate_den 格式的字串、整數、浮點數或有效的影片幀率縮寫。預設值為 "25"。

sar

設定來源影片的樣本縱橫比。

duration, d

設定來源影片的持續時間。請參閱 (ffmpeg-utils)ffmpeg-utils(1) 手冊中的「時間持續時間」章節,以了解接受的語法。

如果未指定,或表示的持續時間為負數,則影片應永久產生。

此外,接受 coreimage 影片濾鏡的所有選項。完整的濾鏡鏈可用於進一步處理產生的輸入,而無需 CPU-HOST 傳輸。請參閱 coreimage 文件和範例以取得詳細資訊。

16.3.1 範例

  • 使用 CIQRCodeGenerator 為 FFmpeg 首頁建立 QR 碼,以 Apple 標準 bash shell 的完整且逸出的命令列形式給出
    ffmpeg -f lavfi -i coreimagesrc=s=100x100:filter=CIQRCodeGenerator@inputMessage=https\\\\\://FFmpeg.org/@inputCorrectionLevel=H -frames:v 1 QRCode.png
    

    此範例等效於 coreimage 的 QRCode 範例,而無需 nullsrc 影片來源。

16.4 ddagrab

透過桌面重複 API 擷取 Windows 桌面。

濾鏡專門傳回 D3D11 硬體幀,用於 GPU 上編碼或處理。因此,任何類型的軟體處理都需要明確的 hwdownload

設定視窗長度,以樣本為單位。預設值為 2048。允許範圍為 32 到 65536。

output_idx

要擷取的 DXGI 輸出索引。

通常對應於 Windows 給螢幕的索引減一,因此從 0 開始。

預設為輸出 0。

draw_mouse

是否繪製滑鼠游標。

預設為 true。

僅影響硬體游標。如果遊戲或應用程式渲染自己的游標,它將始終被擷取。

framerate

將擷取桌面的最大幀率 - 連續幀之間的間隔不會小於幀率的倒數。當 dup_frames 為 true(預設值)且桌面未頻繁更新時,濾鏡將重複前一個幀。請注意,沒有背景緩衝正在進行,因此當濾鏡未被頻繁輪詢時,實際幀間間隔可能會顯著更大。

預設為 30 FPS。

video_size

指定擷取影片的大小。

預設為螢幕的完整大小。

如果小於螢幕大小,則從底部/右側裁剪。

offset_x

擷取影片的水平偏移。

offset_y

擷取影片的垂直偏移。

output_fmt

所需的濾鏡輸出格式。預設為 8 位元 BGRA。

設定叢發融合,以視窗大小的百分比表示。允許範圍為 010。預設值為 2。如果偵測為雜訊的任何兩個樣本之間的間隔小於此值,則這兩個樣本之間的任何樣本也將被偵測為雜訊。

auto

將所有支援的輸出格式傳遞給 DDA,並傳回 DDA 決定使用的格式。

8bit
bgra

8 位元格式始終有效,DDA 將在必要時轉換為這些格式。

10bit
x2bgr10

如果請求 10 位元格式但不可用,濾鏡初始化將失敗。

dup_frames

當此選項設定為 true(預設值)時,當桌面未更新時,濾鏡將重複幀,以保持近似恆定的目標幀率。當此選項設定為 false 時,濾鏡將等待桌面更新(在這種情況下,幀間間隔可能會顯著變化)。

16.4.1 範例

擷取主要螢幕並使用 nvenc 編碼

ffmpeg -f lavfi -i ddagrab -c:v h264_nvenc -cq 18 output.mp4

您也可以跳過 lavfi 裝置並直接使用濾鏡。也示範了下載幀並使用 libx264 編碼。在這種情況下,需要明確的輸出格式規格

ffmpeg -filter_complex ddagrab=output_idx=1:framerate=60,hwdownload,format=bgra -c:v libx264 -crf 18 output.mp4

如果您只想擷取桌面的子部分,可以透過指定較小的大小及其在螢幕中的偏移量來實現

ddagrab=video_size=800x600:offset_x=100:offset_y=100

16.5 gradients

產生多個漸層。

size, s

設定幀大小。如需此選項的語法,請查看 (ffmpeg-utils)「影片大小」章節在 ffmpeg-utils 手冊中。預設值為 "640x480"。

繪製框的寬度和高度。

設定幀率,以每秒幀數表示。預設值為 "25"。

c0, c1, c2, c3, c4, c5, c6, c7

設定 8 種顏色。顏色的預設值是隨機選擇一個。

x0, y0, y0, y1

設定漸層線來源和目標點。如果為負數或超出範圍,則隨機選擇。

nb_colors, n

設定一次要使用的顏色數量。允許範圍為 2 到 8。預設值為 2。

設定臨界值。允許範圍為從 1100。預設值為 10。值越高,削波偵測的侵略性就越低。

設定用於選擇漸層線點的種子。

duration, d

設定來源影片的持續時間。請參閱 (ffmpeg-utils)ffmpeg-utils(1) 手冊中的「時間持續時間」章節,以了解接受的語法。

如果未指定,或表示的持續時間為負數,則影片應永久產生。

設定輸入增益。預設值為 0.4。

設定漸層旋轉速度。

type, t

設定漸層類型。可用值為

linear
radial
circular
spiral
square

預設類型為 linear

16.5.1 指令

此來源支援上述某些選項作為 指令

16.6 mandelbrot

產生 Mandelbrot 集碎形,並逐步朝向以 start_xstart_y 指定的點縮放。

abuffer

設定濾波器階數。可用值為 3 到 20。預設值為 10。

設定終端 pts 值。預設值為 400。

end_scale

設定終端縮放值。必須是浮點值。預設值為 0.3。

inner

設定內部著色模式,即用於繪製 Mandelbrot 碎形內部區域的演算法。

它應採用以下值之一

black

設定黑色模式。

convergence

顯示直到收斂的時間。

mincol

根據最接近迭代原點的點設定顏色。

period

設定週期模式。

預設值為 mincol

bailout

設定 bailout 值。預設值為 10.0。

maxiter

設定渲染演算法執行的最大迭代次數。預設值為 7189。

outer

設定外部著色模式。它應採用以下值之一

iteration_count

設定迭代計數模式。

normalized_iteration_count

設定標準化迭代計數模式。

預設值為 normalized_iteration_count

繪製框的寬度和高度。

設定幀率,以每秒幀數表示。預設值為 "25"。

size, s

設定幀大小。如需此選項的語法,請查看 (ffmpeg-utils)「影片大小」章節在 ffmpeg-utils 手冊中。預設值為 "640x480"。

start_scale

設定初始縮放值。預設值為 3.0。

start_x

設定初始 x 位置。必須是介於 -100 和 100 之間的浮點值。預設值為 -0.743643887037158704752191506114774。

start_y

設定初始 y 位置。必須是介於 -100 和 100 之間的浮點值。預設值為 -0.131825904205311970493132056385139。

16.7 mptestsrc

產生各種測試圖案,如 MPlayer 測試濾鏡所產生。

產生的影片大小是固定的,為 256x256。此來源特別適用於測試編碼功能。

abuffer

繪製框的寬度和高度。

指定來源影片的幀率,以每秒產生的幀數表示。它必須是 frame_rate_num/frame_rate_den 格式的字串、整數、浮點數或有效的影片幀率縮寫。預設值為 "25"。

duration, d

設定來源影片的持續時間。請參閱 (ffmpeg-utils)ffmpeg-utils(1) 手冊中的「時間持續時間」章節,以了解接受的語法。

如果未指定,或表示的持續時間為負數,則影片應永久產生。

test, t

設定要執行的測試編號或名稱。支援的測試為

dc_luma
dc_chroma
freq_luma
freq_chroma
amp_luma
amp_chroma
cbp
mv
ring1
ring2
設定用於設定跨聲道樣本延遲的隨機種子。
max_frames, m

設定每個測試產生的最大幀數,預設值為 30。

預設值為 "all",這將循環瀏覽所有測試的列表。

一些範例

mptestsrc=t=dc_luma

將產生 "dc_luma" 測試圖案。

16.8 frei0r_src

提供 frei0r 來源。

若要啟用此濾鏡的編譯,您需要安裝 frei0r 標頭並使用 --enable-frei0r 設定 FFmpeg。

此來源接受以下參數

size

要產生影片的大小。如需此選項的語法,請查看 (ffmpeg-utils)「影片大小」章節在 ffmpeg-utils 手冊中

framerate

產生影片的幀率。它可以是 num/den 形式的字串或幀率縮寫。

filter_name

要載入的 frei0r 來源名稱。如需有關 frei0r 以及如何設定參數的更多資訊,請閱讀影片濾鏡文件中的 frei0r 章節。

filter_params

要傳遞給 frei0r 來源的以 '|' 分隔的參數列表。

例如,產生大小為 200x200 且幀率為 10 的 frei0r partik0l 來源,並將其疊加在疊加濾鏡的主要輸入上

frei0r_src=size=200x200:framerate=10:filter_name=partik0l:filter_params=1234 [overlay]; [in][overlay] overlay

16.9 life

產生生命模式。

此來源基於 John Conway 生命遊戲的概括。

來源輸入代表生命網格,每個像素代表一個細胞,它可以處於兩種可能的狀態之一:活著或死亡。每個細胞都與其八個鄰居互動,這些鄰居是在水平、垂直或對角線上相鄰的細胞。

在每次互動時,網格都會根據採用的規則演變,該規則指定鄰居活細胞的數量,這些細胞將使細胞保持存活或誕生。rule 選項允許指定要採用的規則。

abuffer

檔案名稱,f

設定從中讀取初始網格狀態的檔案。在檔案中,每個非空白字元都被視為一個活細胞,換行符號用於分隔每列的末尾。

如果未指定此選項,則會隨機產生初始網格。

繪製框的寬度和高度。

設定影片速率,即每秒產生的幀數。預設值為 25。

random_fill_ratio, ratio

設定初始隨機網格的隨機填充率。它是介於 0 到 1 之間的浮點數值,預設為 1/PHI。當指定檔案時,將忽略此選項。

random_seed, seed

設定用於填充初始隨機網格的種子,必須是介於 0 和 UINT32_MAX 之間的整數。如果未指定,或明確設定為 -1,則濾鏡將盡力使用良好的隨機種子。

rule

設定生命規則。

規則可以使用 "SNS/BNB" 類型的代碼指定,其中 NSNB 是範圍 0-8 中的數字序列,NS 指定鄰居活細胞的數量,這些細胞使活細胞保持存活,而 NB 指定鄰居活細胞的數量,這些細胞使死細胞變成活細胞(即「誕生」)。"s" 和 "b" 可以分別代替 "S" 和 "B" 使用。

或者,規則可以由 18 位元整數指定。9 個高位元用於編碼下一個細胞狀態(如果對於每個鄰居活細胞數量都是活細胞),低位元指定「誕生」新細胞的規則。高位元編碼用於更高數量的鄰居細胞。例如,數字 6153 = (12<<9)+9 指定存活規則為 12,誕生規則為 9,這對應於 "S23/B03"。

預設值為 "S23/B3",這是原始 Conway 生命遊戲規則,如果細胞有 2 或 3 個鄰居活細胞,則使其保持存活,如果有三個活細胞圍繞死細胞,則誕生一個新細胞。

size, s

設定輸出影片的大小。如需此選項的語法,請查看 (ffmpeg-utils)「影片大小」章節在 ffmpeg-utils 手冊中

如果指定 filename,則預設將大小設定為與輸入檔案相同的大小。如果設定 size,則它必須包含輸入檔案中指定的大小,並且該檔案中定義的初始網格在較大的結果區域中居中。

如果未指定檔案名,則大小值預設為 "320x240"(用於隨機產生的初始網格)。

stitch

如果設定為 1,則將左側和右側網格邊緣縫合在一起,頂部和底部邊緣也是如此。預設為 1。

mold

設定細胞發霉速度。如果設定,死細胞將以 mold 的步進從 death_color 變為 mold_colormold 的值可以從 0 到 255。

life_color

設定活著(或新誕生)細胞的顏色。

death_color

設定死細胞的顏色。如果設定了 mold,這是用於表示死細胞的第一種顏色。

mold_color

設定發霉顏色,用於完全死亡和發霉的細胞。

如需這 3 種顏色選項的語法,請查看 (ffmpeg-utils)ffmpeg-utils 手冊中的「顏色」章節

16.9.1 範例

  • pattern 讀取網格,並將其在大小為 300x300 像素的網格上居中
    life=f=pattern:s=300x300
    
  • 產生大小為 200x200 的隨機網格,填充率為 2/3
    life=ratio=2/3:s=200x200
    
  • 指定用於演變隨機產生網格的自訂規則
    life=rule=S14/B34
    
  • 使用 ffplay 搭配慢速死亡效果(發霉)的完整範例
    ffplay -f lavfi life=s=300x200:mold=10:r=60:ratio=0.1:death_color=#C83232:life_color=#00ff00,scale=1200:800:flags=16
    

16.10 perlin

產生 Perlin 雜訊。

Perlin 雜訊是一種在空間中具有局部連續性的雜訊。這可用於產生在空間和時間上具有連續性的圖案,例如模擬煙霧、流體或地形。

如果透過 octaves 選項指定了多個八度音階,則 Perlin 雜訊會產生為元件的總和,每個元件的頻率都加倍。在這種情況下,persistence 選項指定相對於先前元件的振幅比率。更多的八度音階元件能夠在產生的雜訊中指定更多的高頻細節(例如,由於產生地形中的巨石造成的小尺寸變化)。

16.10.1 選項

size, s

指定緩衝影片幀的大小(寬度和高度)。如需此選項的語法,請查看 (ffmpeg-utils)ffmpeg-utils 手冊中的「影片大小」章節。預設值為 320x240

繪製框的寬度和高度。

指定影片串流預期的幀率,以每秒幀數表示。預設值為 25

octaves

指定構成雜訊的元件總數,每個元件的頻率都加倍。預設值為 1

persistence

設定用於計算下一個八度音階元件振幅相對於先前元件振幅的比率。預設值為 1

xscale
yscale

定義用於倍增 x、y 座標的縮放比例因子。這對於定義沿 x 軸或 y 軸拉伸的圖案效果很有用。預設值為 1

tscale

定義用於倍增時間座標的縮放比例因子。這對於變更時間變化速度很有用。預設值為 1

random_mode

設定用於計算初始圖案的隨機模式。

支援的值為

random

計算並使用隨機種子。

ken

使用 Ken Perlin 在原始文章中定義的預定義初始圖案,可用於將輸出與其他來源進行比較。

設定臨界值。允許範圍為從 1100。預設值為 10。值越高,削波偵測的侵略性就越低。

使用 random_seed 選項指定的值。

預設值為 random

random_seed, seed

random_mode 設定為 random_seed 時,使用此值計算初始圖案。預設值為 0

16.10.2 範例

  • 產生單一元件
    perlin
    
  • 使用具有 7 個元件的 Perlin 雜訊,每個元件對總振幅的貢獻減半
    perlin=octaves=7:persistence=0.5
    
  • 將 Perlin 雜訊與 lutyuv 鏈接以產生黑白效果
    perlin=octaves=3:tscale=0.3,lutyuv=y='if(lt(val\,128)\,255\,0)'
    
  • 沿 y 軸拉伸雜訊,並將灰階轉換為僅紅色的訊號
    perlin=octaves=7:tscale=0.4:yscale=0.3,lutrgb=r=val:b=0:g=0
    

16.11 qrencodesrc

使用 libqrencode 程式庫產生 QR 碼(請參閱 https://fukuchi.org/works/qrencode/)。

若要啟用此來源的編譯,您需要使用 --enable-libqrencode 設定 FFmpeg。

QR 碼是從提供的文字或文字圖案產生。相應的 QR 碼會根據指定的輸出大小選項進行縮放並放置在影片輸出中。

如果未指定文字,則不會產生 QR 碼,而是傳回空白的彩色輸出。

abuffer

qrcode_width, q
padded_qrcode_width, Q

指定已渲染 QR 代碼寬度的表達式,包括帶填充和不帶填充。 qrcode_width 表達式可以參考 padded_qrcode_width 表達式設定的值,反之亦然。預設情況下,padded_qrcode_width 設定為 qrcode_width,表示沒有填充。

這些表達式僅在初始化來源時評估一次。請參閱 qrencode 表達式 章節以取得詳細資訊。

請注意,來源缺少某些常數(例如 xt 或 ¸n),因為它們僅在為每個幀而不是在初始化時評估表達式時才有意義。

繪製框的寬度和高度。

指定來源影片的幀率,以每秒產生的幀數表示。它必須是 frame_rate_num/frame_rate_den 格式的字串、整數、浮點數或有效的影片幀率縮寫。預設值為 "25"。

case_sensitive, cs

指示 libqrencode 使用區分大小寫的編碼。預設情況下啟用此功能。可以停用此功能以減少 QR 編碼大小。

level, l

指定 QR 編碼錯誤校正層級。使用較高的校正層級,編碼大小將增加,但代碼將更強大,更能抵抗損壞。較低層級為 L

設定叢發融合,以視窗大小的百分比表示。允許範圍為 010。預設值為 2。如果偵測為雜訊的任何兩個樣本之間的間隔小於此值,則這兩個樣本之間的任何樣本也將被偵測為雜訊。

L
M
Q
H
picture

選擇輸入文字的展開方式。可以是 nonenormal(預設)。請參閱 qrencode 文字展開 章節以取得詳細資訊。

text
textfile

定義要渲染的文字。如果未指定兩者,則不會編碼 QR(僅為空彩色影格)。

如果啟用展開,則文字會被視為文字範本,使用 qrencode 展開機制。請參閱 qrencode 文字展開 章節以取得詳細資訊。

background_color, bc
foreground_color, fc

設定 QR 代碼和背景色彩。foreground_color 的預設值為 "black",background_color 的預設值為 "white"。

有關色彩選項的語法,請查看 ffmpeg-utils 手冊中的 "(ffmpeg-utils)「Color」章節"

16.11.1 範例

  • 產生編碼指定文字的 QR 碼,使用預設大小
    qrencodesrc=text=www.ffmpeg.org
    
  • 與下述相同,但選取藍色和粉紅色
    qrencodesrc=text=www.ffmpeg.org:bc=pink:fc=blue
    
  • 產生寬度為 200 像素且具有填充的 QR 代碼,使填充寬度為 QR 代碼寬度的 4/3
    qrencodesrc=text=www.ffmpeg.org:q=200:Q=4/3*q
    
  • 產生填充寬度為 200 像素且具有填充的 QR 代碼,使 QR 代碼寬度為填充寬度的 3/4
    qrencodesrc=text=www.ffmpeg.org:Q=200:q=3/4*Q
    
  • 產生編碼影格編號的 QR 代碼
    qrencodesrc=text=%{n}
    
  • 產生編碼 GMT 時間戳記的 QR 代碼
    qrencodesrc=text=%{gmtime}
    
  • 產生編碼為浮點數的時間戳記的 QR 代碼
    qrencodesrc=text=%{pts}
    

16.12 allrgb, allyuv, color, colorchart, colorspectrum, haldclutsrc, nullsrc, pal75bars, pal100bars, rgbtestsrc, smptebars, smptehdbars, testsrc, testsrc2, yuvtestsrc

allrgb 來源傳回大小為 4096x4096 的所有 rgb 顏色的幀。

allyuv 來源傳回大小為 4096x4096 的所有 yuv 顏色的幀。

color 來源提供均勻著色的輸入。

colorchart 來源提供顏色檢查圖表。

colorspectrum 來源提供光譜輸入。

haldclutsrc 來源提供身分 Hald CLUT。另請參閱 haldclut 濾鏡。

nullsrc 來源傳回未處理的影片幀。它主要用於分析/偵錯工具,或作為忽略輸入資料的濾鏡的來源。

pal75bars 來源產生色條圖案,基於 EBU PAL 建議,色彩等級為 75%。

pal100bars 來源產生色條圖案,基於 EBU PAL 建議,色彩等級為 100%。

rgbtestsrc 來源產生 RGB 測試圖案,適用於偵測 RGB 與 BGR 問題。您應該從上到下看到紅色、綠色和藍色條紋。

smptebars 來源產生色條圖案,基於 SMPTE 工程指南 EG 1-1990。

smptehdbars 來源產生色條圖案,基於 SMPTE RP 219-2002。

testsrc 來源產生測試影片圖案,顯示顏色圖案、捲動漸層和時間戳記。這主要用於測試目的。

testsrc2 來源與 testsrc 類似,但支援更多像素格式,而不僅僅是 rgb24。這允許將其用作其他測試的輸入,而無需格式轉換。

yuvtestsrc 來源產生 YUV 測試圖案。您應該從上到下看到 y、cb 和 cr 條紋。

這些來源接受以下參數

level

指定 Hald CLUT 的等級,僅在 haldclutsrc 來源中可用。等級 N 產生 N*N*NN*N*N 像素的圖片,用作 3D 查找表的識別矩陣。每個元件都以 1/(N*N) 比例編碼。

向 hd720 視訊大小的 rgb 輸入新增波紋效果

指定來源的顏色,僅在 color 來源中可用。如需此選項的語法,請查看 (ffmpeg-utils)ffmpeg-utils 手冊中的「顏色」章節

size, s

指定來源影片的大小。如需此選項的語法,請查看 (ffmpeg-utils)「影片大小」章節在 ffmpeg-utils 手冊中。預設值為 320x240

此選項不適用於 allrgballyuvhaldclutsrc 濾鏡。

繪製框的寬度和高度。

指定來源影片的幀率,以每秒產生的幀數表示。它必須是 frame_rate_num/frame_rate_den 格式的字串、整數、浮點數或有效的影片幀率縮寫。預設值為 "25"。

duration, d

設定來源影片的持續時間。請參閱 (ffmpeg-utils)ffmpeg-utils(1) 手冊中的「時間持續時間」章節,以了解接受的語法。

如果未指定,或表示的持續時間為負數,則影片應永久產生。

由於幀率用作時基,因此包括最後一個幀在內的所有幀都將具有其完整持續時間。如果指定的持續時間不是幀持續時間的倍數,則會向上捨入。

sar

設定來源影片的樣本縱橫比。

range, r

指定背景的 alpha(不透明度),僅在 testsrc2 來源中可用。該值必須介於 0(完全透明)和 255(完全不透明,預設值)之間。

decimals, n

設定時間戳記中要顯示的小數位數,僅在 testsrc 來源中可用。

顯示的時間戳記值將對應於原始時間戳記值乘以指定值的 10 次方。預設值為 0。

將第二個聲道延遲 500 個樣本,將第三個聲道延遲 700 個樣本,並保持第一個聲道(和可能存在的任何其他聲道)不變。

設定光譜的類型,僅在 colorspectrum 來源中可用。可以是以下之一

black
white
all
patch_size

設定單個色塊的修補程式大小,僅在 colorchart 來源中可用。預設值為 64x64

preset

設定 colorchecker 顏色預設,僅在 colorchart 來源中可用。

提升高於偵測臨界值的頻率。

reference
skintones

預設值為 reference

16.12.1 範例

  • 產生持續時間為 5.3 秒、大小為 176x144 且幀率為每秒 10 幀的影片
    testsrc=duration=5.3:size=qcif:rate=10
    
  • 以下圖形描述將產生紅色來源,不透明度為 0.2,大小為 "qcif",幀率為每秒 10 幀
    color=c=red@0.2:s=qcif:r=10
    
  • 如果要忽略輸入內容,可以使用 nullsrc。以下命令透過使用 geq 濾鏡在亮度平面中產生雜訊
    nullsrc=s=256x256, geq=random(1)*255:128:128
    

16.12.2 指令

color 來源支援以下指令

c, color

設定建立影像的顏色。接受與對應的 color 選項相同的語法。

16.13 openclsrc

使用 OpenCL 程式產生影片。

source

OpenCL 程式原始碼檔案。

kernel

程式中的核心名稱。

size, s

要產生的幀大小。必須設定此項。

format

用於產生幀的像素格式。必須設定此項。

繪製框的寬度和高度。

每秒產生的幀數。預設值為 '25'。

如需程式載入工作原理的詳細資訊,請參閱 program_opencl 濾鏡。

範例程式

  • 透過從像素在輸出影像中的位置設定像素值來產生色階漸變。(請注意,這適用於所有像素格式,但產生的輸出將不相同。)
    __kernel void ramp(__write_only image2d_t dst,
                       unsigned int index)
    {
        int2 loc = (int2)(get_global_id(0), get_global_id(1));
    
        float4 val;
        val.xy = val.zw = convert_float2(loc) / convert_float2(get_image_dim(dst));
    
        write_imagef(dst, loc, val);
    }
    
  • 產生 Sierpinski 地毯圖案,每幀平移一個像素。
    __kernel void sierpinski_carpet(__write_only image2d_t dst,
                                    unsigned int index)
    {
        int2 loc = (int2)(get_global_id(0), get_global_id(1));
    
        float4 value = 0.0f;
        int x = loc.x + index;
        int y = loc.y + index;
        while (x > 0 || y > 0) {
            if (x % 3 == 1 && y % 3 == 1) {
                value = 1.0f;
                break;
            }
            x /= 3;
            y /= 3;
        }
    
        write_imagef(dst, loc, value);
    }
    

16.14 sierpinski

產生 Sierpinski 地毯/三角形碎形,並隨機平移。

abuffer

size, s

設定幀大小。如需此選項的語法,請查看 (ffmpeg-utils)「影片大小」章節在 ffmpeg-utils 手冊中。預設值為 "640x480"。

繪製框的寬度和高度。

設定幀率,以每秒幀數表示。預設值為 "25"。

設定臨界值。允許範圍為從 1100。預設值為 10。值越高,削波偵測的侵略性就越低。

設定用於隨機平移的種子。

jump

設定單個平移目標的最大跳躍。允許範圍為 1 到 10000。

將第二個聲道延遲 500 個樣本,將第三個聲道延遲 700 個樣本,並保持第一個聲道(和可能存在的任何其他聲道)不變。

設定碎形類型,可以是預設的 carpettriangle

16.15 zoneplate

產生 zoneplate 測試影片圖案。

abuffer

size, s

設定幀大小。如需此選項的語法,請查看 (ffmpeg-utils)ffmpeg-utils 手冊中的「影片大小」章節。預設值為 "320x240"。

繪製框的寬度和高度。

設定幀率,以每秒幀數表示。預設值為 "25"。

duration, d

設定來源影片的持續時間。請參閱 (ffmpeg-utils)ffmpeg-utils(1) 手冊中的「時間持續時間」章節,以了解接受的語法。

如果未指定,或表示的持續時間為負數,則影片應永久產生。

sar

設定來源影片的樣本縱橫比。

precision

設定正弦計算查找表的位元精確度。預設值為 10。允許範圍為 4 到 16。

xo

設定輸出訊號的水平軸偏移。預設值為 0。

yo

設定輸出訊號的垂直軸偏移。預設值為 0。

to

設定輸出訊號的時間軸偏移。預設值為 0。

k0

設定 0 階常數,新增至訊號相位。預設值為 0。

kx

設定 1 階常數,水平軸的相位因子乘數。預設值為 0。

ky

設定 1 階常數,垂直軸的相位因子乘數。預設值為 0。

kt

設定 1 階常數,時間軸的相位因子乘數。預設值為 0。

kxt, kyt, kxy

設定空間軸和時間軸組合的相位因子乘數。預設值為 0。

kx2

設定 2 階常數,水平軸的相位因子乘數。預設值為 0。

ky2

設定 2 階常數,垂直軸的相位因子乘數。預設值為 0。

kt2

設定 2 階常數,時間軸的相位因子乘數。預設值為 0。

ku

設定新增至最終相位以產生訊號的色度藍色元件的常數。預設值為 0。

kv

設定新增至最終相位以產生訊號的色度紅色元件的常數。預設值為 0。

16.15.1 指令

此來源支援上述某些選項作為 指令

16.15.2 範例

  • 產生水平顏色正弦波掃描
    zoneplate=ku=512:kv=0:kt2=0:kx2=256:s=wvga:xo=-426:kt=11
    
  • 產生垂直顏色正弦波掃描
    zoneplate=ku=512:kv=0:kt2=0:ky2=156:s=wvga:yo=-240:kt=11
    
  • 產生環形 zone-plate
    zoneplate=ku=512:kv=100:kt2=0:ky2=256:kx2=556:s=wvga:yo=0:kt=11
    

17 視訊接收器

以下是目前可用的影片接收器的描述。

17.1 buffersink

緩衝影片幀,並使其可用於濾鏡圖的末尾。

此接收器主要用於程式化用途,特別是透過 libavfilter/buffersink.h 中定義的介面或選項系統。

它接受 AVBufferSinkContext 結構的指標,該結構定義了要作為不透明參數傳遞給 avfilter_init_filter 以進行初始化的傳入緩衝區格式。

17.2 nullsink

Null 影片接收器:絕對不對輸入影片執行任何操作。它主要用作範本,並用於分析/偵錯工具。

18 多媒體濾鏡

以下是目前可用的多媒體濾鏡的描述。

18.1 a3dscope

將輸入音訊轉換為 3D 示波器影片輸出。

濾鏡接受以下選項

繪製框的寬度和高度。

設定幀率,以每秒幀數表示。預設值為 "25"。

size, s

指定輸出的影片大小。如需此選項的語法,請查看 (ffmpeg-utils)ffmpeg-utils 手冊中的「影片大小」章節。預設值為 hd720

fov

設定相機視野。預設值為 90 度。允許範圍為 40 到 150。

roll

設定相機滾轉。

pitch

設定相機俯仰。

yaw

設定相機偏航。

xzoom

設定相機在 X 軸上的縮放。

yzoom

設定相機在 Y 軸上的縮放。

zzoom

設定相機在 Z 軸上的縮放。

xpos

設定相機在 X 軸上的位置。

ypos

設定相機在 Y 軸上的位置。

zpos

設定相機在 Z 軸上的位置。

length

設定顯示的音訊波的長度(以幀數為單位)。

18.1.1 指令

濾鏡支援上述某些選項作為 指令

18.2 abitscope

將輸入音訊轉換為影片輸出,顯示音訊位元示波器。

濾鏡接受以下選項

繪製框的寬度和高度。

設定幀率,以每秒幀數表示。預設值為 "25"。

size, s

指定輸出的影片大小。如需此選項的語法,請查看 (ffmpeg-utils)ffmpeg-utils 手冊中的「影片大小」章節。預設值為 1024x256

mgain

指定以空格或 '|' 分隔的顏色列表,這些顏色將用於繪製通道。無法識別或遺失的顏色將被白色取代。

設定空間亮度閾值。較低的值會增加交叉亮度的減少。

設定輸出模式。可以是 barstrace。預設值為 bars

18.3 adrawgraph

使用輸入音訊中繼資料繪製圖形。

請參閱 drawgraph

18.4 agraphmonitor

請參閱 graphmonitor

18.5 ahistogram

將輸入音訊轉換為影片輸出,顯示音量直方圖。

濾鏡接受以下選項

dmode

指定如何計算直方圖。

設定叢發融合,以視窗大小的百分比表示。允許範圍為 010。預設值為 2。如果偵測為雜訊的任何兩個樣本之間的間隔小於此值,則這兩個樣本之間的任何樣本也將被偵測為雜訊。

single

為所有通道使用單一直方圖。

separate

為每個通道使用單獨的直方圖。

預設值為 single

繪製框的寬度和高度。

設定幀率,以每秒幀數表示。預設值為 "25"。

size, s

指定輸出的影片大小。如需此選項的語法,請查看 (ffmpeg-utils)ffmpeg-utils 手冊中的「影片大小」章節。預設值為 hd720

scale

設定顯示比例。

設定叢發融合,以視窗大小的百分比表示。允許範圍為 010。預設值為 2。如果偵測為雜訊的任何兩個樣本之間的間隔小於此值,則這兩個樣本之間的任何樣本也將被偵測為雜訊。

log

對數

sqrt

平方根

cbrt

立方根

lin

linear

rlog

反向對數

預設值為 log

ascale

設定振幅比例。

設定叢發融合,以視窗大小的百分比表示。允許範圍為 010。預設值為 2。如果偵測為雜訊的任何兩個樣本之間的間隔小於此值,則這兩個樣本之間的任何樣本也將被偵測為雜訊。

log

對數

lin

linear

預設值為 log

acount

設定在直方圖中累積多少幀。預設值為 1。將此值設定為 -1 會累積所有幀。

rheight

設定視窗高度的直方圖比例。

replace

設定聲譜圖滑動。

設定叢發融合,以視窗大小的百分比表示。允許範圍為 010。預設值為 2。如果偵測為雜訊的任何兩個樣本之間的間隔小於此值,則這兩個樣本之間的任何樣本也將被偵測為雜訊。

輸入顯示縱橫比,它與 (w / h) * sar 相同。

用新列取代舊列。

in_w, iw

從上到下捲動。

預設值為 replace

hmode

設定直方圖模式。

設定叢發融合,以視窗大小的百分比表示。允許範圍為 010。預設值為 2。如果偵測為雜訊的任何兩個樣本之間的間隔小於此值,則這兩個樣本之間的任何樣本也將被偵測為雜訊。

abs

使用樣本的絕對值。

sign

使用未觸及的樣本值。

預設值為 abs

18.6 aphasemeter

測量輸入音訊的相位,導出為中繼資料 lavfi.aphasemeter.phase,表示目前音訊幀的平均相位。也可以產生影片輸出,預設為啟用。音訊作為第一個輸出傳遞。

如果音訊具有不同的通道佈局,則會重新矩陣化為立體聲。相位值在範圍 [-1, 1] 內,其中 -1 表示左右通道完全異相,而 1 表示通道同相。

濾鏡接受以下選項,所有選項都與其影片輸出相關

繪製框的寬度和高度。

box_source

size, s

指定輸出的影片大小。如需此選項的語法,請查看 (ffmpeg-utils)ffmpeg-utils 手冊中的「影片大小」章節。預設值為 800x400

rc
gc
bc

指定紅色、綠色、藍色對比度。預設值分別為 271。允許範圍為 [0, 255]

mpc

設定將用於繪製中值相位的顏色。如果顏色為 none(預設值),則不會繪製中值相位值。

video

啟用影片輸出。預設為啟用。

18.6.1 相位偵測

濾鏡還會偵測立體聲串流中的異相和單聲道序列。當序列持續時間長於或等於設定的最小值時,它會記錄序列的開始、結束和持續時間。

濾鏡接受以下選項以進行此偵測

phasing

啟用單聲道和異相偵測。預設為停用。

tolerance, t

設定單聲道偵測的相位容差,以振幅比率表示。預設值為 0。允許範圍為 [0, 1]

角度,a

設定異相偵測的角度閾值,以度為單位。預設值為 170。允許範圍為 [90, 180]

duration, d

設定單聲道或異相持續時間,直到通知,以秒為單位表示。預設值為 2

18.6.2 範例

  • 使用 ffmpeg 偵測 1 秒單聲道且相位容差為 0.001 的完整範例
    ffmpeg -i stereo.wav -af aphasemeter=video=0:phasing=1:duration=1:tolerance=0.001 -f null -
    

18.7 avectorscope

將輸入音訊轉換為影片輸出,表示音訊向量示波器。

濾鏡用於測量立體聲音訊串流通道之間的差異。由相同的左右訊號組成的單聲道訊號會產生一條垂直直線。任何立體聲分離都可見為偏離此線,從而產生 Lissajous 圖形。如果出現筆直(或偏離它)但水平的線,則表示左右通道異相。

濾鏡接受以下選項

設定空間亮度閾值。較低的值會增加交叉亮度的減少。

設定向量示波器模式。

提升高於偵測臨界值的頻率。

lissajous

Lissajous 旋轉 45 度。

lissajous_xy

與上述相同,但不旋轉。

polar

形狀類似半圓。

預設值為 ‘lissajous’。

size, s

指定輸出的影片大小。如需此選項的語法,請查看 (ffmpeg-utils)ffmpeg-utils 手冊中的「影片大小」章節。預設值為 400x400

繪製框的寬度和高度。

box_source

rc
gc
bc
此濾鏡應放置在任何可能產生次常態數的濾鏡之前。

指定紅色、綠色、藍色和 alpha 對比度。預設值分別為 4016080255。允許範圍為 [0, 255]

rf
gf
bf
af

指定紅色、綠色、藍色和 alpha 淡化。預設值分別為 151055。允許範圍為 [0, 255]

zoom

設定縮放因子。預設值為 1。允許範圍為 [0, 10]。低於 1 的值將自動調整縮放因子為最大可能值。

draw

設定向量示波器繪圖模式。

提升高於偵測臨界值的頻率。

thickness, t

為每個樣本繪製點。

設定框邊緣厚度的表達式。值 fill 將建立一個填充框。預設值為 3

在先前樣本和目前樣本之間繪製線條。

aaline

在先前樣本和目前樣本之間繪製反鋸齒線條。

預設值為 ‘dot’。

scale

指定音訊樣本的振幅比例。

提升高於偵測臨界值的頻率。

lin

線性。

sqrt

平方根。

cbrt

立方根。

log

對數。

swap

將左通道軸與右通道軸交換。

mirror

鏡像軸。

none

無鏡像。

x

僅鏡像 x 軸。

y

僅鏡像 y 軸。

xy

鏡像兩個軸。

18.7.1 範例

  • 使用 ffplay 的完整範例
    ffplay -f lavfi 'amovie=input.mp3, asplit [a][out1];
                 [a] avectorscope=zoom=1.3:rc=2:gc=200:bc=10:rf=1:gf=8:bf=7 [out0]'
    

18.7.2 指令

此濾鏡支援上述所有選項作為指令,除了選項 sizerate

18.8 bench, abench

基準測試濾鏡圖的一部分。

濾鏡接受以下選項

action

啟動或停止計時器。

提升高於偵測臨界值的頻率。

start

取得目前時間,將其設定為幀中繼資料(使用金鑰 lavfi.bench.start_time),並將幀轉發到下一個濾鏡。

stop

取得目前時間,並從輸入幀中繼資料中擷取 lavfi.bench.start_time 中繼資料以取得時間差。然後印出時間差、平均時間、最大時間和最小時間(分別為 tavgmaxmin)。時間戳記以秒為單位表示。

18.8.1 範例

  • 基準測試 selectivecolor 濾鏡
    bench=start,selectivecolor=reds=-.2 .12 -.49,bench=stop
    

18.9 concat

串聯音訊和影片串流,將它們一個接一個地連接在一起。

濾鏡適用於同步影片和音訊串流的片段。所有片段必須具有相同數量的每種類型串流,這也將是輸出的串流數量。

濾鏡接受以下選項

n

設定片段數量。預設值為 2。

設定 V/Cr 組件表達式

設定輸出影片串流的數量,這也是每個片段中影片串流的數量。預設值為 1。

a

設定輸出音訊串流的數量,這也是每個片段中音訊串流的數量。預設值為 0。

unsafe

啟動不安全模式:如果片段具有不同的格式,則不要失敗。

濾鏡具有 v+a 個輸出:首先是 v 個影片輸出,然後是 a 個音訊輸出。

nx(v+a) 個輸入:首先是第一個片段的輸入,順序與輸出相同,然後是第二個片段的輸入,依此類推。

相關串流並不總是具有完全相同的持續時間,原因有很多,包括編解碼器幀大小或草率的製作。因此,相關的同步串流(例如,影片及其音軌)應一次串聯。concat 濾鏡將使用每個片段(最後一個片段除外)中最長串流的持續時間,並在必要時用靜音填充較短的音訊串流。

為了使此濾鏡正常運作,所有片段都必須從時間戳記 0 開始。

所有對應的串流在所有片段中都必須具有相同的參數;濾鏡系統將自動為影片串流選擇通用的像素格式,並為音訊串流選擇通用的樣本格式、樣本率和通道佈局,但其他設定(例如解析度)必須由使用者明確轉換。

不同的幀率是可以接受的,但會導致輸出時幀率可變;請務必設定輸出檔案以處理它。

18.9.1 範例

  • 串聯開頭、一集和結尾,全部為雙語版本(串流 0 中的影片,串流 1 和 2 中的音訊)
    ffmpeg -i opening.mkv -i episode.mkv -i ending.mkv -filter_complex \
      '[0:0] [0:1] [0:2] [1:0] [1:1] [1:2] [2:0] [2:1] [2:2]
       concat=n=3:v=1:a=2 [v] [a1] [a2]' \
      -map '[v]' -map '[a1]' -map '[a2]' output.mkv
    
  • 串聯兩個部分,分別處理音訊和影片,使用 (a)movie 來源,並調整解析度
    movie=part1.mp4, scale=512:288 [v1] ; amovie=part1.mp4 [a1] ;
    movie=part2.mp4, scale=512:288 [v2] ; amovie=part2.mp4 [a2] ;
    [v1] [v2] concat [outv] ; [a1] [a2] concat=v=0:a=1 [outa]
    

    請注意,如果音訊和影片串流在第一個檔案中不具有完全相同的持續時間,則會在拼接處發生不同步。

18.9.2 指令

此濾波器支援以下指令

next

關閉目前片段並步進到下一個片段

18.10 ebur128

EBU R128 掃描器濾鏡。此濾鏡採用音訊串流並分析其響度等級。預設情況下,它會以 10Hz 的頻率記錄訊息,其中包含瞬時響度(由 M 識別)、短期響度(S)、綜合響度(I)和響度範圍(LRA)。

濾鏡只能分析樣本格式為雙精度浮點的串流。如果需要,輸入串流將轉換為此規格。使用者可能需要在此濾鏡後插入 aformat 和/或 aresample 濾鏡以取得原始參數。

濾鏡還具有影片輸出(請參閱 video 選項),其中包含即時圖形以觀察響度演變。圖形包含上述記錄的訊息,因此當設定此選項時,除非設定了詳細記錄,否則不再列印。主要圖形區域包含短期響度(3 秒分析),右側的儀表用於瞬時響度(400 毫秒),但可以選擇配置為改為顯示短期響度(請參閱 gauge)。

綠色區域標記目標響度(預設為 -23LUFS,除非透過 target 修改)周圍的 +/- 1LU 目標範圍。

有關響度建議 EBU R128 的更多資訊,請參閱 http://tech.ebu.ch/loudness

濾鏡接受以下選項

video

啟動影片輸出。無論是否設定此選項,音訊串流都會保持不變地傳遞。如果啟動,影片串流將是第一個輸出串流。預設值為 0

size

設定影片大小。此選項僅適用於影片。如需此選項的語法,請查看 (ffmpeg-utils)ffmpeg-utils 手冊中的「影片大小」章節。預設和最小解析度為 640x480

meter

設定 EBU 比例儀表。預設值為 9。常用值為 918,分別用於 EBU 比例儀表 +9 和 EBU 比例儀表 +18。允許此範圍之間的任何其他整數值。

rolloff

設定中繼資料注入。如果設定為 1,音訊輸入將分割為 100 毫秒輸出幀,每個幀都包含中繼資料中的各種響度資訊。所有中繼資料金鑰都以 lavfi.r128. 為前綴。

設定方向模糊的角度。預設值為 45

framelog

強制幀記錄等級。

提升高於偵測臨界值的頻率。

quiet

停用記錄

info

資訊記錄等級

verbose

詳細記錄等級

預設情況下,記錄等級設定為 info。如果設定了 videometadata 選項,則會切換為 verbose

移動視窗中樣本絕對值的均方根值。

設定峰值模式。

可用模式可以累積(選項為 flag 類型)。可能的值為

none

停用任何峰值模式(預設值)。

sample

啟用樣本峰值模式。

簡單峰值模式尋找更高的樣本值。它會記錄樣本峰值訊息(由 SPK 識別)。

true

啟用真峰值模式。

如果啟用,則會在輸入串流的過採樣版本上完成峰值查找,以獲得更好的峰值準確性。它會記錄真峰值訊息(由 TPK 識別)和每幀真峰值訊息(由 FTPK 識別)。此模式需要使用 libswresample 進行建置。

dualmono

將單聲道輸入檔案視為「雙單聲道」。如果單聲道檔案旨在在立體聲系統上播放,則其 EBU R128 測量在感知上將不正確。如果設定為 true,此選項將補償此效果。多通道輸入檔案不受此選項影響。

panlaw

設定要用於測量雙單聲道檔案的特定聲像定律。此參數是可選的,預設值為 -3.01dB。

target

設定用作視覺化相對零的特定目標等級(以 LUFS 為單位)。此參數是可選的,預設值為 -23LUFS,如 EBU R128 所指定。但是,在線上發布的素材可能更喜歡 -16LUFS 的等級(例如,用於播客或影片平台)。

gauge

設定儀表顯示的值。有效值為 momentaryshortterm。預設情況下將使用瞬時值,但在某些情況下,觀察短期值可能更有用(例如,現場混音)。

scale

設定響度的顯示比例。有效參數為 absolute(以 LUFS 為單位)或 relative(LU),相對於目標。這僅影響影片輸出,而不影響摘要或連續記錄輸出。

integrated

用於測量綜合響度的唯讀導出值,以 LUFS 為單位。

設定用於偵測濾鏡的偵測頻率(以 Hz 為單位),該偵測濾鏡用於觸發等化。預設值為 1000 Hz。允許範圍介於 2 和 1000000 Hz 之間。

lra

用於測量響度範圍的唯讀導出值,以 LU 為單位。

lra_low

用於測量 LRA 低值的唯讀導出值,以 LUFS 為單位。

lra_high

用於測量 LRA 高值的唯讀導出值,以 LUFS 為單位。

sample_peak

用於測量樣本峰值的唯讀導出值,以 dBFS 為單位。

true_peak

18.10.1 範例

  • 用於測量真峰值的唯讀導出值,以 dBFS 為單位。
    ffplay -f lavfi -i "amovie=input.mp3,ebur128=video=1:meter=18 [out0][out1]"
    
  • 使用 ffplay 的即時圖形,具有 EBU 比例儀表 +18
    ffmpeg -nostats -i input.mp3 -filter_complex ebur128 -f null -
    

18.11 interleave, ainterleave

使用 ffmpeg 執行分析

暫時交錯來自多個輸入的幀。

interleave 適用於影片輸入,ainterleave 適用於音訊。

這些濾鏡從多個輸入讀取幀,並將佇列中最舊的幀傳送到輸出。

輸入串流必須具有定義良好的、單調遞增的幀時間戳記值。

為了提交一個幀到輸出,這些濾鏡需要為每個輸入排隊至少一個幀,因此如果一個輸入尚未終止且不會接收傳入幀,它們將無法運作。

例如,考慮一個輸入是 select 濾鏡的情況,該濾鏡始終會丟棄輸入幀。interleave 濾鏡將繼續從該輸入讀取,但在輸入傳送串流結束訊號之前,它將永遠無法傳送新幀到輸出。

此外,根據輸入同步,如果一個輸入接收的幀多於其他輸入,並且佇列已滿,則濾鏡將丟棄幀。

這些濾鏡接受以下選項

nb_inputs, n

duration

如何確定串流結束。

longest

最長輸入的持續時間。(預設)

shortest

shortest

最短輸入的持續時間。

first

18.11.1 範例

  • 設定不同輸入的數量,預設為 2。
    ffmpeg -i bambi.avi -i pr0n.mkv -filter_complex "[0:v][1:v] interleave" out.avi
    
  • 使用 ffmpeg 交錯屬於不同串流的幀
    select='if(gt(random(0), 0.2), 1, 2)':n=2 [tmp], boxblur=2:2, [tmp] interleave
    

18.12 latency, alatency

新增閃爍模糊效果

測量濾鏡延遲。

報告先前濾鏡的濾鏡延遲,音訊濾鏡的延遲以音訊樣本數表示,影片濾鏡的延遲以影片幀數表示。

18.13 metadata, ametadata

在輸入串流結束時,濾鏡將報告濾鏡圖中先前執行濾鏡的最小和最大測量延遲。

此濾波器還能夠拉伸/壓縮音訊資料以使其與時間戳記匹配,或注入靜音/剪切音訊以使其與時間戳記匹配,執行兩者的組合或兩者都不執行。

mode

操作幀中繼資料。

設定單聲道和反相聲道之間的立體聲基礎。預設值為 0。允許範圍為 -1 到 1。

設定濾鏡的操作模式。

select

如果同時設定了 valuekey,則選擇具有此類中繼資料的幀。如果僅設定了 key,則選擇每個在中繼資料中具有此金鑰的幀。

add

新增新的中繼資料 keyvalue。如果金鑰已可用,則不執行任何操作。

modify

修改已存在的金鑰的值。

delete

如果設定了 value,則僅刪除具有此類值的金鑰。否則,刪除金鑰。如果未設定 key,則刪除幀中的所有中繼資料值。

print

如果找到中繼資料,則列印金鑰及其值。如果未設定 key,則列印幀中可用的所有中繼資料值。

key

設定與所有模式一起使用的金鑰。對於除 printdelete 之外的所有模式都必須設定。

value

設定將使用的中繼資料值。此選項對於 modifyadd 模式是強制性的。

function

比較中繼資料值和 value 時要使用的函數。

可以是以下之一

same_str

值被解釋為字串,如果中繼資料值與 value 相同,則傳回 true。

starts_with

值被解釋為字串,如果中繼資料值以 value 選項字串開頭,則傳回 true。

less

值被解釋為浮點數,如果中繼資料值小於 value,則傳回 true。

equal

值被解釋為浮點數,如果 value 等於中繼資料值,則傳回 true。

greater

值被解釋為浮點數,如果中繼資料值大於 value,則傳回 true。

expr

值被解釋為浮點數,如果選項 expr 中的表達式評估為 true,則傳回 true。

ends_with

expr

值被解釋為字串,如果中繼資料值以 value 選項字串結尾,則傳回 true。

設定當 function 設定為 expr 時使用的表達式。表達式透過 eval API 評估,並且可以包含以下常數

VALUE1, FRAMEVAL

來自中繼資料金鑰的 value 的浮點數表示。

VALUE2, USERVAL

file

使用者在 value 選項中提供的 value 的浮點數表示。

direct

如果在 print 模式中指定,則輸出會寫入到命名的檔案。可以指定可寫入的 URL 而不是純文字檔案名。檔案名「-」是標準輸出的簡寫。如果未設定 file 選項,則輸出會以 AV_LOG_INFO 記錄等級寫入到記錄中。

18.13.1 範例

  • 當輸出寫入到使用 file 設定的 URL 時,減少列印模式中的緩衝。
    signalstats,metadata=print:key=lavfi.signalstats.YDIF:value=0:function=expr:expr='between(VALUE1,0,1)'
    
  • 列印金鑰 lavfi.signalstats.YDIF 的值介於 0 和 1 之間的幀的所有中繼資料值。
    silencedetect,ametadata=mode=print:file=metadata.txt
    
  • 將 silencedetect 輸出列印到檔案 metadata.txt
    metadata=mode=print:file='pipe\:4'
    

18.14 perms, aperms

將所有中繼資料直接傳送到檔案描述符號 4 的管道。

設定輸出幀的讀取/寫入權限。

濾鏡接受以下選項

mode

這些濾鏡主要針對開發人員,用於測試濾鏡圖中後續濾鏡中的直接路徑。

設定叢發融合,以視窗大小的百分比表示。允許範圍為 010。預設值為 2。如果偵測為雜訊的任何兩個樣本之間的間隔小於此值,則這兩個樣本之間的任何樣本也將被偵測為雜訊。

none

選擇權限模式。

不執行任何操作。這是預設值。

ro

將所有輸出幀設定為唯讀。

rw

將所有輸出幀設定為直接可寫入。

toggle

如果幀可寫入,則使其成為唯讀;如果幀唯讀,則使其成為可寫入。

random

設定臨界值。允許範圍為從 1100。預設值為 10。值越高,削波偵測的侵略性就越低。

隨機將每個輸出幀設定為唯讀或可寫入。

設定 random 模式的種子,必須是介於 0UINT32_MAX 之間的整數。如果未指定,或明確設定為 -1,則濾鏡將盡力使用良好的隨機種子。

18.15 realtime, arealtime

注意:如果在權限濾鏡和後續濾鏡之間自動插入濾鏡,則後續濾鏡中可能無法如預期接收到權限。在 perms/aperms 濾鏡之前插入 formataformat 濾鏡可以避免此問題。

減慢濾鏡速度以近似符合即時。

這些濾鏡將暫停濾鏡處理一段可變的時間,以使輸出速率與輸入時間戳記相符。它們類似於 ffmpegre 選項。

limit

它們接受以下選項

設定輸入增益。預設值為 0.4。

暫停的時間限制。任何長於該時間的暫停都將被視為時間戳記不連續性,並重置計時器。預設值為 2 秒。

處理的速度因子。該值必須是浮點數,且大於零。大於 1.0 的值將導致快於即時的處理,較小的值將減慢處理速度。limit 會自動相應調整。預設值為 1.0。

18.15.1 指令

無法實現快於沒有這些濾鏡可能達到的處理速度。

18.16 segment, asegment

兩個濾鏡都支援上述所有選項作為 指令

將單一輸入串流分割成多個串流。

此濾鏡與 concat 濾鏡的作用相反。

此濾波器還能夠拉伸/壓縮音訊資料以使其與時間戳記匹配,或注入靜音/剪切音訊以使其與時間戳記匹配,執行兩者的組合或兩者都不執行。

segment 適用於影片幀,asegment 適用於音訊樣本。

輸出片段的時間戳記以 ’|’ 分隔。第一個片段將從輸入串流的開頭開始。最後一個片段將運行到輸入串流的結尾。

影格,取樣

分割片段的確切影格/取樣計數。

在所有情況下,在每個片段前加上 ’+’ 將使其相對於前一個片段。

18.16.1 範例

  • 將輸入音訊串流分割成三個輸出音訊串流,從輸入音訊串流的開始處開始,並儲存到第一個輸出音訊串流中,然後在第 60 秒開始,儲存到第二個輸出音訊串流中,最後在輸入音訊串流的第 150 秒之後,儲存到第三個輸出音訊串流中
    asegment=timestamps="60|150"
    

18.17 select, aselect

選擇要傳遞到輸出的影格。

此濾波器還能夠拉伸/壓縮音訊資料以使其與時間戳記匹配,或注入靜音/剪切音訊以使其與時間戳記匹配,執行兩者的組合或兩者都不執行。

此濾鏡並非為即時設計。

設定表達式,該表達式會針對每個輸入影格進行評估。

如果表達式評估結果為零,則影格將被丟棄。

如果評估結果為負數或 NaN,則影格會被傳送到第一個輸出;否則,它會被傳送到索引為 ceil(val)-1 的輸出,假設輸入索引從 0 開始。

例如,值 1.2 對應於索引為 ceil(1.2)-1 = 2-1 = 1 的輸出,即第二個輸出。

輸出,n

設定輸出的數量。要將選定的影格傳送到哪個輸出取決於評估結果。預設值為 1。

pulse

n

過濾後影格的(順序)編號,從 0 開始。

selected_n

選定影格的(順序)編號,從 0 開始。

prev_selected_n

上一個選定影格的順序編號。如果未定義,則為 NAN。

tb

輸入時間戳記的時基。

pts

過濾後影格的 PTS(演示時間戳記),以 TB 單位表示。如果未定義,則為 NAN。

設定傳輸表達式。

過濾後影格的 PTS,以秒為單位表示。如果未定義,則為 NAN。

prev_pts

先前過濾後影格的 PTS。如果未定義,則為 NAN。

prev_selected_pts

上一個先前過濾後影格的 PTS。如果未定義,則為 NAN。

prev_selected_t

上一個先前選定影格的 PTS,以秒為單位表示。如果未定義,則為 NAN。

設定截止頻率,單位為赫茲。允許範圍為 2 到 200。預設值為 20。

串流中第一個不是 NAN 的 PTS。如果找不到,則保持為 NAN。

start_t

串流中第一個不是 NAN 的 PTS,以秒為單位表示。如果找不到,則保持為 NAN。

pict_type (僅限視訊)

過濾後影格的類型。它可以採用以下值之一

I
P
B
S
SI
SP
BI
interlace_type (僅限視訊)

影格交錯類型。它可以採用以下值之一

PROGRESSIVE

影格是循序掃描(非交錯)。

TOPFIRST

影格是頂場優先。

BOTTOMFIRST

影格是底場優先。

consumed_sample_n (僅限音訊)

當前影格之前選定的取樣數量

samples_n (僅限音訊)

當前影格中的取樣數量

sample_rate (僅限音訊)

輸入取樣率

如果找到中繼資料,則列印金鑰及其值。如果未設定 key,則列印幀中可用的所有中繼資料值。

如果過濾後的影格是關鍵影格,則為 1,否則為 0。

pos

過濾後影格在檔案中的位置,如果資訊不可用(例如,對於合成視訊),則為 -1;已棄用,請勿使用

scene (僅限視訊)

介於 0 和 1 之間的值,用於指示新場景;較低的值反映當前影格引入新場景的可能性較低,而較高的值表示當前影格更可能是新場景(請參閱以下範例)

concatdec_select

concat demuxer 可以通過設定入點和出點來僅選擇 concat 輸入檔案的一部分,但輸出數據包可能不會完全包含在選定的間隔內。通過使用此變數,可以跳過由 concat demuxer 生成的、未完全包含在選定間隔內的影格。

這通過將影格 pts 與 lavf.concat.start_timelavf.concat.duration 數據包元數據值進行比較來工作,這些值也存在於解碼後的影格中。

如果影格 pts 至少為 start_time,並且持續時間元數據丟失或影格 pts 小於 start_time + duration,則 concatdec_select 變數為 -1,否則為 0,如果 start_time 元數據丟失,則為 NaN。

這基本上意味著,如果輸入影格的 pts 在 concat demuxer 設定的間隔內,則會選取該影格。

iw (僅限視訊)

代表輸入視訊影格的寬度。

ih (僅限視訊)

代表輸入視訊影格的高度。

view (僅限視訊)

多視圖視訊的視圖 ID。

select 表達式的預設值為 "1"。

18.17.1 範例

  • 選取輸入中的所有影格
    select
    

    上述範例與以下相同

    select=1
    
  • 跳過所有影格
    select=0
    
  • 僅選取 I 影格
    select='eq(pict_type\,I)'
    
  • 每 100 個影格選取一個影格
    select='not(mod(n\,100))'
    
  • 僅選取包含在 10-20 時間間隔內的影格
    select=between(t\,10\,20)
    
  • 僅選取包含在 10-20 時間間隔內的 I 影格
    select=between(t\,10\,20)*eq(pict_type\,I)
    
  • 選取最小間隔為 10 秒的影格
    select='isnan(prev_selected_t)+gte(t-prev_selected_t\,10)'
    
  • 使用 aselect 僅選取取樣數大於 100 的音訊影格
    aselect='gt(samples_n\,100)'
    
  • 建立第一個場景的馬賽克
    ffmpeg -i video.avi -vf select='gt(scene\,0.4)',scale=160:120,tile -frames:v 1 preview.png
    

    scene 與介於 0.3 和 0.5 之間的值進行比較通常是一個明智的選擇。

  • 將偶數和奇數影格發送到不同的輸出,並將它們組合起來
    select=n=2:e='mod(n, 2)+1' [odd][even]; [odd] pad=h=2*ih [tmp]; [tmp][even] overlay=y=h
    
  • 從使用入點和出點的 ffconcat 檔案中選取有用的影格,但來源檔案不只是幀內影格。
    ffmpeg -copyts -vsync 0 -segment_time_metadata 1 -i input.ffconcat -vf select=concatdec_select -af aselect=concatdec_select output.avi
    

18.18 sendcmd, asendcmd

將命令發送到濾鏡圖中的濾鏡。

這些濾鏡讀取要發送到濾鏡圖中其他濾鏡的命令。

sendcmd 必須插入在兩個視訊濾鏡之間,asendcmd 必須插入在兩個音訊濾鏡之間,除此之外,它們的作用方式相同。

命令的規範可以在濾鏡參數中使用 commands 選項提供,也可以在 filename 選項指定的文件中提供。

此外,根據輸入同步,如果一個輸入接收的幀多於其他輸入,並且佇列已滿,則濾鏡將丟棄幀。

commands,c

設定要讀取並發送到其他濾鏡的命令。

檔案名稱,f

設定要讀取並發送到其他濾鏡的命令的文件名。

18.18.1 指令語法

命令描述由一系列間隔規範組成,包括當發生與該間隔相關的特定事件時要執行的命令列表。發生的事件通常是當前影格時間進入或離開給定的時間間隔。

間隔由以下語法指定

START[-END] COMMANDS;

時間間隔由 STARTEND 時間指定。END 是可選的,預設為最大時間。

如果當前影格時間包含在間隔 [START, END) 中,則認為它在指定的間隔內,也就是說,當時間大於或等於 START 且小於 END 時。

COMMANDS 由一個或多個命令規範的序列組成,以 "," 分隔,與該間隔相關。命令規範的語法由以下給出

[FLAGS] TARGET COMMAND ARG

FLAGS 是可選的,用於指定與時間間隔相關的事件類型,這些事件啟用發送指定的命令,並且必須是由 "+" 或 "|" 分隔並用 "[" 和 "]" 括起來的識別符標誌的非空序列。

識別以下標誌

enter

當當前影格時間戳記進入指定的間隔時,會發送命令。換句話說,當前一個影格時間戳記不在給定的間隔內,而當前影格時間戳記在時,會發送命令。

leave

當當前影格時間戳記離開指定的間隔時,會發送命令。換句話說,當前一個影格時間戳記在給定的間隔內,而當前影格時間戳記不在時,會發送命令。

expr

命令 ARG 被解釋為表達式,表達式的結果將作為 ARG 傳遞。

表達式通過 eval API 評估,並且可以包含以下常數

POS

影格在檔案中的原始位置,如果當前影格未定義,則為未定義。已棄用,請勿使用。

PTS

輸入中的演示時間戳記。

n

N

t

視訊或音訊的輸入影格計數,從 0 開始。

T

當前影格的時間(秒)。

TS

當前命令間隔的開始時間(秒)。

TE

當前命令間隔的結束時間(秒)。

w

TI

h

當前命令間隔的插值時間,TI = (T - TS) / (TE - TS)。

IW

視訊影格寬度。

IH

視訊影格高度。

如果未指定 FLAGS,則假定預設值為 [enter]

TARGET 指定命令的目標,通常是濾鏡類別的名稱或特定濾鏡實例名稱。

COMMAND_FLAG  ::= "enter" | "leave"
COMMAND_FLAGS ::= COMMAND_FLAG [(+|"|")COMMAND_FLAG]
COMMAND       ::= ["[" COMMAND_FLAGS "]"] TARGET COMMAND [ARG]
COMMANDS      ::= COMMAND [,COMMANDS]
INTERVAL      ::= START[-END] COMMANDS
INTERVALS     ::= INTERVAL[;INTERVALS]

18.18.2 範例

  • COMMAND 指定目標濾鏡的命令名稱。
    asendcmd=c='4.0 atempo tempo 1.5',atempo
    
  • ARG 是可選的,用於指定給定 COMMAND 的可選參數列表。
    asendcmd=c='4.0 atempo@my tempo 1.5',atempo@my
    
  • 在一個間隔規範和另一個間隔規範之間,空白字元或以 # 開頭直到行尾的字元序列將被忽略,並且可以用於註解。
    # show text in the interval 5-10
    5.0-10.0 [enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=hello world',
             [leave] drawtext reinit 'fontfile=FreeSerif.ttf:text=';
    
    # desaturate the image in the interval 15-20
    15.0-20.0 [enter] hue s 0,
              [enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=nocolor',
              [leave] hue s 1,
              [leave] drawtext reinit 'fontfile=FreeSerif.ttf:text=color';
    
    # apply an exponential saturation fade-out effect, starting from time 25
    25 [enter] hue s exp(25-t)
    

    以下是命令規範語法的簡化 BNF 描述

    sendcmd=f=test.cmd,drawtext=fontfile=FreeSerif.ttf:text='',hue
    

18.19 setpts, asetpts

在第 4 秒指定音訊速度變化

定義特定濾鏡實例為目標

此濾波器還能夠拉伸/壓縮音訊資料以使其與時間戳記匹配,或注入靜音/剪切音訊以使其與時間戳記匹配,執行兩者的組合或兩者都不執行。

expr

在文件中指定 drawtext 和 hue 命令的列表。

表達式通過 eval API 評估,並且可以包含以下常數

允許讀取和處理儲存在 test.cmd 文件中的上述命令列表的濾鏡圖,可以使用以下方式指定

變更輸入影格的 PTS(演示時間戳記)。

PTS

setpts 用於視訊影格,asetpts 用於音訊影格。

n

為每個影格評估以建構其時間戳記的表達式。

FRAME_RATE,FR

影格率,僅針對恆定影格率視訊定義

PTS

輸入中的演示時間戳記

N

視訊的輸入影格計數或音訊的已消耗取樣數,不包括當前影格,從 0 開始。

NB_CONSUMED_SAMPLES

已消耗的取樣數,不包括當前影格(僅限音訊)

NB_SAMPLES,S

當前影格中的取樣數(僅限音訊)

SAMPLE_RATE,SR

音訊取樣率。

t

STARTPTS

POS

第一個影格的 PTS。

STARTT

第一個影格的時間(秒)

INTERLACED

指示當前影格是否交錯。

T

當前影格的時間(秒)

POS

影格在檔案中的原始位置,如果當前影格未定義,則為未定義;已棄用,請勿使用

PREV_INPTS

上一個輸入 PTS。

PREV_INT

上一個輸入時間(秒)

tb

輸入時間戳記的時基。

PREV_OUTPTS

上一個輸出 PTS。

18.19.1 範例

  • PREV_OUTT
    setpts=PTS-STARTPTS
    
  • 上一個輸出時間(秒)
    setpts=0.5*PTS
    
  • RTCTIME
    setpts=2.0*PTS
    
  • 實際時間(RTC),以微秒為單位。此功能已棄用,請改用 time(0)。
    setpts=N/(25*TB)
    
  • RTCSTART
    setpts=PTS+randomi(0, -100\,100)
    
  • 電影開始時的實際時間(RTC),以微秒為單位。
    setpts='1/(25*TB) * (N + 0.05 * sin(N*2*PI/25))'
    
  • T_CHANGE
    setpts=PTS+10/TB
    
  • 應用命令後的第一個影格的時間,如果沒有命令,則為第一個影格的時間。
    setpts='(RTCTIME - RTCSTART) / (TB * 1000000)'
    
  • 從零開始計數 PTS
    asetpts=N/SR/TB
    

18.19.2 指令

應用快動作效果

18.20 setrange

應用慢動作效果

設定每秒 25 個影格的固定速率

濾鏡接受以下選項

設定用於偵測濾鏡的偵測頻率(以 Hz 為單位),該偵測濾鏡用於觸發等化。預設值為 1000 Hz。允許範圍介於 2 和 1000000 Hz 之間。

提升高於偵測臨界值的頻率。

auto

應用 +/-100 TB 單位的隨機抖動效果

unspecified, unknown

設定固定速率 25 fps,帶有一些抖動

limited, tv, mpeg

對輸入 PTS 應用 10 秒的偏移量

full, pc, jpeg

從「即時來源」產生時間戳記,並重新基準化到當前時基

18.21 settb, asettb

通過計數取樣產生時間戳記

它接受以下參數

這兩個濾鏡都支援以上所有選項作為 命令

強制輸出視訊影格的色彩範圍。

setrange 濾鏡標記輸出影格的色彩範圍屬性。它不會變更輸入影格,而只設定相應的屬性,這會影響後續濾鏡如何處理影格。

18.21.1 範例

  • keep
    settb=expr=1/25
    
  • 保持相同的色彩範圍屬性。
    settb=expr=0.1
    
  • unspecified
    settb=1+0.001
    
  • 將色彩範圍設定為未指定。
    settb=2*intb
    
  • limited
    settb=AVTB
    

18.22 showcqt

將色彩範圍設定為有限。

濾鏡接受以下選項

size, s

full

將色彩範圍設定為完整。

box_source

設定用於輸出影格時間戳記的時基。它主要用於測試時基配置。

expr,tb

被評估為輸出時基的表達式。

tb 的值是一個表示有理數的算術表達式。該表達式可以包含常數 "AVTB"(預設時基)、"intb"(輸入時基)和 "sr"(取樣率,僅限音訊)。預設值為 "intb"。

將時基設定為 1/25

將時基設定為 1/10

將時基設定為 1001/1000

將時基設定為 2*intb

設定預設時基值

使用 Brown-Puckette 恆 Q 變換演算法和直接頻域係數計算(但變換本身並非真正的恆 Q,而是 Q 因子實際上是可變/鉗位的),將輸入音訊轉換為表示頻譜的視訊輸出,使用音樂音階,從 E0 到 D#10。

size,s

指定輸出的視訊尺寸。它必須是偶數。有關此選項的語法,請查看 (ffmpeg-utils) 手冊中的「視訊尺寸」章節。預設值為 1920x1080

fps,rate,r

設定輸出視訊影格率。預設值為 25

bar_h

設定長條圖高度。它必須是偶數。預設值為 -1,表示自動計算長條圖高度。

和函數

axis_h

設定軸高度。它必須是偶數。預設值為 -1,表示自動計算軸高度。

sono_h

設定聲譜圖高度。它必須是偶數。預設值為 -1,表示自動計算聲譜圖高度。

fullhd

設定 fullhd 解析度。此選項已棄用,請改用 sizes。預設值為 1

預設值為 16

sono_v,volume

指定聲譜圖音量表達式。它可以包含變數

bar_v

bar_v 評估的表達式

fps,rate,r

設定輸出視訊影格率。預設值為 25

bar_h

設定長條圖高度。它必須是偶數。預設值為 -1,表示自動計算長條圖高度。

和函數

axis_h

設定軸高度。它必須是偶數。預設值為 -1,表示自動計算軸高度。

sono_h

設定聲譜圖高度。它必須是偶數。預設值為 -1,表示自動計算聲譜圖高度。

fullhd

設定 fullhd 解析度。此選項已棄用,請改用 sizes。預設值為 1

frequency,freq,f

評估頻率的位置

timeclamp,tc

timeclamp 選項的值

a_weighting(f)

等響度 A 加權

b_weighting(f)

bar_h

等響度 B 加權

attack

c_weighting(f)

lowshelf

等響度 C 加權。

bar_v,volume2

指定長條圖音量表達式。它可以包含變數

sono_v

sono_v 評估的表達式

預設值為 sono_v

sono_g,gamma

fps,rate,r

設定輸出視訊影格率。預設值為 25

bar_h

指定聲譜圖伽瑪值。較低的伽瑪值使頻譜更具對比度,較高的伽瑪值使頻譜具有更大的範圍。預設值為 3。可接受的範圍是 [1, 7]

bar_g,gamma2

指定長條圖伽瑪值。預設值為 1。可接受的範圍是 [1, 7]

bar_t

指定長條圖透明度級別。較低的值使長條圖更清晰。預設值為 1。可接受的範圍是 [0, 1]

timeclamp,tc

當前元數據鍵值。

指定變換時間鉗位。在低頻率下,時域精度和頻域精度之間存在權衡。如果時間鉗位較低,則時域中的事件表示更準確(例如快速低音鼓),否則頻域中的事件表示更準確(例如貝斯吉他)。可接受的範圍是 [0.002, 1]。預設值為 0.17

元數據值的最大值。

attack

設定輸出影格率。預設值為 25

設定起音時間(秒)。預設值為 0(禁用)。否則,它通過在時域中應用非對稱窗口化來限制未來取樣,這在需要低延遲時很有用。可接受的範圍是 [0, 1]

fps,rate,r

設定輸出視訊影格率。預設值為 25

bar_h

設定長條圖高度。它必須是偶數。預設值為 -1,表示自動計算長條圖高度。

和函數

basefreq

指定變換基準頻率。預設值為 20.01523126408007475,這是低於 E0 50 音分的頻率。可接受的範圍是 [10, 100000]

endfreq

指定變換結束頻率。預設值為 20495.59681441799654,這是高於 D#10 50 音分的頻率。可接受的範圍是 [10, 100000]

coeffclamp

此選項已棄用並被忽略。

tlength

指定時域中的變換長度。使用此選項可在每個頻率取樣點控制時域和頻域之間的精度權衡。它可以包含變數

tc

timeclamp 選項的值。

預設值為 384*tc/(384+tc*f)

count

指定每個視訊影格的變換計數。預設值為 6。可接受的範圍是 [1, 30]

bt709

lutyuv

fcc

lutyuv

bt470bg

space

smpte170m

space

smpte240m

lutyuv

bt2020ncl

space

fcount

指定每個像素的變換計數。預設值為 0,表示自動計算。可接受的範圍是 [0, 10]

18.22.1 範例

  • fontfile
    ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt [out0]'
    
  • 指定要與 freetype 一起使用的字型檔案,以繪製軸。如果未指定,則使用嵌入式字型。請注意,使用字型檔案或嵌入式字型繪製軸的功能尚未針對自訂 basefreqendfreq 實作,請改用 axisfile 選項。
    ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt=fps=30:count=5 [out0]'
    
  • fontconfig
    ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt=s=1280x720:count=4 [out0]'
    
  • 指定 fontconfig 模式。此選項的優先順序低於 fontfile。模式中的 : 可以替換為 | 以避免不必要的跳脫字元。
    sono_h=0
    
  • fontcolor
    ffplay -f lavfi 'aevalsrc=0.1*sin(2*PI*55*t)+0.1*sin(4*PI*55*t)+0.1*sin(6*PI*55*t)+0.1*sin(8*PI*55*t),
                     asplit[a][out1]; [a] showcqt [out0]'
    
  • 指定字型顏色表達式。這是一個算術表達式,應傳回整數值 0xRRGGBB。它可以包含變數
    ffplay -f lavfi 'aevalsrc=0.1*sin(2*PI*55*t)+0.1*sin(4*PI*55*t)+0.1*sin(6*PI*55*t)+0.1*sin(8*PI*55*t),
                     asplit[a][out1]; [a] showcqt=timeclamp=0.5 [out0]'
    
  • midi(f)
    bar_v=10:sono_v=bar_v*a_weighting(f)
    
  • 頻率 f 的 midi 編號,一些 midi 編號:E0(16)、C1(24)、C2(36)、A4(69)
    bar_g=2:sono_g=2
    
  • r(x),g(x),b(x)
    tc=0.33:tlength='st(0,0.17); 384*tc / (384 / ld(0) + tc*f /(1-ld(0))) + 384*tc / (tc*f / ld(0) + 384 /(1-ld(0)))'
    
  • 強度 x 的紅色、綠色和藍色值。
    fontcolor='if(mod(floor(midi(f)+0.5),12), 0x0000FF, g(1))':fontfile=myfont.ttf
    
  • 預設值為 st(0, (midi(f)-59.5)/12); st(1, if(between(ld(0),0,1), 0.5-0.5*cos(2*PI*ld(0)), 0)); r(1-ld(1)) + b(ld(1))
    font='Courier New,Monospace,mono|bold'
    
  • axisfile
    axisfile=myaxis.png:basefreq=40:endfreq=10000
    

18.23 showcwt

指定要繪製軸的影像檔案。此選項會覆蓋 fontfilefontcolor 選項。

濾鏡接受以下選項

size, s

axis,text

繪製框的寬度和高度。

box_source

scale

啟用/停用在軸上繪製文字。如果設定為 0,則停用在軸上繪製文字,並忽略 fontfileaxisfile 選項。預設值為 1

linear
log
csp
設定色彩空間。接受的值為
unspecified
未指定(預設)
cscheme
設定頻譜圖色彩方案。這是浮點數值列表,格式為 left_r|left_g|left_b|right_r|right_g|right_b。預設值為 1|0.5|0|0|0.5|1
在顯示頻譜的同時播放音訊

與上述相同,但影格率為 30 fps

以 1280x720 播放

停用聲譜圖顯示

linear
log
未指定(預設)
cscheme
設定頻譜圖色彩方案。這是浮點數值列表,格式為 left_r|left_g|left_b|right_r|right_g|right_b。預設值為 1|0.5|0|0|0.5|1

A1 及其諧波:A1、A2、(接近)E3、A3

min

與上述相同,但在頻域中具有更高的精度

max

自訂音量

自訂伽瑪值,現在頻譜與振幅呈線性關係。

自訂 tlength 方程式

自訂字型顏色和字型檔案,C 音符為綠色,其他音符為藍色

使用 fontconfig 自訂字型

使用影像檔案和自訂軸自訂頻率範圍

cwoscope

使用連續小波變換和 Morlet 小波將輸入音訊轉換為表示頻譜的視訊輸出。

size,s

指定輸出的視訊尺寸。有關此選項的語法,請查看 (ffmpeg-utils) 手冊中的「視訊尺寸」章節。預設值為 640x512

fscale

mode

設定使用的頻率比例。允許的值為

linear

bark

相位 (phase)

mel

erbs

sqrt

channel

cbrt

qdrt

fm

預設值為 linear

replace

iscale

model
scroll
frame
設定使用的強度比例。允許的值為

linear

log

預設值為 log

rl

min_frequency,minfreq

設定將在輸出中使用的最小頻率。預設值為 20 Hz。

max_frequency,maxfreq

設定將在輸出中使用的最大頻率。預設值為 20000 Hz。實際頻率上限取決於輸入音訊的取樣率,當設定的值大於奈奎斯特頻率時,將強制執行此值。

imin

設定將在輸出中使用的最小強度。

imax

設定用於渲染的 SOFA 檔案。

設定將在輸出中使用的最大強度。

18.24 showfreqs

logb

濾鏡接受以下選項

size, s

將計算出的幅度值對應到像素值時,設定亮度強度的對數基底。允許的範圍是從 01。預設值為 0.0001

繪製框的寬度和高度。

deviation

mode

設定頻率偏差。小於 1 的值更傾向於頻率,而大於 1 的值更傾向於時間。允許的範圍是從 010。預設值為 1

設定叢發融合,以視窗大小的百分比表示。允許範圍為 010。預設值為 2。如果偵測為雜訊的任何兩個樣本之間的間隔小於此值,則這兩個樣本之間的任何樣本也將被偵測為雜訊。

設定框邊緣厚度的表達式。值 fill 將建立一個填充框。預設值為 3
指定要寫入的框的顏色。有關此選項的通用語法,請查看 (ffmpeg-utils) 手冊中的「顏色」部分。如果使用特殊值 invert,則框邊緣顏色與反轉亮度的視訊相同。
thickness, t

pps

ascale

設定振幅比例。

設定叢發融合,以視窗大小的百分比表示。允許範圍為 010。預設值為 2。如果偵測為雜訊的任何兩個樣本之間的間隔小於此值,則這兩個樣本之間的任何樣本也將被偵測為雜訊。

lin

設定每行每秒輸出的像素數。允許的範圍是從 11024。預設值為 64

sqrt

visual

cbrt

設定輸出視覺模式。允許的值為

log

magnitude

預設值為 log

size

顯示幅度。

設定叢發融合,以視窗大小的百分比表示。允許範圍為 010。預設值為 2。如果偵測為雜訊的任何兩個樣本之間的間隔小於此值,則這兩個樣本之間的任何樣本也將被偵測為雜訊。

lin

設定每行每秒輸出的像素數。允許的範圍是從 11024。預設值為 64

log

magnitude

rlog

phase

僅顯示相位。

win_size

magphase

顯示幅度和相位的組合。幅度映射到亮度,相位映射到顏色。

win_func

color

設定叢發融合,以視窗大小的百分比表示。允許範圍為 010。預設值為 2。如果偵測為雜訊的任何兩個樣本之間的間隔小於此值,則這兩個樣本之間的任何樣本也將被偵測為雜訊。

rect
bartlett
顯示每個聲道幅度的唯一顏色。
hamming
blackman
welch
flattop
bharris
bnuttall
bhann
sine
nuttall
lanczos
gauss
tukey
dolph
cauchy
parzen
poisson
bohman
kaiser

stereo

overlap

顯示每個立體聲差異的唯一顏色。

預設值為 magnitude

slide

mgain

設定輸出滑動方法。允許的值為

replace

scroll

設定叢發融合,以視窗大小的百分比表示。允許範圍為 010。預設值為 2。如果偵測為雜訊的任何兩個樣本之間的間隔小於此值,則這兩個樣本之間的任何樣本也將被偵測為雜訊。

預設值為 replace
separate

direction

設定輸出滑動方法的方向方法。允許的值為

lr

從左到右的方向。

rl

設定叢發融合,以視窗大小的百分比表示。允許範圍為 010。預設值為 2。如果偵測為雜訊的任何兩個樣本之間的間隔小於此值,則這兩個樣本之間的任何樣本也將被偵測為雜訊。

從右到左的方向。
ud
從上到下的方向。

du

取樣率

從下到上的方向。

18.25 showspatial

bar

濾鏡接受以下選項

size, s

設定長條圖顯示與顯示尺寸的比率。預設值為 0。

win_size

設定視窗大小。允許範圍從 102465536。預設大小為 4096

win_func

設定視窗函數。

設定叢發融合,以視窗大小的百分比表示。允許範圍為 010。預設值為 2。如果偵測為雜訊的任何兩個樣本之間的間隔小於此值,則這兩個樣本之間的任何樣本也將被偵測為雜訊。

rect
bartlett
rotation
顯示每個聲道幅度的唯一顏色。
hamming
blackman
welch
flattop
bharris
bnuttall
bhann
sine
nuttall
lanczos
gauss
tukey
dolph
cauchy
parzen
poisson
bohman
kaiser

設定顏色旋轉,必須在 [-1.0, 1.0] 範圍內。預設值為 0

繪製框的寬度和高度。

showspectrum

18.26 showspectrum

將輸入音訊轉換為表示音訊功率譜的視訊輸出。音訊振幅在 Y 軸上,頻率在 X 軸上。

濾鏡接受以下選項

size, s

axis,text

replace

size,s

設定叢發融合,以視窗大小的百分比表示。允許範圍為 010。預設值為 2。如果偵測為雜訊的任何兩個樣本之間的間隔小於此值,則這兩個樣本之間的任何樣本也將被偵測為雜訊。

輸入顯示縱橫比,它與 (w / h) * sar 相同。

指定視訊尺寸。有關此選項的語法,請查看 (ffmpeg-utils) 手冊中的「視訊尺寸」章節。預設值為 1024x512

in_w, iw

rate,fps,r

設定視訊速率。預設值為 25

mode

輸入樣本縱橫比。

設定顯示模式。這設定了如何表示每個頻率 bin。

bar

dot

預設值為 bar

mode

scale

設定叢發融合,以視窗大小的百分比表示。允許範圍為 010。預設值為 2。如果偵測為雜訊的任何兩個樣本之間的間隔小於此值,則這兩個樣本之間的任何樣本也將被偵測為雜訊。

預設值為 replace

設定頻率比例。

separate

lin

sqrt

color

cbrt

設定叢發融合,以視窗大小的百分比表示。允許範圍為 010。預設值為 2。如果偵測為雜訊的任何兩個樣本之間的間隔小於此值,則這兩個樣本之間的任何樣本也將被偵測為雜訊。

log

rlog

預設值為 lin

window_size,window

設定視窗大小。允許的範圍是從 16 到 65536。

預設值為 2048

window_func,win_func,windowfunc

設定視窗函數。

rect

bartlett

hann

hanning

fiery

hamming

blackman

lanczos

cool

gaussian

magma

flattop

green

預設值為 hanning

viridis

overlap

plasma

設定視窗重疊。範圍為 [0, 1]。預設值為 1,這表示將選取所選視窗函數的最佳重疊。

cividis

averaging

設定時間平均。將其設定為 0 將顯示當前最大峰值。預設值為 1,這表示時間平均已停用。

colors

指定以空格或 ’|’ 分隔的顏色列表,這些顏色將用於繪製聲道頻率。無法識別或遺失的顏色將替換為白色。

scale

cmode

設定叢發融合,以視窗大小的百分比表示。允許範圍為 010。預設值為 2。如果偵測為雜訊的任何兩個樣本之間的間隔小於此值,則這兩個樣本之間的任何樣本也將被偵測為雜訊。

lin

linear

sqrt

設定聲道顯示模式。

cbrt

立方根

log

對數

combined

separate

combined

預設值為 combined

minamp

size

設定在 log 振幅縮放器中使用的最小振幅。

設定叢發融合,以視窗大小的百分比表示。允許範圍為 010。預設值為 2。如果偵測為雜訊的任何兩個樣本之間的間隔小於此值,則這兩個樣本之間的任何樣本也將被偵測為雜訊。

lin

linear

log

對數

data

saturation

設定數據顯示模式。

win_func

設定視窗函數。

設定叢發融合,以視窗大小的百分比表示。允許範圍為 010。預設值為 2。如果偵測為雜訊的任何兩個樣本之間的間隔小於此值,則這兩個樣本之間的任何樣本也將被偵測為雜訊。

rect
bartlett
rotation
顯示每個聲道幅度的唯一顏色。
hamming
blackman
welch
flattop
bharris
bnuttall
bhann
sine
nuttall
lanczos
gauss
tukey
dolph
cauchy
parzen
poisson
bohman
kaiser

設定顏色旋轉,必須在 [-1.0, 1.0] 範圍內。預設值為 0

magnitude

phase

overlap

delay

增益 (gain)

magnitude

從左到右的方向。

phase

設定用於渲染的 SOFA 檔案。

設定將在輸出中使用的最大強度。

start

delay

stop

預設值為 magnitude

fps

channels

設定處理音訊時要使用的聲道。預設情況下,所有聲道都會被處理。

stereotools

將立體聲輸入音訊轉換為視訊輸出,表示兩個聲道之間的空間關係。

size,s

limit

指定輸出的視訊尺寸。有關此選項的語法,請查看 (ffmpeg-utils) 手冊中的「視訊尺寸」章節。預設值為 512x512

color

window_func

設定視窗函數。

18.26.1 範例

  • rect
    showspectrum=s=1280x480:scale=log
    
  • hann
    ffplay -f lavfi 'amovie=input.mp3, asplit [a][out1];
                 [a] showspectrum=mode=separate:color=intensity:slide=1:scale=cbrt [out0]'
    

18.27 showspectrumpic

hanning

濾鏡接受以下選項

size, s

hamming

mode

scale

設定叢發融合,以視窗大小的百分比表示。允許範圍為 010。預設值為 2。如果偵測為雜訊的任何兩個樣本之間的間隔小於此值,則這兩個樣本之間的任何樣本也將被偵測為雜訊。

預設值為 replace

設定頻率比例。

separate

lin

sqrt

color

cbrt

設定叢發融合,以視窗大小的百分比表示。允許範圍為 010。預設值為 2。如果偵測為雜訊的任何兩個樣本之間的間隔小於此值,則這兩個樣本之間的任何樣本也將被偵測為雜訊。

log

rlog

預設值為 lin

window_size,window

設定視窗大小。允許的範圍是從 16 到 65536。

預設值為 2048

window_func,win_func,windowfunc

設定視窗函數。

rect

bartlett

hann

hanning

fiery

hamming

blackman

lanczos

cool

gaussian

magma

flattop

green

預設值為 hanning

viridis

overlap

plasma

設定視窗重疊。範圍為 [0, 1]。預設值為 1,這表示將選取所選視窗函數的最佳重疊。

cividis

averaging

設定時間平均。將其設定為 0 將顯示當前最大峰值。預設值為 1,這表示時間平均已停用。

colors

blackman

scale

cmode

設定叢發融合,以視窗大小的百分比表示。允許範圍為 010。預設值為 2。如果偵測為雜訊的任何兩個樣本之間的間隔小於此值,則這兩個樣本之間的任何樣本也將被偵測為雜訊。

lin

linear

sqrt

設定聲道顯示模式。

cbrt

立方根

log

對數

combined

separate

combined

預設值為 combined

預設值為 hann

size

設定在 log 振幅縮放器中使用的最小振幅。

設定叢發融合,以視窗大小的百分比表示。允許範圍為 010。預設值為 2。如果偵測為雜訊的任何兩個樣本之間的間隔小於此值,則這兩個樣本之間的任何樣本也將被偵測為雜訊。

lin

linear

log

對數

data

saturation

設定數據顯示模式。

win_func

設定視窗函數。

設定叢發融合,以視窗大小的百分比表示。允許範圍為 010。預設值為 2。如果偵測為雜訊的任何兩個樣本之間的間隔小於此值,則這兩個樣本之間的任何樣本也將被偵測為雜訊。

rect
bartlett
rotation
顯示每個聲道幅度的唯一顏色。
hamming
blackman
welch
flattop
bharris
bnuttall
bhann
sine
nuttall
lanczos
gauss
tukey
dolph
cauchy
parzen
poisson
bohman
kaiser

設定顏色旋轉,必須在 [-1.0, 1.0] 範圍內。預設值為 0

magnitude

phase

增益 (gain)

magnitude

設定處理音訊時要使用的聲道。預設情況下,所有聲道都會被處理。

rate,fps,r

設定用於渲染的 SOFA 檔案。

設定將在輸出中使用的最大強度。

start

delay

stop

預設值為 magnitude

將立體聲輸入音訊轉換為視訊輸出,表示兩個聲道之間的空間關係。

size,s

limit

指定輸出的視訊尺寸。有關此選項的語法,請查看 (ffmpeg-utils) 手冊中的「視訊尺寸」章節。預設值為 512x512

color

window_func

18.27.1 範例

  • 設定輸出影格率。
    ffmpeg -i audio.flac -lavfi showspectrumpic=s=1024x1024 spectrogram.png
    

18.28 showvolume

showwaves

濾鏡接受以下選項

繪製框的寬度和高度。

將輸入音訊轉換為視訊輸出,表示音訊頻譜。

b

slide

f

指定頻譜應如何沿視窗滑動。

h

replace

nb_channels

取樣到達右側時,從左側重新開始

c

scroll

取樣從右向左滾動

fullframe

fullframe

僅當取樣到達右側時才產生影格

rscroll

取樣從左向右滾動

lreplace

設定傳輸表達式。

lreplace

設定 V/Cr 組件表達式

取樣到達左側時,從右側重新開始

o

預設值為 replace

s

mode

sn

指定顯示模式。

m

combined

separate

所有聲道都顯示在同一行中

所有聲道都顯示在不同的行中

預設值為 ‘combined’。

color

指定顯示顏色模式。

18.29 showwaves

channel

濾鏡接受以下選項

size, s

channel

mode

每個聲道都以不同的顏色顯示

提升高於偵測臨界值的頻率。

intensity

intensity

設定框邊緣厚度的表達式。值 fill 將建立一個填充框。預設值為 3

每個聲道都使用相同的配色方案顯示

rainbow

rainbow

每個聲道都使用彩虹配色方案顯示

moreland

moreland

n

每個聲道都使用莫爾蘭配色方案顯示

繪製框的寬度和高度。

nebulae

nebulae

每個聲道都使用星雲配色方案顯示

mgain

fire

scale

設定振幅比例。

提升高於偵測臨界值的頻率。

lin

線性。

log

對數。

sqrt

平方根。

cbrt

立方根。

fire

draw

每個聲道都使用火焰配色方案顯示

提升高於偵測臨界值的頻率。

fiery

每個聲道都使用火熱配色方案顯示

full

fruit

fruit

18.29.1 範例

  • 每個聲道都使用水果配色方案顯示
    amovie=a.mp3,asplit[out0],showwaves[out1]
    
  • cool
    aevalsrc=sin(1*2*PI*t)*sin(880*2*PI*t):cos(2*PI*200*t),asplit[out0],showwaves=r=30[out1]
    

18.30 showwavespic

每個聲道都使用冷色配色方案顯示

濾鏡接受以下選項

size, s

channel

nebulae

每個聲道都使用星雲配色方案顯示

mgain

fire

scale

設定振幅比例。

提升高於偵測臨界值的頻率。

lin

線性。

log

對數。

sqrt

平方根。

cbrt

立方根。

fire

draw

magma

提升高於偵測臨界值的頻率。

fiery

每個聲道都使用火熱配色方案顯示

full

fruit

fruit

filter

每個聲道都使用岩漿配色方案顯示

提升高於偵測臨界值的頻率。

average

green

listen

每個聲道都使用綠色配色方案顯示

viridis

18.30.1 範例

  • 每個聲道都使用 viridis 配色方案顯示
    ffmpeg -i audio.flac -lavfi showwavespic=split_channels=1:s=1024x800 waveform.png
    

18.31 sidedata, asidedata

plasma

此濾波器還能夠拉伸/壓縮音訊資料以使其與時間戳記匹配,或注入靜音/剪切音訊以使其與時間戳記匹配,執行兩者的組合或兩者都不執行。

mode

操作幀中繼資料。

設定單聲道和反相聲道之間的立體聲基礎。預設值為 0。允許範圍為 -1 到 1。

設定濾鏡的操作模式。

每個聲道都使用電漿配色方案顯示

修改已存在的金鑰的值。

cividis

將第二個聲道延遲 500 個樣本,將第三個聲道延遲 700 個樣本,並保持第一個聲道(和可能存在的任何其他聲道)不變。

每個聲道都使用 cividis 配色方案顯示

18.32 spectrumsynth

terrain

terrain

濾鏡接受以下選項

sample_rate

每個聲道都使用地形配色方案顯示

取樣率

預設值為 ‘channel’。

scale

scale

replace

指定用於計算強度顏色的比例值。

win_func

sqrt

overlap

顯示每個立體聲差異的唯一顏色。

magnitude

平方根,預設值

18.32.1 範例

  • 4thrt
    ffmpeg -i input.flac -lavfi showspectrum=mode=separate:scale=log:overlap=0.875:color=channel:slide=fullframe:data=magnitude -an -c:v rawvideo magnitude.nut
    ffmpeg -i input.flac -lavfi showspectrum=mode=separate:scale=lin:overlap=0.875:color=channel:slide=fullframe:data=phase -an -c:v rawvideo phase.nut
    ffmpeg -i magnitude.nut -i phase.nut -lavfi spectrumsynth=channels=2:sample_rate=44100:win_func=hann:overlap=0.875:slide=fullframe output.flac
    

18.33 split, asplit

4thrt

四次方根

5thrt

18.33.1 範例

  • 5thrt
    [in] split [out0][out1]
    
  • 五次方根
    [in] asplit=3 [out0][out1][out2]
    
  • 預設值為 ‘sqrt’。
    [in] split [splitout1][splitout2];
    [splitout1] crop=100:100:0:0    [cropout];
    [splitout2] pad=200:200:100:100 [padout];
    
  • fscale
    ffmpeg -i INPUT -filter_complex asplit=5 OUTPUT
    

18.34 zmq, azmq

指定頻率比例。

lin

log

預設值為 ‘lin’。

saturation

設定顯示顏色的飽和度修飾符。負值提供替代配色方案。0 表示完全沒有飽和度。飽和度必須在 [-10.0, 10.0] 範圍內。預設值為 1

TARGET COMMAND [ARG]

orientation

IH

設定時間與頻率軸的方向。可以是 vertical(垂直)或 horizontal(水平)。預設值為 vertical

overlap

ERROR_CODE ERROR_REASON
MESSAGE

設定重疊視窗的比率。預設值為 0。當值為 1 時,重疊會設定為目前使用的特定視窗函數的建議大小。

18.34.1 範例

gain

設定用於計算強度顏色的比例增益。預設值為 1

ffplay -dumpgraph 1 -f lavfi "
color=s=100x100:c=red  [l];
color=s=100x100:c=blue [r];
nullsrc=s=200x100, zmq [bg];
[bg][l]   overlay     [bg+l];
[bg+l][r] overlay@my=x=100 "

data

echo Parsed_color_0 c yellow | tools/zmqsend

設定要顯示的數據。可以是 magnitude(幅度,預設值)或 phase(相位),或展開相位:uphase

echo Parsed_color_1 c pink | tools/zmqsend

start

echo overlay@my x 150 | tools/zmqsend

19 多媒體來源

設定顯示頻譜圖的起始頻率。預設值為 0

19.1 amovie

stop

19.2 avsynctest

設定顯示頻譜圖的停止頻率。預設值為 0

fpsmax

設定視窗長度,以樣本為單位。預設值為 2048。允許範圍為 32 到 65536。

size, s

設定影格率上限。預設值為 auto,無限制。

legend

繪製時間軸和頻率軸以及圖例。預設為停用。

drange

設定用於計算強度顏色的動態範圍。預設值為 120 dBFS。允許的範圍是從 10 到 200。

amplitude, a

max_val

設定輸入音訊取樣音量上限,單位為 dBFS。預設值為 0 dBFS。允許的範圍是從 -100 到 100。

opacity

當使用帶有 alpha 分量的像素格式輸出時,設定不透明度強度。

其用法與 showwaves 濾鏡非常相似;請參閱該章節中的範例。

具有對數顏色縮放的大視窗

使用 ffplay 實現每個聲道的彩色滑動頻譜的完整範例

duration, d

showwavespic

將輸入音訊轉換為單個視訊影格,表示音訊頻譜。

size,s

19.2.1 指令

此來源支援上述某些選項作為 指令

19.3 movie

指定輸出的視訊尺寸。有關此選項的語法,請查看 (ffmpeg-utils) 手冊中的「視訊尺寸」章節。預設值為 4096x2048

它接受以下參數

ry

colors

顏色模式。

intensity

預設值為 ‘intensity’。

scale

預設值為 ‘log’。

legend

stream_index,si

繪製時間軸和頻率軸以及圖例。預設為啟用。

loop

使用 ffmpeg 在 1024x1024 圖片中提取整個音軌的音訊頻譜圖

showvolume

將輸入音訊音量轉換為視訊輸出。

rate,fps,r

設定視訊速率。

borderw

設定邊框寬度,允許的範圍是 [0, 5]。預設值為 1。

chwidth

ffplay -f lavfi
"movie=filename='1.sdp':format_opts='protocol_whitelist=file,rtp,udp\:protocol_blacklist=http'"

設定聲道寬度,允許的範圍是 [80, 8192]。預設值為 400。

input -----------> deltapts0 --> overlay --> output
                                    ^
                                    |
movie --> scale--> deltapts1 -------+

19.3.1 範例

  • chheight
    movie=in.avi:seek_point=3.2, scale=180:-1, setpts=PTS-STARTPTS [over];
    [in] setpts=PTS-STARTPTS [main];
    [main][over] overlay=16:16 [out]
    
  • 設定聲道高度,允許的範圍是 [1, 900]。預設值為 20。
    movie=/dev/video0:f=video4linux2, scale=180:-1, setpts=PTS-STARTPTS [over];
    [in] setpts=PTS-STARTPTS [main];
    [main][over] overlay=16:16 [out]
    
  • fade
    movie=dvd.vob:s=v:0+#0x81 [video] [audio]
    

19.3.2 指令

設定淡化,允許的範圍是 [0, 1]。預設值為 0.95。

color

設定音量顏色表達式。

  • 表達式可以使用以下變數
  • VOLUME
  • 聲道當前最大音量,單位為 dB。
PEAK

當前峰值。

20 另請參閱

CHANNEL

21 作者

當前聲道編號,從 0 開始。

display_chname

如果設定,則顯示聲道名稱。預設為啟用。

display_volume

如果設定,則顯示音量值。預設為啟用。