ffprobe 文件

目錄

1 概要

ffprobe [options] input_url

2 描述

ffprobe 從多媒體串流收集資訊,並以人類和機器可讀的方式列印出來。

例如,它可以用於檢查多媒體串流所使用的容器格式,以及其中包含的每個媒體串流的格式和類型。

如果在輸入中指定了 URL,ffprobe 將嘗試打開並探測 URL 內容。如果 URL 無法打開或無法識別為多媒體檔案,則會傳回正的結束代碼。

如果沒有使用 o 指定輸出,ffprobe 將寫入標準輸出。

ffprobe 可以作為獨立應用程式使用,或與文字篩選器結合使用,以執行更複雜的處理,例如統計處理或繪圖。

選項用於列出 ffprobe 支援的某些格式,或用於指定要顯示哪些資訊,以及設定 ffprobe 將如何顯示這些資訊。

ffprobe 的輸出設計為易於被文字篩選器解析,並且由一個或多個區段組成,這些區段的形式由選定的寫入器定義,而寫入器由 <samp>output_format</samp> 選項指定。

區段可能包含其他巢狀區段,並通過名稱(可能與其他區段共享)和唯一名稱來識別。請參閱 <samp>sections</samp> 的輸出。

儲存在容器或串流中的元數據標籤會被識別,並印在相應的 "FORMAT"、"STREAM"、"STREAM_GROUP_STREAM" 或 "PROGRAM_STREAM" 區段中。

3 選項

所有數值選項,除非另有說明,否則都接受表示數字的字串作為輸入,字串後面可以跟隨 SI 單位前綴之一,例如:'K'、'M' 或 'G'。

如果在 SI 單位前綴後附加 'i',則完整的前綴將被解釋為二進制倍數的單位前綴,二進制倍數基於 1024 的冪,而不是 1000 的冪。在 SI 單位前綴後附加 'B' 會將該值乘以 8。這允許使用,例如:'KB'、'MiB'、'G' 和 'B' 作為數字後綴。

不帶參數的選項是布林選項,並將相應的值設定為 true。可以通過在選項名稱前加上 "no" 將其設定為 false。例如,使用 "-nofoo" 將把名為 "foo" 的布林選項設定為 false。

帶參數的選項支援一種特殊語法,其中在命令列上給定的參數被解釋為檔案路徑,實際的參數值從該檔案載入。要使用此功能,請在選項名稱前(在開頭的破折號之後)立即添加正斜線 '/'。例如:

ffmpeg -i INPUT -/filter:v filter.script OUTPUT

將從名為 <samp>filter.script</samp> 的檔案載入濾鏡圖描述。

3.1 串流指定器

某些選項是針對每個串流應用的,例如位元率或編解碼器。串流指定符用於精確指定給定選項屬於哪個或哪些串流。

串流指定符是一個字串,通常附加在選項名稱之後,並用冒號與之分隔。例如,-codec:a:1 ac3 包含 a:1 串流指定符,它匹配第二個音訊串流。因此,它將為第二個音訊串流選擇 ac3 編解碼器。

一個串流指定符可以匹配多個串流,以便該選項應用於所有這些串流。例如,-b:a 128k 中的串流指定符匹配所有音訊串流。

空串流指定符匹配所有串流。例如,-codec copy-codec: copy 將複製所有串流,而無需重新編碼。

串流指定符的可能形式有

stream_index

匹配具有此索引的串流。例如,-threads:1 4 會將第二個串流的執行緒計數設定為 4。如果 stream_index 用作附加串流指定符(見下文),則它從匹配的串流中選擇串流編號 stream_index。串流編號基於 libavformat 檢測到的串流順序,除非同時指定了串流群組指定符或節目 ID。在這種情況下,它基於群組或節目中串流的順序。

stream_type[:additional_stream_specifier]

stream_type 是以下之一:'v' 或 'V' 代表視訊,'a' 代表音訊,'s' 代表字幕,'d' 代表數據,以及 't' 代表附件。'v' 匹配所有視訊串流,'V' 僅匹配非附加圖片、視訊縮圖或封面藝術的視訊串流。如果使用了 additional_stream_specifier,則它匹配既具有此類型又匹配 additional_stream_specifier 的串流。否則,它匹配指定類型的所有串流。

g:group_specifier[:additional_stream_specifier]

匹配屬於具有指定符 group_specifier 的群組的串流。如果使用了 additional_stream_specifier,則它匹配既是群組的一部分又匹配 additional_stream_specifier 的串流。group_specifier 可以是以下之一

group_index

匹配具有此群組索引的串流。

#group_id 或 i:group_id

匹配具有此群組 ID 的串流。

p:program_id[:additional_stream_specifier]

匹配屬於具有 ID program_id 的節目的串流。如果使用了 additional_stream_specifier,則它匹配既是節目的一部分又匹配 additional_stream_specifier 的串流。

#stream_id 或 i:stream_id

通過串流 ID 匹配串流(例如 MPEG-TS 容器中的 PID)。

m:key[:value]

匹配具有元數據標籤 key 且值為指定值的串流。如果未給出 value,則匹配包含具有任何值的給定標籤的串流。<var>key</var><var>value</var> 中的冒號字元 ':' 需要使用反斜線跳脫。

disp:dispositions[:additional_stream_specifier]

匹配具有給定 disposition(s) 的串流。dispositions 是由一個或多個 disposition(由 <samp>-dispositions</samp> 選項印出)組成的列表,並以 '+' 連接。

u

匹配具有可用配置的串流,編解碼器必須已定義,並且必須存在基本資訊,例如視訊尺寸或音訊採樣率。

請注意,在 ffmpeg 中,通過元數據進行匹配僅適用於輸入檔案。

3.2 通用選項

這些選項在 ff* 工具之間共享。

-L

顯示許可證。

-h, -?, -help, --help [arg]

顯示說明。可以指定可選參數以印出關於特定項目的說明。如果未指定參數,則僅顯示基本(非進階)工具選項。

arg 的可能值為

long

除了基本工具選項外,還印出進階工具選項。

full

印出完整的選項列表,包括編碼器、解碼器、解多工器、多工器、濾鏡等的共享和私有選項。

decoder=decoder_name

印出關於名為 decoder_name 的解碼器的詳細資訊。使用 <samp>-decoders</samp> 選項來取得所有解碼器的列表。

encoder=encoder_name

印出關於名為 encoder_name 的編碼器的詳細資訊。使用 <samp>-encoders</samp> 選項來取得所有編碼器的列表。

demuxer=demuxer_name

印出關於名為 demuxer_name 的解多工器的詳細資訊。使用 <samp>-formats</samp> 選項來取得所有解多工器和多工器的列表。

muxer=muxer_name

印出關於名為 muxer_name 的多工器的詳細資訊。使用 <samp>-formats</samp> 選項來取得所有多工器和解多工器的列表。

filter=filter_name

印出關於名為 filter_name 的濾鏡的詳細資訊。使用 <samp>-filters</samp> 選項來取得所有濾鏡的列表。

bsf=bitstream_filter_name

印出關於名為 bitstream_filter_name 的位元串流濾鏡的詳細資訊。使用 <samp>-bsfs</samp> 選項來取得所有位元串流濾鏡的列表。

protocol=protocol_name

印出關於名為 protocol_name 的協議的詳細資訊。使用 <samp>-protocols</samp> 選項來取得所有協議的列表。

-version

顯示版本。

-buildconf

顯示建置配置,每行一個選項。

-formats

顯示可用的格式(包括設備)。

-demuxers

顯示可用的解多工器。

-muxers

顯示可用的多工器。

-devices

顯示可用的設備。

-codecs

顯示 libavcodec 已知的所有編解碼器。

請注意,在整個文檔中,「編解碼器」一詞被用作更正確的術語「媒體位元串流格式」的簡稱。

-decoders

顯示可用的解碼器。

-encoders

顯示所有可用的編碼器。

-bsfs

顯示可用的位元串流濾鏡。

-protocols

顯示可用的協議。

-filters

顯示可用的 libavfilter 濾鏡。

-pix_fmts

顯示可用的像素格式。

-sample_fmts

顯示可用的採樣格式。

-layouts

顯示聲道名稱和標準聲道佈局。

-dispositions

顯示串流 disposition。

-colors

顯示已識別的顏色名稱。

-sources device[,opt1=val1[,opt2=val2]...]

顯示輸入設備的自動偵測來源。某些設備可能提供無法自動偵測的系統相關來源名稱。返回的列表不能假定總是完整的。

ffmpeg -sources pulse,server=192.168.0.4
-sinks device[,opt1=val1[,opt2=val2]...]

顯示輸出設備的自動偵測接收器。某些設備可能提供無法自動偵測的系統相關接收器名稱。返回的列表不能假定總是完整的。

ffmpeg -sinks pulse,server=192.168.0.4
-loglevel [flags+]loglevel | -v [flags+]loglevel

設定日誌記錄級別和庫使用的標誌。

可選的 flags 前綴可以包含以下值

<samp>repeat</samp>

指示重複的日誌輸出不應壓縮到第一行,並且將省略「最後一條訊息重複 n 次」行。

<samp>level</samp>

指示日誌輸出應在每條訊息行前添加 [level] 前綴。這可以用作日誌著色的替代方案,例如在將日誌轉儲到檔案時。

標誌也可以單獨使用,方法是添加 '+'/'-' 前綴來設定/重置單個標誌,而不會影響其他 flags 或更改 loglevel。當同時設定 flagsloglevel 時,預期在最後一個 flags 值和 loglevel 之前使用 '+' 分隔符。

loglevel 是一個字串或數字,包含以下值之一

<samp>quiet, -8</samp>

完全不顯示任何內容;保持靜音。

<samp>panic, 0</samp>

僅顯示可能導致進程崩潰的致命錯誤,例如斷言失敗。目前沒有用於任何用途。

<samp>fatal, 8</samp>

僅顯示致命錯誤。這些是進程絕對無法繼續的錯誤。

<samp>error, 16</samp>

顯示所有錯誤,包括可以恢復的錯誤。

<samp>warning, 24</samp>

顯示所有警告和錯誤。將顯示與可能不正確或意外事件相關的任何訊息。

<samp>info, 32</samp>

在處理期間顯示資訊性訊息。這是除了警告和錯誤之外的訊息。這是預設值。

<samp>verbose, 40</samp>

info 相同,但更詳細。

<samp>debug, 48</samp>

顯示所有內容,包括偵錯資訊。

<samp>trace, 56</samp>

例如,要啟用重複的日誌輸出,添加 level 前綴,並將 loglevel 設定為 verbose

ffmpeg -loglevel repeat+level+verbose -i input output

另一個範例,它啟用重複的日誌輸出,而不會影響 level 前綴標誌或 loglevel 的當前狀態

ffmpeg [...] -loglevel +repeat

預設情況下,程式將日誌記錄到 stderr。如果終端機支援著色,則顏色用於標記錯誤和警告。可以通過設定環境變數 AV_LOG_FORCE_NOCOLOR 來禁用日誌著色,或者可以通過設定環境變數 AV_LOG_FORCE_COLOR 來強制啟用。

-report

將完整命令列和日誌輸出轉儲到當前目錄中名為 <var>program</var>-<var>YYYYMMDD</var>-<var>HHMMSS</var>.log 的檔案。此檔案對於錯誤報告很有用。它也暗示了 -loglevel debug

將環境變數 FFREPORT 設定為任何值都具有相同的效果。如果該值是以 ':' 分隔的 key=value 序列,則這些選項將影響報告;如果選項值包含特殊字元或選項分隔符 ':',則必須對其進行跳脫(請參閱 ffmpeg-utils 手冊中的「引號和跳脫」章節)。

識別以下選項

file

設定用於報告的檔案名稱;%p 擴展為程式的名稱,%t 擴展為時間戳記,%% 擴展為純 %

level

使用數值設定日誌詳細程度級別(請參閱 -loglevel)。

例如,要使用日誌級別 32(日誌級別 info 的別名)將報告輸出到名為 <samp>ffreport.log</samp> 的檔案

FFREPORT=file=ffreport.log:level=32 ffmpeg -i input output

解析環境變數時發生的錯誤不是致命的,並且不會出現在報告中。

-hide_banner

抑制印出橫幅。

所有 FFmpeg 工具通常都會顯示版權聲明、建置選項和庫版本。此選項可用於抑制印出此資訊。

-cpuflags flags (全域)

允許設定和清除 CPU 標誌。此選項旨在用於測試。除非您知道自己在做什麼,否則請勿使用它。

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

此選項的可能標誌為

<samp>x86</samp>
<samp>mmx</samp>
<samp>mmxext</samp>
<samp>sse</samp>
<samp>sse2</samp>
<samp>sse2slow</samp>
<samp>sse3</samp>
<samp>sse3slow</samp>
<samp>ssse3</samp>
<samp>atom</samp>
<samp>sse4.1</samp>
<samp>sse4.2</samp>
<samp>avx</samp>
<samp>avx2</samp>
<samp>xop</samp>
<samp>fma3</samp>
<samp>fma4</samp>
<samp>3dnow</samp>
<samp>3dnowext</samp>
<samp>bmi1</samp>
<samp>bmi2</samp>
<samp>cmov</samp>
<samp>ARM</samp>
<samp>armv5te</samp>
<samp>armv6</samp>
<samp>armv6t2</samp>
<samp>vfp</samp>
<samp>vfpv3</samp>
<samp>neon</samp>
<samp>setend</samp>
<samp>AArch64</samp>
<samp>armv8</samp>
<samp>vfp</samp>
<samp>neon</samp>
<samp>PowerPC</samp>
<samp>altivec</samp>
<samp>Specific Processors</samp>
<samp>pentium2</samp>
<samp>pentium3</samp>
<samp>pentium4</samp>
<samp>k6</samp>
<samp>k62</samp>
<samp>athlon</samp>
<samp>athlonxp</samp>
<samp>k8</samp>
-cpucount count (全域)

覆蓋 CPU 計數的偵測。此選項旨在用於測試。除非您知道自己在做什麼,否則請勿使用它。

ffmpeg -cpucount 2
-max_alloc bytes

設定 ffmpeg 的 malloc 函數族在堆積上分配區塊的最大大小限制。使用此選項時請極其謹慎。如果您不了解這樣做的全部後果,請勿使用。預設值為 INT_MAX。

3.3 AVOptions

這些選項由 libavformat、libavdevice 和 libavcodec 庫直接提供。要查看可用 AVOptions 的列表,請使用 <samp>-help</samp> 選項。它們分為兩個類別

generic

這些選項可以為任何容器、編解碼器或設備設定。通用選項列在容器/設備的 AVFormatContext 選項下,以及編解碼器的 AVCodecContext 選項下。

private

這些選項特定於給定的容器、設備或編解碼器。私有選項列在其對應的容器/設備/編解碼器下。

例如,若要將 ID3v2.3 標頭寫入 MP3 檔案,而不是預設的 ID3v2.4,請使用 MP3 混音器的 id3v2_version 私有選項

ffmpeg -i input.flac -id3v2_version 3 out.mp3

所有編解碼器 AVOptions 都是針對每個串流的,因此應將串流指定器附加到它們

ffmpeg -i multichannel.mxf -map 0:v:0 -map 0:a:0 -map 0:a:0 -c:a:0 ac3 -b:a:0 640k -ac:a:1 2 -c:a:1 aac -b:2 128k out.mp4

在上述範例中,多聲道音訊串流被對應輸出兩次。第一個實例使用編解碼器 ac3 和位元率 640k 進行編碼。第二個實例被降混為 2 個聲道,並使用編解碼器 aac 進行編碼。使用輸出串流的絕對索引為其指定了 128k 的位元率。

注意:-nooption 語法不能用於布林 AVOptions,請使用 -option 0/-option 1

注意:過去未記錄的透過在選項名稱前加上 v/a/s 來指定每個串流 AVOptions 的方式現已過時,並將很快移除。

3.4 主要選項

-f format

強制使用的格式。

-unit

顯示顯示值的單位。

-prefix

對顯示值使用 SI 前綴。除非使用 "-byte_binary_prefix" 選項,否則所有前綴都是十進制。

-byte_binary_prefix

強制對位元組值使用二進制前綴。

-sexagesimal

對時間值使用六十進制格式 HH:MM:SS.MICROSECONDS。

-pretty

美化顯示值的格式,它對應於選項 "-unit -prefix -byte_binary_prefix -sexagesimal"。

-output_format, -of, -print_format writer_name[=writer_options]

設定輸出列印格式。

writer_name 指定寫入器的名稱,而 writer_options 指定要傳遞給寫入器的選項。

例如,若要以 JSON 格式列印輸出,請指定

-output_format json

有關可用輸出列印格式的更多詳細資訊,請參閱下方的「寫入器」章節。

-sections

列印章節結構和章節資訊,然後退出。輸出並非旨在由機器解析。

-select_streams stream_specifier

僅選取由 stream_specifier 指定的串流。此選項僅影響與串流相關的選項(例如 show_streamsshow_packets 等)。

例如,若要僅顯示音訊串流,您可以使用以下命令

ffprobe -show_streams -select_streams a INPUT

若要僅顯示索引為 1 的視訊串流的視訊封包

ffprobe -show_packets -select_streams v:1 INPUT
-show_data

以十六進制和 ASCII 轉儲顯示酬載資料。與 -show_packets 搭配使用時,它將轉儲封包的資料。與 -show_streams 搭配使用時,它將轉儲編解碼器額外資料。

轉儲會以 "data" 欄位列印。它可能包含換行符號。

-show_data_hash algorithm

顯示酬載資料的雜湊值,適用於使用 -show_packets 的封包以及使用 -show_streams 的編解碼器額外資料。

-show_error

顯示嘗試探測輸入時發現的錯誤相關資訊。

錯誤資訊會列印在名稱為 "ERROR" 的章節中。

-show_format

顯示有關輸入多媒體串流容器格式的資訊。

所有容器格式資訊都會列印在名稱為 "FORMAT" 的章節中。

-show_format_entry name

-show_format 類似,但僅列印容器格式資訊的指定項目,而不是全部。可以多次給定此選項,然後將顯示所有指定的項目。

此選項已棄用,請改用 show_entries

-show_entries section_entries

設定要顯示的項目列表。

項目根據以下語法指定。section_entries 包含以 : 分隔的章節項目列表。每個章節項目由章節名稱(或唯一名稱)組成,後面可選擇性地跟隨以 , 分隔的該章節的本地項目列表。

如果指定了章節名稱,但後面沒有 =,則會將所有項目連同所有包含的章節一起列印到輸出。否則,僅列印本地章節項目列表中指定的項目。特別是,如果指定了 =,但本地項目列表為空,則不會顯示該章節的任何項目。

請注意,本地章節項目的指定順序在輸出中不受尊重,並且將保留通常的顯示順序。

正式語法由以下給出

LOCAL_SECTION_ENTRIES ::= SECTION_ENTRY_NAME[,LOCAL_SECTION_ENTRIES]
SECTION_ENTRY         ::= SECTION_NAME[=[LOCAL_SECTION_ENTRIES]]
SECTION_ENTRIES       ::= SECTION_ENTRY[:SECTION_ENTRIES]

例如,若要僅顯示每個串流的索引和類型,以及封包的 PTS 時間、持續時間時間和串流索引,您可以指定參數

packet=pts_time,duration_time,stream_index : stream=index,codec_type

若要顯示 "format" 章節中的所有項目,但僅顯示 "stream" 章節中的編解碼器類型,請指定參數

format : stream=codec_type

若要顯示串流和格式章節中的所有標籤

stream_tags : format_tags

若要僅顯示串流章節中的 title 標籤(如果可用)

stream_tags=title
-show_packets

顯示有關輸入多媒體串流中包含的每個封包的資訊。

每個封包的資訊都列印在名稱為 "PACKET" 的專用章節中。

-show_frames

顯示有關輸入多媒體串流中包含的每個影格和字幕的資訊。

每個影格的資訊都列印在名稱為 "FRAME" 或 "SUBTITLE" 的專用章節中。

-show_log loglevel

根據 loglevel 中設定的值(請參閱 -loglevel),顯示來自解碼器有關每個影格的記錄資訊。此選項需要 -show_frames

每個記錄訊息的資訊都列印在名稱為 "LOG" 的專用章節中。

-show_streams

顯示有關輸入多媒體串流中包含的每個媒體串流的資訊。

每個媒體串流資訊都列印在名稱為 "STREAM" 的專用章節中。

-show_programs

顯示有關節目及其輸入多媒體串流中包含的串流的資訊。

每個媒體串流資訊都列印在名稱為 "PROGRAM_STREAM" 的專用章節中。

-show_stream_groups

顯示有關串流群組及其輸入多媒體串流中包含的串流的資訊。

每個媒體串流資訊都列印在名稱為 "STREAM_GROUP_STREAM" 的專用章節中。

-show_chapters

顯示有關格式中儲存的章節的資訊。

每個章節都列印在名稱為 "CHAPTER" 的專用章節中。

-count_frames

計算每個串流的影格數量,並在對應的串流章節中報告它。

-count_packets

計算每個串流的封包數量,並在對應的串流章節中報告它。

-read_intervals read_intervals

僅讀取指定的間隔。read_intervals 必須是以逗號 "," 分隔的間隔規格序列。 ffprobe 將搜尋到間隔起點,並從該處繼續讀取。

每個間隔由兩個可選部分指定,以 "%" 分隔。

第一部分指定間隔開始位置。如果它前面有 "+" 字元,則將其解釋為絕對位置,或相對於目前位置的偏移量。如果未指定第一部分,則在讀取此間隔時不會執行搜尋。

第二部分指定間隔結束位置。如果它前面有 "+" 字元,則將其解釋為絕對位置,或相對於目前位置的偏移量。如果偏移量規格以 "#" 開頭,則將其解釋為從間隔開始讀取的封包數量(不包括刷新封包)。如果未指定第二部分,程式將讀取到輸入結束。

請注意,搜尋並不精確,因此實際間隔起點可能與指定位置不同。此外,當指定間隔持續時間時,絕對結束時間將通過將持續時間添加到搜尋檔案找到的間隔起點來計算,而不是添加到指定的開始值。

正式語法由以下給出

INTERVAL  ::= [START|+START_OFFSET][%[END|+END_OFFSET]]
INTERVALS ::= INTERVAL[,INTERVALS]

以下是一些範例。

  • 搜尋到時間 10,讀取封包直到找到的搜尋點後 20 秒,然後搜尋到位置 01:30(1 分 30 秒)並讀取封包直到位置 01:45
    10%+20,01:30%01:45
    
  • 僅在搜尋到位置 01:23 後讀取 42 個封包
    01:23%+#42
    
  • 僅從開始讀取前 20 秒
    %+20
    
  • 從開始讀取到位置 02:30
    %02:30
    
-show_private_data, -private

顯示私有資料,即取決於特定顯示元素格式的資料。預設情況下啟用此選項,但您可能需要針對特定用途停用它,例如在建立符合 XSD 的 XML 輸出時。

-show_program_version

顯示與程式版本相關的資訊。

版本資訊會列印在名稱為 "PROGRAM_VERSION" 的章節中。

-show_library_versions

顯示與程式庫版本相關的資訊。

每個程式庫的版本資訊都列印在名稱為 "LIBRARY_VERSION" 的章節中。

-show_versions

顯示與程式和程式庫版本相關的資訊。這相當於同時設定 -show_program_version-show_library_versions 選項。

-show_pixel_formats

顯示有關 FFmpeg 支援的所有像素格式的資訊。

每個格式的像素格式資訊都列印在名稱為 "PIXEL_FORMAT" 的章節中。

-show_optional_fields value

某些寫入器(例如 JSON 和 XML)會省略列印具有無效或不適用值的欄位,而其他寫入器始終列印它們。此選項使您能夠控制此行為。有效值為 always/1never/0auto/-1。預設值為 auto

-analyze_frames

分析影格和/或它們的邊資料,直到提供的讀取間隔,提供可能在串流級別有用的額外資訊。必須與 -show_streams 選項配對使用,否則將不起作用。

目前,啟用此選項時提供的額外欄位是 closed_captionsfilm_grain 欄位。

例如,若要分析前 20 秒並填充這些欄位

ffprobe -show_streams -analyze_frames -read_intervals "%+20" INPUT
-bitexact

強制位元精確輸出,對於產生不依賴於特定建置的輸出很有用。

-i input_url

讀取 input_url

-o output_url

將輸出寫入 output_url。如果未指定,則輸出會傳送到 stdout。

4 寫入器

寫入器定義了 ffprobe 採用的輸出格式,並將用於列印輸出的所有部分。

寫入器可以接受一個或多個參數,這些參數指定要採用的選項。這些選項指定為 key=value 對的列表,以 ":" 分隔。

所有寫入器都支援以下選項

string_validation, sv

設定字串驗證模式。

接受以下值。

fail

如果在輸入中找到無效字串 (UTF-8) 序列或程式碼點,寫入器將立即失敗。這對於驗證輸入元資料特別有用。

ignore

將忽略任何驗證錯誤。這可能會導致輸出損壞,尤其是使用 json 或 xml 寫入器時。

replace

寫入器將使用 string_validation_replacement 指定的字串替換無效的 UTF-8 序列或程式碼點。

預設值為 ‘replace’。

string_validation_replacement, svr

設定在 string_validation 設定為 ‘replace’ 時要使用的替換字串。

如果未指定選項,則寫入器將假定為空字串,也就是說,它將從輸入字串中刪除無效序列。

以下是目前可用的寫入器的描述。

4.1 預設

預設格式。

以以下形式列印每個章節

[SECTION]
key1=val1
...
keyN=valN
[/SECTION]

元資料標籤以單行形式列印在對應的 FORMAT、STREAM、STREAM_GROUP_STREAM 或 PROGRAM_STREAM 章節中,並以字串 "TAG:" 作為前綴。

以下是接受選項的描述。

nokey, nk

如果設定為 1,則指定不列印每個欄位的鍵。預設值為 0。

noprint_wrappers, nw

如果設定為 1,則指定不列印章節標頭和頁尾。預設值為 0。

4.2 compact, csv

精簡和 CSV 格式。

csv 寫入器等效於 compact,但支援不同的預設值。

每個章節都列印在單行上。如果未指定選項,則輸出形式為

section|key1=val1| ... |keyN=valN

元資料標籤列印在對應的 "format" 或 "stream" 章節中。元資料標籤鍵(如果列印)以字串 "tag:" 作為前綴。

以下是接受選項的描述。

item_sep, s

指定用於分隔輸出行的欄位的字元。它必須是單個可列印字元,預設情況下為 "|"(csv 寫入器為 ",")。

nokey, nk

如果設定為 1,則指定不列印每個欄位的鍵。其預設值為 0(csv 寫入器為 1)。

escape, e

設定要使用的逸出模式,預設為 "c"(csv 寫入器為 "csv")。

它可以採用以下值之一

c

執行類似 C 的逸出。包含換行符號 (‘\n’)、歸位符號 (‘\r’)、制表符號 (‘\t’)、換頁符號 (‘\f’)、逸出字元 (‘\’) 或項目分隔符號 SEP 的字串會使用類似 C 的方式逸出,因此換行符號會轉換為序列 ‘\n’,歸位符號會轉換為 ‘\r’,‘\’ 會轉換為 ‘\\’,而分隔符號 SEP 會轉換為 ‘\SEP’。

csv

執行類似 CSV 的逸出,如 RFC4180 中所述。包含換行符號 (‘\n’)、歸位符號 (‘\r’)、雙引號 (‘"’) 或 SEP 的字串會用雙引號括起來。

none

不執行逸出。

print_section, p

如果值為 1,則在每行開頭列印章節名稱,如果值設定為 0,則停用它。預設值為 1

4.3 flat

平面格式。

一種自由格式輸出,其中每行都包含顯式的 key=value,例如 "streams.stream.3.tags.foo=bar"。輸出是 shell 逸出的,因此只要分隔符號是字母數字字元或底線 (請參閱 sep_char 選項),它就可以直接嵌入到 sh 腳本中。

以下是接受選項的描述。

sep_char, s

用於分隔已列印欄位鍵中的章節、章節名稱、ID 和潛在標籤的分隔符號。

預設值為 ‘.’。

hierarchical, h

指定章節名稱規格是否應為階層式。如果設定為 1,並且目前章節中有多個章節,則章節名稱將以章節名稱作為前綴。值為 0 將停用此行為。

預設值為 1。

4.4 ini

INI 格式輸出。

以基於 INI 的格式列印輸出。

採用以下慣例

  • 所有鍵和值都是 UTF-8
  • .’ 是子群組分隔符號
  • 換行符號、‘\t’、‘\f’、‘\b’ 和以下字元會被逸出
  • \’ 是逸出字元
  • #’ 是註解指示符
  • =’ 是鍵/值分隔符號
  • :’ 未使用,但通常解析為鍵/值分隔符號

此寫入器接受選項作為 key=value 對的列表,以 ‘:’ 分隔。

以下是接受選項的描述。

hierarchical, h

指定章節名稱規格是否應為階層式。如果設定為 1,並且目前章節中有多個章節,則章節名稱將以章節名稱作為前綴。值為 0 將停用此行為。

預設值為 1。

4.5 json

基於 JSON 的格式。

每個章節都使用 JSON 表示法列印。

以下是接受選項的描述。

compact, c

若設為 1,則啟用精簡輸出,亦即每個區段將會印在單行上。預設值為 0。

關於 JSON 的更多資訊,請參閱 http://www.json.org/

4.6 xml

基於 XML 的格式。

XML 輸出在 XML 結構描述描述檔 ffprobe.xsd 中說明,該檔案安裝於 FFmpeg datadir 中。

結構描述的更新版本可以從網址 http://www.ffmpeg.org/schema/ffprobe.xsd 取得,該網址會重新導向至提交到 FFmpeg 開發原始碼樹狀結構中的最新結構描述。

請注意,只有在未指定特殊全域輸出選項(unitprefixbyte_binary_prefixsexagesimal 等)時,發出的輸出才會符合 ffprobe.xsd 結構描述。

以下是接受選項的描述。

fully_qualified, q

若設為 1,指定輸出是否應為完全限定。預設值為 0。這是在產生可透過 XSD 檔案驗證的 XML 檔案時所必需的。

xsd_strict, x

若設為 1,執行更多檢查以確保輸出符合 XSD。預設值為 0。此選項會自動將 fully_qualified 設為 1。

關於 XML 格式的更多資訊,請參閱 https://www.w3.org/XML/

5 時間碼

ffprobe 支援時間碼擷取

  • MPEG1/2 時間碼從 GOP 擷取,並可在視訊串流詳細資訊中取得(-show_streams,請參閱 timecode)。
  • MOV 時間碼從 tmcd 軌擷取,因此可在 tmcd 串流中繼資料中取得(-show_streams,請參閱 TAG:timecode)。
  • DV、GXF 和 AVI 時間碼可在格式中繼資料中取得(-show_format,請參閱 TAG:timecode)。

6 語法

本節說明 FFmpeg 程式庫和工具所採用的語法和格式。

6.1 引號和跳脫字元

除非另有明確指定,否則 FFmpeg 採用以下引號和跳脫字元機制。適用以下規則

  • '」和「\」是特殊字元(分別用於引號和跳脫字元)。除了它們之外,根據採用跳脫字元和引號的特定語法,可能還有其他特殊字元。
  • 特殊字元透過在其前面加上「\」來跳脫。
  • 括在「''」之間的所有字元都會以字面方式包含在剖析的字串中。引號字元「'」本身無法被引號,因此您可能需要關閉引號並跳脫它。
  • 除非跳脫或引號,否則前導和尾隨空白字元會從剖析的字串中移除。

請注意,當使用命令列或腳本時,您可能需要新增第二層跳脫字元,這取決於採用的 Shell 語言的語法。

定義於 libavutil/avstring.h 中的函式 av_get_token 可用於根據上述規則剖析引號或跳脫的符記。

FFmpeg 原始碼樹狀結構中的工具 tools/ffescape 可用於在腳本中自動引號或跳脫字串。

6.1.1 範例

  • 跳脫包含「'」特殊字元的字串 Crime d'Amour
    Crime d\'Amour
    
  • 上面的字串包含引號,因此在引號時需要跳脫「'
    'Crime d'\''Amour'
    
  • 使用引號包含前導或尾隨空白字元
    '  this string starts and ends with whitespaces  '
    
  • 跳脫字元和引號可以混合使用
    ' The string '\'string\'' is a string '
    
  • 若要包含字面上的「\」,您可以使用跳脫字元或引號
    'c:\foo' can be written as c:\\foo
    

6.2 日期

可接受的語法為

[(YYYY-MM-DD|YYYYMMDD)[T|t| ]]((HH:MM:SS[.m...]]])|(HHMMSS[.m...]]]))[Z]
now

如果值為 "now",則採用目前時間。

時間為當地時間,除非附加 Z,在這種情況下,它會被解釋為 UTC。如果未指定年月日部分,則採用目前的年月日。

6.3 時間長度

有兩種可接受的語法來表示持續時間。

[-][HH:]MM:SS[.m...]

HH 表示小時數,MM 表示分鐘數,最多 2 位數,而 SS 表示秒數,最多 2 位數。結尾的 m 表示 SS 的小數值。

[-]S+[.m...][s|ms|us]

S 表示秒數,帶有可選的小數部分 m。可選的字面後綴「s」、「ms」或「us」表示將值分別解釋為秒、毫秒或微秒。

在這兩種表示式中,可選的「-」表示負持續時間。

6.3.1 範例

以下範例均為有效的持續時間

55

55 秒

0.2

0.2 秒

200ms

200 毫秒,即 0.2 秒

200000us

200000 微秒,即 0.2 秒

12:03:45

12 小時、03 分鐘和 45 秒

23.189

23.189 秒

6.4 影片尺寸

指定來源視訊的大小,它可以是 widthxheight 形式的字串,或是大小縮寫的名稱。

以下縮寫已被識別

ntsc

720x480

pal

720x576

qntsc

352x240

qpal

352x288

sntsc

640x480

spal

768x576

film

352x240

ntsc-film

352x240

sqcif

128x96

qcif

176x144

cif

352x288

4cif

704x576

16cif

1408x1152

qqvga

160x120

qvga

320x240

vga

640x480

svga

800x600

xga

1024x768

uxga

1600x1200

qxga

2048x1536

sxga

1280x1024

qsxga

2560x2048

hsxga

5120x4096

wvga

852x480

wxga

1366x768

wsxga

1600x1024

wuxga

1920x1200

woxga

2560x1600

wqsxga

3200x2048

wquxga

3840x2400

whsxga

6400x4096

whuxga

7680x4800

cga

320x200

ega

640x350

hd480

852x480

hd720

1280x720

hd1080

1920x1080

2k

2048x1080

2kflat

1998x1080

2kscope

2048x858

4k

4096x2160

4kflat

3996x2160

4kscope

4096x1716

nhd

640x360

hqvga

240x160

wqvga

400x240

fwqvga

432x240

hvga

480x320

qhd

960x540

2kdci

2048x1080

4kdci

4096x2160

uhd2160

3840x2160

uhd4320

7680x4320

6.5 影片速率

指定視訊的影格率,以每秒產生的影格數表示。它必須是 frame_rate_num/frame_rate_den 格式的字串、整數、浮點數或有效的視訊影格率縮寫。

以下縮寫已被識別

ntsc

30000/1001

pal

25/1

qntsc

30000/1001

qpal

25/1

sntsc

30000/1001

spal

25/1

film

24/1

ntsc-film

24000/1001

6.6 比例

比率可以用表示式或 numerator:denominator 的形式表示。

請注意,具有無限大 (1/0) 或負值的比率被視為有效,因此如果您想要排除這些值,則應檢查傳回的值。

未定義的值可以使用 "0:0" 字串表示。

6.7 色彩

它可以是如下定義的顏色名稱(不區分大小寫比對)或 [0x|#]RRGGBB[AA] 序列,後面可能跟著 @ 和代表 Alpha 成分的字串。

Alpha 成分可以是字串,由 "0x" 後面跟著十六進位數字或介於 0.0 和 1.0 之間的十進位數字組成,代表不透明度值(「0x00」或「0.0」表示完全透明,「0xff」或「1.0」完全不透明)。如果未指定 Alpha 成分,則假設為「0xff」。

字串「random」將產生隨機顏色。

以下顏色名稱已被識別

AliceBlue

0xF0F8FF

AntiqueWhite

0xFAEBD7

Aqua

0x00FFFF

Aquamarine

0x7FFFD4

Azure

0xF0FFFF

Beige

0xF5F5DC

Bisque

0xFFE4C4

Black

0x000000

BlanchedAlmond

0xFFEBCD

Blue

0x0000FF

BlueViolet

0x8A2BE2

Brown

0xA52A2A

BurlyWood

0xDEB887

CadetBlue

0x5F9EA0

Chartreuse

0x7FFF00

Chocolate

0xD2691E

Coral

0xFF7F50

CornflowerBlue

0x6495ED

Cornsilk

0xFFF8DC

Crimson

0xDC143C

Cyan

0x00FFFF

DarkBlue

0x00008B

DarkCyan

0x008B8B

DarkGoldenRod

0xB8860B

DarkGray

0xA9A9A9

DarkGreen

0x006400

DarkKhaki

0xBDB76B

DarkMagenta

0x8B008B

DarkOliveGreen

0x556B2F

Darkorange

0xFF8C00

DarkOrchid

0x9932CC

DarkRed

0x8B0000

DarkSalmon

0xE9967A

DarkSeaGreen

0x8FBC8F

DarkSlateBlue

0x483D8B

DarkSlateGray

0x2F4F4F

DarkTurquoise

0x00CED1

DarkViolet

0x9400D3

DeepPink

0xFF1493

DeepSkyBlue

0x00BFFF

DimGray

0x696969

DodgerBlue

0x1E90FF

FireBrick

0xB22222

FloralWhite

0xFFFAF0

ForestGreen

0x228B22

Fuchsia

0xFF00FF

Gainsboro

0xDCDCDC

GhostWhite

0xF8F8FF

Gold

0xFFD700

GoldenRod

0xDAA520

Gray

0x808080

Green

0x008000

GreenYellow

0xADFF2F

HoneyDew

0xF0FFF0

HotPink

0xFF69B4

IndianRed

0xCD5C5C

Indigo

0x4B0082

Ivory

0xFFFFF0

Khaki

0xF0E68C

Lavender

0xE6E6FA

LavenderBlush

0xFFF0F5

LawnGreen

0x7CFC00

LemonChiffon

0xFFFACD

LightBlue

0xADD8E6

LightCoral

0xF08080

LightCyan

0xE0FFFF

LightGoldenRodYellow

0xFAFAD2

LightGreen

0x90EE90

LightGrey

0xD3D3D3

LightPink

0xFFB6C1

LightSalmon

0xFFA07A

LightSeaGreen

0x20B2AA

LightSkyBlue

0x87CEFA

LightSlateGray

0x778899

LightSteelBlue

0xB0C4DE

LightYellow

0xFFFFE0

Lime

0x00FF00

LimeGreen

0x32CD32

Linen

0xFAF0E6

Magenta

0xFF00FF

Maroon

0x800000

MediumAquaMarine

0x66CDAA

MediumBlue

0x0000CD

MediumOrchid

0xBA55D3

MediumPurple

0x9370D8

MediumSeaGreen

0x3CB371

MediumSlateBlue

0x7B68EE

MediumSpringGreen

0x00FA9A

MediumTurquoise

0x48D1CC

MediumVioletRed

0xC71585

MidnightBlue

0x191970

MintCream

0xF5FFFA

MistyRose

0xFFE4E1

Moccasin

0xFFE4B5

NavajoWhite

0xFFDEAD

Navy

0x000080

OldLace

0xFDF5E6

Olive

0x808000

OliveDrab

0x6B8E23

Orange

0xFFA500

OrangeRed

0xFF4500

Orchid

0xDA70D6

PaleGoldenRod

0xEEE8AA

PaleGreen

0x98FB98

PaleTurquoise

0xAFEEEE

PaleVioletRed

0xD87093

PapayaWhip

0xFFEFD5

PeachPuff

0xFFDAB9

Peru

0xCD853F

Pink

0xFFC0CB

Plum

0xDDA0DD

PowderBlue

0xB0E0E6

Purple

0x800080

Red

0xFF0000

RosyBrown

0xBC8F8F

RoyalBlue

0x4169E1

SaddleBrown

0x8B4513

Salmon

0xFA8072

SandyBrown

0xF4A460

SeaGreen

0x2E8B57

SeaShell

0xFFF5EE

Sienna

0xA0522D

Silver

0xC0C0C0

SkyBlue

0x87CEEB

SlateBlue

0x6A5ACD

SlateGray

0x708090

Snow

0xFFFAFA

SpringGreen

0x00FF7F

SteelBlue

0x4682B4

Tan

0xD2B48C

Teal

0x008080

Thistle

0xD8BFD8

Tomato

0xFF6347

Turquoise

0x40E0D0

Violet

0xEE82EE

Wheat

0xF5DEB3

White

0xFFFFFF

WhiteSmoke

0xF5F5F5

Yellow

0xFFFF00

YellowGreen

0x9ACD32

6.8 聲道佈局

聲道佈局指定多聲道音訊串流中聲道的空間配置。若要指定聲道佈局,FFmpeg 使用特殊的語法。

個別聲道由 ID 識別,如下表所示

FL

前置左聲道

FR

前置右聲道

FC

前置中央聲道

LFE

低頻聲道

BL

後置左聲道

BR

後置右聲道

FLC

前置偏左中央聲道

FRC

前置偏右中央聲道

BC

後置中央聲道

SL

側邊左

SR

側邊右

TC

頂部中央

TFL

頂部前左

TFC

頂部前中央

TFR

頂部前右

TBL

頂部後左

TBC

頂部後中央

TBR

頂部後右

DL

降混左

DR

降混右

WL

寬廣左

WR

寬廣右

SDL

環繞直接左

SDR

環繞直接右

LFE2

低頻 2

標準聲道佈局組成可以使用以下識別符指定

mono

FC

stereo

FL+FR

2.1

FL+FR+LFE

3.0

FL+FR+FC

3.0(back)

FL+FR+BC

4.0

FL+FR+FC+BC

quad

FL+FR+BL+BR

quad(side)

FL+FR+SL+SR

3.1

FL+FR+FC+LFE

5.0

FL+FR+FC+BL+BR

5.0(side)

FL+FR+FC+SL+SR

4.1

FL+FR+FC+LFE+BC

5.1

FL+FR+FC+LFE+BL+BR

5.1(side)

FL+FR+FC+LFE+SL+SR

6.0

FL+FR+FC+BC+SL+SR

6.0(front)

FL+FR+FLC+FRC+SL+SR

3.1.2

FL+FR+FC+LFE+TFL+TFR

hexagonal

FL+FR+FC+BL+BR+BC

6.1

FL+FR+FC+LFE+BC+SL+SR

6.1

FL+FR+FC+LFE+BL+BR+BC

6.1(front)

FL+FR+LFE+FLC+FRC+SL+SR

7.0

FL+FR+FC+BL+BR+SL+SR

7.0(front)

FL+FR+FC+FLC+FRC+SL+SR

7.1

FL+FR+FC+LFE+BL+BR+SL+SR

7.1(wide)

FL+FR+FC+LFE+BL+BR+FLC+FRC

7.1(wide-side)

FL+FR+FC+LFE+FLC+FRC+SL+SR

5.1.2

FL+FR+FC+LFE+BL+BR+TFL+TFR

octagonal

FL+FR+FC+BL+BR+BC+SL+SR

cube

FL+FR+BL+BR+TFL+TFR+TBL+TBR

5.1.4

FL+FR+FC+LFE+BL+BR+TFL+TFR+TBL+TBR

7.1.2

FL+FR+FC+LFE+BL+BR+SL+SR+TFL+TFR

7.1.4

FL+FR+FC+LFE+BL+BR+SL+SR+TFL+TFR+TBL+TBR

7.2.3

FL+FR+FC+LFE+BL+BR+SL+SR+TFL+TFR+TBC+LFE2

9.1.4

FL+FR+FC+LFE+BL+BR+FLC+FRC+SL+SR+TFL+TFR+TBL+TBR

9.1.6

FL+FR+FC+LFE+BL+BR+FLC+FRC+SL+SR+TFL+TFR+TBL+TBR+TSL+TSR

hexadecagonal

FL+FR+FC+BL+BR+BC+SL+SR+WL+WR+TBL+TBR+TBC+TFC+TFL+TFR

binaural

BIL+BIR

downmix

DL+DR

22.2

FL+FR+FC+LFE+BL+BR+FLC+FRC+BC+SL+SR+TC+TFL+TFC+TFR+TBL+TBC+TBR+LFE2+TSL+TSR+BFC+BFL+BFR

自訂聲道佈局可以指定為一連串由 ’+’ 分隔的詞彙。每個詞彙可以是

  • 單一聲道的名稱 (例如 ‘FL’、‘FR’、‘FC’、‘LFE’ 等),每個聲道名稱可以選擇性地在 ’@’ 後面包含自訂名稱,(例如 ‘FL@Left’、‘FR@Right’、‘FC@Center’、‘LFE@Low_Frequency’ 等)

標準聲道佈局可以由以下方式指定

  • 單一聲道的名稱 (例如 ‘FL’、‘FR’、‘FC’、‘LFE’ 等)
  • 標準聲道佈局的名稱 (例如 ‘mono’、‘stereo’、‘4.0’、‘quad’、‘5.0’ 等)
  • 聲道數量,以十進制表示,後接 ’c’,產生該聲道數量的預設聲道佈局 (請參閱 av_channel_layout_default 函數)。請注意,並非所有聲道計數都有預設佈局。
  • 聲道數量,以十進制表示,後接 ’C’,產生具有指定聲道數量的未知聲道佈局。請注意,並非所有聲道佈局規格字串都支援未知聲道佈局。
  • 聲道佈局遮罩,以 "0x" 開頭的十六進制表示 (請參閱 libavutil/channel_layout.h 中的 AV_CH_* 巨集)。

在 libavutil 53 版本之前,指定聲道數量的尾隨字元 "c" 是可選的,但現在是必需的,而聲道佈局遮罩也可以指定為十進制數字 (當且僅當後面沒有接 "c" 或 "C" 時)。

另請參閱 libavutil/channel_layout.h 中定義的 av_channel_layout_from_string 函數。

7 表達式評估

當評估算術表達式時,FFmpeg 使用內部公式評估器,通過 libavutil/eval.h 介面實作。

表達式可能包含單元、二元運算子、常數和函數。

兩個表達式 expr1expr2 可以組合形成另一個表達式 "expr1;expr2"。expr1expr2 依序評估,而新表達式評估為 expr2 的值。

以下二元運算子可用:+-*/^

以下單元運算子可用:+-

可以使用一些內部變數來儲存和載入中間結果。可以使用 ldst 函數存取它們,索引參數從 0 到 9 不等,以指定要存取哪個內部變數。

以下函數可用

abs(x)

計算 x 的絕對值。

acos(x)

計算 x 的反餘弦值。

asin(x)

計算 x 的反正弦值。

atan(x)

計算 x 的反正切值。

atan2(y, x)

計算 y/x 的反正切主值。

between(x, min, max)

如果 x 大於或等於 min 且小於或等於 max,則傳回 1,否則傳回 0。

bitand(x, y)
bitor(x, y)

計算 xy 的位元與/或運算。

在執行位元運算之前,xy 的評估結果會轉換為整數。

請注意,轉換為整數和轉換回浮點數都可能損失精度。請注意大數字 (通常為 2^53 及更大) 的意外結果。

ceil(expr)

將表達式 expr 的值向上捨入到最接近的整數。例如,「ceil(1.5)」為「2.0」。

clip(x, min, max)

傳回 x 的值,並將其鉗位在 minmax 之間。

cos(x)

計算 x 的餘弦值。

cosh(x)

計算 x 的雙曲餘弦值。

eq(x, y)

如果 xy 相等,則傳回 1,否則傳回 0。

exp(x)

計算 x 的指數 (以 e,即歐拉數為底)。

floor(expr)

將表達式 expr 的值向下捨入到最接近的整數。例如,「floor(-1.5)」為「-2.0」。

gauss(x)

計算 x 的高斯函數,對應於 exp(-x*x/2) / sqrt(2*PI)

gcd(x, y)

傳回 xy 的最大公約數。如果 xy 均為 0 或任一或兩者小於零,則行為未定義。

gt(x, y)

如果 x 大於 y,則傳回 1,否則傳回 0。

gte(x, y)

如果 x 大於或等於 y,則傳回 1,否則傳回 0。

hypot(x, y)

此函數與同名的 C 函數類似;它傳回「sqrt(x*x + y*y)」,即直角三角形斜邊的長度,其邊長為 xy,或點 (x, y) 到原點的距離。

if(x, y)

評估 x,如果結果為非零值,則傳回評估 y 的結果,否則傳回 0。

if(x, y, z)

評估 x,如果結果為非零值,則傳回 y 的評估結果,否則傳回 z 的評估結果。

ifnot(x, y)

評估 x,如果結果為零,則傳回評估 y 的結果,否則傳回 0。

ifnot(x, y, z)

評估 x,如果結果為零,則傳回 y 的評估結果,否則傳回 z 的評估結果。

isinf(x)

如果 x 為 +/-INFINITY,則傳回 1.0,否則傳回 0.0。

isnan(x)

如果 x 為 NAN,則傳回 1.0,否則傳回 0.0。

ld(idx)

載入索引為 idx 的內部變數的值,該值先前已使用 st(idx, expr) 儲存。此函數傳回載入的值。

lerp(x, y, z)

傳回 xy 之間按 z 量進行的線性插值。

log(x)

計算 x 的自然對數。

lt(x, y)

如果 x 小於 y,則傳回 1,否則傳回 0。

lte(x, y)

如果 x 小於或等於 y,則傳回 1,否則傳回 0。

max(x, y)

傳回 xy 之間的較大值。

min(x, y)

傳回 xy 之間的較小值。

mod(x, y)

計算 x 除以 y 的餘數。

not(expr)

如果 expr 為零,則傳回 1.0,否則傳回 0.0。

pow(x, y)

計算 xy 次方,它等效於 "(x)^(y)"。

print(t)
print(t, l)

使用日誌等級 l 印出表達式 t 的值。如果未指定 l,則使用預設日誌等級。傳回印出的表達式的值。

random(idx)

傳回介於 0.0 和 1.0 之間的偽隨機值。idx 是用於儲存種子/狀態的內部變數的索引,該種子/狀態可以先前使用 st(idx) 儲存。

若要初始化種子,您需要將種子值作為 64 位元無號整數儲存在索引為 idx 的內部變數中。

例如,若要將值為 42 的種子儲存在索引為 0 的內部變數中,並印出一些隨機值

st(0,42); print(random(0)); print(random(0)); print(random(0))
randomi(idx, min, max)

傳回介於 minmax 之間的偽隨機值。idx 是內部變數的索引,將用於儲存種子/狀態,該種子/狀態可以先前使用 st(idx) 儲存。

若要初始化種子,您需要將種子值作為 64 位元無號整數儲存在索引為 idx 的內部變數中。

root(expr, max)

尋找輸入值,使以 ld(0) 為參數的 expr 表示的函數在區間 0..max 中為 0。

expr 中的表達式必須表示連續函數,否則結果未定義。

ld(0) 用於表示函數輸入值,這表示給定的表達式將使用各種輸入值多次評估,表達式可以通過 ld(0) 存取這些輸入值。當表達式評估為 0 時,將傳回對應的輸入值。

round(expr)

將表達式 expr 的值四捨五入到最接近的整數。例如,「round(1.5)」為「2.0」。

sgn(x)

計算 x 的符號。

sin(x)

計算 x 的正弦值。

sinh(x)

計算 x 的雙曲正弦值。

sqrt(expr)

計算 expr 的平方根。這等效於 "(expr)^.5"。

squish(x)

計算表達式 1/(1 + exp(4*x))

st(idx, expr)

將表達式 expr 的值儲存在內部變數中。idx 指定要儲存值的變數的索引,其值範圍為 0 到 9。此函數傳回儲存在內部變數中的值。

儲存的值可以使用 ld(var) 檢索。

注意:變數目前未在表達式之間共享。

tan(x)

計算 x 的正切值。

tanh(x)

計算 x 的雙曲正切值。

taylor(expr, x)
taylor(expr, x, idx)

x 處評估泰勒級數,給定一個表達式,該表達式表示函數在 0 處的第 ld(idx) 階導數。

當級數不收斂時,結果未定義。

ld(idx) 用於表示 expr 中的導數階數,這表示給定的表達式將使用各種輸入值多次評估,表達式可以通過 ld(idx) 存取這些輸入值。如果未指定 idx,則假定為 0。

注意,當您具有 y 而非 0 處的導數時,可以使用 taylor(expr, x-y)

time(0)

傳回目前的 (實際) 時間,以秒為單位。

trunc(expr)

將表達式 expr 的值朝零方向捨入到最接近的整數。例如,「trunc(-1.5)」為「-1.0」。

while(cond, expr)

當表達式 cond 為非零值時,評估表達式 expr,並傳回最後一次 expr 評估的值,如果 cond 始終為假,則傳回 NAN。

以下常數可用

PI

單位圓盤的面積,約為 3.14

E

exp(1) (歐拉數),約為 2.718

PHI

黃金比例 (1+sqrt(5))/2,約為 1.618

假設表達式在具有非零值時被視為「真」,請注意

* 的作用類似於 AND

+ 的作用類似於 OR

例如,以下構造

if (A AND B) then C

等效於

if(A*B, C)

在您的 C 程式碼中,您可以擴展單元和二元函數的列表,並定義已識別的常數,以便它們可用於您的表達式。

評估器還識別國際單位制詞頭。如果在詞頭後附加 ’i’,則使用二進制詞頭,它基於 1024 的冪而不是 1000 的冪。’B’ 後綴將值乘以 8,並且可以附加在單位詞頭之後或單獨使用。這允許使用例如 ’KB’、’MiB’、’G’ 和 ’B’ 作為數字後綴。

可用的國際單位制詞頭列表如下,並標示對應的 10 和 2 的次方。

y

10^-24 / 2^-80

z

10^-21 / 2^-70

a

10^-18 / 2^-60

f

10^-15 / 2^-50

p

10^-12 / 2^-40

n

10^-9 / 2^-30

u

10^-6 / 2^-20

m

10^-3 / 2^-10

c

10^-2

d

10^-1

h

10^2

k

10^3 / 2^10

K

10^3 / 2^10

M

10^6 / 2^20

G

10^9 / 2^30

T

10^12 / 2^40

P

10^15 / 2^50

E

10^18 / 2^60

Z

10^21 / 2^70

Y

10^24 / 2^80

8 編解碼器選項

libavcodec 提供了一些通用的全域選項,這些選項可以設定在所有的編碼器和解碼器上。此外,每個編解碼器可能支援所謂的私有選項,這些選項是特定於給定編解碼器的。

有時,一個全域選項可能只影響特定類型的編解碼器,並且對於另一個編解碼器可能沒有意義或被忽略,因此您需要注意指定選項的含義。此外,某些選項僅適用於解碼或編碼。

選項可以通過在 FFmpeg 工具中指定 -選項 來設定,或者通過在 AVCodecContext 選項中顯式設定值,或者使用 libavutil/opt.h API 以程式化方式使用。

以下是支援的選項列表

b 整數 (編碼,音訊,視訊)

設定位元率,單位為 位元/秒 (bits/s)。預設值為 200K。

ab 整數 (編碼,音訊)

設定音訊位元率(單位為 位元/秒 (bits/s))。預設值為 128K。

bt 整數 (編碼,視訊)

設定視訊位元率容忍度(單位為 位元/秒 (bits/s))。在 1-pass 模式下,位元率容忍度指定了速率控制願意偏離目標平均位元率值的程度。這與最小/最大位元率無關。過度降低容忍度會對品質產生不利影響。

flags 旗標 (解碼/編碼,音訊,視訊,字幕)

設定通用旗標。

可能的值

mv4

每個巨集區塊使用四個運動向量 (mpeg4)。

qpel

使用 1/4 像素運動補償。

loop

使用迴路濾波器。

qscale

使用固定 qscale。

pass1

在第一遍模式下使用內部 2pass 速率控制。

pass2

在第二遍模式下使用內部 2pass 速率控制。

gray

僅解碼/編碼灰階。

psnr

在編碼期間設定 error[?] 變數。

truncated

輸入位元流可能被隨機截斷。

drop_changed

不要輸出參數與串流中第一個解碼幀不同的幀。當幀被丟棄時,會返回錯誤 AVERROR_INPUT_CHANGED。

ildct

使用交錯 DCT。

low_delay

強制低延遲。

global_header

將全域標頭放置在 extradata 中,而不是每個關鍵幀中。

bitexact

僅寫入與平台、建置和時間無關的資料。(除了 (I)DCT)。這確保了檔案和資料校驗和在平台之間是可重現且匹配的。其主要用途是用於回歸測試。

aic

應用 H263 進階幀內編碼 / mpeg4 ac 預測。

ilme

應用交錯運動估計。

cgop

使用封閉 gop。

output_corrupt

即使是可能損壞的幀也輸出。

time_base 有理數

設定編解碼器時間基底。

它是時間的基本單位(以秒為單位),幀時間戳記以其表示。對於固定幀率的內容,時間基底應為 1 / frame_rate,並且時間戳記增量應完全為 1。

g 整數 (編碼,視訊)

設定圖片群組 (GOP) 大小。預設值為 12。

ar 整數 (解碼/編碼,音訊)

設定音訊採樣率(單位為 Hz)。

ac 整數 (解碼/編碼,音訊)

設定音訊通道數。

cutoff 整數 (編碼,音訊)

設定截止頻寬。(僅部分編碼器支援,請參閱其各自的文件章節。)

frame_size 整數 (編碼,音訊)

設定音訊幀大小。

除了最後一幀之外,每個提交的幀都必須包含每個通道恰好 frame_size 個樣本。當編解碼器設定了 CODEC_CAP_VARIABLE_FRAME_SIZE 時,可以為 0,在這種情況下,幀大小不受限制。某些解碼器會設定它來指示恆定的幀大小。

frame_number 整數

設定幀編號。

delay 整數
qcomp 浮點數 (編碼,視訊)

設定視訊量化器比例壓縮 (VBR)。它在速率控制方程式中用作常數。預設 rc_eq 的建議範圍:0.0-1.0。

qblur 浮點數 (編碼,視訊)

設定視訊量化器比例模糊 (VBR)。

qmin 整數 (編碼,視訊)

設定最小視訊量化器比例 (VBR)。必須介於 -1 和 69 之間,預設值為 2。

qmax 整數 (編碼,視訊)

設定最大視訊量化器比例 (VBR)。必須介於 -1 和 1024 之間,預設值為 31。

qdiff 整數 (編碼,視訊)

設定量化器比例之間的最大差異 (VBR)。

bf 整數 (編碼,視訊)

設定非 B 幀之間的最大 B 幀數。

必須是介於 -1 和 16 之間的整數。0 表示禁用 B 幀。如果使用值 -1,它將根據編碼器選擇一個自動值。

預設值為 0。

b_qfactor 浮點數 (編碼,視訊)

設定 P 幀和 B 幀之間的 qp 因子。

codec_tag 整數
bug 旗標 (解碼,視訊)

解決未自動偵測到的編碼器錯誤。

可能的值

autodetect
xvid_ilace

Xvid 交錯錯誤(如果 fourcc==XVIX 則自動偵測)

ump4

(如果 fourcc==UMP4 則自動偵測)

no_padding

填充錯誤(自動偵測)

amv
qpel_chroma
std_qpel

舊標準 qpel(每個 fourcc/版本自動偵測)

qpel_chroma2
direct_blocksize

direct-qpel-blocksize 錯誤(每個 fourcc/版本自動偵測)

edge

邊緣填充錯誤(每個 fourcc/版本自動偵測)

hpel_chroma
dc_clip
ms

解決 microsoft 損壞的解碼器中的各種錯誤。

trunc

截斷的幀

strict 整數 (解碼/編碼,音訊,視訊)

指定多嚴格地遵循標準。

可能的值

very

嚴格遵守較舊、更嚴格版本的規範或參考軟體

strict

嚴格遵守規範中的所有內容,無論後果如何

normal
unofficial

允許非官方擴展

experimental

允許非標準化的實驗性事物、實驗性(未完成/正在進行中/未經良好測試)解碼器和編碼器。注意:實驗性解碼器可能構成安全風險,請勿將其用於解碼不受信任的輸入。

b_qoffset 浮點數 (編碼,視訊)

設定 P 幀和 B 幀之間的 QP 偏移。

err_detect 旗標 (解碼,音訊,視訊)

設定錯誤偵測旗標。

可能的值

crccheck

驗證嵌入的 CRC

bitstream

偵測位元流規範偏差

buffer

偵測不正確的位元流長度

explode

在輕微錯誤偵測時中止解碼

ignore_err

忽略解碼錯誤,並繼續解碼。如果您想分析影片內容,並因此希望解碼所有內容,無論如何,這都很有用。如果發生錯誤,此選項不會產生令人愉悅的觀看影片。

careful

將違反規範且未在實際應用中看到的事物視為錯誤

compliant

將所有不符合規範的事物視為錯誤

aggressive

將健全的編碼器不應做的事情視為錯誤

has_b_frames 整數
block_align 整數
rc_override_count 整數
maxrate 整數 (編碼,音訊,視訊)

設定最大位元率容忍度(單位為 位元/秒 (bits/s))。需要設定 bufsize。

minrate 整數 (編碼,音訊,視訊)

設定最小位元率容忍度(單位為 位元/秒 (bits/s))。在設定 CBR 編碼時最有用。在其他情況下幾乎沒有用處。

bufsize 整數 (編碼,音訊,視訊)

設定速率控制緩衝區大小(單位為 位元)。

i_qfactor 浮點數 (編碼,視訊)

設定 P 幀和 I 幀之間的 QP 因子。

i_qoffset 浮點數 (編碼,視訊)

設定 P 幀和 I 幀之間的 QP 偏移。

dct 整數 (編碼,視訊)

設定 DCT 演算法。

可能的值

auto

自動選擇一個好的(預設)

fastint

快速整數

int

精確整數

<samp>mmx</samp>
<samp>altivec</samp>
faan

浮點 AAN DCT

lumi_mask 浮點數 (編碼,視訊)

比中等區域更強烈地壓縮明亮區域。

tcplx_mask 浮點數 (編碼,視訊)

設定時間複雜度遮罩。

scplx_mask 浮點數 (編碼,視訊)

設定空間複雜度遮罩。

p_mask 浮點數 (編碼,視訊)

設定幀間遮罩。

dark_mask 浮點數 (編碼,視訊)

比中等區域更強烈地壓縮黑暗區域。

idct 整數 (解碼/編碼,視訊)

選擇 IDCT 實作。

可能的值

auto
int
simple
simplemmx
simpleauto

自動選擇與 simple 相容的 IDCT

arm
<samp>altivec</samp>
sh4
simplearm
simplearmv5te
simplearmv6
simpleneon
xvid
faani

浮點 AAN IDCT

slice_count 整數
ec 旗標 (解碼,視訊)

設定錯誤隱藏策略。

可能的值

guess_mvs

迭代運動向量 (MV) 搜尋(慢)

deblock

對損壞的 MB 使用強大的去塊濾波器

favor_inter

偏好從前一幀而不是當前幀進行預測

bits_per_coded_sample 整數
aspect 有理數 (編碼,視訊)

設定樣本長寬比。

sar 有理數 (編碼,視訊)

設定樣本長寬比。別名為 aspect

debug 旗標 (解碼/編碼,音訊,視訊,字幕)

印出特定的除錯資訊。

可能的值

pict

圖片資訊

rc

速率控制

bitstream
mb_type

巨集區塊 (MB) 類型

qp

每個區塊的量化參數 (QP)

dct_coeff
green_metadata

顯示即將到來的幀、GoP 或給定持續時間的複雜度元資料。

skip
startcode
er

錯誤識別

mmco

記憶體管理控制操作 (H.264)

bugs
buffers

圖片緩衝區分配

thread_ops

執行緒操作

nomc

跳過運動補償

cmp 整數 (編碼,視訊)

設定全像素運動估計 (ME) 比較函數。

可能的值

sad

絕對差值總和,快速(預設)

<samp>sse</samp>

平方誤差總和

satd

絕對哈達瑪轉換差值總和

dct

絕對 DCT 轉換差值總和

psnr

平方量化誤差總和(避免,低品質)

bit

區塊所需的位元數

rd

速率失真最佳化,慢

zero

0

vsad

絕對垂直差值總和

vsse

平方垂直差值總和

nsse

噪聲保留平方差值總和

w53

5/3 小波,僅在 snow 中使用

w97

9/7 小波,僅在 snow 中使用

dctmax
chroma
subcmp 整數 (編碼,視訊)

設定子像素運動估計 (ME) 比較函數。

可能的值

sad

絕對差值總和,快速(預設)

<samp>sse</samp>

平方誤差總和

satd

絕對哈達瑪轉換差值總和

dct

絕對 DCT 轉換差值總和

psnr

平方量化誤差總和(避免,低品質)

bit

區塊所需的位元數

rd

速率失真最佳化,慢

zero

0

vsad

絕對垂直差值總和

vsse

平方垂直差值總和

nsse

噪聲保留平方差值總和

w53

5/3 小波,僅在 snow 中使用

w97

9/7 小波,僅在 snow 中使用

dctmax
chroma
mbcmp 整數 (編碼,視訊)

設定巨集區塊比較函數。

可能的值

sad

絕對差值總和,快速(預設)

<samp>sse</samp>

平方誤差總和

satd

絕對哈達瑪轉換差值總和

dct

絕對 DCT 轉換差值總和

psnr

平方量化誤差總和(避免,低品質)

bit

區塊所需的位元數

rd

速率失真最佳化,慢

zero

0

vsad

絕對垂直差值總和

vsse

平方垂直差值總和

nsse

噪聲保留平方差值總和

w53

5/3 小波,僅在 snow 中使用

w97

9/7 小波,僅在 snow 中使用

dctmax
chroma
ildctcmp 整數 (編碼,視訊)

設定交錯 DCT 比較函數。

可能的值

sad

絕對差值總和,快速(預設)

<samp>sse</samp>

平方誤差總和

satd

絕對哈達瑪轉換差值總和

dct

絕對 DCT 轉換差值總和

psnr

平方量化誤差總和(避免,低品質)

bit

區塊所需的位元數

rd

速率失真最佳化,慢

zero

0

vsad

絕對垂直差值總和

vsse

平方垂直差值總和

nsse

噪聲保留平方差值總和

w53

5/3 小波,僅在 snow 中使用

w97

9/7 小波,僅在 snow 中使用

dctmax
chroma
dia_size 整數 (編碼,視訊)

設定運動估計的菱形類型和大小。

(1024, INT_MAX)

完整運動估計(最慢)

(768, 1024]

umh 運動估計

(512, 768]

hex 運動估計

(256, 512]

l2s 菱形運動估計

[2,256]

var 菱形運動估計

(-1, 2)

小型菱形運動估計

-1

funny 菱形運動估計

(INT_MIN, -1)

sab 菱形運動估計

last_pred 整數 (編碼,視訊)

設定來自前一幀的運動預測器的數量。

precmp 整數 (編碼,視訊)

設定預運動估計比較函數。

可能的值

sad

絕對差值總和,快速(預設)

<samp>sse</samp>

平方誤差總和

satd

絕對哈達瑪轉換差值總和

dct

絕對 DCT 轉換差值總和

psnr

平方量化誤差總和(避免,低品質)

bit

區塊所需的位元數

rd

速率失真最佳化,慢

zero

0

vsad

絕對垂直差值總和

vsse

平方垂直差值總和

nsse

噪聲保留平方差值總和

w53

5/3 小波,僅在 snow 中使用

w97

9/7 小波,僅在 snow 中使用

dctmax
chroma
pre_dia_size 整數 (編碼,視訊)

設定運動估計預先處理的菱形類型和大小。

subq 整數 (編碼,視訊)

設定子像素運動估計品質。

me_range 整數 (編碼,視訊)

設定限制運動向量範圍(DivX 播放器為 1023)。

global_quality 整數 (編碼,音訊,視訊)
slice_flags 整數
mbd 整數 (編碼,視訊)

設定巨集區塊決策演算法(高品質模式)。

可能的值

simple

使用 mbcmp(預設)

bits

使用最少位元

rd

使用最佳速率失真

rc_init_occupancy 整數 (編碼,視訊)

設定在解碼開始之前應載入到 rc 緩衝區中的位元數。

flags2 旗標 (解碼/編碼,音訊,視訊,字幕)

可能的值

fast

允許不符合規範的加速技巧。

noout

跳過位元流編碼。

ignorecrop

忽略來自 sps 的裁剪資訊。

local_header

將全域標頭放置在每個關鍵幀中,而不是在 extradata 中。

chunks

幀資料可能被分割成多個區塊。

showall

顯示第一個關鍵幀之前的所有幀。

export_mvs

將運動向量匯出到幀邊資料(請參閱 AV_FRAME_DATA_MOTION_VECTORS),適用於支援它的編解碼器。另請參閱 doc/examples/export_mvs.c

skip_manual

不要跳過樣本,並將跳過資訊匯出為幀邊資料。

ass_ro_flush_noop

在刷新時不要重置 ASS ReadOrder 欄位。

icc_profiles

從/向色彩標籤產生/解析嵌入的 ICC 設定檔。

export_side_data 旗標 (解碼/編碼,音訊,視訊,字幕)

可能的值

mvs

將運動向量匯出到幀邊資料(請參閱 AV_FRAME_DATA_MOTION_VECTORS),適用於支援它的編解碼器。另請參閱 doc/examples/export_mvs.c

prft

將編碼器 Producer Reference Time 匯出到封包邊資料(請參閱 AV_PKT_DATA_PRFT),適用於支援它的編解碼器。

venc_params

通過幀邊資料匯出視訊編碼參數(請參閱 AV_FRAME_DATA_VIDEO_ENC_PARAMS),適用於支援它的編解碼器。目前,這些是 H.264 和 VP9。

film_grain

通過幀邊資料匯出膠片顆粒參數(請參閱 AV_FRAME_DATA_FILM_GRAIN_PARAMS)。目前 AV1 解碼器支援。

enhancements

通過幀邊資料匯出圖片增強元資料,例如 LCEVC(請參閱 AV_FRAME_DATA_LCEVC)。

threads 整數 (解碼/編碼,視訊)

設定要使用的執行緒數量,以防所選的編解碼器實作支援多執行緒。

可能的值

auto, 0

自動選擇要設定的執行緒數量

預設值為 ‘auto’。

dc 整數 (編碼,視訊)

設定 intra_dc_precision。

nssew 整數 (編碼,視訊)

設定 nsse 權重。

skip_top 整數 (解碼,視訊)

設定要跳過的頂部巨集區塊行數。

skip_bottom 整數 (解碼,視訊)

設定要跳過的底部巨集區塊行數。

profile 整數 (編碼,音訊,視訊)

設定編碼器編解碼器設定檔。預設值為 ‘unknown’。編碼器特定的設定檔記錄在相關的編碼器文件中。

level 整數 (編碼,音訊,視訊)

設定編碼器級別。此級別取決於特定的編解碼器,並且可能對應於設定檔級別。預設情況下設定為 ‘unknown’。

可能的值

unknown
lowres integer (解碼,音訊,視訊)

以 1= 1/2、2=1/4、3=1/8 解析度解碼。

mblmin integer (編碼,視訊)

設定最小巨集區塊拉格朗日乘數 (VBR)。

mblmax integer (編碼,視訊)

設定最大巨集區塊拉格朗日乘數 (VBR)。

skip_loop_filter integer (解碼,視訊)
skip_idct integer (解碼,視訊)
skip_frame integer (解碼,視訊)

使解碼器根據選項值選取的幀類型來捨棄處理。

skip_loop_filter 跳過幀環路濾波,skip_idct 跳過幀 IDCT/反量化,skip_frame 跳過解碼。

可能的值

none

不捨棄任何幀。

default

捨棄無用的幀,例如 0 位元組大小的幀。

noref

捨棄所有非參考幀。

bidir

捨棄所有雙向幀。

nokey

捨棄除關鍵幀外的所有幀。

nointra

捨棄除 I 幀外的所有幀。

all

捨棄所有幀。

預設值為 ‘default’。

bidir_refine integer (編碼,視訊)

精細化雙向巨集區塊中使用的兩個運動向量。

keyint_min integer (編碼,視訊)

設定 IDR 幀之間的最小間隔。

refs integer (編碼,視訊)

設定用於運動補償的參考幀。

trellis integer (編碼,音訊,視訊)

設定率失真最佳化量化。

mv0_threshold integer (編碼,視訊)
compression_level integer (編碼,音訊,視訊)
bits_per_raw_sample integer
channel_layout integer (解碼/編碼,音訊)

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

rc_max_vbv_use float (編碼,視訊)
rc_min_vbv_use float (編碼,視訊)
color_primaries integer (解碼/編碼,視訊)

可能的值

bt709

BT.709

bt470m

BT.470 M

bt470bg

BT.470 BG

smpte170m

SMPTE 170 M

smpte240m

SMPTE 240 M

film

Film

bt2020

BT.2020

smpte428
smpte428_1

SMPTE ST 428-1

smpte431

SMPTE 431-2

smpte432

SMPTE 432-1

jedec-p22

JEDEC P22

color_trc integer (解碼/編碼,視訊)

可能的值

bt709

BT.709

gamma22

BT.470 M

gamma28

BT.470 BG

smpte170m

SMPTE 170 M

smpte240m

SMPTE 240 M

linear

線性

log
log100

對數

log_sqrt
log316

對數平方根

iec61966_2_4
iec61966-2-4

IEC 61966-2-4

bt1361
bt1361e

BT.1361

iec61966_2_1
iec61966-2-1

IEC 61966-2-1

bt2020_10
bt2020_10bit

BT.2020 - 10 位元

bt2020_12
bt2020_12bit

BT.2020 - 12 位元

smpte2084

SMPTE ST 2084

smpte428
smpte428_1

SMPTE ST 428-1

arib-std-b67

ARIB STD-B67

colorspace integer (解碼/編碼,視訊)

可能的值

rgb

RGB

bt709

BT.709

fcc

FCC

bt470bg

BT.470 BG

smpte170m

SMPTE 170 M

smpte240m

SMPTE 240 M

ycocg

YCOCG

bt2020nc
bt2020_ncl

BT.2020 NCL

bt2020c
bt2020_cl

BT.2020 CL

smpte2085

SMPTE 2085

chroma-derived-nc

色度衍生 NCL

chroma-derived-c

色度衍生 CL

ictcp

ICtCp

color_range integer (解碼/編碼,視訊)

如果用作輸入參數,它會作為解碼器的提示,指示輸入具有的色彩範圍。可能的值

tv
mpeg
limited

MPEG (219*2^(n-8))

pc
jpeg
full

JPEG (2^n-1)

chroma_sample_location integer (解碼/編碼,視訊)

可能的值

left
center
topleft
top
bottomleft
bottom
log_level_offset integer

設定日誌等級偏移。

slices integer (編碼,視訊)

切片數量,用於平行化編碼。

thread_type flags (解碼/編碼,視訊)

選擇要使用的多線程方法。

使用 ‘frame’ 將使每個線程的解碼延遲增加一幀,因此無法提供未來幀的用戶端不應使用它。

可能的值

slice

一次解碼單個幀的多個部分。

使用切片的多線程僅在視訊以切片編碼時有效。

frame

一次解碼多個幀。

預設值為 ‘slice+frame’。

audio_service_type integer (編碼,音訊)

設定音訊服務類型。

可能的值

ma

主要音訊服務

ef

音效

vi

視力障礙

hi

聽力障礙

di

對白

co

評論音軌

em

緊急廣播

vo

旁白

ka

卡拉 OK

request_sample_fmt sample_fmt (解碼,音訊)

設定音訊解碼器應偏好的樣本格式。預設值為 none

pkt_timebase rational number
sub_charenc encoding (解碼,字幕)

設定輸入字幕字元編碼。

field_order field_order (視訊)

設定/覆寫視訊的場序。可能的值

progressive

循序掃描視訊

tt

交錯掃描視訊,頂場先編碼和顯示

bb

交錯掃描視訊,底場先編碼和顯示

tb

交錯掃描視訊,頂場先編碼,底場先顯示

bt

交錯掃描視訊,底場先編碼,頂場先顯示

skip_alpha bool (解碼,視訊)

設定為 1 以停用 Alpha(透明度)處理。這就像 flags 選項中的 ‘gray’ 標誌一樣,後者會跳過色度資訊而不是 Alpha。預設值為 0。

codec_whitelist list (輸入)

以「,」分隔的允許解碼器列表。預設情況下,允許所有解碼器。

dump_separator string (輸入)

用於分隔命令列上列印的有關串流參數的欄位的分隔符號。例如,要使用換行符和縮排分隔欄位

ffprobe -dump_separator "
                          "  -i ~/videos/matrixbench_mpeg2.mpg
max_pixels integer (解碼/編碼,視訊)

每張影像的最大像素數。此值可用於避免因大型影像導致的記憶體不足錯誤。

apply_cropping bool (解碼,視訊)

如果裁切參數是左側和頂部參數所需對齊的倍數,則啟用裁切。如果未滿足對齊要求,則將部分套用裁切以維持對齊。預設值為 1(啟用)。注意:所需的對齊取決於是否設定了 AV_CODEC_FLAG_UNALIGNED 以及 CPU。AV_CODEC_FLAG_UNALIGNED 無法從命令列變更。此外,硬體解碼器不會套用左/頂部裁切。

9 解碼器

解碼器是 FFmpeg 中配置的元件,允許解碼多媒體串流。

當您配置 FFmpeg 組建時,預設會啟用所有支援的原生解碼器。需要外部函式庫的解碼器必須透過對應的 --enable-lib 選項手動啟用。您可以使用配置選項 --list-decoders 列出所有可用的解碼器。

您可以使用配置選項 --disable-decoders 停用所有解碼器,並使用選項 --enable-decoder=DECODER / --disable-decoder=DECODER 選擇性地啟用/停用單個解碼器。

ff* 工具的選項 -decoders 將顯示已啟用解碼器的列表。

10 視訊解碼器

以下是一些目前可用的視訊解碼器的描述。

10.1 av1

AOMedia Video 1 (AV1) 解碼器。

10.1.1 選項

operating_point

選取可伸縮 AV1 位元串流的操作點 (0 - 31)。預設值為 0。

10.2 hevc

HEVC(又稱 ITU-T H.265 或 ISO/IEC 23008-2)解碼器。

解碼器支援最多兩個視圖的 MV-HEVC 多視圖串流。要輸出的視圖是透過向解碼器提供視圖 ID 列表(view_ids 選項)來選取的。此選項可以在解碼器初始化之前靜態設定,也可以從 get_format() 回呼中設定 - 這對於視圖計數或 ID 在解碼期間動態變更的情況很有用。

預設情況下僅解碼基礎層。

請注意,如果您正在使用 ffmpeg CLI 工具,則應使用其手冊中記錄的視圖指定符,而不是此處記錄的選項。

10.2.1 選項

view_ids (MV-HEVC)

指定應輸出的視圖 ID 列表。此選項也可以設定為單個 '-1',這將導致解碼和輸出 VPS 中定義的所有視圖。

view_ids_available (MV-HEVC)

呼叫者可以讀取此選項以檢索活動 VPS 中可用的視圖 ID 陣列。對於單層視訊,陣列為空。

保證從 get_format() 回呼讀取此選項的值時是準確的。它也可以在其他時間設定(例如,在開啟解碼器之後),但該值僅供參考,可能不正確(例如,當串流包含多個不同的 VPS NALU 時)。

view_pos_available (MV-HEVC)

呼叫者可以讀取此選項,以檢索活動 VPS 中可用的視圖位置(左、右或未指定)陣列,如 AVStereo3DView 值。當陣列可用時,其元素適用於 view_ids_available 的對應元素,即 view_pos_available[i] 包含 ID 為 view_ids_available[i] 的視圖位置。

view_ids_available 相同的有效性限制適用於此選項。

10.3 rawvideo

原始視訊解碼器。

此解碼器解碼 rawvideo 串流。

10.3.1 選項

top top_field_first

指定輸入視訊的假設場類型。

-1

視訊假設為循序掃描(預設)

0

假設為底場優先

1

假設為頂場優先

10.4 libdav1d

dav1d AV1 解碼器。

libdav1d 允許 libavcodec 解碼 AOMedia Video 1 (AV1) 編碼。需要在配置期間存在 libdav1d 標頭和函式庫。您需要使用 --enable-libdav1d 明確配置組建。

10.4.1 選項

libdav1d 包裝器支援以下選項。

framethreads

設定在解碼期間要使用的幀線程數量。預設值為 0(自動偵測)。此選項已針對 libdav1d >= 1.0 棄用,並將在未來版本中移除。請改用選項 max_frame_delay 和全域選項 threads

tilethreads

設定在解碼期間要使用的瓦片線程數量。預設值為 0(自動偵測)。此選項已針對 libdav1d >= 1.0 棄用,並將在未來版本中移除。請改用全域選項 threads

max_frame_delay

設定解碼器可能在內部緩衝的最大幀數。預設值為 0(自動偵測)。

filmgrain

如果位元串流中存在膠片顆粒,則將其應用於解碼後的視訊。預設為函式庫的內部預設值。此選項已棄用,並將在未來版本中移除。請參閱全域選項 export_side_data 以導出膠片顆粒參數,而不是應用它。

oppoint

選取可伸縮 AV1 位元串流的操作點 (0 - 31)。預設為函式庫的內部預設值。

alllayers

輸出可伸縮 AV1 位元串流的所有空間層。預設值為 false。

10.5 libdavs2

AVS2-P2/IEEE1857.4 視訊解碼器包裝器。

此解碼器允許 libavcodec 使用 davs2 函式庫解碼 AVS2 串流。

10.6 libuavs3d

AVS3-P2/IEEE1857.10 視訊解碼器。

libuavs3d 允許 libavcodec 解碼 AVS3 串流。需要在配置期間存在 libuavs3d 標頭和函式庫。您需要使用 --enable-libuavs3d 明確配置組建。

10.6.1 選項

libuavs3d 包裝器支援以下選項。

frame_threads

設定在解碼期間要使用的幀線程數量。預設值為 0(自動偵測)。

10.7 libxevd

eXtra-fast Essential Video Decoder (XEVD) MPEG-5 EVC 解碼器包裝器。

此解碼器需要在配置期間存在 libxevd 標頭和函式庫。您需要使用 --enable-libxevd 明確配置組建。

xevd 專案網站位於 https://github.com/mpeg5/xevd

10.7.1 選項

libxevd 包裝器支援以下選項。xevd 等效選項或值在括號中列出,以便於遷移。

若要取得更準確和廣泛的 libxevd 選項文件,請調用命令 xevd_app --help 或查閱 libxevd 文件。

threads (threads)

強制使用特定數量的線程

10.8 QSV 解碼器

Intel QuickSync Video 解碼器系列(VC1、MPEG-2、H.264、HEVC、JPEG/MJPEG、VP8、VP9、AV1、VVC)。

10.8.1 通用選項

所有 qsv 解碼器都支援以下選項。

async_depth

內部平行化深度,值越高,延遲越高。

gpu_copy

視訊和系統記憶體之間的 GPU 加速複製

default
on
off

10.8.2 HEVC 選項

hevc_qsv 的額外選項。

load_plugin

要在內部會話中載入的使用者外掛程式

none
hevc_sw
hevc_hw
load_plugins

以「:」分隔的十六進制外掛程式 UID 列表,用於載入內部會話

10.9 v210

未壓縮 4:2:2 10 位元解碼器。

10.9.1 選項

custom_stride

設定 v210 資料的行大小(以位元組為單位)。預設值為 0(自動偵測)。您可以針對 BOXX 檔案中看到的無跨距 v210 使用特殊的 -1 值。

11 音訊解碼器

以下是一些目前可用的音訊解碼器的描述。

11.1 ac3

AC-3 音訊解碼器。

此解碼器實作了 ATSC A/52:2010 和 ETSI TS 102 366 的部分內容,以及未公開文件的 RealAudio 3 (又名 dnet)。

11.1.1 AC-3 解碼器選項

-drc_scale value

動態範圍縮放因子。從 AC-3 串流套用至動態範圍值的因子。此因子以指數方式套用。預設值為 1。有 3 個值得注意的縮放因子範圍

drc_scale == 0

DRC 已停用。產生完整範圍的音訊。

0 < drc_scale <= 1

DRC 已啟用。套用串流 DRC 值的一部分。音訊重現介於完整範圍和完整壓縮之間。

drc_scale > 1

DRC 已啟用。非對稱地套用 drc_scale。響亮的聲音會完全壓縮。柔和的聲音會增強。

11.2 flac

FLAC 音訊解碼器。

此解碼器旨在實作 Xiph 的完整 FLAC 規格。

11.2.1 FLAC 解碼器選項

-use_buggy_lpc

lavc FLAC 編碼器過去會產生具有高 lpc 值(例如預設值)的錯誤串流。此選項透過使用 lavc 舊的錯誤 lpc 邏輯進行解碼,使得正確解碼此類串流成為可能。

11.3 ffwavesynth

內部波形合成器。

此解碼器根據預定義的序列產生波形模式。其用途純粹是內部的,並且其接受的資料格式未公開文件。

11.4 libcelt

libcelt 解碼器封裝器。

libcelt 允許 libavcodec 解碼 Xiph CELT 超低延遲音訊編碼解碼器。組態期間需要 libcelt 標頭和函式庫存在。您需要使用 --enable-libcelt 明確組態建置。

11.5 libgsm

libgsm 解碼器封裝器。

libgsm 允許 libavcodec 解碼 GSM 全速率音訊編碼解碼器。組態期間需要 libgsm 標頭和函式庫存在。您需要使用 --enable-libgsm 明確組態建置。

此解碼器同時支援標準 GSM 和 Microsoft 變體。

11.6 libilbc

libilbc 解碼器封裝器。

libilbc 允許 libavcodec 解碼網際網路低位元速率編碼解碼器 (iLBC) 音訊編碼解碼器。組態期間需要 libilbc 標頭和函式庫存在。您需要使用 --enable-libilbc 明確組態建置。

11.6.1 選項

libilbc 封裝器支援以下選項。

enhance

設定為 1 時,啟用已解碼音訊的增強功能。預設值為 0(停用)。

11.7 libopencore-amrnb

libopencore-amrnb 解碼器封裝器。

libopencore-amrnb 允許 libavcodec 解碼自適應多速率窄頻音訊編碼解碼器。使用它需要在組態期間存在 libopencore-amrnb 標頭和函式庫。您需要使用 --enable-libopencore-amrnb 明確組態建置。

FFmpeg 原生 AMR-NB 解碼器已存在,因此使用者無需此函式庫即可解碼 AMR-NB。

11.8 libopencore-amrwb

libopencore-amrwb 解碼器封裝器。

libopencore-amrwb 允許 libavcodec 解碼自適應多速率寬頻音訊編碼解碼器。使用它需要在組態期間存在 libopencore-amrwb 標頭和函式庫。您需要使用 --enable-libopencore-amrwb 明確組態建置。

FFmpeg 原生 AMR-WB 解碼器已存在,因此使用者無需此函式庫即可解碼 AMR-WB。

11.9 libopus

libopus 解碼器封裝器。

libopus 允許 libavcodec 解碼 Opus 互動式音訊編碼解碼器。組態期間需要 libopus 標頭和函式庫存在。您需要使用 --enable-libopus 明確組態建置。

FFmpeg 原生 Opus 解碼器已存在,因此使用者無需此函式庫即可解碼 Opus。

12 字幕解碼器

12.1 libaribb24

ARIB STD-B24 字幕解碼器。

實作 ARIB STD-B24 標準的設定檔 A 和 C。

12.1.1 libaribb24 解碼器選項

-aribb24-base-path path

設定 libaribb24 函式庫的基礎路徑。這用於讀取組態檔案(用於自訂 unicode 轉換),以及用於將非文字符號傾印為該位置下的圖像。

預設為未設定。

-aribb24-skip-ruby-text boolean

告知解碼器封裝器跳過包含半高 ruby 文字的文字區塊。

預設為啟用。

12.2 libaribcaption

另一個使用外部 libaribcaption 函式庫的 ARIB STD-B24 字幕解碼器。

實作日本 ARIB STD-B24 標準、巴西 ABNT NBR 15606-1 和菲律賓版本 ISDB-T 的設定檔 A 和 C。

組態期間需要 libaribcaption 標頭和函式庫 (https://github.com/xqq/libaribcaption) 存在。您需要使用 --enable-libaribcaption 明確組態建置。如果 libaribb24libaribcaption 都已啟用,則 libaribcaption 解碼器優先。

12.2.1 libaribcaption 解碼器選項

-sub_type subtitle_type

指定已解碼字幕的格式。

bitmap

圖形影像。

ass

ASS 格式化文字。

text

不含格式化的簡單文字輸出。

預設值為 ass,與 libaribb24 解碼器相同。某些現有的播放器(例如,mpv)預期 ARIB 字幕使用 ASS 格式。

-caption_encoding encoding_scheme

指定輸入字幕文字的編碼方案。

auto

自動偵測文字編碼(預設)。

jis

ARIB STD B24 中定義的 8 位元字元 JIS 編碼。此編碼在日本用於 ISDB 字幕。

utf8

ARIB STD B24 中定義的 UTF-8 編碼。此編碼在菲律賓用於 ISDB-T 字幕。

latin

ABNT NBR 15606-1 中定義的拉丁字元編碼。此編碼在南美洲用於 SBTVD / ISDB-Tb 字幕。

-font font_name[,font_name2,...]

指定要用於 bitmapass 類型字幕渲染的逗號分隔字型系列名稱清單。只有第一個字型名稱用於 ass 類型字幕。

如果未指定,則使用內部定義的預設字型系列。

-ass_single_rect boolean

ARIB STD-B24 指定某些字幕可能會同時顯示在不同位置(多矩形字幕)。由於某些播放器(例如,舊版 mpv)無法處理單一 AVSubtitle 中的多個 ASS 矩形,或具有相同開始時間戳記的非確定持續時間的多個 ASS 矩形,因此此選項可以變更行為,使所有文字都顯示在單一 ASS 矩形中。

預設值為 false

如果您的播放器無法正確處理具有多個 ASS 矩形的 AVSubtitle,請將此選項設定為 true 或定義 ASS_SINGLE_RECT=1 以在編譯時變更預設行為。

-force_outline_text boolean

指定是否始終為所有字元渲染輪廓文字,而無論字元樣式是否指示。

預設值為 false

-outline_width number (0.0 - 3.0)

指定輪廓文字的寬度,以點(相對)為單位。

預設值為 1.5

-ignore_background boolean

指定是否忽略背景顏色渲染。

預設值為 false

-ignore_ruby boolean

指定是否忽略 ruby 類(假名)字元的渲染。

預設值為 false

-replace_drcs boolean

指定是否將取代的 DRCS 字元渲染為 Unicode 字元。

預設值為 true

-replace_msz_ascii boolean

指定是否將 MSZ(中尺寸;半寬)全形字母數字取代為半形字母數字。

預設值為 true

-replace_msz_japanese boolean

指定是否將某些 MSZ(中尺寸;半寬)全形日文特殊字元取代為半形字元。

預設值為 true

-replace_msz_glyph boolean

指定如果字型支援,是否將 MSZ(中尺寸;半寬)字元取代為半寬字形。此選項適用於搭配 Adobe-Japan1 相容字型的 FreeType 或 DirectWrite 渲染器。例如,IBM Plex Sans JP、Morisawa BIZ UDGothic、Morisawa BIZ UDMincho、Yu Gothic、Yu Mincho 和 Meiryo。

預設值為 true

-canvas_size image_size

指定渲染字幕的畫布解析度;通常,這應該是輸入視訊的影格大小。這僅在 -subtitle_type 設定為 bitmap 時適用。

libaribcaption 解碼器假設用於點陣圖渲染的輸入影格大小如下

  1. PROFILE_A:1440 x 1080,SAR (PAR) 4:3
  2. PROFILE_C:320 x 180,SAR (PAR) 1:1

如果輸入視訊的實際影格大小與上述假設不符,則渲染的字幕可能會失真。為了使字幕不失真,請新增 -canvas_size 選項以指定實際輸入視訊大小。

請注意,對於大小不同但長寬比相同的視訊,不需要 -canvas_size 選項。在這種情況下,如果未指定 -canvas_size 選項,字幕將會拉伸或縮小到實際視訊大小。如果指定了具有不同大小的 -canvas_size 選項,則字幕將會拉伸或縮小為指定大小和計算出的 SAR。

12.2.2 libaribcaption 解碼器使用範例

使用 ffplay 工具顯示具有 ARIB 字幕的 MPEG-TS 檔案

ffplay -sub_type bitmap MPEG.TS

使用 ffplay 工具顯示具有輸入影格大小 1920x1080 的 MPEG-TS 檔案

ffplay -sub_type bitmap -canvas_size 1920x1080 MPEG.TS

在轉碼視訊中嵌入 ARIB 字幕

ffmpeg -sub_type bitmap -i src.m2t -filter_complex "[0:v][0:s]overlay" -vcodec h264 dest.mp4

12.3 dvbsub

12.3.1 選項

compute_clut
-2

如果串流中沒有相符的 CLUT,則計算 CLUT 一次。

-1

如果串流中沒有相符的 CLUT,則計算 CLUT。

0

永不計算 CLUT

1

始終計算 CLUT 並覆寫串流中提供的 CLUT。

dvb_substream

選取 dvb 子串流,如果為 -1 則選取所有子串流,這是預設值。

12.4 dvdsub

此編碼解碼器解碼 DVD 中使用的點陣圖字幕;相同的字幕也可以在 VobSub 檔案對和某些 Matroska 檔案中找到。

12.4.1 選項

palette

指定點陣圖使用的全域調色盤。當儲存在 VobSub 中時,調色盤通常在索引檔案中指定;在 Matroska 中,調色盤以與 VobSub 相同的格式儲存在編碼解碼器額外資料中。在 DVD 中,調色盤儲存在 IFO 檔案中,因此從傾印的 VOB 檔案讀取時不可用。

此選項的格式是一個字串,包含 16 個 24 位元十六進位數字(不含 0x 字首),以逗號分隔,例如 0d00ee, ee450d, 101010, eaeaea, 0ce60b, ec14ed, ebff0b, 0d617a, 7b7b7b, d1d1d1, 7b2a0e, 0d950c, 0f007b, cf0dec, cfa80c, 7c127b

ifo_palette

指定從中取得全域調色盤的 IFO 檔案。(實驗性)

forced_subs_only

僅解碼標記為強制的字幕條目。某些標題在同一軌道中具有強制和非強制字幕。將此旗標設定為 1 將僅保留強制字幕。預設值為 0

12.5 libzvbi-teletext

Libzvbi 允許 libavcodec 解碼 DVB 圖文電視頁面和 DVB 圖文電視字幕。組態期間需要 libzvbi 標頭和函式庫存在。您需要使用 --enable-libzvbi 明確組態建置。

12.5.1 選項

txt_page

要解碼的圖文電視頁碼清單。不符合指定清單的頁面將被捨棄。您可以使用特殊字串 * 來比對所有頁面,或使用 subtitle 來比對所有字幕頁面。預設值為 *。

txt_default_region

設定用於解碼的預設字元集,值介於 0 到 87 之間(請參閱 ETS 300 706,第 15 節,表 32)。預設值為 -1,這不會覆寫 libzvbi 預設值。對於某些無法發送信號指示正確字元集的舊版 1.0 傳輸,此選項是必需的。

txt_chop_top

捨棄頂部圖文電視行。預設值為 1。

txt_format

指定已解碼字幕的格式。

bitmap

預設格式,您應該將其用於圖文電視頁面,因為某些圖形和顏色無法以簡單文字甚至 ASS 表示。

text

不含格式化的簡單文字輸出。

ass

格式化的 ASS 輸出,字幕頁面和圖文電視頁面以不同的樣式傳回,字幕頁面被剝離為文字,但盡力保留文字對齊和格式。

txt_left

產生點陣圖的 X 偏移量,預設值為 0。

txt_top

產生點陣圖的 Y 偏移量,預設值為 0。

txt_chop_spaces

從產生的文字中刪除開頭和結尾空格並移除空白行。此選項對於基於圖文電視的字幕很有用,其中由於雙倍大小的圖文電視字元,可能會在行的開頭或結尾存在空格,或者在字幕行之間存在空白行。預設值為 1。

txt_duration

設定已解碼圖文電視頁面或字幕的顯示持續時間(以毫秒為單位)。預設值為 -1,表示無限期或直到下一個字幕事件到來。

txt_transparent

強制產生圖文電視點陣圖的透明背景。預設值為 0,表示不透明背景。

txt_opacity

設定圖文電視背景的不透明度 (0-255)。如果未設定 txt_transparent,則僅影響開始框和結束框之間的字元,通常是字幕。如果設定了 txt_transparent,則預設值為 0,否則為 255。

13 位元串流濾波器

當您組態 FFmpeg 建置時,預設會啟用所有支援的位元串流篩選器。您可以使用組態選項 --list-bsfs 列出所有可用的篩選器。

您可以使用組態選項 --disable-bsfs 停用所有位元串流篩選器,並使用選項 --enable-bsf=BSF 選擇性地啟用任何位元串流篩選器,或者您可以使用選項 --disable-bsf=BSF 停用特定的位元串流篩選器。

ff* 工具的選項 -bsfs 將顯示您的建置中包含的所有支援位元串流篩選器的清單。

ff* 工具具有每個串流套用的 -bsf 選項,採用逗號分隔的篩選器清單,其參數在篩選器名稱後以 ' = ' 分隔。

ffmpeg -i INPUT -c:v copy -bsf:v filter1[=opt1=str1:opt2=str2][,filter2] OUTPUT

以下是目前可用的位元串流篩選器的說明,以及它們的參數(如果有的話)。

13.1 aac_adtstoasc

將 MPEG-2/4 AAC ADTS 轉換為 MPEG-4 音訊特定組態位元串流。

此篩選器從 MPEG-2/4 ADTS 標頭建立 MPEG-4 AudioSpecificConfig,並移除 ADTS 標頭。

例如,當將 AAC 串流從原始 ADTS AAC 或 MPEG-TS 容器複製到 MP4A-LATM、FLV 檔案或 MOV/MP4 檔案和相關格式(例如 3GP 或 M4A)時,需要此篩選器。請注意,它會自動插入 MP4A-LATM 和 MOV/MP4 以及相關格式。

13.2 av1_metadata

修改嵌入在 AV1 串流中的中繼資料。

td

在串流的所有時間單位中插入或移除時間分隔符號 OBU。

insert

在每個尚未具有 TD 的 TU 開頭插入 TD。

remove

從每個具有 TD 的 TU 開頭移除 TD。

color_primaries
transfer_characteristics
matrix_coefficients

設定串流中的色彩描述欄位(請參閱 AV1 第 6.4.2 節)。

color_range

設定串流中的色彩範圍(請參閱 AV1 第 6.4.2 節;請注意,對於使用 BT.709 原色、sRGB 傳輸特性和身分 (RGB) 矩陣係數的串流,無法設定此項)。

tv

有限範圍。

pc

完整範圍。

chroma_sample_position

設定串流中的色度取樣位置(請參閱 AV1 第 6.4.2 節)。這只能針對 4:2:0 串流設定。

vertical

左側位置(符合 MPEG-2 和 H.264 中的預設值)。

colocated

左上角位置。

tick_rate

在序列標頭的計時資訊中設定刻度率 (time_scale / num_units_in_display_tick)。

num_ticks_per_picture

設定每個圖片中的刻度數,以指示串流具有固定影格速率。如果未同時設定 tick_rate,則忽略。

delete_padding

刪除填充 OBU。

13.3 chomp

移除封包結尾的零填充。

13.4 dca_core

從 DCA/DTS 串流中擷取核心,捨棄 DTS-HD 等擴充功能。

13.5 dovi_rpu

操作 HEVC/AV1 位元串流中的 Dolby Vision 中繼資料,可選擇性地啟用中繼資料壓縮。

strip

如果啟用,則從串流中剝離所有 Dolby Vision 中繼資料(組態記錄 + RPU 資料區塊)。

compression

要啟用的壓縮等級。

none

無中繼資料壓縮。

limited

有限的中繼資料壓縮方案。應與大多數裝置相容。這是預設值。

extended

延伸的中繼資料壓縮。裝置不需要支援此功能。請注意,此等級目前在 libavcodec 中的行為與 ‘limited’ 相同。

13.6 dump_extra

將額外資料新增至已篩選封包的開頭,除非所述封包已完全以打算新增的額外資料開頭。

freq

額外的引數指定應篩選哪些封包。它接受以下值

k
keyframe

將額外資料新增至所有關鍵封包

e
all

將額外資料新增至所有封包

如果未指定,則假定為 ‘k’。

例如,以下 ffmpeg 命令會強制 H.264 封包 (由 libx264 編碼器產生) 使用全域標頭 (因此停用個別封包標頭),但會將儲存在 extradata 中的標頭新增至關鍵封包來修正它們。

ffmpeg -i INPUT -map 0 -flags:v +global_header -c:v libx264 -bsf:v dump_extra out.ts

13.7 dv_error_marker

在 DV 中,標記為損壞的區塊會被指定顏色的區塊取代。

顏色

用於取代損壞區塊的顏色

sta

一個 16 位元遮罩,用於指定 16 種可能的錯誤狀態值中,哪些要被彩色區塊取代。預設值為 0xFFFE,會取代所有非 0 的錯誤狀態值。

ok

沒有錯誤,沒有隱藏

err

錯誤,沒有隱藏

res

保留

notok

錯誤或隱藏

notres

未保留

Aa, Ba, Ca, Ab, Bb, Cb, A, B, C, a, b, erri, erru

具體的錯誤狀態碼

請參閱第 44-46 頁或 http://web.archive.org/web/20060927044735/http://www.smpte.org/smpte_store/standards/pdf/s314m.pdf 的 5.5 節

13.8 eac3_core

從 E-AC-3 串流中提取核心,並捨棄額外聲道。

13.9 extract_extradata

提取帶內 extradata。

某些編碼器允許長期標頭 (例如 MPEG-2 序列標頭,或 H.264/HEVC 的 (VPS/)SPS/PPS) 以「帶內」(即作為包含編碼幀的位元串流的一部分) 或「帶外」(例如在容器層級) 傳輸。在 FFmpeg 術語中,後者形式稱為「extradata」。

這個位元串流濾鏡會偵測帶內標頭,並使其可用作 extradata。

移除

啟用此選項後,長期標頭會在提取後從位元串流中移除。

13.10 filter_units

從串流中移除類型在或不在給定集合中的單元。

pass_types

要通過的單元類型或單元類型範圍的列表,同時移除所有其他類型。這以 ‘|’ 分隔的單元類型值或以 ‘-’ 分隔的值範圍列表指定。

remove_types

pass_types 相同,不同之處在於給定集合中的單元會被移除,而所有其他單元都會通過。

pass_types 和 remove_types 使用的類型對應於 H.264、HEVC 和 H.266 中的 NAL 單元類型 (nal_unit_type) (請參閱 H.264 和 HEVC 規範中的表 7-1 或 H.266 規範中的表 5)、JPEG 的標記值 (不含 0xFF 前綴) 以及 MPEG-2 的不含起始碼前綴的起始碼 (即 0x000001 後面的位元組)。對於 VP8 和 VP9,每個單元的類型都為零。

Extradata 在此轉換中保持不變,但請注意,如果串流包含內聯參數集,則移除它們可能會導致輸出無法使用。

例如,要從 H.264 串流中移除所有非 VCL NAL 單元

ffmpeg -i INPUT -c:v copy -bsf:v 'filter_units=pass_types=1-5' OUTPUT

要從 H.265 串流中移除所有 AUD、SEI 和 filler

ffmpeg -i INPUT -c:v copy -bsf:v 'filter_units=remove_types=35|38-40' OUTPUT

要從 MPEG-2 串流中移除所有使用者資料,包括隱藏式字幕

ffmpeg -i INPUT -c:v copy -bsf:v 'filter_units=remove_types=178' OUTPUT

要從 H.264 串流中移除所有 SEI,包括隱藏式字幕

ffmpeg -i INPUT -c:v copy -bsf:v 'filter_units=remove_types=6' OUTPUT

要從 HEVC 串流中移除所有前綴和後綴 SEI,包括隱藏式字幕和動態 HDR

ffmpeg -i INPUT -c:v copy -bsf:v 'filter_units=remove_types=39|40' OUTPUT

13.11 hapqa_extract

無需重新壓縮,從 HAPQA 檔案中提取 Rgb 或 Alpha 部分,以建立 HAPQ 或 HAPAlphaOnly 檔案。

紋理

指定要保留的紋理。

顏色
alpha

將 HAPQA 轉換為 HAPQ

ffmpeg -i hapqa_inputfile.mov -c copy -bsf:v hapqa_extract=texture=color -tag:v HapY -metadata:s:v:0 encoder="HAPQ" hapq_file.mov

將 HAPQA 轉換為 HAPAlphaOnly

ffmpeg -i hapqa_inputfile.mov -c copy -bsf:v hapqa_extract=texture=alpha -tag:v HapA -metadata:s:v:0 encoder="HAPAlpha Only" hapalphaonly_file.mov

13.12 h264_metadata

修改嵌入在 H.264 串流中的元數據。

aud

在串流的所有存取單元中插入或移除 AUD NAL 單元。

pass
insert
remove

預設值為 pass。

sample_aspect_ratio

在 VUI 參數中設定串流的樣本縱橫比。請參閱 H.264 表格 E-1。

overscan_appropriate_flag

設定串流是否適合使用過掃描顯示 (請參閱 H.264 節 E.2.1)。

video_format
video_full_range_flag

在串流中設定視訊格式 (請參閱 H.264 節 E.2.1 和表格 E-2)。

colour_primaries
transfer_characteristics
matrix_coefficients

在串流中設定色彩描述 (請參閱 H.264 節 E.2.1 和表格 E-3、E-4 和 E-5)。

chroma_sample_loc_type

在串流中設定色度樣本位置 (請參閱 H.264 節 E.2.1 和圖 E-1)。

tick_rate

在 VUI 參數中設定滴答率 (time_scale / num_units_in_tick)。這是串流中可表示的最小時間單位,在許多情況下代表串流的場速率 (幀速率的兩倍)。

fixed_frame_rate_flag

設定串流是否具有固定幀速率 - 通常這表示幀速率正好是滴答率的一半,但確切含義取決於交錯掃描和圖像結構 (請參閱 H.264 節 E.2.1 和表格 E-6)。

zero_new_constraint_set_flags

將 SPS 中的 constraint_set4_flag 和 constraint_set5_flag 歸零。這些位元在先前版本的 H.264 規範中被保留,因此某些硬體解碼器要求它們為零。將其歸零的結果仍然是有效的位元串流。

crop_left
crop_right
crop_top
crop_bottom

在 SPS 中設定幀裁剪偏移量。如果串流已裁剪,這些值將取代目前的值。

這些欄位以像素為單位設定。請注意,如果色度被子採樣或串流是交錯掃描的,則某些大小可能無法表示 (請參閱 H.264 節 7.4.2.1.1)。

sei_user_data

插入字串作為 SEI 未註冊使用者資料。參數格式必須為 UUID+string,其中 UUID 是十六進制數字 (可以連字符分隔),字串可以是任何內容。

例如,‘086f3693-b7b3-4f2c-9653-21492feee5b8+hello’ 將插入與給定 UUID 關聯的字串 “hello”。

delete_filler

刪除填充 NAL 單元和填充 SEI 訊息。

display_orientation

插入、提取或移除顯示方向 SEI 訊息。有關語法和語義,請參閱 H.264 節 D.1.27 和 D.2.27。

pass
insert
remove
extract

預設值為 pass。

插入模式與 rotateflip 選項結合使用。任何預先存在的顯示方向訊息將在插入或移除模式下移除。提取模式將顯示矩陣作為側數據附加到封包。

rotate

在顯示方向 SEI 中設定旋轉 (逆時針角度,單位為度)。範圍為 -360 到 +360。預設值為 NaN。

flip

在顯示方向 SEI 中設定翻轉。

horizontal
vertical

預設為未設定。

level

在 SPS 中設定級別。請參閱 H.264 節 A.3 和表格 A-1 到 A-5。

參數必須是級別名稱 (例如,‘4.2’)、level_idc 值 (例如,‘42’),或特殊名稱 ‘auto’,表示濾鏡應嘗試從輸入串流屬性中猜測級別。

13.13 h264_mp4toannexb

將 H.264 位元串流從長度前綴模式轉換為起始碼前綴模式 (如 ITU-T H.264 規範附錄 B 中所定義)。

某些串流格式需要此操作,尤其是 MPEG-2 傳輸串流格式 (muxer mpegts)。

例如,要使用 ffmpeg 將包含 H.264 串流的 MP4 檔案重新混合為 mpegts 格式,您可以使用以下命令

ffmpeg -i INPUT.mp4 -codec copy -bsf:v h264_mp4toannexb OUTPUT.ts

請注意,此濾鏡會自動插入到 MPEG-TS (muxer mpegts) 和原始 H.264 (muxer h264) 輸出格式中。

13.14 h264_redundant_pps

這會對某些包含冗餘 PPS 的 Blu-ray BDMV H.264 串流應用特定的修復。PPS 會修改串流的不相關參數,混淆需要正確 extradata 的其他轉換。

在這些受影響的串流上使用的編碼器會在整個串流中新增額外的 PPS,改變初始 QP 以及是否啟用加權預測。這會在將串流複製到全域標頭容器後導致問題,因為起始 PPS 不適用於串流的其餘部分。例如,一個副作用是,在出現新的 PPS 之前,搜尋會傳回亂碼輸出。

此 BSF 會移除額外的 PPS,並重寫切片標頭,使串流在全域標頭中使用單一前導 PPS,從而解決此問題。

13.15 hevc_metadata

修改嵌入在 HEVC 串流中的元數據。

aud

在串流的所有存取單元中插入或移除 AUD NAL 單元。

insert
remove
sample_aspect_ratio

在 VUI 參數中設定串流的樣本縱橫比。

video_format
video_full_range_flag

在串流中設定視訊格式 (請參閱 H.265 節 E.3.1 和表格 E.2)。

colour_primaries
transfer_characteristics
matrix_coefficients

在串流中設定色彩描述 (請參閱 H.265 節 E.3.1 和表格 E.3、E.4 和 E.5)。

chroma_sample_loc_type

在串流中設定色度樣本位置 (請參閱 H.265 節 E.3.1 和圖 E.1)。

tick_rate

在 VPS 和 VUI 參數中設定滴答率 (time_scale / num_units_in_tick)。與 num_ticks_poc_diff_one 結合使用,這可以在串流中設定恆定幀速率。請注意,當串流在容器中時,它很可能會被容器參數覆寫。

num_ticks_poc_diff_one

在 VPS 和 VUI 中設定 poc_proportional_to_timing_flag,並使用此值設定 num_ticks_poc_diff_one_minus1 (請參閱 H.265 節 7.4.3.1 和 E.3.1)。如果未同時設定 tick_rate,則忽略此項。

crop_left
crop_right
crop_top
crop_bottom

在 SPS 中設定一致性視窗裁剪偏移量。如果串流已裁剪,這些值將取代目前的值。

這些欄位以像素為單位設定。請注意,如果色度被子採樣,則某些大小可能無法表示 (H.265 節 7.4.3.2.1)。

width
height

設定裁剪後的寬度和高度。

level

在 VPS 和 SPS 中設定級別。請參閱 H.265 節 A.4 和表格 A.6 和 A.7。

參數必須是級別名稱 (例如,‘5.1’)、general_level_idc 值 (例如,級別 5.1 的 ‘153’),或特殊名稱 ‘auto’,表示濾鏡應嘗試從輸入串流屬性中猜測級別。

13.16 hevc_mp4toannexb

將 HEVC/H.265 位元串流從長度前綴模式轉換為起始碼前綴模式 (如 ITU-T H.265 規範附錄 B 中所定義)。

某些串流格式需要此操作,尤其是 MPEG-2 傳輸串流格式 (muxer mpegts)。

例如,要使用 ffmpeg 將包含 HEVC 串流的 MP4 檔案重新混合為 mpegts 格式,您可以使用以下命令

ffmpeg -i INPUT.mp4 -codec copy -bsf:v hevc_mp4toannexb OUTPUT.ts

請注意,此濾鏡會自動插入到 MPEG-TS (muxer mpegts) 和原始 HEVC/H.265 (muxer h265hevc) 輸出格式中。

13.17 imxdump

修改位元串流以適應 MOV 並可供 Final Cut Pro 解碼器使用。此濾鏡僅適用於 mpeg2video 編碼解碼器,對於 Final Cut Pro 7 及更新版本,使用適當的 -tag:v 可能不需要此濾鏡。

例如,要將 30 MB/sec NTSC IMX 重新混合為 MOV

ffmpeg -i input.mxf -c copy -bsf:v imxdump -tag:v mx3n output.mov

13.18 mjpeg2jpeg

將 MJPEG/AVI1 封包轉換為完整的 JPEG/JFIF 封包。

MJPEG 是一種視訊編碼解碼器,其中每個視訊幀本質上都是 JPEG 圖像。可以無損地提取個別幀,例如透過

ffmpeg -i ../some_mjpeg.avi -c:v copy frames_%d.jpg

不幸的是,這些區塊是不完整的 JPEG 圖像,因為它們缺少解碼所需的 DHT 段。引述自 http://www.digitalpreservation.gov/formats/fdd/fdd000063.shtml

Avery Lee 在 2001 年於 rec.video.desktop 新聞群組中寫道:「MJPEG,或至少 AVI 中具有 MJPG fourcc 的 MJPEG,是受限制的 JPEG,具有固定的 - 且 *省略* - Huffman 表格。JPEG 必須是 YCbCr 色彩空間,必須是 4:2:2,並且必須使用基本的 Huffman 編碼,而不是算術或漸進式編碼。 ... 您確實可以提取 MJPEG 幀並使用常規 JPEG 解碼器解碼它們,但您必須在它們前面加上 DHT 段,否則解碼器將不知道如何解壓縮資料。OpenDML 規範中給出了必要的精確表格。」

這個位元串流濾鏡會修補從 MJPEG 串流 (帶有 AVI1 標頭 ID 且缺少 DHT 段) 提取的幀的標頭,以產生完全合格的 JPEG 圖像。

ffmpeg -i mjpeg-movie.avi -c:v copy -bsf:v mjpeg2jpeg frame_%d.jpg
exiftran -i -9 frame*.jpg
ffmpeg -i frame_%d.jpg -c:v copy rotated.avi

13.19 mjpegadump

將 MJPEG A 標頭添加到位元串流,以啟用 Quicktime 解碼。

13.20 mov2textsub

從 MOV 字幕中提取可表示的文字檔案,並從每個字幕封包中剝離元數據標頭。

另請參閱 text2movsub 濾鏡。

13.21 mpeg2_metadata

修改嵌入在 MPEG-2 串流中的元數據。

display_aspect_ratio

設定串流中的顯示縱橫比。

支援以下固定值

4/3
16/9
221/100

任何其他值都將導致改為發出正方形像素訊號 (請參閱 H.262 節 6.3.3 和表格 6-3)。

frame_rate

設定串流中的幀速率。這是從已知值表格結合一個小的乘數和除數構建的 - 如果提供的數值無法精確表示,則會改用最接近的可表示值 (請參閱 H.262 節 6.3.3 和表格 6-4)。

video_format

在串流中設定視訊格式 (請參閱 H.262 節 6.3.6 和表格 6-6)。

colour_primaries
transfer_characteristics
matrix_coefficients

在串流中設定色彩描述 (請參閱 H.262 節 6.3.6 和表格 6-7、6-8 和 6-9)。

13.22 mpeg4_unpack_bframes

解壓縮 DivX 樣式的封裝 B 幀。

DivX 樣式的封裝 B 幀不是有效的 MPEG-4,只是針對損壞的 Video for Windows 子系統的權宜之計。它們佔用更多空間、可能導致輕微的影音同步問題、需要更多 CPU 功率來解碼 (除非播放器具有一些解碼圖片佇列來補償每個封包 2,0,2,0 幀的樣式),並且如果複製到標準容器 (如 mp4 或 mpeg-ps/ts) 中,則會引起麻煩,因為 MPEG-4 解碼器可能無法解碼它們,因為它們不是有效的 MPEG-4。

例如,要使用 ffmpeg 修復包含具有 DivX 樣式封裝 B 幀的 MPEG-4 串流的 AVI 檔案,您可以使用以下命令

ffmpeg -i INPUT.avi -codec copy -bsf:v mpeg4_unpack_bframes OUTPUT.avi

13.23 noise

損壞封包的內容,或僅僅丟棄它們而不損壞容器。可用於模糊測試或測試錯誤彈性/隱藏。

參數

amount

接受一個表達式,其每個封包的評估結果決定了該封包中位元組被修改的頻率。小於 0 的值將導致可變頻率。預設值為 0,表示不修改。但是,如果未指定 amount 和 drop,則 amount 將設定為 -1。請參閱下方以了解接受的變數。

drop

接受一個每個封包評估的表達式,其值決定是否丟棄該封包。評估為正值會導致封包被丟棄。評估為負值會導致封包被丟棄的可變機率,大致與值的幅度成反比。預設值為 0,表示不丟棄。請參閱下方以了解接受的變數。

dropamount

接受一個非負整數,它會指定封包被丟棄的可變機率,大致與值成反比。預設值為 0,表示不丟棄。保留此選項是為了向後兼容,它等效於將 drop 設定為具有相同幅度的負值,即 dropamount=4drop=-4 相同。如果也指定了 drop,則忽略此選項。

amountdrop 都接受包含以下變數的表達式

n

封包的索引,從零開始。

tb

封包時間戳的時間基底。

pts

封包呈現時間戳。

dts

封包解碼時間戳。

nopts

代表 AV_NOPTS_VALUE 的常數。

startpts

在串流中看到的第一個非 AV_NOPTS_VALUE PTS。

startdts

在串流中看到的第一個非 AV_NOPTS_VALUE DTS。

duration
d

封包持續時間,以時間基底單位表示。

pos

封包在輸入中的位置;未知或未設定時可能為 -1。

size

封包大小,以位元組為單位。

key

封包是否標記為關鍵幀。

state

一個偽隨機整數,主要從封包酬載的內容衍生而來。

13.23.1 範例

將修改應用於每個位元組,但不丟棄任何封包。

ffmpeg -i INPUT -c copy -bsf noise=1 output.mkv

在時間戳 30 秒後丟棄每個未標記為關鍵幀的視訊封包,但不修改任何剩餘的封包。

ffmpeg -i INPUT -c copy -bsf:v noise=drop='gt(t\,30)*not(key)' output.mkv

每 10 秒丟棄一秒音訊,並在剩餘部分添加一些隨機雜訊。

ffmpeg -i INPUT -c copy -bsf:a noise=amount=-1:drop='between(mod(t\,10)\,9\,10)' output.mkv

13.24 null

這個位元串流濾鏡會讓封包保持不變地通過。

13.25 pcm_rechunk

將 PCM 音訊重新封包化為每個封包固定數量的樣本或每秒固定的封包速率。這與 (ffmpeg-filters)asetnsamples 音訊濾鏡 類似,但適用於音訊封包而不是音訊幀。

nb_out_samples, n

設定每個輸出音訊封包的樣本數。此數字旨在作為每個聲道的樣本數。預設值為 1024。

填充, p

若設定為 1,此濾鏡會在最後一個音訊封包中填充靜音,使其包含與前一個封包相同(或大致相同,請參閱 frame_rate)的樣本數。預設值為 1。

影格率, r

此選項使濾鏡每秒輸出固定數量的封包,而不是每個封包固定數量的樣本。如果音訊取樣率無法被影格率整除,則樣本數將不會恆定,而是會略有變化,以便每個封包盡可能接近影格邊界開始。使用此選項的優先順序高於 nb_out_samples

您可以使用 frame_rate 選項,針對 NTSC 影格率產生廣為人知的 1602-1601-1602-1601-1602 模式的 48kHz 音訊。

ffmpeg -f lavfi -i sine=r=48000:d=1 -c pcm_s16le -bsf pcm_rechunk=r=30000/1001 -f framecrc -

13.26 pgs_frame_merge

將以「顯示設定結束」區段結尾的 PGS 字幕區段序列合併為單一封包。

某些支援 PGS 字幕的容器(多工器 matroska)需要此功能。

13.27 prores_metadata

修改嵌入在 ProRes 串流中的色彩屬性元數據。

color_primaries

設定色彩原色。可用值為

auto

保留相同的色彩原色屬性(預設)。

unknown
bt709
bt470bg

BT.601 625

smpte170m

BT.601 525

bt2020
smpte431

DCI-P3

smpte432

P3-D65

transfer_characteristics

設定色彩轉換。可用值為

auto

保留相同的轉換特性屬性(預設)。

unknown
bt709

BT.601、BT.709、BT.2020

smpte2084

SMPTE ST 2084

arib-std-b67

ARIB STD-B67

matrix_coefficients

設定矩陣係數。可用值為

auto

保留相同的色彩空間屬性(預設)。

unknown
bt709
smpte170m

BT.601

bt2020nc

為檔案的每個影格設定 Rec.709 色彩空間

ffmpeg -i INPUT -c copy -bsf:v prores_metadata=color_primaries=bt709:color_trc=bt709:colorspace=bt709 output.mov

為檔案的每個影格設定混合對數伽瑪參數

ffmpeg -i INPUT -c copy -bsf:v prores_metadata=color_primaries=bt2020:color_trc=arib-std-b67:colorspace=bt2020nc output.mov

13.28 remove_extra

從封包中移除額外數據。

它接受以下參數

freq

設定要從哪些影格類型移除額外數據。

k

僅從非關鍵影格移除額外數據。

keyframe

僅從關鍵影格移除額外數據。

e, all

從所有影格移除額外數據。

13.29 setts

在封包中設定 PTS 和 DTS。

它接受以下參數

ts
pts
dts

為 PTS、DTS 或兩者皆設定表達式。

duration

為 duration 設定表達式。

time_base

設定輸出時基。

表達式會透過 eval API 進行評估,且可以包含以下常數

N

輸入封包的計數。從 0 開始。

TS

在使用 tsdts 選項時,為輸入中的解多工時間戳記,或在使用 pts 選項時,為呈現時間戳記。

POS

封包在檔案中的原始位置,如果目前封包未定義,則為未定義。

DTS

輸入中的解多工時間戳記。

PTS

輸入中的呈現時間戳記。

DURATION

輸入中的持續時間。

STARTDTS

第一個封包的 DTS。

STARTPTS

第一個封包的 PTS。

PREV_INDTS

前一個輸入 DTS。

PREV_INPTS

前一個輸入 PTS。

PREV_INDURATION

前一個輸入持續時間。

PREV_OUTDTS

前一個輸出 DTS。

PREV_OUTPTS

前一個輸出 PTS。

PREV_OUTDURATION

前一個輸出持續時間。

NEXT_DTS

下一個輸入 DTS。

NEXT_PTS

下一個輸入 PTS。

NEXT_DURATION

下一個輸入持續時間。

TB

串流封包所屬的時基。

TB_OUT

輸出時基。

SR

串流封包所屬的取樣率。

NOPTS

AV_NOPTS_VALUE 常數。

例如,若要將 PTS 設定為等於 DTS(如果涉及 B 影格,則不建議)

ffmpeg -i INPUT -c:a copy -bsf:a setts=pts=DTS out.mkv

13.30 showinfo

記錄基本封包資訊。主要用於測試、除錯和開發。

13.31 text2movsub

將文字字幕轉換為 MOV 字幕(如 mov_text 編碼器所用)並帶有元數據標頭。

另請參閱 mov2textsub 濾鏡。

13.32 trace_headers

記錄追蹤輸出,其中包含編碼串流標頭中的所有語法元素(高於個別編碼區塊層級的所有內容)。這對於除錯低階串流問題可能很有用。

支援 AV1、H.264、H.265、(M)JPEG、MPEG-2 和 VP9,但根據建置版本,可能只有其中一部分可用。

13.33 truehd_core

從 TrueHD 串流中提取核心,並捨棄 ATMOS 數據。

13.34 vp9_metadata

修改嵌入在 VP9 串流中的元數據。

color_space

在影格標頭中設定色彩空間值。請注意,任何設定為 RGB 的影格都會隱含地設定為 PC 範圍,且 RGB 與設定檔 0 和 2 不相容。

unknown
bt601
bt709
smpte170
smpte240
bt2020
rgb
color_range

在影格標頭中設定色彩範圍值。請注意,色彩空間所施加的任何值都將優先於此值。

tv
pc

13.35 vp9_superframe

將 VP9 隱形(alt-ref)影格合併回 VP9 超級影格。這修正了分割/分段 VP9 串流的合併問題,其中 alt-ref 影格從其可見的對應影格中分割出來。

13.36 vp9_superframe_split

將 VP9 超級影格分割為單一影格。

13.37 vp9_raw_reorder

假設 VP9 串流具有正確的時間戳記,但可能順序錯亂,則插入額外的 show-existing-frame 封包以修正順序。

14 格式選項

libavformat 函式庫提供了一些通用的全域選項,這些選項可以在所有多工器和解多工器上設定。此外,每個多工器或解多工器可能支援所謂的私有選項,這些選項是特定於該元件的。

選項可以透過在 FFmpeg 工具中指定 -option value 來設定,或透過在 AVFormatContext 選項中明確設定值,或使用 libavutil/opt.h API 以程式方式使用來設定。

以下是支援選項的清單

avioflags flags (輸入/輸出)

可能的值

direct

減少緩衝。

probesize integer (輸入)

以位元組為單位設定探測大小,即分析數據以取得串流資訊的大小。較高的值將能夠偵測到更多分散在串流中的資訊,但會增加延遲。必須是不小於 32 的整數。預設值為 5000000。

max_probe_packets integer (輸入)

設定探測編碼器時緩衝封包的最大數量。預設值為 2500 個封包。

packetsize integer (輸出)

設定封包大小。

fflags flags

設定格式旗標。其中一些是針對有限數量的格式實作的。

輸入檔案的可能值

discardcorrupt

捨棄損壞的封包。

fastseek

針對某些格式啟用快速但不精確的搜尋。

genpts

如果 DTS 存在,則產生遺失的 PTS。

igndts

如果也設定了 PTS,則忽略 DTS。在設定 PTS 的情況下,DTS 值會設定為 NOPTS。當設定 nofillin 旗標時,這會被忽略。

ignidx

忽略索引。

nobuffer

減少在初始輸入串流分析期間,因緩衝而造成的延遲。

nofillin

不要在可以精確計算的封包欄位中填入遺失的值。

noparse

停用 AVParsers,這也需要 +nofillin

sortdts

嘗試依 DTS 交錯輸出封包。目前,僅適用於具有索引的 AVI。

輸出檔案的可能值

autobsf

根據輸出格式的需求,自動套用位元串流濾鏡。預設為啟用。

bitexact

僅寫入與平台、建置和時間無關的數據。這確保檔案和數據校驗和是可重現的,並且在平台之間匹配。其主要用途是用於回歸測試。

flush_packets

立即寫出封包。

shortest

在最短串流結束時停止多工。可能需要增加 max_interleave_delta 以避免在 EOF 之前刷新較長的串流。

seek2any integer (輸入)

如果設定為 1,則在支援時允許在解多工器層級搜尋非關鍵影格。預設值為 0。

analyzeduration integer (輸入)

指定分析多少微秒來探測輸入。較高的值將能夠偵測到更準確的資訊,但會增加延遲。預設值為 5,000,000 微秒 = 5 秒。

cryptokey 十六進位字串 (輸入)

設定解密金鑰。

indexmem integer (輸入)

設定用於時間戳記索引的最大記憶體(每個串流)。

rtbufsize integer (輸入)

設定用於緩衝即時影格的最大記憶體。

fdebug flags (輸入/輸出)

印出特定的除錯資訊。

可能的值

ts
max_delay integer (輸入/輸出)

以微秒為單位設定最大多工或解多工延遲。

fpsprobesize integer (輸入)

設定用於探測 fps 的影格數量。

audio_preload integer (輸出)

設定音訊封包應提前交錯的微秒數。

chunk_duration integer (輸出)

為每個區塊設定微秒數。

chunk_size integer (輸出)

為每個區塊設定以位元組為單位的尺寸。

err_detect, f_err_detect flags (輸入)

設定錯誤偵測旗標。f_err_detect 已被棄用,應僅透過 ffmpeg 工具使用。

可能的值

crccheck

驗證嵌入的 CRC。

bitstream

偵測位元串流規格偏差。

buffer

偵測不正確的位元串流長度。

explode

在偵測到次要錯誤時中止解碼。

careful

將違反規格且未在實際應用中看到的內容視為錯誤。

compliant

將所有規格不符之處視為錯誤。

aggressive

將健全編碼器不應執行的操作視為錯誤。

max_interleave_delta integer (輸出)

設定交錯的最大緩衝持續時間。持續時間以微秒為單位表示,預設值為 10000000(10 秒)。

為了確保所有串流都正確交錯,libavformat 會等到每個串流都至少有一個封包,然後才實際將任何封包寫入輸出檔案。當某些串流「稀疏」(即連續封包之間存在較大間隙)時,這可能會導致過度緩衝。

此欄位指定多工佇列中第一個和最後一個封包的時間戳記之間的最大差異,超過此差異後,無論 libavformat 是否已為所有串流排隊封包,都會輸出封包。

如果設定為 0,libavformat 將繼續緩衝封包,直到每個串流都有一個封包為止,無論緩衝封包之間的最大時間戳記差異為何。

use_wallclock_as_timestamps integer (輸入)

如果設定為 1,則使用系統時鐘作為時間戳記。預設值為 0。

avoid_negative_ts integer (輸出)

可能的值

make_non_negative

移動時間戳記以使其為非負數。另請注意,這僅影響前導負時間戳記,而不影響非單調負時間戳記。

make_zero

移動時間戳記,使第一個時間戳記為 0。

auto (預設)

在目標格式需要時啟用移動。

disabled

停用時間戳記的移動。

啟用移動時,所有輸出時間戳記都會移動相同的量。與不移動的情況相比,音訊、視訊和字幕的失步以及相對時間戳記差異會被保留。

skip_initial_bytes integer (輸入)

如果設定為 1,則設定在讀取標頭和影格之前要跳過的位元組數。預設值為 0。

correct_ts_overflow integer (輸入)

如果設定為 1,則修正單一時間戳記溢位。預設值為 1。

flush_packets integer (輸出)

在每個封包之後刷新底層 I/O 串流。預設值為 -1(自動),這表示底層協定將決定,1 啟用它,並具有減少延遲的效果,0 停用它,並且在某些情況下可能會增加 IO 吞吐量。

output_ts_offset offset (輸出)

設定輸出時間偏移量。

offset 必須是時間長度規格,請參閱 ffmpeg-utils(1) 手冊中的「時間長度」章節。

偏移量由多工器添加到輸出時間戳記。

指定正偏移量表示對應的串流會延遲 offset 中指定的時間長度。預設值為 0(表示不套用偏移量)。

format_whitelist list (輸入)

允許的解多工器之「,」分隔清單。預設情況下,允許所有解多工器。

dump_separator string (輸入)

用於分隔命令列上列印的有關串流參數的欄位的分隔符號。例如,要使用換行符和縮排分隔欄位

ffprobe -dump_separator "
                          "  -i ~/videos/matrixbench_mpeg2.mpg
max_streams integer (輸入)

指定串流的最大數量。這可以用於拒絕因大量串流而需要過多資源的檔案。

skip_estimate_duration_from_pts bool (輸入)

如果需要額外探測檔案結尾的 PTS,則跳過輸入持續時間的估計。目前,適用於 MPEG-PS 和 MPEG-TS。

duration_probesize integer (輸入)

設定探測大小 (位元組),用於輸入持續時間估算,當實際需要在檔案結尾額外探測 PTS 時 (目前:MPEG-PS 和 MPEG-TS)。其目標使用者是對自身或間接 (例如,因為使用 concat 解多工器) 更好的持續時間探測感興趣的使用者。典型的使用情境是 MPEG-TS CBR,具有高位元率、高視訊緩衝,並以類似於視訊和音訊的 PTS 結束清理:在這種情況下,最後一個視訊封包和最後一個音訊封包之間的大物理間隙使得需要讀取許多位元組才能獲得視訊串流持續時間。另一個使用情境是預設探測行為僅達到單個視訊影格,由於影格重新排序,該影格不是串流的最後一個影格,因此持續時間不準確。即使對於小檔案,設定此選項也會產生效能影響,因為探測大小是固定的。預設行為是一種通用的權衡方案,在很大程度上是自適應的,但探測大小不會擴展到不惜一切代價獲取串流持續時間。必須是不小於 1 的整數,或 0 表示預設行為。

strict, f_strict integer (輸入/輸出)

指定嚴格遵循標準的程度。f_strict 已被棄用,僅應透過 ffmpeg 工具使用。

可能的值

very

嚴格遵守較舊、更嚴格版本的規範或參考軟體

strict

嚴格遵守規範中的所有內容,無論後果如何

normal
unofficial

允許非官方擴展

experimental

允許非標準化的實驗性事物、實驗性(未完成/正在進行中/未經良好測試)解碼器和編碼器。注意:實驗性解碼器可能構成安全風險,請勿將其用於解碼不受信任的輸入。

14.1 格式串流指定器

格式串流指定器允許選擇一個或多個符合特定屬性的串流。

串流指定器的確切語義由 avformat_match_stream_specifier() 函數定義,該函數在 libavformat/avformat.h 標頭中宣告,並在 (ffmpeg)Stream specifiers section in the ffmpeg(1) manual 中記錄。

15 解多工器

解多工器是 FFmpeg 中配置的元件,可以從特定類型的文件中讀取多媒體串流。

當您配置 FFmpeg 建置時,所有支援的解多工器預設為啟用。您可以使用配置選項 --list-demuxers 列出所有可用的解多工器。

您可以使用配置選項 --disable-demuxers 停用所有解多工器,並使用選項 --enable-demuxer=DEMUXER 選擇性地啟用單個解多工器,或使用選項 --disable-demuxer=DEMUXER 停用它。

ff* 工具的選項 -demuxers 將顯示已啟用的解多工器列表。使用 -formats 查看已啟用的解多工器和多工器的組合列表。

以下是一些目前可用的解多工器的描述。

15.1 aa

Audible Format 2、3 和 4 解多工器。

此解多工器用於解多工 Audible Format 2、3 和 4 (.aa) 檔案。

15.2 aac

原始音訊資料傳輸串流 AAC 解多工器。

此解多工器用於解多工包含單個 AAC 串流以及其中任何 ID3v1/2 或 APE 標籤的 ADTS 輸入。

15.3 apng

動畫可攜式網路圖形解多工器。

此解多工器用於解多工 APNG 檔案。所有標頭,但 PNG 簽名,直到 (但不包括) 第一個 fcTL 區塊都作為額外資料傳輸。然後將影格分割為兩個 fcTL 區塊之間或最後一個 fcTL 和 IEND 區塊之間的所有區塊。

-ignore_loop bool

如果設定,則忽略檔案中的迴圈變數。預設為啟用。

-max_fps int

最大影格率,單位為每秒影格數。預設值 0 表示沒有限制。

-default_fps int

檔案中未指定時的預設影格率,單位為每秒影格數 (0 表示盡可能快)。預設值為 15。

15.4 asf

進階系統格式解多工器。

此解多工器用於解多工 ASF 檔案和 MMS 網路串流。

-no_resync_search bool

不要嘗試透過尋找特定的可選啟動碼來重新同步。

15.5 concat

虛擬串聯腳本解多工器。

此解多工器從文字檔案讀取檔案和其他指令的列表,並將它們一個接一個地解多工,就好像它們的所有封包都已多工在一起一樣。

檔案中的時間戳記會被調整,以便第一個檔案從 0 開始,而每個後續檔案都從前一個檔案結束的位置開始。請注意,這是全域完成的,如果所有串流的長度不完全相同,可能會導致間隙。

所有檔案必須具有相同的串流 (相同的編解碼器、相同的時間基準等)。

每個檔案的持續時間用於調整下一個檔案的時間戳記:如果持續時間不正確 (因為它是使用位元率計算的,或者因為檔案被截斷,例如),則可能會導致瑕疵。可以使用 duration 指令來覆寫每個檔案中儲存的持續時間。

15.5.1 語法

腳本是一個擴充 ASCII 文字檔案,每行一個指令。空白行、前導空格和以 '#' 開頭的行將被忽略。以下指令被識別

file path

要讀取的檔案路徑;特殊字元和空格必須使用反斜線或單引號逸出。

所有後續與檔案相關的指令都適用於該檔案。

ffconcat version 1.0

識別腳本類型和版本。

為了使 FFmpeg 自動識別格式,此指令必須完全按原樣出現在腳本的第一行 (沒有額外空格或位元組順序標記)。

duration dur

檔案的持續時間。此資訊可以從檔案中指定;在此處指定它可能更有效,或者在檔案中的資訊不可用或不準確時有所幫助。

如果為所有檔案設定了持續時間,則可以在整個串聯視訊中搜尋。

inpoint timestamp

檔案的進入點。當解多工器開啟檔案時,它會立即搜尋到指定的時間戳記。進行搜尋是為了使所有串流都可以在進入點成功呈現。

此指令最適用於影格內編解碼器,因為對於非影格內編解碼器,您通常會在實際進入點之前獲得額外的封包,並且解碼後的內容很可能也包含進入點之前的影格。

對於每個檔案,檔案進入點之前的封包的時間戳記將小於檔案的計算開始時間戳記 (在第一個檔案的情況下為負數),並且檔案的持續時間 (如果未由 duration 指令指定) 將根據其指定的進入點而縮短。

由於指定的進入點之前可能存在封包,因此封包時間戳記可能在兩個串聯的檔案之間重疊。

outpoint timestamp

檔案的退出點。當解多工器在任何串流中達到指定的解碼時間戳記時,它會將其視為檔案結束條件,並跳過當前和所有剩餘的來自所有串流的封包。

退出點是互斥的,這表示解多工器不會輸出解碼時間戳記大於或等於退出點的封包。

此指令最適用於影格內編解碼器和所有串流緊密交錯的格式。對於非影格內編解碼器,您通常會在退出點之後獲得具有呈現時間戳記的額外封包,因此解碼後的內容很可能也包含退出點之後的影格。如果您的串流沒有緊密交錯,您可能無法從退出點之前的所有串流中獲得所有封包,並且您可能只能解碼最早的串流直到退出點。

檔案的持續時間 (如果未由 duration 指令指定) 將根據其指定的退出點而縮短。

file_packet_metadata key=value

檔案封包的中繼資料。指定的中繼資料將為每個檔案封包設定。您可以多次指定此指令以新增多個中繼資料條目。此指令已棄用,請改用 file_packet_meta

file_packet_meta key value

檔案封包的中繼資料。指定的中繼資料將為每個檔案封包設定。您可以多次指定此指令以新增多個中繼資料條目。

option key value

用於存取、開啟和探測檔案的選項。可以多次出現。

stream

在虛擬檔案中引入串流。所有後續與串流相關的指令都適用於最後引入的串流。必須設定一些串流屬性,以便允許識別子檔案中的匹配串流。如果在腳本中未定義串流,則複製第一個檔案中的串流。

exact_stream_id id

設定串流的 ID。如果給出此指令,將使用子檔案中具有相應 ID 的字串。這對於 MPEG-PS (VOB) 檔案特別有用,其中串流的順序不可靠。

stream_meta key value

串流的中繼資料。可以多次出現。

stream_codec value

串流的編解碼器。

stream_extradata hex_string

字串的額外資料,以十六進制編碼。

chapter id start end

新增章節。id 是一個唯一的識別碼,可能是小的且連續的。

15.5.2 選項

此解多工器接受以下選項

safe

如果設定為 1,則拒絕不安全的文件路徑和指令。如果檔案路徑不包含協定規範、是相對路徑,並且所有元件僅包含可攜式字元集中的字元 (字母、數字、句點、底線和連字號) 且元件開頭沒有句點,則該檔案路徑被視為安全。

如果設定為 0,則接受任何檔案名稱。

預設值為 1。

auto_convert

如果設定為 1,則嘗試對封包資料執行自動轉換,以使串流可串聯。預設值為 1。

目前,唯一的轉換是將 h264_mp4toannexb 位元串流篩選器新增到 MP4 格式的 H.264 串流。當解析度發生變化時,這尤其必要。

segment_time_metadata

如果設定為 1,則每個封包都將包含 lavf.concat.start_timelavf.concat.duration 封包中繼資料值,這些值是串聯輸出中各個檔案片段的開始時間和持續時間,以微秒為單位表示。僅當基於串聯檔案已知持續時間時,才會設定持續時間中繼資料。預設值為 0。

15.5.3 範例

  • 使用絕對檔案名稱並包含一些註解
    # my first filename
    file /mnt/share/file-1.wav
    # my second filename including whitespace
    file '/mnt/share/file 2.wav'
    # my third filename including whitespace plus single quote
    file '/mnt/share/file 3'\''.wav'
    
  • 允許輸入格式自動探測,使用安全檔案名稱並設定第一個檔案的持續時間
    ffconcat version 1.0
    
    file file-1.wav
    duration 20.0
    
    file subdir/file-2.wav
    

15.6 dash

動態自適應 HTTP 串流解多工器。

此解多工器呈現資訊清單中找到的所有 AVStream。透過設定 AVStream 上的捨棄標誌,呼叫者可以決定實際接收哪些串流。每個串流都鏡像來自 <Representation>idbandwidth 屬性,作為名為 "id" 和 "variant_bitrate" 的中繼資料金鑰。

15.6.1 選項

此解多工器接受以下選項

cenc_decryption_key

16 位元組金鑰,以十六進制表示,用於解密使用 ISO 通用加密 (CENC/AES-128 CTR;ISO/IEC 23001-7) 加密的檔案。

15.7 dvdvideo

DVD-Video 解多工器,由 libdvdnav 和 libdvdread 提供支援。

可以直接將 DVD 標題 (特別是循序 PGC) 提取到轉換管道中。選單資產,例如背景視訊或音訊,也可以在給定選單座標的情況下解多工 (盡力而為)。

接受區塊裝置 (DVD 光碟機)、ISO 檔案和目錄結構。在這些輸入之一的前面使用 -f dvdvideo 啟動。

此解多工器沒有任何類型的解密程式碼。您需要自行處理加密的 DVD,並且不應期望在此問題上獲得支援。

底層播放由 libdvdnav 處理,結構解析由 libdvdread 處理。FFmpeg 必須在 GPL 程式庫支援可用的情況下建置,以及配置開關 --enable-libdvdnav--enable-libdvdread

您將需要提供所需的「標題編號」或確切的 PGC/PG 座標。許多開放原始碼 DVD 播放器和工具可以幫助提供此資訊。如果未指定,解多工器將預設為標題 1,這適用於許多光碟。但是,由於格式的靈活性,建議手動檢查。有許多光碟的製作方式很奇怪或標頭無效。

如果輸入是真實的 DVD 光碟機,請注意,有些光碟機可能會在從光碟讀取壞扇區時靜默失敗,而是傳回隨機位元,這實際上是損壞的資料。這在老化的或腐爛的光碟上尤其突出。需要進行第二次掃描和完整性檢查以檢測損壞。這不是 FFmpeg 問題。

15.7.1 背景

DVD-Video 不是傳統意義上可直接存取的線性容器格式。相反,它允許對儲存在無標頭 VOB 檔案中的仔細多工的 MPEG-PS 串流進行複雜且程式化的播放。對於最終使用者而言,這些串流簡稱為「標題」,但實際的邏輯播放順序是由標題內的一個或多個「PGC」或節目群組鏈定義的。PGC 又由多個「PG」或「節目」組成,這些節目是實際的視訊片段 (對於典型的視訊功能,是依序排列的)。PGC 結構以及串流佈局和中繼資料儲存在需要解析的 IFO 檔案中。PGC 可以更容易地被認為是播放列表。

實際的 DVD 播放器依賴於透過選單和內部 VM 的使用者 GUI 互動來驅動解多工的方向。通常,使用者將導航 (透過選單) 或自動重新導向到他們選擇的 PGC。在此過程和後續播放期間,DVD 播放器的內部 VM 還會維護狀態並執行指令,這些指令可以在播放期間建立跳轉到不同扇區。這就是為什麼 libdvdnav 會參與的原因,因為線性讀取光碟上的 MPEG-PS Blob (VOB) 在許多情況下不足以產生正確的順序。

還有許多其他 DVD 結構 (一個很長的主題) 在此不作討論。特別是,NAV 封包由此解多工器處理以建立準確的計時,但不作為串流發射。如需良好的高階理解,請參閱:https://code.videolan.org/videolan/libdvdnav/-/blob/master/doc/dvd_structures

15.7.2 選項

此解多工器接受以下選項

title int

要播放的標題編號。如果未設定 pgcpg,則必須設定。不適用於選單。預設值為 0 (自動),目前僅選擇第一個可用的標題 (標題 1) 並通知使用者有關含義。

chapter_start int

要開始的章節或 PTT (標題的一部分) 編號。不適用於選單。預設值為 1。

chapter_end int

要結束的章節或 PTT (標題的一部分) 編號。不適用於選單。預設值為 0,這是一個特殊值,表示在最後一個可能的章節結束。

angle int

視訊角度編號,指的是基本上是從 VOB 中交錯的備用影格組成的額外視訊串流。不適用於選單。預設值為 1。

region int

用於播放的區域代碼。某些光碟可能會使用此代碼在不同區域預設以特定角度播放。如果用作輸入,則此選項不會影響真實 DVD 光碟機的區域代碼。不適用於選單。預設值為 0,「世界」。

menu bool

解多工選單資產而不是導航標題。需要選單的確切座標 (menu_lumenu_vtspgcpg)。預設值為 false。

menu_lu int

要解多工的選單語言。在 DVD 中,選單按語言分組。預設值為 1,第一個語言單元。

menu_vts int

選單所在的 VTS,如果是 VMG 選單 (根層級),則為 0。預設值為 1,第一個 VTS 的選單。

pgc int

要開始播放的進入 PGC,與 pg 結合使用。替代設定 title。目前不支援章節標記。對於選單必須明確設定。預設值為 0,從 title 的值自動解析。

pg int

開始播放的 PG 條目,與 pgc 結合使用。替代設定 title 的選項。目前不支援章節標記。預設值為 1,PGC 的第一個 PG。

preindex bool

啟用此選項可獲得精確的章節 (PTT) 標記和持續時間測量,這需要慢速的第二次讀取,以便從 NAV 封包索引章節標記時間戳記。對於真實光碟機來說,這是不理想的額外工作。建議且更快速的做法是,搭配儲存在硬碟上的 DVD 結構備份使用此選項。與 pgcpg 不相容。預設值為 0,false。

trim bool

跳過開頭的填充單元格(即短於 1 秒的單元格)。許多光碟在 PGC 的開頭存在填充片段,這些片段通常包含用於控制真實 DVD 播放器緩衝速度的垃圾數據,而沒有其他實質的數據值。不適用於選單。預設值為 1,true。

15.7.3 範例

  • 從給定的 DVD 結構開啟標題 3
    ffmpeg -f dvdvideo -title 3 -i <path to DVD> ...
    
  • 從給定的 DVD 結構從標題 1 開啟章節 3-6
    ffmpeg -f dvdvideo -chapter_start 3 -chapter_end 6 -title 1 -i <path to DVD> ...
    
  • 從給定的 DVD 結構從標題 1 僅開啟章節 5
    ffmpeg -f dvdvideo -chapter_start 5 -chapter_end 5 -title 1 -i <path to DVD> ...
    
  • 從 VTS 1、PGC 1 解多工語言 1 的選單,從 PG 1 開始
    ffmpeg -f dvdvideo -menu 1 -menu_lu 1 -menu_vts 1 -pgc 1 -pg 1 -i <path to DVD> ...
    

15.8 ea

Electronic Arts 多媒體格式解多工器。

此格式由各種 Electronic Arts 遊戲使用。

15.8.1 選項

merge_alpha bool

正常情況下,VP6 Alpha 通道(如果存在)會作為次要視訊串流傳回,透過設定此選項,您可以讓解多工器傳回單一視訊串流,其中包含 Alpha 通道以及普通視訊。

15.9 imf

可互通主帶格式解多工器。

此解多工器呈現 IMF 組合中找到的音訊和視訊串流,如 SMPTE ST 2067-2 中所指定。

ffmpeg [-assetmaps <path of ASSETMAP1>,<path of ASSETMAP2>,...] -i <path of CPL> ...

如果未指定 -assetmaps,則解多工器會在與 CPL 相同的目錄中尋找名為 ASSETMAP.xml 的檔案。

15.10 flv, live_flv, kux

Adobe Flash 視訊格式解多工器。

此解多工器用於解多工 FLV 檔案和 RTMP 網路串流。在即時網路串流的情況下,如果您強制格式,可以使用 live_flv 選項而不是 flv,以應對時間戳記不連續的情況。KUX 是 Youku 平台上使用的 FLV 變體。

ffmpeg -f flv -i myfile.flv ...
ffmpeg -f live_flv -i rtmp://<any.server>/anything/key ....
-flv_metadata bool

根據 onMetaData 陣列內容分配串流。

-flv_ignore_prevtag bool

忽略先前標籤值的大小。

-flv_full_metadata bool

輸出 onMetadata 的所有上下文。

15.11 gif

動畫 GIF 解多工器。

它接受以下選項

min_delay

設定影格之間最小有效延遲,單位為百分之一秒。範圍是 0 到 6000。預設值為 2。

max_gif_delay

設定影格之間最大有效延遲,單位為百分之一秒。範圍是 0 到 65535。預設值為 65535(接近 11 分鐘),規格允許的最大值。

default_delay

設定影格之間預設延遲,單位為百分之一秒。範圍是 0 到 6000。預設值為 10。

ignore_loop

GIF 檔案可以包含循環播放一定次數(或無限次)的資訊。如果將 ignore_loop 設定為 1,則會忽略輸入中的循環設定,且不會發生循環播放。如果設定為 0,則會發生循環播放,並根據 GIF 循環播放次數。預設值為 1。

例如,使用疊加濾鏡,將無限循環的 GIF 放置在另一個視訊之上

ffmpeg -i input.mp4 -ignore_loop 0 -i input.gif -filter_complex overlay=shortest=1 out.mkv

請注意,在上面的範例中,疊加濾鏡的最短選項用於在最短輸入檔案的長度處結束輸出視訊,在本例中為 input.mp4,因為此範例中的 GIF 無限循環。

15.12 hls

HLS 解多工器

Apple HTTP 即時串流解多工器。

此解多工器呈現來自所有變體串流的所有 AVStream。id 欄位設定為位元率變體索引號碼。透過在 AVStream 上設定捨棄標誌(在 ffplay 中按下 'a' 或 'v'),呼叫者可以決定實際接收哪些變體串流。串流所屬變體的總位元率可在名為 "variant_bitrate" 的元數據鍵中取得。

它接受以下選項

live_start_index

開始即時串流的片段索引(負值表示從結尾算起)。

prefer_x_start

如果播放清單中有 #EXT-X-START,則優先使用它,而不是 live_start_index。

allowed_extensions

hls 允許存取的檔案副檔名,以 ',' 分隔的列表。

max_reload

嘗試重新載入不完整列表的最大次數。預設值為 1000。

m3u8_hold_counters

當 m3u8 刷新但沒有新片段時,載入 m3u8 的最大次數。預設值為 1000。

http_persistent

使用持續性 HTTP 連線。僅適用於 HTTP 串流。預設為啟用。

http_multiple

使用多個 HTTP 連線下載 HTTP 片段。對於 HTTP/1.1 伺服器,預設為啟用。

http_seekable

使用 HTTP 部分請求下載 HTTP 片段。0 = 停用,1 = 啟用,-1 = 自動,預設為自動。

seg_format_options

使用以 : 分隔的鍵=值對列表,設定媒體片段解多工器的選項。

seg_max_retry

錯誤時重新載入片段的最大次數,當不希望在網路錯誤時跳過片段時很有用。預設值為 0。

15.13 image2

影像檔案解多工器。

此解多工器從模式指定的影像檔案列表中讀取。模式的語法和含義由選項 pattern_type 指定。

模式可能包含後綴,用於自動判斷檔案中包含的影像格式。

對於序列中的所有檔案,每個影像的大小、像素格式和格式都必須相同。

此解多工器接受以下選項

framerate

設定視訊串流的影格率。預設值為 25。

loop

如果設定為 1,則循環播放輸入。預設值為 0。

pattern_type

選取用於解釋所提供檔案名稱的模式類型。

pattern_type 接受下列其中一個值。

none

停用模式比對,因此視訊將僅包含指定的影像。如果您不想從多個影像建立序列,且您的檔案名稱可能包含特殊的模式字元,則應使用此選項。

sequence

選取序列模式類型,用於指定由序號索引的檔案序列。

序列模式可能包含字串 "%d" 或 "%0Nd",用於指定模式比對的每個檔案名稱中代表序號的字元位置。如果使用 "%d0Nd" 形式,則每個檔案名稱中代表數字的字串會以 0 填充,而 N 是代表數字的 0 填充位數總數。字面字元 '%' 可以使用字串 "%%" 在模式中指定。

如果序列模式包含 "%d" 或 "%0Nd",則模式指定的檔案列表中的第一個檔案名稱必須包含一個數字,該數字包含在 start_numberstart_number+start_number_range-1 之間(包含邊界值),並且所有後續數字都必須是連續的。

例如,模式 "img-%03d.bmp" 將比對 img-001.bmpimg-002.bmp、...、img-010.bmp 等形式的檔案名稱序列;模式 "i%%m%%g-%d.jpg" 將比對 i%m%g-1.jpgi%m%g-2.jpg、...、i%m%g-10.jpg 等形式的檔案名稱序列。

請注意,模式不一定必須包含 "%d" 或 "%0Nd",例如,要轉換單個影像檔案 img.jpeg,您可以使用以下命令

ffmpeg -i img.jpeg img.png
glob

選取 glob 萬用字元模式類型。

模式會像 glob() 模式一樣解釋。只有在 libavformat 編譯時具有 globbing 支援時,才能選取此選項。

glob_sequence (已棄用,將會移除)

選取混合 glob 萬用字元/序列模式。

如果您的 libavformat 版本在編譯時具有 globbing 支援,且提供的模式包含至少一個 glob 元字元(%*?[]{} 中的一個),且該字元前面有一個未轉義的 "%",則模式會像 glob() 模式一樣解釋,否則會像序列模式一樣解釋。

所有 glob 特殊字元 %*?[]{} 都必須以 "%" 作為前綴。若要轉義字面 "%",您應使用 "%%"。

例如,模式 foo-%*.jpeg 將比對所有以 "foo-" 為前綴並以 ".jpeg" 結尾的檔案名稱,而 foo-%?%?%?.jpeg 將比對所有以 "foo-" 為前綴,後跟三個字元序列,並以 ".jpeg" 結尾的檔案名稱。

此模式類型已棄用,建議使用 globsequence

預設值為 glob_sequence

pixel_format

設定要讀取的影像的像素格式。如果未指定,則像素格式會從序列中的第一個影像檔案猜測。

start_number

設定與影像檔案模式比對的檔案索引,從該索引開始讀取。預設值為 0。

start_number_range

設定在尋找序列中的第一個影像檔案時要檢查的索引間隔範圍,從 start_number 開始。預設值為 5。

ts_from_file

如果設定為 1,則會將影格時間戳記設定為影像檔案的修改時間。請注意,不保證時間戳記的單調性:影像的順序與沒有此選項時相同。預設值為 0。如果設定為 2,則會將影格時間戳記設定為影像檔案的修改時間,精確到奈秒。

video_size

設定要讀取的影像的視訊大小。如果未指定,則視訊大小會從序列中的第一個影像檔案猜測。

export_path_metadata

如果設定為 1,則會在輸入中找到的元數據中新增兩個額外欄位,使其也可用於其他濾鏡(範例請參閱 drawtext 濾鏡)。預設值為 0。額外欄位描述如下

lavf.image2dec.source_path

對應於正在讀取的輸入檔案的完整路徑。

lavf.image2dec.source_basename

對應於正在讀取的檔案名稱。

15.13.1 範例

  • 使用 ffmpeg 從檔案序列 img-001.jpegimg-002.jpeg、... 中的影像建立視訊,假設輸入影格率為每秒 10 影格
    ffmpeg -framerate 10 -i 'img-%03d.jpeg' out.mkv
    
  • 與上述相同,但從序列中索引為 100 的檔案開始讀取
    ffmpeg -framerate 10 -start_number 100 -i 'img-%03d.jpeg' out.mkv
    
  • 讀取符合 "*.png" glob 模式的影像,即所有以 ".png" 後綴結尾的檔案
    ffmpeg -framerate 10 -pattern_type glob -i "*.png" out.mkv
    

15.14 libgme

Game Music Emu 函式庫是電子遊戲音樂檔案模擬器的集合。

有關更多資訊,請參閱 https://bitbucket.org/mpyne/game-music-emu/overview

它接受以下選項

track_index

設定要解多工的音軌索引。解多工器只能匯出一個音軌。音軌索引從 0 開始。預設為選取第一個音軌。音軌數量會作為 tracks 元數據條目匯出。

sample_rate

設定匯出音軌的取樣率。範圍是 1000 到 999999。預設值為 44100。

max_size (bytes)

解多工器將整個檔案緩衝到記憶體中。調整此值以設定最大緩衝區大小,這反過來又充當可以讀取的檔案大小上限。預設值為 50 MiB。

15.15 libmodplug

ModPlug 基礎模組解多工器

請參閱 https://github.com/Konstanty/libmodplug

它將匯出一個雙聲道 16 位元 44.1 kHz 音訊串流。或者,可以匯出 pal8 16 色視訊串流,帶或不帶列印的元數據。

它接受以下選項

noise_reduction

套用簡單的低通濾波器。可以是 1(開啟)或 0(關閉)。預設值為 0。

reverb_depth

設定殘響量。範圍 0-100。預設值為 0。

reverb_delay

設定延遲,單位為毫秒,限制在 40-250 毫秒之間。預設值為 0。

bass_amount

套用低音擴展,又名 XBass 或 megabass。範圍是 0(安靜)到 100(響亮)。預設值為 0。

bass_range

設定截止頻率,即低音頻率的上限。範圍是 10-100 Hz。預設值為 0。

surround_depth

套用 Dolby Pro-Logic 環繞效果。範圍是 0(安靜)到 100(重度)。預設值為 0。

surround_delay

設定環繞延遲,單位為毫秒,限制在 5-40 毫秒之間。預設值為 0。

max_size

解多工器將整個檔案緩衝到記憶體中。調整此值以設定最大緩衝區大小,這反過來又充當可以讀取的檔案大小上限。範圍是 0 到 100 MiB。0 會移除緩衝區大小限制(不建議)。預設值為 5 MiB。

video_stream_expr

字串,使用 eval API 評估以將顏色分配給產生的視訊串流。可以使用的變數為 xywhtspeedtempoorderpatternrow

video_stream

產生視訊串流。可以是 1(開啟)或 0(關閉)。預設值為 0。

video_stream_w

以 '字元' 為單位設定視訊影格寬度,其中一個字元表示 8 像素。範圍是 20-512。預設值為 30。

video_stream_h

以 '字元' 為單位設定視訊影格高度,其中一個字元表示 8 像素。範圍是 20-512。預設值為 30。

video_stream_ptxt

在視訊串流上列印元數據。包括 speedtempoorderpatternrowts(以毫秒為單位的時間)。可以是 1(開啟)或 0(關閉)。預設值為 1。

15.16 libopenmpt

libopenmpt 基礎模組解多工器

有關更多資訊,請參閱 https://lib.openmpt.org/libopenmpt/

某些檔案具有多個子歌曲(音軌),可以使用 subsong 選項設定。

它接受以下選項

subsong

設定子歌曲索引。可以是 'all'、'auto' 或子歌曲的索引。子歌曲索引從 0 開始。預設值為 'auto'。

預設值是讓 libopenmpt 選擇。

layout

設定聲道佈局。有效值為 1、2 和 4 聲道佈局。預設值為 STEREO。

sample_rate

設定 libopenmpt 輸出的取樣率。範圍是從 1000 到 INT_MAX。預設值為 48000。

15.17 mov/mp4/3gp

Quicktime 檔案格式和 ISO/IEC 基礎媒體檔案格式(ISO/IEC 14496-12 或 MPEG-4 Part 12、ISO/IEC 15444-12 或 JPEG 2000 Part 12)的解多工器。

註冊的副檔名:mov, mp4, m4a, 3gp, 3g2, mj2, psp, m4b, ism, ismv, isma, f4v

15.17.1 選項

此解多工器接受以下選項

enable_drefs

啟用載入外部音軌,預設為停用。啟用此功能理論上可能會在某些使用情況下洩漏資訊。

use_absolute_path

允許透過絕對路徑載入外部音軌,預設為停用。啟用此功能會構成安全風險。只有在已知來源為非惡意時才應啟用。

seek_streams_individually

搜尋時,個別識別每個串流中最接近的點,並從識別的點解多工該串流中的封包。與從頭線性解多工相比,這可能會導致不同的封包序列。預設值為 true。

ignore_editlist

忽略任何編輯列表原子。預設情況下,解多工器會修改串流索引,以反映編輯列表描述的時間軸。預設值為 false。

advanced_editlist

修改串流索引,以反映編輯列表描述的時間軸。ignore_editlist 必須設定為 false,此選項才能生效。如果 ignore_editlist 和此選項都設定為 false,則僅修改串流索引的開頭,以反映編輯列表描述的初始停留時間或開始時間戳記。預設值為 true。

ignore_chapters

不要解析章節。這包括 GoPro 'HiLight' 標籤/時刻。請注意,僅當輸入可搜尋時才解析章節。預設值為 false。

use_mfra_for

對於可搜尋的片段化輸入,如果存在媒體片段隨機存取框,則從該框設定片段的起始時間戳記。

以下選項可用

auto

自動偵測是否將 mfra 時間戳記設定為 PTS 或 DTS (預設)

dts

將 mfra 時間戳記設定為 DTS

pts

將 mfra 時間戳記設定為 PTS

0

請勿使用 mfra 框來設定時間戳記

use_tfdt

對於片段化輸入,從 tfdt 框將片段的起始時間戳記設定為 baseMediaDecodeTime。預設為啟用,這會優先使用 tfdt 框來設定 DTS。停用以使用來自 sidx 框的 earliest_presentation_time。在任何一種情況下,如果 mfra 框的時間戳記可用,且 use_mfra_for 設定為 pts 或 dts,則將使用 mfra 框的時間戳記。

export_all

udta 框中無法辨識的框匯出為元數據條目。框類型的前四個字元會設定為鍵。預設值為 false。

export_xmp

匯出 XMP_ box 和 uuid box 的完整內容為字串,並使用鍵值 xmp。請注意,如果設定了 export_all 選項,即使未設定此選項,XMP_ box 的內容仍然會匯出,但會使用鍵值 XMP_。預設值為 false。

activation_bytes

解密 Audible AAX 和 AAX+ 檔案所需的 4 位元組金鑰。請參閱下方的 Audible AAX 小節。

audible_fixed_key

用於處理 Audible AAX/AAX+ 檔案的固定金鑰。此金鑰已預先設定,因此通常不需要指定。

decryption_key

16 位元組金鑰,以十六進制表示,用於解密使用 ISO 通用加密 (CENC/AES-128 CTR;ISO/IEC 23001-7) 加密的檔案。

max_stts_delta

在 trak 的 stts box 中寫入非常高的樣本增量值偶爾可能是故意的,但通常是錯誤寫入,或是在視為帶正負號的 32 位元整數時,用於儲存 dts 校正的負值。此選項可讓使用者設定上限,超過此上限的增量值將會被限制為 1。如果值大於此限制,且在轉換為 int32 時為負數,則會用於調整後續的 dts。

單位為軌道時間刻度。範圍為 0 到 UINT_MAX。預設值為 UINT_MAX - 48000*10,這允許 48 kHz 音訊串流最多 10 秒的 dts 校正,同時容納 99.9% 的 uint32 範圍。

interleaved_read

在解多工器層級交錯來自多個軌道的封包。對於交錯不良的檔案,這可以防止因不同軌道中封包之間存在較大間隙而導致的播放問題,因為 MOV/MP4 沒有封包放置要求。但是,這可能會導致在非常交錯不良的檔案上過度搜尋,因為需要在軌道之間搜尋,因此停用此選項可能會防止 I/O 問題,但會犧牲播放效果。

15.17.2 Audible AAX

Audible AAX 檔案是加密的 M4B 檔案,可以透過指定 4 位元組的啟動密碼來解密。

ffmpeg -activation_bytes 1CEB00DA -i test.aax -vn -c:a copy output.mp4

15.18 mpegts

MPEG-2 傳輸串流解多工器。

此解多工器接受以下選項

resync_size

設定尋找新同步的大小限制。預設值為 65536。

skip_unknown_pmt

略過 PAT 中未定義的程式之 PMT。預設值為 0。

fix_teletext_pts

覆寫圖文電視封包 PTS 和 DTS 值,並使用從圖文電視串流所屬且未捨棄的第一個程式的 PCR 計算的時間戳記。預設值為 1,如果您希望圖文電視封包 PTS 和 DTS 值保持不變,請將此選項設定為 0。

ts_packetsize

輸出選項,攜帶原始封包大小(以位元組為單位)。顯示偵測到的原始封包大小,使用者無法設定。

scan_all_pmts

掃描並合併所有 PMT。值為 -1 到 1 的整數(-1 表示自動設定,1 表示啟用,0 表示停用)。預設值為 -1。

merge_pmt_versions

當 PMT 版本更新且基本串流移至不同的 PID 時,重複使用現有的串流。預設值為 0。

max_packet_size

設定解多工器發出的封包最大大小(以位元組為單位)。超過此大小的酬載將會分散在多個封包中。範圍為 1 到 INT_MAX/2。預設值為 204800 位元組。

15.19 mpjpeg

封裝在多部分 MIME 解多工器中的 MJPEG。

此解多工器允許讀取 MJPEG,其中每個影格都表示為 multipart/x-mixed-replace 串流的一部分。

strict_mime_boundary

預設實作對多部分 MIME 邊界偵測應用了寬鬆的標準,以防止與許多未產生正確 MIME MJPEG 串流的現有端點發生回歸問題。將此選項設定為 1 將會對邊界值進行更嚴格的檢查。

15.20 rawvideo

原始視訊解多工器。

此解多工器允許讀取原始視訊資料。由於沒有標頭指定假設的視訊參數,因此使用者必須指定這些參數才能正確解碼資料。

此解多工器接受以下選項

framerate

設定輸入視訊影格率。預設值為 25。

pixel_format

設定輸入視訊像素格式。預設值為 yuv420p

video_size

設定輸入視訊大小。此值必須明確指定。

例如,若要使用 ffplay 讀取像素格式為 rgb24、視訊大小為 320x240 且影格率為每秒 10 個影像的 rawvideo 檔案 input.raw,請使用以下命令

ffplay -f rawvideo -pixel_format rgb24 -video_size 320x240 -framerate 10 input.raw

15.21 rcwt

RCWT(Raw Captions With Time,帶時間戳記的原始字幕)是 ccextractor 的原生格式,ccextractor 是一個常用的開放原始碼工具,用於處理 608/708 封閉字幕 (CC) 來源。如需格式的詳細資訊,請參閱 (ffmpeg-formats)rcwtenc

此解多工器實作截至 2024 年 3 月的規格,該規格自 2014 年 4 月以來一直穩定且未變更。

15.21.1 範例

  • 使用內建解碼器將 CC 渲染為 ASS
    ffmpeg -i CC.rcwt.bin CC.ass
    

    請注意,如果您的輸出看起來是空的,您可能必須手動設定解碼器的 data_field 選項,以選取所需的 CC 子串流。

  • 將 RCWT 備份轉換為 Scenarist (SCC) 格式
    ffmpeg -i CC.rcwt.bin -c:s copy CC.scc
    

    請注意,SCC 格式不支援 RCWT 中可以儲存的所有可能的 CC 擴充功能(例如 EIA-708)。

15.22 sbg

SBaGen 腳本解多工器。

此解多工器讀取 SBaGen http://uazu.net/sbagen/ 使用的腳本語言,以產生雙耳節拍會話。SBG 腳本看起來像這樣

-SE
a: 300-2.5/3 440+4.5/0
b: 300-2.5/0 440+4.5/3
off: -
NOW      == a
+0:07:00 == b
+0:14:00 == a
+0:21:00 == b
+0:30:00    off

SBG 腳本可以混合絕對和相對時間戳記。如果腳本僅使用絕對時間戳記(包括腳本開始時間)或僅使用相對時間戳記,則其佈局是固定的,並且轉換很簡單。另一方面,如果腳本混合使用兩種時間戳記,則相對時間戳記的 NOW 參考將取自讀取腳本時的目前時間,並且腳本佈局將根據該參考凍結。這表示如果直接播放腳本,則實際時間將與絕對時間戳記相符,直到聲音控制器的時鐘準確度,但如果使用者以某種方式暫停播放或搜尋,則所有時間都會相應移動。

15.23 tedcaptions

用於 TED Talks 的 JSON 字幕。

TED 不提供字幕連結,但可以從頁面猜測出來。FFmpeg 原始碼樹中的檔案 tools/bookmarklets.html 包含一個書籤小工具來顯示它們。

此解多工器接受以下選項

start_time

設定 TED 演講的開始時間,以毫秒為單位。預設值為 15000 (15 秒)。它用於將字幕與可下載的視訊同步,因為它們包含 15 秒的簡介。

範例:將字幕轉換為大多數播放器可以理解的格式

ffmpeg -i http://www.ted.com/talks/subtitles/id/1/lang/en talk1-en.srt

15.24 vapoursynth

Vapoursynth 包裝器。

由於安全性考量,Vapoursynth 腳本不會自動偵測,因此必須強制輸入格式。對於 ff* CLI 工具,請在輸入 -i yourscript.vpy 之前新增 -f vapoursynth

此解多工器接受以下選項

max_script_size

解多工器將整個腳本緩衝到記憶體中。調整此值以設定最大緩衝區大小,該大小進而充當可以讀取的腳本大小上限。預設值為 1 MiB。

15.25 w64

Sony Wave64 音訊解多工器。

此解多工器接受以下選項

max_size

請參閱 wav 解多工器的相同選項。

15.26 wav

RIFF Wave 音訊解多工器。

此解多工器接受以下選項

max_size

指定解多工封包的最大封包大小(以位元組為單位)。預設情況下,此值設定為 0,表示會根據輸入格式選擇合理的數值。

16 元數據

FFmpeg 能夠將媒體檔案的中繼資料傾印到簡單的 UTF-8 編碼 INI 樣式文字檔案中,然後使用中繼資料多工器/解多工器將其載回。

檔案格式如下

  1. 檔案由標頭和多個中繼資料標籤組成,這些標籤分為多個區段,每個區段各佔一行。
  2. 標頭是 ‘;FFMETADATA’ 字串,後跟版本號碼(現在為 1)。
  3. 中繼資料標籤的格式為 ‘key=value
  4. 標頭之後立即接續全域中繼資料
  5. 在全域中繼資料之後,可能會有區段,其中包含每個串流/每個章節的中繼資料。
  6. 區段以方括號 (‘[’、‘]’) 中的區段名稱(即 STREAM 或 CHAPTER,串流或章節)開頭,並以區段結尾或檔案結尾結束。
  7. 在章節區段的開頭,可能會有一個選用的 timebase,用於 start/end 值。其格式必須為 ‘TIMEBASE=num/den’,其中 numden 是整數。如果 timebase 遺失,則 start/end 時間會假設為奈秒。

    接下來,章節區段必須包含章節開始和結束時間,格式為 ‘START=num’、‘END=num’,其中 num 是正整數。

  8. 空白行和以 ‘;’ 或 ‘#’ 開頭的行會被忽略。
  9. 包含特殊字元 (‘=’、‘;’、‘#’、‘\’ 和換行符號) 的中繼資料鍵或值必須使用反斜線 ‘\’ 逸出。
  10. 請注意,中繼資料中的空白字元(例如 ‘foo = bar’)會被視為標籤的一部分(在上面的範例中,鍵為 ‘foo ’,值為 ‘ bar’)。

ffmetadata 檔案可能如下所示

;FFMETADATA1
title=bike\\shed
;this is a comment
artist=FFmpeg troll team

[CHAPTER]
TIMEBASE=1/1000
START=0
#chapter ends at 0:01:00
END=60000
title=chapter \#1
[STREAM]
title=multi\
line

透過使用 ffmetadata 多工器和解多工器,可以從輸入檔案中擷取中繼資料到 ffmetadata 檔案,然後將檔案轉碼為具有編輯過的 ffmetadata 檔案的輸出檔案。

使用 ffmpeg 擷取 ffmetadata 檔案的步驟如下

ffmpeg -i INPUT -f ffmetadata FFMETADATAFILE

從 FFMETADATAFILE 檔案重新插入編輯過的中繼資料資訊可以透過以下方式完成

ffmpeg -i INPUT -i FFMETADATAFILE -map_metadata 1 -codec copy OUTPUT

17 協定選項

libavformat 函式庫提供了一些通用的全域選項,可以在所有協定上設定。此外,每個協定都可能支援所謂的私有選項,這些選項是該元件特有的。

選項可以透過在 FFmpeg 工具中指定 -option value 來設定,或透過在 AVFormatContext 選項中明確設定值,或使用 libavutil/opt.h API 以程式方式使用來設定。

以下是支援選項的清單

protocol_whitelist list (輸入)

設定以 “,” 分隔的允許協定清單。“ALL” 符合所有協定。以 “-” 為前綴的協定會被停用。預設情況下允許所有協定,但另一個協定(巢狀協定)使用的協定會限制為每個協定的子集。

18 協定

協定是 FFmpeg 中的已配置元素,可讓您存取需要特定協定的資源。

當您配置 FFmpeg 建置時,預設會啟用所有支援的協定。您可以使用配置選項 “–list-protocols” 列出所有可用的協定。

您可以使用配置選項 “–disable-protocols” 停用所有協定,並使用選項 “–enable-protocol=PROTOCOL” 選擇性地啟用協定,或者您可以使用選項 “–disable-protocol=PROTOCOL” 停用特定協定。

ff* 工具的選項 “-protocols” 將會顯示支援的協定清單。

所有協定都接受以下選項

rw_timeout

等待(網路)讀取/寫入操作完成的最長時間,以微秒為單位。

以下是目前可用協定的說明。

18.1 amqp

進階訊息佇列協定 (AMQP) 0-9-1 版是一種基於代理程式的發布-訂閱通訊協定。

FFmpeg 必須使用 –enable-librabbitmq 編譯才能支援 AMQP。還必須執行單獨的 AMQP 代理程式。一個範例開放原始碼 AMQP 代理程式是 RabbitMQ。

啟動代理程式後,FFmpeg 用戶端可以使用以下命令將資料串流到代理程式

ffmpeg -re -i input -f mpegts amqp://[[user]:[password]@]hostname[:port][/vhost]

其中 hostname 和 port(預設值為 5672)是代理程式的位址。用戶端還可以設定使用者/密碼以進行驗證。這兩個欄位的預設值均為 “guest”。代理程式上的虛擬主機名稱可以使用 vhost 設定。預設值為 “/”。

多個訂閱者可以使用以下命令從代理程式串流

ffplay amqp://[[user]:[password]@]hostname[:port][/vhost]

在 RabbitMQ 中,發布到代理程式的所有資料都透過特定的交換器流動,並且每個訂閱用戶端都有一個已指派的佇列/緩衝區。當封包到達交換器時,可能會根據交換器和 routing_key 欄位將其複製到用戶端的佇列。

支援以下選項

exchange

設定要在代理程式上使用的交換器。RabbitMQ 有幾個預先定義的交換器:“amq.direct” 是預設交換器,其中發布者和訂閱者必須具有相符的 routing_key;“amq.fanout” 與廣播操作相同(即,資料會轉發到 fanout 交換器上的所有佇列,而與 routing_key 無關);“amq.topic” 類似於 “amq.direct”,但允許更複雜的模式比對(請參閱 RabbitMQ 文件)。

routing_key

設定路由金鑰。預設值為 “amqp”。routing_key 用於 “amq.direct” 和 “amq.topic” 交換器,以決定是否將封包寫入訂閱者的佇列。

pkt_size

傳送/接收到代理程式的每個封包的最大大小。預設值為 131072。最小值為 4096,最大值為任何大值(可以用 int 表示)。接收封包時,這會設定 FFmpeg 中的內部緩衝區大小。它應等於或大於發布到代理程式的封包大小。否則,接收到的訊息可能會被截斷,導致解碼錯誤。

connection_timeout

在初始連線到代理程式期間的逾時時間(以秒為單位)。預設值為 rw_timeout,如果未設定 rw_timeout,則為 5 秒。

delivery_mode mode

設定傳送到代理程式的每個訊息的傳遞模式。接受以下值

persistent

傳遞模式設定為 “persistent” (2)。這是預設值。訊息可能會根據代理程式的設定寫入代理程式的磁碟。

non-persistent

傳遞模式設定為 “non-persistent” (1)。訊息將保留在代理程式的記憶體中,除非代理程式處於記憶體壓力之下。

18.2 async

輸入串流的非同步資料填寫包裝器。

在背景執行緒中填寫資料,以將 I/O 操作與解多工執行緒分離。

async:URL
async:http://host/resource
async:cache:http://host/resource

18.3 bluray

讀取 BluRay 播放清單。

接受的選項如下

angle

BluRay 角度

chapter

開始章節 (1...N)

playlist

要讀取的播放清單 (BDMV/PLAYLIST/?????.mpls)

範例

從掛載到 /mnt/bluray 的 BluRay 讀取最長的播放清單

bluray:/mnt/bluray

從掛載到 /mnt/bluray 的 BluRay 讀取播放清單 4 的角度 2,從章節 2 開始

-playlist 4 -angle 2 -chapter 2 bluray:/mnt/bluray

18.4 cache

輸入串流的快取包裝器。

將輸入串流快取到暫存檔。它為即時串流帶來搜尋功能。

接受的選項如下

read_ahead_limit

在不支援搜尋時,可能預先讀取的位元組數。範圍為 -1 到 INT_MAX。-1 表示無限制。預設值為 65536。

URL 語法為

cache:URL

18.5 concat

實體串連協定。

依序從多個資源讀取和搜尋,就像它們是唯一的資源一樣。

此協定接受的 URL 具有以下語法

concat:URL1|URL2|...|URLN

其中 URL1URL2、...、URLN 是要串連的資源 URL,每個 URL 都可能指定不同的協定。

例如,若要使用 ffplay 讀取檔案序列 split1.mpegsplit2.mpegsplit3.mpeg,請使用以下命令

ffplay concat:split1.mpeg\|split2.mpeg\|split3.mpeg

請注意,您可能需要逸出字元 “|”,它對於許多 shell 來說是特殊字元。

18.6 concatf

使用換行符號分隔的資源清單的實體串連協定。

依序從多個資源讀取和搜尋,就像它們是唯一的資源一樣。

此協定接受的 URL 具有以下語法

concatf:URL

其中 URL 是包含換行符號分隔的資源清單的 URL,每個資源都可能指定不同的協定。特殊字元必須使用反斜線或單引號逸出。請參閱 (ffmpeg-utils)ffmpeg-utils(1) 手冊中的 “引號和逸出” 章節

例如,若要使用 ffplay 讀取檔案 split.txt 中以單獨行條列的檔案序列 split1.mpegsplit2.mpegsplit3.mpeg,請使用以下命令

ffplay concatf:split.txt

其中 split.txt 包含以下行

split1.mpeg
split2.mpeg
split3.mpeg

18.7 crypto

AES 加密串流讀取協定。

接受的選項如下

key

從給定的十六進位表示法設定 AES 解密金鑰二進位區塊。

iv

從給定的十六進位表示法設定 AES 解密初始化向量二進位區塊。

接受的 URL 格式

crypto:URL
crypto+URL

18.8 data

URI 中的內嵌資料。請參閱 http://en.wikipedia.org/wiki/Data_URI_scheme

例如,若要使用 ffmpeg 轉換內嵌的 GIF 檔案

ffmpeg -i "data:image/gif;base64,R0lGODdhCAAIAMIEAAAAAAAA//8AAP//AP///////////////ywAAAAACAAIAAADF0gEDLojDgdGiJdJqUX02iB4E8Q9jUMkADs=" smiley.png

18.9 fd

檔案描述符號存取協定。

可接受的語法為

fd: -fd file_descriptor

如果未指定 fd,則預設情況下,stdout 檔案描述符號將用於寫入,stdin 用於讀取。與 pipe 協定不同,fd 協定如果對應於常規檔案,則具有搜尋支援。fd 協定不支援透過 URL 傳遞檔案描述符號,以確保安全性。

此協定接受以下選項

blocksize

設定 I/O 操作的最大區塊大小(以位元組為單位)。預設值為 INT_MAX,這會導致不限制請求的區塊大小。合理地降低此值可以改善使用者終止請求的反應時間,如果資料傳輸速度慢,這會很有價值。

fd

設定檔案描述符號。

18.10 file

檔案存取協定。

從檔案讀取或寫入檔案。

檔案 URL 可以具有以下形式

file:filename

其中 filename 是要讀取的檔案路徑。

未指定協定前綴的 URL 會被視為檔案 URL。取決於建置版本,外觀類似 Windows 路徑且開頭為磁碟機代號的 URL 也會被視為檔案 URL(在類 Unix 系統的建置版本中通常不是這種情況)。

例如,若要使用 ffmpeg 從檔案 input.mpeg 讀取,請使用以下命令

ffmpeg -i file:input.mpeg output.mpeg

此協定接受以下選項

truncate

若設定為 1,則在寫入時截斷現有檔案。值為 0 可防止截斷。預設值為 1。

blocksize

設定 I/O 操作的最大區塊大小,以位元組為單位。預設值為 INT_MAX,這會導致不限制請求的區塊大小。合理地降低此值可以改善使用者終止請求的反應時間,這對於慢速媒體上的檔案很有價值。

follow

若設定為 1,協定會在檔案結尾重試讀取,允許讀取仍在寫入中的檔案。為了使其終止,您需要使用 rw_timeout 選項,或使用中斷回呼(適用於 API 使用者)。

seekable

控制是否在檔案上宣告可搜尋性。0 表示不可搜尋,-1 表示自動(一般檔案可搜尋,具名管道不可搜尋)。

許多解多工器以不同方式處理可搜尋和不可搜尋的資源,覆寫此設定可能會加速開啟某些檔案,但會犧牲某些功能(例如精確搜尋)。

18.11 ftp

FTP(檔案傳輸協定)。

使用 FTP 協定從遠端資源讀取或寫入。

需要以下語法。

ftp://[user[:password]@]server[:port]/path/to/remote/resource.mpeg

此協定接受以下選項。

timeout

設定底層低階操作使用的 socket I/O 操作逾時時間,單位為微秒。預設設定為 -1,表示未指定逾時時間。

ftp-user

設定用於向 FTP 伺服器驗證身分的使用者。這會被 FTP URL 中的使用者覆寫。

ftp-password

設定用於向 FTP 伺服器驗證身分的密碼。這會被 FTP URL 中的密碼覆寫,或者如果未設定使用者,則會被 ftp-anonymous-password 覆寫。

ftp-anonymous-password

以匿名使用者身分登入時使用的密碼。通常應使用電子郵件地址。

ftp-write-seekable

控制編碼期間連線的可搜尋性。若設定為 1,則資源應為可搜尋,若設定為 0,則假設為不可搜尋。預設值為 0。

注意:協定可以用作輸出,但不建議這樣做,除非特別注意(測試、自訂伺服器設定等)。不同的 FTP 伺服器在搜尋操作期間的行為不同。由於伺服器限制,ff* 工具可能會產生不完整的內容。

18.12 gopher

Gopher 協定。

18.13 gophers

Gophers 協定。

具有 TLS 封裝的 Gopher 協定。

18.14 hls

將符合 Apple HTTP Live Streaming 標準的分段串流讀取為統一串流。描述分段的 M3U8 播放清單可以是遠端 HTTP 資源或本機檔案,使用標準檔案協定存取。巢狀協定透過在 hls URI 方案名稱後指定 "+proto" 來宣告,其中 proto 是 "file" 或 "http"。

hls+http://host/path/to/remote/resource.m3u8
hls+file://path/to/local/resource.m3u8

不建議使用此協定 - hls 解多工器應該也能正常運作(如果沒有,請回報問題),而且更完整。若要改為使用 hls 解多工器,只需使用 M3U8 檔案的直接 URL 即可。

18.15 http

HTTP(超文本傳輸協定)。

此協定接受以下選項

seekable

控制連線的可搜尋性。若設定為 1,則資源應為可搜尋,若設定為 0,則假設為不可搜尋,若設定為 -1,則會嘗試自動偵測是否可搜尋。預設值為 -1。

chunked_post

若設定為 1,則對 post 使用分塊傳輸編碼,預設為 1。

http_proxy

設定 HTTP proxy 以進行通道傳輸,例如 http://example.com:1234

headers

設定自訂 HTTP 標頭,可以覆寫內建預設標頭。該值必須是編碼標頭的字串。

content_type

為 POST 訊息或監聽模式設定特定的內容類型。

user_agent

覆寫 User-Agent 標頭。若未指定,協定將使用描述 libavformat 建置版本的字串。("Lavf/<版本>")

referer

設定 Referer 標頭。在 HTTP 請求中包含 'Referer: URL' 標頭。

multiple_requests

若設定為 1,則使用持久連線,預設為 0。

post_data

設定自訂 HTTP post 資料。

mime_type

匯出 MIME 類型。

http_version

匯出 HTTP 回應版本號。通常為 "1.0" 或 "1.1"。

cookies

設定未來請求中要傳送的 cookies。每個 cookie 的格式與 Set-Cookie HTTP 回應欄位的值相同。多個 cookies 可以用換行字元分隔。

icy

若設定為 1,則向伺服器請求 ICY (SHOUTcast) metadata。如果伺服器支援此功能,則應用程式必須透過讀取 icy_metadata_headersicy_metadata_packet 選項來擷取 metadata。預設值為 1。

icy_metadata_headers

如果伺服器支援 ICY metadata,則此選項包含 ICY 特定的 HTTP 回覆標頭,以換行字元分隔。

icy_metadata_packet

如果伺服器支援 ICY metadata,且 icy 設定為 1,則此選項包含伺服器傳送的最後一個非空 metadata 封包。對串流中 metadata 更新感興趣的應用程式應定期輪詢此選項。

metadata

設定一個匯出的字典,其中包含來自位元串流的 Icecast metadata(如果存在)。僅適用於 C API。

auth_type

設定 HTTP 驗證類型。Digest 沒有選項,因為此方法需要先從伺服器取得 nonce 參數,而且無法像 Basic 一樣直接使用。

none

自動選擇 HTTP 驗證類型。這是預設值。

basic

選擇 HTTP basic 驗證。

Basic 驗證會傳送 Base64 編碼的字串,其中包含用戶名和用戶密碼。Base64 不是加密形式,應視為與以明文傳送用戶名和用戶密碼相同(Base64 是可逆編碼)。如果資源需要保護,強烈建議使用 Basic 驗證以外的驗證方案。HTTPS/TLS 應與 Basic 驗證一起使用。如果沒有這些額外的安全增強功能,則不應使用 Basic 驗證來保護敏感或有價值的信息。

send_expect_100

為 POST 傳送 Expect: 100-continue 標頭。若設定為 1,則會傳送;若設定為 0,則不會傳送;若設定為 -1,則會在適用的情況下嘗試傳送。預設值為 -1。

location

一個匯出的字典,其中包含內容位置。僅適用於 C API。

offset

設定初始位元組偏移量。

end_offset

嘗試將請求限制為在此偏移量之前的位元組。

method

當用作用戶端選項時,它會設定請求的 HTTP 方法。

當用作伺服器選項時,它會設定將從用戶端預期的 HTTP 方法。如果預期的 HTTP 方法與接收到的 HTTP 方法不符,則會向用戶端發送「錯誤請求」回應。未設定時,目前不會檢查 HTTP 方法。未來將被自動偵測取代。

reconnect

在 EOF 到達之前斷線時自動重新連線。

reconnect_at_eof

如果設定,則 eof 會被視為錯誤並導致重新連線,這對於即時/無限串流很有用。

reconnect_on_network_error

在連線期間發生 TCP/TLS 錯誤時自動重新連線。

reconnect_on_http_error

以逗號分隔的 HTTP 狀態碼清單,用於在這些狀態碼上重新連線。清單可以包含特定的狀態碼(例如 '503')或字串 '4xx' / '5xx'。

reconnect_streamed

如果設定,即使是串流/不可搜尋的串流也會在發生錯誤時重新連線。

reconnect_delay_max

設定放棄重新連線後的最大延遲時間,以秒為單位。

reconnect_max_retries

設定重試連線的最大次數。預設為未設定。

reconnect_delay_total_max

設定放棄重新連線後的最大總延遲時間,以秒為單位。

respect_retry_after

如果啟用,且遇到 Retry-After 標頭,則會遵循其請求的重新連線延遲時間,而不是使用指數退避。對於 429 和 503 錯誤很有用。預設為啟用。

listen

若設定為 1,則啟用實驗性 HTTP 伺服器。這可以用作輸出選項時傳送資料,或用作輸入選項時從用戶端使用 HTTP POST 讀取資料。若設定為 2,則啟用實驗性多用戶端 HTTP 伺服器。這尚未在 ffmpeg.c 中實作,因此不得用作命令列選項。

# Server side (sending):
ffmpeg -i somefile.ogg -c copy -listen 1 -f ogg http://server:port

# Client side (receiving):
ffmpeg -i http://server:port -c copy somefile.ogg

# Client can also be done with wget:
wget http://server:port -O somefile.ogg

# Server side (receiving):
ffmpeg -listen 1 -i http://server:port -c copy somefile.ogg

# Client side (sending):
ffmpeg -i somefile.ogg -chunked_post 0 -c copy -f ogg http://server:port

# Client can also be done with wget:
wget --post-file=somefile.ogg http://server:port
resource

當使用實驗性 HTTP 伺服器時,用戶端請求的資源。

reply_code

當使用實驗性 HTTP 伺服器時,傳回給用戶端的 HTTP 代碼。

short_seek_size

設定閾值(以位元組為單位),用於判斷是否應優先使用預讀而不是搜尋和新的 HTTP 請求。例如,這對於確保同一個連線用於讀取大型視訊封包和中間的小型音訊封包很有用。

18.15.1 HTTP Cookie

除非在請求中傳遞 cookie 值,否則某些 HTTP 請求將被拒絕。cookies 選項允許指定這些 cookie。至少,每個 cookie 必須指定一個值以及路徑和網域。符合網域和路徑的 HTTP 請求將自動在 HTTP Cookie 標頭欄位中包含 cookie 值。多個 cookie 可以用換行符號分隔。

播放串流並指定 cookie 的所需語法為

ffplay -cookies "nlqptid=nltid=tsn; path=/; domain=somedomain.com;" http://somedomain.com/somestream.m3u8

18.16 Icecast

Icecast 協定(串流至 Icecast 伺服器)

此協定接受以下選項

ice_genre

設定串流類型。

ice_name

設定串流名稱。

ice_description

設定串流描述。

ice_url

設定串流網站 URL。

ice_public

設定串流是否應公開。預設值為 0(不公開)。

user_agent

覆寫 User-Agent 標頭。若未指定,將使用 "Lavf/<版本>" 格式的字串。

password

設定 Icecast 掛載點密碼。

content_type

設定串流內容類型。如果與 audio/mpeg 不同,則必須設定此項。

legacy_icecast

這會啟用對 Icecast 版本 < 2.4.0 的支援,這些版本不支援 HTTP PUT 方法,但支援 SOURCE 方法。

tls

建立與 Icecast 的 TLS (HTTPS) 連線。

icecast://[username[:password]@]server:port/mountpoint

18.17 ipfs

星際檔案系統 (IPFS) 協定支援。可以透過所謂的閘道存取儲存在 IPFS 網路上的檔案。這些是 http(s) 端點。此協定封裝 IPFS 原生協定(ipfs:// 和 ipns://)以傳送到此類閘道。使用者可以(而且應該)託管自己的節點,這表示此協定將使用使用者本機閘道來存取 IPFS 網路上的檔案。

此協定接受以下選項

gateway

定義要使用的閘道。未設定時,協定將首先嘗試透過依序查看 $IPFS_GATEWAY$IPFS_PATH$HOME/.ipfs/ 來定位本機閘道。

可以使用此協定的兩種方式。使用 IPFS

ffplay ipfs://<hash>

或 IPNS 協定(IPNS 是可變的 IPFS)

ffplay ipns://<hash>

18.18 mmst

MMS(Microsoft Media Server)協定透過 TCP。

18.19 mmsh

MMS(Microsoft Media Server)協定透過 HTTP。

所需的語法為

mmsh://server[:port][/app][/playpath]

18.20 md5

MD5 輸出協定。

計算要寫入資料的 MD5 雜湊值,並在關閉時將其寫入指定的輸出,如果未指定輸出,則寫入 stdout。它可以用於測試多工器,而無需寫入實際檔案。

以下是一些範例。

# Write the MD5 hash of the encoded AVI file to the file output.avi.md5.
ffmpeg -i input.flv -f avi -y md5:output.avi.md5

# Write the MD5 hash of the encoded AVI file to stdout.
ffmpeg -i input.flv -f avi -y md5:

請注意,某些格式(通常是 MOV)要求輸出協定是可搜尋的,因此它們將無法使用 MD5 輸出協定。

18.21 pipe

UNIX 管道存取協定。

從 UNIX 管道讀取和寫入。

可接受的語法為

pipe:[number]

如果未指定 fd,則 number 是對應於管道檔案描述符的數字(例如,0 表示 stdin,1 表示 stdout,2 表示 stderr)。如果未指定 number,則預設情況下,stdout 檔案描述符將用於寫入,stdin 用於讀取。

例如,若要使用 ffmpeg 從 stdin 讀取

cat test.wav | ffmpeg -i pipe:0
# ...this is the same as...
cat test.wav | ffmpeg -i pipe:

若要使用 ffmpeg 寫入 stdout

ffmpeg -i test.wav -f avi pipe:1 | cat > test.avi
# ...this is the same as...
ffmpeg -i test.wav -f avi pipe: | cat > test.avi

此協定接受以下選項

blocksize

設定 I/O 操作的最大區塊大小(以位元組為單位)。預設值為 INT_MAX,這會導致不限制請求的區塊大小。合理地降低此值可以改善使用者終止請求的反應時間,如果資料傳輸速度慢,這會很有價值。

fd

設定檔案描述符號。

請注意,某些格式(通常是 MOV)要求輸出協定是可搜尋的,因此它們將無法使用管道輸出協定。

18.22 prompeg

Pro-MPEG Code of Practice #3 Release 2 FEC 協定。

Pro-MPEG CoP#3 FEC 是一種二維同位檢查前向錯誤更正機制,用於透過 RTP 傳送的 MPEG-2 傳輸串流。

此協定必須與 rtp_mpegts 多工器和 rtp 協定結合使用。

所需的語法為

-f rtp_mpegts -fec prompeg=option=val... rtp://hostname:port

目標 UDP 埠對於資料行 FEC 串流為 port + 2,對於資料列 FEC 串流為 port + 4

此協定接受以下選項

l=n

資料行數(4-20,LxD <= 100)

d=n

資料列數(4-20,LxD <= 100)

範例用法

-f rtp_mpegts -fec prompeg=l=8:d=4 rtp://hostname:port

18.23 rist

可靠網際網路串流傳輸協定

接受的選項如下

rist_profile

支援的值

simple
main

這是預設值。

advanced
buffer_size

設定內部 RIST 緩衝區大小,以毫秒為單位,用於資料重傳。預設值為 0,表示 librist 預設值(1 秒)。最大值為 30 秒。

fifo_size

librist 接收器輸出 fifo 的大小,以封包數量為單位。此值必須為 2 的冪次方。預設值為 8192(相較於 librist 預設值的 1024)。

overrun_nonfatal=1|0

在 librist fifo 緩衝區溢位時繼續運作。預設值為 0。

pkt_size

設定傳送資料時的最大封包大小。預設值為 1316。

log_level

設定 RIST 記錄訊息的日誌等級。只有在您明確想要啟用除錯等級訊息或封包遺失模擬時才需要設定此選項,否則會遵循常規的日誌等級。

secret

設定加密金鑰的覆寫,預設為未設定。

encryption

設定加密類型,預設為停用。可接受的值為 128 和 256。

18.24 rtmp

即時訊息協定。

即時訊息協定 (RTMP) 用於透過 TCP/IP 網路串流多媒體內容。

所需的語法為

rtmp://[username:password@]server[:port][/app][/instance][/playpath]

接受的參數如下:

username

可選的使用者名稱(主要用於發布)。

password

可選的密碼(主要用於發布)。

server

RTMP 伺服器的位址。

port

要使用的 TCP 埠號(預設為 1935)。

app

這是要存取的應用程式名稱。它通常對應於應用程式安裝在 RTMP 伺服器上的路徑(例如,/ondemand//flash/live/ 等)。您也可以透過 rtmp_app 選項覆寫從 URI 解析的值。

playpath

這是要播放的資源路徑或名稱,參考 app 中指定的應用程式,可以 "mp4:" 作為前綴。您也可以透過 rtmp_playpath 選項覆寫從 URI 解析的值。

listen

作為伺服器運作,監聽連入連線。

timeout

等待連入連線的最長時間。暗示啟用監聽模式。

此外,以下參數可以透過命令列選項(或在程式碼中透過 AVOption)設定:

rtmp_app

要連線到 RTMP 伺服器上的應用程式名稱。此選項會覆寫 URI 中指定的參數。

rtmp_buffer

設定用戶端緩衝時間,單位為毫秒。預設值為 3000。

rtmp_conn

額外的任意 AMF 連線參數,從字串解析而來,例如 B:1 S:authMe O:1 NN:code:1.23 NS:flag:ok O:0。每個值都以單一字元作為前綴,表示類型,B 代表布林值,N 代表數字,S 代表字串,O 代表物件,或 Z 代表空值,後跟一個冒號。對於布林值,資料必須是 0 或 1,分別代表 FALSE 或 TRUE。同樣地,對於物件,資料必須是 0 或 1,分別代表結束或開始物件。子物件中的資料項目可以命名,方法是在類型前加上 'N',並在值之前指定名稱(即 NB:myFlag:1)。此選項可以多次使用,以建構任意 AMF 序列。

rtmp_enhanced_codecs

指定用戶端在增強型 RTMP 串流中宣告支援的編解碼器列表。此選項應設定為逗號分隔的 fourcc 值列表,例如 hvc1,av01,vp09 代表多個編解碼器,或 hvc1 代表單一編解碼器。指定的列表將會呈現在 Connect Command Message 的 "fourCcLive" 屬性中。

rtmp_flashver

用於執行 SWF 播放器的 Flash 外掛程式版本。預設值為 LNX 9,0,124,2。(發布時,預設值為 FMLE/3.0 (compatible; <libavformat version>)。)

rtmp_flush_interval

在同一個請求中刷新封包的數量(僅限 RTMPT)。預設值為 10。

rtmp_live

指定媒體為即時串流。即時串流無法暫停或搜尋。預設值為 any,表示訂閱者首先嘗試播放 playpath 中指定的即時串流。如果找不到該名稱的即時串流,則播放錄製的串流。其他可能的值為 liverecorded

rtmp_pageurl

媒體嵌入的網頁 URL。預設情況下不會傳送任何值。

rtmp_playpath

要播放或發布的串流識別碼。此選項會覆寫 URI 中指定的參數。

rtmp_subscribe

要訂閱的即時串流名稱。預設情況下不會傳送任何值。只有在指定此選項或將 rtmp_live 設定為 live 時才會傳送。

rtmp_swfhash

解壓縮後 SWF 檔案的 SHA256 雜湊值 (32 位元組)。

rtmp_swfsize

解壓縮後 SWF 檔案的大小,SWFVerification 需要此值。

rtmp_swfurl

媒體的 SWF 播放器 URL。預設情況下不會傳送任何值。

rtmp_swfverify

播放器 swf 檔案的 URL,自動計算雜湊值/大小。

rtmp_tcurl

目標串流的 URL。預設為 proto://host[:port]/app。

tcp_nodelay=1|0

設定 TCP_NODELAY 以停用 Nagle 演算法。預設值為 0。

備註:目前寫入 socket 的操作尚未最佳化以減少系統呼叫,並降低 TCP_NODELAY 的效率/效果。

例如,要使用 ffplay 從 RTMP 伺服器 "myserver" 的應用程式 "vod" 讀取名為 "sample" 的多媒體資源:

ffplay rtmp://myserver/vod/sample

要發布到受密碼保護的伺服器,並分別傳遞 playpath 和 app 名稱:

ffmpeg -re -i <input> -f flv -rtmp_playpath some/long/path -rtmp_app long/app/name rtmp://username:password@myserver/

18.25 rtmpe

加密即時訊息協定。

加密即時訊息協定 (RTMPE) 用於在標準加密原語中串流多媒體內容,包括 Diffie-Hellman 金鑰交換和 HMACSHA256,產生一對 RC4 金鑰。

18.26 rtmps

透過安全 SSL 連線的即時訊息協定。

即時訊息協定 (RTMPS) 用於透過加密連線串流多媒體內容。

18.27 rtmpt

透過 HTTP 通道的即時訊息協定。

透過 HTTP 通道的即時訊息協定 (RTMPT) 用於在 HTTP 請求中串流多媒體內容,以穿透防火牆。

18.28 rtmpte

透過 HTTP 通道的加密即時訊息協定。

透過 HTTP 通道的加密即時訊息協定 (RTMPTE) 用於在 HTTP 請求中串流多媒體內容,以穿透防火牆。

18.29 rtmpts

透過 HTTPS 通道的即時訊息協定。

透過 HTTPS 通道的即時訊息協定 (RTMPTS) 用於在 HTTPS 請求中串流多媒體內容,以穿透防火牆。

18.30 libsmbclient

libsmbclient 允許使用者操作 CIFS/SMB 網路資源。

需要以下語法。

smb://[[domain:]user[:password@]]server[/share[/path[/file]]]

此協定接受以下選項。

timeout

設定底層低階操作所使用的 socket I/O 操作逾時時間,單位為毫秒。預設值為 -1,表示未指定逾時時間。

truncate

若設定為 1,則在寫入時截斷現有檔案。值為 0 可防止截斷。預設值為 1。

workgroup

設定用於建立連線的工作群組。預設情況下未指定工作群組。

如需更多資訊,請參閱:http://www.samba.org/

18.31 libssh

透過 libssh 的安全檔案傳輸協定。

使用 SFTP 協定從遠端資源讀取或寫入。

需要以下語法。

sftp://[user[:password]@]server[:port]/path/to/remote/resource.mpeg

此協定接受以下選項。

timeout

設定底層低階操作所使用的 socket I/O 操作逾時時間。預設值為 -1,表示未指定逾時時間。

truncate

若設定為 1,則在寫入時截斷現有檔案。值為 0 可防止截斷。預設值為 1。

private_key

指定包含私密金鑰的檔案路徑,用於授權。預設情況下,libssh 會在 ~/.ssh/ 目錄中搜尋金鑰。

範例:播放儲存在遠端伺服器上的檔案。

ffplay sftp://user:password@server_address:22/home/user/resource.mpeg

18.32 librtmp rtmp, rtmpe, rtmps, rtmpt, rtmpte

即時訊息協定及其變體,透過 librtmp 支援。

需要在組態期間存在 librtmp 標頭和函式庫。您需要明確地使用 "–enable-librtmp" 組態建置。如果啟用,這將取代原生 RTMP 協定。

此協定提供支援 RTMP、HTTP 通道 RTMP (RTMPT)、加密 RTMP (RTMPE)、SSL/TLS 上的 RTMP (RTMPS) 以及這些加密類型的通道變體 (RTMPTE、RTMPTS) 所需的大多數用戶端功能和少數伺服器功能。

所需的語法為

rtmp_proto://server[:port][/app][/playpath] options

其中,rtmp_proto 是字串 "rtmp"、"rtmpt"、"rtmpe"、"rtmps"、"rtmpte"、"rtmpts" 之一,對應於每個 RTMP 變體,而 serverportappplaypath 的含義與原生 RTMP 協定中指定的相同。options 包含以空格分隔的選項列表,格式為 key=val

如需更多資訊,請參閱 librtmp 手冊頁 (man 3 librtmp)。

例如,要使用 ffmpeg 將檔案即時串流到 RTMP 伺服器:

ffmpeg -re -i myfile -f flv rtmp://myserver/live/mystream

要使用 ffplay 播放相同的串流:

ffplay "rtmp://myserver/live/mystream live=1"

18.33 rtp

即時傳輸協定。

RTP URL 的必要語法為:

rtp://hostname[:port][?options]

port 指定要使用的 RTP 埠。

options 包含以 & 分隔的選項列表,格式為 key=val

支援以下 URL 選項:

ttl=n

設定 TTL (Time-To-Live) 值(僅適用於多播)。

rtcpport=n

設定遠端 RTCP 埠為 n

localrtpport=n

設定本地 RTP 埠為 n

localrtcpport=n'

設定本地 RTCP 埠為 n

pkt_size=n

設定最大封包大小(以位元組為單位)為 n

buffer_size=size

設定最大 UDP socket 緩衝區大小,單位為位元組。

connect=0|1

在 UDP socket 上執行 connect()(如果設定為 1)或不執行(如果設定為 0)。

sources=ip[,ip]

列出允許的來源 IP 位址。

block=ip[,ip]

列出不允許(封鎖)的來源 IP 位址。

write_to_source=0|1

將封包傳送到最新接收封包的來源位址(如果設定為 1)或預設遠端位址(如果設定為 0)。

localport=n

設定本地 RTP 埠為 n

這是已棄用的選項。請改用 localrtpport

localaddr=addr

用於傳送封包或加入多播群組的網路介面的本地 IP 位址。

timeout=n

設定 socket I/O 操作的逾時時間(以微秒為單位)為 n

重要注意事項

  1. 如果未設定 rtcpport,RTCP 埠將設定為 RTP 埠值加 1。
  2. 如果未設定 localrtpport(本地 RTP 埠),則會使用任何可用的埠作為本地 RTP 和 RTCP 埠。
  3. 如果未設定 localrtcpport(本地 RTCP 埠),則會將其設定為本地 RTP 埠值加 1。

18.34 rtsp

即時串流協定。

RTSP 在技術上不是 libavformat 中的協定處理常式,而是一個解多工器和多工器。解多工器同時支援標準 RTSP(資料透過 RTP 傳輸;例如 Apple 和 Microsoft 使用)和 Real-RTSP(資料透過 RDT 傳輸)。

多工器可用於使用 RTSP ANNOUNCE 將串流傳送到支援它的伺服器(目前為 Darwin Streaming Server 和 Mischa Spiegelmock 的 RTSP 伺服器)。

RTSP URL 的必要語法為:

rtsp://hostname[:port]/path

選項可以在 ffmpeg/ffplay 命令列中設定,或在程式碼中透過 AVOption 或在 avformat_open_input 中設定。

18.34.1 多工器

支援以下選項。

rtsp_transport

設定 RTSP 傳輸協定。

它接受以下值:

udp

使用 UDP 作為底層傳輸協定。

tcp

使用 TCP(在 RTSP 控制通道內交錯)作為底層傳輸協定。

預設值為 ‘0’。

rtsp_flags

設定 RTSP 旗標。

接受以下值:

latm

對於 AAC,使用 MP4A-LATM 封包化,而不是 MPEG4-GENERIC。

rfc2190

對於 H.263,使用 RFC 2190 封包化,而不是 RFC 4629。

skip_rtcp

不要傳送 RTCP 寄件者報告。

h264_mode0

在 RTP 中,對 H.264 使用模式 0。

send_bye

完成時傳送 RTCP BYE 封包。

預設值為 ‘0’。

min_port

設定最小本地 UDP 埠。預設值為 5000。

max_port

設定最大本地 UDP 埠。預設值為 65000。

buffer_size

設定最大 socket 緩衝區大小,單位為位元組。

pkt_size

設定最大傳送封包大小(以位元組為單位)。預設值為 1472。

18.34.2 解多工器

支援以下選項。

initial_pause

如果設定為 1,則不要立即開始播放串流。預設值為 0。

rtsp_transport

設定 RTSP 傳輸協定。

它接受以下值:

udp

使用 UDP 作為底層傳輸協定。

tcp

使用 TCP(在 RTSP 控制通道內交錯)作為底層傳輸協定。

udp_multicast

使用 UDP 多播作為底層傳輸協定。

http

使用 HTTP 通道作為底層傳輸協定,這對於通過代理伺服器很有用。

https

使用 HTTPs 通道作為底層傳輸協定,這對於通過代理伺服器很有用,並且因安全考量而被廣泛使用。

可以指定多個底層傳輸協定,在這種情況下,它們會一次嘗試一個(如果一個的設定失敗,則嘗試下一個)。對於多工器,僅支援 ‘tcp’ 和 ‘udp’ 選項。

rtsp_flags

設定 RTSP 旗標。

接受以下值:

filter_src

僅接受來自協商後的對等位址和埠的封包。

listen

作為伺服器運作,監聽連入連線。

prefer_tcp

如果 TCP 可用作 RTSP RTP 傳輸,則首先嘗試使用 TCP 進行 RTP 傳輸。

satip_raw

匯出原始 MPEG-TS 串流,而不是解多工。此旗標將僅寫出原始串流,並保留原始 PAT/PMT/PID。

預設值為 ‘none’。

allowed_media_types

設定要從伺服器接受的媒體類型。

接受以下旗標:

video
audio
data
subtitle

預設情況下,它接受所有媒體類型。

min_port

設定最小本地 UDP 埠。預設值為 5000。

max_port

設定最大本地 UDP 埠。預設值為 65000。

listen_timeout

設定建立初始連線的最大逾時時間(以秒為單位)。設定 listen_timeout > 0 會將 rtsp_flags 設定為 ‘listen’。預設值為 -1,表示在設定 ‘listen’ 模式時為無限逾時。

reorder_queue_size

設定要緩衝的封包數量,用於處理重新排序的封包。

timeout

設定 socket TCP I/O 逾時時間,單位為微秒。

user_agent

覆寫 User-Agent 標頭。如果未指定,則預設為 libavformat 識別字串。

buffer_size

設定最大 socket 緩衝區大小,單位為位元組。

當透過 UDP 接收資料時,解多工器會嘗試重新排序接收到的封包(因為它們可能亂序到達,或者封包可能會完全遺失)。可以透過將最大解多工延遲設定為零來停用此功能(透過 AVFormatContext 的 max_delay 欄位)。

當使用 ffplay 觀看多位元率 Real-RTSP 串流時,可以使用 -vst n-ast n 分別選擇要顯示的視訊和音訊串流,並且可以透過按下 va 即時切換。

18.34.3 範例

以下範例均使用 ffplayffmpeg 工具。

  • 透過 UDP 觀看串流,最大重新排序延遲為 0.5 秒
    ffplay -max_delay 500000 -rtsp_transport udp rtsp://server/video.mp4
    
  • 觀看透過 HTTP 通道的串流
    ffplay -rtsp_transport http rtsp://server/video.mp4
    
  • 將串流即時傳送到 RTSP 伺服器,供其他人觀看
    ffmpeg -re -i input -f rtsp -muxdelay 0.1 rtsp://server/live.sdp
    
  • 即時接收串流
    ffmpeg -rtsp_flags listen -i rtsp://ownaddress/live.sdp output
    

18.35 sap

會議宣告協定 (RFC 2974)。這在技術上不是 libavformat 中的協定處理常式,而是一個多工器和解多工器。它用於 RTP 串流的訊號傳輸,方法是在單獨的埠上定期宣告串流的 SDP。

18.35.1 多工器

給多工器的 SAP URL 語法為:

sap://destination[:port][?options]

RTP 封包會傳送到埠 port 上的 destination,如果未指定埠,則傳送到埠 5004。options 是一個以 & 分隔的列表。支援以下選項:

announce_addr=address

指定傳送宣告的目的地 IP 位址。如果省略,宣告會被傳送到常用的 SAP 宣告多點傳播位址 224.2.127.254 (sap.mcast.net),或者,如果 destination 是 IPv6 位址,則為 ff0e::2:7ffe。

announce_port=port

指定傳送宣告的埠號,如果未指定,預設為 9875。

ttl=ttl

指定宣告和 RTP 封包的存活時間 (TTL) 值,預設為 255。

same_port=0|1

如果設定為 1,則在同一個埠號對上傳送所有 RTP 串流。如果為零(預設值),則所有串流都會在不同的埠號上傳送,每個串流的埠號都比前一個高 2 號。VLC/Live555 需要設定為 1 才能接收串流。libavformat 中用於接收的 RTP 堆疊需要所有串流都在不同的埠號上傳送。

以下為範例命令列。

在本地子網路上廣播串流,以便在 VLC 中觀看

ffmpeg -re -i input -f sap sap://224.0.0.255?same_port=1

同樣地,在 ffplay 中觀看

ffmpeg -re -i input -f sap sap://224.0.0.255

以及在 ffplay 中透過 IPv6 觀看

ffmpeg -re -i input -f sap sap://[ff0e::1:2:3:4]

18.35.2 解多工器

提供給解多工器的 SAP URL 語法為

sap://[address][:port]

address 是要監聽宣告的多點傳播位址,如果省略,則使用預設值 224.2.127.254 (sap.mcast.net)。port 是監聽的埠號,如果省略,則為 9875。

解多工器會監聽給定的位址和埠號上的宣告。一旦收到宣告,它會嘗試接收該特定串流。

以下為範例命令列。

播放在一般 SAP 多點傳播位址上宣告的第一個串流

ffplay sap://

播放在預設 IPv6 SAP 多點傳播位址上宣告的第一個串流

ffplay sap://[ff0e::2:7ffe]

18.36 sctp

串流控制傳輸協定。

接受的 URL 語法為

sctp://host:port[?options]

此協定接受以下選項

listen

如果設定為任何值,則監聽連入連線。預設會進行連出連線。

max_streams

設定串流的最大數量。預設情況下,不設定限制。

18.37 srt

透過 libsrt 的 Haivision 安全可靠傳輸協定。

SRT URL 的支援語法為

srt://hostname:port[?options]

options 包含以 & 分隔的選項列表,格式為 key=val

options srt://hostname:port

options 包含 ' -key val ' 選項的列表。

此協定接受以下選項。

connect_timeout=milliseconds

連線逾時;SRT 無法在 RTT > 1500 毫秒(2 次握手交換)的情況下連線,預設連線逾時為 3 秒。此選項適用於呼叫者和會合連線模式。會合模式的連線逾時時間是設定值的 10 倍(可以用作早期版本連線問題的變通方法)。

ffs=bytes

飛行旗標大小 (視窗大小),以位元組為單位。FFS 實際上是一個內部參數,您應將其設定為不小於 recv_buffer_sizemss。預設值相對較大,因此除非您設定非常大的接收器緩衝區,否則您不需要變更此選項。預設值為 25600。

inputbw=bytes/seconds

傳送器名義輸入速率,以位元組/秒為單位。與 oheadbw 一起使用,當 maxbw 設定為相對值 (0) 時,用於計算最大傳送速率,當恢復封包與主要媒體串流一起傳送時:inputbw * (100 + oheadbw) / 100。如果在 maxbw 設定為相對值 (0) 時未設定 inputbw,則實際輸入速率會在函式庫內部評估。預設值為 0。

iptos=tos

IP 服務類型。僅適用於傳送器。預設值為 0xB8。

ipttl=ttl

IP 存活時間 (TTL)。僅適用於傳送器。預設值為 64。

latency=microseconds

基於時間戳記的封包傳遞延遲。用於吸收遺失封包重新傳輸的突發。此旗標將 rcvlatencypeerlatency 設定為相同的值。請注意,在 1.3.0 版本之前,這是唯一可以設定延遲的旗標,但是當端為傳送器時,這實際上等同於設定 peerlatency,當端為接收器時,等同於設定 rcvlatency,且不支援雙向串流傳送。

listen_timeout=microseconds

設定通訊端監聽逾時。

maxbw=bytes/seconds

最大傳送頻寬,以位元組/秒為單位。-1 無限 (CSRTCC 限制為 30mbps) 0 相對於輸入速率 (請參閱 inputbw) >0 絕對限制值。預設值為 0 (相對值)

mode=caller|listener|rendezvous

連線模式。caller 開啟用戶端連線。listener 啟動伺服器以監聽連入連線。rendezvous 使用會合連線模式。預設值為 caller。

mss=bytes

最大區段大小,以位元組為單位。用於緩衝區配置和速率計算,使用封包計數器,假設封包已完全填滿。使用對等方之間最小的 MSS。在整個網際網路上,預設值為 1500。這是 UDP 封包的最大大小,只能縮小,除非您有一些不尋常的專用網路設定。預設值為 1500。

nakreport=1|0

如果設定為 1,接收器將定期傳送 'UMSG_LOSSREPORT' 訊息,直到遺失的封包重新傳輸或有意丟棄為止。預設值為 1。

oheadbw=percents

高於輸入速率的恢復頻寬額外負擔,以百分比表示。請參閱 inputbw。預設值為 25%。

passphrase=string

HaiCrypt 加密/解密密碼字串,長度從 10 到 79 個字元。密碼字串是傳送器和接收器之間的共用秘密。它用於使用 PBKDF2 (基於密碼的金鑰衍生函式) 產生金鑰加密金鑰。僅當 pbkeylen 為非零值時才使用。僅當接收到的資料已加密時,才在接收器上使用。已設定的密碼字串無法復原(僅寫入)。

enforced_encryption=1|0

如果為 true,則連線雙方都必須設定相同的密碼(包括空白,即沒有加密)。如果密碼不符或只有一方未加密,則連線會被拒絕。預設值為 true。

kmrefreshrate=packets

在傳輸多少封包後,加密金鑰會切換到新金鑰。預設值為 -1。-1 表示自動 (srt 函式庫中的 0x1000000)。此選項的範圍是 0 - INT_MAX 之間的整數。

kmpreannounce=packets

傳送新加密金鑰和發生切換之間的時間間隔。此值也適用於發生切換和舊加密金鑰停用之間後續的時間間隔。預設值為 -1。-1 表示自動 (srt 函式庫中的 0x1000)。此選項的範圍是 0 - INT_MAX 之間的整數。

snddropdelay=microseconds

傳送器在丟棄封包之前的額外延遲。此延遲會新增至預設的丟棄延遲時間間隔值。

特殊值 -1:完全不要在傳送器上丟棄封包。

payload_size=bytes

設定在即時模式下單次呼叫傳送函式期間傳輸的封包最大宣告大小。如果未使用此值,則使用 0(這是檔案模式下的預設值)。預設值為 -1(自動),通常表示 MPEG-TS;如果您打算使用 SRT 傳送任何不同類型的酬載,例如,將即時串流包裝在非常小的影格中,則可以使用更大的最大影格大小,但不超過 1456 位元組。

pkt_size=bytes

'payload_size' 的別名。

peerlatency=microseconds

由傳送器端設定為接收器最小值的延遲值(如 rcvlatency 中所述)。

pbkeylen=bytes

傳送器加密金鑰長度,以位元組為單位。只能設定為 0、16、24 和 32。如果不是 0,則啟用傳送器加密。接收器不需要(設定為 0),金鑰大小從 HaiCrypt 握手取得。預設值為 0。

rcvlatency=microseconds

自封包傳送時起,到封包在接收函式中傳遞到接收器應用程式時,應經過的時間。此時間應為足夠大的緩衝時間,以涵蓋傳送所花費的時間、意外延長的 RTT 時間以及重新傳輸遺失的 UDP 封包所需的時間。有效延遲值將是此選項值和對等方設定的 peerlatency 值的最大值。在 1.3.0 版本之前,此選項僅作為 latency 提供。

recv_buffer_size=bytes

設定 UDP 接收緩衝區大小,以位元組表示。

send_buffer_size=bytes

設定 UDP 傳送緩衝區大小,以位元組表示。

timeout=microseconds

設定讀取、寫入和連線操作的引發錯誤逾時。請注意,SRT 函式庫具有可以單獨控制的內部逾時,此處設定的值僅是這些逾時的上限。

tlpktdrop=1|0

過時封包丟棄。當在接收器上啟用時,它會跳過未及時傳遞的遺失封包,並在它們的播放時間到來時將後續封包傳遞到應用程式。它也會向傳送器傳送虛假的 ACK。當在傳送器上啟用並在接收對等方上啟用時,傳送器會丟棄較舊的封包,這些封包沒有機會及時傳遞。如果接收器支援,則會在傳送器中自動啟用。

sndbuf=bytes

設定傳送緩衝區大小,以位元組表示。

rcvbuf=bytes

設定接收緩衝區大小,以位元組表示。

接收緩衝區不得大於 ffs

lossmaxttl=packets

重新排序容忍度可能增加到的值。當重新排序容忍度 > 0 時,封包遺失報告會延遲到收到該數量的封包為止。每次收到「延遲」封包時,重新排序容忍度都會增加,但這並非由於重新傳輸(也就是當 UDP 封包傾向於亂序到達時),增加的量為最新序列和此封包序列之間的差異,且不超過此選項的值。預設值為 0,表示此機制已關閉,並且始終在序列中遇到「間隙」時立即傳送遺失報告。

minversion

對等方所需的最小 SRT 版本。與不滿足最低版本要求的對等方的連線將被拒絕。

十六進制版本的格式為 0xXXYYZZ,人類可讀格式為 x.y.z。

streamid=string

一個限制為 512 個字元的字串,可以在連線之前在通訊端上設定。此串流 ID 將能夠由監聽器端從 srt_accept 傳回的通訊端中檢索,並由具有該設定串流 ID 的通訊端連線。SRT 不強制對此字串的內容進行任何特殊解釋。此選項在會合連線中沒有意義;結果可能是其中一方會覆寫另一方的值,而哪一方會贏取取決於運氣

srt_streamid=string

'streamid' 的別名,以避免與 ffmpeg 命令列選項衝突。

smoother=live|file

用於該通訊端傳輸的平滑器類型,它負責傳輸和擁塞控制。連線雙方的平滑器類型必須完全相同,否則連線會被拒絕。

messageapi=1|0

設定後,此通訊端使用訊息 API,否則使用緩衝區 API。請注意,在即時模式下(請參閱 transtype),只有訊息 API 可用。在檔案模式下,您可以選擇使用兩種模式之一

串流 API(預設值,當此選項為 false 時)。在此模式下,您可以使用一個傳送指令傳送任意多的資料,甚至可以使用直接從檔案讀取的專用函式。內部設施將處理任何速度和擁塞控制。接收時,您也可以接收任意多的資料,未提取的資料將等待下一次呼叫。在串流模式下,資料部分之間沒有邊界。

訊息 API。在此模式下,您的單個傳送指令會傳遞具有邊界的確切一塊資料(訊息)。與即時模式相反,此訊息可以跨越多個 UDP 封包,唯一的尺寸限制是它應作為一個整體放入傳送緩衝區中。接收器應使用盡可能大的緩衝區來接收訊息,否則將不會放棄該訊息。當訊息不完整時(未收到所有封包或發生封包遺失),將不會放棄該訊息。

transtype=live|file

設定通訊端的傳輸類型,特別是,設定此選項會將多個其他參數設定為特定傳輸類型所需的預設值。

live:將選項設定為即時傳輸。在此模式下,您應該僅使用一個傳送指令傳送適合一個 UDP 封包的資料量,並且限制為首先在 payload_size 中定義的值(在此模式下預設值為 1316)。在此模式下沒有速度控制,只有頻寬控制(如果已設定),以避免因額外負擔傳輸(重新傳輸和控制封包)而超出頻寬。

file:將選項設定為非即時傳輸。有關更多說明,請參閱 messageapi

linger=seconds

當關閉時,通訊端等待未傳送資料的秒數。預設值為 -1。-1 表示自動(在即時模式下關閉,為 0 秒;在檔案模式下開啟,為 180 秒)。此選項的範圍是 0 - INT_MAX 之間的整數。

tsbpd=1|0

為 true 時,使用基於時間戳記的封包傳遞模式。預設行為取決於傳輸類型:在即時模式下啟用,在檔案模式下停用。

如需更多資訊,請參閱:https://github.com/Haivision/srt

18.38 srtp

安全即時傳輸協定。

接受的選項如下

srtp_in_suite
srtp_out_suite

選取輸入和輸出編碼套件。

支援的值

AES_CM_128_HMAC_SHA1_80
SRTP_AES128_CM_HMAC_SHA1_80
AES_CM_128_HMAC_SHA1_32
SRTP_AES128_CM_HMAC_SHA1_32
srtp_in_params
srtp_out_params

設定輸入和輸出編碼參數,這些參數由二進位區塊的 base64 編碼表示形式表示。此二進位區塊的前 16 個位元組用作主金鑰,後續 14 個位元組用作主鹽值。

18.39 subfile

虛擬提取檔案或另一個串流的區段。基礎串流必須是可搜尋的。

接受的選項

start

提取區段的開始偏移量,以位元組為單位。

end

提取區段的結束偏移量,以位元組為單位。如果設定為 0,則提取到檔案結尾。

範例

從 DVD VOB 檔案中提取章節(開始和結束扇區從外部取得並乘以 2048)

subfile,,start,153391104,end,268142592,,:/media/dvd/VIDEO_TS/VTS_08_1.VOB

直接從 TAR 封存檔播放 AVI 檔案

subfile,,start,183241728,end,366490624,,:archive.tar

從開始偏移量到結尾播放 MPEG-TS 檔案

subfile,,start,32815239,end,0,,:video.ts

18.40 tee

將輸出寫入多個協定。個別輸出以 | 分隔

tee:file://path/to/local/this.avi|file://path/to/local/that.avi

18.41 tcp

傳輸控制協定。

TCP URL 的必要語法為

tcp://hostname:port[?options]

options 包含以 & 分隔的選項列表,格式為 key=val

以下是支援的選項列表。

listen=2|1|0

監聽連入連線。0 停用監聽,1 在單一用戶端模式下啟用監聽,2 在多用戶端模式下啟用監聽。預設值為 0。

local_addr=addr

用於 tcp 通訊端連線的網路介面的本機 IP 位址。

local_port=port

用於 tcp 通訊端連線的本機埠號。

timeout=microseconds

設定引發錯誤逾時,以微秒表示。

此選項僅在讀取模式下相關:如果在超過此時間間隔內沒有資料到達,則引發錯誤。

listen_timeout=milliseconds

設定接聽逾時時間,以毫秒為單位。

recv_buffer_size=bytes

設定接收緩衝區大小,以位元組為單位。

send_buffer_size=bytes

設定傳送緩衝區大小,以位元組為單位。

tcp_nodelay=1|0

設定 TCP_NODELAY 以停用 Nagle 演算法。預設值為 0。

備註:目前寫入 socket 的操作尚未最佳化以減少系統呼叫,並降低 TCP_NODELAY 的效率/效果。

tcp_mss=bytes

設定外送 TCP 封包的最大區段大小,以位元組為單位。

以下範例展示如何使用 ffmpeg 設定接聽 TCP 連線,然後使用 ffplay 存取該連線

ffmpeg -i input -f format tcp://hostname:port?listen
ffplay tcp://hostname:port

18.42 tls

傳輸層安全協議 (TLS) / 安全通訊端層 (SSL)

TLS/SSL 網址的必要語法為

tls://hostname:port[?options]

以下參數可以透過命令列選項設定(或在程式碼中透過 AVOption 設定)

ca_file, cafile=filename

包含憑證授權單位 (CA) 根憑證的檔案,將其視為信任憑證。如果連結的 TLS 函式庫包含預設值,則可能不需要指定此項即可進行驗證,但並非所有函式庫和設定都內建預設值。檔案必須為 OpenSSL PEM 格式。

tls_verify=1|0

若啟用,嘗試驗證與我們通訊的對等方。請注意,如果使用 OpenSSL,目前僅確保對等方憑證是由 CA 資料庫中的其中一個根憑證簽署,但不會驗證憑證是否實際符合我們嘗試連線的主機名稱。(使用其他後端時,也會驗證主機名稱。)

預設停用此功能,因為在許多情況下,這需要呼叫者提供 CA 資料庫。

cert_file, cert=filename

包含憑證的檔案,用於與對等方交握。(當作為伺服器在接聽模式下運作時,通常更常需要對等方提供此憑證,而用戶端憑證僅在特定設定中是強制性的。)

key_file, key=filename

包含憑證私密金鑰的檔案。

listen=1|0

若啟用,接聽在提供的連接埠上的連線,並在交握中擔任伺服器角色,而非用戶端角色。

http_proxy

要透過其進行通道傳輸的 HTTP 代理伺服器,例如 http://example.com:1234。代理伺服器必須支援 CONNECT 方法。

命令列範例

建立 TLS/SSL 伺服器以服務輸入串流。

ffmpeg -i input -f format tls://hostname:port?listen&cert=server.crt&key=server.key

使用 ffplay 從 TLS/SSL 伺服器播放串流

ffplay tls://hostname:port

18.43 udp

使用者資料包協定。

UDP 網址的必要語法為

udp://hostname:port[?options]

options 包含以 & 分隔的選項列表,格式為 key=val

如果系統上啟用了執行緒,則會使用循環緩衝區來儲存傳入的資料,這允許減少因 UDP socket 緩衝區溢位而造成的資料遺失。fifo_sizeoverrun_nonfatal 選項與此緩衝區相關。

以下是支援的選項列表。

buffer_size=size

設定 UDP 最大 socket 緩衝區大小,以位元組為單位。這用於設定接收或傳送緩衝區大小,取決於 socket 的用途。輸出預設為 32 KB,輸入預設為 384 KB。另請參閱 fifo_size

bitrate=bitrate

如果設定為非零值,如果輸入有足夠的封包來維持,則輸出將具有指定的恆定位元率。

burst_bits=bits

當使用 bitrate 時,這指定封包叢發中的最大位元數。

localport=port

覆寫要綁定的本機 UDP 連接埠。

localaddr=addr

用於傳送封包或加入多播群組的網路介面的本地 IP 位址。

pkt_size=size

設定 UDP 封包的大小,以位元組為單位。

reuse=1|0

明確允許或不允許重複使用 UDP socket。

ttl=ttl

設定存活時間值(僅適用於多播)。

connect=1|0

使用 connect() 初始化 UDP socket。在這種情況下,目標位址稍後無法使用 ff_udp_set_remote_url 變更。如果目標位址在開始時未知,也可以在 ff_udp_set_remote_url 中指定此選項。這允許使用 getsockname 找出封包的來源位址,並使寫入在收到「目的地無法連線」時傳回 AVERROR(ECONNREFUSED)。對於接收,這帶來僅接收來自指定對等方位址/連接埠的封包的好處。

sources=address[,address]

僅接收從指定位址傳送的封包。在多播的情況下,也僅訂閱來自這些位址的多播流量。

block=address[,address]

忽略從指定位址傳送的封包。在多播的情況下,也在多播訂閱中排除來源位址。

fifo_size=units

設定 UDP 接收循環緩衝區大小,以 188 位元組大小的封包數量表示。如果未指定,則預設為 7*4096。

overrun_nonfatal=1|0

在 UDP 接收循環緩衝區溢位的情況下存活。預設值為 0。

timeout=microseconds

設定引發錯誤逾時,以微秒表示。

此選項僅在讀取模式下相關:如果在超過此時間間隔內沒有資料到達,則引發錯誤。

broadcast=1|0

明確允許或不允許 UDP 廣播。

請注意,在具有廣播風暴保護的網路上,廣播可能無法正常運作。

18.43.1 範例

  • 使用 ffmpeg 透過 UDP 串流到遠端端點
    ffmpeg -i input -f format udp://hostname:port
    
  • 使用 ffmpeg 以 mpegts 格式透過 UDP 串流,使用 188 大小的 UDP 封包,並使用大型輸入緩衝區
    ffmpeg -i input -f mpegts udp://hostname:port?pkt_size=188&buffer_size=65535
    
  • 使用 ffmpeg 從遠端端點透過 UDP 接收
    ffmpeg -i udp://[multicast-address]:port ...
    

18.44 unix

Unix 本機 socket

Unix socket 網址的必要語法為

unix://filepath

以下參數可以透過命令列選項設定(或在程式碼中透過 AVOption 設定)

timeout

逾時時間,單位為毫秒。

listen

在接聽模式下建立 Unix socket。

18.45 zmq

使用 libzmq 函式庫的 ZeroMQ 非同步訊息傳遞。

此函式庫支援單播串流到多個用戶端,而無需依賴外部伺服器。

串流或連線到串流的必要語法為

zmq:tcp://ip-address:port

範例:在連接埠 5555 上建立 localhost 串流

ffmpeg -re -i input -f mpegts zmq:tcp://127.0.0.1:5555

多個用戶端可以使用以下方式連線到串流

ffplay zmq:tcp://127.0.0.1:5555

串流到多個用戶端是使用 ZeroMQ Pub-Sub 模式實作的。伺服器端綁定到一個連接埠並發布資料。用戶端連線到伺服器(透過 IP 位址/連接埠)並訂閱串流。伺服器和用戶端啟動的順序通常無關緊要。

ffmpeg 必須使用 –enable-libzmq 選項編譯才能支援此協定。

選項可以在 ffmpeg/ffplay 命令列上設定。支援以下選項

pkt_size

強制傳送/接收資料的最大封包大小。預設值為 131,072 位元組。在伺服器端,這設定透過 ZeroMQ 傳送的封包最大大小。在用戶端,這設定接收封包的內部緩衝區大小。請注意,用戶端上的 pkt_size 應等於或大於伺服器上的 pkt_size。否則,接收到的訊息可能會被截斷,導致解碼錯誤。

19 裝置選項

libavdevice 函式庫提供與 libavformat 相同的介面。也就是說,輸入裝置被視為像解多工器,而輸出裝置像多工器,介面和通用裝置選項與 libavformat 提供的相同(請參閱 ffmpeg-formats 手冊)。

此外,每個輸入或輸出裝置可能支援所謂的私有選項,這些選項是該元件特有的。

選項可以透過在 FFmpeg 工具中指定 -option value 來設定,或透過在裝置 AVFormatContext 選項中明確設定值,或使用 libavutil/opt.h API 以程式設計方式使用。

20 輸入裝置

輸入裝置是 FFmpeg 中配置的元素,可讓您存取來自連接到系統的多媒體裝置的資料。

當您配置 FFmpeg 建置時,預設會啟用所有支援的輸入裝置。您可以使用配置選項「–list-indevs」列出所有可用的輸入裝置。

您可以使用配置選項「–disable-indevs」停用所有輸入裝置,並使用選項「–enable-indev=INDEV」選擇性地啟用輸入裝置,或者您可以使用選項「–disable-indev=INDEV」停用特定輸入裝置。

ff* 工具的選項「-devices」將顯示支援的輸入裝置列表。

以下是目前可用的輸入裝置的描述。

20.1 alsa

ALSA (Advanced Linux Sound Architecture) 輸入裝置。

若要在配置期間啟用此輸入裝置,您需要在系統上安裝 libasound。

此裝置允許從 ALSA 裝置擷取。要擷取的裝置名稱必須是 ALSA 卡識別碼。

ALSA 識別碼的語法為

hw:CARD[,DEV[,SUBDEV]]

其中 DEVSUBDEV 組件是選用的。

三個引數(依序:CARDDEVSUBDEV)指定卡號或識別碼、裝置號碼和子裝置號碼(-1 表示任何)。

若要查看系統目前識別的卡列表,請檢查 /proc/asound/cards/proc/asound/devices 檔案。

例如,若要使用 ffmpeg 從卡 ID 為 0 的 ALSA 裝置擷取,您可以執行以下命令

ffmpeg -f alsa -i hw:0 alsaout.wav

如需更多資訊,請參閱:http://www.alsa-project.org/alsa-doc/alsa-lib/pcm.html

20.1.1 選項

sample_rate

設定取樣率,單位為 Hz。預設值為 48000。

channels

設定聲道數。預設值為 2。

20.2 android_camera

Android 相機輸入裝置。

此輸入裝置使用 Android Camera2 NDK API,該 API 在 API 等級 24+ 的裝置上可用。android_camera 的可用性在配置期間自動偵測。

此裝置允許從 Android 裝置上的所有相機擷取,這些相機已整合到 Camera2 NDK API 中。

可用的相機在內部列舉,可以使用 camera_index 參數選取。輸入檔案字串會被捨棄。

通常,後置相機的索引為 0,而前置相機的索引為 1。

20.2.1 選項

video_size

設定視訊大小,以字串形式給定,例如 640x480 或 hd720。如果請求的視訊大小不可用,或預設情況下,則會回退到 Android 回報的第一個可用配置。

framerate

設定視訊影格率。如果請求的影格率不可用,或預設情況下 (-1),則會回退到 Android 回報的第一個可用配置。

camera_index

設定要使用的相機索引。預設值為 0。

input_queue_size

設定要緩衝的最大影格數。預設值為 5。

20.3 avfoundation

AVFoundation 輸入裝置。

AVFoundation 是 Apple 目前建議在 OSX >= 10.7 以及 iOS 上進行串流抓取的框架。

輸入檔名必須以以下語法給定

-i "[[VIDEO]:[AUDIO]]"

第一個項目選取視訊輸入,而後者選取音訊輸入。串流必須由裝置名稱或裝置索引指定,如裝置列表所示。或者,可以使用 -video_device_index <INDEX> 和/或 -audio_device_index <INDEX> 按索引選擇視訊和/或音訊輸入裝置,覆寫輸入檔名中給定的任何裝置名稱或索引。

所有可用的裝置都可以使用 -list_devices true 列舉,列出所有裝置名稱和對應的索引。

有兩個裝置名稱別名

default

選取對應類型的 AVFoundation 預設裝置。

none

不要錄製對應的媒體類型。這相當於指定空的裝置名稱或索引。

20.3.1 選項

AVFoundation 支援以下選項

-list_devices <TRUE|FALSE>

如果設定為 true,則會給出所有可用輸入裝置的列表,顯示所有裝置名稱和索引。

-video_device_index <INDEX>

按索引指定視訊裝置。覆寫輸入檔名中給定的任何內容。

-audio_device_index <INDEX>

按索引指定音訊裝置。覆寫輸入檔名中給定的任何內容。

-pixel_format <FORMAT>

請求視訊裝置使用特定的像素格式。如果指定的格式不受支援,則會給出可用格式的列表,並改為使用列表中的第一個格式。可用的像素格式為:monob, rgb555be, rgb555le, rgb565be, rgb565le, rgb24, bgr24, 0rgb, bgr0, 0bgr, rgb0, bgr48be, uyvy422, yuva444p, yuva444p16le, yuv444p, yuv422p16, yuv422p10, yuv444p10, yuv420p, nv12, yuyv422, gray

-framerate

設定抓取影格率。預設值為 ntsc,對應於 30000/1001 的影格率。

-video_size

設定視訊影格大小。

-capture_cursor

擷取滑鼠指標。預設值為 0。

-capture_mouse_clicks

擷取螢幕滑鼠點擊。預設值為 0。

-capture_raw_data

擷取原始裝置資料。預設值為 0。使用此選項可能會導致接收傳遞到 AVFoundation 框架的基礎資料。例如,對於將原始 DV 資料傳送到框架的多工裝置(如基於磁帶的攝影機),將此選項設定為 false 會導致僅擷取以指定像素格式擷取的視訊影格。將此選項設定為 true 會導致接收未經修改的原始 DV 串流。

20.3.2 範例

  • 列印 AVFoundation 支援的裝置列表並退出
    $ ffmpeg -f avfoundation -list_devices true -i ""
    
  • 從視訊裝置 0 和音訊裝置 0 錄製視訊到 out.avi
    $ ffmpeg -f avfoundation -i "0:0" out.avi
    
  • 從視訊裝置 2 和音訊裝置 1 錄製視訊到 out.avi
    $ ffmpeg -f avfoundation -video_device_index 2 -i ":1" out.avi
    
  • 從系統預設視訊裝置使用像素格式 bgr0 錄製視訊,且不錄製任何音訊到 out.avi
    $ ffmpeg -f avfoundation -pixel_format bgr0 -i "default:none" out.avi
    
  • 從合適的輸入裝置錄製原始 DV 資料,並將輸出寫入 out.dv
    $ ffmpeg -f avfoundation -capture_raw_data true -i "zr100:none" out.dv
    

20.4 bktr

BSD 視訊輸入裝置。已棄用且將被移除 - 如果您有興趣維護它,請聯絡開發人員。

20.4.1 選項

framerate

設定影格率。

video_size

設定視訊影格大小。預設值為 vga

standard

可用值為

pal
ntsc
secam
paln
palm
ntscj

20.5 decklink

decklink 輸入裝置為 Blackmagic DeckLink 裝置提供擷取功能。

若要啟用此輸入裝置,您需要 Blackmagic DeckLink SDK,並且需要使用適當的 --extra-cflags--extra-ldflags 進行配置。在 Windows 上,您需要透過 widl 執行 IDL 檔案。

DeckLink 對其支援的格式非常挑剔。輸入的像素格式可以使用 raw_format 設定。影格率和視訊大小必須使用 -list_formats 1 為您的裝置確定。音訊取樣率始終為 48 kHz,聲道數可以為 2、8 或 16。請注意,所有音訊聲道都捆綁在單一音軌中。

20.5.1 選項

list_devices

如果設定為 true,則列印裝置列表並退出。預設為 false。此選項已棄用,請使用 ffmpeg 的 -sources 選項來列出可用的輸入裝置。

list_formats

如果設定為 true,則列印支援的格式列表並退出。預設為 false

format_code <FourCC>

這將輸入視訊格式設定為 FourCC 給定的格式。若要查看您的裝置支援的值,請使用 list_formats。請注意,有一個 FourCC 'pal ' 也可以用作 pal(3 個字母)。預設行為是自動偵測輸入視訊格式(如果硬體支援)。

raw_format

設定擷取的視訊的像素格式。可用值為

auto

這是預設值,表示如果使用格式自動偵測,則為 8 位元 YUV 422 或 8 位元 ARGB,否則為 8 位元 YUV 422。

uyvy422

8 位元 YUV 422。

yuv422p10

10 位元 YUV 422。

argb

8 位元 RGB。

bgra

8 位元 RGB。

rgb10

10 位元 RGB。

teletext_lines

如果設定為非零值,將從垂直輔助資料中擷取額外的圖文電視串流。支援 SD PAL (576i) 和 HD (1080i 或 1080p) 來源。在 HD 來源的情況下,會解碼 OP47 封包。

此選項是要擷取的 SD PAL VBI 行的位元遮罩,特別是第 6 行到第 22 行,以及第 318 行到第 335 行。第 6 行是遮罩中的 LSB。選定的不包含圖文電視資訊的行將被忽略。您可以使用特殊的 all 常數來選取所有可能的行,或使用 standard 來跳過與所有接收器不相容的第 6、318 和 319 行。

對於 SD 訊號源,ffmpeg 需要編譯時啟用 --enable-libzvbi 選項。對於 HD 訊號源,在較舊 (4K 前) 的 DeckLink 卡型號上,您必須以 10 位元模式擷取。

channels

定義要擷取的音訊通道數量。必須是 ‘2’、‘8’ 或 ‘16’。預設值為 ‘2’。

duplex_mode (雙工模式)

設定 Decklink 裝置的雙工/設定檔模式。必須是 ‘unset’、‘half’、‘full’、‘one_sub_device_full’、‘one_sub_device_half’、‘two_sub_device_full’、‘four_sub_device_half’。預設值為 ‘unset’。

注意:DeckLink SDK 11.0 已將 duplex 屬性替換為 profile 屬性。對於 DeckLink Duo 2 和 DeckLink Quad 2,設定檔在任何 2 個使用相同連接器的子裝置之間共享。對於 DeckLink 8K Pro,設定檔在所有 4 個子裝置之間共享。因此 DeckLink 8K Pro 支援四個設定檔。

DeckLink 8K Pro (搭配 DeckLink SDK >= 11.0) 的有效設定檔模式:‘one_sub_device_full’、‘one_sub_device_half’、‘two_sub_device_full’、‘four_sub_device_half

DeckLink Quad 2 和 DeckLink Duo 2 的有效設定檔模式:‘half’、‘full

timecode_format (時間碼格式)

要包含在影格和視訊串流 metadata 中的時間碼類型。必須是 ‘none’、‘rp188vitc’、‘rp188vitc2’、‘rp188ltc’、‘rp188hfr’、‘rp188any’、‘vitc’、‘vitc2’ 或 ‘serial’。預設值為 ‘none’ (不包含)。

為了正確支援 50/60 fps 時間碼,對於 ‘rp188any’ 查詢時間碼類型的順序為 HFR、VITC1、VITC2 和 LTC,適用於 >30 fps 的內容。請注意,這與 DeckLink API 使用的順序略有不同,後者的順序為 HFR、VITC1、LTC、VITC2。

video_input (視訊輸入)

設定視訊輸入源。必須是 ‘unset’、‘sdi’、‘hdmi’、‘optical_sdi’、‘component’、‘composite’ 或 ‘s_video’。預設值為 ‘unset’。

audio_input (音訊輸入)

設定音訊輸入源。必須是 ‘unset’、‘embedded’、‘aes_ebu’、‘analog’、‘analog_xlr’、‘analog_rca’ 或 ‘microphone’。預設值為 ‘unset’。

video_pts (視訊 PTS)

設定視訊封包時間戳記來源。必須是 ‘video’、‘audio’、‘reference’、‘wallclock’ 或 ‘abs_wallclock’。預設值為 ‘video’。

audio_pts (音訊 PTS)

設定音訊封包時間戳記來源。必須是 ‘video’、‘audio’、‘reference’、‘wallclock’ 或 ‘abs_wallclock’。預設值為 ‘audio’。

draw_bars (繪製彩條)

若設定為 ‘true’,則在訊號遺失時繪製彩條。預設值為 ‘true’。此選項已棄用,請使用 signal_loss_action 選項。

signal_loss_action (訊號遺失動作)

設定在訊號遺失時要採取的動作。接受下列其中一個值

1, none (無)

訊號遺失時不執行任何動作。這通常會導致黑色影格。

2, bars (彩條)

訊號遺失時繪製彩條。僅支援 8 位元輸入訊號。

3, repeat (重複)

訊號遺失時重複最後一個視訊影格。

預設值為 ‘bars’。

queue_size (佇列大小)

設定最大輸入緩衝區大小 (以位元組為單位)。如果緩衝達到此值,則會丟棄傳入的影格。預設值為 ‘1073741824’。

audio_depth (音訊位元深度)

設定音訊樣本位元深度。必須是 ‘16’ 或 ‘32’。預設值為 ‘16’。

decklink_copyts

若設定為 true,則會轉發時間戳記,且不移除初始偏移量。預設值為 false

timestamp_align (時間戳記對齊)

擷取開始時間對齊 (以秒為單位)。若設定為非零值,則會丟棄輸入影格,直到系統時間戳記與設定的值對齊。容許最多一個影格持續時間的對齊差異。這對於在部署用於「N 向」冗餘的 N 個不同硬體裝置之間維持輸入同步非常有用。在使用此選項之前,應使用 NTP 或 PTP 等協定同步不同硬體裝置的系統時間。請注意,此方法並非萬無一失。在某些邊界情況下,由於作業系統中的執行緒排程抖動,輸入同步可能不會發生。同步可能會發生 1 個影格的錯誤,或者在更罕見的情況下發生 timestamp_align 秒的錯誤。預設值為 ‘0’。

wait_for_tc (bool) (等待時間碼 (布林值))

丟棄影格,直到收到帶有時間碼的影格。有時序列時間碼不會與第一個輸入影格一起收到。如果發生這種情況,儲存的串流時間碼將不準確。如果此選項設定為 true,則會丟棄輸入影格,直到收到帶有時間碼的影格。timecode_format 選項必須指定。預設值為 false

enable_klv(bool) (啟用 KLV (布林值))

若設定為 true,則從 VANC 擷取 KLV 資料並輸出 KLV 封包。KLV VANC 封包會根據 MID 和 PSC 欄位聯接,並彙總為一個 KLV 封包。預設值為 false

20.5.2 範例

  • 列出輸入裝置
    ffmpeg -sources decklink
    
  • 列出支援的格式
    ffmpeg -f decklink -list_formats 1 -i 'Intensity Pro'
    
  • 以 1080i50 擷取視訊片段
    ffmpeg -format_code Hi50 -f decklink -i 'Intensity Pro' -c:a copy -c:v copy output.avi
    
  • 以 1080i50 10 位元擷取視訊片段
    ffmpeg -raw_format yuv422p10 -format_code Hi50 -f decklink -i 'UltraStudio Mini Recorder' -c:a copy -c:v copy output.avi
    
  • 以 1080i50 和 16 個音訊通道擷取視訊片段
    ffmpeg -channels 16 -format_code Hi50 -f decklink -i 'UltraStudio Mini Recorder' -c:a copy -c:v copy output.avi
    

20.6 dshow

Windows DirectShow 輸入裝置。

當 FFmpeg 使用 mingw-w64 專案建置時,會啟用 DirectShow 支援。目前僅支援音訊和視訊裝置。

多個裝置可以作為單獨的輸入開啟,但它們也可以在同一個輸入上開啟,這應該可以提高它們之間的同步性。

輸入名稱應採用以下格式

TYPE=NAME[:TYPE=NAME]

其中 TYPE 可以是 audiovideo,而 NAME 是裝置的名稱或替代名稱。

20.6.1 選項

如果未指定任何選項,則會使用裝置的預設值。如果裝置不支援請求的選項,則開啟將會失敗。

video_size

設定擷取視訊中的視訊大小。

framerate

設定擷取視訊中的影格率。

sample_rate

設定擷取音訊的取樣率 (以 Hz 為單位)。

sample_size (樣本大小)

設定擷取音訊的樣本大小 (以位元為單位)。

channels

設定擷取音訊中的通道數量。

list_devices

若設定為 true,則列印裝置清單並結束。

list_options (列出選項)

若設定為 true,則列印所選裝置的選項清單並結束。

video_device_number (視訊裝置編號)

設定具有相同名稱的裝置的視訊裝置編號 (從 0 開始,預設值為 0)。

audio_device_number (音訊裝置編號)

設定具有相同名稱的裝置的音訊裝置編號 (從 0 開始,預設值為 0)。

pixel_format

選擇 DirectShow 要使用的像素格式。只有在未設定視訊編碼解碼器或設定為 rawvideo 時,才能設定此選項。

audio_buffer_size (音訊緩衝區大小)

設定音訊裝置緩衝區大小 (以毫秒為單位),這可能會直接影響延遲 (取決於裝置)。預設值為使用音訊裝置的預設緩衝區大小 (通常是 500 毫秒的倍數)。將此值設定得太低可能會降低效能。另請參閱 http://msdn.microsoft.com/en-us/library/windows/desktop/dd377582(v=vs.85).aspx

video_pin_name (視訊接腳名稱)

依名稱或替代名稱選擇要使用的視訊擷取接腳。

audio_pin_name (音訊接腳名稱)

依名稱或替代名稱選擇要使用的音訊擷取接腳。

crossbar_video_input_pin_number (交叉開關視訊輸入接腳編號)

選擇交叉開關裝置的視訊輸入接腳編號。這將路由到交叉開關裝置的視訊解碼器輸出接腳。請注意,變更此值可能會影響未來的調用 (設定新的預設值),直到系統重新啟動為止。

crossbar_audio_input_pin_number (交叉開關音訊輸入接腳編號)

選擇交叉開關裝置的音訊輸入接腳編號。這將路由到交叉開關裝置的音訊解碼器輸出接腳。請注意,變更此值可能會影響未來的調用 (設定新的預設值),直到系統重新啟動為止。

show_video_device_dialog (顯示視訊裝置對話方塊)

若設定為 true,則在擷取開始之前,彈出一個顯示對話方塊給終端使用者,允許他們手動變更視訊濾鏡屬性和組態。請注意,對於交叉開關裝置,有時可能需要在此對話方塊中調整值,以在 PAL (25 fps) 和 NTSC (29.97) 輸入影格率、大小、交錯等之間切換。變更這些值可以啟用不同的掃描率/影格率,並避免底部出現綠條、掃描線閃爍等問題。請注意,對於某些裝置,變更這些屬性也可能會影響未來的調用 (設定新的預設值),直到系統重新啟動為止。

show_audio_device_dialog (顯示音訊裝置對話方塊)

若設定為 true,則在擷取開始之前,彈出一個顯示對話方塊給終端使用者,允許他們手動變更音訊濾鏡屬性和組態。

show_video_crossbar_connection_dialog (顯示視訊交叉開關連線對話方塊)

若設定為 true,則在開啟視訊裝置時,在擷取開始之前,彈出一個顯示對話方塊給終端使用者,允許他們手動修改交叉開關接腳路由。

show_audio_crossbar_connection_dialog (顯示音訊交叉開關連線對話方塊)

若設定為 true,則在開啟音訊裝置時,在擷取開始之前,彈出一個顯示對話方塊給終端使用者,允許他們手動修改交叉開關接腳路由。

show_analog_tv_tuner_dialog (顯示類比電視調諧器對話方塊)

若設定為 true,則在擷取開始之前,彈出一個顯示對話方塊給終端使用者,允許他們手動修改電視頻道和頻率。

show_analog_tv_tuner_audio_dialog (顯示類比電視調諧器音訊對話方塊)

若設定為 true,則在擷取開始之前,彈出一個顯示對話方塊給終端使用者,允許他們手動修改電視音訊 (例如單聲道與立體聲、語言 A、B 或 C)。

audio_device_load (音訊裝置載入)

從檔案載入音訊擷取濾鏡裝置,而不是依名稱搜尋。如果濾鏡支援將其屬性序列化,則它也可能載入其他參數。若要使用此功能,必須指定音訊擷取來源,但它可以是任何來源,甚至是虛擬來源。

audio_device_save (音訊裝置儲存)

將目前使用的音訊擷取濾鏡裝置及其參數 (如果濾鏡支援) 儲存到檔案。如果存在同名檔案,則會覆寫該檔案。

video_device_load (視訊裝置載入)

從檔案載入視訊擷取濾鏡裝置,而不是依名稱搜尋。如果濾鏡支援將其屬性序列化,則它也可能載入其他參數。若要使用此功能,必須指定視訊擷取來源,但它可以是任何來源,甚至是虛擬來源。

video_device_save (視訊裝置儲存)

將目前使用的視訊擷取濾鏡裝置及其參數 (如果濾鏡支援) 儲存到檔案。如果存在同名檔案,則會覆寫該檔案。

use_video_device_timestamps (使用視訊裝置時間戳記)

若設定為 false,則視訊影格的時間戳記將從系統時鐘衍生,而不是從擷取裝置提供的時間戳記衍生。這允許繞過提供不可靠時間戳記的裝置。

20.6.2 範例

  • 列印 DirectShow 支援的裝置清單並結束
    $ ffmpeg -list_devices true -f dshow -i dummy
    
  • 開啟視訊裝置 Camera (攝影機)
    $ ffmpeg -f dshow -i video="Camera"
    
  • 開啟名稱為 Camera (攝影機) 的第二個視訊裝置
    $ ffmpeg -f dshow -video_device_number 1 -i video="Camera"
    
  • 開啟視訊裝置 Camera (攝影機) 和音訊裝置 Microphone (麥克風)
    $ ffmpeg -f dshow -i video="Camera":audio="Microphone"
    
  • 列印所選裝置中支援的選項清單並結束
    $ ffmpeg -list_options true -f dshow -i video="Camera"
    
  • 依名稱或替代名稱指定要擷取的接腳名稱,指定替代裝置名稱
    $ ffmpeg -f dshow -audio_pin_name "Audio Out" -video_pin_name 2 -i video=video="@device_pnp_\\?\pci#ven_1a0a&dev_6200&subsys_62021461&rev_01#4&e2c7dd6&0&00e1#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\{ca465100-deb0-4d59-818f-8c477184adf6}":audio="Microphone"
    
  • 組態交叉開關裝置,指定交叉開關接腳,允許使用者在啟動時調整視訊擷取屬性
    $ ffmpeg -f dshow -show_video_device_dialog true -crossbar_video_input_pin_number 0
         -crossbar_audio_input_pin_number 3 -i video="AVerMedia BDA Analog Capture":audio="AVerMedia BDA Analog Capture"
    

20.7 fbdev

Linux framebuffer 輸入裝置。

Linux framebuffer 是一個圖形硬體獨立的抽象層,用於在電腦螢幕上顯示圖形,通常在主控台上。它透過檔案裝置節點存取,通常是 /dev/fb0

如需更多詳細資訊,請閱讀 Linux 原始碼樹中包含的檔案 Documentation/fb/framebuffer.txt。

另請參閱 http://linux-fbdev.sourceforge.net/ 和 fbset(1)。

若要使用 ffmpeg 從 framebuffer 裝置 /dev/fb0 錄製

ffmpeg -f fbdev -framerate 10 -i /dev/fb0 out.avi

您可以使用以下命令拍攝單張螢幕截圖影像

ffmpeg -f fbdev -framerate 1 -i /dev/fb0 -frames:v 1 screenshot.jpeg

20.7.1 選項

framerate

設定影格率。預設值為 25。

20.8 gdigrab

Win32 GDI 基礎的螢幕擷取裝置。

此裝置允許您擷取 Windows 顯示器上的區域。

輸入檔案名稱的選項包括以下元素

desktop

title=window_title

hwnd=window_hwnd

第一個選項將擷取整個桌面或桌面的固定區域。第二個和第三個選項將改為擷取單個視窗的內容,無論其在螢幕上的位置如何。

例如,若要使用 ffmpeg 抓取整個桌面

ffmpeg -f gdigrab -framerate 6 -i desktop out.mpg

抓取位置 10,20 的 640x480 區域

ffmpeg -f gdigrab -framerate 6 -offset_x 10 -offset_y 20 -video_size vga -i desktop out.mpg

抓取名為 "Calculator" (計算機) 的視窗內容

ffmpeg -f gdigrab -framerate 6 -i title=Calculator out.mpg

20.8.1 選項

draw_mouse (繪製滑鼠)

指定是否繪製滑鼠指標。使用值 0 不繪製指標。預設值為 1

framerate

設定抓取影格率。預設值為 ntsc,對應於 30000/1001 的影格率。

show_region (顯示區域)

在螢幕上顯示抓取區域。

如果 show_region 指定為 1,則抓取區域將在螢幕上指示。使用此選項,如果僅抓取螢幕的一部分,則很容易知道正在抓取什麼。

請注意,show_region 與抓取單個視窗的內容不相容。

例如

ffmpeg -f gdigrab -show_region 1 -framerate 6 -video_size cif -offset_x 10 -offset_y 20 -i desktop out.mpg
video_size

設定視訊影格大小。如果選擇 desktop,則預設為擷取全螢幕;如果選擇 title=window_title,則預設為擷取完整視窗大小。

offset_x (X 軸偏移)

當使用 video_size 擷取區域時,設定與螢幕或桌面左邊緣的距離。

請注意,偏移量計算是從 Windows 上主螢幕的左上角開始的。如果您有一個螢幕位於主螢幕的左側,則需要使用負 offset_x 值將區域移動到該螢幕。

offset_y (Y 軸偏移)

當使用 video_size 擷取區域時,設定與螢幕或桌面頂部邊緣的距離。

請注意,偏移量計算是從 Windows 上主螢幕的左上角開始的。如果您有一個螢幕位於主螢幕的上方,則需要使用負 offset_y 值將區域移動到該螢幕。

20.9 iec61883

使用 libiec61883 的 FireWire DV/HDV 輸入裝置。

若要啟用此輸入裝置,您需要在系統上安裝 libiec61883、libraw1394 和 libavc1394。使用組態選項 --enable-libiec61883 以編譯並啟用該裝置。

iec61883 擷取裝置支援從透過 IEEE1394 (FireWire) 連接的視訊裝置擷取,使用 libiec61883 和新的 Linux FireWire 堆疊 (juju)。這是 Linux Kernel 2.6.37 及更高版本中的預設 DV/HDV 輸入方法,因為舊的 FireWire 堆疊已被移除。

指定要用作輸入檔案的 FireWire 連接埠,或指定 "auto" 以選擇第一個連接的連接埠。

20.9.1 選項

dvtype (DV 類型)

覆寫 DV/HDV 的自動偵測。僅當自動偵測不起作用,或應禁止使用其他裝置類型時,才應使用此選項。將 DV 裝置視為 HDV (或反之亦然) 將不起作用,並導致未定義的行為。支援的值為 autodvhdv

dvbuffer (DV 緩衝區)

設定傳入資料的緩衝區最大大小 (以影格為單位)。對於 DV,這是一個精確值。對於 HDV,它不是影格精確的,因為 HDV 沒有固定的影格大小。

dvguid (DV GUID)

透過指定其 GUID 來選擇擷取裝置。擷取將僅從指定的裝置執行,如果找不到具有給定 GUID 的裝置,則會失敗。如果同時連接了多個裝置,這對於選擇輸入非常有用。查看 /sys/bus/firewire/devices 以找出 GUID。

20.9.2 範例

  • 抓取並顯示 FireWire DV/HDV 裝置的輸入。
    ffplay -f iec61883 -i auto
    
  • 抓取並錄製 FireWire DV/HDV 裝置的輸入,如果來源是 HDV,則使用 100000 個封包的封包緩衝區。
    ffmpeg -f iec61883 -i auto -dvbuffer 100000 out.mpg
    

20.10 jack

JACK 輸入裝置。

若要在組態期間啟用此輸入裝置,您需要在系統上安裝 libjack。

JACK 輸入裝置會建立一個或多個 JACK 可寫入用戶端,每個音訊通道一個,名稱為 client_name:input_N,其中 client_name 是應用程式提供的名稱,而 N 是識別通道的數字。每個可寫入用戶端都會將取得的資料傳送到 FFmpeg 輸入裝置。

一旦您建立了一個或多個 JACK 可讀取用戶端,您需要將它們連接到一個或多個 JACK 可寫入用戶端。

若要連接或斷開 JACK 用戶端,您可以使用 jack_connectjack_disconnect 程式,或透過圖形介面執行,例如使用 qjackctl

若要列出 JACK 用戶端及其屬性,您可以調用命令 jack_lsp

以下範例顯示如何使用 ffmpeg 擷取 JACK 可讀取用戶端。

# Create a JACK writable client with name "ffmpeg".
$ ffmpeg -f jack -i ffmpeg -y out.wav

# Start the sample jack_metro readable client.
$ jack_metro -b 120 -d 0.2 -f 4000

# List the current JACK clients.
$ jack_lsp -c
system:capture_1
system:capture_2
system:playback_1
system:playback_2
ffmpeg:input_1
metro:120_bpm

# Connect metro to the ffmpeg writable client.
$ jack_connect metro:120_bpm ffmpeg:input_1

如需更多資訊,請閱讀:http://jackaudio.org/

20.10.1 選項

channels

設定聲道數。預設值為 2。

20.11 kmsgrab

KMS 視訊輸入裝置。

擷取與指定 CRTC 或平面關聯的 KMS 掃描輸出 framebuffer 作為 DRM 物件,該物件可以傳遞給其他硬體功能。

需要 DRM master 或 CAP_SYS_ADMIN 權限才能執行。

如果你不了解以上所說的意思,那你可能不需要這個功能。請改用 x11grab

20.11.1 選項

device

要擷取的 DRM 裝置。預設為 /dev/dri/card0

format

畫面緩衝區的像素格式。如果你執行的是 Linux 5.7 或更新版本,則可以自動偵測,但較舊版本則需要提供。預設為 bgr0,這是 Linux 控制台和 Xorg X server 最常用的格式。

format_modifier

要在輸出影格上標示的格式修飾符。為了正確匯入到某些 API 中,這是必要的。如果你執行的是 Linux 5.7 或更新版本,則可以自動偵測,但在較舊版本中,如果需要則必須明確提供。有關可能的值,請參閱 libdrm 文件。

crtc_id

KMS CRTC ID,用於定義擷取來源。將使用指定 CRTC 上的第一個活動平面。

plane_id

KMS 平面 ID,用於定義擷取來源。如果未指定 crtc_idplane_id,則預設為找到的第一個活動平面。

framerate

要擷取的影格率。這與任何頁面翻轉或畫面緩衝區變更不同步 - 它僅定義取樣畫面緩衝區的間隔。以快於畫面緩衝區更新率的速度取樣將產生內容相同的獨立影格。預設為 30

20.11.2 範例

  • 從第一個活動平面擷取,將結果下載到正常影格並編碼。這僅在畫面緩衝區為線性且可映射時才有效 - 否則,結果可能會混亂或下載失敗。
    ffmpeg -f kmsgrab -i - -vf 'hwdownload,format=bgr0' output.mp4
    
  • 以 60fps 從 CRTC ID 42 擷取,將結果映射到 VAAPI,轉換為 NV12 並編碼為 H.264。
    ffmpeg -crtc_id 42 -framerate 60 -f kmsgrab -i - -vf 'hwmap=derive_device=vaapi,scale_vaapi=w=1920:h=1080:format=nv12' -c:v h264_vaapi output.mp4
    
  • 若要僅擷取平面的部分區域,可以裁剪輸出 - 這可用於擷取單個視窗,只要該視窗具有已知的絕對位置和大小。例如,要擷取和編碼 1920x1080 平面的中間四分之一
    ffmpeg -f kmsgrab -i - -vf 'hwmap=derive_device=vaapi,crop=960:540:480:270,scale_vaapi=960:540:nv12' -c:v h264_vaapi output.mp4
    

20.12 lavfi

Libavfilter 輸入虛擬裝置。

此輸入裝置從 libavfilter 濾鏡圖的開放輸出墊讀取資料。

對於每個濾鏡圖開放輸出,輸入裝置將建立一個對應的串流,該串流映射到產生的輸出。濾鏡圖透過選項 graph 指定。

20.12.1 選項

graph

指定要用作輸入的濾鏡圖。每個視訊開放輸出都必須用 "outN" 形式的唯一字串標記,其中 N 是從 0 開始的數字,對應於裝置產生的映射輸入串流。第一個未標記的輸出會自動分配給 "out0" 標籤,但所有其他輸出都需要明確指定。

後綴 "+subcc" 可以附加到輸出標籤,以建立一個額外的串流,其中包含附加到該輸出的隱藏字幕封包(實驗性功能;目前僅適用於 EIA-608 / CEA-708)。 subcc 串流在所有正常串流之後建立,順序與對應的串流相同。例如,如果存在 "out19+subcc"、"out7+subcc" 以及最多 "out42",則串流 #43 是串流 #7 的 subcc,串流 #44 是串流 #19 的 subcc。

如果未指定,則預設為輸入裝置指定的檔案名稱。

graph_file

設定要讀取並傳送到其他濾鏡的濾鏡圖的檔案名稱。濾鏡圖的語法與選項 graph 指定的語法相同。

dumpgraph

將圖表轉儲到 stderr。

20.12.2 範例

  • 建立彩色視訊串流並使用 ffplay 播放
    ffplay -f lavfi -graph "color=c=pink [out0]" dummy
    
  • 與上一個範例相同,但使用檔案名稱來指定圖表描述,並省略 "out0" 標籤
    ffplay -f lavfi color=c=pink
    
  • 建立三個不同的視訊測試濾鏡來源並播放它們
    ffplay -f lavfi -graph "testsrc [out0]; testsrc,hflip [out1]; testsrc,negate [out2]" test3
    
  • 使用 amovie 來源從檔案讀取音訊串流,並使用 ffplay 播放
    ffplay -f lavfi "amovie=test.wav"
    
  • 讀取音訊串流和視訊串流,並使用 ffplay 播放
    ffplay -f lavfi "movie=test.avi[out0];amovie=test.wav[out1]"
    
  • 將解碼後的影格轉儲到圖像,並將隱藏字幕轉儲到 RCWT 備份
    ffmpeg -f lavfi -i "movie=test.ts[out0+subcc]" -map v frame%08d.png -map s -c copy -f rcwt subcc.bin
    

20.13 libcdio

基於 libcdio 的 Audio-CD 輸入裝置。

若要在組態期間啟用此輸入裝置,您需要在系統上安裝 libcdio。它需要組態選項 --enable-libcdio

此裝置允許播放和抓取 Audio-CD 的內容。

例如,若要使用 ffmpeg 複製 /dev/sr0 中的整個 Audio-CD,您可以執行以下命令

ffmpeg -f libcdio -i /dev/sr0 cd.wav

20.13.1 選項

speed

設定光碟機讀取速度。預設值為 0。

速度以 CD-ROM 速度單位指定。速度透過 libcdio cdio_cddap_speed_set 函數設定。在許多 CD-ROM 光碟機上,指定過大的值將導致使用最快速度。

paranoia_mode

設定偏執狂復原模式旗標。它接受以下值之一

disable
verify
overlap
neverskip
full

預設值為 ‘disable’。

有關可用復原模式的更多資訊,請查閱 paranoia 專案文件。

20.14 libdc1394

基於 libdc1394 和 libraw1394 的 IIDC1394 輸入裝置。

需要組態選項 --enable-libdc1394

20.14.1 選項

framerate

設定影格率。預設為 ntsc,對應於 30000/1001 的影格率。

pixel_format

選擇像素格式。預設為 uyvy422

video_size

設定視訊大小,以字串形式給出,例如 640x480hd720。預設為 qvga

20.15 openal

OpenAL 輸入裝置在所有具有可運作的 OpenAL 1.1 實作的系統上提供音訊擷取。

若要在組態期間啟用此輸入裝置,您需要在系統上安裝 OpenAL 標頭和程式庫,並且需要使用 --enable-openal 組態 FFmpeg。

OpenAL 標頭和程式庫應作為 OpenAL 實作的一部分提供,或作為額外下載 (SDK) 提供。根據您的安裝,您可能需要透過 --extra-cflags--extra-ldflags 指定額外旗標,以允許建置系統找到 OpenAL 標頭和程式庫。

以下是不完整的 OpenAL 實作列表

Creative

官方 Windows 實作,提供支援裝置的硬體加速和軟體後備。請參閱 http://openal.org/

OpenAL Soft

可移植、開放原始碼 (LGPL) 軟體實作。包含 Windows、Linux、Solaris 和 BSD 作業系統上最常見的聲音 API 的後端。請參閱 http://kcat.strangesoft.net/openal.html

Apple

OpenAL 是 Core Audio 的一部分,Core Audio 是官方 Mac OS X 音訊介面。請參閱 http://developer.apple.com/technologies/mac/audio-and-video.html

此裝置允許從透過 OpenAL 處理的音訊輸入裝置擷取。

您需要在提供的檔案名稱中指定要擷取的裝置名稱。如果提供空字串,裝置將自動選擇預設裝置。您可以使用選項 list_devices 取得支援裝置的列表。

20.15.1 選項

channels

設定擷取音訊中的聲道數。目前僅支援值 1(單聲道)和 2(立體聲)。預設為 2

sample_size (樣本大小)

設定擷取音訊的樣本大小(以位元為單位)。目前僅支援值 816。預設為 16

sample_rate

設定擷取音訊的取樣率(以 Hz 為單位)。預設為 44.1k

list_devices

如果設定為 true,則列印裝置列表並退出。預設為 false

20.15.2 範例

列印 OpenAL 支援的裝置列表並退出

$ ffmpeg -list_devices true -f openal -i dummy out.ogg

從 OpenAL 裝置 DR-BT101 via PulseAudio 擷取

$ ffmpeg -f openal -i 'DR-BT101 via PulseAudio' out.ogg

從預設裝置擷取(請注意檔案名稱為空字串 "")

$ ffmpeg -f openal -i '' out.ogg

在同一個 ffmpeg 命令中,同時從兩個裝置擷取,寫入到兩個不同的檔案

$ ffmpeg -f openal -i 'DR-BT101 via PulseAudio' out1.ogg -f openal -i 'ALSA Default' out2.ogg

注意:並非所有 OpenAL 實作都支援多個同時擷取 - 如果以上方法無效,請嘗試最新的 OpenAL Soft。

20.16 oss

Open Sound System 輸入裝置。

提供給輸入裝置的檔案名稱是代表 OSS 輸入裝置的裝置節點,通常設定為 /dev/dsp

例如,若要使用 ffmpeg/dev/dsp 抓取,請使用以下命令

ffmpeg -f oss -i /dev/dsp /tmp/oss.wav

有關 OSS 的更多資訊,請參閱:http://manuals.opensound.com/usersguide/dsp.html

20.16.1 選項

sample_rate

設定取樣率,單位為 Hz。預設值為 48000。

channels

設定聲道數。預設值為 2。

20.17 pulse

PulseAudio 輸入裝置。

若要啟用此輸出裝置,您需要使用 --enable-libpulse 組態 FFmpeg。

提供給輸入裝置的檔案名稱是來源裝置或字串 "default"

若要列出 PulseAudio 來源裝置及其屬性,您可以調用命令 pactl list sources

有關 PulseAudio 的更多資訊,請參閱 http://www.pulseaudio.org

20.17.1 選項

server

連線到特定的 PulseAudio 伺服器,由 IP 位址指定。未提供時,使用預設伺服器。

name

指定 PulseAudio 在顯示活動用戶端時將使用的應用程式名稱,預設情況下為 LIBAVFORMAT_IDENT 字串。

stream_name

指定 PulseAudio 在顯示活動串流時將使用的串流名稱,預設情況下為 "record"。

sample_rate

指定取樣率,以 Hz 為單位,預設情況下使用 48kHz。

channels

指定使用的聲道數,預設情況下設定為 2(立體聲)。

frame_size

此選項不起作用,且已棄用。

fragment_size

指定 PulseAudio 中最小緩衝片段的大小(以位元組為單位),它將影響音訊延遲。預設情況下,設定為 50 毫秒的資料量。

wallclock

使用目前時間設定初始 PTS。預設值為 1。

20.17.2 範例

從預設裝置錄製串流

ffmpeg -f pulse -i default /tmp/pulse.wav

20.18 sndio

sndio 輸入裝置。

若要在組態期間啟用此輸入裝置,您需要在系統上安裝 libsndio。

提供給輸入裝置的檔案名稱是代表 sndio 輸入裝置的裝置節點,通常設定為 /dev/audio0

例如,若要使用 ffmpeg/dev/audio0 抓取,請使用以下命令

ffmpeg -f sndio -i /dev/audio0 /tmp/oss.wav

20.18.1 選項

sample_rate

設定取樣率,單位為 Hz。預設值為 48000。

channels

設定聲道數。預設值為 2。

20.19 video4linux2, v4l2

Video4Linux2 輸入視訊裝置。

"v4l2" 可以用作 "video4linux2" 的別名。

如果 FFmpeg 是使用 v4l-utils 支援建置的(透過使用 --enable-libv4l2 組態選項),則可以將其與 -use_libv4l2 輸入裝置選項一起使用。

要抓取的裝置名稱是檔案裝置節點,通常 Linux 系統在裝置(例如 USB 網路攝影機)插入系統時傾向於自動建立此類節點,並且具有 /dev/videoN 類型的名稱,其中 N 是與裝置關聯的數字。

Video4Linux2 裝置通常支援有限的 widthxheight 大小和影格率。您可以使用 -list_formats all 來檢查 Video4Linux2 裝置支援哪些格式。某些裝置(例如電視卡)支援一個或多個標準。可以使用 -list_standards all 列出所有支援的標準。

時間戳記的時間基底為 1 微秒。根據核心版本和組態,時間戳記可能來自即時時鐘(原點位於 Unix Epoch)或單調時鐘(原點通常位於啟動時間,不受 NTP 或手動時鐘變更的影響)。 -timestamps abs-ts abs 選項可用於強制轉換為即時時鐘。

video4linux2 裝置與 ffmpegffplay 的一些使用範例

  • 列出 video4linux2 裝置支援的格式
    ffplay -f video4linux2 -list_formats all /dev/video0
    
  • 抓取並顯示 video4linux2 裝置的輸入
    ffplay -f video4linux2 -framerate 30 -video_size hd720 /dev/video0
    
  • 抓取並錄製 video4linux2 裝置的輸入,將影格率和大小保留為先前設定的值
    ffmpeg -f video4linux2 -input_format mjpeg -i /dev/video0 out.mpeg
    

有關 Video4Linux 的更多資訊,請查看 http://linuxtv.org/

20.19.1 選項

standard

設定標準。必須是支援標準的名稱。若要取得支援標準的列表,請使用 list_standards 選項。

channel

設定輸入頻道號碼。預設為 -1,表示使用先前選取的頻道。

video_size

設定視訊影格大小。引數必須是 WIDTHxHEIGHT 形式的字串或有效的尺寸縮寫。

pixel_format

選擇像素格式(僅對原始視訊輸入有效)。

input_format

設定首選像素格式(對於原始視訊)或編解碼器名稱。當有多種格式可用時,此選項允許選擇輸入格式。

framerate

設定首選視訊影格率。

list_formats

列出可用格式(支援的像素格式、編解碼器和影格大小)並退出。

可用值為

all

顯示所有可用的(壓縮和非壓縮)格式。

raw

僅顯示原始視訊(非壓縮)格式。

compressed

僅顯示壓縮格式。

list_standards

列出支援的標準並退出。

可用值為

all

顯示所有支援的標準。

timestamps, ts

設定抓取影格的時間戳記類型。

可用值為

default

使用來自核心的時間戳記。

abs

使用絕對時間戳記(時鐘時間)。

mono2abs

強制從單調時間戳記轉換為絕對時間戳記。

預設值為 default

use_libv4l2

使用 libv4l2 (v4l-utils) 轉換函數。預設值為 0。

20.20 vfwcap

VfW (Video for Windows) 擷取輸入裝置。

作為輸入傳遞的檔案名稱是擷取驅動程式編號,範圍從 0 到 9。您可以使用 "list" 作為檔案名稱來列印驅動程式列表。任何其他檔案名稱都將被解釋為裝置編號 0。

20.20.1 選項

video_size

設定視訊影格大小。

framerate

設定抓取影格率。預設值為 ntsc,對應於 30000/1001 的影格率。

20.21 x11grab

X11 視訊輸入裝置。

若要在組態期間啟用此輸入裝置,您需要在系統上安裝 libxcb。它將在組態期間自動偵測到。

此裝置允許擷取 X11 顯示器的區域。

作為輸入傳遞的檔案名稱具有以下語法

[hostname]:display_number.screen_number[+x_offset,y_offset]

hostname:display_number.screen_number 指定要從中抓取的螢幕的 X11 顯示名稱。hostname 可以省略,預設為 "localhost"。環境變數 DISPLAY 包含預設顯示名稱。

x_offsety_offset 指定抓取區域相對於 X11 螢幕左上邊界的偏移量。它們預設為 0。

查看 X11 文件(例如 man X)以取得更詳細的資訊。

使用 xdpyinfo 程式來取得有關 X11 顯示器屬性的基本資訊(例如,grep "name" 或 "dimensions")。

例如,若要使用 ffmpeg:0.0 抓取

ffmpeg -f x11grab -framerate 25 -video_size cif -i :0.0 out.mpg

在位置 10,20 抓取

ffmpeg -f x11grab -framerate 25 -video_size cif -i :0.0+10,20 out.mpg

20.21.1 選項

select_region

指定是否使用指標以圖形方式選擇抓取區域。值為 1 時,會提示使用者透過按一下並拖曳以圖形方式選擇抓取區域。單擊但不拖曳將選擇整個螢幕。寬度或高度為零的區域也將選擇整個螢幕。此選項會覆寫 video_sizegrab_xgrab_y 選項。預設值為 0

draw_mouse (繪製滑鼠)

指定是否繪製滑鼠指標。值為 0 時,指定不繪製指標。預設值為 1

follow_mouse

使抓取區域跟隨滑鼠。引數可以是 centered 或像素數 PIXELS

當指定為 "centered" 時,抓取區域會跟隨滑鼠指標,並將指標保持在區域中心;否則,僅當滑鼠指標到達 PIXELS(大於零)像素範圍內到區域邊緣時,區域才會跟隨。

例如

ffmpeg -f x11grab -follow_mouse centered -framerate 25 -video_size cif -i :0.0 out.mpg

僅當滑鼠指標到達邊緣 100 像素範圍內時才跟隨

ffmpeg -f x11grab -follow_mouse 100 -framerate 25 -video_size cif -i :0.0 out.mpg
framerate

設定抓取影格率。預設值為 ntsc,對應於 30000/1001 的影格率。

show_region (顯示區域)

在螢幕上顯示抓取區域。

如果 show_region 指定為 1,則抓取區域將在螢幕上指示。使用此選項,如果僅抓取螢幕的一部分,則很容易知道正在抓取什麼。

region_border

如果使用 -show_region 1,則設定區域邊框厚度。範圍為 1 到 128,預設值為 3(僅限於基於 XCB 的 x11grab)。

例如

ffmpeg -f x11grab -show_region 1 -framerate 25 -video_size cif -i :0.0+10,20 out.mpg

使用 follow_mouse

ffmpeg -f x11grab -follow_mouse centered -show_region 1 -framerate 25 -video_size cif -i :0.0 out.mpg
window_id

抓取此視窗,而不是整個螢幕。預設值為 0,對應於整個螢幕(根視窗)。

可以使用 xwininfo 程式找到視窗的 ID,可以加上選項 -tree 和 -root。

如果視窗之後被放大,新的區域不會被記錄下來。當視窗關閉、取消映射(例如,圖示化)或縮小到小於影片尺寸(預設為初始視窗尺寸)時,影片錄製會結束。

此選項會停用 follow_mouseselect_region 選項。

video_size

設定影片幀尺寸。預設值為完整桌面或視窗。

grab_x
grab_y

設定抓取區域座標。它們表示為從 X11 視窗左上角的偏移量,並對應於裝置名稱中的 x_offsety_offset 參數。這兩個選項的預設值均為 0。

21 重採樣器選項

音訊重新取樣器支援以下具名選項。

選項可以透過在 FFmpeg 工具中指定 -option value、為 aresample 濾鏡指定 option=value、在 SwrContext 選項中明確設定值,或使用 libavutil/opt.h API 以程式方式使用來設定。

uchl, used_chlayout

設定使用的輸入聲道佈局。預設為未設定。此選項僅用於特殊的重新映射。

isr, in_sample_rate

設定輸入取樣率。預設值為 0。

osr, out_sample_rate

設定輸出取樣率。預設值為 0。

isf, in_sample_fmt

指定輸入取樣格式。預設設定為 none

osf, out_sample_fmt

指定輸出取樣格式。預設設定為 none

tsf, internal_sample_fmt

設定內部取樣格式。預設值為 none。當未明確設定時,將會自動選擇此格式。

ichl, in_chlayout
ochl, out_chlayout

設定輸入/輸出聲道佈局。

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

clev, center_mix_level

設定中央聲道混合位準。它是一個以分貝表示的值,並且必須在 [-32,32] 區間內。

slev, surround_mix_level

設定環繞聲道混合位準。它是一個以分貝表示的值,並且必須在 [-32,32] 區間內。

lfe_mix_level

設定 LFE 混合到非 LFE 位準。當有 LFE 輸入但沒有 LFE 輸出時使用。它是一個以分貝表示的值,並且必須在 [-32,32] 區間內。

rmvol, rematrix_volume

設定重新矩陣音量。預設值為 1.0。

rematrix_maxval

設定重新矩陣化的最大輸出值。這可以用於防止削波與防止音量降低。值為 1.0 可防止削波。

flags, swr_flags

設定轉換器使用的旗標。預設值為 0。

它支援以下個別旗標

res

強制重新取樣,即使輸入和輸出取樣率匹配,此旗標也會強制使用重新取樣。

dither_scale

設定抖動比例。預設值為 1。

dither_method

設定抖動方法。預設值為 0。

支援的值

rectangular

選擇矩形抖動

triangular

選擇三角形抖動

triangular_hp

選擇帶有高通濾波器的三角形抖動

lipshitz

選擇 Lipshitz 雜訊塑形抖動。

shibata

選擇 Shibata 雜訊塑形抖動。

low_shibata

選擇低 Shibata 雜訊塑形抖動。

high_shibata

選擇高 Shibata 雜訊塑形抖動。

f_weighted

選擇 f 加權雜訊塑形抖動

modified_e_weighted

選擇修改的 e 加權雜訊塑形抖動

improved_e_weighted

選擇改進的 e 加權雜訊塑形抖動

resampler

設定重新取樣引擎。預設值為 swr。

支援的值

swr

選擇原生 SW 重新取樣器;濾鏡選項 precision 和 cheby 在此情況下不適用。

soxr

選擇 SoX 重新取樣器(如果可用);補償,以及濾鏡選項 filter_size、phase_shift、exact_rational、filter_type & kaiser_beta 在此情況下不適用。

filter_size

僅適用於 swr,設定重新取樣濾鏡大小,預設值為 32。

phase_shift

僅適用於 swr,設定重新取樣相位偏移,預設值為 10,並且必須在 [0,30] 區間內。

linear_interp

啟用時使用線性插值(預設值)。如果要在 exact_rational 失敗時保留速度而不是品質,請停用它。

exact_rational

僅適用於 swr,啟用時,嘗試使用基於輸入和輸出取樣率的精確 phase_count。但是,如果它大於 1 << phase_shift,則 phase_count 將會是 1 << phase_shift 作為後備方案。預設為啟用。

cutoff

設定截止頻率(swr:-6dB 點;soxr:0dB 點)比率;必須是介於 0 和 1 之間的浮點值。swr 的預設值為 0.97,soxr 的預設值為 0.91(在 44100 的取樣率下,可保留整個音訊頻寬至 20kHz)。

precision

僅適用於 soxr,重新取樣訊號將被計算的精確度位元數。預設值 20(透過適當的抖動,適用於 16 位元的目的位元深度)給予 SoX 的「高品質」;值 28 給予 SoX 的「非常高品質」。

cheby

僅適用於 soxr,選擇通帶滾降 none (Chebyshev) & 更高精度的「非理性」比率近似值。預設值為 0。

async

僅適用於 swr,使用伸展、擠壓、填充和修剪對時間戳記進行簡單的 1 參數音訊同步。將此設定為 1 將啟用填充和修剪,較大的值表示每秒資料可能被伸展或擠壓的最大樣本量。預設值為 0,因此不套用補償來使樣本與音訊時間戳記匹配。

first_pts

僅適用於 swr,假設第一個 pts 應為此值。時間單位為 1 / 取樣率。這允許在串流開始時進行填充/修剪。預設情況下,對於第一個幀的預期 pts 沒有任何假設,因此不執行填充或修剪。例如,如果音訊串流在視訊串流之後開始,或者由於編碼器延遲而修剪任何具有負 pts 的樣本,則可以將其設定為 0 以在開頭填充靜音。

min_comp

僅適用於 swr,設定時間戳記和音訊資料之間的最小差異(以秒為單位),以觸發資料的伸展/擠壓/填充或修剪,使其與時間戳記匹配。預設情況下,伸展/擠壓/填充和修剪已停用(min_comp = FLT_MAX)。

min_hard_comp

僅適用於 swr,設定時間戳記和音訊資料之間的最小差異(以秒為單位),以觸發添加/丟棄樣本,使其與時間戳記匹配。此選項實際上是一個閾值,用於在硬性(修剪/填充)和軟性(擠壓/伸展)補償之間進行選擇。請注意,預設情況下,所有補償都透過 min_comp 停用。預設值為 0.1。

comp_duration

僅適用於 swr,設定資料被伸展/擠壓以使其與時間戳記匹配的持續時間(以秒為單位)。必須是非負雙精度浮點值,預設值為 1.0。

max_soft_comp

僅適用於 swr,設定資料被伸展/擠壓以使其與時間戳記匹配的最大因子。必須是非負雙精度浮點值,預設值為 0。

matrix_encoding

選擇矩陣編碼立體聲。

它接受以下值:

none

select none

dolby

選擇 Dolby

dplii

選擇 Dolby Pro Logic II

預設值為 none

filter_type

僅適用於 swr,選擇重新取樣濾鏡類型。這僅影響重新取樣操作。

它接受以下值:

cubic

選擇立方

blackman_nuttall

選擇 Blackman Nuttall 窗函數 sinc

kaiser

選擇 Kaiser 窗函數 sinc

kaiser_beta

僅適用於 swr,設定 Kaiser 窗函數 beta 值。必須是 [2,16] 區間內的雙精度浮點值,預設值為 9。

output_sample_bits

僅適用於 swr,設定用於抖動的輸出樣本位元數。必須是 [0,64] 區間內的整數,預設值為 0,表示不使用。

22 縮放器選項

視訊縮放器支援以下具名選項。

選項可以透過在 FFmpeg 工具中指定 -option value 來設定,以下註明一些僅限 API 的例外情況。對於程式化使用,它們可以在 SwsContext 選項中明確設定,或透過 libavutil/opt.h API 設定。

sws_flags

設定縮放器旗標。這也用於設定縮放演算法。應該只選擇單一演算法。預設值為「bicubic」。

它接受以下值:

fast_bilinear

選擇快速雙線性縮放演算法。

bilinear

選擇雙線性縮放演算法。

bicubic

選擇雙立方縮放演算法。

experimental

選擇實驗性縮放演算法。

neighbor

選擇最近鄰重新縮放演算法。

area

選擇平均區域重新縮放演算法。

bicublin

為亮度分量選擇雙立方縮放演算法,為色度分量選擇雙線性縮放演算法。

gauss

選擇高斯重新縮放演算法。

sinc

選擇 sinc 重新縮放演算法。

lanczos

選擇 Lanczos 重新縮放演算法。預設寬度 (alpha) 為 3,可以透過設定 param0 來更改。

spline

選擇自然雙立方 spline 重新縮放演算法。

print_info

啟用列印/除錯記錄。

accurate_rnd

啟用精確四捨五入。

full_chroma_int

啟用完整色度插值。

full_chroma_inp

選擇完整色度輸入。

bitexact

啟用位元精確輸出。

srcw (僅限 API)

設定來源寬度。

srch (僅限 API)

設定來源高度。

dstw (僅限 API)

設定目標寬度。

dsth (僅限 API)

設定目標高度。

src_format (僅限 API)

設定來源像素格式(必須表示為整數)。

dst_format (僅限 API)

設定目標像素格式(必須表示為整數)。

src_range (布林值)

如果值設定為 1,表示來源為完整範圍。預設值為 0,表示來源為有限範圍。

dst_range (布林值)

如果值設定為 1,為目標啟用完整範圍。預設值為 0,表示啟用有限範圍。

param0, param1

設定縮放演算法參數。指定的值特定於某些縮放演算法,而其他演算法會忽略它們。指定的值是浮點數值。

sws_dither

設定抖動演算法。接受以下值之一。預設值為「auto」。

auto

自動選擇

none

無抖動

bayer

拜耳抖動

ed

誤差擴散抖動

a_dither

算術抖動,基於加法

x_dither

算術抖動,基於 xor(比 a_dither 更隨機/更不明顯的圖案)。

alphablend

設定當輸入具有 alpha 但輸出沒有時要使用的 alpha 混合。預設值為「none」。

uniform_color

混合到均勻背景顏色

checkerboard

混合到棋盤格

none

不混合

23 濾鏡介紹

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 濾鏡鏈產生的輸出。

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

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

24 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 濾鏡,以便模擬特定的輸入檔案。

25 濾鏡圖描述

濾鏡圖 (filtergraph) 是一個由已連接的濾鏡組成的有向圖。它可以包含迴圈,並且一對濾鏡之間可以有多個連結。每個連結的一側都有一個輸入埠 (input pad),將其連接到一個濾鏡,從該濾鏡獲取輸入;另一側有一個輸出埠 (output pad),將其連接到一個接受其輸出的濾鏡。

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

沒有輸入埠的濾鏡稱為「來源 (source)」,沒有輸出埠的濾鏡稱為「接收器 (sink)」。

25.1 濾鏡圖語法

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

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

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

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

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

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

  • 以「:」分隔的 key=value 對列表。
  • 以「:」分隔的 value 列表。在這種情況下,金鑰 (keys) 假定為選項名稱,順序與它們宣告的順序相同。例如,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

[L1]split[L2]overlay

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

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

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

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

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

例如,濾鏡圖

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

[L1][L2] hstack

nullsrc=s=320x240, split[L1], [L1]pad=w=640:h=480[L2], [L2]overlay=x=320:y=240, nullsink

可以表示為

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]

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

nullsrc=s=320x240,

split[L1],

[L1]pad=w=640:h=480[L2],

[L2]overlay=x=320:y=240,

nullsink

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

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

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

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

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

濾鏡圖描述組成包含多個層級的跳脫字元 (escaping)。有關所採用的跳脫字元程序的更多資訊,請參閱 (ffmpeg-utils) ffmpeg-utils(1) 手冊中的「引號和跳脫字元」章節

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

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

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

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

26 時間軸編輯

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

This is a text with a ' character and a : character

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

This is a text with a \' character and a \: character

n

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

pos

drawtext=text='This is a text with a \\' character and a \\: character'

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

drawtext=text='This is a text with a \\\\' character and a \\\\: character'

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

例如,對於 drawtext 濾鏡,您可能更喜歡使用 textfile 選項來代替 text 以指定要呈現的文字。

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

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

表達式接受以下值

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

t

28 多個輸入濾鏡的選項 (framesync)

以秒為單位表示的時間戳記 (timestamp),如果輸入時間戳記未知,則為 NAN

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

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

n

pos

w

h

如果是視訊,則為輸入影格的寬度和高度

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

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

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

[in]trim=start=10,smartblur=enable='between(t,10,180)',curves=enable='gte(t,3)'[out]

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

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

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

default

eof_action

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

repeat

29 音訊濾鏡

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

endall

29.1 aap

結束兩個串流。

pass

以下是接受選項的描述。

讓主輸入通過。

shortest

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

repeatlast

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

ts_sync_mode

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

auto

自動。

syncts

從時間戳記小於或等於主輸入影格的輔助輸入影格。

nearest

d

從時間戳記與主輸入影格絕對最近的輔助輸入影格。

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

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

n

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

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

order

設定濾鏡階數。

precision

projection

設定投影階數。

mu

設定濾鏡 mu。

delta

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

out_mode

29.2 acompressor

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

i

通過第一個輸入。

ii

通過第二個輸入。

o

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

u

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

e

通過誤差訊號估計樣本。

預設值為 o

precision

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

auto

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

float

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

double

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

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

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

濾鏡接受以下選項

level_in

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

29.2.1 指令

mode

29.3 acontrast

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

通過第一個輸入。

threshold

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

29.4 acopy

ratio

29.5 acrossfade

設定訊號降低的比率。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 之間。

curve2

設定第二音訊流的交叉淡化轉場曲線。

如需可用曲線類型的說明,請參閱 afade 濾波器說明。

29.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
    

29.6 acrossover

將音訊流分割成數個頻段。

此濾波器將音訊流分割成兩個或更多個頻率範圍。將所有音訊流加總回一起將產生平坦的輸出。

通過第一個輸入。

split

設定分割頻率。這些頻率必須是正值且遞增。

讓主輸入通過。

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

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

projection

設定投影階數。

mu

設定濾鏡 mu。

delta

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

out_mode

預設值為 auto

29.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
    

29.7 acrusher

降低音訊位元解析度。

此濾波器是具有增強功能的位元破壞器。位元破壞器用於可聽見地減少音訊訊號取樣的位元數。這完全不會改變位元深度,它只會產生效果。位元深度降低的素材聽起來更刺耳且「數位化」。此濾波器甚至能夠捨入為連續值,而不是離散位元深度。此外,它還具有 D/C 偏移,這會導致訊號的下半部和上半部產生不同的破壞效果。抗鋸齒設定能夠產生「較柔和」的破壞聲音。

此濾波器的另一個功能是對數模式。此設定從位元之間的線性距離切換為對數距離。結果是聲音更「自然」的破壞器,例如,不會閘控低訊號。人耳具有對數感知,因此這種破壞方式更令人愉悅。對數破壞也能够進行抗鋸齒處理。

通過第一個輸入。

ii

設定輸入位準。

level_out

設定輸出位準。

bits

設定位元減少量。

level_in

設定混合量。

o

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

dc

設定直流。

aa

設定抗鋸齒。

samples

設定樣本減少量。

lfo

啟用 LFO。預設為停用。

lforange

設定 LFO 範圍。

lforate

設定 LFO 速率。

29.7.1 指令

mode

29.8 acue

延遲音訊濾波,直到給定的實際時間戳記。請參閱 cue 濾波器。

29.9 adeclick

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

偵測為脈衝雜訊的樣本會使用自迴歸模型,替換為內插樣本。

window, w

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

makeup

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

arorder, a

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

threshold, t

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

burst, b

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

method, m

設定重疊方法。

它接受以下值:

add, a

選取重疊相加方法。即使未內插的樣本也會使用此方法稍微更改。

save, s

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

預設值為 a

29.10 adeclip

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

偵測為削波的樣本會使用自迴歸模型,替換為內插樣本。

window, w

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

makeup

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

arorder, a

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

threshold, t

設定閾值。允許範圍為 1100。預設值為 10。值越高,削波偵測的積極性就越低。

hsize, n

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

method, m

設定重疊方法。

它接受以下值:

add, a

選取重疊相加方法。即使未內插的樣本也會使用此方法稍微更改。

save, s

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

預設值為 a

29.11 adecorrelate

將去相關性套用至輸入音訊流。

通過第一個輸入。

stages

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

seed

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

29.12 adelay

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

延遲聲道中的樣本會以靜音填滿。

此濾波器接受以下選項

delays

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

all

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

29.12.1 範例

  • 將第一個聲道延遲 1.5 秒,將第三個聲道延遲 0.5 秒,並保持第二個聲道(以及可能存在的任何其他聲道)不變。
    adelay=1500|0|500
    
  • 將第二個聲道延遲 500 個樣本,將第三個聲道延遲 700 個樣本,並保持第一個聲道(以及可能存在的任何其他聲道)不變。
    adelay=0|500S|700S
    
  • 將所有聲道延遲相同的樣本數
    adelay=delays=64S:all=1
    

29.13 adenorm

透過新增極低位準的雜訊來補救音訊中的次常態值。

此濾波器應放置在任何可能產生次常態值的濾波器之前。

以下是接受參數的說明。

level

設定新增雜訊的位準,以分貝為單位。預設值為 -351。允許範圍為 -451 到 -90。

type

設定新增雜訊的類型。

dc

新增直流訊號。

ac

新增交流訊號。

square

新增方波訊號。

pulse

新增脈衝訊號。

預設值為 dc

29.13.1 指令

mode

29.14 aderivative, aintegral

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

依序套用這兩個濾波器會產生原始音訊。

29.15 adrc

將頻譜動態範圍控制器濾波器套用至輸入音訊流。

以下是接受選項的描述。

transfer

設定傳輸表達式。

表達式可以包含以下常數

ch

目前聲道編號

sn

目前樣本編號

nb_channels

聲道數

t

以秒表示的時間戳記

sr

取樣率

p

p

f

f

預設值為 p

預設值為 o

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

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

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

channels

設定要篩選的聲道,預設情況下,會篩選音訊流中的 all 聲道。

29.15.1 指令

mode

29.15.2 範例

  • 將頻譜壓縮套用至所有頻率,閾值為 -50 分貝,比例為 1:6
    adrc=transfer='if(gt(p,-50),-50+(p-(-50))/6,p)':attack=50:release=100
    
  • 與上述類似,但比例為 1:2,且僅篩選前置中央聲道
    adrc=transfer='if(gt(p,-50),-50+(p-(-50))/2,p)':attack=50:release=100:channels=FC
    
  • 將頻譜雜訊閘套用至所有頻率,閾值為 -85 分貝,並具有短啟動時間和短釋放時間
    adrc=transfer='if(lte(p,-85),p-800,p)':attack=1:release=5
    
  • 將頻譜擴展套用至所有頻率,閾值為 -10 分貝,比例為 1:2
    adrc=transfer='if(lt(p,-10),-10+(p-(-10))*2,p)':attack=50:release=100
    
  • 將限制器套用至所有頻率的最大值 -60 分貝,啟動時間為 2 毫秒,釋放時間為 10 毫秒
    adrc=transfer='min(p,-60)':attack=2:release=10
    

29.16 adynamicequalizer

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

以下是接受選項的描述。

u

設定用於觸發等化的偵測閾值。閾值偵測使用偵測濾波器。預設值為 0。允許範圍為 0 到 100。

dfrequency

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

dqfactor

設定偵測濾波器的偵測共振因數,用於觸發等化。預設值為 1。允許範圍介於 0.001 到 1000 之間。

tfrequency

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

tqfactor

設定目標等化濾波器的目標共振因數。預設值為 1。允許範圍介於 0.001 到 1000 之間。

預設值為 o

設定訊號從偵測必須上升到偵測閾值以上,等化才會開始的毫秒數。預設值為 20。允許範圍介於 1 到 2000 之間。

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

設定訊號從偵測必須下降到偵測閾值以下,等化才會結束的毫秒數。預設值為 200。允許範圍介於 1 到 2000 之間。

e

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

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

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

range

設定允許的最大衰減/提升量。預設值為 50。允許範圍介於 1 到 200 之間。

o

設定濾波器操作模式,可以是下列其中之一

listen

僅輸出隔離的偵測訊號。

cutbelow

衰減低於偵測閾值的頻率。

cutabove

衰減高於偵測閾值的頻率。

boostbelow

提升低於偵測閾值的頻率。

boostabove

提升高於偵測閾值的頻率。

預設模式為 ‘cutbelow’。

dftype

設定偵測濾波器的類型,可以是下列其中之一

bandpass
lowpass
highpass
peak

預設類型為 ‘bandpass’。

tftype

設定目標濾波器的類型,可以是下列其中之一

bell
lowshelf
highshelf

預設類型為 ‘bell’。

設定投影階數。

自動從偵測濾波器收集閾值。預設為 ‘disabled’。此選項可用於在輸入音訊流的特定時間範圍內偵測閾值,在這種情況下,選項值會在執行階段變更。

可用值為

disabled

停用使用自動收集的閾值。

off

停止選取閾值。

on

開始選取閾值。

adaptive

透過計算滑動視窗熵,自適應地選取閾值。

precision

projection

設定投影階數。

mu

設定濾鏡 mu。

delta

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

out_mode

29.16.1 指令

mode

29.17 adynamicsmooth

將動態平滑套用至輸入音訊流。

以下是接受選項的描述。

sensitivity

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

basefreq

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

29.17.1 指令

mode

29.18 aecho

將回音套用至輸入音訊。

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

以下是接受參數的說明。

in_gain

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

out_gain

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

delays

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

decays

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

29.18.1 範例

  • 使其聽起來像是實際演奏的樂器數量加倍
    aecho=0.8:0.88:60:0.4
    
  • 如果延遲非常短,則聽起來像是(金屬)機器人在播放音樂
    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
    

29.19 aemphasis

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

通過第一個輸入。

ii

設定輸入增益。

level_out

設定輸出增益。

o

設定濾波器模式。對於還原素材,請使用 reproduction 模式,否則請使用 production 模式。預設模式為 reproduction 模式。

type

設定濾波器類型。選取媒體。可以是下列其中之一

col

選取 Columbia。

emi

選取 EMI。

bsi

選取 BSI (78RPM)。

riaa

選取 RIAA。

cd

選取 CD (Compact Disc)。

50fm

選取 50µs (FM)。

75fm

選取 75µs (FM)。

50kf

選取 50µs (FM-KF)。

75kf

選取 75µs (FM-KF)。

29.19.1 指令

mode

29.20 aeval

根據指定的表達式修改音訊訊號。

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

它接受以下參數

exprs

設定每個個別聲道的 ’|’ 分隔表達式清單。如果輸入聲道數大於表達式數,則最後指定的表達式會用於剩餘的輸出聲道。

channel_layout, c

設定輸出聲道配置。如果未指定,聲道配置會由表達式數指定。如果設定為 ‘same’,則預設會使用相同的輸入聲道配置。

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

ch

目前表達式的聲道編號

n

已評估樣本的數量,從 0 開始

s

取樣率

t

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

nb_in_channels
nb_out_channels

輸入和輸出聲道數量

val(CH)

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

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

29.20.1 範例

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

29.21 aexciter

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

通過第一個輸入。

ii

設定訊號處理前的輸入音量。允許範圍為 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

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

29.21.1 指令

mode

29.22 afade

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

以下是接受參數的說明。

type, t

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

start_sample, ss

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

attack

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

start_time, st

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

release

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

curve

設定淡化過渡的曲線。

它接受以下值:

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

29.22.1 指令

mode

29.22.2 範例

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

29.23 afftdn

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

以下是接受參數的說明。

noise_reduction, nr

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

noise_floor, nf

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

noise_type, nt

設定噪聲類型。

它接受以下值:

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

設定輸出模式。

它接受以下值:

input, i

傳遞未更改的輸入。

output, o

傳遞濾除的噪聲。

noise, n

僅傳遞噪聲。

預設值為 output

adaptivity, ad

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

floor_offset, fo

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

noise_link, nl

設定用於多聲道音頻的噪聲鏈接。

它接受以下值:

none

使用未更改聲道的噪聲基底。

min

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

max

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

average

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

預設值為 min

band_multiplier, bm

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

sample_noise, sn

切換從輸入音頻捕獲和測量噪聲輪廓。

它接受以下值:

start, begin

開始樣本噪聲捕獲。

stop, end

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

預設值為 none

gain_smooth, gs

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

29.23.1 指令

此濾波器支援上述某些選項作為 命令

29.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
    

29.24 afftfilt

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

real

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

imag

為每個單獨的聲道設定頻域虛部表達式,以 '|' 分隔。預設值為 "im"。

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

sr

取樣率

b

目前的頻率箱編號

nb

可用箱的數量

ch

目前表達式的聲道編號

chs

聲道數

pts

目前的幀 PTS

re

目前聲道的頻率箱的目前實部

im

目前聲道的頻率箱的目前虛部

real(b, ch)

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

imag(b, ch)

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

win_size

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

win_func

設定視窗函數。

它接受以下值:

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

29.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)"
    

29.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

projection

設定投影階數。

mu

設定濾鏡 mu。

delta

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

out_mode

預設值為 auto。

irload

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

29.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"
    

29.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

29.27 afreqshift

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

通過第一個輸入。

shift

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

level

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

讓主輸入通過。

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

29.27.1 指令

mode

29.28 afwtdn

使用小波減少輸入樣本中的寬頻噪聲。

以下是接受選項的描述。

sigma

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

levels

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

wavet

設定輸入幀分解的小波類型。它們按係數數量排序,從最低到最高。係數越多意味著濾波速度越慢,但總體質量更好。可用的小波有

sym2
sym4
rbior68
deb10
sym10
coif5
bl3
percent

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

profile

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

adaptive

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

samples

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

softness

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

29.28.1 指令

mode

29.29 agate

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

閘門處理是透過偵測低於選定位準 threshold 的音量,並將其除以使用 ratio 設定的因數來完成。雜訊基底的底部是透過 range 設定的。由於精確地操作訊號會導致波形失真,因此衰減可以在一段時間內變得平緩。這可以透過設定 attackrelease 來完成。

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

ii

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

o

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

range

設定當訊號低於閾值時的增益衰減位準。預設值為 0.06125。允許範圍為 0 到 1。將此值設定為 0 會停用衰減,然後濾波器會像擴展器一樣運作。

u

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

e

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

預設值為 o

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

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

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

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

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

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

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

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

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

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

選擇所有聲道之間的平均位準還是較大聲的聲道影響衰減。預設值為 average。可以是 averagemaximum

29.29.1 指令

mode

29.30 aiir

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

它接受以下參數

零點,z

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

極點,p

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

增益,k

設定聲道增益。

dry_gain (原始增益)

設定輸入增益。

wet_gain (濕聲增益)

設定輸出增益。

格式,f

設定係數格式。

ll

晶格-梯形函數

sf

類比傳遞函數

tf

數位傳遞函數

zp

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

pr

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

pd

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

sp

S 平面零點/極點

處理,r

設定處理類型。

d

直接處理

s

串列處理

p

並列處理

精確度,e

設定濾波精確度。

dbl

雙精度浮點數 (預設)

flt

單精度浮點數

i32

32 位元整數

i16

16 位元整數

正規化,n

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

level_in

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

response

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

channel

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

size

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

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

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

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

29.30.1 範例

  • 套用 2 極點橢圓陷波器,約在 5000Hz 處,適用於 48000 Hz 取樣率
    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 階類比正規化 Butterworth 低通濾波器,使用類比傳遞函數格式
    aiir=z=1.3057 0 0 0:p=1.3057 2.3892 2.1860 1:f=sf:r=d
    

29.31 alimiter

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

通過第一個輸入。

ii

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

level_out

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

limit (限制)

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

預設值為 o

限制器將在毫秒內達到其衰減位準。預設值為 5 毫秒。

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

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

asc

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

asc_level

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

level

自動調整輸出訊號位準。預設為啟用。如果啟用,這會將音訊正規化回 0dB。

latency (延遲)

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

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

29.32 allpass

套用一個雙極點全通濾波器,其中中心頻率(以 Hz 為單位)為 frequency,濾波器寬度為 width。全通濾波器會改變音訊的頻率與相位關係,而不會改變其頻率與幅度關係。

通過第一個輸入。

frequency (頻率),f

以 Hz 為單位設定頻率。

width_type (寬度類型),t

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

h

Hz

q

Q 因子

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

octave (八度音程)

s

slope (斜率)

k

kHz

width (寬度),w

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

mix (混合),m

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

channels (聲道),c

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

正規化,n

正規化雙二階係數,預設情況下為停用。啟用後,將把 DC 的幅度響應正規化為 0dB。

order (階數),o

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

transform (轉換),a

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

di
dii
tdi
tdii
latt
svf
zdf
precision (精確度),r

設定濾波精確度。

設定投影階數。

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

s16

始終使用帶符號 16 位元。

s32

始終使用帶符號 32 位元。

f32

始終使用浮點 32 位元。

f64

始終使用浮點 64 位元。

29.32.1 指令

此濾波器支援以下命令

frequency (頻率),f

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

width_type (寬度類型),t

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

width (寬度),w

變更全通 width。命令語法為:「width

mix (混合),m

變更全通 mix。命令語法為:「mix

29.33 aloop

循環音訊取樣。

通過第一個輸入。

loop

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

size

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

start

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

time (時間)

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

29.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,這可能是也可能不是預期值。

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

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

29.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
    

29.35 amix

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

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

它接受以下參數

inputs (輸入)

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

duration

如何確定串流結束。

longest (最長)

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

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

shortest (最短)

最短輸入的持續時間。

first (第一個)

第一個輸入的持續時間。

dropout_transition (衰減轉換)

當輸入串流結束時,音量重新正規化的轉換時間,以秒為單位。預設值為 2 秒。

weights (權重)

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

normalize (正規化)

29.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
    

29.35.2 指令

此濾波器支援以下命令

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

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

29.36 amultiply

語法與同名選項相同。

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

29.37 anequalizer

透過這種逐元素乘法,可以建立幅度淡入淡出和幅度調變。

它接受以下參數

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

params (參數)

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

chn

f

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

f

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

w

以赫茲為單位設定頻帶寬度。

t

g

0

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

t

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

Butterworth,這是預設值。

1

Chebyshev type 1 (切比雪夫第一型)。

2

size

Chebyshev type 2 (切比雪夫第二型)。

curves (曲線)

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

size (大小)

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

mgain

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

29.37.1 範例

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

29.37.2 指令

此濾波器支援以下命令

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

colors (顏色)

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

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

29.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

設定輸出模式。

它接受以下值:

從時間戳記小於或等於主輸入影格的輔助輸入影格。

傳遞未更改的輸入。

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

傳遞濾除的噪聲。

n

僅傳遞噪聲。

設定濾鏡階數。

patch (區塊),p

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

29.38.1 指令

mode

29.39 anlmf, anlms

research (搜尋),r

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

以下是接受選項的描述。

讓主輸入通過。

smooth (平滑),m

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

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

套用正規化最小均方 (LMS) 或最小均方四次方 (LMS-Fourth) 演算法到第一個音訊串流,使用第二個音訊串流。

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

order (階數)

設定濾波器階數。

自動。

它接受以下值:

從時間戳記小於或等於主輸入影格的輔助輸入影格。

nearest

d

從時間戳記與主輸入影格絕對最近的輔助輸入影格。

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

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

n

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

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

order

設定濾鏡階數。

precision

projection

設定投影階數。

mu

設定濾鏡 mu。

delta

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

out_mode

29.39.1 範例

  • 此濾波器的眾多用途之一是降噪,輸入音訊會以延遲固定量的相同樣本進行濾波,立體聲音訊的一個範例是
    asplit[a][b],[a]adelay=32S|32S[a],[b][a]anlms=order=128:leakage=0.0005:mu=.5:out_mode=o
    

29.39.2 指令

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

29.40 anull

將音訊來源不變地傳遞到輸出。

29.41 apad

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

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

以下是接受選項的描述。

packet_size

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

pad_len

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

whole_len

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

pad_dur

指定要添加的靜音樣本的持續時間。請參閱 (ffmpeg-utils)ffmpeg-utils(1) 手冊中的「時間持續時間」章節,了解接受的語法。僅在設定為非負值時使用。

whole_dur

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

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

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

29.41.1 範例

  • 在輸入的末尾添加 1024 個靜音樣本
    apad=pad_len=1024
    
  • 確保音訊輸出將包含至少 10000 個樣本,如果需要,請在輸入中填充靜音
    apad=whole_len=10000
    
  • 使用 ffmpeg 在音訊輸入中填充靜音,以便在使用 shortest 選項時,視訊串流始終是最短的,並將轉換到輸出檔案的末尾
    ffmpeg -i VIDEO -i AUDIO -filter_complex "[1:0]apad" -shortest OUTPUT
    

29.42 aphaser

將相位效果添加到輸入音訊。

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

以下是接受參數的說明。

in_gain

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

out_gain

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

delay

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

decay

設定衰減。預設值為 0.4。

speed

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

type

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

它接受以下值:

triangular, t
sinusoidal, s

29.43 aphaseshift

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

通過第一個輸入。

shift

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

level

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

讓主輸入通過。

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

29.43.1 指令

mode

29.44 apsnr

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

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

29.45 apsyclip

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

通過第一個輸入。

ii

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

level_out

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

clip

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

diff

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

adaptive

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

iterations

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

level

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

29.45.1 指令

mode

29.46 apulsator

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

通過第一個輸入。

ii

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

level_out

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

o

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

amount

設定調變。定義原始訊號有多少受到 LFO 的影響。

offset_l

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

offset_r

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

width

設定脈衝寬度。預設值為 1。允許範圍為 [0 - 2]。

timing

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

bpm

設定 bpm。預設值為 120。允許範圍為 [30 - 300]。僅在 timing 設定為 bpm 時使用。

ms

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

hz

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

29.47 aresample

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

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

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

29.47.1 範例

  • 將輸入音訊重新取樣為 44100Hz
    aresample=44100
    
  • 將樣本拉伸/擠壓到給定的時間戳記,每秒最多補償 1000 個樣本
    aresample=async=1000
    

29.48 areverse

反轉音訊片段。

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

29.48.1 範例

  • 取得片段的前 5 秒,並將其反轉。
    atrim=end=5,areverse
    

29.49 arls

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

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

以下是接受選項的描述。

讓主輸入通過。

shortest

lambda

設定遺忘因子。

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

auto

自動。

syncts

從時間戳記小於或等於主輸入影格的輔助輸入影格。

nearest

d

從時間戳記與主輸入影格絕對最近的輔助輸入影格。

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

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

n

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

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

order

設定濾鏡階數。

precision

projection

設定投影階數。

mu

設定濾鏡 mu。

delta

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

out_mode

29.50 arnndn

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

此濾波器接受以下選項

model, m

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

level_in

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

29.50.1 指令

mode

29.51 asdr

測量音訊訊號失真比。

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

29.52 asetnsamples

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

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

通過第一個輸入。

nb_out_samples, n

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

填充, p

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

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

asetnsamples=n=1234:p=0

29.53 asetrate

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

通過第一個輸入。

sample_rate, r

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

29.54 ashowinfo

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

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

輸出中顯示以下值

n

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

pts

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

pts_time

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

fmt

樣本格式。

chlayout

聲道佈局。

rate

音訊幀的取樣率。

nb_samples

幀中(每個聲道)的樣本數。

checksum

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

plane_checksums

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

29.55 asisdr

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

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

29.56 asoftclip

應用音訊柔削波。

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

此濾波器接受以下選項

type

設定柔削波的類型。

它接受以下值:

hard
tanh
atan
cubic
exp
alg
quintic
sin
erf
u

設定從何處開始削波的閾值。預設值為 0dB 或 1。

output

設定應用於輸出的增益。預設值為 0dB 或 1。

param

設定控制 S 形函數的額外參數。

oversample

設定過取樣因子。

29.56.1 指令

mode

29.57 aspectralstats

顯示關於音訊聲道的頻域統計資訊。統計資訊會針對每個音訊聲道和每個音訊幀進行計算並儲存為中繼資料。

它接受以下選項

win_size

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

win_func

設定視窗函數。

它接受以下值:

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

預設值為 hann

overlap

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

measure

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

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

mean
variance
centroid
spread
skewness
kurtosis
entropy
flatness
crest
flux
slope (斜率)
decrease
rolloff

29.58 asr

自動語音辨識

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

它接受以下選項

rate

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

hmm

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

dict

設定發音字典。

lm

設定語言模型檔案。

lmctl

設定語言模型集。

lmname

設定要使用的語言模型。

logfn

設定記錄訊息的輸出。

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

29.59 astats

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

它接受以下選項

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 Zero_crossings Zero_crossings_rate

而對於 OverallBit_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)

在整個音訊中測量的熵,接近 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)

具有無限值的樣本數

非數值數量 (Number_of_NaNs)

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

次常態值數量 (Number_of_denormals)

具有次常態值的樣本數

樣本數 (Number_of_samples)

樣本數

峰值計數 (Peak_count)

訊號達到 Min_levelMax_level 其中之一的次數(非樣本數)

絕對峰值計數 (Abs_Peak_count)

訊號的絕對樣本達到 Min_levelMax_level 的最大絕對值的次數

峰值位準 (Peak_level)

標準峰值位準,單位為 dBFS

均方根差異 (RMS_difference)

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

均方根位準 (RMS_level)

標準均方根位準,單位為 dBFS

均方根峰值 (RMS_peak)
均方根谷值 (RMS_trough)

在短時間窗內測量的均方根位準的峰值和谷值,單位為 dBFS。

過零點 (Zero crossings)

波形穿過零位準軸的點數

過零率 (Zero crossings rate)

過零率和音訊樣本數的比率

29.60 asubboost

增強超低音頻率。

通過第一個輸入。

dry

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

wet

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

增強 (boost)

設定最大增強因子。允許範圍為 1 到 12。預設值為 2。

decay

設定延遲線衰減增益值。允許範圍為 0 到 1。預設值為 0.0。

回饋 (feedback)

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

cutoff

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

slope (斜率)

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

delay

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

channels

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

29.60.1 指令

mode

29.61 asubcut

衰減超低音頻率。

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

通過第一個輸入。

cutoff

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

讓主輸入通過。

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

level

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

29.61.1 指令

mode

29.62 asupercut

衰減超高頻率。

通過第一個輸入。

cutoff

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

讓主輸入通過。

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

level

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

29.62.1 指令

mode

29.63 asuperpass

套用高階 Butterworth 帶通濾波器。

通過第一個輸入。

中心頻率 (centerf)

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

讓主輸入通過。

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

Q 因子 (qfactor)

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

level

設定輸入增益位準。允許範圍為 0 到 2。預設值為 1。

29.63.1 指令

mode

29.64 asuperstop

套用高階 Butterworth 帶阻濾波器。

通過第一個輸入。

中心頻率 (centerf)

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

讓主輸入通過。

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

Q 因子 (qfactor)

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

level

設定輸入增益位準。允許範圍為 0 到 2。預設值為 1。

29.64.1 指令

mode

29.65 atempo

調整音訊速度。

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

請注意,速度大於 2 會跳過一些樣本,而不是將它們混合在一起。如果出於任何原因,這是一個問題,始終可以串聯多個 atempo 實例以實現所需的產品速度。

29.65.1 範例

  • 將音訊速度減慢至 80%
    atempo=0.8
    
  • 將音訊速度加快至 300%
    atempo=3
    
  • 透過串聯兩個 atempo 實例將音訊速度加快至 300%
    atempo=sqrt(3),atempo=sqrt(3)
    

29.65.2 指令

此濾波器支援以下命令

速度 (tempo)

變更濾波器速度比例因子。指令語法為:「tempo

29.66 atilt

對音訊串流套用頻譜傾斜濾波器。

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

通過第一個輸入。

freq

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

slope (斜率)

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

width

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

讓主輸入通過。

設定傾斜濾波器的階數。

level

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

29.66.1 指令

mode

29.67 atrim

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

它接受以下參數

start

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

end

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

開始點 (start_pts)

start 相同,但此選項設定以樣本而非秒為單位的開始時間戳記。

結束點 (end_pts)

end 相同,但此選項設定以樣本而非秒為單位的結束時間戳記。

duration

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

開始樣本 (start_sample)

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

結束樣本 (end_sample)

應該捨棄的第一個樣本的編號。

startendduration 以時間長度規格表示;請參閱 (ffmpeg-utils)ffmpeg-utils(1) 手冊中的時間長度章節

請注意,前兩組開始/結束選項和 duration 選項會查看影格時間戳記,而 _sample 選項僅計算通過濾波器的樣本。因此,當時間戳記錯誤、不精確或未從零開始時,start/end_pts 和 start/end_sample 會給出不同的結果。另請注意,此濾波器不會修改時間戳記。如果您希望輸出時間戳記從零開始,請在 atrim 濾波器之後插入 asetpts 濾波器。

如果設定了多個開始或結束選項,此濾波器會盡可能貪婪地保留至少符合其中一個指定限制的所有樣本。若要僅保留同時符合所有限制的部分,請串聯多個 atrim 濾波器。

預設值會保留所有輸入。因此,可以設定例如僅結束值,以保留指定時間之前的所有內容。

範例

  • 捨棄除輸入的第二分鐘之外的所有內容
    ffmpeg -i INPUT -af atrim=60:120
    
  • 僅保留前 1000 個樣本
    ffmpeg -i INPUT -af atrim=end_sample=1000
    

29.68 axcorrelate

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

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

通過第一個輸入。

size

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

演算法 (algo)

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

29.68.1 範例

  • 計算立體聲音訊串流中聲道之間的相關性
    ffmpeg -i stereo.wav -af channelsplit,axcorrelate=size=1024:algo=fast correlation.wav
    

29.69 bandpass

套用一個雙極 Butterworth 帶通濾波器,其中心頻率為 frequency,而(3dB 點)頻寬為 width。csg 選項選擇恆定裙邊增益(峰值增益 = Q)而不是預設值:恆定 0dB 峰值增益。濾波器以每八度音程 6dB(每十倍頻程 20dB)的速率滾降。

通過第一個輸入。

frequency (頻率),f

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

恆定裙邊增益 (csg)

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

width_type (寬度類型),t

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

h

Hz

q

Q 因子

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

octave (八度音程)

s

slope (斜率)

k

kHz

width (寬度),w

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

mix (混合),m

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

channels (聲道),c

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

正規化,n

正規化雙二階係數,預設情況下為停用。啟用後,將把 DC 的幅度響應正規化為 0dB。

transform (轉換),a

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

di
dii
tdi
tdii
latt
svf
zdf
precision (精確度),r

設定濾波精確度。

設定投影階數。

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

s16

始終使用帶符號 16 位元。

s32

始終使用帶符號 32 位元。

f32

始終使用浮點 32 位元。

f64

始終使用浮點 64 位元。

區塊大小 (block_size), b

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

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

29.69.1 指令

此濾波器支援以下命令

frequency (頻率),f

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

width_type (寬度類型),t

變更帶通頻寬類型。指令語法為:「width_type

width (寬度),w

變更帶通頻寬。指令語法為:「width

mix (混合),m

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

29.70 bandreject

套用一個雙極 Butterworth 帶拒濾波器,其中心頻率為 frequency,而(3dB 點)頻寬為 width。濾波器以每八度音程 6dB(每十倍頻程 20dB)的速率滾降。

通過第一個輸入。

frequency (頻率),f

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

width_type (寬度類型),t

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

h

Hz

q

Q 因子

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

octave (八度音程)

s

slope (斜率)

k

kHz

width (寬度),w

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

mix (混合),m

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

channels (聲道),c

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

正規化,n

正規化雙二階係數,預設情況下為停用。啟用後,將把 DC 的幅度響應正規化為 0dB。

transform (轉換),a

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

di
dii
tdi
tdii
latt
svf
zdf
precision (精確度),r

設定濾波精確度。

設定投影階數。

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

s16

始終使用帶符號 16 位元。

s32

始終使用帶符號 32 位元。

f32

始終使用浮點 32 位元。

f64

始終使用浮點 64 位元。

區塊大小 (block_size), b

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

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

29.70.1 指令

此濾波器支援以下命令

frequency (頻率),f

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

width_type (寬度類型),t

變更帶拒頻寬類型。指令語法為:「width_type

width (寬度),w

變更帶拒頻寬。指令語法為:「width

mix (混合),m

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

29.71 bass, lowshelf

使用雙極 shelving 濾波器增強或衰減音訊的低音(較低)頻率,其響應類似於標準高傳真音響的音調控制。這也稱為 shelving 等化 (EQ)。

通過第一個輸入。

增益 (gain), g

給定 0 赫茲的增益。其有用範圍約為 -20(用於大幅衰減)到 +20(用於大幅增強)。使用正增益時請注意削波。

frequency (頻率),f

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

width_type (寬度類型),t

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

h

Hz

q

Q 因子

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

octave (八度音程)

s

slope (斜率)

k

kHz

width (寬度),w

決定濾波器的 shelving 過渡有多陡峭。

極點,p

設定極點數。預設值為 2。

mix (混合),m

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

channels (聲道),c

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

正規化,n

正規化雙二階係數,預設情況下為停用。啟用後,將把 DC 的幅度響應正規化為 0dB。

transform (轉換),a

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

di
dii
tdi
tdii
latt
svf
zdf
precision (精確度),r

設定濾波精確度。

設定投影階數。

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

s16

始終使用帶符號 16 位元。

s32

始終使用帶符號 32 位元。

f32

始終使用浮點 32 位元。

f64

始終使用浮點 64 位元。

區塊大小 (block_size), b

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

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

29.71.1 指令

此濾波器支援以下命令

frequency (頻率),f

變更低音頻率。指令語法為:「frequency

width_type (寬度類型),t

變更低音頻寬類型。指令語法為:「width_type

width (寬度),w

變更低音頻寬。指令語法為:「width

增益 (gain), g

變更低音增益。指令語法為:「gain

mix (混合),m

變更低音混合。指令語法為:「mix

29.72 biquad

套用具有給定係數的雙二階 IIR 濾波器。其中 b0b1b2a0a1a2 分別是分子和分母係數。而 channels, c 指定要濾波的聲道,預設情況下,所有可用的聲道都會被濾波。

29.72.1 指令

此濾波器支援以下命令

a0
a1
a2
b0
b1
b2

變更雙二階參數。指令語法為:「value

mix (混合),m

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

channels (聲道),c

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

正規化,n

正規化雙二階係數,預設情況下為停用。啟用後,將把 DC 的幅度響應正規化為 0dB。

transform (轉換),a

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

di
dii
tdi
tdii
latt
svf
zdf
precision (精確度),r

設定濾波精確度。

設定投影階數。

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

s16

始終使用帶符號 16 位元。

s32

始終使用帶符號 32 位元。

f32

始終使用浮點 32 位元。

f64

始終使用浮點 64 位元。

區塊大小 (block_size), b

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

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

29.73 bs2b

Bauer 立體聲到雙耳轉換,可改善立體聲音訊錄音的耳機聆聽體驗。

若要啟用此濾波器的編譯,您需要使用 --enable-libbs2b 配置 FFmpeg。

它接受以下參數

profile

預定義的串音位準。

default

預設位準 (fcut=700, feed=50)。

cmoy

Chu Moy 電路 (fcut=700, feed=60)。

jmeier

Jan Meier 電路 (fcut=650, feed=95)。

截止頻率 (fcut)

截止頻率(單位為赫茲)。

饋入位準 (feed)

饋入位準(單位為赫茲)。

29.74 channelmap

將輸入聲道重新對應到新的位置。

它接受以下參數

對應 (map)

將聲道從輸入對應到輸出。此引數是以「|」分隔的對應清單,每個對應的格式為 in_channel-out_channelin_channelin_channel 可以是輸入聲道的名稱(例如 FL 代表前置左聲道),也可以是其在輸入聲道佈局中的索引。out_channel 是輸出聲道的名稱或其在輸出聲道佈局中的索引。如果未給定 out_channel,則隱含地為索引,從零開始,並且每個對應遞增一。不允許混合不同類型的對應,否則會導致剖析錯誤。

聲道佈局 (channel_layout)

輸出串流的聲道佈局。如果未指定,則濾波器將根據 out_channel 名稱或對應數量猜測它。猜測的佈局不一定會以對應的順序包含聲道。

如果沒有對應存在,則濾波器將隱含地將輸入聲道對應到輸出聲道,並保留索引。

29.74.1 範例

  • 例如,假設一個 5.1+downmix 輸入 MOV 檔案,
    ffmpeg -i in.mov -filter 'channelmap=map=DL-FL|DR-FR' out.wav
    

    將從輸入的 downmix 聲道建立一個標記為立體聲的輸出 WAV 檔案。

  • 修正以 AAC 原生聲道順序不正確編碼的 5.1 WAV
    ffmpeg -i in.wav -filter 'channelmap=1|2|0|5|3|4:5.1' out.wav
    

29.75 channelsplit

將輸入音訊串流中的每個聲道分割成單獨的輸出串流。

它接受以下參數

聲道佈局 (channel_layout)

輸入串流的聲道佈局。預設值為「stereo」。

channels

描述要提取為單獨輸出串流的聲道,或「all」以將每個輸入聲道提取為單獨串流的聲道佈局。預設值為「all」。

選擇輸入聲道佈局中不存在的聲道將會導致錯誤。

29.75.1 範例

  • 例如,假設一個立體聲輸入 MP3 檔案,
    ffmpeg -i in.mp3 -filter_complex channelsplit out.mkv
    

    將建立一個具有兩個音訊串流的輸出 Matroska 檔案,一個僅包含左聲道,另一個包含右聲道。

  • 將 5.1 WAV 檔案分割成每個聲道一個檔案
    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
    
  • 僅從 5.1 WAV 檔案中提取 LFE
    ffmpeg -i in.wav -filter_complex 'channelsplit=channel_layout=5.1:channels=LFE[LFE]'
    -map '[LFE]' lfe.wav
    

29.76 chorus

為音訊新增合唱效果。

可以使單一人聲聽起來像合唱團,但也可用於樂器。

合唱類似於具有短延遲的回音效果,但是與回音的延遲是恆定的不同,合唱的延遲是使用正弦或三角調變來變化的。調變深度定義了調變後的延遲在延遲之前或之後播放的範圍。因此,延遲的聲音聽起來會較慢或較快,也就是說,延遲的聲音圍繞原始聲音進行調整,就像合唱團中有些聲音略微走調一樣。

它接受以下參數

in_gain

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

out_gain

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

delays

設定延遲時間。典型的延遲時間約為 40 毫秒到 60 毫秒。

decays

設定衰減。

速度 (speeds)

設定速度。

深度 (depths)

設定深度。

29.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
    

29.77 compand

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

它接受以下參數

起音時間 (attacks)
decays

每個聲道的以秒為單位的時間清單,在這些時間內,輸入訊號的瞬時位準會被平均以確定其音量。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 分貝。預設值為 0。

delay

設定延遲時間,以秒為單位。輸入音訊會立即進行分析,但音訊會先延遲,然後再饋送至音量調整器。指定約等於啟動/衰減時間的延遲,可讓濾波器有效地以預測模式而非反應模式運作。預設值為 0。

29.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
    
  • 2:1 壓縮,起始於 -6dB
    compand=points=-80/-80|-6/-6|0/-3.8|20/3.5
    
  • 2:1 壓縮,起始於 -9dB
    compand=points=-80/-80|-9/-9|0/-5.3|20/2.9
    
  • 2:1 壓縮,起始於 -12dB
    compand=points=-80/-80|-12/-12|0/-6.8|20/1.9
    
  • 2:1 壓縮,起始於 -18dB
    compand=points=-80/-80|-18/-18|0/-9.8|20/0.7
    
  • 3:1 壓縮,起始於 -15dB
    compand=points=-80/-80|-15/-15|0/-10.8|20/-5.2
    
  • 壓縮器/閘
    compand=points=-80/-105|-62/-80|-15.4/-15.4|0/-12|20/-7.6
    
  • 擴展器
    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
    compand=attacks=0:points=-80/-80|-6/-6|20/-6
    
  • 硬式限制器,位於 -12dB
    compand=attacks=0:points=-80/-80|-12/-12|20/-12
    
  • 硬式雜訊閘,位於 -35 dB
    compand=attacks=0:points=-80/-115|-35.1/-80|-35/-35|20/20
    
  • 柔式限制器
    compand=attacks=0:points=-80/-80|-12.4/-12.4|-6/-8|0/-6.8|20/-2.8
    

29.78 compensationdelay

補償延遲線是一種基於度量的延遲,用於補償麥克風或喇叭的不同位置。

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

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

此濾波器接受以下參數

公釐 (mm)

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

公分 (cm)

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

m

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

dry

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

wet

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

溫度 (temp)

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

29.78.1 指令

mode

29.79 crossfeed

套用耳機串音濾波器。

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

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

通過第一個輸入。

強度 (strength)

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

range

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

slope (斜率)

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

ii

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

level_out

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

區塊大小 (block_size)

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

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

29.79.1 指令

mode

29.80 crystalizer

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

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

通過第一個輸入。

從時間戳記小於或等於主輸入影格的輔助輸入影格。

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

c

啟用削波。預設為啟用。

29.80.1 指令

mode

29.81 dcshift

對音訊套用直流偏移。

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

shift

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

限制器增益 (limitergain)

選用。它應具有遠小於 1 的值(例如 0.05 或 0.02),並用於防止削波。

29.82 deesser

對音訊樣本套用齒音消除。

從時間戳記小於或等於主輸入影格的輔助輸入影格。

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

m

設定聲音高音部分衰減的量。允許範圍為 0 到 1。預設值為 0.5。

f

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

s

設定輸出模式。

它接受以下值:

從時間戳記小於或等於主輸入影格的輔助輸入影格。

傳遞未更改的輸入。

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

通過濾除的齒音。

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

僅通過齒音。

設定濾鏡階數。

29.83 dialoguenhance

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

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

通過第一個輸入。

原始 (original)

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

enhance

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

語音 (voice)

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

29.83.1 指令

mode

29.84 drmeter

測量音訊動態範圍。

在非常動態的素材中發現 14 及更高的動態範圍值。在過渡素材中發現 8 到 13 的動態範圍值。任何小於 8 的值都具有非常差的動態,並且經過高度壓縮。

通過第一個輸入。

length

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

29.85 dynaudnorm

動態音訊正規化器。

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

幀長度, f (framelen, f)

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

高斯大小, g (gausssize, g)

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

峰值, p (peak, p)

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

最大增益, m (maxgain, m)

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

目標均方根值, r (targetrms, r)

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

耦合, n (coupling, n)

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

直流偏移校正, c (correctdc, c)

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

替代邊界, b (altboundary, b)

啟用替代邊界模式。預設為停用。「動態音訊正規化器」會考量每個影格周圍的特定鄰域。這包括先前的影格以及後續的影格。然而,對於位於音訊檔案最開頭和最結尾的「邊界」影格,並非所有鄰近影格都可用。特別是,對於音訊檔案中的前幾個影格,先前的影格是未知的。同樣地,對於音訊檔案中的最後幾個影格,後續的影格是未知的。因此,問題就產生在於,對於「邊界」區域中遺失的影格,應該假設哪些增益係數。「動態音訊正規化器」實作了兩種模式來處理這種情況。預設邊界模式假設遺失影格的增益係數正好為 1.0,從而在輸入的開頭和結尾分別產生平滑的「淡入」和「淡出」效果。

compress, s

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

threshold, t

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

channels, h

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

makeup

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

curve, v

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

表達式可以包含以下常數

ch

目前聲道編號

sn

目前樣本編號

nb_channels

聲道數

t

以秒表示的時間戳記

sr

取樣率

p

目前影格峰值

29.85.1 指令

mode

29.86 earwax

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

此濾波器將「提示」新增至 44.1kHz 立體聲(即音訊 CD 格式)音訊,以便在耳機上聆聽時,立體聲影像從您的頭部內部(耳機的標準)移至外部並位於聆聽者前方(喇叭的標準)。

移植自 SoX。

29.87 equalizer

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

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

通過第一個輸入。

frequency (頻率),f

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

width_type (寬度類型),t

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

h

Hz

q

Q 因子

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

octave (八度音程)

s

slope (斜率)

k

kHz

width (寬度),w

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

增益 (gain), g

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

mix (混合),m

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

channels (聲道),c

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

正規化,n

正規化雙二階係數,預設情況下為停用。啟用後,將把 DC 的幅度響應正規化為 0dB。

transform (轉換),a

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

di
dii
tdi
tdii
latt
svf
zdf
precision (精確度),r

設定濾波精確度。

設定投影階數。

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

s16

始終使用帶符號 16 位元。

s32

始終使用帶符號 32 位元。

f32

始終使用浮點 32 位元。

f64

始終使用浮點 64 位元。

區塊大小 (block_size), b

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

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

29.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
    

29.87.2 指令

此濾波器支援以下命令

frequency (頻率),f

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

width_type (寬度類型),t

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

width (寬度),w

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

增益 (gain), g

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

mix (混合),m

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

29.88 extrastereo

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

通過第一個輸入。

m

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

c

啟用削波。預設為啟用。

29.88.1 指令

mode

29.89 firequalizer

使用任意頻率響應套用 FIR 等化。

此濾波器接受以下選項

增益 (gain)

設定增益曲線方程式(以 dB 為單位)。表達式可以包含變數

f

評估的頻率

sr

取樣率

ch

聲道編號,當停用多聲道評估時設定為 0

chid

聲道 ID,請參閱 libavutil/channel_layout.h,當停用多聲道評估時設定為第一個聲道 ID

chs

聲道數

chlayout

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)

在頻率 f 以值 g 儲存增益條目

此選項也可用作指令。

delay

以秒為單位設定濾波器延遲。值越高表示越精確。預設值為 0.01

accuracy

以 Hz 為單位設定濾波器精確度。值越低表示越精確。預設值為 5

wfunc

設定視窗函數。可接受的值為

rectangular

矩形視窗,當增益曲線已平滑時很有用

hann

漢寧視窗(預設值)

hamming

漢明視窗

blackman

布萊克曼視窗

nuttall3

3 項連續一階導數納塔爾視窗

mnuttall3

最小 3 項不連續納塔爾視窗

nuttall

4 項連續一階導數納塔爾視窗

bnuttall

最小 4 項不連續納塔爾(布萊克曼-納塔爾)視窗

bharris

布萊克曼-哈里斯視窗

tukey

涂基視窗

fixed

如果啟用,則使用固定數量的音訊樣本。這在以大延遲進行濾波時可提高速度。預設為停用。

multi

在增益上啟用多聲道評估。預設為停用。

zero_phase

透過減去時間戳記以補償延遲,啟用零相位模式。預設為停用。

scale

設定增益使用的比例。可接受的值為

linlin

線性頻率,線性增益

linlog

線性頻率,對數(以 dB 為單位)增益(預設值)

loglin

對數(在 20 Hz 為 0 的八度音階中)頻率,線性增益

loglog

對數頻率,對數增益

dumpfile

設定用於傾印的檔案,適用於 gnuplot。

dumpscale

設定 dumpfile 的比例。可接受的值與 scale 選項相同。預設值為 linlog。

fft2

啟用使用複數 FFT 的雙聲道迴旋積。這顯著提高了速度。預設為停用。

min_phase

啟用最小相位脈衝響應。預設為停用。

29.89.1 範例

  • 1000 Hz 的低通
    firequalizer=gain='if(lt(f,1000), 0, -INF)'
    
  • 具有 gain_entry 的 1000 Hz 低通
    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
    

29.90 flanger

對音訊套用鑲邊效果。

通過第一個輸入。

delay

以毫秒為單位設定基礎延遲。範圍從 0 到 30。預設值為 0。

depth

以毫秒為單位設定新增的掃描延遲。範圍從 0 到 10。預設值為 2。

regen

設定百分比再生(延遲訊號回饋)。範圍從 -95 到 95。預設值為 0。

width

設定與原始訊號混合的延遲訊號百分比。範圍從 0 到 100。預設值為 71。

speed

設定每秒掃描次數 (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>。

29.91 haas

對音訊套用哈斯效應。

請注意,這最適合套用在單聲道訊號上。將此濾波器套用至單聲道訊號時,它會給予一些方向性並延伸其立體聲影像。

通過第一個輸入。

ii

設定輸入位準。預設值為 <var>1</var>,或 0dB

level_out

設定輸出位準。預設值為 <var>1</var>,或 0dB。

side_gain

設定套用至訊號側邊部分的增益。預設值為 <var>1</var>。

middle_source

設定中間來源的種類。可以是下列其中一種

left

選擇左聲道。

‘<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

變更右相位。預設為啟用。

29.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>’

聲道之間的目標增益不符的樣本

29.93 headphone

套用頭部相關傳輸函數 (HRTF) 以建立使用者周圍的虛擬喇叭,以便透過耳機進行雙耳聆聽。HRIR 透過額外的串流提供,每個聲道都需要一個立體聲輸入串流。

通過第一個輸入。

對應 (map)

設定用於迴旋積的輸入串流的映射。引數是以 '|' 分隔的聲道名稱清單,順序與作為濾波器的額外串流輸入給定的順序相同。這也指定了輸入串流的數量。輸入串流的數量必須不小於第一個串流中的聲道數加一。

增益 (gain)

設定套用至音訊的增益。值以 dB 為單位。預設值為 0。

type

設定處理類型。可以是 <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>,則額外串流的數量應正好為一個。此外,額外串流的輸入聲道數應等於或大於第一個輸入串流的聲道數的兩倍。

29.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
    

29.94 highpass

套用具有 3dB 點頻率的高通濾波器。濾波器可以是單極或雙極(預設值)。濾波器滾降為每極每八度音 6dB(每極每十年 20dB)。

通過第一個輸入。

frequency (頻率),f

以 Hz 為單位設定頻率。預設值為 3000。

極點,p

設定極點數。預設值為 2。

width_type (寬度類型),t

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

h

Hz

q

Q 因子

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

octave (八度音程)

s

slope (斜率)

k

kHz

width (寬度),w

以 width_type 單位指定濾波器的頻寬。僅適用於雙極濾波器。預設值為 0.707q,並提供巴特沃斯響應。

mix (混合),m

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

channels (聲道),c

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

正規化,n

正規化雙二階係數,預設情況下為停用。啟用後,將把 DC 的幅度響應正規化為 0dB。

transform (轉換),a

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

di
dii
tdi
tdii
latt
svf
zdf
precision (精確度),r

設定濾波精確度。

設定投影階數。

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

s16

始終使用帶符號 16 位元。

s32

始終使用帶符號 32 位元。

f32

始終使用浮點 32 位元。

f64

始終使用浮點 64 位元。

區塊大小 (block_size), b

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

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

29.94.1 指令

此濾波器支援以下命令

frequency (頻率),f

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

width_type (寬度類型),t

變更高通寬度類型。指令語法為:「width_type

width (寬度),w

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

mix (混合),m

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

29.95 join

將多個輸入串流合併為一個多聲道串流。

它接受以下參數

inputs (輸入)

輸入串流的數量。預設值為 2。

聲道佈局 (channel_layout)

期望的輸出聲道佈局。預設值為立體聲。

對應 (map)

將聲道從輸入對應到輸出。參數是以「|」分隔的對應列表,每個對應的格式為 input_idx.in_channel-out_channelinput_idx 是輸入串流的從 0 開始的索引。in_channel 可以是輸入聲道的名稱(例如 FL 代表前置左聲道)或其在指定輸入串流中的索引。out_channel 是輸出聲道的名稱。

當未明確指定對應時,濾波器會嘗試猜測對應。它首先嘗試尋找未使用的匹配輸入聲道,如果失敗,則選擇第一個未使用的輸入聲道。

合併 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

29.96 ladspa

載入 LADSPA(Linux Audio Developer’s Simple Plugin API)外掛程式。

若要啟用此濾波器的編譯,您需要使用 --enable-ladspa 配置 FFmpeg。

file, f

指定要載入的 LADSPA 外掛程式庫的名稱。如果定義了環境變數 LADSPA_PATH,則會在 LADSPA_PATH 中以冒號分隔的列表指定的每個目錄中搜尋 LADSPA 外掛程式,否則會在標準 LADSPA 路徑中搜尋,順序如下:HOME/.ladspa/lib//usr/local/lib/ladspa//usr/lib/ladspa/

plugin, p

指定程式庫內的外掛程式。有些程式庫僅包含一個外掛程式,但其他程式庫包含許多外掛程式。如果未設定此選項,濾波器將列出指定程式庫內的所有可用外掛程式。

controls, c

設定以「|」分隔的控制項列表,這些控制項是零個或多個浮點數值,用於決定已載入外掛程式的行為(例如延遲、閾值或增益)。控制項需要使用以下語法定義:c0=value0|c1=value1|c2=value2|...,其中 valuei 是在第 i 個控制項上設定的值。或者,它們也可以使用以下語法定義:value0|value1|value2|...,其中 valuei 是在第 i 個控制項上設定的值。如果 controls 設定為 help,則會印出所有可用的控制項及其有效範圍。

sample_rate, s

指定取樣率,預設為 44100。僅在外掛程式沒有輸入時使用。

nb_samples, n

設定每個輸出幀每個聲道的取樣數,預設為 1024。僅在外掛程式沒有輸入時使用。

release

設定來源音訊的最小持續時間。請參閱 (ffmpeg-utils)ffmpeg-utils(1) 手冊中的時間持續時間章節 以取得可接受的語法。請注意,結果持續時間可能大於指定的持續時間,因為產生的音訊始終在完整幀的末尾剪切。如果未指定,或表示的持續時間為負數,則音訊應無限期產生。僅在外掛程式沒有輸入時使用。

latency, l

啟用延遲補償,預設為停用。僅在外掛程式有輸入時使用。

29.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 拍的滴答聲
    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
    

29.96.2 指令

此濾波器支援以下命令

cN

修改第 N 個控制項值。

如果指定的值無效,則會忽略它並保留先前的值。

29.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。如果未滿足任何這些條件,正規化模式將還原為 dynamic。選項為 truefalse。預設值為 true

dual_mono

將單聲道輸入檔案視為「雙單聲道」。如果單聲道檔案旨在於立體聲系統上播放,則其 EBU R128 測量在感知上將不正確。如果設定為 true,此選項將補償此效應。多聲道輸入檔案不受此選項影響。選項為 true 或 false。預設值為 false。

print_format

設定統計資料的列印格式。選項為 summary、json 或 none。預設值為 none。

29.98 lowpass

套用具有 3dB 截止頻率的低通濾波器。濾波器可以是單極或雙極(預設值)。濾波器滾降為每極每八度音程 6dB(每極每十倍頻程 20dB)。

通過第一個輸入。

frequency (頻率),f

以 Hz 為單位設定頻率。預設值為 500。

極點,p

設定極點數。預設值為 2。

width_type (寬度類型),t

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

h

Hz

q

Q 因子

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

octave (八度音程)

s

slope (斜率)

k

kHz

width (寬度),w

以 width_type 單位指定濾波器的頻寬。僅適用於雙極濾波器。預設值為 0.707q,並提供巴特沃斯響應。

mix (混合),m

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

channels (聲道),c

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

正規化,n

正規化雙二階係數,預設情況下為停用。啟用後,將把 DC 的幅度響應正規化為 0dB。

transform (轉換),a

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

di
dii
tdi
tdii
latt
svf
zdf
precision (精確度),r

設定濾波精確度。

設定投影階數。

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

s16

始終使用帶符號 16 位元。

s32

始終使用帶符號 32 位元。

f32

始終使用浮點 32 位元。

f64

始終使用浮點 64 位元。

區塊大小 (block_size), b

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

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

29.98.1 範例

  • 僅低通 LFE 聲道,如果 LFE 不存在,則不執行任何操作
    lowpass=c=LFE
    

29.98.2 指令

此濾波器支援以下命令

frequency (頻率),f

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

width_type (寬度類型),t

變更低通寬度類型。指令語法為:「width_type

width (寬度),w

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

mix (混合),m

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

29.99 lv2

載入 LV2 (LADSPA Version 2) 外掛程式。

若要啟用此濾波器的編譯,您需要使用 --enable-lv2 配置 FFmpeg。

plugin, p

指定外掛程式 URI。您可能需要跳脫字元「:」。

controls, c

設定以「|」分隔的控制項列表,這些控制項是零個或多個浮點數值,用於決定已載入外掛程式的行為(例如延遲、閾值或增益)。如果 controls 設定為 help,則會印出所有可用的控制項及其有效範圍。

sample_rate, s

指定取樣率,預設為 44100。僅在外掛程式沒有輸入時使用。

nb_samples, n

設定每個輸出幀每個聲道的取樣數,預設為 1024。僅在外掛程式沒有輸入時使用。

release

設定來源音訊的最小持續時間。請參閱 (ffmpeg-utils)ffmpeg-utils(1) 手冊中的時間持續時間章節 以取得可接受的語法。請注意,結果持續時間可能大於指定的持續時間,因為產生的音訊始終在完整幀的末尾剪切。如果未指定,或表示的持續時間為負數,則音訊應無限期產生。僅在外掛程式沒有輸入時使用。

29.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
    

29.99.2 指令

此濾波器支援外掛程式作為指令匯出的所有選項。

29.100 mcompand

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

輸入音訊使用 4 階 Linkwitz-Riley IIR 濾波器分為頻段。這類似於揚聲器的分頻器,並且在沒有壓擴器動作時會產生平坦的頻率響應。

它接受以下參數

args

此選項語法為:attack,decay,[attack,decay..] soft-knee points crossover_frequency [delay [initial_volume [gain]]] | attack,decay ... 如需每個項目的說明,請參閱 compand 濾波器文件。

29.101 pan

以特定增益等級混合聲道。濾波器接受輸出聲道佈局,後接一組聲道定義。

此濾波器也旨在有效地重新對應音訊串流的聲道。

濾波器接受以下形式的參數:「l|outdef|outdef|...」

l

輸出聲道佈局或聲道數

outdef

輸出聲道規格,形式為:「out_name=[gain*]in_name[(+-)[gain*]in_name...]」

out_name

要定義的輸出聲道,可以是聲道名稱(FL、FR 等)或聲道號碼(c0、c1 等)

增益 (gain)

聲道的乘法係數,1 表示音量不變

in_name

要使用的輸入聲道,詳細資訊請參閱 out_name;無法混合命名和編號的輸入聲道

如果聲道規格中的「=」替換為「<」,則該規格的增益將被重新正規化,以使總和為 1,從而避免削波雜訊。

29.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」選項)。

29.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"

29.102 replaygain

ReplayGain 掃描器濾波器。此濾波器將音訊串流作為輸入,並以未變更的方式輸出。在濾波結束時,它會顯示 track_gaintrack_peak

濾波器接受以下匯出的唯讀選項

track_gain

串流結束時匯出的音軌增益,單位為 dB。

track_peak

串流結束時匯出的音軌峰值。

29.103 resample

轉換音訊取樣格式、取樣率和聲道佈局。不應直接使用。

29.104 rubberband

使用 librubberband 套用時間伸展和音調偏移。

若要啟用此濾波器的編譯,您需要使用 --enable-librubberband 配置 FFmpeg。

通過第一個輸入。

速度 (tempo)

設定速度縮放因子。

pitch

設定音調縮放因子。

transients

設定瞬態偵測器。可能的值為

crisp
mixed
smooth
detector

設定偵測器。可能的值為

compound
percussive
soft
phase

phase

設定相位。可能的值為
laminar
independent

window

standard
設定處理視窗大小。可能的值為
long
short

smoothing

設定平滑化。可能的值為
off
on

formant

在音調偏移時啟用共振峰保留。可能的值為
shifted
preserved

pitchq

設定音調品質。可能的值為
speed
quality
channels

consistency

channels
設定聲道。可能的值為

29.104.1 指令

此濾波器支援以下命令

速度 (tempo)

變更濾波器速度比例因子。指令語法為:「tempo

pitch

apart

29.105 sidechaincompress

together

通過第一個輸入。

ii

通過第二個輸入。

o

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

u

變更濾波器音調縮放因子。指令語法為:「pitch

e

此濾波器的作用類似於一般壓縮器,但具有使用第二個輸入訊號壓縮偵測到的訊號的能力。它需要兩個輸入串流並傳回一個輸出串流。第一個輸入串流將根據第二個串流訊號進行處理。然後,濾波後的訊號可以在後續的處理階段中使用其他濾波器進行濾波。請參閱 panamerge 濾波器。

預設值為 o

precision

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

auto

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

float

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

double

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

如果第二個串流的訊號升高到此電平以上,則會影響第一個串流的增益衰減。預設值為 0.125。範圍介於 0.00097563 和 1 之間。

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

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

選擇側鏈串流的所有聲道之間的average 電平或側鏈串流較響亮的(maximum)聲道是否影響衰減。預設值為 average

peak 的情況下,應採用精確訊號,還是 rms 的情況下應採用 RMS 訊號。預設值為 rms,它主要更平滑。

level_in

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

29.105.1 指令

mode

29.105.2 範例

  • level_sc
    ffmpeg -i main.flac -i sidechain.flac -filter_complex "[1:a]asplit=2[sc][mix];[0:a][sc]sidechaincompress[compr];[compr][mix]amerge"
    

29.106 sidechaingate

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

通過第一個輸入。

ii

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

o

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

range

設定當訊號低於閾值時的增益衰減位準。預設值為 0.06125。允許範圍為 0 到 1。將此值設定為 0 會停用衰減,然後濾波器會像擴展器一樣運作。

u

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

e

完整 ffmpeg 範例,採用 2 個音訊輸入,第 1 個輸入根據第 2 個輸入的訊號進行壓縮,然後將壓縮後的訊號與第 2 個輸入合併

預設值為 o

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

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

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

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

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

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

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

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

側鏈閘門的作用類似於一般(寬頻)閘門,但具有在將偵測到的訊號發送到增益衰減階段之前對其進行濾波的能力。通常,閘門使用全頻段訊號來偵測高於閾值的電平。例如:如果您從側鏈訊號中切除所有較低的頻率,則僅當高頻不夠時,閘門才會降低音軌的音量。使用此技術,您可以減少自然鼓的共振或消除嚴重失真吉他的靜音敲擊聲的「隆隆聲」。它需要兩個輸入串流並傳回一個輸出串流。第一個輸入串流將根據第二個串流訊號進行處理。

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

選擇是否以所有聲道的平均音量或較大聲的聲道來影響音量衰減。預設為平均音量。可選擇平均或最大值。

選擇側鏈串流的所有聲道之間的average 電平或側鏈串流較響亮的(maximum)聲道是否影響衰減。預設值為 average

設定側鏈增益。預設值為 1。範圍從 0.015625 到 64。

29.106.1 指令

mode

29.107 silencedetect

偵測音訊串流中的靜音。

當此濾波器偵測到輸入音訊音量小於或等於雜訊容忍值,且持續時間大於或等於最小偵測雜訊持續時間時,會記錄訊息。

列印的時間和持續時間以秒為單位。lavfi.silence_startlavfi.silence_start.X 元數據鍵設定在時間戳記等於或超過偵測持續時間的第一個影格上,並且包含靜音的第一個影格的時間戳記。

lavfi.silence_durationlavfi.silence_duration.X 以及 lavfi.silence_endlavfi.silence_end.X 元數據鍵設定在靜音之後的第一個影格上。如果啟用 mono 且每個聲道分別評估,則會使用帶有 .X 後綴的鍵,而 X 對應於聲道編號。

通過第一個輸入。

noise, n

設定雜訊容忍值。可以用 dB (如果在指定值後附加 "dB" 的情況下) 或振幅比率指定。預設值為 -60dB,或 0.001。

release

設定靜音持續時間直到通知 (預設為 2 秒)。有關接受的語法,請參閱 (ffmpeg-utils) ffmpeg-utils(1) 手冊中的時間持續時間章節

單聲道, m

分別處理每個聲道,而不是合併處理。預設為停用。

29.107.1 範例

  • 偵測 5 秒的靜音,雜訊容忍值為 -50dB
    silencedetect=n=-50dB:d=5
    
  • 使用 ffmpeg 的完整範例,以 0.0001 雜訊容忍值偵測 silence.mp3 中的靜音
    ffmpeg -i silence.mp3 -af silencedetect=noise=0.0001 -f null -
    

29.108 silenceremove

從音訊的開頭、中間或結尾移除靜音。

通過第一個輸入。

start_periods (開始週期)

此值用於指示是否應修剪音訊開頭的靜音。值為零表示不應從開頭修剪靜音。當指定非零值時,它會修剪音訊直到找到非靜音部分。通常,當從音訊開頭修剪靜音時,start_periods 將為 1,但可以增加到更高的值,以修剪所有音訊直到特定計數的非靜音週期。預設值為 0

start_duration (開始持續時間)

指定在停止修剪音訊之前必須偵測到非靜音的時間長度。透過增加持續時間,可以將突發雜訊視為靜音並修剪掉。預設值為 0

start_threshold (開始閾值)

這表示應將哪個取樣值視為靜音。對於數位音訊,值 0 可能可以,但對於從類比錄製的音訊,您可能希望增加該值以考慮背景雜訊。可以用 dB (如果在指定值後附加 "dB" 的情況下) 或振幅比率指定。預設值為 0

start_silence (開始靜音)

指定在修剪後將保留在開頭的最大靜音持續時間。預設值為 0,相當於修剪所有偵測為靜音的取樣。

start_mode (開始模式)

指定在多聲道音訊開頭偵測靜音結束的模式。可以是 anyall。預設值為 any。使用 any,從任何聲道偵測到任何非靜音取樣都將觸發音訊串流開頭的靜音修剪結束。使用 all,只有當從每個聲道偵測到每個取樣都是非靜音時,才會觸發音訊串流開頭的靜音修剪結束,使用受限。

stop_periods (停止週期)

設定從音訊結尾修剪靜音的計數。當指定正值時,它會在找到指定的靜音週期後修剪音訊。若要從檔案中間移除靜音,請指定負值的 stop_periods。此值隨後會被視為正值,並用於指示效果應按照 stop_periods 的指定重新開始處理,使其適用於移除音訊中間的靜音週期。預設值為 0

stop_duration (停止持續時間)

指定必須存在的靜音持續時間,之後將不再複製音訊。透過指定較高的持續時間,可以將想要的靜音保留在音訊中。預設值為 0

stop_threshold (停止閾值)

這與 start_threshold 相同,但用於從音訊結尾修剪靜音。可以用 dB (如果在指定值後附加 "dB" 的情況下) 或振幅比率指定。預設值為 0

stop_silence (停止靜音)

指定在修剪後將保留在結尾的最大靜音持續時間。預設值為 0,相當於修剪所有偵測為靜音的取樣。

stop_mode (停止模式)

指定在多聲道音訊開始後偵測靜音開始的模式。可以是 anyall。預設值為 all。使用 any,從任何聲道偵測到任何靜音取樣都將觸發音訊串流開始後的靜音修剪開始,使用受限。使用 all,只有當從每個聲道偵測到每個取樣都是靜音時,才會觸發音訊串流開始後的靜音修剪開始。

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

設定如何偵測靜音。

avg (平均值)

移動視窗中取樣絕對值的平均值。

rms (均方根值)

移動視窗中取樣絕對值的均方根值。

peak (峰值)

移動視窗中取樣絕對值的最大值。

median (中位數)

移動視窗中取樣絕對值的中位數。

ptp (峰對峰值)

移動視窗中取樣最大峰值與最小峰值差異的絕對值。

dev (標準差)

移動視窗中取樣值的標準差。

預設值為 rms (均方根值)。

independent

設定用於計算靜音偵測視窗大小 (以取樣數為單位) 的持續時間 (以秒為單位)。使用 0 將有效地停用任何視窗化,並且僅對每個聲道使用單個取樣進行靜音偵測。在這種情況下,可能還需要將 start_silence 和/或 stop_silence 以及 start_duration 和/或 stop_duration 設定為非零值。預設值為 0.02。允許的範圍從 010

timestamp (時間戳記)

設定每個音訊影格輸出時間戳記的處理模式。

write (寫入)

完整時間戳記重寫,僅保留第一個輸出影格的開始時間。

copy (複製)

未丟失的影格保留與輸入音訊影格相同時間戳記。

預設值為 write (寫入)。

29.108.1 範例

  • 以下範例示範如何使用此濾波器開始錄製,而錄製內容不包含通常在按下錄製按鈕和表演開始之間發生的開頭延遲。
    silenceremove=start_periods=1:start_duration=5:start_threshold=0.02
    
  • 修剪從頭到尾遇到的所有靜音,其中音訊中存在超過 1 秒的靜音
    silenceremove=stop_periods=-1:stop_duration=1:stop_threshold=-90dB
    
  • 使用峰值偵測,從頭到尾修剪所有數位靜音取樣,其中音訊中存在超過 0 個數位靜音取樣,並且在串流中相同位置的所有聲道中都偵測到數位靜音
    silenceremove=window=0:detection=peak:stop_mode=all:start_mode=all:stop_periods=-1:stop_threshold=0
    
  • 修剪從頭到尾遇到的每第 2 個靜音週期,其中音訊中每個靜音週期存在超過 1 秒的靜音
    silenceremove=stop_periods=-2:stop_duration=1:stop_threshold=-90dB
    
  • 與上述類似,但從每個修剪的週期保留最多 0.5 秒的靜音
    silenceremove=stop_periods=-2:stop_duration=1:stop_threshold=-90dB:stop_silence=0.5
    
  • 與上述類似,但從音訊開頭保留最多 1.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
    

29.108.2 指令

此濾波器支援上述某些選項作為 命令

29.109 sofalizer

SOFAlizer 使用頭部相關傳輸函數 (HRTF) 在使用者周圍創建虛擬揚聲器,以便透過耳機進行雙耳聆聽 (支援最多 9 個聲道的音訊格式)。HRTF 儲存在 SOFA 檔案中 (資料庫請參閱 http://www.sofacoustics.org/)。SOFAlizer 由奧地利科學院聲學研究所 (ARI) 開發。

若要啟用此濾波器的編譯,您需要使用 --enable-libmysofa 配置 FFmpeg。

通過第一個輸入。

sofa (SOFA 檔案)

設定用於渲染的 SOFA 檔案。

增益 (gain)

設定套用至音訊的增益。值以 dB 為單位。預設值為 0。

rotation (旋轉)

設定虛擬揚聲器的旋轉角度,單位為度。預設值為 0。

elevation (仰角)

設定虛擬揚聲器的仰角,單位為度。預設值為 0。

radius (半徑)

使用近場 HRTF 設定揚聲器與聆聽者之間的距離,單位為公尺。預設值為 1。

type

設定處理類型。可以是 <var>time</var> 或 <var>freq</var>。<var>time</var> 是在時域中處理音訊,速度較慢。<var>freq</var> 是在頻域中處理音訊,速度較快。預設值為 <var>freq</var>。

speakers (揚聲器)

設定虛擬揚聲器的自訂位置。此選項的語法為:<CH> <AZIM> <ELEV>[|<CH> <AZIM> <ELEV>|...]。每個虛擬揚聲器都用簡短的聲道名稱描述,後跟方位角和仰角 (單位為度)。每個虛擬揚聲器描述以 '|' 分隔。例如,若要覆寫前左和前右聲道位置,請使用:'speakers=FL 45 15|FR 345 15'。具有無法辨識聲道名稱的描述將被忽略。

lfegain (LFE 增益)

為 LFE 聲道設定自訂增益。值以 dB 為單位。預設值為 0。

framesize (影格大小)

設定自訂影格大小,以取樣數為單位。預設值為 1024。允許的範圍從 1024 到 96000。僅當選項 'type' 設定為 freq 時使用。

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

是否應在匯入 SOFA 檔案時正規化所有 IR (脈衝響應)。預設為啟用。

interpolate (內插)

如果確切位置不符,是否應將最近的 IR (脈衝響應) 與相鄰的 IR 內插。預設為停用。

minphase (最小相位)

在載入 SOFA 檔案時對所有 IR (脈衝響應) 進行最小相位處理。預設為停用。

anglestep (角度步長)

設定鄰近搜尋角度步長。僅當啟用 interpolate 選項時使用。

radstep (半徑步長)

設定鄰近搜尋半徑步長。僅當啟用 interpolate 選項時使用。

29.109.1 範例

  • 使用 ClubFritz6 sofa 檔案
    sofalizer=sofa=/path/to/ClubFritz6.sofa:type=freq:radius=1
    
  • 使用 ClubFritz12 sofa 檔案和更大的半徑,並帶有小旋轉
    sofalizer=sofa=/path/to/ClubFritz12.sofa:type=freq:radius=2:rotation=5
    
  • 與上述類似,但使用前左、前右、後左和後右的自訂揚聲器位置,以及自訂增益
    "sofalizer=sofa=/path/to/ClubFritz6.sofa:type=freq:radius=2:speakers=FL 45|FR 315|BL 135|BR 225:gain=28"
    

29.110 speechnorm

語音正規化器。

此濾波器根據閾值擴展或壓縮音訊取樣的每個半週期 (局部取樣集,全部高於或全部低於零,且介於兩個最近的過零點之間),使音訊在以下選項控制的條件下達到目標峰值。

通過第一個輸入。

峰值, p (peak, p)

設定擴展目標峰值。這指定正規化音訊輸入允許的最高絕對振幅位準。預設值為 0.95。允許的範圍從 0.0 到 1.0。

expansion, e (擴展, e)

設定最大擴展係數。允許的範圍從 1.0 到 50.0。預設值為 2.0。此選項控制取樣局部半週期的最大擴展。最大擴展將使局部峰值達到目標峰值,但永遠不會超過它,並且新峰值和先前峰值之間的比例不會超過此選項值。

compression, c (壓縮, c)

設定最大壓縮係數。允許的範圍從 1.0 到 50.0。預設值為 2.0。此選項控制取樣局部半週期的最大壓縮。僅當 threshold 選項設定為大於 0.0 的值時才使用此選項,在這種情況下,當局部峰值低於或等於 threshold 設定的值時,屬於該峰值半週期的所有取樣都將按目前的壓縮係數壓縮。

threshold, t

設定閾值。預設值為 0.0。允許的範圍從 0.0 到 1.0。此選項指定哪些取樣半週期將被壓縮,哪些將被擴展。任何局部峰值低於或等於此選項值的半週期取樣都將按目前的壓縮係數壓縮,否則,如果大於閾值,它們將以擴展係數擴展,以便它可以達到峰值目標值,但永遠不會超過它。

raise, r (提升, r)

設定每個取樣半週期的擴展提升量。預設值為 0.001。允許的範圍從 0.0 到 1.0。這控制每個新半週期擴展係數提升的速度,直到達到 expansion 值。將此選項設定得太高可能會導致失真。

fall, f (下降, f)

設定每個取樣半週期的壓縮提升量。預設值為 0.001。允許的範圍從 0.0 到 1.0。這控制每個新半週期壓縮係數提升的速度,直到達到 compression 值。

channels, h

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

invert, i (反轉, i)

啟用反轉濾波,預設為停用。這反轉了 threshold 選項的解釋。啟用後,任何局部峰值低於或等於 threshold 選項值的半週期取樣都將被擴展,否則將被壓縮。

link, l (連結, l)

在計算應用於每個濾波聲道取樣的增益時連結聲道,預設為停用。停用時,每個濾波聲道增益計算是獨立的,否則,當啟用此選項時,將使用每個濾波聲道的所有可能增益中的最小值。

rms, m (均方根值, m)

設定擴展目標 RMS 值。這指定正規化音訊輸入允許的最高 RMS 位準。預設值為 0.0,因此停用。允許的範圍從 0.0 到 1.0。

29.110.1 指令

mode

29.110.2 範例

  • 弱而慢的放大
    speechnorm=e=3:r=0.00001:l=1
    
  • 中等而慢的放大
    speechnorm=e=6.25:r=0.00001:l=1
    
  • 強而快的放大
    speechnorm=e=12.5:r=0.0001:l=1
    
  • 非常強且快的放大
    speechnorm=e=25:r=0.0001:l=1
    
  • 極端且快的放大
    speechnorm=e=50:r=0.0001:l=1
    

29.111 stereotools

此濾波器具有一些方便的工具來管理立體聲訊號,用於將 M/S 立體聲錄音轉換為 L/R 訊號,同時可以控制參數或擴展主軌的立體聲影像。

通過第一個輸入。

ii

設定濾波前兩個聲道的輸入位準。預設值為 1。允許的範圍從 0.015625 到 64。

level_out

設定濾波後兩個聲道的輸出位準。預設值為 1。允許的範圍從 0.015625 到 64。

balance_in (輸入平衡)

設定兩個聲道之間的輸入平衡。預設值為 0。允許的範圍從 -1 到 1。

balance_out (輸出平衡)

設定兩個聲道之間的輸出平衡。預設值為 0。允許的範圍從 -1 到 1。

softclip (軟削波)

啟用軟削波。產生類比失真,而不是刺耳的數位 0dB 削波。預設為停用。

mutel (靜音左聲道)

將左聲道靜音。預設為停用。

muter (靜音右聲道)

將右聲道靜音。預設為停用。

phasel (左聲道相位)

更改左聲道的相位。預設為停用。

phaser (右聲道相位)

更改右聲道的相位。預設為停用。

o

設定立體聲模式。可用值為

lr>lr’ (左/右 -> 左/右)

左/右 到 左/右,這是預設值。

lr>ms’ (左/右 -> 中/側)

左/右 到 中/側。

ms>lr’ (中/側 -> 左/右)

中/側 到 左/右。

lr>ll’ (左/右 -> 左/左)

左/右 到 左/左。

lr>rr’ (左/右 -> 右/右)

左/右 到 右/右。

lr>l+r’ (左/右 -> 左 + 右)

左/右 到 左 + 右。

lr>rl’ (左/右 -> 右/左)

左/右 到 右/左。

ms>ll’ (中/側 -> 左/左)

中/側 到 左/左。

ms>rr’ (中/側 -> 右/右)

中/側 到 右/右。

ms>rl’ (中/側 -> 右/左)

中/側 到 右/左。

lr>l-r’ (左/右 -> 左 - 右)

左/右 到 左 - 右。

slev (側訊號位準)

設定側訊號的位準。預設值為 1。允許的範圍從 0.015625 到 64。

sbal (側訊號平衡)

設定側訊號的平衡。預設值為 0。允許的範圍從 -1 到 1。

mlev (中訊號位準)

設定中訊號的位準。預設值為 1。允許的範圍從 0.015625 到 64。

mpan (中訊號聲像)

設定中訊號的聲像。預設值為 0。允許的範圍從 -1 到 1。

base (立體聲基底)

設定單聲道和反轉聲道之間的立體聲基底。預設值為 0。允許的範圍從 -1 到 1。

delay

設定延遲時間 (毫秒),以決定將左聲道延遲右聲道多少,反之亦然。預設值為 0。允許的範圍從 -20 到 20。

sclevel (S/C 位準)

設定 S/C 位準。預設值為 1。允許的範圍從 1 到 100。

phase

設定立體聲相位,單位為度。預設值為 0。允許的範圍從 0 到 360。

bmode_in, bmode_out (輸入平衡模式, 輸出平衡模式)

設定 balance_in/balance_out 選項的平衡模式。

可以是以下其中之一

balance’ (平衡)

經典平衡模式。一次衰減一個聲道。增益提升到 1。

amplitude’ (振幅)

與上述經典模式類似,但增益提升到 2。

power’ (功率)

相等功率分配,範圍從 -6dB 到 +6dB。

29.111.1 指令

mode

29.111.2 範例

  • 應用類似卡拉 OK 的效果
    stereotools=mlev=0.015625
    
  • 將 M/S 訊號轉換為 L/R
    "stereotools=mode=ms>lr"
    

29.112 stereowiden

此濾波器透過抑制兩個聲道共有的訊號,並將左聲道的訊號延遲到右聲道,反之亦然,從而增強立體聲效果,擴展立體聲影像。

通過第一個輸入。

delay

左右聲道訊號互相延遲的時間,單位為毫秒。預設值為 20 毫秒。

回饋 (feedback)

延遲訊號輸入左右聲道的增益量。產生左聲道訊號在右聲道輸出,反之亦然的延遲效果,從而產生聲音擴展效果。預設值為 0.3。

串音饋送

將左聲道以反相方式串音饋送到右聲道。這有助於抑制單聲道訊號。如果值為 1,則會消除兩個聲道共有的所有訊號。預設值為 0.3。

原始訊號混合

設定原始聲道輸入訊號的音量。預設值為 0.8。

29.112.1 指令

除了 delay 選項外,此濾波器支援上述所有選項作為指令

29.113 superequalizer

套用 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

設定 4186Hz 頻段增益。

14b

設定 5920Hz 頻段增益。

15b

設定 8372Hz 頻段增益。

16b

設定 11840Hz 頻段增益。

17b

設定 16744Hz 頻段增益。

18b

設定 20000Hz 頻段增益。

29.114 surround

套用音訊環繞聲上混濾波器。

此濾波器允許從音訊串流產生多聲道輸出。

通過第一個輸入。

聲道輸出配置

設定輸出聲道配置。預設值為 5.1

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

聲道輸入配置

設定輸入聲道配置。預設值為 立體聲

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

ii

設定輸入音量等級。預設值為 1

level_out

設定輸出音量等級。預設值為 1

lfe

如果輸出聲道配置有 LFE 聲道,則啟用 LFE 聲道輸出。預設為啟用。

LFE 低頻

設定 LFE 低頻截止頻率。預設值為 128 Hz。

LFE 高頻

設定 LFE 高頻截止頻率。預設值為 256 Hz。

LFE 模式

設定 LFE 模式,可以是 addsub。預設值為 add。在 add 模式下,LFE 聲道從輸入音訊建立並添加到輸出。在 sub 模式下,LFE 聲道從輸入音訊建立並添加到輸出,但所有非 LFE 輸出聲道也會減去輸出 LFE 聲道。

smooth

設定時間平滑強度,用於在時間上轉換立體聲時逐步更改係數。允許範圍為 0.01.0。對於 focus 選項值大於 0.0 時,有助於提高輸出品質。預設值為 0.0。只有在此範圍內且沒有邊緣的值才有效。

angle

設定立體聲環繞轉換的角度,允許範圍為 0360。預設值為 90

焦點

設定立體聲環繞轉換的焦點,允許範圍為 -11。預設值為 0

前置中央輸入音量

設定前置中央聲道輸入音量。預設值為 1

前置中央輸出音量

設定前置中央聲道輸出音量。預設值為 1

前置左聲道輸入音量

設定前置左聲道輸入音量。預設值為 1

前置左聲道輸出音量

設定前置左聲道輸出音量。預設值為 1

前置右聲道輸入音量

設定前置右聲道輸入音量。預設值為 1

前置右聲道輸出音量

設定前置右聲道輸出音量。預設值為 1

側邊左聲道輸入音量

設定側邊左聲道輸入音量。預設值為 1

側邊左聲道輸出音量

設定側邊左聲道輸出音量。預設值為 1

側邊右聲道輸入音量

設定側邊右聲道輸入音量。預設值為 1

側邊右聲道輸出音量

設定側邊右聲道輸出音量。預設值為 1

後置左聲道輸入音量

設定後置左聲道輸入音量。預設值為 1

後置左聲道輸出音量

設定後置左聲道輸出音量。預設值為 1

後置右聲道輸入音量

設定後置右聲道輸入音量。預設值為 1

後置右聲道輸出音量

設定後置右聲道輸出音量。預設值為 1

後置中央聲道輸入音量

設定後置中央聲道輸入音量。預設值為 1

後置中央聲道輸出音量

設定後置中央聲道輸出音量。預設值為 1

LFE 輸入音量

設定 LFE 輸入音量。預設值為 1

LFE 輸出音量

設定 LFE 輸出音量。預設值為 1

全部 X 軸擴展

設定所有聲道立體聲影像在 X 軸上的擴展使用率。允許範圍為 -115。預設值為負值 -1,因此未使用。

全部 Y 軸擴展

設定所有聲道立體聲影像在 Y 軸上的擴展使用率。允許範圍為 -115。預設值為負值 -1,因此未使用。

前置中央 X 軸擴展, 前置左聲道 X 軸擴展, 前置右聲道 X 軸擴展, 後置左聲道 X 軸擴展, 後置右聲道 X 軸擴展, 側邊左聲道 X 軸擴展, 側邊右聲道 X 軸擴展, 後置中央聲道 X 軸擴展

設定每個聲道立體聲影像在 X 軸上的擴展使用率。允許範圍為 0.0615。預設值為 0.5

前置中央 Y 軸擴展, 前置左聲道 Y 軸擴展, 前置右聲道 Y 軸擴展, 後置左聲道 Y 軸擴展, 後置右聲道 Y 軸擴展, 側邊左聲道 Y 軸擴展, 側邊右聲道 Y 軸擴展, 後置中央聲道 Y 軸擴展

設定每個聲道立體聲影像在 Y 軸上的擴展使用率。允許範圍為 0.0615。預設值為 0.5

win_size

設定視窗大小。允許範圍為 102465536。預設大小為 4096

win_func

設定視窗函數。

它接受以下值:

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

29.115 tiltshelf

使用雙極性擱架式濾波器,以類似於標準高傳真音調控制的回應,增強或削減音訊的低頻,並削減或增強高頻。這也稱為擱架式等化 (EQ)。

通過第一個輸入。

增益 (gain), g

給定 0 赫茲的增益。其有用範圍約為 -20(用於大幅衰減)到 +20(用於大幅增強)。使用正增益時請注意削波。

frequency (頻率),f

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

width_type (寬度類型),t

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

h

Hz

q

Q 因子

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

octave (八度音程)

s

slope (斜率)

k

kHz

width (寬度),w

決定濾波器的 shelving 過渡有多陡峭。

極點,p

設定極點數。預設值為 2。

mix (混合),m

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

channels (聲道),c

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

正規化,n

正規化雙二階係數,預設情況下為停用。啟用後,將把 DC 的幅度響應正規化為 0dB。

transform (轉換),a

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

di
dii
tdi
tdii
latt
svf
zdf
precision (精確度),r

設定濾波精確度。

設定投影階數。

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

s16

始終使用帶符號 16 位元。

s32

始終使用帶符號 32 位元。

f32

始終使用浮點 32 位元。

f64

始終使用浮點 64 位元。

區塊大小 (block_size), b

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

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

29.115.1 指令

此濾波器支援某些選項作為指令

29.116 treble, highshelf

使用雙極性擱架式濾波器,以類似於標準高傳真音調控制的回應,增強或削減音訊的高音(高頻)。這也稱為擱架式等化 (EQ)。

通過第一個輸入。

增益 (gain), g

給出約 22 kHz 和奈奎斯特頻率中較低者的增益。其有效範圍約為 -20(大幅削減)到 +20(大幅增強)。使用正增益時請注意削波。

frequency (頻率),f

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

width_type (寬度類型),t

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

h

Hz

q

Q 因子

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

octave (八度音程)

s

slope (斜率)

k

kHz

width (寬度),w

決定濾波器的 shelving 過渡有多陡峭。

極點,p

設定極點數。預設值為 2。

mix (混合),m

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

channels (聲道),c

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

正規化,n

正規化雙二階係數,預設情況下為停用。啟用後,將把 DC 的幅度響應正規化為 0dB。

transform (轉換),a

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

di
dii
tdi
tdii
latt
svf
zdf
precision (精確度),r

設定濾波精確度。

設定投影階數。

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

s16

始終使用帶符號 16 位元。

s32

始終使用帶符號 32 位元。

f32

始終使用浮點 32 位元。

f64

始終使用浮點 64 位元。

區塊大小 (block_size), b

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

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

29.116.1 指令

此濾波器支援以下命令

frequency (頻率),f

變更高音頻率。指令語法為:「頻率

width_type (寬度類型),t

變更高音寬度類型。指令語法為:「寬度類型

width (寬度),w

變更高音寬度。指令語法為:「寬度

增益 (gain), g

變更高音增益。指令語法為:「增益

mix (混合),m

變更高音混合。指令語法為:「混合

29.117 tremolo

正弦波幅度調變。

通過第一個輸入。

f

調變頻率,單位為赫茲。次諧波範圍(20 Hz 或更低)的調變頻率將產生顫音效果。此濾波器也可以用作環形調變器,方法是指定高於 20 Hz 的調變頻率。範圍為 0.1 - 20000.0。預設值為 5.0 Hz。

d

調變深度,以百分比表示。範圍為 0.0 - 1.0。預設值為 0.5。

29.118 vibrato

正弦波相位調變。

通過第一個輸入。

f

調變頻率,單位為赫茲。範圍為 0.1 - 20000.0。預設值為 5.0 Hz。

d

調變深度,以百分比表示。範圍為 0.0 - 1.0。預設值為 0.5。

29.119 virtualbass

套用音訊虛擬低音濾波器。

此濾波器接受立體聲輸入,並產生具有 LFE (2.1) 聲道輸出的立體聲。新產生的 LFE 聲道具有增強的虛擬低音,最初是從兩個立體聲聲道獲得的。此濾波器輸出前置左聲道和前置右聲道,與立體聲輸入中的聲道相同。

通過第一個輸入。

cutoff

設定虛擬低音截止頻率。預設值為 250 Hz。允許範圍為 100 到 500 Hz。

強度 (strength)

設定虛擬低音強度。允許範圍為 0.5 到 3。預設值為 3。

29.120 volume

調整輸入音訊音量。

它接受以下參數

音量 (volume)

設定音訊音量表達式。

輸出值會被削波到最大值。

輸出音訊音量由以下關係式給出

output_volume = volume * input_volume

volume 的預設值為 "1.0"。

precision

此參數代表數學精度。

它決定了允許哪些輸入樣本格式,這會影響音量縮放的精度。

fixed

8 位元定點;這將輸入樣本格式限制為 U8、S16 和 S32。

設定濾鏡 mu。

32 位元浮點;這將輸入樣本格式限制為 FLT。(預設)

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

64 位元浮點;這將輸入樣本格式限制為 DBL。

ReplayGain

選擇在輸入影格中遇到 ReplayGain 邊資訊時的行為。

drop

移除 ReplayGain 邊資訊,忽略其內容(預設)。

忽略

忽略 ReplayGain 邊資訊,但將其保留在影格中。

音軌

如果存在音軌增益,則優先使用音軌增益。

專輯

如果存在專輯增益,則優先使用專輯增益。

ReplayGain 前級放大

要套用於所選 replaygain 增益的前級放大增益,單位為 dB。

replaygain_preamp 的預設值為 0.0。

ReplayGain 防削波

透過限制套用的增益來防止削波。

replaygain_noclip 的預設值為 1。

eval

設定何時評估音量表達式。

它接受以下值:

once

僅在濾波器初始化期間或發送 ‘volume’ 指令時評估表達式一次

frame

為每個輸入影格評估表達式

預設值為 ‘once’。

音量表達式可以包含以下參數。

n

影格編號(從零開始)

nb_channels

聲道數

nb_consumed_samples

濾波器消耗的樣本數

nb_samples

nb_samples

影格中樣本數

pos

pts

檔案中原始影格位置;已棄用,請勿使用

sample_rate

取樣率

影格 PTS

startpts

串流開始時的 PTS

startt

t

串流開始時的時間

影格時間

tb

音量 (volume)

時間戳記時基

上次設定的音量值

29.120.1 指令

此濾波器支援以下命令

音量 (volume)

請注意,當 eval 設定為 ‘once’ 時,只有 sample_ratetb 變數可用,所有其他變數都將評估為 NAN。

修改音量表達式。指令接受與對應選項相同的語法。

29.120.2 範例

  • 如果指定的表達式無效,則會保持其目前的值。
    volume=volume=0.5
    volume=volume=1/2
    volume=volume=-6.0206dB
    

    將輸入音訊音量減半

    volume=0.5
    
  • 在上述所有範例中,volume 的命名鍵都可以省略,例如在
    volume=volume=6dB:precision=fixed
    
  • 使用定點精度將輸入音訊功率增加 6 分貝
    volume='if(lt(t,10),1,max(1-(t-10)/5,0))':eval=frame
    

29.121 volumedetect

在時間 10 後衰減音量,衰減期為 5 秒

偵測輸入視訊的音量。

此濾波器沒有參數。它僅支援 16 位元有號整數樣本,因此在需要時會轉換輸入。當輸入串流結束時,音量統計資訊將會列印在日誌中。

特別是,它將顯示平均音量(均方根)、最大音量(以每個樣本為基礎),以及已註冊音量值的直方圖的開頭(從最大值到累積的 1/1000 樣本)。

29.121.1 範例

所有音量均以相對於最大 PCM 值的分貝表示。

[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,依此類推。

30 音訊來源

換句話說,將音量提高 +4 dB 不會導致任何削波,將其提高 +5 dB 會導致 6 個樣本削波,依此類推。

30.1 abuffer

以下是目前可用的音訊來源的描述。

緩衝音訊影格,並使其可用於濾波器鏈。

它接受以下參數

time_base

此來源主要用於程式化用途,特別是透過 libavfilter/buffersrc.h 中定義的介面。

sample_rate

將用於提交影格的時間戳記的時基。它必須是浮點數或 分子/分母 形式。

輸入音訊緩衝區的取樣率。

樣本格式

聲道佈局 (channel_layout)

輸入音訊緩衝區的樣本格式。樣本格式名稱或其在 libavutil/samplefmt.h 中 enum AVSampleFormat 的對應整數表示形式

channels

聲道配置

30.1.1 範例

abuffer=sample_rate=44100:sample_fmt=s16p:channel_layout=stereo

輸入音訊緩衝區的聲道配置。來自 libavutil/channel_layout.c 中 channel_layout_map 的聲道配置名稱或其在 libavutil/channel_layout.h 中 AV_CH_LAYOUT_* 巨集的對應整數表示形式

abuffer=sample_rate=44100:sample_fmt=6:channel_layout=0x3

30.2 aevalsrc

聲道數

輸入音訊緩衝區的聲道數。如果同時指定了 channelschannel_layout,則它們必須一致。

將指示來源接受 44100Hz 的平面 16 位元有號立體聲。由於名稱為 "s16p" 的樣本格式對應於數字 6,而 "stereo" 聲道配置對應於值 0x3,因此這等效於

exprs

產生由表達式指定的音訊訊號。

channel_layout, c

此來源接受一個或多個表達式(每個聲道一個)作為輸入,這些表達式經過評估並用於產生相應的音訊訊號。

release

設定來源音訊的最小持續時間。請參閱 (ffmpeg-utils) ffmpeg-utils(1) 手冊 中的「時間長度」章節,以了解可接受的語法。請注意,由於產生的音訊始終在完整影格的末尾剪切,因此最終的持續時間可能大於指定的持續時間。

如果未指定,或表示的持續時間為負值,則音訊應持續產生。

nb_samples, n

設定每個輸出影格、每個聲道的樣本數,預設值為 1024。

sample_rate, s

指定取樣率,預設值為 44100。

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

n

已評估樣本的數量,從 0 開始

t

評估樣本的時間,以秒為單位表示,從 0 開始

s

取樣率

30.2.1 範例

  • 產生靜音
    aevalsrc=0
    
  • 產生頻率為 440 Hz 的正弦波訊號,設定取樣率為 8000 Hz
    aevalsrc="sin(440*2*PI*t):s=8000"
    
  • 產生雙聲道訊號,明確指定聲道佈局 (前置中央 + 後置中央)
    aevalsrc="sin(420*2*PI*t)|cos(430*2*PI*t):c=FC|BC"
    
  • 產生白噪音
    aevalsrc="-2+random(0)"
    
  • 產生振幅調變訊號
    aevalsrc="sin(10*2*PI*t)*sin(880*2*PI*t)"
    
  • 在 360 Hz 載波上產生 2.5 Hz 的雙耳節拍
    aevalsrc="0.1*sin(2*PI*(360-2.5/2)*t) | 0.1*sin(2*PI*(360+2.5/2)*t)"
    

30.3 afdelaysrc

產生分數延遲 FIR 係數。

產生的串流可以與 afir 濾波器一起使用,以濾波音訊訊號。

通過第一個輸入。

延遲,d

設定分數延遲。預設值為 0。

sample_rate, r

設定取樣率,預設值為 44100。

nb_samples, n

設定每個影格的樣本數。預設值為 1024。

抽頭,t

設定輸出音訊串流中的濾波器係數數量。預設值為 0。

channel_layout, c

指定聲道佈局,可以是表示聲道佈局的字串。 channel_layout 的預設值為 "stereo"。

30.4 afireqsrc

產生 FIR 等化器係數。

產生的串流可以與 afir 濾波器一起使用,以濾波音訊訊號。

通過第一個輸入。

預設,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
增益,g

為每個頻段設定自訂增益。僅當預設選項設定為 custom 時使用。增益以空格分隔,每個增益以 dBFS 為單位設定。預設值為 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

頻段,b

設定自訂頻段,從中設定自訂等化器增益。這必須嚴格遞增。僅當預設選項設定為 custom 時使用。頻段以空格分隔,每個頻段代表頻率 (Hz)。預設值為 25 40 63 100 160 250 400 630 1000 1600 2500 4000 6300 10000 16000 24000

抽頭,t

設定輸出音訊串流中的濾波器係數數量。預設值為 4096

sample_rate, r

設定輸出音訊串流的取樣率,預設值為 44100

nb_samples, n

設定輸出音訊串流中每個影格的樣本數。預設值為 1024

內插法,i

設定 FIR 等化器係數的內插法。可以是 linearcubic

相位,h

設定 FIR 濾波器的相位類型。可以是 linearmin:最小相位。預設為最小相位濾波器。

30.5 afirsrc

使用頻率取樣法產生 FIR 係數。

產生的串流可以與 afir 濾波器一起使用,以濾波音訊訊號。

通過第一個輸入。

抽頭,t

設定輸出音訊串流中的濾波器係數數量。預設值為 1025。

frequency (頻率),f

設定從中設定幅度和相位的頻率點。這必須是非遞減順序,第一個元素必須為 0,而最後一個元素必須為 1。元素以空格分隔。

幅度,m

frequency 設定的每個頻率點設定幅度值。值的數量必須與頻率點的數量相同。值以空格分隔。

相位,p

frequency 設定的每個頻率點設定相位值。值的數量必須與頻率點的數量相同。值以空格分隔。

sample_rate, r

設定取樣率,預設值為 44100。

nb_samples, n

設定每個影格的樣本數。預設值為 1024。

視窗函數,w

設定視窗函數。預設為 blackman。

30.6 anullsrc

空音訊來源,傳回未處理的音訊影格。它主要用作範本,並用於分析/除錯工具中,或作為忽略輸入資料的濾波器的來源 (例如 sox synth 濾波器)。

將指示來源接受 44100Hz 的平面 16 位元有號立體聲。由於名稱為 "s16p" 的樣本格式對應於數字 6,而 "stereo" 聲道配置對應於值 0x3,因此這等效於

聲道佈局,cl

指定聲道佈局,可以是整數或表示聲道佈局的字串。 channel_layout 的預設值為 "stereo"。

請查看 libavutil/channel_layout.c 中的 channel_layout_map 定義,以了解字串和聲道佈局值之間的對應關係。

sample_rate, r

指定取樣率,預設值為 44100。

nb_samples, n

設定每個請求影格的樣本數。

release

設定來源音訊的持續時間。請參閱 (ffmpeg-utils) ffmpeg-utils(1) 手冊 中的「時間長度」章節,以了解可接受的語法。

如果未指定,或表示的持續時間為負值,則音訊應持續產生。

30.6.1 範例

  • 將取樣率設定為 48000 Hz,並將聲道佈局設定為 AV_CH_LAYOUT_MONO。
    anullsrc=r=48000:cl=4
    
  • 使用更明顯的語法執行相同的操作
    anullsrc=r=48000:cl=mono
    

所有參數都需要明確定義。

30.7 flite

使用 libflite 函式庫合成語音。

若要啟用此濾波器的編譯,您需要使用 --enable-libflite 配置 FFmpeg。

請注意,2.0 之前的 flite 函式庫版本不是執行緒安全的。

通過第一個輸入。

list_voices

若設定為 1,則列出可用語音的名稱並立即退出。預設值為 0。

nb_samples, n

設定每個影格的最大樣本數。預設值為 512。

textfile

設定包含要說出的文字的檔案名稱。

text

設定要說出的文字。

語音,v

設定用於語音合成的語音。預設值為 kal。另請參閱 list_voices 選項。

30.7.1 範例

  • 從檔案 speech.txt 讀取,並使用標準 flite 語音合成文字
    flite=textfile=speech.txt
    
  • 讀取指定的文字,選擇 slt 語音
    flite=text='So fare thee well, poor devil of a Sub-Sub, whose commentator I am':voice=slt
    
  • 將文字輸入到 ffmpeg
    ffmpeg -f lavfi -i flite=text='So fare thee well, poor devil of a Sub-Sub, whose commentator I am':voice=slt
    
  • ffplay 使用 flitelavfi 裝置說出指定的文字
    ffplay -f lavfi flite=text='No more be grieved for which that thou hast done.'
    

如需有關 libflite 的更多資訊,請查看:http://www.festvox.org/flite/

30.8 anoisesrc

產生噪音音訊訊號。

通過第一個輸入。

sample_rate, r

指定取樣率。預設值為 48000 Hz。

振幅,a

指定產生音訊串流的振幅 (0.0 - 1.0)。預設值為 1.0。

release

指定產生音訊串流的持續時間。不指定此選項會產生無限長度的噪音。

色彩,color,c

指定噪音的色彩。可用的噪音色彩包括白色、粉紅色、棕色、藍色、紫色和絲絨色。預設色彩為白色。

種子,s

指定用於播種 PRNG 的值。

nb_samples, n

設定每個輸出影格的樣本數,預設值為 1024。

密度

設定絲絨噪音產生器的密度 (0.0 - 1.0),預設值為 0.05。

30.8.1 範例

  • 產生 60 秒的粉紅噪音,取樣率為 44.1 kHz,振幅為 0.5
    anoisesrc=d=60:c=pink:r=44100:a=0.5
    

30.9 hilbert

產生奇數抽頭希爾伯特轉換 FIR 係數。

產生的串流可以與 afir 濾波器一起使用,將訊號相移 90 度。

這用於許多矩陣編碼方案和分析訊號產生。此過程通常寫為乘以 i(或 j),即虛數單位。

通過第一個輸入。

sample_rate, s

設定取樣率,預設值為 44100。

抽頭,t

設定 FIR 濾波器的長度,預設值為 22051。

nb_samples, n

設定每個影格的樣本數。

視窗函數,w

設定產生 FIR 係數時要使用的視窗函數。

30.10 sinc

產生 sinc kaiser 視窗化低通、高通、帶通或帶拒 FIR 係數。

產生的串流可以與 afir 濾波器一起使用,以濾波音訊訊號。

通過第一個輸入。

sample_rate, r

設定取樣率,預設值為 44100。

nb_samples, n

設定每個影格的樣本數。預設值為 1024。

hp

設定高通頻率。預設值為 0。

lp

設定低通頻率。預設值為 0。如果高通頻率低於低通頻率,且低通頻率高於 0,則濾波器將建立帶通濾波器係數,否則建立帶拒濾波器係數。

phase

設定濾波器相位響應。預設值為 50。允許範圍為 0 到 100。

beta

設定 Kaiser 視窗 beta。

att

設定阻帶衰減。預設值為 120dB,允許範圍為 40 到 180 dB。

round

啟用捨入,預設為停用。

hptaps

設定高通濾波器的抽頭數。

lptaps

設定低通濾波器的抽頭數。

30.11 sine

產生由振幅為 1/8 的正弦波組成的音訊訊號。

音訊訊號是位元精確的。

通過第一個輸入。

frequency (頻率),f

設定載波頻率。預設值為 440 Hz。

beep_factor,b

啟用每秒週期性嗶聲,頻率為 beep_factor 乘以載波頻率。預設值為 0,表示嗶聲已停用。

sample_rate, r

指定取樣率,預設值為 44100。

release

指定產生音訊串流的持續時間。

samples_per_frame

設定每個輸出影格的樣本數。

表達式可以包含以下常數

n

輸出音訊影格的 (循序) 編號,從 0 開始。

pts

輸出音訊影格的 PTS (展示時間戳記),以 TB 單位表示。

t

輸出音訊影格的 PTS,以秒為單位表示。

TB

輸出音訊影格的時間基底。

預設值為 1024

30.11.1 範例

  • 產生簡單的 440 Hz 正弦波
    sine
    
  • 產生 220 Hz 正弦波,每秒發出 880 Hz 嗶聲,持續 5 秒
    sine=220:4:d=5
    sine=f=220:b=4:d=5
    sine=frequency=220:beep_factor=4:duration=5
    
  • 產生遵循 1602,1601,1602,1601,1602 NTSC 模式的 1 kHz 正弦波
    sine=1000:samples_per_frame='st(0,mod(n,5)); 1602-not(not(eq(ld(0),1)+eq(ld(0),3)))'
    

31 音訊接收器

以下是目前可用的音訊接收器的描述。

31.1 abuffersink

緩衝音訊影格,並使其可用於濾波器鏈的末端。

此接收器主要用於程式化使用,特別是透過 libavfilter/buffersink.h 中定義的介面或選項系統。

它接受指向 AVABufferSinkContext 結構的指標,該結構定義傳入緩衝區的格式,作為不透明參數傳遞給 avfilter_init_filter 以進行初始化。

31.2 anullsink

空音訊接收器;完全不處理輸入音訊。它主要用作範本,並用於分析/除錯工具中。

32 視訊濾鏡

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

以下是目前可用的視訊濾波器的描述。

32.1 addroi

標記視訊影格中的感興趣區域。

影格資料會保持不變地傳遞,但中繼資料會附加到影格,指示感興趣區域,這些區域可能會影響後續編碼的行為。可以透過多次應用濾波器來標記多個區域。

x

區域與影格左邊緣的像素距離。

y

區域與影格上邊緣的像素距離。

f

區域寬度 (像素)。

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 表示無論影格其餘部分的處理方式如何,此區域都應以最佳的可能品質編碼 - 也就是說,應以 QP -12 編碼。

clear

若設定為 true,則在新增新區域之前,移除影格上標記的任何現有感興趣區域。

32.1.1 範例

  • 將影格的中心四分之一標記為感興趣。
    addroi=iw/4:ih/4:iw/2:ih/2:-1/10
    
  • 將影格左邊緣的 100 像素寬區域標記為非常不感興趣 (以比影格其餘部分低得多的品質編碼)。
    addroi=0:0:100:ih:+1/5
    

32.2 alphaextract

從輸入中提取 alpha 分量作為灰階視訊。這對於 alphamerge 濾波器尤其有用。

32.3 alphamerge

使用第二個輸入的灰階值新增或取代主要輸入的 alpha 分量。這旨在與 alphaextract 一起使用,以允許傳輸或儲存在不支援 alpha 通道的格式中具有 alpha 的影格序列。

例如,若要從正常的 YUV 編碼視訊和使用 alphaextract 建立的單獨視訊重建完整影格,您可以使用

movie=in_alpha.mkv [alpha]; [in][alpha] alphamerge [out]

32.4 amplify

放大目前像素與相同像素位置中相鄰影格的像素之間的差異。

此濾波器接受以下選項

radius (半徑)

設定影格半徑。預設值為 2。允許範圍為 1 到 63。例如,半徑為 3 將指示濾波器計算 7 個影格的平均值。

factor

設定放大差異的因子。預設值為 2。允許範圍為 0 到 65535。

u

設定差異放大的閾值。任何大於或等於此值的差異將不會改變來源像素。預設值為 10。允許的範圍從 0 到 65535。

tolerance

設定差異放大的容忍度。任何小於此值的差異將不會改變來源像素。預設值為 0。允許的範圍從 0 到 65535。

low

設定變更來源像素的下限。預設值為 65535。允許的範圍從 0 到 65535。此選項控制將減少來源像素值的最大可能值。

high

設定變更來源像素的上限。預設值為 65535。允許的範圍從 0 到 65535。此選項控制將增加來源像素值的最大可能值。

planes

設定要過濾的平面。預設值為全部。允許的範圍從 0 到 15。

32.4.1 指令

此濾鏡支援以下與同名選項相對應的指令

factor
u
tolerance
low
high
planes

32.5 ass

subtitles 濾鏡相同,但它不需要 libavcodec 和 libavformat 才能運作。另一方面,它僅限於 ASS (Advanced Substation Alpha) 字幕檔案。

除了來自 subtitles 濾鏡的通用選項外,此濾鏡還接受以下選項

shaping

設定塑形引擎

可用值為

auto

預設的 libass 塑形引擎,是目前可用的最佳引擎。

simple

快速、與字型無關的塑形器,只能進行替換

complex

較慢的塑形器,使用 OpenType 進行替換和定位

預設值為 auto

32.6 atadenoise

將自適應時間平均降噪器應用於視訊輸入。

通過第一個輸入。

0a

設定第一平面的閾值 A。預設值為 0.02。有效範圍為 0 到 0.3。

0b

設定第一平面的閾值 B。預設值為 0.04。有效範圍為 0 到 5。

1a

設定第二平面的閾值 A。預設值為 0.02。有效範圍為 0 到 0.3。

1b

設定第二平面的閾值 B。預設值為 0.04。有效範圍為 0 到 5。

2a

設定第三平面的閾值 A。預設值為 0.02。有效範圍為 0 到 0.3。

2b

設定第三平面的閾值 B。預設值為 0.04。有效範圍為 0 到 5。

閾值 A 設計用於對輸入訊號的突發變化做出反應,而閾值 B 設計用於對輸入訊號的連續變化做出反應。

s

設定濾鏡將用於平均的影格數。預設值為 9。必須是範圍 [5, 129] 中的奇數。

p

設定濾鏡將用於平均的影格平面。預設值為全部。

a

設定濾鏡將用於平均的演算法變體。預設值為 p 平行。或者可以設定為 s 序列。

平行可能比序列更快,反之則不然。平行會在第一個變化大於閾值時提前中止,而序列將繼續處理影格的另一側,如果它們等於或低於閾值。

0s
1s
2s

設定第一平面、第二平面或第三平面的 sigma 值。預設值為 32767。有效範圍從 0 到 32767。此選項控制由大小定義的半徑內每個像素的權重。預設值表示每個像素具有相同的權重。將此選項設定為 0 會有效地停用過濾。

32.6.1 指令

此濾鏡支援與選項相同的指令,但選項 s 除外。指令接受與相應選項相同的語法。

32.7 avgblur

套用平均模糊濾鏡。

通過第一個輸入。

sizeX

設定水平半徑大小。

planes

設定要過濾的平面。預設情況下,所有平面都會被過濾。

sizeY

設定垂直半徑大小,如果為零,則與 sizeX 相同。預設值為 0

32.7.1 指令

此濾鏡支援與選項相同的指令。指令接受與相應選項相同的語法。

修改音量表達式。指令接受與對應選項相同的語法。

32.8 backgroundkey

將靜態背景轉換為透明。

此濾波器接受以下選項

u

場景變更偵測的閾值。

similarity

與背景的相似度百分比。

blend

設定不相似像素的混合量。

32.8.1 指令

mode

32.9 bbox

計算輸入影格亮度平面中非黑色像素的邊界框。

此濾鏡計算包含所有亮度值大於最小允許值的像素的邊界框。描述邊界框的參數會印在濾鏡日誌上。

此濾波器接受以下選項

min_val

設定最小亮度值。預設值為 16

32.9.1 指令

mode

32.10 bilateral

套用雙邊濾鏡,空間平滑處理同時保留邊緣。

通過第一個輸入。

sigmaS

設定高斯函數的 sigma 值以計算空間權重。允許的範圍從 0 到 512。預設值為 0.1。

sigmaR

設定高斯函數的 sigma 值以計算範圍權重。允許的範圍從 0 到 1。預設值為 0.1。

planes

設定要過濾的平面。預設值為僅第一個。

32.10.1 指令

mode

32.11 bilateral_cuda

CUDA 加速雙邊濾鏡,一種邊緣保留濾鏡。由於使用了 GPU 加速,此濾鏡在數學上是精確的。為了獲得最佳輸出品質,請使用一對一色度子採樣,即 yuv444p 格式。

通過第一個輸入。

sigmaS

設定高斯函數的 sigma 值以計算空間權重,也稱為 sigma 空間。允許的範圍從 0.1 到 512。預設值為 0.1。

sigmaR

設定高斯函數的 sigma 值以計算顏色範圍權重,也稱為 sigma 顏色。允許的範圍從 0.1 到 512。預設值為 0.1。

window_size

設定雙邊函數的視窗大小,以決定要迴圈處理的鄰居數量。如果輸入的數字是偶數,則會自動加一。允許的範圍從 1 到 255。預設值為 1。

32.11.1 範例

  • 在視訊上套用雙邊濾鏡。
    ./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
    

32.12 bitplanenoise

顯示和測量位元平面雜訊。

通過第一個輸入。

bitplane

設定要分析的平面。預設值為 1

filter

從上面設定的 bitplane 中濾除雜訊像素。預設值為停用。

32.13 blackdetect

偵測(幾乎)完全是黑色的視訊間隔。可用於偵測章節轉換、廣告或無效錄製。

濾鏡將其偵測分析輸出到日誌以及影格元數據。如果找到至少指定最短持續時間的黑色片段,則會將包含開始和結束時間戳以及持續時間的行印到日誌中,日誌級別為 info。此外,每個影格都會印出一行日誌,日誌級別為 debug,顯示該影格偵測到的黑色量。

濾鏡還會在黑色片段的第一個影格附加元數據,鍵為 lavfi.black_start,並在黑色片段結束後的第一個影格附加元數據,鍵為 lavfi.black_end。值為影格的時間戳。無論指定的最短持續時間如何,都會新增此元數據。

通過第一個輸入。

black_min_duration, d

設定以秒為單位的最小偵測到的黑色持續時間。它必須是非負浮點數。

預設值為 2.0。

picture_black_ratio_th, pic_th

設定將圖片視為「黑色」的閾值。表示比率的最小值

nb_black_pixels / nb_pixels

圖片被視為黑色的比率。預設值為 0.98。

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。

以下範例將最大像素閾值設定為最小值,並且僅偵測 2 秒或更長時間的黑色間隔

blackdetect=d=2:pix_th=0.00

32.14 blackframe

偵測(幾乎)完全是黑色的影格。可用於偵測章節轉換或廣告。輸出線包含偵測到的影格的影格編號、黑色百分比、檔案中的位置(如果已知)或 -1 以及以秒為單位的時間戳。

為了顯示輸出線,您需要將日誌級別至少設定為 AV_LOG_INFO 值。

此濾鏡匯出影格元數據 lavfi.blackframe.pblack。該值表示圖片中低於閾值的像素百分比。

它接受以下參數

amount

必須低於閾值的像素百分比;預設值為 98

threshold, thresh

像素值被視為黑色的閾值;預設值為 32

32.15 blend

將兩個視訊影格混合在一起。

blend 濾鏡接受兩個輸入流並輸出一個流,第一個輸入是「頂層」,第二個輸入是「底層」。預設情況下,當最長的輸入終止時,輸出終止。

tblend(時間混合)濾鏡從單一流中取得兩個連續的影格,並輸出通過將新影格混合在舊影格之上而獲得的結果。

以下是接受選項的描述。

c0_mode
c1_mode
c2_mode
c3_mode
all_mode

設定特定像素組件或所有像素組件(在 all_mode 的情況下)的混合模式。預設值為 normal

組件模式的可用值為

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

設定特定像素組件或所有像素組件(在 all_opacity 的情況下)的混合不透明度。僅與像素組件混合模式結合使用。

c0_expr
c1_expr
c2_expr
c3_expr
all_expr

設定特定像素組件或所有像素組件(在 all_expr 的情況下)的混合表達式。請注意,如果設定了相關的模式選項,則會忽略這些選項。

表達式可以使用以下變數

N

已過濾影格的序號,從 0 開始。

X
Y

目前樣本的座標

W
H

目前過濾平面的寬度和高度

SW
SH

正在過濾的平面的寬度和高度比例。它是目前平面尺寸與亮度平面尺寸的比率,例如,對於 yuv420p 影格,亮度平面的值為 1,1,色度平面的值為 0.5,0.5

T

目前影格的時間,以秒為單位表示。

TOP, A

第一個視訊影格(頂層)目前位置的像素組件值。

BOTTOM, B

第二個視訊影格(底層)目前位置的像素組件值。

blend 濾鏡也支援 framesync 選項。

32.15.1 範例

  • 在前 10 秒內套用從底層到頂層的過渡
    blend=all_expr='A*(if(gte(T,10),1,T/10))+B*(1-(if(gte(T,10),1,T/10)))'
    
  • 套用從頂層到基層的線性水平過渡
    blend=all_expr='A*(X/W)+B*(1-X/W)'
    
  • 套用 1x1 棋盤格效果
    blend=all_expr='if(eq(mod(X,2),mod(Y,2)),A,B)'
    
  • 套用向左揭露效果
    blend=all_expr='if(gte(N*SW+X,W),A,B)'
    
  • 套用向下揭露效果
    blend=all_expr='if(gte(Y-N*SH,0),A,B)'
    
  • 套用向上向左揭露效果
    blend=all_expr='if(gte(T*SH*40+Y,H)*gte((T*40*SW+X)*W/H,W),A,B)'
    
  • 對角分割視訊並在每一側顯示頂層和底層
    blend=all_expr='if(gt(X,Y*(W/H)),A,B)'
    
  • 顯示目前影格與前一個影格之間的差異
    tblend=all_mode=grainextract
    

32.15.2 指令

此濾鏡支援與選項相同的指令

32.16 blockdetect

確定影格的塊狀感,而不改變輸入影格。

基於 Remco Muijs 和 Ihor Kirenko 的著作:「用於自適應視訊處理的無參考塊狀偽影測量。」2005 年第 13 屆歐洲訊號處理會議。

通過第一個輸入。

period_min
period_max

設定用於確定像素網格(週期)的最小值和最大值。預設值為 [3,24]。

planes

設定要過濾的平面。預設值為僅第一個。

32.16.1 範例

  • 確定第一平面的塊狀感,並在 [8,32] 範圍內搜尋週期
    blockdetect=period_min=8:period_max=32:planes=1
    

32.17 blurdetect

確定影格的模糊度,而不改變輸入影格。

基於 Marziliano、Pina 等人的著作。「無參考感知模糊度量。」允許基於區塊的縮寫。

通過第一個輸入。

low
high

設定 Canny 閾值演算法使用的低閾值和高閾值。

高閾值選擇「強」邊緣像素,然後通過 8 連通性與低閾值選擇的「弱」邊緣像素連接。

lowhigh 閾值必須在 [0,1] 範圍內選擇,並且 low 應小於或等於 high

low 的預設值為 20/255high 的預設值為 50/255

radius (半徑)

定義在邊緣像素周圍搜尋局部最大值的半徑。

block_pct

僅針對最重要的區塊(以百分比表示)確定模糊度。

block_width

針對寬度為 block_width 的區塊確定模糊度。如果設定為小於 1 的任何值,則不使用區塊,並且無論 block_height 如何,整個影像都將作為一個區塊處理。

block_height

針對高度為 block_height 的區塊確定模糊度。如果設定為小於 1 的任何值,則不使用區塊,並且無論 block_width 如何,整個影像都將作為一個區塊處理。

planes

設定要過濾的平面。預設值為僅第一個。

32.17.1 範例

  • 針對 80% 最重要的 32x32 區塊確定模糊度
    blurdetect=block_width=32:block_height=32:block_pct=80
    

32.18 bm3d

使用 Block-Matching 3D 演算法對影格進行降噪。

濾鏡接受以下選項。

sigma

設定降噪強度。預設值為 1。允許的範圍從 0 到 999.9。降噪演算法對 sigma 非常敏感,因此請根據來源調整它。

block

設定局部色塊大小。這會在 2D 中設定尺寸。

bstep

設定處理色塊的滑動步長。預設值為 4。允許的範圍從 1 到 64。較小的值允許處理更多參考色塊,但速度較慢。

group

設定 3D 的最大相似色塊數。預設值為 1。當設定為 1 時,不進行色塊比對。較大的值允許單個群組中包含更多色塊。允許的範圍從 1 到 256。

range

設定搜尋色塊比對的半徑。預設值為 9。允許的範圍從 1 到 INT32_MAX。

mstep

設定色塊比對的兩個搜尋位置之間的步長。預設值為 1。允許的範圍從 1 到 64。較小的值速度較慢。

thmse

設定色塊比對的均方誤差閾值。有效範圍為 0 到 INT32_MAX。

hdthr

設定 3D 轉換域中硬閾值處理的閾值參數。較大的值會導致頻域中更強的硬閾值濾波。

estim

設定濾波估計模式。可以是 basicfinal。預設值為 basic

ref

如果啟用,濾鏡將使用第二個流進行色塊比對。對於 estim 選項的 basic 值,預設為停用,如果 estim 的值為 final,則始終啟用。

planes

設定要過濾的平面。預設為除了 alpha 平面以外的所有可用平面。

32.18.1 範例

  • 使用 bm3d 的基本濾波
    bm3d=sigma=3:block=4:bstep=2:group=1:estim=basic
    
  • 與上述相同,但僅過濾亮度 (luma)
    bm3d=sigma=3:block=4:bstep=2:group=1:estim=basic:planes=1
    
  • 與上述相同,但使用兩種估計模式
    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
    
  • 與上述相同,但改用 nlmeans 濾波器進行預先過濾
    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
    

32.19 boxblur

將盒狀模糊 (boxblur) 演算法應用於輸入視訊。

它接受以下參數

亮度半徑,lr
亮度強度,lp
彩度半徑,cr
彩度強度,cp
Alpha 半徑,ar
Alpha 強度,ap

以下是接受選項的描述。

亮度半徑,lr
彩度半徑,cr
Alpha 半徑,ar

設定用於模糊對應輸入平面的盒狀半徑的表達式 (以像素為單位)。

半徑值必須是非負數,且對於亮度 (luma) 和 alpha 平面,不得大於表達式 min(w,h)/2 的值;對於彩度 (chroma) 平面,不得大於 min(cw,ch)/2 的值。

luma_radius 的預設值為 "2"。如果未指定,chroma_radiusalpha_radius 預設為為 luma_radius 設定的對應值。

表達式可以包含以下常數

f
h

輸入寬度和高度 (以像素為單位)。

cw
ch

輸入彩度影像寬度和高度 (以像素為單位)。

hsub
vsub

水平和垂直彩度子採樣值。例如,對於像素格式 "yuv422p",hsub 為 2,vsub 為 1。

亮度強度,lp
彩度強度,cp
Alpha 強度,ap

指定將盒狀模糊濾波器應用於對應平面的次數。

luma_power 的預設值為 2。如果未指定,chroma_poweralpha_power 預設為為 luma_power 設定的對應值。

值為 0 將停用效果。

32.19.1 範例

  • 套用盒狀模糊濾波器,亮度、彩度和 alpha 半徑均設定為 2
    boxblur=luma_radius=2:luma_power=1
    boxblur=2:1
    
  • 將亮度半徑設定為 2,alpha 和彩度半徑設定為 0
    boxblur=2:1:cr=0:ar=0
    
  • 將亮度和彩度半徑設定為視訊尺寸的一部分
    boxblur=luma_radius=min(h\,w)/10:luma_power=1:chroma_radius=min(cw\,ch)/10:chroma_power=1
    

32.20 bwdif

對輸入視訊進行去交錯處理 ("bwdif" 代表 "Bob Weaver Deinterlacing Filter")。

基於 yadif 的運動自適應去交錯,使用 w3fdif 和立方插值演算法。它接受以下參數

o

要採用的交錯模式。它接受以下其中一個值

0, send_frame

每個影格輸出一個影格。

1, send_field

每個場 (field) 輸出一個影格。

預設值為 send_field

parity

為輸入交錯視訊假設的圖像場奇偶性。它接受以下其中一個值

0, tff

假設頂場優先。

1, bff

假設底場優先。

-1, auto

啟用自動偵測場奇偶性。

預設值為 auto。如果交錯方式未知,或解碼器未匯出此資訊,則將假設為頂場優先。

deint

指定要對哪些影格進行去交錯處理。接受以下其中一個值

0, all

對所有影格進行去交錯處理。

1, interlaced

僅對標記為交錯的影格進行去交錯處理。

預設值為 all

32.21 bwdif_cuda

使用 bwdif 演算法對輸入視訊進行去交錯處理,但以 CUDA 實作,使其可以作為 GPU 加速管線的一部分與 nvdec 和/或 nvenc 一起運作。

它接受以下參數

o

要採用的交錯模式。它接受以下其中一個值

0, send_frame

每個影格輸出一個影格。

1, send_field

每個場 (field) 輸出一個影格。

預設值為 send_field

parity

為輸入交錯視訊假設的圖像場奇偶性。它接受以下其中一個值

0, tff

假設頂場優先。

1, bff

假設底場優先。

-1, auto

啟用自動偵測場奇偶性。

預設值為 auto。如果交錯方式未知,或解碼器未匯出此資訊,則將假設為頂場優先。

deint

指定要對哪些影格進行去交錯處理。接受以下其中一個值

0, all

對所有影格進行去交錯處理。

1, interlaced

僅對標記為交錯的影格進行去交錯處理。

預設值為 all

32.22 ccrepack

重新封裝 CEA-708 封閉字幕側資料

此濾波器修正了商業編碼器中看到的與上游格式錯誤的 CEA-708 酬載相關的各種問題,特別是元組數量不正確 (目標 FPS 的 cc_count 錯誤) 以及元組順序不正確 (即 CEA-608 元組不在酬載中的第一個條目)。

32.23 cas

將對比度自適應銳化濾波器應用於視訊串流。

通過第一個輸入。

強度 (strength)

設定銳化強度。預設值為 0。

planes

設定要過濾的平面。預設值為過濾除了 alpha 平面以外的所有平面。

32.23.1 指令

此濾鏡支援與選項相同的指令

32.24 chromahold

移除除了特定顏色以外的所有顏色的所有色彩資訊。

通過第一個輸入。

顏色

將不會被中性彩度取代的顏色。

similarity

與上述顏色的相似度百分比。0.01 僅匹配完全相同的關鍵顏色,而 1.0 匹配所有顏色。

blend

混合百分比。0.0 使像素完全變成灰色,或完全不變成灰色。較高的值會導致保留更多顏色。

yuv

表示傳遞的顏色已經是 YUV 而不是 RGB。

啟用此選項後,像 "green" 或 "red" 這樣的文字顏色就沒有意義了。這可以用於以十六進位數字傳遞精確的 YUV 值。

32.24.1 指令

此濾波器支援與選項相同的 命令。該命令接受與對應選項相同的語法。

修改音量表達式。指令接受與對應選項相同的語法。

32.25 chromakey

YUV 色彩空間色彩/彩度去背。

通過第一個輸入。

顏色

將被透明度取代的顏色。

similarity

與關鍵顏色的相似度百分比。

0.01 僅匹配完全相同的關鍵顏色,而 1.0 匹配所有顏色。

blend

混合百分比。

0.0 使像素完全透明,或完全不透明。

較高的值會產生半透明像素,像素顏色與關鍵顏色越相似,透明度越高。

yuv

表示傳遞的顏色已經是 YUV 而不是 RGB。

啟用此選項後,像 "green" 或 "red" 這樣的文字顏色就沒有意義了。這可以用於以十六進位數字傳遞精確的 YUV 值。

32.25.1 指令

此濾波器支援與選項相同的 命令。該命令接受與對應選項相同的語法。

修改音量表達式。指令接受與對應選項相同的語法。

32.25.2 範例

  • 使輸入影像中的每個綠色像素都變成透明
    ffmpeg -i input.png -vf chromakey=green out.png
    
  • 在靜態黑色背景之上疊加綠幕視訊。
    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
    

32.26 chromakey_cuda

CUDA 加速的 YUV 色彩空間色彩/彩度去背。

此濾波器的工作方式與普通彩度去背濾波器類似,但在 CUDA 影格上運作。有關更多詳細資訊和參數,請參閱 chromakey

32.26.1 範例

  • 使輸入視訊中的所有綠色像素都變成透明,並將其用作另一個視訊的覆疊
    ./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
    
  • 處理兩個軟體來源,顯式上傳影格
    ./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
    

32.27 chromanr

減少彩度雜訊。

通過第一個輸入。

thres

設定平均彩度值的閾值。當前像素和相鄰像素的 Y、U 和 V 像素分量的絕對差之和低於此閾值時,將用於平均。亮度 (Luma) 分量保持不變,並複製到輸出。預設值為 30。允許範圍為 1 到 200。

sizew

設定用於平均的矩形的水平半徑。允許範圍為 1 到 100。預設值為 5。

sizeh

設定用於平均的矩形的垂直半徑。允許範圍為 1 到 100。預設值為 5。

stepw

設定平均時的水平步進。預設值為 1。允許範圍為 1 到 50。主要用於加速濾波。

steph

設定平均時的垂直步進。預設值為 1。允許範圍為 1 到 50。主要用於加速濾波。

threy

設定平均彩度值的 Y 閾值。為當前像素和相鄰像素的 Y 分量之間的最大允許差異設定更精細的控制。預設值為 200。允許範圍為 1 到 200。

threu

設定平均彩度值的 U 閾值。為當前像素和相鄰像素的 U 分量之間的最大允許差異設定更精細的控制。預設值為 200。允許範圍為 1 到 200。

threv

設定平均彩度值的 V 閾值。為當前像素和相鄰像素的 V 分量之間的最大允許差異設定更精細的控制。預設值為 200。允許範圍為 1 到 200。

distance

設定計算中使用的距離類型。

manhattan

絕對差。

euclidean

平方差。

預設距離類型為 manhattan。

32.27.1 指令

此濾波器支援與選項相同的 命令。該命令接受與對應選項相同的語法。

32.28 chromashift

水平和/或垂直移動彩度像素。

通過第一個輸入。

cbh

設定水平移動色度藍 (chroma-blue) 的量。

cbv

設定垂直移動色度藍 (chroma-blue) 的量。

crh

設定水平移動色度紅 (chroma-red) 的量。

crv

設定垂直移動色度紅 (chroma-red) 的量。

edge

設定邊緣模式,可以是 smear (預設) 或 warp

32.28.1 指令

mode

32.29 ciescope

顯示 CIE 色度圖,像素疊加在其上。

通過第一個輸入。

system

設定色彩系統。

ntsc, 470m
ebu, 470bg
smpte
240m
apple
widergb
cie1931
rec709, hdtv
uhdtv, rec2020
dcip3
cie

設定 CIE 系統。

xyy
ucs
luv
gamuts

設定要繪製的色域。

請參閱 system 選項以取得可用值。

size, s

設定色度圖 (ciescope) 大小,預設設定為 512。

intensity, i

設定用於將輸入像素值映射到 CIE 圖的強度。

threshold

設定用於繪製超出活動色彩系統色域的舌狀顏色的對比度。

corrgamma

校正色度圖上顯示的 Gamma 值,預設為啟用。

showwhite

在 CIE 圖上顯示白點,預設為停用。

gamma

設定輸入 Gamma 值。僅適用於 XYZ 輸入色彩空間。

fill

填充 CIE 顏色。預設為啟用。

32.30 codecview

視覺化某些編碼器匯出的資訊。

某些編碼器可以使用側資料或其他方式透過影格匯出資訊。例如,某些基於 MPEG 的編碼器透過編碼器 flags2 選項中的 export_mvs 標誌匯出運動向量。

此濾波器接受以下選項

block

使用亮度 (luma) 平面顯示區塊分割結構。

mv

設定要視覺化的運動向量。

mv 的可用標誌為

pf

P 影格的前向預測 MV

bf

B 影格的前向預測 MV

bb

B 影格的後向預測 MV

qp

使用彩度 (chroma) 平面顯示量化參數。

mv_type, mvt

設定要視覺化的運動向量類型。除非由 frame_type 選項指定,否則包含來自所有影格的 MV。

mv_type 的可用標誌為

fp

前向預測 MV

bp

後向預測 MV

frame_type, ft

設定要視覺化其運動向量的影格類型。

frame_type 的可用標誌為

if

幀內編碼影格 (I 影格)

pf

預測影格 (P 影格)

bf

雙向預測影格 (B 影格)

32.30.1 範例

  • 使用 ffplay 視覺化所有影格的前向預測 MV
    ffplay -flags2 +export_mvs input.mp4 -vf codecview=mv_type=fp
    
  • 使用 ffplay 視覺化 P 和 B 影格的多方向 MV
    ffplay -flags2 +export_mvs input.mp4 -vf codecview=mv=pf+bf+bb
    

32.31 colorbalance

修改輸入影格的原色 (紅色、綠色和藍色) 強度。

此濾波器允許在陰影、中間調或高光區域調整輸入影格的紅-青、綠-洋紅或藍-黃平衡。

正調整值將平衡向原色移動,負值向互補色移動。

通過第一個輸入。

rs
gs
bs

調整紅色、綠色和藍色陰影 (最暗像素)。

rm
gm
bm

調整紅色、綠色和藍色中間調 (中等像素)。

rh
gh
bh

調整紅色、綠色和藍色高光 (最亮像素)。

選項的允許範圍為 [-1.0, 1.0]。預設值為 0

pl

在更改色彩平衡時保留亮度。預設為停用。

32.31.1 範例

  • 為陰影添加紅色色偏
    colorbalance=rs=.3
    

32.31.2 指令

mode

32.32 colorcontrast

調整 RGB 分量之間的色彩對比度。

通過第一個輸入。

rc

設定紅-青對比度。預設值為 0.0。允許範圍為 -1.0 到 1.0。

gm

設定綠-洋紅對比度。預設值為 0.0。允許範圍為 -1.0 到 1.0。

by

設定藍-黃對比度。預設值為 0.0。允許範圍為 -1.0 到 1.0。

rcw
gmw
byw

設定每個 rcgmby 選項值的權重。預設值為 0.0。允許範圍為 0.0 到 1.0。如果所有權重均為 0.0,則停用濾波。

pl

設定保留亮度的量。預設值為 0.0。允許範圍為 0.0 到 1.0。

32.32.1 指令

mode

32.33 colorcorrect

選擇性地為黑色和白色調整色彩白平衡。此濾波器在 YUV 色彩空間中運作。

通過第一個輸入。

rl

設定紅色陰影點。允許範圍為 -1.0 到 1.0。預設值為 0。

bl

設定藍色陰影點。允許範圍為 -1.0 到 1.0。預設值為 0。

rh

設定紅色高光點。允許範圍為 -1.0 到 1.0。預設值為 0。

bh

設定藍色高光點。允許範圍為 -1.0 到 1.0。預設值為 0。

saturation

設定飽和度量。允許範圍為 -3.0 到 3.0。預設值為 1。

analyze

如果設定為 manual 以外的任何值,它將分析每個影格,並使用導出的參數來濾波輸出影格。

可能的值為

manual
average
minmax
median

預設值為 manual

32.33.1 指令

mode

32.34 colorchannelmixer

透過重新混合色彩通道來調整視訊輸入影格。

此濾波器透過添加與相同像素的其他通道關聯的值來修改色彩通道。例如,如果要修改的值為紅色,則輸出值將為

red=red*rr + blue*rb + green*rg + alpha*ra

通過第一個輸入。

rr
rg
rb
ra

調整輸入紅色、綠色、藍色和 alpha 通道對於輸出紅色通道的貢獻。對於 rr,預設值為 1,對於 rgrbra,預設值為 0

gr
gg
gb
ga

調整輸入紅色、綠色、藍色和 alpha 通道對於輸出綠色通道的貢獻。對於 gg,預設值為 1,對於 grgbga,預設值為 0

br
bg
bb
ba

調整輸入紅色、綠色、藍色和 alpha 通道對於輸出藍色通道的貢獻。對於 bb,預設值為 1,對於 brbgba,預設值為 0

ar
ag
ab
aa

調整輸入紅色、綠色、藍色和 alpha 通道對於輸出 alpha 通道的貢獻。對於 aa,預設值為 1,對於 aragab,預設值為 0

選項的允許範圍為 [-2.0, 2.0]

pc

設定保留色彩模式。接受的值為

none

停用色彩保留,這是預設值。

lum

保留亮度 (luminance)。

max

保留 RGB 三元組的最大值。

avg

保留 RGB 三元組的平均值。

sum

保留 RGB 三元組的總和值。

nrm

保留 RGB 三元組的標準化值。

pwr

保留 RGB 三元組的冪值。

pa

設定更改顏色時的色彩保留量。允許範圍為 [0.0, 1.0]。預設值為 0.0,因此停用。

32.34.1 範例

  • 將來源轉換為灰階
    colorchannelmixer=.3:.4:.3:0:.3:.4:.3:0:.3:.4:.3
    
  • 模擬棕褐色調
    colorchannelmixer=.393:.769:.189:0:.349:.686:.168:0:.272:.534:.131
    

32.34.2 指令

mode

32.35 colorize

在視訊串流上覆蓋純色。

通過第一個輸入。

hue

設定色彩色相。允許範圍為 0 到 360。預設值為 0。

saturation

設定色彩飽和度。允許範圍為 0 到 1。預設值為 0.5。

lightness

設定色彩明度。允許範圍為 0 到 1。預設值為 0.5。

level_in

設定來源明度的混合。預設設定為 1.0。允許範圍為 0.0 到 1.0。

32.35.1 指令

mode

32.36 colorkey

RGB 色彩空間色彩去背。此濾波器透過將每個像素的 alpha 分量設定為 0,在 8 位元 RGB 格式影格上運作,這些像素落在關鍵顏色的相似度半徑內。相似度半徑之外的像素的 alpha 值取決於 blend 選項的值。

通過第一個輸入。

顏色

設定將 alpha 設定為 0 (完全透明) 的顏色。請參閱 ffmpeg-utils 手冊中的「顏色」章節。預設值為 black

similarity

設定距關鍵顏色的半徑,在此半徑內的其他顏色也具有完全透明度。計算出的距離與關鍵顏色和像素顏色的 RGB 值之間 3D 空間中的單位分數距離有關。範圍為 0.01 到 1.0。0.01 匹配完全相同的關鍵顏色周圍非常小的半徑內的顏色,而 1.0 匹配所有顏色。預設值為 0.01

blend

設定如何計算落在相似度半徑之外的像素的 alpha 值。0.0 使像素完全透明或完全不透明。較高的值會產生半透明像素,像素顏色與關鍵顏色越相似,透明度越高。範圍為 0.0 到 1.0。預設值為 0.0

32.36.1 範例

  • 使輸入影像中的每個綠色像素都變成透明
    ffmpeg -i input.png -vf colorkey=green out.png
    
  • 在靜態背景影像之上疊加綠幕視訊。
    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
    

32.36.2 指令

此濾波器支援與選項相同的 命令。該命令接受與對應選項相同的語法。

修改音量表達式。指令接受與對應選項相同的語法。

32.37 colorhold

移除除了特定顏色以外的所有 RGB 顏色的所有色彩資訊。

通過第一個輸入。

顏色

將不會被中性灰色取代的顏色。

similarity

與上述顏色的相似度百分比。0.01 僅匹配完全相同的關鍵顏色,而 1.0 匹配所有顏色。

blend

混合百分比。 0.0 會使像素完全變成灰色。 數值越高,保留的色彩越多。

32.37.1 指令

此濾波器支援與選項相同的 命令。該命令接受與對應選項相同的語法。

修改音量表達式。指令接受與對應選項相同的語法。

32.38 colorlevels

使用色階調整視訊輸入影格。

通過第一個輸入。

rimin
gimin
bimin
aimin

調整紅色、綠色、藍色和 Alpha 輸入黑點。 選項的允許範圍為 [-1.0, 1.0]。 預設值為 0

rimax
gimax
bimax
aimax

調整紅色、綠色、藍色和 Alpha 輸入白點。 選項的允許範圍為 [-1.0, 1.0]。 預設值為 1

輸入色階用於提亮高光 (亮色調)、加深陰影 (暗色調)、變更亮暗色調的平衡。

romin
gomin
bomin
aomin

調整紅色、綠色、藍色和 Alpha 輸出黑點。 選項的允許範圍為 [0, 1.0]。 預設值為 0

romax
gomax
bomax
aomax

調整紅色、綠色、藍色和 Alpha 輸出白點。 選項的允許範圍為 [0, 1.0]。 預設值為 1

輸出色階允許手動選擇受限的輸出色階範圍。

preserve

設定保留色彩模式。接受的值為

none

停用色彩保留,這是預設值。

lum

保留亮度 (luminance)。

max

保留 RGB 三元組的最大值。

avg

保留 RGB 三元組的平均值。

sum

保留 RGB 三元組的總和值。

nrm

保留 RGB 三元組的標準化值。

pwr

保留 RGB 三元組的冪值。

32.38.1 範例

  • 使視訊輸出變暗
    colorlevels=rimin=0.058:gimin=0.058:bimin=0.058
    
  • 增加對比度
    colorlevels=rimin=0.039:gimin=0.039:bimin=0.039:rimax=0.96:gimax=0.96:bimax=0.96
    
  • 使視訊輸出變亮
    colorlevels=rimax=0.902:gimax=0.902:bimax=0.902
    
  • 增加亮度
    colorlevels=romin=0.5:gomin=0.5:bomin=0.5
    

32.38.2 指令

mode

32.39 colormap

將自訂色彩對應套用至視訊串流。

此濾鏡需要三個輸入視訊串流。 第一個串流是要濾除的視訊串流。 第二個和第三個視訊串流指定來源色彩到目標色彩的對應色塊。

通過第一個輸入。

patch_size

設定來源和目標視訊串流色塊大小 (以像素為單位)。

nb_patches

設定來源和目標視訊串流中使用的最大色塊數量。 預設值為額外視訊串流中可用的色塊數量。 允許的最大色塊數量為 64

type

設定用於目標色彩的調整。 可以是 relativeabsolute。 預設值為 absolute

kernel

設定用於測量對應色彩之間色彩差異的核心。

可接受的值為

euclidean
weuclidean

預設值為 euclidean

32.40 colormatrix

轉換色彩矩陣。

通過第一個輸入。

src
dst

指定來源和目的地色彩矩陣。 兩個值都必須指定。

可接受的值為

bt709

BT.709

fcc

FCC

bt601

BT.601

bt470

BT.470

bt470bg

BT.470BG

smpte170m

SMPTE-170M

smpte240m

SMPTE-240M

bt2020

BT.2020

例如,若要從 BT.601 轉換為 SMPTE-240M,請使用命令

colormatrix=bt601:smpte240m

32.41 colorspace

轉換色彩空間、傳輸特性或色彩原色。 輸入視訊需要具有偶數大小。

通過第一個輸入。

all

一次指定所有色彩屬性。

可接受的值為

bt470m

BT.470M

bt470bg

BT.470BG

bt601-6-525

BT.601-6 525

bt601-6-625

BT.601-6 625

bt709

BT.709

smpte170m

SMPTE-170M

smpte240m

SMPTE-240M

bt2020

BT.2020

space

指定輸出色彩空間。

可接受的值為

bt709

BT.709

fcc

FCC

bt470bg

BT.470BG 或 BT.601-6 625

smpte170m

SMPTE-170M 或 BT.601-6 525

smpte240m

SMPTE-240M

ycgco

YCgCo

bt2020ncl

BT.2020 (非恆定亮度)

trc

指定輸出傳輸特性。

可接受的值為

bt709

BT.709

bt470m

BT.470M

bt470bg

BT.470BG

gamma22

2.2 的恆定 Gamma

gamma28

2.8 的恆定 Gamma

smpte170m

SMPTE-170M、BT.601-6 625 或 BT.601-6 525

smpte240m

SMPTE-240M

srgb

SRGB

iec61966-2-1

iec61966-2-1

iec61966-2-4

iec61966-2-4

xvycc

xvycc

bt2020-10

BT.2020 (適用於 10 位元內容)

bt2020-12

BT.2020 (適用於 12 位元內容)

primaries

指定輸出色彩原色。

可接受的值為

bt709

BT.709

bt470m

BT.470M

bt470bg

BT.470BG 或 BT.601-6 625

smpte170m

SMPTE-170M 或 BT.601-6 525

smpte240m

SMPTE-240M

film

film

smpte431

SMPTE-431

smpte432

SMPTE-432

bt2020

BT.2020

jedec-p22

JEDEC P22 螢光粉

range

指定輸出色彩範圍。

可接受的值為

tv

TV (受限) 範圍

mpeg

MPEG (受限) 範圍

pc

PC (完整) 範圍

jpeg

JPEG (完整) 範圍

format

指定輸出色彩格式。

可接受的值為

yuv420p

YUV 4:2:0 平面 8 位元

yuv420p10

YUV 4:2:0 平面 10 位元

yuv420p12

YUV 4:2:0 平面 12 位元

yuv422p

YUV 4:2:2 平面 8 位元

yuv422p10

YUV 4:2:2 平面 10 位元

yuv422p12

YUV 4:2:2 平面 12 位元

yuv444p

YUV 4:4:4 平面 8 位元

yuv444p10

YUV 4:4:4 平面 10 位元

yuv444p12

YUV 4:4:4 平面 12 位元

fast

執行快速轉換,這會跳過 Gamma/原色校正。 這會大幅減少 CPU 使用量,但在數學上不正確。 若要取得與 colormatrix 濾鏡產生的輸出相容的輸出,請使用 fast=1。

dither

指定顫色模式。

可接受的值為

none

無顫色

fsb

Floyd-Steinberg 顫色

wpadapt

白點適應模式。

可接受的值為

bradford

Bradford 白點適應

vonkries

von Kries 白點適應

identity

識別白點適應 (即無白點適應)

iall

一次覆寫所有輸入屬性。 接受的值與 all 相同。

ispace

覆寫輸入色彩空間。 接受的值與 space 相同。

iprimaries

覆寫輸入色彩原色。 接受的值與 primaries 相同。

itrc

覆寫輸入傳輸特性。 接受的值與 trc 相同。

irange

覆寫輸入色彩範圍。 接受的值與 range 相同。

濾鏡會將傳輸特性、色彩空間和色彩原色轉換為指定的使用者值。 如果未指定輸出值,則會根據 "all" 屬性設定為預設值。 如果該屬性也未指定,則濾鏡會記錄錯誤。 輸出色彩範圍和格式預設為與輸入色彩範圍和格式相同的值。 輸入資料應設定輸入傳輸特性、色彩空間、色彩原色和色彩範圍。 如果遺失任何一項,濾鏡會記錄錯誤,且不會進行任何轉換。

例如,若要將輸入轉換為 SMPTE-240M,請使用命令

colorspace=smpte240m

32.42 colorspace_cuda

colorspace 濾鏡的 CUDA 加速實作。

與軟體 colorspace 濾鏡相比,它絕非功能完整,且目前僅支援 jpeg/完整範圍和 mpeg/受限範圍之間的色彩範圍轉換。

通過第一個輸入。

range

指定輸出色彩範圍。

可接受的值為

tv

TV (受限) 範圍

mpeg

MPEG (受限) 範圍

pc

PC (完整) 範圍

jpeg

JPEG (完整) 範圍

32.43 colortemperature

調整視訊中的色溫,以模擬環境色溫的變化。

通過第一個輸入。

temperature

以克耳文設定溫度。 允許的範圍為 1000 到 40000。 預設值為 6500 K。

level_in

設定與濾鏡輸出的混合。 允許的範圍為 0 到 1。 預設值為 1。

pl

設定保留亮度的量。 允許的範圍為 0 到 1。 預設值為 0。

32.43.1 指令

此濾鏡支援與選項相同的指令

32.44 convolution

套用 3x3、5x5、7x7 或水平/垂直 (最多 49 個元素) 的卷積。

通過第一個輸入。

0m
1m
2m
3m

為每個平面設定矩陣。 矩陣是在 square 模式中包含 9、25 或 49 個帶正負號整數的序列,以及在 row 模式中包含 1 到 49 個奇數個帶正負號整數的序列。

0rdiv
1rdiv
2rdiv
3rdiv

為每個平面的計算值設定乘數。 如果未設定或為 0,則為 1/所有矩陣元素總和。

0bias
1bias
2bias
3bias

為每個平面設定偏移。 此值會新增至乘法結果。 適用於使整體影像更亮或更暗。 預設值為 0.0。

0mode
1mode
2mode
3mode

為每個平面設定矩陣模式。 可以是 squarerowcolumn。 預設值為 square

32.44.1 指令

mode

32.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"
    

32.45 convolve

使用第二個串流作為脈衝,在頻域中套用視訊串流的 2D 卷積。

通過第一個輸入。

planes

設定要處理的平面。

impulse

設定將處理哪些脈衝視訊影格,可以是 firstall。 預設值為 all

convolve 濾鏡也支援 framesync 選項。

32.46 copy

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

32.47 coreimage

在 GPU 上使用 Apple 的 CoreImage API 在 OSX 上進行視訊濾鏡處理。

硬體加速是基於 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 視訊來源可用於產生直接饋送到濾鏡鏈中的輸入影像。 透過使用它,不需要透過另一個視訊來源或輸入視訊來提供輸入影像。

32.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
    

32.48 corr

取得兩個輸入視訊之間的相關性。

此濾鏡採用兩個輸入視訊。

為了使此濾鏡正常運作,兩個輸入視訊都必須具有相同的解析度和像素格式。 此外,它假設兩個輸入具有相同的影格數,這些影格會逐一比較。

取得的每個元件、平均值、最小值和最大值相關性會透過記錄系統列印。

濾鏡會將每個影格的計算相關性儲存在影格中繼資料中。

此濾鏡也支援 framesync 選項。

在以下範例中,正在處理的輸入檔案 main.mpg 會與參考檔案 ref.mpg 進行比較。

ffmpeg -i main.mpg -i ref.mpg -lavfi corr -f null -

32.49 cover_rect

覆蓋矩形物件

它接受以下選項

cover

選用封面影像的檔案路徑,需要為 yuv420 格式。

o

設定覆蓋模式。

它接受以下值:

cover

使用提供的影像覆蓋它

blur

透過內插周圍像素來覆蓋它

預設值為 blur

32.49.1 範例

  • 使用 ffmpeg 透過給定視訊的提供影像來覆蓋矩形物件
    ffmpeg -i file.ts -vf find_rect=newref.pgm,cover_rect=cover.jpg:mode=cover new.mkv
    

32.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 開始。

影格中樣本數

drawtext=text='This is a text with a \\' character and a \\: character'

t

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

out_w 的表達式可能取決於 out_h 的值,而 out_h 的表達式可能取決於 out_w,但它們不能取決於 xy,因為 xy 是在 out_wout_h 評估之後才評估的。

xy 參數指定輸出(未裁剪)區域左上角位置的表達式。它們會針對每個影格進行評估。如果評估值無效,則會近似為最接近的有效值。

x 的表達式可能取決於 y,而 y 的表達式可能取決於 x

32.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)
    
  • 設定 x 取決於 y 的值
    crop=in_w/2:in_h/2:y:10+10*sin(n/10)
    

32.50.2 指令

此濾波器支援以下命令

w, out_w
h, out_h
x
y

設定輸出影片的寬度/高度以及在輸入影片中的水平/垂直位置。此命令接受對應選項的相同語法。

修改音量表達式。指令接受與對應選項相同的語法。

32.51 cropdetect

自動偵測裁剪大小。

它會計算必要的裁剪參數,並透過記錄系統印出建議的參數。偵測到的尺寸對應於根據 mode 的輸入影片的非黑色或影片區域。

它接受以下參數

o

根據 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

設定 Canny 閾值演算法使用的低閾值和高閾值。

高閾值選擇「強」邊緣像素,然後通過 8 連通性與低閾值選擇的「弱」邊緣像素連接。

lowhigh 閾值必須在 [0,1] 範圍內選擇,並且 low 應小於或等於 high

low 的預設值為 5/255,而 high 的預設值為 15/255

32.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 -
    

32.51.2 指令

此濾波器支援以下命令

limit (限制)

此命令接受對應選項的相同語法。如果指定的表達式無效,則會保持其目前的值。

32.52 cue

延遲影片濾鏡處理,直到給定的掛鐘時間戳記。濾鏡首先傳遞 preroll 數量的影格,然後緩衝最多 buffer 數量的影格並等待提示。到達提示後,它會轉發緩衝的影格以及任何後續輸入的影格。

此濾鏡可用於同步多個 ffmpeg 程序的輸出,以用於即時輸出裝置,例如 decklink。透過將延遲放在濾鏡鏈中並預先緩衝影格,程序可以在到達目標掛鐘時間戳記後幾乎立即將資料傳遞到輸出。

無法保證完美的影格準確度,但結果對於某些使用案例來說已足夠好。

cue

提示時間戳記,以微秒為單位的 UNIX 時間戳記表示。預設值為 0。

preroll

要作為預先捲動傳遞的內容持續時間,以秒為單位表示。預設值為 0。

buffer

在等待提示之前要緩衝的最大內容持續時間,以秒為單位表示。預設值為 0。

32.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

將曲線的 Gnuplot 腳本儲存到指定檔案中。

interp

指定內插種類。可用的演算法為

natural

自然三次樣條,使用分段三次多項式,該多項式是兩次連續可微的。

pchip

單調三次樣條,使用分段三次 Hermite 內插多項式 (PCHIP)。

為避免某些濾鏡圖語法衝突,每個關鍵點列表都需要使用以下語法定義:x0/y0 x1/y1 x2/y2 ...

32.53.1 指令

此濾鏡支援與選項相同的指令

32.53.2 範例

  • 稍微增加藍色的中間色階
    curves=blue='0/0 0.5/0.58 1/1'
    
  • 復古效果
    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
    
  • 使用 Photoshop 預設並重新定義綠色組件的點
    curves=psfile='MyCurvesPresets/purple.acv':green='0/0 0.45/0.53 1/1'
    
  • 使用 ffmpeggnuplot 查看 cross_process 配置文件的曲線
    ffmpeg -f lavfi -i color -vf curves=cross_process:plot=/tmp/curves.plt -frames:v 1 -f null -
    gnuplot -p /tmp/curves.plt
    

32.54 datascope

影片資料分析濾鏡。

此濾鏡顯示影片部分區域的十六進制像素值。

通過第一個輸入。

size, s

設定輸出影片大小。

x

設定從何處選取像素的 x 偏移量。

y

設定從何處選取像素的 y 偏移量。

o

設定示波器模式,可以是以下其中之一

mono

在黑色背景上以白色繪製十六進制像素值。

color

在黑色背景上以輸入影片像素顏色繪製十六進制像素值。

color2

在從輸入影片選取的彩色背景上繪製十六進制像素值,文字顏色以使其始終可見的方式選取。

axis

在影片的左側和頂部繪製行號和列號。

opacity

設定背景不透明度。

format

設定顯示數字格式。可以是 hexdec。預設值為 hex

components

設定要顯示的像素組件。依預設,會顯示所有像素組件。

32.54.1 指令

此濾鏡支援與選項相同的 commands,但不包括 size 選項。

32.55 dblur

套用方向模糊濾鏡。

通過第一個輸入。

angle

設定方向模糊的角度。預設值為 45

radius (半徑)

設定方向模糊的半徑。預設值為 5

planes

設定要過濾的平面。預設情況下,所有平面都會被過濾。

32.55.1 指令

此濾波器支援與選項相同的 命令。該命令接受與對應選項相同的語法。

修改音量表達式。指令接受與對應選項相同的語法。

32.56 dctdnoiz

使用 2D DCT(頻域濾鏡處理)對影格進行去噪。

此濾鏡並非設計用於即時處理。

通過第一個輸入。

sigma, s

設定雜訊 sigma 常數。

sigma 定義了 3 * sigma 的硬閾值;低於此閾值的所有 DCT 係數(絕對值)都將被捨棄。

如果您需要更進階的濾鏡處理,請參閱 expr

預設值為 0

overlap

設定每個區塊的重疊像素數。由於濾鏡處理速度可能很慢,因此您可能想要降低此值,但會以濾鏡效果較差和各種瑕疵的風險為代價。

如果重疊值不允許處理整個輸入寬度或高度,則會顯示警告,並且不會對應地對邊界進行去噪。

預設值為 blocksize-1,這是最佳可能的設定。

expr, e

設定係數因數表達式。

對於 DCT 區塊的每個係數,此表達式將被評估為係數的乘數值。

如果設定了此選項,則 sigma 選項將被忽略。

可以透過 c 變數存取係數的絕對值。

n

使用位元數設定 blocksize1<<n 定義了 blocksize,它是已處理區塊的寬度和高度。

預設值為 3 (8x8),可以提高到 4 以獲得 16x16 的 blocksize。請注意,變更此設定對速度處理有巨大的影響。此外,較大的區塊大小並不一定表示更好的去噪效果。

32.56.1 範例

套用 sigma 為 4.5 的去噪

dctdnoiz=4.5

可以使用表達式系統達成相同的操作

dctdnoiz=e='gte(c, 4.5*3)'

使用 16x16 的區塊大小進行劇烈去噪

dctdnoiz=15:n=4

32.57 deband

從輸入影片中移除條帶瑕疵。它的工作原理是用參考像素的平均值取代條帶像素。

通過第一個輸入。

1thr
2thr
3thr
4thr

設定每個平面的條帶偵測閾值。預設值為 0.02。有效範圍為 0.00003 到 0.5。如果目前像素與參考像素之間的差異小於閾值,則會將其視為條帶。

range, r

以像素為單位的條帶偵測範圍。預設值為 16。如果為正數,則會使用範圍 0 到設定值之間的隨機數。如果為負數,則會使用精確的絕對值。範圍定義了目前像素周圍四個像素的正方形。

direction, d

設定將從中比較四個像素的方向,以弧度為單位。如果為正數,則會選取範圍 0 到設定方向之間的隨機方向。如果為負數,則會選取精確的絕對值。例如,方向 0、-PI 或 -2*PI 弧度將僅選取同一行上的像素,而 -PI/2 將僅選取同一列上的像素。

blur, b

如果啟用,則目前像素會與所有四個周圍像素的平均值進行比較。預設為啟用。如果停用,則目前像素會與所有四個周圍像素進行比較。只有當與周圍像素的所有四個差異都小於閾值時,像素才被視為條帶。

coupling, c

如果啟用,則僅當所有像素組件都為條帶時,才會變更目前像素,例如,所有顏色組件都觸發了條帶偵測閾值。預設為停用。

32.57.1 指令

mode

32.58 deblock

從輸入影片中移除區塊瑕疵。

通過第一個輸入。

filter

設定濾鏡類型,可以是 weakstrong。預設值為 strong。這控制了套用的去區塊類型。

block

設定區塊大小,允許的範圍為 4 到 512。預設值為 8

alpha
beta
gamma
根據輔助輸入時間戳記嚴格同步串流的方式;它接受以下值之一

設定區塊偵測閾值。允許的範圍為 0 到 1。預設值為:alpha0.098,其餘為 0.05。使用較高的閾值會提供更強的去區塊強度。設定 alpha 控制區塊精確邊緣的閾值偵測。其餘選項控制邊緣附近的閾值偵測。每個選項分別用於下方/上方或左側/右側。將其中任何一個設定為 0 會停用去區塊。

planes

設定要濾鏡處理的平面。預設值為濾鏡處理所有可用的平面。

32.58.1 範例

  • 使用弱濾鏡和 4 像素的區塊大小進行去區塊。
    deblock=filter=weak:block=4
    
  • 使用強濾鏡、4 像素的區塊大小和自訂閾值進行去區塊,以去區塊更多邊緣。
    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
    
  • 與上面類似,但僅濾鏡處理第二個和第三個平面。
    deblock=filter=strong:block=4:alpha=0.12:beta=0.07:gamma=0.06:delta=0.05:planes=6
    

32.58.2 指令

mode

32.59 decimate

以固定間隔捨棄重複的影格。

通過第一個輸入。

cycle

設定將從中捨棄一個影格的影格數。將其設定為 N 表示每批 N 個影格中將捨棄一個影格。預設值為 5

dupthresh

設定重複偵測的閾值。如果影格的差異度量小於或等於此值,則會將其宣告為重複。預設值為 1.1

scthresh

設定場景變更閾值。預設值為 15

blockx
blocky

設定在度量計算期間使用的 x 軸和 y 軸區塊的大小。較大的區塊可提供更好的雜訊抑制,但也使小動作的偵測效果更差。必須是 2 的冪。預設值為 32

ppsrc

將主要輸入標記為預先處理的輸入,並啟動乾淨來源輸入串流。這允許使用各種濾鏡對輸入進行預先處理,以協助度量計算,同時保持影格選擇無損。當設定為 1 時,第一個串流用於預先處理的輸入,第二個串流是乾淨來源,從中選取保留的影格。預設值為 0

chroma

設定在度量計算中是否考慮色度。預設值為 1

mixed

設定輸入是否僅部分包含要刪減的內容。預設值為 false。如果啟用,則影片輸出串流將採用可變影格率。

32.60 deconvolve

使用第二個串流作為脈衝,在頻域中套用影片串流的 2D 反褶積。

通過第一個輸入。

planes

設定要處理的平面。

impulse

設定將處理哪些脈衝視訊影格,可以是 firstall。 預設值為 all

noise

設定進行除法時的雜訊。預設值為 0.0000001。當寬度和高度不相同且不是 2 的冪,或者當卷積之前的串流有雜訊時很有用。

deconvolve 濾鏡也支援 framesync 選項。

32.61 dedot

減少影片中的交叉亮度(點爬)和交叉色彩(彩虹)。

它接受以下選項

m

設定操作模式。可以是 dotcrawl(用於交叉亮度減少)和/或 rainbows(用於交叉色彩減少)的組合。

lt

設定空間亮度閾值。較低的值會增加交叉亮度的減少量。

tl

設定時間亮度容差。較高的值會增加交叉亮度的減少量。

tc

設定色度時間變化的容忍度。數值越高,減少 cross-color 的程度越高。

ct

設定時間色度閾值。數值越低,減少 cross-color 的程度越高。

32.62 deflate

對影片套用縮小效果。

此濾鏡會將像素替換為局部 (3x3) 平均值,僅考慮低於該像素的值。

它接受以下選項

threshold0
threshold1
threshold2
threshold3

限制每個平面的最大變化,預設值為 65535。若為 0,平面將保持不變。

32.62.1 指令

mode

32.63 deflicker

移除時間幀亮度變化。

它接受以下選項

size, s

設定移動平均濾鏡大小(以幀為單位)。預設值為 5。允許範圍為 2 - 129。

mode, m

設定平均模式以平滑時間亮度變化。

可用值為

am

算術平均數

gm

幾何平均數

hm

調和平均數

qm

平方平均數

cm

立方平均數

pm

冪平均數

median

中位數

bypass

實際上不修改幀。當只想取得中繼資料時很有用。

32.64 dejudder

移除部分交錯式電影轉換內容產生的顫動。

顫動可能會被引入,例如,透過 pullup 濾鏡。如果原始來源是部分電影轉換內容,則 pullup,dejudder 的輸出將具有可變幀率。可能會更改容器的記錄幀率。除了該變更之外,此濾鏡不會影響恆定幀率影片。

此濾鏡中可用的選項是

cycle

指定顫動重複的視窗長度。

接受大於 1 的任何整數。有用的值為

4

如果原始內容是從 24 fps 電影轉換為 30 fps (電影轉 NTSC)。

5

如果原始內容是從 25 fps 電影轉換為 30 fps (PAL 轉 NTSC)。

20

如果兩者混合。

預設值為 ‘4’。

32.65 delogo

透過簡單地內插周圍像素來抑制電視台標誌。只需設定一個覆蓋標誌的矩形,並觀看它消失(有時甚至會出現更醜陋的東西 - 結果可能因情況而異)。

它接受以下參數

x
y

指定標誌左上角的座標。它們必須被指定。

f
h

指定要清除的標誌寬度和高度。它們必須被指定。

show

設定為 1 時,會在螢幕上繪製一個綠色矩形,以簡化尋找正確的 xywh 參數。預設值為 0。

矩形繪製在最外層的像素上,這些像素將(部分)被內插值取代。緊鄰此矩形外部的每個方向的下一個像素值將用於計算矩形內部的內插像素值。

32.65.1 範例

  • 設定一個覆蓋區域的矩形,左上角座標為 0,0,大小為 100x77
    delogo=x=0:y=0:w=100:h=77
    

32.66 derain

透過應用基於卷積神經網路的去雨方法,移除輸入影像/影片中的雨點。支援的模型

儲存庫中提供了訓練以及模型生成腳本,網址為 https://github.com/XueweiMeng/derain_filter.git

通過第一個輸入。

filter_type

指定要使用的濾鏡。此選項接受以下值

derain

去雨濾鏡。要執行去雨濾鏡,您需要使用去雨模型。

dehaze

去霧濾鏡。要執行去霧濾鏡,您需要使用去霧模型。

預設值為 ‘derain’。

dnn_backend

指定要用於模型載入和執行的 DNN 後端。此選項接受以下值

tensorflow

TensorFlow 後端。要啟用此後端,您需要安裝 TensorFlow for C 程式庫(請參閱 https://tensorflow.dev.org.tw/install/lang_c)並使用 --enable-libtensorflow 配置 FFmpeg

model

設定模型檔案的路徑,指定網路架構及其參數。請注意,不同的後端使用不同的檔案格式。TensorFlow 只能載入其格式的檔案。

若要取得完整功能(例如非同步執行),請使用 dnn_processing 濾鏡。

32.67 deshake

嘗試修復水平和/或垂直偏移中的微小變化。此濾鏡有助於消除手持相機、碰撞三腳架、在車輛上移動等造成的相機震動。

通過第一個輸入。

x
y
f
h

指定一個矩形區域,在其中限制運動向量的搜尋範圍。如果需要,運動向量的搜尋範圍可以限制在幀的矩形區域內,該區域由其左上角、寬度和高度定義。這些參數的含義與 drawbox 濾鏡相同,drawbox 濾鏡可用於視覺化邊界框的位置。

當幀內主體的同時移動可能會被運動向量搜尋誤認為是相機運動時,這非常有用。

如果 xywh 中的任何一個或全部設定為 -1,則會使用整個幀。這允許在不指定運動向量搜尋的邊界框的情況下設定後續選項。

預設值 - 搜尋整個幀。

rx
ry

指定 x 和 y 方向運動的最大範圍,範圍為 0-64 像素。預設值為 16。

edge

指定如何產生像素以填充幀邊緣的空白。可用值為

blank, 0

在空白位置填充零

original, 1

空白位置的原始影像

clamp, 2

空白位置的擠壓邊緣值

mirror, 3

空白位置的鏡像邊緣

預設值為 ‘mirror’。

blocksize

指定用於運動搜尋的區塊大小。範圍 4-128 像素,預設值為 8。

threshold

指定區塊的對比度閾值。僅考慮對比度高於指定值(最暗和最亮像素之間的差異)的區塊。範圍 1-255,預設值為 125。

search

指定搜尋策略。可用值為

exhaustive, 0

設定詳盡搜尋

less, 1

設定較不詳盡的搜尋。

預設值為 ‘exhaustive’。

filename

如果設定,則會將運動搜尋的詳細日誌寫入到指定檔案。

32.68 despill

移除前景顏色的不必要污染,這是由綠幕或藍幕的反射顏色引起的。

此濾波器接受以下選項

type

設定要使用的去溢色類型。

level_in

設定將如何產生溢色圖。

expand

設定要去除剩餘溢色的程度。

紅色

控制溢色區域中的紅色量。

綠色

控制溢色區域中的綠色量。綠幕應為 -1。

藍色

控制溢色區域中的藍色量。藍幕應為 -1。

brightness

控制溢色區域的亮度,同時保留顏色。

alpha

修改從產生的溢色圖中的 Alpha 值。

32.68.1 指令

mode

32.69 detelecine

套用電影轉換操作的精確反向操作。它需要使用 pattern 選項指定的預定義模式,該模式必須與傳遞給電影轉換濾鏡的模式相同。

此濾波器接受以下選項

first_field
top, t

頂場優先

bottom, b

底場優先。預設值為 top

pattern

代表您要套用的下拉模式的數字字串。預設值為 23

start_frame

代表相對於電影轉換模式的第一幀位置的數字。如果串流被剪切,則使用此選項。預設值為 0

32.70 dilation

對影片套用擴張效果。

此濾鏡會將像素替換為局部 (3x3) 最大值。

它接受以下選項

threshold0
threshold1
threshold2
threshold3

限制每個平面的最大變化,預設值為 65535。若為 0,平面將保持不變。

coordinates

標記,指定要參照的像素。預設值為 255,即使用所有八個像素。

到局部 3x3 座標的標記對應如下

1 2 3 4 5 6 7 8

32.70.1 指令

mode

32.71 displace

根據第二和第三個輸入串流指示位移像素。

它採用三個輸入串流並輸出一個串流,第一個輸入是來源,第二個和第三個輸入是位移圖。

第二個輸入指定沿 x 軸位移像素的程度,而第三個輸入指定沿 y 軸位移像素的程度。如果其中一個位移圖串流終止,則將使用該位移圖的最後一幀。

請注意,一旦產生,位移圖可以重複使用。

以下是接受選項的描述。

edge

設定超出範圍的像素的位移行為。

可用值為

blank

遺失的像素將被黑色像素取代。

smear

相鄰像素將擴展開來取代遺失的像素。

wrap

超出範圍的像素會被包裹,以便它們指向另一側的像素。

mirror

超出範圍的像素將被鏡像像素取代。

預設值為 ‘smear’。

32.71.1 範例

  • 對 hd720 影片大小的 rgb 輸入新增波紋效果
    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
    
  • 對 hd720 影片大小的 rgb 輸入新增波浪效果
    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
    

32.72 dnn_classify

使用基於邊界框的深度神經網路進行分類。

通過第一個輸入。

dnn_backend

指定要用於模型載入和執行的 DNN 後端。此選項目前僅接受 openvino,稍後將新增 tensorflow 後端。

model

設定模型檔案的路徑,指定網路架構及其參數。請注意,不同的後端使用不同的檔案格式。

input

設定 dnn 網路的輸入名稱。

output

設定 dnn 網路的輸出名稱。

confidence

設定信賴度閾值(預設值:0.5)。

labels

設定標籤檔案的路徑,指定標籤 ID 和名稱之間的對應關係。每個標籤名稱寫在一行中,跳過尾隨空格和空行。第一行是標籤 ID 0 的名稱,第二行是標籤 ID 1 的名稱,依此類推。如果未提供標籤檔案,則標籤 ID 將被視為名稱。

backend_configs

設定要傳遞到後端的配置。

對於 tensorflow 後端,您可以使用 sess_config 選項設定其配置,請使用 tools/python/tf_sess_config.py 取得您系統的配置。

32.73 dnn_detect

使用深度神經網路進行物件偵測。

通過第一個輸入。

dnn_backend

指定要用於模型載入和執行的 DNN 後端。此選項目前僅接受 openvino,稍後將新增 tensorflow 後端。

model

設定模型檔案的路徑,指定網路架構及其參數。請注意,不同的後端使用不同的檔案格式。

input

設定 dnn 網路的輸入名稱。

output

設定 dnn 網路的輸出名稱。

confidence

設定信賴度閾值(預設值:0.5)。

labels

設定標籤檔案的路徑,指定標籤 ID 和名稱之間的對應關係。每個標籤名稱寫在一行中,跳過尾隨空格和空行。第一行是標籤 ID 0 的名稱(通常為 'background'),第二行是標籤 ID 1 的名稱,依此類推。如果未提供標籤檔案,則標籤 ID 將被視為名稱。

backend_configs

設定要傳遞到後端的配置。若要使用非同步執行,請設定 async(預設值:設定)。如果後端不支援非同步,則回退到同步執行。

32.74 dnn_processing

使用深度神經網路進行影像處理。它與另一個濾鏡一起運作,該濾鏡將幀的像素格式轉換為 dnn 網路所需格式。

通過第一個輸入。

dnn_backend

指定要用於模型載入和執行的 DNN 後端。此選項接受以下值

tensorflow

TensorFlow 後端。要啟用此後端,您需要安裝 TensorFlow for C 程式庫(請參閱 https://tensorflow.dev.org.tw/install/lang_c)並使用 --enable-libtensorflow 配置 FFmpeg

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 後端只能載入其格式的檔案。

input

設定 dnn 網路的輸入名稱。

output

設定 dnn 網路的輸出名稱。

backend_configs

設定要傳遞到後端的配置。若要使用非同步執行,請設定 async(預設值:設定)。如果後端不支援非同步,則回退到同步執行。

對於 tensorflow 後端,您可以使用 sess_config 選項設定其配置,請使用 tools/python/tf_sess_config.py 取得您系統的 TensorFlow 後端配置。

32.74.1 範例

  • 使用 can.pb 移除 rgb24 幀中的雨點(請參閱 derain 濾鏡)
    ./ffmpeg -i rain.jpg -vf format=rgb24,dnn_processing=dnn_backend=tensorflow:model=can.pb:input=x:output=y derain.jpg
    
  • 使用 srcnn.pb 處理 Y 通道(請參閱 sr 濾鏡),適用於 yuv420p 幀(支援平面 YUV 格式)
    ./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
    
  • 使用 espcn.pb 處理 Y 通道(請參閱 sr 濾鏡),它會更改幀大小,適用於 yuv420p 格式(支援平面 YUV 格式),請使用 tools/python/tf_sess_config.py 取得您系統的 TensorFlow 後端配置。
    ./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
    

32.75 drawbox

在輸入影像上繪製彩色方框。

它接受以下參數

x
y

指定方框左上角座標的表達式。預設值為 0。

width (寬度),w
height, h

指定方框寬度和高度的表達式;如果為 0,則將其解釋為輸入寬度和高度。預設值為 0。

color, c

指定要寫入的方框顏色。有關此選項的一般語法,請查看 ffmpeg-utils 手冊中的「Color」章節。如果使用特殊值 invert,則方框邊緣顏色與具有反轉亮度的影片相同。

thickness, t

設定方框邊緣粗細的表達式。值為 fill 將建立一個填滿的方框。預設值為 3

請參閱下方接受的常數清單。

replace

如果輸入具有 Alpha 值,則適用。值為 1 時,繪製方框的像素將覆寫影片的顏色和 Alpha 像素。預設值為 0,它將方框合成到輸入上,保持影片的 Alpha 值完整。

用於 xywh 以及 t 的參數是包含以下常數的表達式

dar

輸入顯示縱橫比,它與 (w / h) * sar 相同。

hsub
vsub

水平和垂直的色度二次採樣值。例如,對於像素格式 "yuv422p",hsub 為 2,而 vsub 為 1。

in_h, ih
in_w, iw

輸入寬度和高度。

sar

輸入樣本縱橫比。

x
y

繪製方框的 x 和 y 偏移座標。

f
h

繪製方框的寬度和高度。

box_source

如果您想使用側資料偵測邊界框中的方框資料,則可以將方框來源設定為 side_data_detection_bboxes。

如果設定了 box_source,則 xywidthheight 將被忽略,並且仍然使用側資料偵測邊界框中的方框資料。因此,如果您不確定方框來源,請不要使用此參數。

t

繪製方框的粗細。

這些常數允許 xywht 表達式相互參照,因此您可以例如指定 y=x/darh=w/dar

32.75.1 範例

  • 在輸入影像邊緣周圍繪製黑色方框
    drawbox
    
  • 繪製一個顏色為紅色且不透明度為 50% 的方框
    drawbox=10:20:200:60:red@0.5
    

    先前的範例可以指定為

    drawbox=x=10:y=20:w=200:h=60:color=red@0.5
    
  • 用粉紅色填滿方框
    drawbox=x=10:y=10:w=100:h=100:color=pink@0.5:t=fill
    
  • 繪製一個 2 像素紅色 2.40:1 遮罩
    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
    

32.75.2 指令

此濾鏡支援與選項相同的指令。指令接受與相應選項相同的語法。

修改音量表達式。指令接受與對應選項相同的語法。

32.76 drawgraph

使用輸入影片中繼資料繪製圖表。

它接受以下參數

m1

設定第一個幀中繼資料金鑰,將從中繼資料值中提取值以繪製圖表。

fg1

設定第一個前景顏色表達式。

m2

設定第二個幀中繼資料金鑰,將從中繼資料值中提取值以繪製圖表。

fg2

設定第二個前景顏色表達式。

m3

設定第三個幀中繼資料金鑰,將從中繼資料值中提取值以繪製圖表。

fg3

設定第三個前景顏色表達式。

m4

設定第四個幀中繼資料金鑰,將從中繼資料值中提取值以繪製圖表。

fg4

設定第四個前景顏色表達式。

min

設定中繼資料值的最小值。

max

設定中繼資料值的最大值。

bg

設定圖表背景顏色。預設值為白色。

o

設定圖表模式。

模式的可用值為

bar
dot
line

預設值為 line

slide

設定滑動模式。

滑動的可用值為

frame

到達右邊界時繪製新幀。

replace

用新的列取代舊的列。

scroll

從右向左捲動。

rscroll

從左向右捲動。

picture

繪製單張圖片。

預設值為 frame

size

設定圖表影片的大小。關於此選項的語法,請查看 ffmpeg-utils 手冊中的「(ffmpeg-utils)影片大小」章節。預設值為 900x256

rate, r

設定輸出影格率。預設值為 25

前景色彩表達式可以使用以下變數

MIN

Metadata 值的最小值。

MAX

Metadata 值的最大值。

VAL

目前的 Metadata 鍵值。

色彩定義為 0xAABBGGRR。

使用來自 signalstats 濾鏡的 metadata 範例

signalstats,drawgraph=lavfi.signalstats.YAVG:min=0:max=255

使用來自 ebur128 濾鏡的 metadata 範例

ebur128=metadata=1,adrawgraph=lavfi.r128.M:min=-120:max=5

32.77 drawgrid

在輸入影像上繪製網格。

它接受以下參數

x
y

指定網格交點某些點座標的表達式(旨在設定偏移)。預設值皆為 0。

width (寬度),w
height, h

指定網格單元格的寬度和高度的表達式,如果為 0,則它們會被解釋為輸入寬度和高度,分別減去 thickness,因此影像會被框住。預設值為 0。

color, c

指定網格的顏色。關於此選項的一般語法,請查看 ffmpeg-utils 手冊中的「(ffmpeg-utils)色彩」章節。如果使用特殊值 invert,則網格顏色與亮度反轉後的影片相同。

thickness, t

設定網格線條粗細的表達式。預設值為 1

請參閱下方接受的常數清單。

replace

如果輸入具有 alpha 通道則適用。若設定為 1,則繪製網格的像素將覆寫影片的色彩和 alpha 像素。預設值為 0,這會將網格合成到輸入上,保持影片的 alpha 通道完整。

用於 xywh 以及 t 的參數是包含以下常數的表達式

dar

輸入顯示縱橫比,它與 (w / h) * sar 相同。

hsub
vsub

水平和垂直的色度二次採樣值。例如,對於像素格式 "yuv422p",hsub 為 2,而 vsub 為 1。

in_h, ih
in_w, iw

輸入網格單元格的寬度和高度。

sar

輸入樣本縱橫比。

x
y

網格交點某些點的 x 和 y 座標(旨在設定偏移)。

f
h

繪製的單元格的寬度和高度。

t

繪製的單元格的粗細。

這些常數允許 xywht 表達式相互參照,因此您可以例如指定 y=x/darh=w/dar

32.77.1 範例

  • 繪製一個 100x100 像素的網格,粗細為 2 像素,顏色為紅色,不透明度為 50%
    drawgrid=width=100:height=100:thickness=2:color=red@0.5
    
  • 繪製一個白色 3x3 網格,不透明度為 50%
    drawgrid=w=iw/3:h=ih/3:t=2:c=white@0.5
    

32.77.2 指令

此濾鏡支援與選項相同的指令。指令接受與相應選項相同的語法。

修改音量表達式。指令接受與對應選項相同的語法。

32.78 drawtext

使用 libfreetype 函式庫在影片頂部繪製文字字串或來自指定檔案的文字。

若要啟用此濾鏡的編譯,您需要使用 --enable-libfreetype--enable-libharfbuzz 配置 FFmpeg。若要啟用預設字型後備和 font 選項,您需要使用 --enable-libfontconfig 配置 FFmpeg。若要啟用 text_shaping 選項,您需要使用 --enable-libfribidi 配置 FFmpeg。

32.78.1 語法

它接受以下參數

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 手冊中的「(ffmpeg-utils)色彩」章節

boxcolor 的預設值為 "white"。

line_spacing

設定行距,以像素為單位。line_spacing 的預設值為 0。

text_align

設定文字相對於方框邊界的垂直和水平對齊方式。該值是標誌的組合,一個用於垂直對齊(T=頂部,M=中間,B=底部),另一個用於水平對齊(L=左側,C=置中,R=右側)。請注意,僅在水平對齊為左側時才支援 Tab 字元。

y_align

指定 y 值所指的參考對象。可能的值為

  • text 第一行文字的最高字元符號的頂部放置在 y 位置
  • baseline 第一行文字的基線放置在 y 位置
  • font 第一行文字的基線放置在 y 位置,再加上字型度量中定義的上升高度(以像素為單位)

為了向後相容,y_align 的預設值為 "text"。

borderw

設定要使用 bordercolor 在文字周圍繪製的邊框寬度。borderw 的預設值為 0。

bordercolor

設定用於繪製文字周圍邊框的顏色。關於此選項的語法,請查看 ffmpeg-utils 手冊中的「(ffmpeg-utils)色彩」章節

bordercolor 的預設值為 "black"。

expansion

選擇如何展開 text。可以是 nonestrftime(已棄用)或 normal(預設)。請參閱下方的文字展開章節以取得詳細資訊。

basetime

設定計數的開始時間。值以微秒為單位。僅適用於已棄用的 strftime 展開模式。若要在 normal 展開模式中模擬,請使用 pts 函數,並提供開始時間(以秒為單位)作為第二個參數。

fix_bounds

如果為 true,則檢查並修正文字座標以避免裁剪。

fontcolor

用於繪製字型的顏色。關於此選項的語法,請查看 ffmpeg-utils 手冊中的「(ffmpeg-utils)色彩」章節

fontcolor 的預設值為 "black"。

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

用於載入字型的標誌。

這些標誌對應 libfreetype 支援的標誌,並且是以下值的組合

default
no_scale
no_hinting
render
no_bitmap
vertical_layout
force_autohint
crop_bitmap
pedantic
ignore_global_advance_width
no_recurse
ignore_transform
monochrome
linear_design
no_autohint

預設值為 "default"。

如需更多資訊,請查閱 FT_LOAD_* libfreetype 標誌的文件。

shadowcolor

用於在繪製文字後方繪製陰影的顏色。關於此選項的語法,請查看 ffmpeg-utils 手冊中的「(ffmpeg-utils)色彩」章節

shadowcolor 的預設值為 "black"。

boxw

設定要繪製在文字周圍的方框寬度。boxw 的預設值會自動計算以符合文字寬度

boxh

設定要繪製在文字周圍的方框高度。boxh 的預設值會自動計算以符合文字高度

shadowx
shadowy

文字陰影位置相對於文字位置的 x 和 y 偏移量。它們可以是正值或負值。兩者的預設值皆為 "0"。

start_number

n/frame_num 變數的起始影格編號。預設值為 "0"。

tabsize

用於呈現 Tab 字元時使用的空格數大小。預設值為 4。

timecode

以 "hh:mm:ss[:;.]ff" 格式設定初始時間碼表示。它可以與或不與 text 參數一起使用。必須指定 timecode_rate 選項。

timecode_rate, rate, r

設定時間碼影格率(僅限時間碼)。值將四捨五入到最接近的整數。最小值為 "1"。影格丟失時間碼支援影格率 30 和 60。

tc24hmax

若設定為 1,時間碼選項的輸出將在 24 小時後環繞。預設值為 0(停用)。

text

要繪製的文字字串。文字必須是 UTF-8 編碼字元的序列。如果未使用參數 textfile 指定檔案,則此參數為必要參數。

textfile

包含要繪製文字的文字檔案。文字必須是 UTF-8 編碼字元的序列。

如果未使用參數 text 指定文字字串,則此參數為必要參數。

如果同時指定 texttextfile,則會擲回錯誤。

text_source

如果您想要使用側資料偵測邊界框中的文字資料,則應將文字來源設定為 side_data_detection_bboxes。

如果設定了文字來源,則會忽略 texttextfile,並且仍然使用側資料偵測邊界框中的文字資料。因此,如果您不確定文字來源,請不要使用此參數。

reload

textfile 將在指定的影格間隔重新載入。請務必以原子方式更新 textfile,否則可能會部分讀取,甚至失敗。範圍為 0 到 INT_MAX。預設值為 0。

x
y

指定文字將在影片影格中繪製位置的偏移量表達式。它們相對於輸出影像的頂部/左側邊界。

xy 的預設值為 "0"。

請參閱下方接受的常數和函數列表。

用於 xy 的參數是包含以下常數和函數的表達式

dar

輸入顯示長寬比,它與 (w / h) * sar 相同

hsub
vsub

水平和垂直的色度二次採樣值。例如,對於像素格式 "yuv422p",hsub 為 2,而 vsub 為 1。

line_h, lh

每行文字的高度

main_h, h, H

輸入高度

main_w, w, W

輸入寬度

max_glyph_a, ascent

對於所有呈現的字元符號,從基線到用於放置字元符號輪廓點的最高/上方網格座標的最大距離。由於網格的方向 Y 軸向上,因此它是正值。

max_glyph_d, descent

對於所有呈現的字元符號,從基線到用於放置字元符號輪廓點的最低網格座標的最大距離。由於網格的方向 Y 軸向上,因此它是負值。

max_glyph_h

最大字元符號高度,即呈現文字中包含的所有字元符號的最大高度,它等效於 ascent - descent

max_glyph_w

最大字元符號寬度,即呈現文字中包含的所有字元符號的最大寬度

font_a

字型度量中定義的上升大小

font_d

字型度量中定義的下降大小

top_a

第一行文字的字元符號的最大上升值

bottom_d

最後一行文字的字元符號的最大下降值

n

輸入影格編號,從 0 開始

rand(min, max)

傳回介於 minmax 之間的隨機數

sar

輸入樣本縱橫比。

t

This is a text with a \' character and a \: character

text_h, th

呈現文字的高度

text_w, tw

呈現文字的寬度

x
y

文字繪製位置的 x 和 y 偏移座標。

這些參數允許 xy 表達式互相參照,因此您可以例如指定 y=x/dar

pict_type

目前影格圖片類型的單字元描述。

pkt_pos

目前封包在輸入檔案或串流中的位置(以位元組為單位,從輸入開始)。值 -1 表示此資訊不可用。

duration

目前封包的持續時間,以秒為單位。

pkt_size

目前封包的大小(以位元組為單位)。

32.78.2 文字展開

如果 expansion 設定為 strftime,則濾鏡會辨識提供的文字中 strftime C 函數接受的序列,並據此展開它們。請查看 strftime 的文件。此功能已棄用,建議改用具有 gmtimelocaltime 展開函數的 normal 展開。

如果 expansion 設定為 none,則文字會逐字列印。

如果 expansion 設定為 normal(預設值),則使用以下展開機制。

反斜線字元「\」後接任何字元,始終展開為第二個字元。

%{...} 形式的序列會被展開。大括號之間的文字是函數名稱,後接可能以 ':' 分隔的參數。如果參數包含特殊字元或分隔符號(':' 或 '}'),則應逸出它們。

請注意,它們可能也必須逸出,作為濾鏡引數字串中 text 選項的值,以及作為濾鏡圖描述中的濾鏡引數,甚至可能也為了 shell,這構成了四個層級的逸出;使用帶有 textfile 選項的文字檔案可以避免這些問題。

以下函數可用

expr, e

表達式評估結果。

它必須接受一個參數,指定要評估的表達式,該表達式接受與 xy 值相同的常數和函數。請注意,並非所有常數都應使用,例如,在評估表達式時,文字大小未知,因此常數 text_wtext_h 將具有未定義的值。

expr_int_format, eif

評估表達式的值並以格式化的整數輸出。

第一個參數是要評估的表達式,與 expr 函數相同。第二個參數指定輸出格式。允許的值為 'x'、'X'、'd' 和 'u'。它們的處理方式與 printf 函數完全相同。第三個參數是可選的,用於設定輸出佔用的位置數。它可以用於從左側新增零填充。

gmtime

濾鏡運作的時間,以 UTC 格式表示。它可以接受一個引數:一個 strftime C 函數格式字串。此格式字串已擴展為支援變數 %[1-6]N,其會印出秒數的小數部分,並可選擇指定位數。

localtime

濾鏡運作的時間,以本地時區表示。它可以接受一個引數:一個 strftime C 函數格式字串。此格式字串已擴展為支援變數 %[1-6]N,其會印出秒數的小數部分,並可選擇指定位數。

metadata

影格元數據。接受一個或兩個引數。

第一個引數為必要引數,指定元數據鍵。

第二個引數為選用引數,指定預設值,當找不到或元數據鍵為空時使用。

可用的元數據可以透過檢查以 TAG 開頭的條目來識別,這些條目包含在使用 ffprobe -show_frames 執行的每個影格區段中。

在導向 drawtext 濾鏡的濾鏡中產生的字串元數據也可用。

n, frame_num

影格編號,從 0 開始。

pict_type

目前圖片類型的一個字元描述。

pts

目前影格的時間戳記。它最多可以接受三個引數。

第一個引數是時間戳記的格式;預設為 flt,表示秒數,為具有微秒精度的十進制數字;hms 代表格式化的 [-]HH:MM:SS.mmm 時間戳記,具有毫秒精度。gmtime 代表格式化為 UTC 時間的影格時間戳記;localtime 代表格式化為本地時區時間的影格時間戳記。

第二個引數是加到時間戳記的偏移量。

如果格式設定為 hms,則可以提供第三個引數 24HH,以 24 小時格式 (00-23) 呈現格式化時間戳記的小時部分。

如果格式設定為 localtimegmtime,則可以提供第三個引數:一個 strftime C 函數格式字串。預設情況下,將使用 YYYY-MM-DD HH:MM:SS 格式。

32.78.3 指令

此濾鏡支援透過命令變更參數

reinit

變更現有的濾鏡參數。

引數的語法與濾鏡調用相同,例如

fontsize=56:fontcolor=green:text='Hello World'

使用 sendcmd 的完整濾鏡調用看起來像這樣

sendcmd=c='56.0 drawtext reinit fontsize=56\:fontcolor=green\:text=Hello\\ World'

如果整個引數無法解析或應用為有效值,則濾鏡將繼續使用其現有的參數。

以下選項也支援作為 命令

  • x
  • y
  • alpha
  • fontsize
  • fontcolor
  • boxcolor
  • bordercolor
  • shadowcolor
  • box
  • boxw
  • boxh
  • boxborderw
  • line_spacing
  • text_align
  • shadowx
  • shadowy
  • borderw

32.78.4 範例

  • 使用 FreeSerif 字型繪製 "Test Text",並對選用參數使用預設值。
    drawtext="fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text'"
    
  • 使用 FreeSerif 字型,大小為 24,在位置 x=100 和 y=50(從螢幕左上角算起)繪製 'Test Text',文字為黃色,並帶有紅色框線。文字和框線的不透明度均為 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

32.79 edgedetect

偵測並繪製邊緣。此濾鏡使用 Canny 邊緣偵測演算法。

通過第一個輸入。

low
high

設定 Canny 閾值演算法使用的低閾值和高閾值。

高閾值選擇「強」邊緣像素,然後通過 8 連通性與低閾值選擇的「弱」邊緣像素連接。

lowhigh 閾值必須在 [0,1] 範圍內選擇,並且 low 應小於或等於 high

low 的預設值為 20/255high 的預設值為 50/255

o

定義繪圖模式。

wires

在黑色背景上繪製白色/灰色線條。

colormix

混合顏色以創建繪畫/卡通效果。

canny

在所有選定的平面上應用 Canny 邊緣偵測器。

預設值為 wires

planes

選取要過濾的平面。預設情況下,會過濾所有可用的平面。

32.79.1 範例

  • 具有自訂遲滯閾值值的標準邊緣偵測
    edgedetect=low=0.1:high=0.4
    
  • 沒有閾值處理的繪畫效果
    edgedetect=mode=colormix:high=0
    

32.80 elbg

使用 ELBG (增強型 LBG) 演算法應用海報化效果。

對於每個輸入影像,濾鏡將根據碼本長度(即不同的輸出顏色數)計算從輸入到輸出的最佳映射。

此濾鏡接受以下選項。

codebook_length, l

設定碼本長度。該值必須為正整數,並表示不同的輸出顏色數。預設值為 256。

nb_steps, n

設定用於計算最佳映射的最大迭代次數。值越高,結果越好,計算時間也越長。預設值為 1。

種子,s

設定隨機種子,必須是介於 0 和 UINT32_MAX 之間的整數。如果未指定,或明確設定為 -1,則濾鏡將盡最大努力使用良好的隨機種子。

pal8

設定 pal8 輸出像素格式。此選項不適用於大於 256 的碼本長度。預設為停用。

use_alpha

在量化計算中包含 Alpha 值。允許建立具有多個 Alpha 平滑混合的調色輸出影像 (例如 PNG8)。

32.81 entropy

測量視訊影格顏色通道直方圖中的灰階熵。

它接受以下參數

o

可以是 normaldiff。預設值為 normal

diff 模式測量直方圖增量值、相鄰直方圖值之間絕對差異的熵。

32.82 epx

套用專為像素藝術設計的 EPX 放大濾鏡。

它接受以下選項

n

設定縮放尺寸:2 代表 2xEPX3 代表 3xEPX。預設值為 3

32.83 eq

設定亮度、對比度、飽和度和近似伽瑪調整。

通過第一個輸入。

threshold

設定對比度表達式。該值必須是範圍在 -1000.01000.0 之間的浮點值。預設值為 "1"。

brightness

設定亮度表達式。該值必須是範圍在 -1.01.0 之間的浮點值。預設值為 "0"。

saturation

設定飽和度表達式。該值必須是範圍在 0.03.0 之間的浮點數。預設值為 "1"。

gamma

設定伽瑪表達式。該值必須是範圍在 0.110.0 之間的浮點數。預設值為 "1"。

gamma_r

設定紅色的伽瑪表達式。該值必須是範圍在 0.110.0 之間的浮點數。預設值為 "1"。

gamma_g

設定綠色的伽瑪表達式。該值必須是範圍在 0.110.0 之間的浮點數。預設值為 "1"。

gamma_b

設定藍色的伽瑪表達式。該值必須是範圍在 0.110.0 之間的浮點數。預設值為 "1"。

gamma_weight

設定伽瑪權重表達式。它可用於減少高伽瑪值對明亮影像區域的影響,例如,防止它們過度放大並變成純白色。該值必須是範圍在 0.01.0 之間的浮點數。值為 0.0 會完全關閉伽瑪校正,而 1.0 會使其保持全強度。預設值為 "1"。

eval

設定何時評估亮度、對比度、飽和度和伽瑪表達式。

它接受以下值:

init

僅在濾鏡初始化期間或處理命令時評估表達式一次

frame

為每個傳入的影格評估表達式

預設值為 ‘init’。

表達式接受以下參數

n

輸入影格的影格計數,從 0 開始

影格中樣本數

輸入檔案中對應封包的位元組位置,如果未指定則為 NAN;已棄用,請勿使用

r

輸入視訊的影格率,如果輸入影格率未知則為 NAN

t

This is a text with a \' character and a \: character

32.83.1 指令

濾鏡支援以下命令

threshold

設定對比度表達式。

brightness

設定亮度表達式。

saturation

設定飽和度表達式。

gamma

設定伽瑪表達式。

gamma_r

設定 gamma_r 表達式。

gamma_g

設定 gamma_g 表達式。

gamma_b

設定 gamma_b 表達式。

gamma_weight

設定 gamma_weight 表達式。

命令接受與對應選項相同的語法。

修改音量表達式。指令接受與對應選項相同的語法。

32.84 erosion

對視訊套用侵蝕效果。

此濾鏡將像素替換為局部 (3x3) 最小值。

它接受以下選項

threshold0
threshold1
threshold2
threshold3

限制每個平面的最大變化,預設值為 65535。若為 0,平面將保持不變。

coordinates

標記,指定要參照的像素。預設值為 255,即使用所有八個像素。

到局部 3x3 座標的標記對應如下

1 2 3 4 5 6 7 8

32.84.1 指令

mode

32.85 estdif

解交錯輸入視訊("estdif" 代表 "邊緣斜率追蹤解交錯濾鏡")。

僅空間濾鏡,使用邊緣斜率追蹤演算法來插補遺失的線條。它接受以下參數

o

要採用的交錯模式。它接受以下其中一個值

frame

每個影格輸出一個影格。

field

每個場 (field) 輸出一個影格。

預設值為 field

parity

為輸入交錯視訊假設的圖像場奇偶性。它接受以下其中一個值

tff

假設頂場優先。

bff

假設底場優先。

設定投影階數。

啟用自動偵測場奇偶性。

預設值為 auto。如果交錯方式未知,或解碼器未匯出此資訊,則將假設為頂場優先。

deint

指定要對哪些影格進行去交錯處理。接受以下其中一個值

all

對所有影格進行去交錯處理。

interlaced

僅對標記為交錯的影格進行去交錯處理。

預設值為 all

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

六點插補。

32.85.1 指令

此濾鏡支援與選項相同的指令

32.86 exposure

調整視訊串流的曝光。

通過第一個輸入。

exposure

以 EV 為單位設定曝光校正。允許範圍為 -3.0 到 3.0 EV。預設值為 0 EV。

black

設定黑階校正。允許範圍為 -1.0 到 1.0。預設值為 0。

32.86.1 指令

此濾鏡支援與選項相同的指令

32.87 extractplanes

從輸入視訊串流中提取顏色通道分量到單獨的灰階視訊串流中。

此濾波器接受以下選項

planes

設定要提取的平面。

平面的可用值為

y
u
v
a
r
g
b

選擇輸入中不可用的平面將導致錯誤。這表示您無法同時選擇 rgb 平面和 yuv 平面。

32.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
    

32.88 fade

對輸入視訊套用淡入/淡出效果。

它接受以下參數

type, t

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

start_frame, s

指定開始套用淡化效果的影格編號。預設值為 0。

nb_frames, n

淡化效果持續的影格數。在淡入效果結束時,輸出視訊將具有與輸入視訊相同的強度。在淡出轉換結束時,輸出視訊將填充選定的 color。預設值為 25。

alpha

如果設定為 1,則僅淡化 Alpha 通道(如果輸入端存在)。預設值為 0。

start_time, st

指定開始套用淡化效果的影格時間戳記(以秒為單位)。如果同時指定了 start_frame 和 start_time,則淡化將從後者開始。預設值為 0。

release

淡化效果必須持續的秒數。在淡入效果結束時,輸出視訊將具有與輸入視訊相同的強度;在淡出轉換結束時,輸出視訊將填充選定的 color。如果同時指定了 duration 和 nb_frames,則使用 duration。預設值為 0(預設使用 nb_frames)。

color, c

指定淡化的顏色。預設值為 "black"。

32.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
    
  • 淡入前 25 個影格,並淡出 1000 個影格視訊的最後 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
    

32.89 feedback

套用回饋視訊濾鏡。

此濾鏡將裁剪的輸入影格傳遞到第二個輸出。從那裡可以使用其他視訊濾鏡進行過濾。在濾鏡從第二個輸入接收影格後,該影格會與來自第一個輸入的原始影格組合在一起,並傳遞到第一個輸出。

典型的用法是僅過濾影格的一部分。

通過第一個輸入。

x
y

設定左上角裁剪位置。

f
h

設定裁剪大小。

32.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]
    

32.90 fftdnoiz

使用 3D FFT(頻域濾波)對影格進行降噪。

通過第一個輸入。

sigma

設定雜訊西格瑪常數。這會設定降噪強度。預設值為 1。允許範圍為 0 到 30。在高重疊率下使用非常高的西格瑪值可能會產生區塊效應。

amount

設定降噪量。預設情況下,會減少所有偵測到的雜訊。預設值為 1。允許範圍為 0 到 1。

block

設定區塊大小(以像素為單位),預設值為 32,可以是 8 到 256。

overlap

設定區塊重疊率。預設值為 0.5。允許範圍為 0.2 到 0.8。

method

設定降噪方法。預設值為 wiener,也可以是 hard

prev

設定用於降噪的前一個影格數。預設設定為 0。

next

設定用於降噪的下一個影格數。預設設定為 0。

planes

設定將被過濾的平面,預設情況下會過濾所有可用的平面,但 Alpha 除外。

32.91 fftfilt

將任意表達式套用到頻域中的樣本

dc_Y

調整影像亮度平面的直流值(增益)。濾鏡接受範圍在 01000 之間的整數值。預設值設定為 0

dc_U

調整影像第一個色度平面的直流值(增益)。濾鏡接受範圍在 01000 之間的整數值。預設值設定為 0

dc_V

調整影像第二個色度平面的直流值(增益)。濾鏡接受範圍在 01000 之間的整數值。預設值設定為 0

weight_Y

設定亮度平面的頻域權重表達式。

weight_U

設定第一個色度平面的頻域權重表達式。

weight_V

設定第二個色度平面的頻域權重表達式。

eval

設定何時評估表達式。

它接受以下值:

init

僅在濾鏡初始化期間評估表達式一次。

frame

為每個傳入的影格評估表達式。

預設值為 ‘init’。

濾鏡接受以下變數

X
Y

目前樣本的座標。

W
H

影像的寬度和高度。

N

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

WS
HS

水平和垂直處理的 FFT 陣列大小。

32.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)))'
    

32.92 field

使用步幅運算從交錯影像中提取單個場,以避免浪費 CPU 時間。輸出影格會標記為非交錯。

通過第一個輸入。

type

指定要提取頂場(若值為 0top)或底場(若值為 1bottom)。

32.93 fieldhint

透過複製提示檔案中以數字提供的相鄰影格的頂場和底場,來建立新的影格。

提示

設定包含提示的檔案:絕對/相對影格編號。

剪輯片段中的每個影格都必須有一行。每一行必須包含兩個以逗號分隔的數字,可選擇性地後接 -+。在 absolute 模式下,每行提供的數字不得超出 [N-1, N+1] 範圍,其中 N 為目前影格編號;在 relative 模式下,不得超出 [-1, 1] 範圍。第一個數字表示從哪個影格擷取頂場,第二個數字表示從哪個影格擷取底場。

若選擇性地後接 +,則輸出影格會標記為交錯;若後接 -,則輸出影格會標記為漸進式;否則會標記為與輸入影格相同。若選擇性地後接 t,則輸出影格將僅使用頂場;若為 b,則僅使用底場。若行首為 #;,則該行會被跳過。

o

可以是項目 absoluterelativepattern。預設為 absolutepattern 模式與 relative 模式相同,但若要處理的影格多於提示檔案的最後一個條目,則會從頭開始搜尋提示檔案。

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 -

32.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

通過第一個輸入。

讓主輸入通過。

指定輸入串流的假定場序。可用值如下:

auto

自動偵測同位性(使用 FFmpeg 的內部同位性值)。

bff

假定底場優先。

tff

假定頂場優先。

請注意,有時建議不要信任串流宣告的同位性。

預設值為 auto

o

設定要使用的匹配模式或策略。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

三向匹配,若所有三種原始匹配都被偵測為梳狀,則嘗試第四/第五種匹配 (p/c/n + u/b)

結尾的括號表示在假設 order=tff(且 fieldautotop)的情況下,該模式將使用的匹配。

就速度而言,pc 模式是最快的,而 pcn_ub 模式是最慢的。

預設值為 pc_n

ppsrc

將主要輸入串流標記為預處理輸入,並啟用次要輸入串流作為乾淨來源以從中選擇場景。有關更多詳細資訊,請參閱濾鏡介紹。這與 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

scthresh

將場景變更偵測閾值設定為亮度平面上最大變更的百分比。良好的值介於 [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

強制 p/c/n 計算。

pcnub

強制 p/c/n/u/b 計算。

預設值為 none

cthresh

這是用於梳狀影格偵測的區域梳狀閾值。這基本上控制了要偵測到梳狀必須有多「強」或多「明顯」。較大的值表示梳狀必須更明顯,而較小的值表示梳狀可以較不明顯或較弱,但仍可被偵測到。有效設定範圍為從 -1(每個像素都會被偵測為梳狀)到 255(沒有像素會被偵測為梳狀)。這基本上是一個像素差異值。良好的範圍是 [8, 12]

預設值為 9

chroma

設定在梳狀影格決策中是否考慮色度。只有當您的來源存在色度問題(彩虹紋等)導致啟用色度的梳狀影格偵測出現問題時,才停用此功能。實際上,使用 chroma=0 通常更可靠,除非來源中存在僅有色度的梳狀。

預設值為 0

blockx
blocky

分別設定用於梳狀影格偵測期間的視窗的 x 軸和 y 軸大小。這與宣告影格為梳狀影格時,需要在其中偵測到 combpel 像素的區域大小有關。有關更多資訊,請參閱 combpel 參數描述。可能的值是任何以 2 為底的冪,從 4 開始到 512。

預設值為 16

combpel

在影格上任何 blocky 乘以 blockx 大小的區塊內,要偵測到梳狀影格的梳狀像素數量。雖然 cthresh 控制梳狀必須有多「明顯」,但此設定控制在影格上任何局部區域(由 blockxblocky 設定定義的視窗)中必須有多少「梳狀」。最小值為 0,最大值為 blocky x blockx(此時永遠不會偵測到任何影格為梳狀影格)。此設定在 TFM/VFM 術語中稱為 MI

預設值為 80

32.94.1 p/c/n/u/b 意義

32.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 匹配下一個影格中相反同位性的場景

32.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

32.94.2 範例

頂場優先電視電影串流的簡單 IVTC

fieldmatch=order=tff:combmatch=none, decimate

進階 IVTC,針對仍然是梳狀的影格後備使用 yadif

fieldmatch=order=tff:combmatch=full, yadif=deint=interlaced, decimate

32.95 fieldorder

轉換輸入視訊的場序。

它接受以下參數

讓主輸入通過。

輸出場序。有效值為 tff(頂場優先)或 bff(底場優先)。

預設值為 ‘tff’。

轉換是透過將圖片內容向上或向下移動一行,並用適當的圖片內容填充剩餘行來完成的。此方法與大多數廣播場序轉換器一致。

如果輸入視訊未標記為交錯,或已標記為所需的輸出場序,則此濾鏡不會改變輸入視訊。

當轉換為或從 PAL DV 素材(底場優先)轉換時,這非常有用。

例如

ffmpeg -i in.vob -vf "fieldorder=bff" out.dv

32.96 fillborders

填充輸入視訊的邊框,而不變更視訊串流尺寸。有時視訊的四個邊緣可能有雜訊,您可能不想裁剪視訊輸入以保持尺寸為某個數字的倍數。

此濾波器接受以下選項

left

從左邊框填充的像素數。

right

從右邊框填充的像素數。

top

從頂部邊框填充的像素數。

bottom

從底部邊框填充的像素數。

o

設定填充模式。

它接受以下值:

smear

使用最外層的像素填充像素

mirror

使用鏡像(半樣本對稱)填充像素

fixed

使用常數值填充像素

reflect

使用反射(全樣本對稱)填充像素

wrap

使用環繞填充像素

fade

將像素淡化為常數值

margins

使用邊框附近像素的加權平均值填充頂部和底部的像素

預設為 smear

顏色

設定固定或淡化模式中像素的顏色。預設為 black

32.96.1 指令

此濾波器支援與選項相同的 命令。該命令接受與對應選項相同的語法。

修改音量表達式。指令接受與對應選項相同的語法。

32.97 find_rect

在輸入視訊中尋找矩形物件。

要搜尋的物件必須指定為 gray8 影像,並使用 object 選項指定。

針對每個可能的匹配,都會計算一個分數。如果分數達到指定的閾值,則物件會被視為已找到。

如果輸入影片包含物件的多個實例,濾鏡將只會找到其中一個。

當找到物件時,以下的中繼資料項目會設定在匹配的影格中

lavfi.rect.w

物件寬度

lavfi.rect.h

物件高度

lavfi.rect.x

物件的 x 位置

lavfi.rect.y

物件的 y 位置

lavfi.rect.score

找到物件的匹配分數

它接受以下選項

object

物件影像的檔案路徑,需要為 gray8 格式。

u

偵測閾值,以 0-1 範圍內的十進制數字表示。

閾值 0.01 表示僅精確匹配,閾值 0.99 表示幾乎所有事物都匹配。

預設值為 0.5。

mipmaps

mipmap 的數量,預設值為 3。

xmin, ymin, xmax, ymax

指定要搜尋的矩形區域。

discard

捨棄未偵測到物件的影格。預設為停用。

32.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
    

32.98 floodfill

使用另一個值填充具有相同像素組件值的區域。

它接受以下選項

x

設定像素 x 座標。

y

設定像素 y 座標。

s0

設定來源 #0 組件值。

s1

設定來源 #1 組件值。

s2

設定來源 #2 組件值。

s3

設定來源 #3 組件值。

d0

設定目的地 #0 組件值。

d1

設定目的地 #1 組件值。

d2

設定目的地 #2 組件值。

d3

設定目的地 #3 組件值。

32.99 format

將輸入影片轉換為指定的像素格式之一。Libavfilter 將嘗試選取一個適合作為下一個濾鏡輸入的格式。

它接受以下參數

pix_fmts

以 '|' 分隔的像素格式名稱列表,例如 "pix_fmts=yuv420p|monow|rgb24"。

color_spaces

以 '|' 分隔的色彩空間名稱列表,例如 "color_spaces=bt709|bt470bg|bt2020nc"。

color_ranges

以 '|' 分隔的色彩範圍名稱列表,例如 "color_spaces=tv|pc"。

32.99.1 範例

  • 將輸入影片轉換為 yuv420p 格式
    format=pix_fmts=yuv420p
    

    將輸入影片轉換為列表中的任何格式

    format=pix_fmts=yuv420p|yuv444p|yuv410p
    

32.100 fps

透過複製或捨棄影格,將影片轉換為指定的恆定影格率。

它接受以下參數

fps

所需的輸出影格率。它接受包含以下常數的表達式

source_fps

輸入的影格率

ntsc

NTSC 影格率 30000/1001

pal

PAL 影格率 25.0

film

Film 影格率 24.0

ntsc_film

NTSC-film 影格率 24000/1001

預設值為 25

start_time

假設第一個 PTS 應為給定的值,以秒為單位。這允許在串流開始時進行填充/修剪。預設情況下,不會對第一個影格的預期 PTS 做出假設,因此不會進行填充或修剪。例如,可以將其設定為 0,以便在視訊串流在音訊串流之後開始時,用第一個影格的重複項填充開頭,或修剪任何具有負 PTS 的影格。

round

時間戳記 (PTS) 四捨五入方法。

可能的值為

zero

朝向 0 四捨五入

inf

遠離 0 四捨五入

down

朝向 - 無限大四捨五入

up

朝向 + 無限大四捨五入

near

四捨五入到最近的值

預設值為 near

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

讀取最後一個影格時執行的動作。

可能的值為

round

使用與其他影格相同時間戳記四捨五入方法。

如果是視訊,則為輸入影格的寬度和高度

如果尚未達到輸入持續時間,則傳遞最後一個影格。

預設值為 round

或者,選項可以指定為平面字串:fps[:start_time[:round]]。

另請參閱 setpts 濾鏡。

32.100.1 範例

  • 為了將 fps 設定為 25 的典型用法
    fps=fps=25
    
  • 將 fps 設定為 24,使用縮寫和四捨五入方法四捨五入到最近的值
    fps=fps=film:round=near
    

32.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

32.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 的值啟用場景變更偵測。預設情況下啟用此旗標。

32.103 framestep

每 N 個影格選取一個影格。

此濾鏡接受以下選項

step

step 個影格選取一個影格。允許值為大於 0 的正整數。預設值為 1

32.104 freezedetect

偵測靜止視訊。

當此濾鏡偵測到輸入視訊在指定的持續時間內內容沒有顯著變化時,它會記錄訊息並設定影格中繼資料。視訊靜止偵測會計算視訊影格所有組件的平均絕對差值,並將其與雜訊基底進行比較。

列印的時間和持續時間以秒為單位表示。lavfi.freezedetect.freeze_start 中繼資料鍵設定在時間戳記等於或超過偵測持續時間的第一個影格上,並且它包含靜止開始的第一個影格的時間戳記。lavfi.freezedetect.freeze_durationlavfi.freezedetect.freeze_end 中繼資料鍵設定在靜止之後的第一個影格上。

通過第一個輸入。

noise, n

設定雜訊容忍度。可以以 dB(如果將 "dB" 附加到指定值)或作為 0 到 1 之間的差異比率指定。預設值為 -60dB 或 0.001。

release

設定靜止持續時間直到通知(預設為 2 秒)。

32.105 freezeframes

凍結視訊影格。

此濾鏡使用來自第二個輸入的影格凍結視訊影格。

通過第一個輸入。

最短輸入的持續時間。

設定開始凍結的第一個影格的編號。

last

設定結束凍結的最後一個影格的編號。

replace

設定將用於取代已取代影格的第二個輸入影格的編號。

32.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)「Color」章節 中指定的顏色描述、位置(指定為 X/Y,其中 XY 是浮點數)和/或字串。

參數的數量和類型取決於載入的效果。如果未指定效果參數,則會設定預設值。

32.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

32.106.2 指令

此濾鏡支援作為 commandsfilter_params 選項。

32.107 fspp

套用快速且簡單的後處理。它是 spp 的更快版本。

它將 (I)DCT 分割為水平/垂直通道。與簡單的後處理濾鏡不同,它們之一是每個區塊執行一次,而不是每個像素執行一次。這允許更高的速度。

通過第一個輸入。

設定音調品質。可能的值為

設定品質。此選項定義平均的等級數。它接受 4-5 範圍內的整數。預設值為 4

qp

強制恆定量化參數。它接受 0-63 範圍內的整數。如果未設定,濾鏡將使用來自視訊串流的 QP(如果可用)。

強度 (strength)

設定濾鏡強度。它接受 -15 到 32 範圍內的整數。較低的值表示更多細節但也更多失真,而較高的值使影像更平滑但也更模糊。預設值為 0 − PSNR 最佳。

use_bframe_qp

如果設定為 1,則啟用使用來自 B 影格的 QP。使用此選項可能會導致閃爍,因為 B 影格通常具有較大的 QP。預設值為 0(未啟用)。

32.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 -

32.109 gblur

套用高斯模糊濾鏡。

通過第一個輸入。

sigma

設定水平 sigma,高斯模糊的標準差。預設值為 0.5

steps

設定高斯近似的步數。預設值為 1

planes

設定要過濾的平面。預設情況下,所有平面都會被過濾。

sigmaV

設定垂直 sigma,如果為負數,則與 sigma 相同。預設值為 -1

32.109.1 指令

此濾鏡支援與選項相同的指令。指令接受與相應選項相同的語法。

修改音量表達式。指令接受與對應選項相同的語法。

32.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

已過濾影格的序號,從 0 開始。

X
Y

目前樣本的座標。

W
H

影像的寬度和高度。

SW
SH

寬度和高度縮放取決於目前篩選的平面。它是相應亮度平面像素數與目前平面像素數之間的比率。例如,對於 YUV4:2:0,亮度平面的值為 1,1,色度平面的值為 0.5,0.5

T

目前影格的時間,以秒為單位表示。

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) 矩形範圍內樣本值的總和,這允許取得矩形內樣本的總和。請參閱不帶 sum 後綴的函數。

插值

設定其中一種插值方法

最近鄰, n
雙線性, b

預設為雙線性。

對於函數,如果 xy 超出區域範圍,值將會自動被裁剪到較近的邊緣。

請注意,此濾鏡可以使用多個執行緒,在這種情況下,每個切片都將擁有自己的表達式狀態。如果您想要僅使用單一表達式狀態,因為您的表達式依賴於先前的狀態,那麼您應該將濾鏡執行緒的數量限制為 1。

32.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
    

32.111 gradfun

修復由於截斷為 8 位元色彩深度而有時在近乎平坦區域中引入的色帶瑕疵。插值應該位於色帶位置的漸層,並對其進行抖動處理。

它專為播放而設計。請勿在有損壓縮之前使用它,因為壓縮往往會丟失抖動並帶回色帶。

它接受以下參數

強度 (strength)

濾鏡將更改任何一個像素的最大幅度。這也是偵測近乎平坦區域的閾值。可接受的值範圍為 .51 到 64;預設值為 1.2。超出範圍的值將被裁剪到有效範圍。

radius (半徑)

用於擬合漸層的鄰域。較大的半徑會產生更平滑的漸層,但也阻止濾鏡修改詳細區域附近的像素。可接受的值為 8-32;預設值為 16。超出範圍的值將被裁剪到有效範圍。

或者,可以將選項指定為平面字串:strength[:radius]

32.111.1 範例

  • 使用 3.5 強度和 8 半徑套用濾鏡
    gradfun=3.5:8
    
  • 指定半徑,省略強度(強度將回退到預設值)
    gradfun=radius=8
    

32.112 graphmonitor

顯示各種濾鏡圖統計資訊。

使用此濾鏡可以偵錯完整的濾鏡圖。特別是鏈接被排隊幀填滿的問題。

通過第一個輸入。

size, s

設定視訊輸出尺寸。預設為 hd720

不透明度, o

設定視訊不透明度。預設值為 0.9。允許的範圍從 01

mode, m

設定輸出模式標誌。

標誌的可用值為

full

不進行任何濾鏡處理。預設值。

compact

僅顯示具有排隊幀的濾鏡。

nozero

僅顯示具有非零統計資訊的濾鏡。

noeof

僅顯示具有非 eof 狀態的濾鏡。

nodisabled

僅顯示時間軸中已啟用的濾鏡。

標誌, 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

顯示上述兩個值之間的樣本數差。

disabled

顯示時間軸濾鏡狀態。

rate, r

設定輸出串流的視訊速率上限,預設值為 25。這保證輸出視訊幀率不會高於此值。

32.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

32.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) ) 如果 difford 大於 0,則不能等於 0。

32.114.1 範例

  • 灰邊
    greyedge=difford=1:minknorm=5:sigma=2
    
  • 最大邊緣
    greyedge=difford=1:minknorm=0:sigma=2
    

32.115 guided

套用導引濾鏡以進行邊緣保留平滑、去霧等。

通過第一個輸入。

radius (半徑)

設定以像素為單位的方框半徑。允許的範圍為 1 到 20。預設值為 3。

套用正規化最小均方 (LMS) 或最小均方四次方 (LMS-Fourth) 演算法到第一個音訊串流,使用第二個音訊串流。

設定正規化參數(帶平方)。允許的範圍為 0 到 1。預設值為 0.01。

o

設定濾鏡模式。可以是 basicfast。預設值為 basic

sub

設定 fast 模式的子取樣比率。範圍為 2 到 64。預設值為 4。basic 模式下不發生子取樣。

guidance

設定導引模式。可以是 offon。預設值為 off。如果為 off,則需要單個輸入。如果為 on,則需要兩個具有相同解析度和像素格式的輸入。第二個輸入充當導引。

planes

設定要過濾的平面。預設值為僅第一個。

32.115.1 指令

mode

32.115.2 範例

  • 使用導引濾鏡進行邊緣保留平滑處理
    ffmpeg -i in.png -vf guided out.png
    
  • 使用導引濾鏡進行去霧、結構轉換濾鏡、細節增強。有關導引圖像的產生,請參閱論文 "Guided Image Filtering"。請參閱:http://kaiminghe.com/publications/pami12guidedfilter.pdf
    ffmpeg -i in.png -i guidance.png -filter_complex guided=guidance=on out.png
    

32.116 haldclut

將 Hald CLUT 套用到視訊串流。

第一個輸入是要處理的視訊串流,第二個輸入是 Hald CLUT。Hald CLUT 輸入可以是簡單的圖片或完整的視訊串流。

通過第一個輸入。

clut

設定將從第二個輸入串流處理哪個 CLUT 視訊幀,可以是 firstall。預設值為 all

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

當最短的輸入終止時,強制終止。預設值為 0

[in]trim=start=10,smartblur=enable='between(t,10,180)',curves=enable='gte(t,3)'[out]

在串流結束後繼續套用最後一個 CLUT。值為 0 時,在到達 CLUT 的最後一幀後停用濾鏡。預設值為 1

haldclut 也具有與 lut3d 相同的插值選項(兩個濾鏡共享相同的內部結構)。

此濾鏡也支援 framesync 選項。

有關 Hald CLUT 的更多資訊,請參閱 Eskil Steenberg 的網站(Hald CLUT 作者):http://www.quelsolaar.com/technology/clut.html

32.116.1 指令

此濾鏡支援 commands 中的 interp 選項。

32.116.2 工作流程範例

32.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 串流的剩餘幀。

32.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"

32.117 hflip

水平翻轉輸入視訊。

例如,要使用 ffmpeg 水平翻轉輸入視訊

ffmpeg -i in.avi -vf "hflip" out.avi

32.118 histeq

此濾鏡在逐幀的基礎上應用全域色彩直方圖等化。

它可用於校正像素強度範圍被壓縮的視訊。濾鏡重新分配像素強度,以均衡其在強度範圍內的分布。它可以被視為「自動調整對比度濾鏡」。此濾鏡僅適用於校正劣化或不良捕捉的來源視訊。

通過第一個輸入。

強度 (strength)

確定要應用的等化量。隨著強度的降低,像素強度的分布越來越接近輸入幀的分布。該值必須是 [0,1] 範圍內的浮點數,預設值為 0.200。

強度

設定可以產生的最大強度並適當地縮放輸出值。應根據需要設定強度,然後可以在需要避免色彩過淡時限制強度。該值必須是 [0,1] 範圍內的浮點數,預設值為 0.210。

抗色帶

設定抗色帶等級。如果啟用,濾鏡將隨機少量改變輸出像素的亮度,以避免直方圖出現色帶。可能的值為 noneweakstrong。預設值為 none

32.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

components

設定要顯示的色彩分量。預設值為 7

fgopacity

設定前景不透明度。預設值為 0.7

bgopacity

設定背景不透明度。預設值為 0.5

colors_mode

設定色彩模式。它接受以下值

whiteonblack
blackonwhite
whiteongray
blackongray
coloronblack
coloronwhite
colorongray
blackoncolor
whiteoncolor
grayoncolor

預設值為 whiteonblack

32.119.1 範例

  • 計算並繪製直方圖
    ffplay -i input -vf histogram
    

32.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

32.120.1 指令

此濾波器支援與選項相同的 命令。該命令接受與對應選項相同的語法。

修改音量表達式。指令接受與對應選項相同的語法。

32.121 hwdownload

將硬體幀下載到系統記憶體。

輸入必須是硬體幀,輸出必須是非硬體格式。並非所有格式都將在輸出上受到支援 - 可能需要在圖形中緊隨其後插入額外的 format 濾鏡,以使輸出成為受支援的格式。

32.122 hwmap

將硬體幀映射到系統記憶體或另一個裝置。

此濾鏡具有幾種不同的操作模式;使用哪種模式取決於輸入和輸出格式

  • 硬體幀輸入,正常幀輸出

    將輸入幀映射到系統記憶體並將它們傳遞到輸出。如果稍後需要原始硬體幀(例如,在部分覆蓋其他內容之後),則可以在下一個模式中再次使用 hwmap 濾鏡來檢索它。

  • 正常幀輸入,硬體幀輸出

    如果輸入實際上是軟體映射的硬體幀,則取消映射它 - 也就是說,返回原始硬體幀。

    否則,必須提供裝置。在該裝置上為輸出建立新的硬體表面,然後將它們映射回輸入端的軟體格式,並將這些幀提供給前面的濾鏡。然後,這將像 hwupload 濾鏡一樣運作,但當輸入已經是相容格式時,可能會避免額外的複製。

  • 硬體幀輸入和輸出

    必須為輸出提供裝置,可以直接提供或使用 derive_device 選項提供。輸入和輸出裝置必須是不同類型且相容的 - 其確切含義取決於系統,但通常這意味著它們必須參考相同的底層硬體上下文(例如,參考相同的圖形卡)。

    如果輸入幀最初是在輸出裝置上建立的,則取消映射以檢索原始幀。

    否則,將幀映射到輸出裝置 - 在輸出上建立與輸入幀對應的新硬體幀。

接受以下其他參數

o

設定幀映射模式。以下組合之一

read

映射的幀應可讀取。

write (寫入)

write

映射的幀應可寫入。

overwrite

映射將始終覆寫整個幀。

這可以在某些情況下提高效能,因為不需要載入幀的原始內容。

direct

映射不得涉及任何複製。

在某些情況下,如果直接映射不可能或會產生意外的屬性,則會建立到幀副本的間接映射。設定此標誌可確保映射是直接的,並且在不可能的情況下會失敗。

derive_device type

不要使用初始化時提供的裝置,而是從輸入影格所在的裝置衍生出 type 類型的新裝置。

反向

在硬體對硬體的映射中,反向映射 - 在接收端建立影格,然後將它們映射回來源端。在某些情況下,可能需要單向映射,但只有裝置支援反向映射時,這可能是必要的。

這個選項很危險 - 如果前一個濾鏡的輸出有任何額外限制,它可能會以未定義的方式破壞前一個濾鏡。請勿在未完全理解其使用含義的情況下使用它。

32.123 hwupload

將系統記憶體影格上傳到硬體表面。

上傳目標裝置必須在初始化濾鏡時提供。如果使用 ffmpeg,請使用 -filter_hw_device 選項或 derive_device 選項選擇適當的裝置。輸入和輸出裝置必須是不同類型且相容的 - 其確切含義取決於系統,但通常表示它們必須指向相同的底層硬體上下文(例如,指向相同的顯示卡)。

接受以下其他參數

derive_device type

不要使用初始化時提供的裝置,而是從輸入影格所在的裝置衍生出 type 類型的新裝置。

32.124 hwupload_cuda

將系統記憶體影格上傳到 CUDA 裝置。

它接受以下可選參數

device

要使用的 CUDA 裝置編號

32.125 hqx

套用專為像素藝術設計的高品質放大濾鏡。此濾鏡最初由 Maxim Stepin 建立。

它接受以下選項

n

設定縮放尺寸:2 代表 hq2x3 代表 hq3x4 代表 hq4x。預設值為 3

32.126 hstack

水平堆疊輸入視訊。

所有串流必須具有相同的像素格式和相同的高度。

請注意,此濾鏡比使用 overlaypad 濾鏡建立相同的輸出更快。

此濾波器接受以下選項

inputs (輸入)

設定輸入串流的數量。預設值為 2。

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

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

32.127 hsvhold

將特定的 HSV 範圍轉換為灰階值。

此濾鏡測量選項中設定的 HSV 顏色與視訊串流中測量的顏色之間的色差。根據選項,輸出顏色可以更改為灰色或非灰色。

通過第一個輸入。

hue

設定將用於色差計算的色相值。允許範圍為 -360 到 360。預設值為 0。

飽和度

設定將用於色差計算的飽和度值。允許範圍為 -1 到 1。預設值為 0。

明度

設定將用於色差計算的明度值。允許範圍為 -1 到 1。預設值為 0。

similarity

設定與關鍵色的相似度百分比。允許範圍為 0 到 1。預設值為 0.01。

0.00001 僅匹配完全相同的關鍵色,而 1.0 匹配所有顏色。

blend

混合百分比。允許範圍為 0 到 1。預設值為 0。

0.0 使像素完全變成灰色,或完全不變成灰色。

值越高,灰色像素越多,且像素顏色與關鍵色越相似,灰色像素越深。

32.128 hsvkey

將特定的 HSV 範圍轉換為透明度。

此濾鏡測量選項中設定的 HSV 顏色與視訊串流中測量的顏色之間的色差。根據選項,可以透過新增 alpha 通道將輸出顏色更改為透明。

通過第一個輸入。

hue

設定將用於色差計算的色相值。允許範圍為 -360 到 360。預設值為 0。

飽和度

設定將用於色差計算的飽和度值。允許範圍為 -1 到 1。預設值為 0。

明度

設定將用於色差計算的明度值。允許範圍為 -1 到 1。預設值為 0。

similarity

設定與關鍵色的相似度百分比。允許範圍為 0 到 1。預設值為 0.01。

0.00001 僅匹配完全相同的關鍵色,而 1.0 匹配所有顏色。

blend

混合百分比。允許範圍為 0 到 1。預設值為 0。

0.0 使像素完全透明,或完全不透明。

較高的值會產生半透明像素,像素顏色與關鍵顏色越相似,透明度越高。

32.129 hue

修改輸入的色相和/或飽和度。

它接受以下參數

h

以度為單位指定色相角度。它接受表達式,預設為 "0"。

s

在 [-10,10] 範圍內指定飽和度。它接受表達式,預設為 "1"。

H

以弧度為單位指定色相角度。它接受表達式,預設為 "0"。

b

在 [-10,10] 範圍內指定亮度。它接受表達式,預設為 "0"。

hH 是互斥的,不能同時指定。

bhHs 選項值是包含以下常數的表達式

n

輸入影格的影格計數,從 0 開始

pts

以時間基底單位表示的輸入影格的呈現時間戳記

r

輸入視訊的影格率,如果輸入影格率未知則為 NAN

t

This is a text with a \' character and a \: character

影格時間

輸入視訊的時間基底

32.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))"
    

32.129.2 指令

此濾波器支援以下命令

b
s
h
H

修改輸入視訊的色相和/或飽和度和/或亮度。此命令接受與對應選項相同的語法。

修改音量表達式。指令接受與對應選項相同的語法。

32.130 huesaturation

對輸入視訊串流套用色相-飽和度-強度調整。

此濾鏡在 RGB 色彩空間中運作。

此濾波器接受以下選項

hue

設定要套用的色相偏移度數。預設值為 0。允許範圍為 -180 到 180。

saturation

設定飽和度偏移。預設值為 0。允許範圍為 -1 到 1。

強度

設定強度偏移。預設值為 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 三元組的亮度,啟用此選項後,亮度將保持相同的值。

32.131 hysteresis

透過連接組件將第一個串流擴展到第二個串流中。這使得建立更穩健的邊緣遮罩成為可能。

此濾波器接受以下選項

planes

設定哪些平面將被處理為點陣圖,未處理的平面將從第一個串流複製。預設值為 0xf,所有平面都將被處理。

u

設定用於濾鏡的閾值。如果像素分量值高於此值,則會啟動用於連接組件的濾鏡演算法。預設值為 0。

hysteresis 濾鏡也支援 framesync 選項。

32.132 iccdetect

從嵌入的 ICC 設定檔(如果存在)偵測色彩空間,並相應地更新影格的標籤。

此濾波器接受以下選項

強制

如果為 true,則影格現有的色彩空間標籤將始終被從 ICC 設定檔偵測到的值覆蓋。否則,只有在它們包含 unknown 時才會被分配。預設為啟用。

32.133 iccgen

產生 ICC 設定檔並將其附加到影格。

此濾波器接受以下選項

color_primaries
color_trc

設定將為其產生 ICC 設定檔的色彩空間。auto 的預設值從輸入影格的中繼資料推斷值,並根據需要預設為 BT.709/sRGB。

請參閱 setparams 濾鏡以取得可能值的清單,但請注意,unknown 對於此濾鏡而言不是有效值。

強制

如果為 true,即使會覆寫已存在的 ICC 設定檔,也會產生 ICC 設定檔。預設為停用。

32.134 identity

取得兩個輸入視訊之間的相似度分數。

此濾鏡採用兩個輸入視訊。

為了使此濾鏡正常運作,兩個輸入視訊都必須具有相同的解析度和像素格式。 此外,它假設兩個輸入具有相同的影格數,這些影格會逐一比較。

取得的每個分量、平均值、最小值和最大值相似度分數會透過記錄系統列印出來。

濾鏡將每個影格的計算相似度分數儲存在影格中繼資料中。

此濾鏡也支援 framesync 選項。

在以下範例中,正在處理的輸入檔案 main.mpg 會與參考檔案 ref.mpg 進行比較。

ffmpeg -i main.mpg -i ref.mpg -lavfi identity -f null -

32.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 濾鏡作為一種低計算量的方法插入,以清理交錯標誌

32.135.1 範例

詳細檢查視訊中前 360 個影格的場序

ffmpeg -i INPUT -filter:v idet,metadata=mode=print -frames:v 360 -an -f null -

idet 濾鏡將中繼資料分析新增到每個影格,然後將其丟棄。最後,濾鏡還將列印包含統計資料的最終報告。

32.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

32.136.1 指令

mode

32.137 inflate

對視訊套用膨脹效果。

此濾鏡透過僅考慮高於像素的值,用局部 (3x3) 平均值取代像素。

它接受以下選項

threshold0
threshold1
threshold2
threshold3

限制每個平面的最大變化,預設值為 65535。若為 0,平面將保持不變。

32.137.1 指令

mode

32.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

它接受以下可選參數

掃描

這決定交錯影格是取自漸進式影格的偶數行(tff - 預設)還是奇數行(bff)。

低通

垂直低通濾鏡,以避免推特交錯並減少摩爾紋圖案。

‘<samp>0, off</samp>’

停用垂直低通濾鏡

1, linear

啟用線性濾鏡(預設)

2, complex

啟用複雜濾鏡。這將稍微減少推特和摩爾紋,但更好地保留細節和主觀清晰度印象。

32.139 kerndeint

透過套用 Donald Graft 的自適應核心解交錯來解交錯輸入視訊。處理視訊的交錯部分以產生漸進式影格。

以下是接受參數的描述。

thresh

設定閾值,該閾值會影響濾鏡在判斷是否必須處理像素行時的容差。它必須是 [0,255] 範圍內的整數,預設值為 10。值為 0 將導致在每個像素上套用該處理。

對應 (map)

如果設定為 1,則將超過閾值的像素塗成白色。預設值為 0。

讓主輸入通過。

設定場序。如果設定為 1,則交換場;如果為 0,則保持場不變。預設值為 0。

sharp

如果設定為 1,則啟用額外銳化。預設值為 0。

twoway

如果設定為 1,則啟用雙向銳化。預設值為 0。

32.139.1 範例

  • 套用預設值
    kerndeint=thresh=10:map=0:order=0:sharp=0:twoway=0
    
  • 啟用額外銳化
    kerndeint=sharp=1
    
  • 將處理過的像素塗成白色
    kerndeint=map=1
    

32.140 kirsch

對輸入視訊串流套用 Kirsch 運算子。

此濾波器接受以下選項

planes

設定將處理哪些平面,未處理的平面將被複製。預設值為 0xf,所有平面都將被處理。

scale

設定將與濾鏡結果相乘的值。

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

設定將新增到濾鏡結果的值。

32.140.1 指令

mode

32.141 lagfun

緩慢更新較暗的像素。

此濾鏡使短暫的光閃爍看起來更長。此濾鏡接受以下選項

decay

設定衰減係數。預設值為 .95。允許範圍為 0 到 1。

planes

設定要過濾的平面。預設值為全部。允許的範圍從 0 到 15。

32.141.1 指令

mode

32.142 lenscorrection

校正徑向鏡頭失真

此濾鏡可用於校正廣角鏡頭使用可能導致的徑向失真,從而重新校正影像。若要找到正確的參數,可以使用例如 opencv 中提供的工具,或簡單地進行試錯。若要使用 opencv,請使用 opencv 來源中的校正範例(在 samples/cpp 下),並從結果矩陣中提取 k1 和 k2 係數。

請注意,開源工具 Krita 和 Digikam (來自 KDE 專案) 中也提供了實際上相同的濾鏡。

vignette 濾鏡(也可用於補償鏡頭誤差)相比,此濾鏡校正影像的失真,而 vignette 校正亮度分佈,因此在某些情況下您可能需要一起使用這兩個濾鏡,儘管您必須注意順序,即暈影應在鏡頭校正之前還是之後套用。

32.142.1 選項

通過第一個輸入。

cx

影像焦點的相對 x 座標,從而是失真的中心。此值的範圍為 [0,1],並表示為影像寬度的分數。預設值為 0.5。

cy

影像焦點的相對 y 座標,從而是失真的中心。此值的範圍為 [0,1],並表示為影像高度的分數。預設值為 0.5。

k1

二次校正項的係數。此值的範圍為 [-1,1]。0 表示不校正。預設值為 0。

k2

二次方校正項的係數。此值的範圍為 [-1,1]。0 表示不校正。預設值為 0。

從時間戳記小於或等於主輸入影格的輔助輸入影格。

設定插值類型。可以是 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 分別是來源影像和目標影像中距焦點的距離。

32.142.2 指令

mode

32.143 lensfun

透過 lensfun 函式庫 (http://lensfun.sourceforge.net/) 套用鏡頭校正。

lensfun 濾鏡需要相機廠牌、相機型號和鏡頭型號才能套用鏡頭校正。此濾鏡會載入 lensfun 資料庫並查詢,以在資料庫中找到對應的相機和鏡頭條目。只要能使用給定的選項找到這些條目,濾鏡就能對影格執行校正。請注意,不完整的字串會導致濾鏡選擇與給定選項最符合的項目,並且濾鏡會輸出所選的相機和鏡頭型號(記錄層級為 "info")。您必須提供廠牌、相機型號和鏡頭型號,因為這些是必要資訊。

若要取得可用廠牌和型號的清單,請省略 makemodel 選項的其中一個或兩個。濾鏡會將完整清單傳送到記錄檔,記錄層級為 INFO。第一欄是廠牌,第二欄是型號。若要取得可用鏡頭的清單,請為廠牌和型號設定任何值,並省略 lens_model 選項。濾鏡會將完整鏡頭清單傳送到記錄檔,記錄層級為 INFO。ffmpeg 工具會在列印清單後結束。

通過第一個輸入。

make

相機的廠牌(例如 "Canon")。此選項為必填。

model

相機的型號(例如 "Canon EOS 100D")。此選項為必填。

lens_model

鏡頭的型號(例如 "Canon EF-S 18-55mm f/3.5-5.6 IS STM")。此選項為必填。

db_path

鏡頭資料庫資料夾的完整路徑。若未設定,濾鏡會在建置程式庫時嘗試從安裝路徑載入資料庫。預設為未設定。

o

要套用的校正類型。以下值為有效選項

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
反向

套用影像校正的反向操作(不是校正變形,而是套用變形)。

插值

校正變形時使用的插值類型。以下值為有效選項

nearest
linear (default)
lanczos

32.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
    

32.144 lcevc

基於 liblcevc_dec 的低複雜度增強視訊編解碼器濾鏡 (https://github.com/v-novaltd/LCEVCdec)。

32.145 libplacebo

基於 libplacebo 的彈性 GPU 加速處理濾鏡 (https://code.videolan.org/videolan/libplacebo)。

32.145.1 選項

此濾鏡的選項分為以下幾個部分

32.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

指定當輸入縱橫比與輸出縱橫比不符且 normalize_sar 生效時,填充和裁剪之間的比例(介於 0.01.0 之間)。預設值 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
range

配置輸出影格將交付的色彩空間。預設值 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 開始。

32.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

基於 jinc-sinc 核心的 lanczos 的橢圓加權平均版本。這也通常被稱為 "Jinc 縮放"。速度慢但品質非常高。

gaussian

高斯核心。具有某些理想的數學特性,但主觀上非常模糊。

mitchell

Mitchell 和 Netravali 建議的參數的 Cubic BC 樣條。振鈴效應非常小。

frame_mixer

控制用於時間上混合影格的核心。預設值為 none,這會停用影格混合。有關可能值的完整列表,請將 help 傳遞給此選項。最重要的值是

none

停用影格混合,產生與 "最近鄰" 語義等效的結果。

oversample

對輸入影片進行過採樣以創建 "平滑運動" 類型效果:如果輸出影格恰好落在兩個影片影格之間的過渡處,則會根據相對重疊進行混合。只要希望保留原始主觀外觀,就建議使用此選項。

mitchell_clamp

更大的濾鏡核心,可以平滑地內插多個影格,旨在盡可能消除振鈴和其他偽影。在任何希望獲得最大視覺平滑度的情況下,都建議使用此選項。

linear

影格之間的線性混合/淡入淡出。特別適用於建構例如幻燈片。

lut_entries

配置縮放器 LUT 的大小,範圍從 1256。預設值 0 將選擇 libplacebo 的內部預設值,通常為 64

antiringing

啟用抗振鈴(對於非 EWA 濾鏡)。值(介於 0.01.0 之間)配置抗振鈴演算法的強度。如果設定得太高,可能會增加鋸齒。預設為停用。

sigmoid

在升頻期間啟用 S 形壓縮。稍微減少振鈴。預設為啟用。

32.145.1.3 去色帶

Libplacebo 帶有一個內建的去色帶濾鏡,擅長應對許多常見的色帶和色塊來源。在需要品質時,強烈建議開啟此功能。

deband

啟用(快速)去色帶演算法。預設為停用。

deband_iterations

去色帶演算法的去色帶迭代次數。每次迭代都以逐漸增加的半徑(和減小的閾值)執行。建議值在 14 的範圍內。預設值為 1

deband_threshold

去色帶濾鏡強度。數字越高,去色帶越積極。預設值為 4.0

deband_radius

去色帶濾鏡半徑。較高的半徑更適合緩慢的漸變,而較低的半徑更適合陡峭的漸變。預設值為 16.0

deband_grain

要添加的額外輸出顆粒量。有助於隱藏瑕疵。預設值為 6.0

32.145.1.4 色彩調整

一組主觀顏色控制項。不是很嚴格,因此確切效果會因輸入原色和色彩空間而異。

brightness

亮度提升,介於 -1.01.0 之間。預設值為 0.0

threshold

對比度增益,介於 0.016.0 之間。預設值為 1.0

saturation

飽和度增益,介於 0.016.0 之間。預設值為 1.0

hue

色相偏移(以弧度為單位),介於 -3.143.14 之間。預設值為 0.0。這將旋轉 UV 子向量,預設為 RGB 輸入的 BT.709 係數。

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 的值會導致誇大錐狀細胞之間的差異,這可能有助於補償降低的顏色視覺。

32.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。將任一值設定為負值會停用此功能。

百分位數

要用作色調映射的來源峰值的幀亮度直方圖百分位數。預設值為 99.995,是一個相當保守的值。將此值設定為 100.0 會停用幀直方圖測量,並改為使用真實的峰值亮度進行色調映射。

32.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 中定義的主觀增益/偏移/伽瑪控制。

bt.2390

來自 ITU-R 報告 BT.2390 的 EETF,一種具有線性段的埃爾米特樣條滾降。膝點偏移量是可配置的。請注意,此參數預設為 1.0,而不是 ITU-R 規範中的 0.5 值。

bt.2446a

來自 ITU-R 報告 BT.2446,方法 A 的 EETF。專為良好母帶處理的 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 中,靈感來自柯達使用的類似色調映射演算法。因其在具有 HDR 渲染的電子遊戲中的使用而普及。可以很好地保留黑暗和明亮的細節,但缺點是會顯著改變平均亮度。這有點類似於參數為 0.24reinhard

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 停用時無效。

32.145.1.7 抖動

預設情況下,libplacebo 會在必要時進行抖動,包括渲染到任何低於 16 位元精度的整數格式。建議始終保持啟用狀態,因為不這樣做可能會導致輸出中出現可見的色帶,即使啟用了 debanding 濾鏡也是如此。如果需要最大效能,請使用 ordered_fixed 而不是停用抖動。

dithering

要使用的抖動方法。接受以下值

none

完全停用抖動。可能會導致可見的色帶。

blue

使用偽藍色雜訊進行抖動。這是預設值。

ordered

可調整的有序抖動模式。

ordered_fixed

更快的有序抖動,固定大小為 6。無紋理。

white

使用白色雜訊進行抖動。無紋理。

dither_lut_size

抖動 LUT 大小,以 18 之間的 2 為底的對數表示。預設值為 6,對應於 64x64 的 LUT 大小。

dither_temporal

啟用時間抖動。預設為停用。

32.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

將完整的自訂著色器指定為原始字串。

32.145.1.9 偵錯 / 效能

本節中的所有選項預設為關閉。當嘗試以品質為代價來擠出最大效能時,它們可能會有所幫助。

skip_aa

在縮小時停用反鋸齒。

polar_cutoff

截斷低於此絕對幅值的極坐標 (EWA) 縮放器核心,範圍介於 0.01.0 之間。

disable_linear

停用線性光縮放。

disable_builtin

停用內建 GPU 採樣(強制 LUT)。

disable_fbos

強制停用 FBO,導致幾乎所有功能都喪失,但提供最大可能的速度。

32.145.2 指令

此濾鏡幾乎支援上述所有選項作為命令

32.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
    

32.146 libvmaf

計算參考/失真輸入影片的 VMAF(影片多方法評估融合)分數。

第一個輸入是失真影片,第二個輸入是參考影片。

獲得的 VMAF 分數透過日誌系統列印。

它需要 Netflix 的 vmaf 庫 (libvmaf) 作為先決條件。安裝庫後,可以使用以下命令啟用它:./configure --enable-libvmaf

此濾鏡具有以下選項

model

一個以 ‘|’ 分隔的 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 選項。

32.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 -
    

32.147 libvmaf_cuda

這是 libvmaf 濾鏡的 CUDA 變體。它僅接受 CUDA 幀。

它需要 Netflix 的 vmaf 庫 (libvmaf) 作為先決條件。安裝庫後,可以使用以下命令啟用它:./configure --enable-nonfree --enable-ffnvcodec --enable-libvmaf

32.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 -
    

32.148 limitdiff

使用第二個和可選的第三個影片流應用有限差異濾鏡。

通過第一個輸入。

u

設定在允許影片流之間存在某些差異時要使用的閾值。任何絕對差異值低於或等於此閾值,都將從第一個影片流中選取像素分量。

elasticity

設定處理影片流時軟閾值的彈性。此值乘以第一個值設定第二個閾值。任何絕對差異值大於或等於第二個閾值,都將從第二個影片流中選取像素分量。對於這兩個閾值之間的值,將使用第一個和第二個影片流之間的線性插值。

reference

啟用參考(第三個)影片流處理。預設情況下為停用。如果設定,此影片流將用於計算與第一個影片流的絕對差異。

planes

指定要處理的平面。預設為所有可用平面。

32.148.1 指令

此濾鏡支援上述所有選項作為命令,但 ‘reference’ 選項除外。

32.149 limiter

將像素分量值限制在指定的範圍 [min, max] 內。

通過第一個輸入。

min

下限。預設值為輸入允許的最低值。

max

上限。預設值為輸入允許的最高值。

planes

指定要處理的平面。預設為所有可用平面。

32.149.1 指令

mode

32.150 loop

循環播放影片幀。

通過第一個輸入。

loop

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

size

設定幀數的最大大小。預設值為 0。

start

設定循環的第一幀。預設值為 0。

time (時間)

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

32.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
    

32.151 lut1d

將 1D LUT 應用於輸入影片。

通過第一個輸入。

file

設定 1D LUT 檔案名稱。

目前支援的格式

cube

Iridas

csp

cineSpace

interp

選擇插值模式。

可用值為

nearest

使用最近定義點的值。

linear

使用線性插值法插值。

cosine

使用餘弦插值法插值。

cubic

使用立方插值法插值。

spline

使用樣條插值法插值。

32.151.1 指令

mode

32.152 lut3d

將 3D LUT 應用於輸入視訊。

通過第一個輸入。

file

設定 3D LUT 檔案名稱。

目前支援的格式

3dl

AfterEffects

cube

Iridas

dat

DaVinci

m3d

Pandora

csp

cineSpace

interp

選擇插值模式。

可用值為

nearest

使用最近定義點的值。

trilinear

使用定義立方體的 8 個點插值。

tetrahedral

使用四面體插值。

pyramid

使用金字塔插值。

prism

使用稜鏡插值。

32.152.1 指令

此濾鏡支援 commands 中的 interp 選項。

32.153 lumakey

將特定亮度值轉換為透明度。

通過第一個輸入。

u

設定將用作透明度基礎的亮度。預設值為 0

tolerance

設定要鍵控輸出的亮度值範圍。預設值為 0.01

softness

設定柔和度範圍。預設值為 0。使用此選項可控制從零到完全透明的漸變過渡。

32.153.1 指令

此濾波器支援與選項相同的 命令。該命令接受與對應選項相同的語法。

修改音量表達式。指令接受與對應選項相同的語法。

32.154 lut, lutrgb, lutyuv

計算一個查找表,用於將每個像素組件輸入值綁定到輸出值,並將其應用於輸入視訊。

lutyuv 將查找表應用於 YUV 輸入視訊,lutrgb 應用於 RGB 輸入視訊。

這些濾鏡接受以下參數

c0

設定第一個像素組件表達式

c1

設定第二個像素組件表達式

c2

設定第三個像素組件表達式

c3

設定第四個像素組件表達式,對應於 alpha 組件

r

設定紅色組件表達式

w

設定綠色組件表達式

b

設定藍色組件表達式

a

alpha 組件表達式

y

設定 Y/亮度組件表達式

u

設定 U/Cb 組件表達式

v

設定 V/Cr 組件表達式

它們中的每一個都指定用於計算相應像素組件值的查找表的表達式。

與每個 c* 選項關聯的確切組件取決於輸入格式。

lut 濾鏡需要 YUV 或 RGB 像素格式輸入,lutrgb 需要 RGB 像素格式輸入,而 lutyuv 需要 YUV。

表達式可以包含以下常數和函數

f
h

輸入寬度和高度。

明度

像素組件的輸入值。

clipval

輸入值,裁剪到 minval-maxval 範圍。

maxval

像素組件的最大值。

minval

像素組件的最小值。

negval

像素組件值的負值,裁剪到 minval-maxval 範圍;它對應於表達式 "maxval-clipval+minval"。

clip(val)

val 中計算出的值,裁剪到 minval-maxval 範圍。

gammaval(gamma)

像素組件值的計算伽瑪校正值,裁剪到 minval-maxval 範圍。它對應於表達式 "pow((clipval-minval)/(maxval-minval)\,gamma)*(maxval-minval)+minval"

所有表達式預設為 "clipval"。

32.154.1 指令

此濾鏡支援與選項相同的指令

32.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"
    
  • 將亮度伽瑪校正係數設為 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'
    

32.155 lut2, tlut2

lut2 濾鏡採用兩個輸入流並輸出一個流。

tlut2(時間 lut2)濾鏡從單個流中獲取兩個連續的幀。

此濾鏡接受以下參數

c0

設定第一個像素組件表達式

c1

設定第二個像素組件表達式

c2

設定第三個像素組件表達式

c3

設定第四個像素組件表達式,對應於 alpha 組件

d

設定輸出位元深度,僅適用於 lut2 濾鏡。預設值為 0,表示位元深度是從第一個輸入格式自動選取的。

lut2 濾鏡也支援 framesync 選項。

它們中的每一個都指定用於計算相應像素組件值的查找表的表達式。

與每個 c* 選項關聯的確切組件取決於輸入格式。

表達式可以包含以下常數

f
h

輸入寬度和高度。

x

像素組件的第一個輸入值。

y

像素組件的第二個輸入值。

bdx

第一個輸入視訊位元深度。

bdy

第二個輸入視訊位元深度。

所有表達式預設為 "x"。

32.155.1 指令

此濾鏡支援以上所有選項作為 commands,但選項 d 除外。

32.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)))'
    

32.156 maskedclamp

使用第二個輸入流和第三個輸入流鉗制第一個輸入流。

傳回第一個流的值,該值介於第二個輸入流 - undershoot 和第三個輸入流 + overshoot 之間。

此濾波器接受以下選項

undershoot

預設值為 0

overshoot

預設值為 0

planes

設定哪些平面將被處理為點陣圖,未處理的平面將從第一個串流複製。預設值為 0xf,所有平面都將被處理。

32.156.1 指令

mode

32.157 maskedmax

使用第二個輸入流與第一個輸入流之間的絕對差異以及第三個輸入流與第一個輸入流之間的絕對差異,將第二個和第三個輸入流合併到輸出流中。如果第二個絕對差異大於第一個,則選取的值將來自第二個輸入流,否則來自第三個輸入流。

此濾波器接受以下選項

planes

設定哪些平面將被處理為點陣圖,未處理的平面將從第一個串流複製。預設值為 0xf,所有平面都將被處理。

32.157.1 指令

mode

32.158 maskedmerge

使用第三個輸入流中的每個像素權重,將第一個輸入流與第二個輸入流合併。

第三個流像素組件中的值 0 表示第一個流的像素組件保持不變,而最大值(例如,8 位元視訊的 255)表示第二個流的像素組件保持不變。中間值定義兩個輸入流的像素組件之間的合併量。

此濾波器接受以下選項

planes

設定哪些平面將被處理為點陣圖,未處理的平面將從第一個串流複製。預設值為 0xf,所有平面都將被處理。

32.158.1 指令

mode

32.159 maskedmin

使用第二個輸入流與第一個輸入流之間的絕對差異以及第三個輸入流與第一個輸入流之間的絕對差異,將第二個和第三個輸入流合併到輸出流中。如果第二個絕對差異小於第一個,則選取的值將來自第二個輸入流,否則來自第三個輸入流。

此濾波器接受以下選項

planes

設定哪些平面將被處理為點陣圖,未處理的平面將從第一個串流複製。預設值為 0xf,所有平面都將被處理。

32.159.1 指令

mode

32.160 maskedthreshold

透過比較兩個視訊流的絕對差異與固定閾值來選取像素。

如果第一個和第二個視訊流的像素組件之間的絕對差異等於或低於使用者提供的閾值,則選取第一個視訊流的像素組件,否則選取第二個視訊流的像素組件。

此濾波器接受以下選項

u

設定從兩個輸入視訊流的絕對差異中選取像素時使用的閾值。

planes

設定哪些平面將作為點陣圖處理,未處理的平面將從第二個流複製。預設值 0xf,所有平面都將被處理。

o

設定濾鏡操作模式。可以是 absdiff。預設值為 abs

32.160.1 指令

mode

32.161 maskfun

從輸入視訊建立遮罩。

例如,在 tblend 濾鏡之後建立運動遮罩非常有用。

此濾波器接受以下選項

low

設定低閾值。任何低於或等於此值的像素組件都將設定為 0。

high

設定高閾值。任何高於此值的像素組件都將設定為目前像素格式允許的最大值。

planes

設定要篩選的平面,預設情況下會篩選所有可用平面。

fill

使用此值填滿所有幀像素。

sum

設定幀的最大平均像素值。如果所有像素組件的總和高於此平均值,則輸出幀將完全填滿由 fill 選項設定的值。通常與 tblend 濾鏡結合使用時,對於場景變更很有用。

32.161.1 指令

mode

32.162 mcdeint

應用運動補償反交錯。

它需要每個幀一個場作為輸入,因此必須與 yadif=1/3 或同等產品一起使用。

此濾波器接受以下選項

o

設定反交錯模式。

它接受以下其中一個值

fast
medium
slow

使用迭代運動估計

extra_slow

類似於 ‘slow’,但使用多個參考幀。

預設值為 ‘fast’。

parity

設定為輸入視訊假設的圖像場奇偶性。它必須是以下其中一個值

0, tff

假設頂場優先

1, bff

假設底場優先

預設值為 ‘bff’。

qp

設定內部編碼器使用的每個區塊量化參數 (QP)。

較高的值應產生更平滑的運動向量場,但個別向量的優化程度較低。預設值為 1。

32.163 median

從半徑定義的特定矩形中選取中位數像素。

此濾波器接受以下選項

radius (半徑)

設定水平半徑大小。預設值為 1。允許的範圍是從 1 到 127 的整數。

planes

設定要處理的平面。預設值為 15,即所有可用平面。

radiusV

設定垂直半徑大小。預設值為 0。允許的範圍是從 0 到 127 的整數。如果為 0,則將從水平 radius 選項中選取值。

百分位數

設定中位數百分位數。預設值為 0.5。預設值 0.5 將始終選取中位數,而 0 將選取最小值,1 將選取最大值。

32.163.1 指令

此濾波器支援與選項相同的 命令。該命令接受與對應選項相同的語法。

修改音量表達式。指令接受與對應選項相同的語法。

32.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

32.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
    

32.165 mestimate

使用區塊比對演算法估計和匯出運動向量。運動向量儲存在幀邊數據中,供其他濾鏡使用。

此濾波器接受以下選項

method

指定運動估計方法。接受以下其中一個值

esa

窮舉搜尋演算法。

tss

三步搜尋演算法。

tdls

二維對數搜尋演算法。

ntss

新三步搜尋演算法。

fss

四步搜尋演算法。

ds

菱形搜尋演算法。

hexbs

基於六邊形的搜尋演算法。

epzs

增強型預測區域搜尋演算法。

umh

不均勻多六邊形搜尋演算法。

預設值為 ‘esa’。

mb_size

巨集區塊大小。預設值 16

search_param

搜尋參數。預設值 7

32.166 midequalizer

使用兩個視訊流應用 Midway 影像均衡化效果。

Midway 影像均衡化調整一對影像以具有相同的直方圖,同時盡可能保持其動態範圍。它對於例如匹配一對立體相機的曝光非常有用。

此濾鏡具有兩個輸入和一個輸出,它們必須具有相同的像素格式,但大小可能不同。濾鏡的輸出是使用兩個輸入的中途直方圖調整的第一個輸入。

此濾鏡接受以下選項

planes

設定要處理的平面。預設值為 15,即所有可用平面。

32.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.

32.168 mix

將數個視訊輸入串流混合成一個視訊串流。

以下是接受選項的描述。

inputs (輸入)

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

當輸入串流結束時,音量重新正規化的轉換時間,以秒為單位。預設值為 2 秒。

指定每個輸入視訊串流的權重作為序列。每個權重以空格分隔。如果權重數量小於 frames 數量,則最後指定的權重將用於所有剩餘未設定的權重。

scale

指定縮放比例,如果設定了縮放比例,它將與每個權重乘以像素值的總和相乘,以得出最終目標像素值。預設情況下,scale 會自動縮放到權重總和。

planes

設定要過濾的平面。預設值為全部。允許的範圍從 0 到 15。

duration

指定如何判斷串流結束。

longest

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

shortest

shortest (最短)

first

first (第一個)

32.168.1 指令

此濾波器支援以下命令

當輸入串流結束時,音量重新正規化的轉換時間,以秒為單位。預設值為 2 秒。
scale
planes

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

32.169 monochrome

使用自訂色彩濾鏡將視訊轉換為灰階。

以下是接受選項的描述。

cb

設定色度藍點。允許範圍為 -1 到 1。預設值為 0。

cr

設定色度紅點。允許範圍為 -1 到 1。預設值為 0。

size

設定色彩濾鏡大小。允許範圍為 .1 到 10。預設值為 1。

high

設定高光強度。允許範圍為 0 到 1。預設值為 0。

32.169.1 指令

mode

32.170 morpho

此濾鏡允許應用主要形態學灰階轉換,使用第二個輸入串流中設定的任意結構進行腐蝕和膨脹。

與樸素實作以及 erosiondilation 濾鏡中較慢的效能不同,當速度至關重要時,應改用 morpho 濾鏡。

以下是可接受選項的說明:

o

設定要應用的形態學轉換,可以是

erode
dilate
open
close
gradient
tophat
blackhat

預設值為 erode

planes

設定要過濾的平面,預設情況下,除了 alpha 平面外,所有平面都會被過濾。

structure

設定將從第二個輸入串流處理哪個結構視訊幀,可以是 firstall。預設值為 all

morpho 濾鏡也支援 framesync 選項。

32.170.1 指令

此濾鏡支援與選項相同的指令

32.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。

32.172 msad

取得兩個輸入視訊之間的 MSAD(平均絕對差總和)。

此濾鏡採用兩個輸入視訊。

為了使此濾鏡正常運作,兩個輸入視訊都必須具有相同的解析度和像素格式。 此外,它假設兩個輸入具有相同的影格數,這些影格會逐一比較。

透過日誌系統印出獲得的每個組件、平均值、最小值和最大值 MSAD。

濾鏡將每個幀的計算 MSAD 儲存在幀元資料中。

此濾鏡也支援 framesync 選項。

在以下範例中,正在處理的輸入檔案 main.mpg 會與參考檔案 ref.mpg 進行比較。

ffmpeg -i main.mpg -i ref.mpg -lavfi msad -f null -

32.173 multiply

將第一個視訊串流的像素值與第二個視訊串流的像素值相乘。

通過第一個輸入。

scale

設定應用於第二個視訊串流的縮放比例。預設值為 1。允許範圍為 09

offset

設定應用於第二個視訊串流的偏移量。預設值為 0.5。允許範圍為 -11

planes

指定將處理輸入視訊串流中的哪些平面。預設情況下,所有平面都會被處理。

32.173.1 指令

此濾鏡支援與選項相同的指令

32.174 negate

負片(反轉)輸入視訊。

它接受以下選項

components

設定要負片的組件。

組件的可用值為

y
u
v
a
r
g
b
negate_alpha

值為 1 時,如果存在 alpha 組件,則會將其負片。預設值為 0。

32.174.1 指令

此濾鏡支援與選項相同的指令

32.175 nlmeans

使用非局部均值演算法對幀進行去噪。

每個像素都透過尋找具有相似上下文的其他像素來調整。此上下文相似性是透過比較其周圍 pxp 大小的塊來定義的。在像素周圍 rxr 的區域中搜尋塊。

請注意,搜尋區域定義了塊的中心,這表示某些塊將由該搜尋區域之外的像素組成。

濾鏡接受以下選項。

s

設定去噪強度。預設值為 1.0。必須在 [1.0, 30.0] 範圍內。

p

設定塊大小。預設值為 7。必須是 [0, 99] 範圍內的奇數。

pc

p 相同,但用於色度平面。

預設值為 0,表示自動。

r

設定搜尋大小。預設值為 15。必須是 [0, 99] 範圍內的奇數。

rc

r 相同,但用於色度平面。

預設值為 0,表示自動。

32.176 nnedi

使用神經網路邊緣導向插值對視訊進行反交錯。

此濾波器接受以下選項

當輸入串流結束時,音量重新正規化的轉換時間,以秒為單位。預設值為 2 秒。

強制選項,沒有二進制檔案濾鏡無法運作。目前可以在此處找到檔案:https://github.com/dubhater/vapoursynth-nnedi3/blob/master/src/nnedi3_weights.bin

deint

設定要反交錯哪些幀,預設值為 all。可以是 allinterlaced

field

設定操作模式。

可以是以下其中之一

af

使用幀標誌,兩個場。

a

使用幀標誌,單個場。

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

僅使用頂場。

b

僅使用底場。

tf

使用兩個場,頂場優先。

bf

使用兩個場,底場優先。

planes

設定要處理哪些平面,預設情況下,濾鏡會處理所有幀。

nsize

設定預測神經網路使用的每個像素周圍的局部鄰域大小。

可以是以下其中之一

s8x6
s16x6
s32x6
s48x6
s8x4
s16x4
s32x4
nns

設定預測神經網路中的神經元數量。可以是以下之一

n16
n32
n64
n128
n256
qual

控制混合在一起以計算最終輸出值的不同神經網路預測的數量。可以是 fast、預設值或 slow

etype

設定要在預測器中使用的權重集。可以是以下之一

a, abs

訓練權重以最小化絕對誤差

s, mse

訓練權重以最小化均方誤差

pscrn

控制是否使用預篩選器神經網路來決定哪些像素應由預測器神經網路處理,哪些像素可以由簡單的三次插值處理。預篩選器經過訓練,可以知道三次插值對於像素是否足夠,或者是否應由預測器神經網路預測。預篩選器神經網路的計算複雜度遠低於預測器神經網路。由於大多數像素可以由三次插值處理,因此使用預篩選器通常會導致更快的處理速度。預篩選器非常準確,因此使用與不使用之間的差異幾乎總是無法察覺的。

可以是以下其中之一

none
original
new
new2
new3

預設值為 new

32.176.1 指令

此濾鏡支援與選項相同的 commands,排除 weights 選項。

32.177 noformat

強制 libavfilter 不要使用任何指定的像素格式作為下一個濾鏡的輸入。

它接受以下參數

pix_fmts

以 ‘|’ 分隔的像素格式名稱列表,例如 pix_fmts=yuv420p|monow|rgb24"。

32.177.1 範例

  • 強制 libavfilter 使用與 yuv420p 不同的格式作為 vflip 濾鏡的輸入
    noformat=pix_fmts=yuv420p,vflip
    
  • 將輸入視訊轉換為列表中未包含的任何格式
    noformat=yuv420p|yuv444p|yuv410p
    

32.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

將隨機雜訊與(半)規則模式混合

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

時間雜訊(幀之間的雜訊模式會改變)

u

均勻雜訊(否則為高斯雜訊)

32.178.1 範例

將時間和均勻雜訊新增至輸入視訊

noise=alls=20:allf=t+u

32.179 normalize

正規化 RGB 視訊(又稱直方圖拉伸、對比度拉伸)。請參閱:https://en.wikipedia.org/wiki/Normalization_(image_processing)

對於每個幀的每個通道,濾鏡會計算輸入範圍,並將其線性映射到使用者指定的輸出範圍。輸出範圍預設為從純黑到純白的全動態範圍。

時間平滑可用於輸入範圍,以減少當小的黑暗或明亮物體進入或離開場景時引起的閃爍(亮度快速變化)。這類似於攝影機上的自動曝光(自動增益控制),並且與攝影機一樣,它可能會導致視訊在一段時間內曝光過度或曝光不足。

R、G、B 通道可以獨立正規化,這可能會導致一些色彩偏移,或者可以連結在一起作為單個通道,這可以防止色彩偏移。連結正規化保留色調。獨立正規化則不會,因此可以用於消除一些色偏。獨立和連結正規化可以以任何比例組合。

正規化濾鏡接受以下選項

blackpt
whitept

定義輸出範圍的顏色。最小輸入值映射到 blackpt。最大輸入值映射到 whitept。預設值分別為黑色和白色。為 blackpt 指定白色,為 whitept 指定黑色將產生顏色反轉、正規化的視訊。灰色陰影可用於降低動態範圍(對比度)。在此處指定飽和色彩可以產生一些有趣的效果。

short

用於時間平滑的先前幀的數量。每個通道的輸入範圍都使用當前幀和 smoothing 先前幀的滾動平均值進行平滑處理。預設值為 0(無時間平滑)。

independence

控制獨立(色彩偏移)通道正規化與連結(色彩保留)正規化的比例。0.0 為完全連結,1.0 為完全獨立。預設值為 1.0(完全獨立)。

強度 (strength)

濾鏡的整體強度。1.0 為全強度。0.0 是相當昂貴的空操作。預設值為 1.0(全強度)。

32.179.1 指令

此濾鏡支援與選項相同的 commands,排除 smoothing 選項。命令接受與相應選項相同的語法。

修改音量表達式。指令接受與對應選項相同的語法。

32.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

32.180 null

將視訊來源不變地傳遞到輸出。

32.181 ocr

光學字元辨識

此濾鏡使用 Tesseract 進行光學字元辨識。若要啟用此濾鏡的編譯,您需要使用 --enable-libtesseract 配置 FFmpeg。

它接受以下選項

datapath

設定 tesseract 資料的路徑。預設為使用安裝時設定的路徑。

language

設定語言,預設為 "eng"。

whitelist

設定字元白名單。

blacklist

設定字元黑名單。

濾鏡將辨識出的文字匯出為幀元資料 lavfi.ocr.text。濾鏡將辨識出的單字的信賴度匯出為幀元資料 lavfi.ocr.confidence

32.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 濾鏡;請參閱以下小節。

32.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

32.182.2 侵蝕

透過使用特定的結構元素來腐蝕圖像。它對應於 libopencv 函數 cvErode

它接受參數:struct_el:nb_iterations,其語法和語義與 dilate 濾鏡相同。

32.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 的參數。

32.183 oscilloscope

2D 視訊示波器。

可用於測量空間脈衝、步階響應、色度延遲等。

它接受以下參數

x

設定示波器中心 x 位置。

y

設定示波器中心 y 位置。

s

設定示波器大小,相對於幀對角線。

t

設定示波器傾斜/旋轉。

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

設定軌跡不透明度。

tx

設定軌跡中心 x 位置。

ty

設定軌跡中心 y 位置。

tw

設定軌跡寬度,相對於幀寬度。

th

設定軌跡高度,相對於幀高度。

c

設定要追蹤的組件。預設會追蹤前三個組件。

w

繪製追蹤網格。預設為啟用。

st

繪製一些統計資訊。預設為啟用。

sc

繪製範圍。預設為啟用。

32.183.1 指令

此濾波器支援與選項相同的 命令。該命令接受與對應選項相同的語法。

修改音量表達式。指令接受與對應選項相同的語法。

32.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
    

32.184 overlay

將一個視訊疊加在另一個視訊之上。

此功能接受兩個輸入並產生一個輸出。第一個輸入是「主要」視訊,第二個輸入將疊加在其上。

它接受以下參數

以下是接受選項的描述。

x
y

設定疊加視訊在主要視訊上的 x 和 y 座標的表達式。預設值為兩個表達式皆為 "0"。如果表達式無效,則會設定為極大的值 (表示疊加將不會顯示在輸出的可見區域內)。

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

請參閱 framesync

eval

設定何時評估 xy 的表達式。

它接受以下值:

init

僅在濾鏡初始化期間或處理命令時評估表達式一次

frame

為每個傳入的影格評估表達式

預設值為 ‘frame’。

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

請參閱 framesync

format

設定輸出視訊的格式。

它接受以下值:

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’。

[in]trim=start=10,smartblur=enable='between(t,10,180)',curves=enable='gte(t,3)'[out]

請參閱 framesync

alpha

設定疊加視訊的 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

輸入影格編號,從 0 開始

影格中樣本數

drawtext=text='This is a text with a \\' character and a \\: character'

t

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

此濾鏡也支援 framesync 選項。

請注意,nt 變數僅在逐幀評估時可用,並且當 eval 設定為 ‘init’ 時,將評估為 NAN。

請注意,幀是按照時間戳記順序從每個輸入視訊中取得的,因此,如果它們的初始時間戳記不同,最好透過 setpts=PTS-STARTPTS 濾鏡傳遞兩個輸入,使其以相同的零時間戳記開始,如同 movie 濾鏡的範例所示。

您可以鏈結更多疊加,但您應該測試此方法的效率。

32.184.1 指令

此濾波器支援以下命令

x
y

修改疊加輸入的 x 和 y 座標。此命令接受對應選項的相同語法。

修改音量表達式。指令接受與對應選項相同的語法。

32.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
    
  • 在輸入的左下角插入透明 PNG 標誌,使用具有 -filter_complex 選項的 ffmpeg 工具
    ffmpeg -i input -i logo -filter_complex 'overlay=10:main_h-overlay_h-10' output
    
  • 插入 2 個不同的透明 PNG 標誌(第二個標誌在右下角),使用 ffmpeg 工具
    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]
    
  • 並排播放原始視訊和經過濾版本的視訊(此處使用 deshake 濾鏡),使用 ffplay 工具
    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]
    

32.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 開始。

影格中樣本數

主要輸入幀在檔案中的位元組偏移位置,如果未知則為 NAN。已棄用,請勿使用。

t

主要輸入幀的時間戳記,以秒為單位表示,如果未知則為 NAN。

預設值為兩個表達式皆為 "0"。

eval

設定何時評估 xy 的表達式。

它接受以下值:

init

在濾鏡初始化期間或處理命令時評估表達式一次。

frame

為每個傳入的幀評估表達式

預設值為 frame

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

請參閱 framesync

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

請參閱 framesync

[in]trim=start=10,smartblur=enable='between(t,10,180)',curves=enable='gte(t,3)'[out]

請參閱 framesync

此濾鏡也支援 framesync 選項。

32.186 owdenoise

套用過完備小波去噪器。

通過第一個輸入。

depth

設定深度。

較大的深度值將更多地去噪較低頻率的組件,但會減慢濾鏡處理速度。

必須是 8-16 範圍內的整數,預設值為 8

luma_strength, ls

設定亮度強度。

必須是 0-1000 範圍內的雙精度浮點值,預設值為 1.0

chroma_strength, cs

設定色度強度。

必須是 0-1000 範圍內的雙精度浮點值,預設值為 1.0

32.187 pad

將填充新增至輸入影像,並將原始輸入放置在提供的 xy 座標處。

它接受以下參數

width (寬度),w
height, h

指定新增填充後的輸出影像大小的表達式。如果 widthheight 的值為 0,則輸出將使用對應的輸入大小。

width 表達式可以參考 height 表達式設定的值,反之亦然。

widthheight 的預設值為 0。

x
y

指定偏移量,以將輸入影像放置在填充區域內,相對於輸出影像的頂部/左側邊界。

x 表達式可以參考 y 表達式設定的值,反之亦然。

xy 的預設值為 0。

如果 xy 評估為負數,則它們將被更改,以便輸入影像在填充區域中居中。

顏色

指定填充區域的顏色。有關此選項的語法,請查看 (ffmpeg-utils) 手冊中的 "Color" 章節

color 的預設值為 "black"。

eval

指定何時評估 widthheightxy 表達式。

它接受以下值:

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。

32.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"
    

32.188 palettegen

為整個視訊串流產生一個調色盤。

它接受以下選項

max_colors

設定要在調色盤中量化的最大顏色數。注意:調色盤仍將包含 256 種顏色;未使用的調色盤條目將為黑色。

reserve_transparent

建立最多 255 種顏色的調色盤,並保留最後一種顏色用於透明度。保留透明度顏色對於 GIF 優化很有用。如果未設定,則調色盤中的最大顏色數將為 256。對於獨立影像,您可能需要停用此選項。預設為設定。

transparency_color

設定將用作透明度的背景的顏色。

stats_mode

設定統計模式。

它接受以下值:

full

計算完整幀的直方圖。

diff

僅針對與前一幀不同的部分計算直方圖。如果背景是靜態的,這可能與更重視輸入的移動部分有關。

single

為每個幀計算新的直方圖。

預設值為 full

此濾鏡還匯出幀元數據 lavfi.color_quant_ratio (nb_color_in / nb_color_out),您可以使用它來評估調色盤的顏色量化程度。此資訊在 info 記錄層級也可見。

32.188.1 範例

  • 使用 ffmpeg 產生給定視訊的代表性調色盤
    ffmpeg -i input.mkv -vf palettegen palette.png
    

32.189 paletteuse

使用調色盤對輸入視訊串流進行降採樣。

此濾鏡接受兩個輸入:一個視訊串流和一個調色盤。調色盤必須是 256 像素的影像。

它接受以下選項

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

Bill Atkinson 在 Apple Computer 開發的 Atkinson 抖動(誤差擴散)

none

停用抖動。

預設值為 sierra2_4a

bayer_scale

當選擇 bayer 抖動時,此選項定義圖案的縮放比例(交叉影線圖案的可見程度)。低值表示更明顯的圖案以減少條帶,而高值表示較不明顯的圖案,但代價是更多的條帶。

此選項必須是 [0,5] 範圍內的整數值。預設值為 2

diff_mode

如果設定,則定義要處理的區域

rectangle

僅會重新處理變更的矩形。這類似於 GIF 裁剪/偏移壓縮機制。如果只有影像的一部分正在變更,則此選項對於速度很有用,並且具有諸如將誤差擴散 dither 的範圍限制在移動場景邊界的矩形等用例(如果場景變化不大,則會產生更具確定性的輸出,因此減少移動噪點並改善 GIF 壓縮)。

預設值為 none

new

為每個輸出幀採用新的調色盤。

alpha_threshold

設定透明度的 alpha 閾值。高於此閾值的 Alpha 值將被視為完全不透明,而低於此閾值的值將被視為完全透明。

此選項必須是 [0,255] 範圍內的整數值。預設值為 128

32.189.1 範例

  • 使用調色盤(例如使用 palettegen 產生)以 ffmpeg 編碼 GIF
    ffmpeg -i input.mkv -i palette.png -lavfi paletteuse output.gif
    

32.190 perspective

校正未垂直於螢幕錄製的視訊的透視。

以下是接受參數的說明。

x0
y0
x1
y1
x2
y2
x3
y3

設定左上角、右上角、左下角和右下角的座標表達式。預設值為 0:0:W:0:0:H:W:H,透視將保持不變。如果 sense 選項設定為 source,則指定的點將傳送到目標的角落。如果 sense 選項設定為 destination,則來源的角落將傳送到指定的座標。

表達式可以使用以下變數

W
H

視訊幀的寬度和高度。

in

輸入幀計數。

off

輸出幀計數。

插值

設定透視校正的插值。

它接受以下值:

linear
cubic

預設值為 ‘linear’。

sense

設定座標選項的解釋。

它接受以下值:

0, source

將來源中由給定座標指定的點傳送到目標的角落。

1, destination

將來源的角落傳送到目標中由給定座標指定的點。

預設值為 ‘source’。

eval

設定何時評估座標 x0,y0,...x3,y3 的表達式。

它接受以下值:

init

僅在濾鏡初始化期間或處理命令時評估表達式一次

frame

為每個傳入的影格評估表達式

預設值為 ‘init’。

32.191 phase

將交錯視訊延遲一個場時間,以便場序變更。

預期用途是修復以與膠片到視訊轉換相反的場序捕獲的 PAL 電影。

以下是接受參數的說明。

o

設定相位模式。

它接受以下值:

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

捕獲場序頂場優先,傳輸底場優先。濾鏡將延遲底場。

b

捕獲場序底場優先,傳輸頂場優先。濾鏡將延遲頂場。

p

以相同的場序捕獲和傳輸。此模式僅為了記錄其他選項而存在,但如果您實際選擇它,濾鏡將忠實地不執行任何操作。

a

捕獲場序由場標誌自動確定,傳輸相反。濾鏡根據幀標誌逐幀在 ‘t’ 和 ‘b’ 模式之間選擇。如果沒有可用的場資訊,則此模式的工作方式與 ‘u’ 相同。

u

捕獲未知或變化,傳輸相反。濾鏡透過分析影像並選擇產生場之間最佳匹配的替代方案,逐幀在 ‘t’ 和 ‘b’ 之間選擇。

T

捕獲頂場優先,傳輸未知或變化。濾鏡使用影像分析在 ‘t’ 和 ‘p’ 之間選擇。

B

捕獲底場優先,傳輸未知或變化。濾鏡使用影像分析在 ‘b’ 和 ‘p’ 之間選擇。

A

由欄位標記決定擷取,傳輸未知或變動的欄位。濾鏡使用欄位標記和影像分析,在 ‘t’、‘b’ 和 ‘p’ 之間選擇。如果沒有可用的欄位資訊,則此模式的功能就像 ‘U’。這是預設模式。

U

同時擷取和傳輸未知或變動的欄位。濾鏡僅使用影像分析,在 ‘t’、‘b’ 和 ‘p’ 之間選擇。

32.191.1 指令

mode

32.192 photosensitivity

減少影片中各種閃爍,以幫助患有癲癇的使用者。

它接受以下選項

影格,f

設定用於過濾的影格數量。預設值為 30。

threshold, t

設定偵測閾值因子。預設值為 1。數值越低越嚴格。

skip

設定取樣影格時要跳過的像素數量。預設值為 1。允許範圍為 1 到 1024。

bypass

保持影格不變。預設為停用。

32.193 pixdesctest

像素格式描述符測試濾鏡,主要用於內部測試。輸出影片應與輸入影片相同。

例如

format=monow, pixdesctest

可用於測試單色白像素格式描述符定義。

32.194 pixelize

將像素化效果應用於視訊串流。

通過第一個輸入。

width (寬度),w
height, h

設定將用於像素化的區塊尺寸。預設值為 16

mode, m

設定使用的像素化模式。

可能的值為

avg
min
max

預設值為 avg

平面,p

設定要過濾的平面。預設為過濾所有平面。

32.194.1 指令

此濾鏡支援所有選項,如同 指令

32.195 pixscope

顯示色彩通道的樣本值。主要用於檢查色彩和色階。最低支援解析度為 640x480。

這些濾鏡接受以下選項

x

設定示波器 X 軸位置,X 軸上的相對偏移量。

y

設定示波器 Y 軸位置,Y 軸上的相對偏移量。

f

設定示波器寬度。

h

設定示波器高度。

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

設定視窗不透明度。此視窗也包含關於像素區域的統計資訊。

wx

設定視窗 X 軸位置,X 軸上的相對偏移量。

wy

設定視窗 Y 軸位置,Y 軸上的相對偏移量。

32.195.1 指令

此濾鏡支援與選項相同的指令

32.196 pp

使用 libpostproc 啟用指定的後處理子濾鏡鏈。此函式庫應透過 GPL 建置 (--enable-gpl) 自動選取。子濾鏡必須以 ‘/’ 分隔,並且可以透過在前面加上 ‘-’ 來停用。每個子濾鏡和某些選項都有一個短名稱和一個長名稱,可以交替使用,例如 dr/dering 是相同的。

這些濾鏡接受以下選項

子濾鏡

設定後處理子濾鏡字串。

所有子濾鏡共用通用選項以決定其範圍

a/autoq

針對此子濾鏡採用品質指令。

c/chrom

也進行色度過濾 (預設)。

y/nochrom

僅進行亮度過濾 (無色度)。

n/noluma

僅進行色度過濾 (無亮度)。

這些選項可以附加在子濾鏡名稱之後,以 ‘|’ 分隔。

可用的子濾鏡如下

hb/hdeblock[|difference[|flatness]]

水平解塊濾鏡

difference

差異因子,值越高表示解塊程度越高 (預設值:32)。

flatness

平坦度閾值,值越低表示解塊程度越高 (預設值:39)。

vb/vdeblock[|difference[|flatness]]

垂直解塊濾鏡

difference

差異因子,值越高表示解塊程度越高 (預設值:32)。

flatness

平坦度閾值,值越低表示解塊程度越高 (預設值:39)。

ha/hadeblock[|difference[|flatness]]

精確水平解塊濾鏡

difference

差異因子,值越高表示解塊程度越高 (預設值:32)。

flatness

平坦度閾值,值越低表示解塊程度越高 (預設值:39)。

va/vadeblock[|difference[|flatness]]

精確垂直解塊濾鏡

difference

差異因子,值越高表示解塊程度越高 (預設值:32)。

flatness

平坦度閾值,值越低表示解塊程度越高 (預設值:39)。

水平和垂直解塊濾鏡共用差異和平坦度值,因此您無法設定不同的水平和垂直閾值。

h1/x1hdeblock

實驗性水平解塊濾鏡

v1/x1vdeblock

實驗性垂直解塊濾鏡

dr/dering

去振鈴濾鏡

tn/tmpnoise[|threshold1[|threshold2[|threshold3]]], 時間性雜訊降低器
threshold1

數值越大 -> 過濾效果越強

threshold2

數值越大 -> 過濾效果越強

threshold3

數值越大 -> 過濾效果越強

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]

使用您指定的常數量化器覆寫來自輸入的量化器表。

量化器

要使用的量化器

de/default

預設 pp 濾鏡組合 (hb|a,vb|a,dr|a)

fa/fast

快速 pp 濾鏡組合 (h1|a,v1|a,dr|a)

ac

高品質 pp 濾鏡組合 (ha|a|128|7,va|a,dr|a)

32.196.1 範例

  • 套用水平和垂直解塊、去振鈴和自動亮度/對比度
    pp=hb/vb/dr/al
    
  • 套用預設濾鏡,但不包含亮度/對比度校正
    pp=de/-al
    
  • 套用預設濾鏡和時間性降噪器
    pp=default/tmpnoise|1|2|3
    
  • 僅對亮度套用解塊,並根據可用的 CPU 時間自動開啟或關閉垂直解塊
    pp=hb|y/vb|a
    

32.197 pp7

套用後處理濾鏡 7。它是 spp 濾鏡的變體,類似於 spp = 6 與 7 點 DCT,其中 IDCT 後僅使用中心樣本。

通過第一個輸入。

qp

強制使用常數量化參數。它接受 0 到 63 範圍內的整數。如果未設定,濾鏡將使用來自視訊串流的 QP (如果可用)。

o

設定閾值模式。可用的模式有

hard

設定硬閾值。

soft

設定軟閾值 (更好的去振鈴效果,但可能更模糊)。

medium

設定中等閾值 (效果良好,預設值)。

32.198 premultiply

使用第二個串流的第一個平面作為 Alpha,將 Alpha 預乘效果應用於輸入視訊串流。

兩個串流必須具有相同的尺寸和相同的像素格式。

此濾波器接受以下選項

planes

設定將處理哪些平面,未處理的平面將被複製。預設值為 0xf,所有平面都將被處理。

inplace

不需要第二個輸入進行處理,而是使用來自輸入串流的 Alpha 平面。

32.199 prewitt

將普瑞維特算子應用於輸入視訊串流。

此濾波器接受以下選項

planes

設定將處理哪些平面,未處理的平面將被複製。預設值為 0xf,所有平面都將被處理。

scale

設定將與濾鏡結果相乘的值。

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

設定將新增到濾鏡結果的值。

32.199.1 指令

mode

32.200 pseudocolor

使用假色改變影片中的影格色彩。

此濾波器接受以下選項

c0

設定像素第一分量表達式

c1

設定像素第二分量表達式

c2

設定像素第三分量表達式

c3

設定像素第四分量表達式,對應於 Alpha 分量

索引,i

設定要用作變更色彩基礎的分量

預設,p

選取其中一個內建 LUT。預設設定為無。

可用的 LUT

magma
inferno
plasma
viridis
turbo
cividis
range1
range2
shadows
highlights
solar
nominal
preferred
total
spectral
cool
heat
fiery
blues
green
helix
opacity

設定輸出色彩的不透明度。允許範圍為 0 到 1。預設值設定為 1。

每個表達式選項指定用於計算對應像素分量值查找表的表達式。

表達式可以包含以下常數和函數

f
h

輸入寬度和高度。

明度

像素組件的輸入值。

ymin, umin, vmin, amin

允許的最小分量值。

ymax, umax, vmax, amax

允許的最大分量值。

所有表達式預設為 "val"。

32.200.1 指令

mode

32.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'"
    

32.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 形式的鍵/值對序列。

如果指定的 stats_version 大於 1,則在每個影格對統計資訊列表之前會加上標頭行,其中包含鍵值對,這些鍵值對遵循具有以下參數的影格格式

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

每個通道允許的最大值,以及所有通道的平均值。

32.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 -
    

32.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 ...

32.203 qp

變更視訊量化參數 (QP)。

此濾波器接受以下選項

qp

設定量化參數的表達式。

表達式透過 eval API 評估,並且可以包含以下常數等

known

如果索引不是 129,則為 1,否則為 0。

qp

從 -129 到 128 的循序索引。

32.203.1 範例

  • 類似於
    qp=2+2*sin(PI*qp)
    

32.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

它接受以下值:

L
M
Q
H
expansion

選取輸入文字的擴展方式。可以是 nonenormal (預設)。請參閱下面的 qrencode 文字擴展 章節以取得詳細資訊。

text
textfile

定義要呈現的文字。如果兩者皆未指定,則不會編碼 QR 碼(僅為空的彩色框架)。

如果啟用擴展,則文字會被視為文字範本,使用 qrencode 擴展機制。詳情請參閱下方的「qrencode 文字擴展」章節。

background_color, bc
foreground_color, fc

設定 QR 碼和背景顏色。foreground_color 的預設值為「black」,background_color 的預設值為「white」。

關於顏色選項的語法,請查看 (ffmpeg-utils) 手冊中的「Color」章節

32.204.1 qrencode 表達式

選項設定的表達式包含以下常數和函數。

dar

輸入顯示長寬比,它與 (w / h) * sar 相同

duration

目前影格的持續時間,以秒為單位

hsub
vsub

水平和垂直的色度二次採樣值。例如,對於像素格式 "yuv422p",hsub 為 2,而 vsub 為 1。

main_h, H

輸入高度

main_w, W

輸入寬度

n

輸入影格編號,從 0 開始

pict_type

代表圖片類型的數字

qr_w, w

編碼 QR 碼的寬度

rendered_qr_w, q
rendered_padded_qr_w, Q

已渲染 QR 碼的寬度,包含和不包含邊距。

這些參數允許 qQ 表達式互相參照,因此您可以例如指定 q=3/4*Q

rand(min, max)

傳回介於 minmax 之間的隨機數

sar

輸入樣本的長寬比

t

This is a text with a \' character and a \: character

x
y

文字繪製位置的 x 和 y 偏移座標。

這些參數允許 xy 表達式互相參照,因此您可以例如指定 y=x/dar

32.204.2 qrencode 文字展開

如果 expansion 設定為 none,則文字會逐字列印。

如果 expansion 設定為 normal(預設值),則使用以下展開機制。

反斜線字元「\」後接任何字元,始終展開為第二個字元。

%{...} 形式的序列會被展開。大括號之間的文字是函數名稱,後接可能以 ':' 分隔的參數。如果參數包含特殊字元或分隔符號(':' 或 '}'),則應逸出它們。

請注意,它們可能也必須逸出,作為濾鏡引數字串中 text 選項的值,以及作為濾鏡圖描述中的濾鏡引數,甚至可能也為了 shell,這構成了四個層級的逸出;使用帶有 textfile 選項的文字檔案可以避免這些問題。

以下函數可用

n, frame_num

傳回影格編號

pts

傳回目前影格的展示時間戳記。

它可以接受最多兩個參數。

第一個參數是時間戳記的格式;預設為 flt,表示以秒為單位的十進制數字,精確到微秒;hms 表示格式化的 [-]HH:MM:SS.mmm 時間戳記,精確到毫秒。gmtime 表示格式化為 UTC 時間的影格時間戳記;localtime 表示格式化為本地時區時間的影格時間戳記。如果格式設定為 hms24hh,時間將以 24 小時制格式 (00-23) 格式化。

第二個引數是加到時間戳記的偏移量。

如果格式設定為 localtimegmtime,則可以提供第三個引數:一個 strftime C 函數格式字串。預設情況下,將使用 YYYY-MM-DD HH:MM:SS 格式。

expr, e

評估表達式的值並以倍精度浮點數輸出。

它必須接受一個參數,指定要評估的表達式,接受 qrencode_expressions 中定義的常數和函數。

expr_formatted, ef

評估表達式的值並以格式化字串輸出。

第一個參數是要評估的表達式,與 expr 函數相同。第二個參數指定輸出格式。允許的值為 'x'、'X'、'd' 和 'u'。它們的處理方式與 printf 函數完全相同。第三個參數是可選的,用於設定輸出佔用的位置數。它可以用於從左側新增零填充。

gmtime

濾鏡運作的時間,以 UTC 格式表示。它可以接受一個引數:一個 strftime C 函數格式字串。此格式字串已擴展為支援變數 %[1-6]N,其會印出秒數的小數部分,並可選擇指定位數。

localtime

濾鏡運作的時間,以本地時區表示。它可以接受一個引數:一個 strftime C 函數格式字串。此格式字串已擴展為支援變數 %[1-6]N,其會印出秒數的小數部分,並可選擇指定位數。

metadata

影格元數據。接受一個或兩個引數。

第一個引數為必要引數,指定元數據鍵。

第二個引數為選用引數,指定預設值,當找不到或元數據鍵為空時使用。

可用的元數據可以透過檢查以 TAG 開頭的條目來識別,這些條目包含在使用 ffprobe -show_frames 執行的每個影格區段中。

在導向 qrencode 濾鏡的濾鏡中產生的字串元數據也可用。

rand(min, max)

傳回介於 minmax 之間的隨機數

32.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}
    
  • 產生一個 QR 碼,編碼 GMT 時間戳記
    qrencode=text=%{gmtime}
    
  • 產生一個 QR 碼,編碼表示為浮點數的時間戳記
    qrencode=text=%{pts}
    

32.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 碼的酬載

32.206 random

將視訊影格從影格的內部快取刷新到隨機順序。不會丟棄任何影格。靈感來自 frei0r nervous 濾鏡。

frames

設定內部快取的影格大小,範圍從 2512。預設值為 30

seed

設定隨機數字產生器的種子,必須是介於 0UINT32_MAX 之間的整數。如果未指定,或明確設定為小於 0,濾鏡將盡力使用良好的隨機種子。

32.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

在進一步處理之前,對線條進行低通濾波。預設為啟用。

32.207.1 指令

mode

32.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
    

32.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

32.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'
    

32.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) 手冊中的「Color」章節。預設顏色為 black

32.210 removegrain

removegrain 濾鏡是適用於漸進式視訊的空間降噪器。

m0

設定第一個平面的模式。

m1

設定第二個平面的模式。

m2

設定第三個平面的模式。

m3

設定第四個平面的模式。

模式範圍從 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 類似。

32.211 removelogo

抑制電視台徽標,使用圖像檔案來確定哪些像素構成徽標。它的工作原理是用相鄰像素填充構成徽標的像素。

通過第一個輸入。

filename, f

設定濾鏡點陣圖檔案,它可以是 libavformat 支援的任何圖像格式。圖像檔案的寬度和高度必須與正在處理的視訊流的寬度和高度相符。

提供的點陣圖圖像中值為零的像素不被視為徽標的一部分,非零像素被視為徽標的一部分。如果您對徽標使用白色 (255),對其餘部分使用黑色 (0),您將是安全的。對於製作濾鏡點陣圖,建議擷取帶有可見徽標的黑色影格的螢幕快照,然後使用閾值濾鏡,然後侵蝕濾鏡一到兩次。

如果需要,可以手動修復小污點。請記住,如果徽標像素未被覆蓋,濾鏡品質將大大降低。將過多的像素標記為徽標的一部分不會造成太大損害,但它會增加覆蓋圖像所需的模糊量,並會破壞比必要更多的資訊,並且額外的像素會減慢大型徽標的速度。

32.212 repeatfields

此濾鏡使用來自視訊 ES 標頭的 repeat_field 標誌,並根據其值硬重複場。

32.213 reverse

反轉視訊片段。

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

32.213.1 範例

  • 取得片段的前 5 秒,並將其反轉。
    trim=end=5,reverse
    

32.214 rgbashift

水平和/或垂直移動 R/G/B/A 像素。

通過第一個輸入。

rh

設定水平移動紅色的量。

rv

設定垂直移動紅色的量。

gh

設定水平移動綠色的量。

gv

設定垂直移動綠色的量。

bh

設定水平移動藍色的量。

bv

設定垂直移動藍色的量。

ah

設定水平移動 Alpha 的量。

av

設定垂直移動 Alpha 的量。

edge

設定邊緣模式,可以是 smear (預設) 或 warp

32.214.1 指令

mode

32.215 roberts

將 roberts cross 運算子應用於輸入視訊流。

此濾波器接受以下選項

planes

設定將處理哪些平面,未處理的平面將被複製。預設值為 0xf,所有平面都將被處理。

scale

設定將與濾鏡結果相乘的值。

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

設定將新增到濾鏡結果的值。

32.215.1 指令

mode

32.216 rotate

將視訊旋轉任意角度,以弧度表示。

通過第一個輸入。

以下是可選參數的描述。

angle, a

設定角度的表達式,以弧度為單位,表示順時針旋轉輸入視訊的角度。負值將導致逆時針旋轉。預設情況下,它設定為「0」。

此表達式針對每個影格進行評估。

out_w, ow

設定輸出寬度表達式,預設值為「iw」。此表達式僅在配置期間評估一次。

out_h, oh

設定輸出高度表達式,預設值為「ih」。此表達式僅在配置期間評估一次。

bilinear

如果設定為 1,則啟用雙線性插值,值為 0 則停用。預設值為 1。

fillcolor, c

設定用於填充未被旋轉圖像覆蓋的輸出區域的顏色。關於此選項的一般語法,請查看 (ffmpeg-utils) 手冊中的「Color」章節。如果選擇特殊值「none」,則不列印背景(例如,如果永遠不會顯示背景,則很有用)。

預設值為「black」。

角度和輸出尺寸的表達式可以包含以下常數和函數

n

輸入影格的順序編號,從 0 開始。在第一個影格被濾鏡處理之前,它始終為 NAN。

t

輸入影格的時間,以秒為單位,在配置濾鏡時設定為 0。在第一個影格被濾鏡處理之前,它始終為 NAN。

hsub
vsub

水平和垂直的色度二次採樣值。例如,對於像素格式 "yuv422p",hsub 為 2,而 vsub 為 1。

in_w, iw
in_h, ih

輸入視訊的寬度和高度

out_w, ow
out_h, oh

輸出寬度和高度,即 widthheight 表達式指定的邊距區域的大小

rotw(a)
roth(a)

完全包含旋轉 a 弧度的輸入視訊所需的最小寬度/高度。

這些僅在計算 out_wout_h 表達式時可用。

32.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
    

32.216.2 指令

濾鏡支援以下命令

a, 角度

設定角度表達式。此命令接受對應選項的相同語法。

修改音量表達式。指令接受與對應選項相同的語法。

32.217 sab

套用形狀自適應模糊。

通過第一個輸入。

亮度半徑,lr

設定亮度模糊濾鏡強度,必須為 0.1-4.0 範圍內的值,預設值為 1.0。值越大,影像越模糊,處理速度越慢。

luma_pre_filter_radius, lpfr

設定亮度預濾鏡半徑,必須為 0.1-2.0 範圍內的值,預設值為 1.0。

luma_strength, ls

設定亮度像素之間的最大差異值,超過此值將不再被考慮,必須為 0.1-100.0 範圍內的值,預設值為 1.0。

彩度半徑,cr

設定色度模糊濾鏡強度,必須為 -0.9-4.0 範圍內的值。值越大,影像越模糊,處理速度越慢。

chroma_pre_filter_radius, cpfr

設定色度預濾鏡半徑,必須為 -0.9-2.0 範圍內的值。

chroma_strength, cs

設定色度像素之間的最大差異值,超過此值將不再被考慮,必須為 -0.9-100.0 範圍內的值。

每個色度選項值,如果未明確指定,則設定為對應的亮度選項值。

32.218 scale

使用 libswscale 函式庫縮放(調整大小)輸入影片。

縮放濾鏡透過變更輸出樣本縱橫比,強制輸出顯示縱橫比與輸入相同。

如果輸入影像格式與下一個濾鏡要求的格式不同,縮放濾鏡會將輸入轉換為要求的格式。

32.218.1 選項

此濾鏡接受以下選項,libswscale 縮放器支援的任何選項,以及任何 framesync 選項。

請參閱 (ffmpeg-scaler)ffmpeg-scaler 手冊 以取得完整的縮放器選項清單。

width (寬度),w
height, h

設定輸出影片尺寸表達式。預設值為輸入尺寸。

如果 widthw 值為 0,則輸出將使用輸入寬度。如果 heighth 值為 0,則輸出將使用輸入高度。

如果只有一個值為 -n,其中 n >= 1,則縮放濾鏡將使用一個值來維持輸入影像的縱橫比,並從另一個指定的尺寸計算得出。之後,它會確保計算出的尺寸可被 n 整除,並在必要時調整該值。

如果兩個值都為 -n,其中 n >= 1,則行為將與先前詳細說明的兩個值都設定為 0 相同。

請參閱下方接受用於尺寸表達式的常數清單。

eval

指定何時評估 widthheight 表達式。它接受以下值

init

僅在濾鏡初始化期間或處理命令時評估表達式一次。

frame

為每個傳入的影格評估表達式。

預設值為 ‘init’。

interl

設定交錯模式。它接受以下值

t

強制進行交錯感知縮放。

0

不套用交錯縮放。

-1

根據來源影格是否標記為交錯來選擇交錯感知縮放。

預設值為 ‘0’。

flags

設定 libswscale 縮放標誌。請參閱 (ffmpeg-scaler)ffmpeg-scaler 手冊 以取得完整的值清單。如果未明確指定,濾鏡將套用預設標誌。

param0, param1

為需要它們的縮放演算法設定 libswscale 輸入參數。請參閱 (ffmpeg-scaler)ffmpeg-scaler 手冊 以取得完整的說明文件。如果未明確指定,濾鏡將套用空參數。

intent

設定在不同色彩空間之間轉換時要使用的 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
left
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

t

輸入影格的呈現時間戳記,以秒數表示。僅適用於 eval=frame

影格中樣本數

影格在輸入串流中的位置(位元組偏移量),如果此資訊不可用和/或無意義(例如在合成影片的情況下),則為 NaN。僅適用於 eval=frame。已棄用,請勿使用。

ref_w, rw
ref_h, rh
ref_a
ref_dar, rdar
ref_n
ref_t
ref_pos

與上述等效,但用於第二個參考輸入。如果存在任何這些變數,則此濾鏡接受兩個輸入。

32.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'
    
  • 透過結合 scale 和 setsar 使像素成為正方形
    scale='trunc(ih*dar):ih',setsar=1/1
    
  • 透過結合 scale 和 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]
    

32.218.3 指令

此濾波器支援以下命令

width (寬度),w
height, h

設定輸出影片尺寸表達式。此命令接受對應選項的相同語法。

修改音量表達式。指令接受與對應選項相同的語法。

32.219 scale_cuda

使用加速的 CUDA 核心縮放(調整大小)和轉換(像素格式)輸入影片。設定輸出寬度和高度的方式與 scale 濾鏡相同。

通過第一個輸入。

f
h

設定輸出影片尺寸表達式。預設值為輸入尺寸。

允許與 scale 濾鏡相同的表達式。

interp_algo

設定用於縮放的演算法

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

最近鄰

如果輸入參數與所需的輸出匹配,則預設使用此演算法。

bilinear

雙線性

bicubic

雙立方

這是預設值。

lanczos

Lanczos

format

控制輸出像素格式。預設情況下,或如果未指定,則使用輸入像素格式。

此濾鏡不支援在 YUV 和 RGB 像素格式之間進行轉換。

passthrough

如果設定為 0,則會處理每個影格,即使不需要轉換。此模式可用於將濾鏡用作下游影格消費者的緩衝區,以避免耗盡有限的解碼器影格池。

如果設定為 1,則如果影格符合所需的輸出參數,則會按原樣傳遞。這是預設行為。

param

演算法特定參數。

影響雙立方演算法的曲線。

force_original_aspect_ratio
force_divisible_by

與相同的 scale 濾鏡選項作用相同。

32.219.1 範例

  • 將輸入縮放到 720p,保持縱橫比並確保輸出為 yuv420p。
    scale_cuda=-2:720:format=yuv420p
    
  • 使用最近鄰演算法升頻到 4K。
    scale_cuda=4096:2160:interp_algo=nearest
    
  • 不執行任何轉換或縮放,而是將所有輸入影格複製到新分配的影格中。這可用於處理濾鏡和編碼鏈,否則會耗盡解碼器的影格池。
    scale_cuda=passthrough=0
    

32.220 scale_npp

使用 NVIDIA Performance Primitives (libnpp) 在 CUDA 影片影格上執行縮放和/或像素格式轉換。設定輸出寬度和高度的方式與 scale 濾鏡相同。

接受以下其他選項

format

輸出 CUDA 影格的像素格式。如果設定為字串「same」(預設值),則將保留輸入格式。請注意,硬體影格尚不支援自動格式協商和轉換

interp_algo

用於調整大小的插值演算法。以下之一

nn

最近鄰。

linear
cubic
cubic2p_bspline

2 參數立方(B=1,C=0)

cubic2p_catmullrom

2 參數立方(B=0,C=1/2)

cubic2p_b05c03

2 參數立方(B=1/2,C=3/10)

super

超採樣

lanczos
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

t

輸入影格的呈現時間戳記,以秒數表示。僅適用於 eval=frame

影格中樣本數

影格在輸入串流中的位置(位元組偏移量),如果此資訊不可用和/或無意義(例如在合成影片的情況下),則為 NaN。僅適用於 eval=frame。已棄用,請勿使用。

32.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 時可用。

32.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]
    

32.222 scale_vt

使用 VTPixelTransferSession 縮放並轉換色彩參數。

通過第一個輸入。

f
h

設定輸出影片尺寸表達式。預設值為輸入尺寸。

color_matrix

設定輸出色彩空間矩陣。

color_primaries

設定輸出色彩原色。

color_transfer

設定輸出轉換特性。

32.223 scharr

將 Scharr 運算子應用於輸入影片串流。

此濾波器接受以下選項

planes

設定將處理哪些平面,未處理的平面將被複製。預設值為 0xf,所有平面都將被處理。

scale

設定將與濾鏡結果相乘的值。

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

設定將新增到濾鏡結果的值。

32.223.1 指令

mode

32.224 scroll

以恆定速度水平和/或垂直捲動輸入影片。

通過第一個輸入。

horizontal, h

設定水平捲動速度。預設值為 0。允許範圍為 -1 到 1。負值會改變捲動方向。

vertical, v

設定垂直捲動速度。預設值為 0。允許範圍為 -1 到 1。負值會改變捲動方向。

hpos

設定初始水平捲動位置。預設值為 0。允許範圍為 0 到 1。

vpos

設定初始垂直捲動位置。預設值為 0。允許範圍為 0 到 1。

32.224.1 指令

此濾鏡支援以下 指令

horizontal, h

設定水平捲動速度。

vertical, v

設定垂直捲動速度。

32.225 scdet

偵測影片場景變換。

此濾鏡在影格之間設定具有 mafd 的影格元數據、場景分數,並將影格轉發到下一個濾鏡,以便它們可以使用這些元數據來偵測場景變換或其他內容。

此外,當此濾鏡偵測到由 threshold 引起的場景變換時,會記錄訊息並設定影格元數據。

lavfi.scd.mafd 元數據鍵會針對每個影格設定 mafd。

lavfi.scd.score 元數據鍵會針對每個影格設定場景變換分數,以偵測場景變換。

lavfi.scd.time 元數據鍵會設定目前已篩選影格的時間,該時間會偵測到由 threshold 引起的場景變換。

通過第一個輸入。

threshold, t

設定場景變換偵測閾值,以最大變換的百分比表示。良好值介於 [8.0, 14.0] 範圍內。threshold 的範圍為 [0., 100.]

預設值為 10.

sc_pass, s

設定將場景變換影格傳遞到下一個濾鏡的旗標。預設值為 0。如果您只想取得場景變換影格的快照,則可以啟用它。

32.226 selectivecolor

將青色、洋紅色、黃色和黑色 (CMYK) 調整到特定顏色範圍 (例如「紅色」、「黃色」、「綠色」、「青色」等)。調整範圍由顏色的「純度」(即它已經飽和的程度) 定義。

此濾鏡類似於 Adobe Photoshop 的「選取顏色」工具。

通過第一個輸入。

correction_method

選取顏色校正方法。

可用值為

absolute

指定的調整會「按原樣」應用 (新增/減去到原始像素元件值)。

relative

指定的調整相對於原始元件值。

預設值為 absolute

reds

紅色像素的調整 (紅色元件為最大的像素)

yellows

黃色像素的調整 (藍色元件為最小的像素)

greens

綠色像素的調整 (綠色元件為最大的像素)

cyans

青色像素的調整 (紅色元件為最小的像素)

blues

藍色像素的調整 (藍色元件為最大的像素)

magentas

洋紅色像素的調整 (綠色元件為最小的像素)

whites

白色像素的調整 (所有元件都大於 128 的像素)

neutrals

除了純黑色和純白色之外的所有像素的調整

blacks

黑色像素的調整 (所有元件都小於 128 的像素)

psfile

指定 Photoshop 選取顏色檔案 (.asv) 以從中匯入設定。

所有調整設定 (redsyellows 等) 接受最多 4 個空格分隔的浮點調整值,範圍為 [-1,1],分別用於調整其範圍像素的青色、洋紅色、黃色和黑色量。

32.226.1 範例

  • 在每個綠色區域中將青色增加 50%,將黃色減少 33%,並在藍色區域中將洋紅色增加 27%
    selectivecolor=greens=.5 0 -.33 0:blues=0 .27
    
  • 使用 Photoshop 選取顏色預設
    selectivecolor=psfile=MySelectiveColorPresets/Misty.asv
    

32.227 separatefields

separatefields 接受基於影格的影片輸入,並將每個影格分割成其組成欄位,產生一個新的半高剪輯,其影格速率和影格計數是原來的兩倍。

此濾鏡使用影格中的欄位主導性資訊來決定在輸出中首先放置每對欄位中的哪個欄位。如果它弄錯了,請在 separatefields 濾鏡之前使用 setfield 濾鏡。

32.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

輸入樣本縱橫比。

dar

輸入顯示縱橫比。它與 (w / h) * sar 相同。

hsub, vsub

水平和垂直色度子樣本值。例如,對於像素格式 "yuv422p",hsub 為 2,vsub 為 1。

32.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
    

32.229 setfield

強制輸出影片影格的欄位。

setfield 濾鏡標記輸出影格的交錯類型欄位。它不會變更輸入影格,而只會設定對應的屬性,這會影響後續濾鏡 (例如 fieldorderyadif) 如何處理影格。

通過第一個輸入。

o

可用值為

auto

保持相同的欄位屬性。

bff

將影格標記為底場優先。

tff

將影格標記為頂場優先。

prog

將影格標記為漸進式。

32.230 setparams

強制輸出影片影格的影格參數。

setparams 濾鏡標記輸出影格的交錯和色彩範圍。它不會變更輸入影格,而只會設定對應的屬性,這會影響濾鏡/編碼器如何處理影格。

field_mode

可用值為

auto

保持相同的欄位屬性 (預設)。

bff

將影格標記為底場優先。

tff

將影格標記為頂場優先。

prog

將影格標記為漸進式。

range

可用值為

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
left
center
topleft
top
bottomleft
bottom

32.231 sharpen_npp

使用 NVIDIA Performance Primitives (libnpp) 執行具有邊框控制的影像銳化。

接受以下其他選項

border_type

要用於影格邊框的取樣類型。下列其中一項

replicate

複製像素值。

32.232 shear

將剪切變換應用於輸入影片。

此濾鏡支援以下選項

shx

X 方向的剪切因子。預設值為 0。允許範圍為 -2 到 2。

shy

Y 方向的剪切因子。預設值為 0。允許範圍為 -2 到 2。

fillcolor, c

設定用於填充未被變換影片覆蓋的輸出區域的顏色。有關此選項的一般語法,請查看 (ffmpeg-utils) 手冊中的「顏色」章節。如果選取特殊值 "none",則不會列印背景 (例如,如果永遠不會顯示背景,則很有用)。

預設值為「black」。

interp

設定插值類型。可以是 bilinearnearest。預設值為 bilinear

32.232.1 指令

mode

32.233 showinfo

顯示包含每個輸入影片影格的各種資訊的行。輸入影片不會被修改。

此濾鏡支援以下選項

checksum

計算每個平面的校驗和。預設為啟用。

udu_sei_as_ascii

盡可能嘗試以 ascii 字元列印使用者資料未註冊 SEI,否則以十六進位格式列印。

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

輸出中顯示以下值

n

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

pts

輸入影格的呈現時間戳記,以時間基底單位數表示。時間基底單位取決於濾鏡輸入墊。

pts_time

輸入影格的呈現時間戳記,以秒數表示。

fmt

像素格式名稱。

sar

輸入影格的樣本縱橫比,以 num/den 的形式表示。

s

輸入影格的大小。有關此選項的語法,請查看 (ffmpeg-utils) 手冊中的「影片大小」章節

從時間戳記小於或等於主輸入影格的輔助輸入影格。

交錯模式的類型 (「P」表示「漸進式」、「T」表示頂場優先、「B」表示底場優先)。

iskey

如果影格是關鍵影格,則為 1,否則為 0。

type

輸入影格的圖片類型 (「I」表示 I 影格、「P」表示 P 影格、「B」表示 B 影格,或「?」表示未知類型)。另請參閱 libavutil/avutil.h 中定義的 AVPictureType 列舉和 av_get_picture_type_char 函數的文件。

checksum

輸入影格所有平面的 Adler-32 校驗和 (以十六進位列印)。

plane_checksum

輸入影格每個平面的 Adler-32 校驗和 (以十六進位列印),以 "[c0 c1 c2 c3]" 的形式表示。

mean

輸入影格每個平面中像素的平均值,以 "[mean0 mean1 mean2 mean3]" 的形式表示。

stdev

輸入影格每個平面中像素值的標準差,以 "[stdev0 stdev1 stdev2 stdev3]" 的形式表示。

32.234 showpalette

顯示每個影格的 256 色調色盤。此濾鏡僅與 pal8 像素格式影格相關。

它接受以下選項

s

設定用於表示一個調色盤顏色條目的方框大小。預設值為 30 (對於 30x30 像素方框)。

32.235 shuffleframes

重新排序和/或複製和/或捨棄影片影格。

它接受以下參數

mapping

設定輸入影格的目的索引。這是空格或「|」分隔的索引列表,將輸入影格對應到輸出影格。索引數量也會設定每個索引可能具有的最大值。「-1」索引具有特殊含義,即捨棄影格。

第一個影格的索引為 0。預設值為保持輸入不變。

32.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
    

32.236 shufflepixels

重新排序影片影格中的像素。

此濾波器接受以下選項

direction, d

設定混洗方向。可以是正向或反向方向。預設方向為正向。

mode, m

設定混洗模式。可以是水平、垂直或區塊模式。

width (寬度),w
height, h

設定混洗 block_size。在水平混洗模式下,僅使用大小的寬度部分,而在垂直混洗模式下,僅使用大小的高度部分。

種子,s

設定用於混洗像素的隨機種子。主要用於設定為能夠反轉濾鏡處理以取得原始輸入。例如,若要反轉正向混洗,您需要使用相同的參數和完全相同的種子,並將方向設定為反向。

32.237 shuffleplanes

重新排序和/或複製影片平面。

它接受以下參數

map0

要用作第一個輸出平面的輸入平面的索引。

map1

要用作第二個輸出平面的輸入平面的索引。

map2

要用作第三個輸出平面的輸入平面的索引。

map3

要用作第四個輸出平面的輸入平面的索引。

第一個平面的索引為 0。預設值為保持輸入不變。

32.237.1 範例

  • 交換輸入的第二個和第三個平面
    ffmpeg -i INPUT -vf shuffleplanes=0:2:1:3 OUTPUT
    

32.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

識別超出合法廣播範圍的像素。

color, c

設定 out 選項的高亮顏色。預設顏色為黃色。

32.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 metadata。
    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}
    
    

32.239 signature

計算 MPEG-7 影片簽章。此濾鏡可以處理多個輸入。在這種情況下,還可以額外計算輸入之間的匹配度。濾鏡始終通過第一個輸入。每個串流的簽章可以寫入檔案中。

它接受以下選項

detectmode

啟用或停用比對程序。

可用值為

off

停用比對計算(預設)。

full

計算整個影片的比對度,並輸出整個影片是否匹配或僅部分匹配。

fast

僅計算到找到匹配或影片結束為止。在某些情況下應該更快。

nb_inputs

設定輸入數量。選項值必須為非負整數。預設值為 1。

filename

設定寫入輸出的路徑。如果有多個輸入,則路徑必須是原型,即必須包含 %d 或 %0nd(其中 n 是正整數),它將被輸入編號取代。如果未指定檔案名稱,則不會寫入任何輸出。這是預設值。

format

選擇輸出格式。

可用值為

binary

使用指定的二進制表示法(預設)。

xml

使用指定的 xml 表示法。

th_d

設定偵測一個單字是否相似的閾值。選項值必須是大于零的整數。預設值為 9000。

th_dc

設定偵測所有單字是否相似的閾值。選項值必須是大于零的整數。預設值為 60000。

th_xh

設定偵測影格是否相似的閾值。選項值必須是大于零的整數。預設值為 116。

th_di

設定將序列識別為匹配序列的最小影格長度。選項值必須為非負整數值。預設值為 0。

th_it

設定匹配影格與所有影格必須具有的最小關係。選項值必須是介於 0 和 1 之間的雙精度值。預設值為 0.5。

32.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 -
    

32.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。

32.240.1 範例

  • 計算 SI/TI 指標並列印摘要
    ffmpeg -i input.mp4 -vf siti=print_summary=1 -f null -
    

32.241 smartblur

模糊輸入影片,但不影響輪廓。

它接受以下選項

亮度半徑,lr

設定亮度半徑。選項值必須是範圍在 [0.1,5.0] 之間的浮點數,用於指定用於模糊影像的高斯濾鏡的變異數(值越大速度越慢)。預設值為 1.0。

luma_strength, ls

設定亮度強度。選項值必須是範圍在 [-1.0,1.0] 之間的浮點數,用於配置模糊效果。包含在 [0.0,1.0] 中的值將模糊影像,而包含在 [-1.0,0.0] 中的值將銳化影像。預設值為 1.0。

luma_threshold, lt

設定亮度閾值,用作係數來決定是否應模糊像素。選項值必須是範圍在 [-30,30] 之間的整數。值為 0 將過濾整個影像,包含在 [0,30] 中的值將過濾平坦區域,而包含在 [-30,0] 中的值將過濾邊緣。預設值為 0。

彩度半徑,cr

設定色度半徑。選項值必須是範圍在 [0.1,5.0] 之間的浮點數,用於指定用於模糊影像的高斯濾鏡的變異數(值越大速度越慢)。預設值為 luma_radius

chroma_strength, cs

設定色度強度。選項值必須是範圍在 [-1.0,1.0] 之間的浮點數,用於配置模糊效果。包含在 [0.0,1.0] 中的值將模糊影像,而包含在 [-1.0,0.0] 中的值將銳化影像。預設值為 luma_strength

chroma_threshold, ct

設定色度閾值,用作係數來決定是否應模糊像素。選項值必須是範圍在 [-30,30] 之間的整數。值為 0 將過濾整個影像,包含在 [0,30] 中的值將過濾平坦區域,而包含在 [-30,0] 中的值將過濾邊緣。預設值為 luma_threshold

Alpha 半徑,ar

設定 Alpha 半徑。選項值必須是範圍在 [0.1,5.0] 之間的浮點數,用於指定用於模糊影像的高斯濾鏡的變異數(值越大速度越慢)。預設值為 luma_radius

alpha_strength, as

設定 Alpha 強度。選項值必須是範圍在 [-1.0,1.0] 之間的浮點數,用於配置模糊效果。包含在 [0.0,1.0] 中的值將模糊影像,而包含在 [-1.0,0.0] 中的值將銳化影像。預設值為 luma_strength

alpha_threshold, at

設定 Alpha 閾值,用作係數來決定是否應模糊像素。選項值必須是範圍在 [-30,30] 之間的整數。值為 0 將過濾整個影像,包含在 [0,30] 中的值將過濾平坦區域,而包含在 [-30,0] 中的值將過濾邊緣。預設值為 luma_threshold

如果未明確設定色度或 Alpha 選項,則會設定對應的亮度值。

32.242 sobel

將索貝爾運算子應用於輸入影片串流。

此濾波器接受以下選項

planes

設定將處理哪些平面,未處理的平面將被複製。預設值為 0xf,所有平面都將被處理。

scale

設定將與濾鏡結果相乘的值。

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

設定將新增到濾鏡結果的值。

32.242.1 指令

mode

32.243 spp

應用一個簡單的後處理濾鏡,該濾鏡在多個(或在 quality 等級 6 的情況下為所有)位移處壓縮和解壓縮影像,並對結果取平均值。

通過第一個輸入。

設定音調品質。可能的值為

設定品質。此選項定義平均的等級數。它接受範圍在 0-6 之間的整數。如果設定為 0,則濾鏡將不起作用。值為 6 表示品質較高。對於該值的每次遞增,速度會下降約 2 倍。預設值為 3

qp

強制恆定的量化參數。如果未設定,濾鏡將使用來自影片串流的 QP(如果可用)。

o

設定閾值模式。可用的模式有

hard

設定硬閾值(預設)。

soft

設定軟閾值 (更好的去振鈴效果,但可能更模糊)。

use_bframe_qp

如果設定為 1,則啟用使用來自 B 影格的 QP。使用此選項可能會導致閃爍,因為 B 影格通常具有較大的 QP。預設值為 0(未啟用)。

32.243.1 指令

此濾波器支援以下命令

quality, level

設定品質等級。可以使用值 max 來設定最大等級,目前為 6

32.244 sr

通過應用基於卷積神經網路的超分辨率方法之一來縮放輸入。支援的模型

訓練腳本以及模型檔案 (.pb) 儲存的腳本可以在 https://github.com/XueweiMeng/sr/tree/sr_dnn_native 找到。原始儲存庫位於 https://github.com/HighVoltageRocknRoll/sr.git

通過第一個輸入。

dnn_backend

指定要用於模型載入和執行的 DNN 後端。此選項接受以下值

tensorflow

TensorFlow 後端。要啟用此後端,您需要安裝 TensorFlow for C 程式庫(請參閱 https://tensorflow.dev.org.tw/install/lang_c)並使用 --enable-libtensorflow 配置 FFmpeg

model

設定模型檔案的路徑,指定網路架構及其參數。請注意,不同的後端使用不同的檔案格式。TensorFlow、OpenVINO 後端只能載入其格式的檔案。

scale_factor

設定 SRCNN 模型的縮放因子。允許的值為 234。預設值為 2。縮放因子對於 SRCNN 模型是必要的,因為它接受使用雙三次升頻和適當縮放因子升頻的輸入。

若要取得完整功能(例如非同步執行),請使用 dnn_processing 濾鏡。

32.245 ssim

取得兩個輸入影片之間的 SSIM(結構相似性指標)。

此濾鏡接受兩個輸入影片,第一個輸入被視為「主要」來源,並以未更改的方式傳遞到輸出。第二個輸入用作計算 SSIM 的「參考」影片。

為了使此濾鏡正常運作,兩個視訊輸入必須具有相同的解析度和像素格式。此外,它假設兩個輸入具有相同數量的影格,並逐一比較。

濾鏡儲存每個影格的計算 SSIM。

以下是接受參數的描述。

stats_file, f

如果指定,濾鏡將使用指定的檔案來儲存每個單獨影格的 SSIM。當檔案名稱等於 "-" 時,數據將發送到標準輸出。

如果選取 stats_file,則列印的檔案包含每個比較的影格對的 key:value 形式的鍵/值對序列。

下面是每個顯示參數的描述

n

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

Y, U, V, R, G, B

指定後綴組件的比較影格的 SSIM。

All

整個影格的比較影格的 SSIM。

dB

與上述相同,但以 dB 表示。

此濾鏡也支援 framesync 選項。

32.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 -
    

32.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

紅/青彩色浮雕,使用 dubois 最小二乘投影優化(左眼為紅色濾鏡,右眼為青色濾鏡)

agmg

綠/洋紅灰度浮雕(左眼為綠色濾鏡,右眼為洋紅濾鏡)

agmh

綠/洋紅半彩色浮雕(左眼為綠色濾鏡,右眼為洋紅濾鏡)

agmc

浮雕綠/洋紅色 (左眼綠色濾鏡,右眼洋紅色濾鏡)

agmd

使用杜博伊斯 (dubois) 最小平方法投影優化的浮雕綠/洋紅色 (左眼綠色濾鏡,右眼洋紅色濾鏡)

aybg

浮雕黃/藍灰色 (左眼黃色濾鏡,右眼藍色濾鏡)

aybh

浮雕黃/藍半彩色 (左眼黃色濾鏡,右眼藍色濾鏡)

aybc

浮雕黃/藍色 (左眼黃色濾鏡,右眼藍色濾鏡)

aybd

使用杜博伊斯 (dubois) 最小平方法投影優化的浮雕黃/藍色 (左眼黃色濾鏡,右眼藍色濾鏡)

ml

單聲道輸出 (僅左眼)

mr

單聲道輸出 (僅右眼)

chl

棋盤式,左眼優先

chr

棋盤式,右眼優先

icl

交錯列,左眼優先

icr

交錯列,右眼優先

hdmi

HDMI 幀封裝

預設值為 ‘arcd’。

32.246.1 範例

  • 將輸入視訊從並排平行轉換為浮雕黃/藍色杜博伊斯 (dubois)
    stereo3d=sbsl:aybd
    
  • 將輸入視訊從上下 (左眼在上,右眼在下) 轉換為並排交叉眼。
    stereo3d=abl:sbsr
    

32.247 streamselect, astreamselect

選擇視訊或音訊串流。

通過第一個輸入。

inputs (輸入)

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

對應 (map)

設定輸入索引以重新對應到輸出。

32.247.1 指令

streamselectastreamselect 濾鏡支援以下指令

對應 (map)

設定輸入索引以重新對應到輸出。

32.247.2 範例

  • 選擇前 5 秒的第 1 個串流,以及剩餘時間的第 2 個串流
    sendcmd='5.0 streamselect map 1',streamselect=inputs=2:map=0
    
  • 與上述相同,但用於音訊
    asendcmd='5.0 astreamselect map 1',astreamselect=inputs=2:map=0
    

32.248 subtitles

使用 libass 函式庫在輸入視訊上繪製字幕。

若要啟用此濾鏡的編譯,您需要使用 --enable-libass 配置 FFmpeg。此濾鏡也需要使用 libavcodec 和 libavformat 進行建置,才能將傳遞的字幕檔案轉換為 ASS (Advanced Substation Alpha) 字幕格式。

通過第一個輸入。

filename, f

設定要讀取的字幕檔案名稱。必須指定此項。

original_size

指定原始視訊的大小,即 ASS 檔案所撰寫的視訊。關於此選項的語法,請查看 (ffmpeg-utils) 手冊中的「視訊大小」章節。由於 ASS 長寬比算術中的設計缺陷,如果長寬比已變更,則必須使用此選項才能正確縮放字型。

fontsdir

設定包含濾鏡可使用字型的目錄路徑。這些字型將會額外於字型提供者使用的字型之外使用。

alpha

處理 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'

32.249 super2xsai

使用 Super2xSaI (Scale and Interpolate) 像素藝術縮放演算法將輸入放大 2 倍並平滑化。

適用於放大像素藝術圖像而不會降低銳利度。

32.250 swaprect

交換視訊中的兩個矩形物件。

此濾波器接受以下選項

f

設定物件寬度。

h

設定物件高度。

x1

設定第 1 個矩形的 x 座標。

y1

設定第 1 個矩形的 y 座標。

x2

設定第 2 個矩形的 x 座標。

y2

設定第 2 個矩形的 y 座標。

所有表達式都會針對每個影格評估一次。

所有選項都是包含以下常數的表達式

f
h

輸入寬度和高度。

a

w / h 相同

sar

輸入樣本縱橫比

dar

輸入顯示長寬比,它與 (w / h) * sar 相同

n

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

t

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

影格中樣本數

drawtext=text='This is a text with a \\' character and a \\: character'

32.250.1 指令

mode

32.251 swapuv

交換 U 和 V 平面。

32.252 tblend

混合連續的視訊影格。

請參閱 blend

32.253 telecine

將電視電影 (telecine) 處理套用至視訊。

此濾波器接受以下選項

first_field
top, t

頂場優先

bottom, b

底場優先。預設值為 top

pattern

代表您要套用的下拉模式的數字字串。預設值為 23

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

32.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

slide

設定滑動模式。

滑動的可用值為

frame

到達右邊界時繪製新幀。

replace

用新的列取代舊的列。

scroll

從右向左捲動。

rscroll

從左向右捲動。

picture

繪製單張圖片。

預設值為 replace

32.255 threshold

將閾值效果套用至視訊串流。

此濾鏡需要四個視訊串流才能執行閾值處理。第一個串流是我們要篩選的串流。第二個串流保存閾值,第三個串流保存最小值,最後,第四個串流保存最大值。

此濾波器接受以下選項

planes

設定將處理哪些平面,未處理的平面將被複製。預設值為 0xf,所有平面都將被處理。

例如,如果第一個串流像素的成分值小於來自第二個閾值串流的像素成分的閾值,則將選取第三個串流值,否則將選取第四個串流像素成分值。

使用顏色來源濾鏡可以執行各種閾值處理類型

32.255.1 指令

此濾鏡支援所有上述選項作為 指令

32.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
    

32.256 thumbnail

在給定的一系列連續影格中選取最具代表性的影格。

通過第一個輸入。

n

設定要分析的影格批次大小;在一組 n 個影格中,濾鏡將選取其中一個影格,然後處理下一批 n 個影格,直到結束。預設值為 100

log

設定記錄層級以顯示選取影格的統計資訊。預設值為 info

由於濾鏡會追蹤整個影格序列,因此較大的 n 值會導致更高的記憶體使用量,因此不建議使用高值。

32.256.1 範例

  • 每 50 個影格擷取一張圖片
    thumbnail=50
    
  • 使用 ffmpeg 建立縮圖的完整範例
    ffmpeg -i in.avi -vf thumbnail,scale=300:200 -frames:v 1 out.png
    

32.257 tile

將多個連續影格平鋪在一起。

untile 濾鏡可以執行反向操作。

通過第一個輸入。

layout

COLUMNSxROWS 格式設定網格大小。範圍上限為 UINT_MAX 個儲存格。預設值為 6x5

nb_frames

設定要在給定區域中渲染的最大影格數。它必須小於或等於 wxh。預設值為 0,表示將使用所有區域。

margin

以像素為單位設定外邊界邊距。範圍為 0 到 1024。預設值為 0

padding

設定內邊界厚度 (即影格之間的像素數)。如需更進階的邊距選項 (例如針對邊緣使用不同的值),請參閱 pad 視訊濾鏡。範圍為 0 到 1024。預設值為 0

顏色

指定未使用區域的顏色。關於此選項的語法,請查看 (ffmpeg-utils) 手冊中的「顏色」章節color 的預設值為「黑色」。

overlap

設定將多個連續影格平鋪在一起時要重疊的影格數。該值必須介於 0nb_frames - 1 之間。預設值為 0

init_padding

設定在顯示第一個輸出影格之前最初要為空的影格數。這控制了何時會取得第一個輸出影格。該值必須介於 0nb_frames - 1 之間。預設值為 0

32.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
    

    ffmpeg 需要 -vsync 0,以防止複製每個輸出影格來適應原始偵測到的影格率。

  • 使用混合的扁平和具名選項,在 3x2 影格的區域中顯示 5 張圖片,圖片之間間隔 7 像素,初始邊距為 2 像素
    tile=3x2:nb_frames=5:padding=7:margin=2
    

32.258 tiltandshift

套用傾斜偏移效果。

當您反轉時間和空間時會發生什麼事?

通常,視訊由多個影格組成,這些影格代表不同的時間瞬間,並顯示在影格捕捉的空間中演變的場景。此濾鏡是該概念的對立面,其靈感來自傾斜偏移攝影。

濾鏡處理後的影格包含組成序列的整個事件時間軸,這是透過將每個影格的像素切片放入單一影格中而獲得的。但是,由於沒有無限寬度的影格,因此這是以輸入影格的寬度完成的,並且透過針對每個後續影格移開一列來重新組成視訊。為了將空間對應到時間,濾鏡也會傾斜每個輸入影格,以便保留運動。這是透過從每個輸入影格逐步選取不同的列來完成的。

最終結果是一種反向視差,因此遠處的物體比前方的物體移動得更快。此視訊效果的理想條件是運動非常少且背景靜態,或者運動很多且景深非常寬 (例如,寬廣的全景,同時在火車上移動)。

此濾波器接受以下參數

tilt

在移動時傾斜視訊 (預設)。取消設定時,視訊將會滑動靜態影像,該靜態影像由每個影格的第一列組成。

start

在篩選開始時要執行的操作 (請參閱下文)。

end

在篩選結束時要執行的操作 (請參閱下文)。

hold

在篩選開始之前應通過多少列。

pad

在篩選結束之前應插入多少列。

通常,濾鏡會從第一個影格開始移動和傾斜,並在收到最後一個影格時停止。但是,在篩選開始之前,可能會保留正常視訊,以便效果緩慢移動到位。同樣地,最後一個視訊影格可能會在結尾重建。或者,也可以僅以黑色開始和結束。

none

篩選立即開始,並在收到最後一個影格時結束。

frame

第一個影格或最後一個影格在處理期間保持完整。

black

黑色會在篩選的開始或結束時填補。

32.259 tinterlace

執行各種時間場景交錯類型。

影格從 1 開始計數,因此第一個輸入影格被視為奇數。

通過第一個輸入。

o

指定交錯模式。此選項也可以單獨指定為值。請參閱下文以取得此選項的值清單。

可用值為

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 啟用。

32.260 tmedian

從多個連續的輸入視訊影格中選取中位數像素。

通過第一個輸入。

radius (半徑)

設定中位數濾鏡的半徑。預設值為 1。允許範圍為 1 到 127。

planes

設定要篩選的平面。預設值為 15,表示處理所有平面。

百分位數

設定中位數百分位數。預設值為 0.5。預設值 0.5 將始終選取中位數,而 0 將選取最小值,1 將選取最大值。

32.260.1 指令

此濾鏡支援上述所有選項作為 指令,但不包括選項 radius

32.261 tmidequalizer

套用時間中途視訊均衡化效果。

中途視訊均衡化調整一系列視訊影格以具有相同的直方圖,同時盡可能保持其動態。它對於例如匹配視訊影格序列的曝光非常有用。

此濾鏡接受以下選項

radius (半徑)

設定濾波半徑。預設值為 5。允許範圍為 1 到 127。

sigma

設定濾波 sigma 值。預設值為 0.5。這控制濾波強度。將此選項設定為 0 實際上不會執行任何操作。

planes

設定要處理的平面。預設值為 15,即所有可用平面。

32.262 tmix

混合連續的視訊影格。

以下是接受選項的描述。

frames

要混合的連續影格數。如果未指定,則預設為 3。

當輸入串流結束時,音量重新正規化的轉換時間,以秒為單位。預設值為 2 秒。

指定每個輸入視訊影格的權重。每個權重以空格分隔。如果權重數量小於 frames 數量,則最後指定的權重將用於所有剩餘未設定的權重。

scale

指定縮放比例,如果設定了縮放比例,它將與每個權重乘以像素值的總和相乘,以得出最終目標像素值。預設情況下,scale 會自動縮放到權重總和。

planes

設定要過濾的平面。預設值為全部。允許的範圍從 0 到 15。

32.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
    

32.262.2 指令

此濾波器支援以下命令

當輸入串流結束時,音量重新正規化的轉換時間,以秒為單位。預設值為 2 秒。
scale
planes

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

32.263 tonemap

色調映射來自不同動態範圍的顏色。

此濾鏡預期輸入單精度浮點數格式的資料,因為它需要對超出範圍的值進行運算(並且可以輸出)。您需要使用另一個濾鏡,例如 zscale,將結果影格轉換為可用的格式。

實作的色調映射演算法僅適用於線性光,因此輸入資料應事先線性化(並可能正確標記)。

ffmpeg -i INPUT -vf zscale=transfer=linear,tonemap=clip,zscale=transfer=bt709,format=yuv420p OUTPUT

32.263.1 選項

濾鏡接受以下選項。

tonemap

設定要使用的色調映射演算法。

可能的值為

none

不套用任何色調映射,僅對過亮的像素進行去飽和處理。

clip

硬性剪裁任何超出範圍的值。對於範圍內的值,使用此選項可獲得完美的色彩準確度,但會扭曲超出範圍的值。

linear

將整個參考色域拉伸為顯示器線性倍數。

gamma

在色調曲線之間擬合對數轉換。

reinhard

使用簡單的曲線保留整體影像亮度,採用非線性對比度,這會導致細節扁平化並降低色彩準確度。

hable

reinhard 更好地保留暗部和亮部細節,但會稍微使所有內容變暗。當細節保留比色彩和亮度準確度更重要時,請使用此選項。

mobius

平滑地映射超出範圍的值,同時盡可能保留範圍內素材的對比度和色彩。當色彩準確度比細節保留更重要時,請使用此選項。

預設值為 none。

param

調整色調映射演算法。

這會影響以下演算法

none

忽略。

linear

指定拉伸時使用的縮放比例因子。預設值為 1.0。

gamma

指定函數的指數。預設值為 1.8。

clip

指定一個額外的線性係數,在剪裁前乘以訊號。預設值為 1.0。

reinhard

指定顯示器峰值時的局部對比度係數。預設值為 0.5,這表示在範圍內的值亮度約為剪裁時的一半。

hable

忽略。

mobius

指定從線性轉換到 Mobius 轉換的過渡點。低於此點的每個值都保證會進行 1:1 映射。值越高,結果越準確,但會犧牲亮部細節。預設值為 0.3,由於初始斜率陡峭,仍能相當準確地保留範圍內的色彩。

desat

對亮度超過此等級的高光應用去飽和處理。參數越高,保留的色彩資訊越多。此設定有助於防止超高光出現不自然的色彩溢出,方法是(平滑地)轉變為白色。這使影像感覺更自然,但會犧牲超出範圍色彩的資訊。

預設值 2.0 有些保守,主要僅適用於天空或陽光直射的表面。設定為 0.0 會停用此選項。

此選項僅在輸入影格具有支援的色彩標籤時才有效。

peak (峰值)

使用此值覆寫訊號/標稱/參考峰值。當顯示器元資料中嵌入的峰值資訊不可靠,或從較低範圍色調映射到較高範圍時,此選項很有用。

32.264 tpad

暫時填充影片影格。

通過第一個輸入。

start

指定輸入影片串流前的延遲影格數。預設值為 0。

stop

指定輸入影片串流後的填充影格數。設定為 -1 表示無限期填充。預設值為 0。

start_mode (開始模式)

設定新增到串流開頭的影格種類。可以是 addcloneadd 會新增純色影格。clone 會複製第一個影格。預設值為 add

stop_mode (停止模式)

設定新增到串流結尾的影格種類。可以是 addcloneadd 會新增純色影格。clone 會複製最後一個影格。預設值為 add

start_duration, stop_duration

指定開始/停止延遲的持續時間。請參閱 (ffmpeg-utils) ffmpeg-utils(1) 手冊中的「時間持續時間」章節,以了解可接受的語法。這些選項會覆寫 startstop。預設值為 0。

顏色

指定填充區域的顏色。有關此選項的語法,請查看 (ffmpeg-utils) 手冊中的 "Color" 章節

color 的預設值為 "black"。

32.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

32.266 transpose_npp

轉置輸入影片中的行列,並可選擇翻轉。如需更深入的範例,請參閱 transpose 影片濾鏡,它與此濾鏡共用大部分相同的選項。

它接受以下參數

dir

指定轉置方向。

可以採用以下值

cclock_flip

逆時針旋轉 90 度並垂直翻轉。(預設)

clock

順時針旋轉 90 度。

cclock

逆時針旋轉 90 度。

clock_flip

順時針旋轉 90 度並垂直翻轉。

passthrough

如果輸入幾何形狀與指定值指定的幾何形狀相符,則不套用轉置。它接受以下值

none

始終套用轉置。(預設)

portrait

保留直向幾何形狀(當 height >= width 時)。

landscape

保留橫向幾何形狀(當 width >= height 時)。

32.267 trim

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

它接受以下參數

start

指定保留區段的開始時間,即時間戳記為 start 的影格將會是輸出中的第一個影格。

end

指定將會捨棄的第一個影格的時間,即緊接在時間戳記為 end 的影格之前的影格將會是輸出中的最後一個影格。

開始點 (start_pts)

這與 start 相同,不同之處在於此選項以時間基底單位而非秒為單位設定開始時間戳記。

結束點 (end_pts)

這與 end 相同,不同之處在於此選項以時間基底單位而非秒為單位設定結束時間戳記。

duration

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

start_frame

應傳遞到輸出的第一個影格的編號。

end_frame

應捨棄的第一個影格的編號。

startendduration 表示為時間持續時間規格;請參閱 (ffmpeg-utils) ffmpeg-utils(1) 手冊中的「時間持續時間」章節,以了解可接受的語法。

請注意,前兩組開始/結束選項和 duration 選項會查看影格時間戳記,而 _frame 變體僅計算通過濾鏡的影格。另請注意,此濾鏡不會修改時間戳記。如果您希望輸出時間戳記從零開始,請在 trim 濾鏡後插入 setpts 濾鏡。

如果設定了多個開始或結束選項,此濾鏡會盡量貪婪地保留至少符合一個指定條件的所有影格。若要僅保留同時符合所有條件的部分,請鏈結多個 trim 濾鏡。

預設值會保留所有輸入。因此,可以設定例如僅結束值,以保留指定時間之前的所有內容。

範例

  • 捨棄除輸入的第二分鐘之外的所有內容
    ffmpeg -i INPUT -vf trim=60:120
    
  • 僅保留前一秒
    ffmpeg -i INPUT -vf trim=duration=1
    

32.268 unpremultiply

使用第二個串流的第一個平面作為 Alpha 通道,對輸入影片串流套用 Alpha 通道預乘效果。

兩個串流必須具有相同的尺寸和相同的像素格式。

此濾波器接受以下選項

planes

設定將處理哪些平面,未處理的平面將被複製。預設值為 0xf,所有平面都將被處理。

如果格式具有 1 或 2 個組件,則亮度為位元 0。如果格式具有 3 或 4 個組件:對於 RGB 格式,位元 0 為綠色,位元 1 為藍色,位元 2 為紅色;對於 YUV 格式,位元 0 為亮度,位元 1 為色度-U,位元 2 為色度-V。如果存在 Alpha 通道,則始終是最後一個位元。

inplace

不需要第二個輸入進行處理,而是使用來自輸入串流的 Alpha 平面。

32.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'。

32.269.1 範例

  • 套用強烈的亮度銳化效果
    unsharp=luma_msize_x=7:luma_msize_y=7:luma_amount=2.5
    
  • 對亮度和色度參數套用強烈的模糊效果
    unsharp=7:7:-2:7:7:-2
    

32.270 untile

將由平鋪影像組成的影片分解為個別影像。

輸出影片的影格率是輸入影片的影格率乘以平鋪數量。

此濾鏡執行與 tile 相反的操作。

通過第一個輸入。

layout

設定網格大小(即行數和列數)。如需此選項的語法,請查看 (ffmpeg-utils) ffmpeg-utils 手冊中的「影片大小」章節

32.270.1 範例

  • 從由垂直堆疊的 25 個影格組成的靜態影像檔案產生 1 秒的影片,就像類比式膠捲一樣
    ffmpeg -r 1 -i image.jpg -vf untile=1x25 movie.mkv
    

32.271 uspp

套用超慢/簡單的後處理濾鏡,以多個(或在 quality 等級 8 的情況下為所有)偏移壓縮和解壓縮影像,並平均結果。

這與 spp 行為的不同之處在於 uspp 實際上使用 libavcodec Snow 編碼和解碼每個案例,而 spp 使用簡化的僅限幀內 8x8 DCT,類似於 MJPEG。

此濾鏡在 5.0 到 6.0 之間的 ffmpeg 版本中不可用。

通過第一個輸入。

設定音調品質。可能的值為

設定品質。此選項定義用於平均的等級數。它接受範圍 0-8 的整數。如果設定為 0,則濾鏡將不起作用。值為 8 表示品質較高。對於該值的每次遞增,速度會降低約 2 倍。預設值為 3

qp

強制恆定的量化參數。如果未設定,濾鏡將使用來自影片串流的 QP(如果可用)。

codec

使用指定的編解碼器而不是 snow。

32.272 v360

在各種格式之間轉換 360 度影片。

通過第一個輸入。

input
output

設定輸入/輸出影片的格式。

可用格式

e
equirect

等距柱狀投影。

c3x2
c6x1
c1x6

具有 3x2/6x1/1x6 佈局的立方體貼圖。

格式特定選項

in_pad
out_pad

設定輸入/輸出立方體貼圖的填充比例。值為小數。

範例值

0

無填充。

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

b

預設值為 rludfb

in_frot
out_frot

設定輸入/輸出立方體貼圖的面旋轉。為每個位置選擇一個角度。

角度指定

0

0 度順時針

t

90 度順時針

Butterworth,這是預設值。

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

最近鄰。

line
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

重設輸出影片的旋轉。布林值,預設為停用。

32.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
    

32.272.2 指令

此濾鏡支援上述部分選項作為命令

32.273 vaguedenoiser

套用基於小波的降噪器。

它使用 Cohen-Daubechies-Feauveau 9/7 小波將每個來自視訊輸入的影格轉換到小波域。然後,它對獲得的係數應用一些濾波。之後它會進行反小波轉換。由於小波的特性,它應該能提供平滑的結果,並減少噪聲,而不會模糊圖像特徵。

此濾波器接受以下選項

u

濾波強度。數值越高,視訊濾波效果越強。硬閾值處理可以使用比軟閾值處理更高的閾值,在視訊看起來過度濾波之前。預設值為 2。

method

濾鏡將使用的濾波方法。

它接受以下值:

hard

所有低於閾值的值都將歸零。

soft

所有低於閾值的值都將歸零。所有高於閾值的值都將減去閾值。

garrote

縮放或消除係數 - 介於(較)軟閾值處理和(較不)硬閾值處理之間。

預設值為 garrote。

nsteps

小波將圖片分解的次數。圖片不能被分解超過特定點(通常,對於 640x480 影格為 8 - 因為 2^9 = 512 > 480)。有效值為介於 1 和 32 之間的整數。預設值為 6。

percent

部分或完整降噪(有限的係數縮減),從 0 到 100。預設值為 85。

planes

要處理的平面的列表。預設情況下,所有平面都會被處理。

type

濾鏡將使用的閾值類型。

它接受以下值:

universal

所有分解都使用相同的閾值。

bayes

使用的閾值也取決於每個分解係數。

預設值為 universal。

32.274 varblur

透過使用第二個視訊流設定模糊半徑,套用可變模糊濾鏡。第二個視訊流必須具有相同的尺寸。

此濾波器接受以下選項

min_r

設定允許的最小半徑。允許的範圍是從 0 到 254。預設值為 0。

max_r

設定允許的最大半徑。允許的範圍是從 1 到 255。預設值為 8。

planes

設定要處理的平面。預設情況下,使用所有平面。

varblur 濾鏡也支援 framesync 選項。

32.274.1 指令

此濾鏡支援上述所有選項作為命令

32.275 vectorscope

在二維圖形(稱為向量示波器)中顯示 2 個顏色分量值。

此濾波器接受以下選項

mode, m

設定向量示波器模式。

它接受以下值:

gray
tint

灰度值顯示在圖形上,更高的亮度表示更多像素在圖形上的位置具有相同的分量顏色值。這是預設模式。

color

灰度值顯示在圖形上。視訊影格中不存在的周圍像素值以由選項 xy 設定的 2 個顏色分量的漸層繪製。第三個顏色分量是靜態的。

color2

視訊影格中存在的實際顏色分量值顯示在圖形上。

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

即時包絡線,即使是最暗的單個像素也會被清楚地突出顯示。

peak

保持圖形中呈現的最大值和最小值隨時間變化。這樣,您仍然可以發現超出範圍的值,而無需 постійно 看著向量示波器。

peak+instant

峰值和即時包絡線組合在一起。

graticule, g

設定要繪製的刻度類型。

none
green
color
invert
不透明度, o

設定刻度不透明度。

標誌, 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

設定灰度/色調向量示波器模式的色調。預設情況下,兩個選項都為零。這表示沒有色調,輸出將保持灰度。

32.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 開始計數。

show

在結果影格中顯示欄位和變換。它接受 0-2 範圍內的整數。預設值為 0,這會停用任何視覺化。

fileformat

要寫入的變換資料檔案的格式。可接受的值為

ascii

人類可讀的純文字

binary

二進位格式,比 ascii 小約 40%。 (預設)

32.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
    

32.277 vidstabtransform

視訊穩定/去抖動:2 次傳遞中的第 2 次,請參閱 vidstabdetect 了解第 1 次傳遞。

讀取包含每個影格的變換資訊的檔案,並套用/補償它們。與 vidstabdetect 濾鏡一起使用,可以用於對視訊進行去抖動。另請參閱 http://public.hronopik.de/vid.stab。重要的是也要使用 unsharp 濾鏡,請參閱下文。

要啟用此濾鏡的編譯,您需要使用 --enable-libvidstab 配置 FFmpeg。

32.277.1 選項

input

設定用於讀取變換的檔案路徑。預設值為 transforms.trf

short

設定用於低通濾波相機運動的影格數(值*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

設定最佳縮放以避免邊框。

可接受的值為

0

disabled

t

確定最佳靜態縮放值(只有非常強烈的運動才會導致可見邊框)(預設)

Butterworth,這是預設值。

確定最佳自適應縮放值(不會看到邊框),請參閱 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。

32.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
    

32.278 vflip

垂直翻轉輸入視訊。

例如,要使用 ffmpeg 垂直翻轉視訊

ffmpeg -i in.avi -vf "vflip" out.avi

32.279 vfrdet

偵測可變影格率視訊。

此濾鏡嘗試偵測輸入是可變影格率還是恆定影格率。

最後,它將輸出偵測為具有可變 delta pts 的影格數,以及具有恆定 delta pts 的影格數。如果存在具有可變 delta 的影格,則它還將顯示遇到的最小、最大和平均 delta。

32.280 vibrance

增強或改變飽和度。

通過第一個輸入。

強度

如果為正值,則設定增強強度;如果為負值,則設定改變強度。預設值為 0。允許的範圍是從 -2 到 2。

rbal

設定紅色平衡。預設值為 1。允許的範圍是從 -10 到 10。

gbal

設定綠色平衡。預設值為 1。允許的範圍是從 -10 到 10。

bbal

設定藍色平衡。預設值為 1。允許的範圍是從 -10 到 10。

rlum

設定紅色亮度係數。

glum

設定綠色亮度係數。

blum

設定藍色亮度係數。

alternate

如果 intensity 為負值且此項設定為 1,則顏色將會改變,否則顏色將會降低飽和度,更接近灰色。

32.280.1 指令

mode

32.281 vif

取得兩個輸入視訊之間的平均 VIF(視覺資訊保真度)。

此濾鏡採用兩個輸入視訊。

為了使此濾鏡正常運作,兩個輸入視訊都必須具有相同的解析度和像素格式。 此外,它假設兩個輸入具有相同的影格數,這些影格會逐一比較。

獲得的平均 VIF 分數透過記錄系統印出。

濾鏡儲存每個影格的計算 VIF 分數。

此濾鏡也支援 framesync 選項。

在以下範例中,正在處理的輸入檔案 main.mpg 會與參考檔案 ref.mpg 進行比較。

ffmpeg -i main.mpg -i ref.mpg -lavfi vif -f null -

32.282 vignette

製作或反轉自然的暈影效果。

通過第一個輸入。

angle, a

將鏡頭角度表示式設定為弧度數。

該值被截取在 [0,PI/2] 範圍內。

預設值:"PI/5"

x0
y0

設定中心座標表示式。預設分別為 "w/2""h/2"

o

設定正向/反向模式。

可用的模式為

forward

離中心點的距離越大,圖像越暗。

backward

離中心點的距離越大,圖像越亮。這可以用於反轉暈影效果,儘管沒有自動偵測來提取鏡頭 angle 和其他設定(尚未)。它也可以用於創建燃燒效果。

預設值為 ‘forward’。

eval

設定表示式(anglex0y0)的評估模式。

它接受以下值:

init

僅在濾鏡初始化期間評估表示式一次。

frame

為每個傳入的影格評估表示式。這比 ‘init’ 模式慢得多,因為它需要重新計算所有縮放器,但它允許進階的動態表示式。

預設值為 ‘init’。

dither

設定抖動以減少圓形條帶效應。預設值為 1(啟用)。

aspect

設定暈影縱橫比。此設定允許調整暈影的形狀。將此值設定為輸入的 SAR 將使矩形暈影遵循視訊的尺寸。

預設值為 1/1

32.282.1 表達式

alphax0y0 表示式可以包含以下參數。

f
h

輸入寬度和高度

n

輸入影格編號,從 0 開始

pts

已篩選視訊影格的 PTS(展示時間戳記)時間,以 TB 單位表示,如果未定義則為 NAN

r

輸入視訊的影格率,如果輸入影格率未知則為 NAN

t

已篩選視訊影格的 PTS(展示時間戳記),以秒為單位表示,如果未定義則為 NAN

影格時間

輸入視訊的時間基底

32.282.2 範例

  • 套用簡單的強暈影效果
    vignette=PI/4
    
  • 製作閃爍的暈影
    vignette='PI/4+random(1)*PI/50':eval=frame
    

32.283 vmafmotion

取得視訊的平均 VMAF 運動分數。它是 VMAF 的組成指標之一。

獲得的平均運動分數透過記錄系統印出。

通過第一個輸入。

stats_file

如果指定,濾鏡將使用指定的檔案來儲存每個影格相對於前一個影格的運動分數。當檔案名稱等於 "-" 時,資料將傳送到標準輸出。

範例

ffmpeg -i ref.mpg -vf vmafmotion -f null -

32.284 vstack

垂直堆疊輸入視訊。

所有串流都必須具有相同的像素格式和相同的寬度。

請注意,此濾鏡比使用 overlaypad 濾鏡建立相同的輸出更快。

通過第一個輸入。

inputs (輸入)

設定輸入串流的數量。預設值為 2。

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

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

32.285 w3fdif

解交錯輸入視訊 ("w3fdif" 代表 "Weston 3 Field Deinterlacing Filter")。

基於 Martin Weston 為 BBC R&D 描述的過程,並基於 Jim Easterbrook 為 BBC R&D 編寫的解交錯演算法實作,Weston 3 欄位解交錯濾鏡使用 BBC R&D 計算的濾鏡係數。

此濾鏡使用影格中的欄位主導資訊來決定在輸出中首先放置每對欄位中的哪個欄位。如果它出錯,請在 w3fdif 濾鏡之前使用 setfield 濾鏡。

有兩組濾鏡係數,分別稱為「簡單」和「複雜」。可以透過傳遞可選參數來設定使用哪組濾鏡係數

filter

設定交錯濾鏡係數。接受以下值之一

simple

簡單濾鏡係數集。

complex

更複雜的濾鏡係數集。

預設值為 ‘complex’。

o

要採用的交錯模式。它接受以下其中一個值

frame

每個影格輸出一個影格。

field

每個場 (field) 輸出一個影格。

預設值為 field

parity

為輸入交錯視訊假設的圖像場奇偶性。它接受以下其中一個值

tff

假設頂場優先。

bff

假設底場優先。

設定投影階數。

啟用自動偵測場奇偶性。

預設值為 auto。如果交錯方式未知,或解碼器未匯出此資訊,則將假設為頂場優先。

deint

指定要對哪些影格進行去交錯處理。接受以下其中一個值

all

解交錯所有影格,

interlaced

僅對標記為交錯的影格進行去交錯處理。

預設值為 ‘all’。

32.285.1 指令

此濾鏡支援與選項相同的指令

32.286 waveform

視訊波形監視器。

波形監視器繪製色彩成分強度。預設僅亮度。波形的每一縱行對應於來源視訊中的像素縱行。

它接受以下選項

mode, m

可以是 rowcolumn。預設為 column。在 row 模式中,圖表左側代表色彩成分值 0,右側代表值 255。在 column 模式中,圖表頂部代表色彩成分值 0,底部代表值 255。

intensity, i

設定強度。較小的值有助於找出相同亮度的值在輸入的橫列/縱行中如何分佈。預設值為 0.04。允許範圍為 [0, 1]。

鏡像, r

設定鏡像模式。0 表示不鏡像,1 表示鏡像。在鏡像模式中,較高的值在 row 模式中將顯示在左側,在 column 模式中將顯示在頂部。預設值為 1 (鏡像)。

顯示, d

設定顯示模式。它接受以下值

overlay

呈現與 parade 中相同的資訊,不同之處在於,表示色彩分量的圖直接疊加在一起。

此顯示模式使您更容易發現色彩成分重疊區域中相對差異或相似之處,這些色彩成分在理想情況下應為相同的,例如中性白色、灰色或黑色。

stack

row 模式中並排顯示色彩成分的個別圖表,或在 column 模式中上下顯示。

parade

column 模式中並排顯示色彩成分的個別圖表,或在 row 模式中上下顯示。

使用此顯示模式可以輕鬆發現圖像亮部和暗部的色偏,方法是比較每個波形頂部和底部圖表的輪廓。由於白色、灰色和黑色的特徵是紅色、綠色和藍色的量完全相等,因此圖片的中性區域應顯示三個寬度/高度大致相等的波形。如果不是,則可以通過調整三個波形的級別來輕鬆執行校正。

預設值為 stack

components, c

設定要顯示的色彩成分。預設值為 1,表示如果輸入為 RGB 色彩空間,則僅顯示亮度或紅色色彩成分。例如,如果設定為 7,它將顯示所有 3 個 (如果) 可用的色彩成分。

envelope, e
none

無包絡線,這是預設值。

instant

即時包絡線,即使 step 值很小,圖表中呈現的最小值和最大值也將清晰可見。

peak

隨時間推移保持圖表中呈現的最小值和最大值。這樣,您仍然可以發現超出範圍的值,而無需 постоянно 查看波形。

peak+instant

峰值和即時包絡線組合在一起。

濾鏡, f
lowpass

無濾鏡,這是預設值。

flat

亮度和色度組合在一起。

aflat

與上述類似,但顯示藍色和紅色色度之間的差異。

xflat

與上述類似,但使用不同的顏色。

yflat

與上述類似,但再次使用不同的顏色。

chroma

僅顯示色度。

color

在波形上顯示實際色彩值。

acolor

與上述類似,但亮度顯示色度值的頻率。

graticule, g

設定要顯示哪個格線。

none

不顯示格線。

green

顯示綠色格線,指示合法的廣播範圍。

orange

顯示橘色格線,指示合法的廣播範圍。

invert

顯示反轉格線,指示合法的廣播範圍。

不透明度, o

設定刻度不透明度。

旗標, fl

設定刻度標誌。

numbers

在線條上方繪製數字。預設為啟用。

dots

繪製點而不是線條。

縮放, s

設定用於顯示格線的縮放比例。

digital
millivolts
ire

預設值為 digital。

bgopacity, b

設定背景不透明度。

tint0, t0
tint1, t1

設定輸出的色調。僅在低通濾鏡、顯示非覆蓋且輸入像素格式非 RGB 時使用。

適應模式, fm

設定視訊輸出幀的樣本縱橫比。可用於配置波形,使其在某個方向上不會過度拉伸。

none

設定樣本縱橫比為 1/1。

size

設定樣本縱橫比以符合視訊的輸入大小。

預設值為 ‘none’。

input

設定濾鏡要選取的輸入格式。可以是 ‘all’ (從所有可用格式中選擇),或 ‘first’ (選擇第一個可用格式)。預設值為 ‘first’。

32.287 weave, doubleweave

`weave` 濾鏡採用基於場的視訊輸入,並將每兩個連續場合併為單一幀,產生一個新的雙倍高度剪輯,幀率和幀數減半。

`doubleweave` 濾鏡的工作方式與 `weave` 相同,但不會使幀率和幀數減半。

它接受以下選項

first_field

設定第一場。可用值為

top, t

將幀設定為頂場優先。

bottom, b

將幀設定為底場優先。

32.287.1 範例

  • 使用 selectseparatefields 濾鏡交錯視訊
    separatefields,select=eq(mod(n,4),0)+eq(mod(n,4),3),weave
    

32.288 xbr

應用 xBR 高品質放大濾鏡,該濾鏡專為像素藝術設計。它遵循一組邊緣檢測規則,請參閱 https://forums.libretro.com/t/xbr-algorithm-tutorial/123

它接受以下選項

n

設定縮放維度:`2` 代表 `2xBR`,`3` 代表 `3xBR`,`4` 代表 `4xBR`。預設值為 `3`。

32.289 xcorrelate

在第一個和第二個輸入視訊流之間應用標準化互相關。

第二個輸入視訊流的尺寸必須小於第一個輸入視訊流。

通過第一個輸入。

planes

設定要處理的平面。

secondary (次要)

設定將從第二個輸入視訊流處理哪些次要視訊幀,可以是 firstall。預設值為 all

`xcorrelate` 濾鏡也支援 framesync 選項。

32.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) 的像素值。

32.290.1 範例

  • 從一個輸入視訊到另一個輸入視訊進行交叉淡化,使用 fade (淡化) 轉場效果,轉場持續時間為 2 秒,從偏移量 5 秒開始。
    ffmpeg -i first.mp4 -i second.mp4 -filter_complex xfade=transition=fade:duration=2:offset=5 output.mp4
    

32.291 xmedian

從多個輸入視訊中選取中位數像素。

通過第一個輸入。

inputs (輸入)

設定輸入數量。預設值為 3。允許範圍為 3 到 255。如果輸入數量為偶數,則結果將是兩個中位數值之間的平均值。

planes

設定要篩選的平面。預設值為 15,表示處理所有平面。

百分位數

設定中位數百分位數。預設值為 0.5。預設值 0.5 將始終選取中位數,而 0 將選取最小值,1 將選取最大值。

32.291.1 指令

此濾鏡支援以上所有選項作為 commands (命令),但不包括 `inputs` (輸入) 選項。

32.292 xpsnr

取得兩個輸入視訊之間的平均 (跨所有輸入幀) 和最小 (跨所有色彩平面平均值) 擴展感知加權峰值訊噪比 (XPSNR)。

XPSNR 是一種低複雜度的心理視覺動機失真測量演算法,用於評估兩個視訊流或影像之間的差異。這對於客觀量化視訊和影像編解碼器引起的失真尤其有用,可作為正式主觀測試的替代方案。對數 XPSNR 輸出值與傳統 psnr 評估值處於相似範圍,但能更好地反映人類對視覺編碼品質的印象。有關 XPSNR 測量的更多詳細資訊 (基本上代表 PSNR 測量的區塊加權變體),可以在以下免費提供的論文中找到

  • C. R. Helmrich, M. Siekmann, S. Becker, S. Bosse, D. Marpe, and T. Wiegand, "XPSNR: A Low-Complexity Extension of the Perceptually Weighted Peak Signal-to-Noise Ratio for High-Resolution Video Quality Assessment," in Proc. IEEE Int. Conf. Acoustics, Speech, Sig. Process. (ICASSP), virt./online, May 2020. www.ecodis.de/xpsnr.htm
  • C. R. Helmrich, S. Bosse, H. Schwarz, D. Marpe, and 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, vol. 3, no. 1, pp. 65 - 72, May 2020. http://handle.itu.int/11.1002/pub/8153d78b-en

當發布使用 (例如) 此 FFmpeg 濾鏡獲得的 XPSNR 評估結果時,強烈建議參考上述論文作為文檔記錄方式。此濾鏡需要兩個輸入視訊。第一個輸入被視為 (通常未失真的) 參考來源,並未經更改地傳遞到輸出,而第二個輸入是 (失真的) 測試訊號。除了位元深度之外,這兩個視訊輸入必須具有相同的像素格式。此外,為了獲得最佳效能,兩個比較的輸入視訊都應採用 YCbCr 色彩格式。

上述獲得的整體 XPSNR 值將通過日誌系統列印出來。如果輸入具有多個色彩平面,我們建議報告最小 XPSNR 平均值。

接受以下參數,其行為方式與 psnr 濾鏡的參數類似

stats_file, f

如果指定,濾鏡將使用指定名稱的檔案來儲存每個單獨幀和色彩平面的 XPSNR 值。當檔案名稱等於 "-" 時,該資料將傳送到標準輸出。

此濾鏡也支援 framesync 選項。

32.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 -
    

32.293 xstack

將視訊輸入堆疊到自訂版面配置中。

所有流都必須具有相同的像素格式。

通過第一個輸入。

inputs (輸入)

設定輸入串流的數量。預設值為 2。

layout

指定輸入的版面配置。此選項需要使用者明確設定所需的版面配置配置。這會設定每個視訊輸入在輸出中的位置。每個輸入以 ’|’ 分隔。第一個數字代表縱行,第二個數字代表橫列。數字從 0 開始,並以 ’_’ 分隔。您可以選擇性地使用 wX 和 hX,其中 X 是要从中获取寬度或高度的視訊輸入。多個值可以使用 ’+’ 分隔。在這種情況下,值會加總在一起。

請注意,如果輸入大小不同,可能會出現間隙,因為並非所有輸出視訊幀都會被填滿。同樣地,如果視訊的位置沒有為相鄰視訊的完整幀留下足夠的空間,則視訊可能會彼此重疊。

對於 2 個輸入,預設版面配置為 `0_0|w0_0` (相當於 `grid=2x1`)。在所有其他情況下,必須由使用者設定版面配置或網格。一次只能指定 `grid` 或 `layout`。同時指定兩者將導致錯誤。

網格

指定輸入的固定大小網格。此選項用於建立輸入流的固定大小網格。以 `COLUMNSxROWS` 格式設定網格大小。必須有 `ROWS * COLUMNS` 個輸入流,它們將排列為具有 `ROWS` 行和 `COLUMNS` 列的網格。使用此選項時,同一行中的每個輸入流都必須具有相同的高度,並且所有行都必須具有相同的寬度。

如果設定了 `grid`,則 `inputs` 選項將被忽略,並隱式設定為 `ROWS * COLUMNS`。

對於 2 個輸入,預設網格為 `2x1` (相當於 `layout=0_0|w0_0`)。在所有其他情況下,必須由使用者設定版面配置或網格。一次只能指定 `grid` 或 `layout`。同時指定兩者將導致錯誤。

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

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

fill

如果設定為有效顏色,則所有未使用的像素將以該顏色填充。預設情況下,fill (填充) 設定為 none (無),因此已停用。

32.293.1 範例

  • 將 4 個輸入顯示到 2x2 網格中。

    版面配置

    input1(0, 0)  | input3(w0, 0)
    input2(0, h0) | input4(w0, h0)
    
    xstack=inputs=4:layout=0_0|0_h0|w0_0|w0_h0
    

    請注意,如果輸入大小不同,可能會發生間隙或重疊。

  • 以 1x4 格線顯示 4 個輸入。

    版面配置

    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
    

    請注意,如果輸入寬度不同,將會出現未使用的空間。

  • 以 3x3 格線顯示 9 個輸入。

    版面配置

    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
    

    請注意,如果輸入大小不同,可能會發生間隙或重疊。

  • 以 4x4 格線顯示 16 個輸入。

    版面配置

    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
    

    請注意,如果輸入大小不同,可能會發生間隙或重疊。

32.294 yadif

對輸入視訊進行反交錯處理 ("yadif" 意指 "yet another deinterlacing filter",又一個反交錯濾鏡)。

它接受以下參數

o

要採用的交錯模式。它接受以下其中一個值

0, send_frame

每個影格輸出一個影格。

1, send_field

每個場 (field) 輸出一個影格。

2, send_frame_nospatial

類似於 send_frame,但它會跳過空間交錯檢查。

3, send_field_nospatial

類似於 send_field,但它會跳過空間交錯檢查。

預設值為 send_frame

parity

為輸入交錯視訊假設的圖像場奇偶性。它接受以下其中一個值

0, tff

假設頂場優先。

1, bff

假設底場優先。

-1, auto

啟用自動偵測場奇偶性。

預設值為 auto。如果交錯方式未知,或解碼器未匯出此資訊,則將假設為頂場優先。

deint

指定要對哪些影格進行去交錯處理。接受以下其中一個值

0, all

對所有影格進行去交錯處理。

1, interlaced

僅對標記為交錯的影格進行去交錯處理。

預設值為 all

32.295 yadif_cuda

使用 yadif 演算法對輸入視訊進行反交錯處理,但以 CUDA 實作,使其可以作為 GPU 加速管線的一部分,與 nvdec 和/或 nvenc 一起運作。

它接受以下參數

o

要採用的交錯模式。它接受以下其中一個值

0, send_frame

每個影格輸出一個影格。

1, send_field

每個場 (field) 輸出一個影格。

2, send_frame_nospatial

類似於 send_frame,但它會跳過空間交錯檢查。

3, send_field_nospatial

類似於 send_field,但它會跳過空間交錯檢查。

預設值為 send_frame

parity

為輸入交錯視訊假設的圖像場奇偶性。它接受以下其中一個值

0, tff

假設頂場優先。

1, bff

假設底場優先。

-1, auto

啟用自動偵測場奇偶性。

預設值為 auto。如果交錯方式未知,或解碼器未匯出此資訊,則將假設為頂場優先。

deint

指定要對哪些影格進行去交錯處理。接受以下其中一個值

0, all

對所有影格進行去交錯處理。

1, interlaced

僅對標記為交錯的影格進行去交錯處理。

預設值為 all

32.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."

它接受以下參數

半徑,r

設定視窗半徑。預設值為 3。

平面,p

設定要濾波的平面。預設僅為第一個平面。

sigma, s

設定模糊強度。預設值為 128。

32.296.1 指令

此濾鏡支援與選項相同的指令

32.297 zoompan

套用縮放與平移效果。

此濾波器接受以下選項

縮放,z

設定縮放表達式。範圍為 1-10。預設值為 1。

x
y

設定 x 和 y 表達式。預設值為 0。

d

以影格數設定持續時間表達式。這設定單一輸入影像的效果持續多少影格。預設值為 90。

s

設定輸出影像尺寸,預設為 'hd720'。

fps

設定輸出影格率,預設為 '25'。

每個表達式可以包含以下常數

in_w, iw

輸入寬度。

in_h, ih

輸入高度。

out_w, ow

輸出寬度。

out_h, oh

輸出高度。

in

輸入幀計數。

off

輸出幀計數。

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

顯示縱橫比

32.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)'
    

32.298 zscale

使用 z.lib 函式庫縮放 (調整大小) 輸入視訊:https://github.com/sekrit-twc/zimg。若要啟用此濾鏡的編譯,您需要使用 --enable-libzimg 配置 FFmpeg。

zscale 濾鏡會透過變更輸出樣本縱橫比,強制輸出顯示縱橫比與輸入相同。

如果輸入影像格式與下一個濾鏡要求的格式不同,zscale 濾鏡會將輸入轉換為要求的格式。

32.298.1 選項

濾鏡接受以下選項。

width (寬度),w
height, h

設定輸出影片尺寸表達式。預設值為輸入尺寸。

如果 widthw 值為 0,則輸出將使用輸入寬度。如果 heighth 值為 0,則輸出將使用輸入高度。

如果只有一個值為 -n 且 n >= 1,zscale 濾鏡將使用一個值來維持輸入影像的縱橫比,該縱橫比從另一個指定的尺寸計算得出。之後,它將確保計算出的尺寸可被 n 整除,並在必要時調整該值。

如果兩個值都為 -n,其中 n >= 1,則行為將與先前詳細說明的兩個值都設定為 0 相同。

請參閱下方接受用於尺寸表達式的常數清單。

size, s

設定影片尺寸。有關此選項的語法,請查看 (ffmpeg-utils)ffmpeg-utils 手冊中的「影片尺寸」章節

抖動,d

設定抖動類型。

可能的值為

none
有序
隨機
誤差擴散

預設值為 none。

濾鏡, f

設定調整大小濾鏡類型。

可能的值為

bilinear
bicubic
spline16
spline36
lanczos

預設為雙線性。

range, r

設定色彩範圍。

可能的值為

input
有限
full

預設與輸入相同。

色度主色,p

設定色度主色。

可能的值為

input
709
未指定
170m
240m
2020

預設與輸入相同。

轉換,t

設定轉換特性。

可能的值為

input
709
未指定
601
linear
2020_10
2020_12
smpte2084
iec61966-2-1
arib-std-b67

預設與輸入相同。

矩陣,m

設定色彩空間矩陣。

可能的值為

input
709
未指定
470bg
170m
2020_ncl
2020_cl

預設與輸入相同。

rangein,rin

設定輸入色彩範圍。

可能的值為

input
有限
full

預設與輸入相同。

primariesin,pin

設定輸入色度主色。

可能的值為

input
709
未指定
170m
240m
2020

預設與輸入相同。

transferin,tin

設定輸入轉換特性。

可能的值為

input
709
未指定
601
linear
2020_10
2020_12

預設與輸入相同。

matrixin,min

設定輸入色彩空間矩陣。

可能的值為

input
709
未指定
470bg
170m
2020_ncl
2020_cl
色度位置,c

設定輸出色度位置。

可能的值為

input
left
中心
左上
top
左下
bottom
chromalin,cin

設定輸入色度位置。

可能的值為

input
left
中心
左上
top
左下
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。

32.298.2 指令

此濾波器支援以下命令

width (寬度),w
height, h

設定輸出影片尺寸表達式。此命令接受對應選項的相同語法。

修改音量表達式。指令接受與對應選項相同的語法。

33 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 濾鏡,以使輸出格式為支援的格式。

33.1 avgblur_opencl

套用平均模糊濾鏡。

通過第一個輸入。

sizeX

設定水平半徑大小。範圍為 [1, 1024],預設值為 1

planes

設定要濾波的平面。預設值為 0xf,表示處理所有平面。

sizeY

設定垂直半徑大小。範圍為 [1, 1024],預設值為 0。如果為零,將使用 sizeX 值。

33.1.1 範例

  • 套用平均模糊濾鏡,水平和垂直大小均為 3,將輸出的每個像素設定為輸入中以其為中心的 7x7 區域的平均值。對於影像邊緣上的像素,該區域不會超出影像邊界,因此不會在計算中使用超出範圍的座標。
    -i INPUT -vf "hwupload, avgblur_opencl=3, hwdownload" OUTPUT
    

33.2 boxblur_opencl

將盒狀模糊 (boxblur) 演算法應用於輸入視訊。

它接受以下參數

亮度半徑,lr
亮度強度,lp
彩度半徑,cr
彩度強度,cp
Alpha 半徑,ar
Alpha 強度,ap

以下是接受選項的描述。

亮度半徑,lr
彩度半徑,cr
Alpha 半徑,ar

設定用於模糊對應輸入平面的盒狀半徑的表達式 (以像素為單位)。

半徑值必須是非負數,且對於亮度 (luma) 和 alpha 平面,不得大於表達式 min(w,h)/2 的值;對於彩度 (chroma) 平面,不得大於 min(cw,ch)/2 的值。

luma_radius 的預設值為 "2"。如果未指定,chroma_radiusalpha_radius 預設為為 luma_radius 設定的對應值。

表達式可以包含以下常數

f
h

輸入寬度和高度 (以像素為單位)。

cw
ch

輸入彩度影像寬度和高度 (以像素為單位)。

hsub
vsub

水平和垂直彩度子採樣值。例如,對於像素格式 "yuv422p",hsub 為 2,vsub 為 1。

亮度強度,lp
彩度強度,cp
Alpha 強度,ap

指定將盒狀模糊濾波器應用於對應平面的次數。

luma_power 的預設值為 2。如果未指定,chroma_poweralpha_power 預設為為 luma_power 設定的對應值。

值為 0 將停用效果。

33.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
    

33.3 colorkey_opencl

RGB 色彩空間色彩去背。

通過第一個輸入。

顏色

將被透明度取代的顏色。

similarity

與關鍵顏色的相似度百分比。

0.01 僅匹配完全相同的關鍵顏色,而 1.0 匹配所有顏色。

blend

混合百分比。

0.0 使像素完全透明,或完全不透明。

較高的值會產生半透明像素,像素顏色與關鍵顏色越相似,透明度越高。

33.3.1 範例

  • 使輸入中每個半綠色像素透明,並帶有一些輕微的混合
    -i INPUT -vf "hwupload, colorkey_opencl=green:0.3:0.1, hwdownload" OUTPUT
    

33.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
2bias
3bias

為每個平面設定偏移量。此值會加到乘法結果中。適用於使整體影像更亮或更暗。選項值必須是等於或大於 0.0 的浮點數。預設值為 0.0

33.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
    

33.5 erosion_opencl

對視訊套用侵蝕效果。

此濾鏡將像素替換為局部 (3x3) 最小值。

它接受以下選項

threshold0
threshold1
threshold2
threshold3

限制每個平面的最大變更。範圍為 [0, 65535],預設值為 65535。如果為 0,平面將保持不變。

coordinates

標記指定要參考的像素。範圍為 [0, 255],預設值為 255,即使用所有八個像素。

標記到以 x 為中心的局部 3x3 座標區域

1 2 3

4 x 5

6 7 8

33.5.1 範例

  • 套用腐蝕濾鏡,threshold0 設定為 30,threshold1 設定為 40,threshold2 設定為 50,座標設定為 231,將輸出的每個像素設定為輸入中以其為中心的 3x3 區域的像素:1、2、3、6、7、8 之間的局部最小值。如果輸入像素與局部最小值之間的差異大於對應平面的閾值,則輸出像素將設定為輸入像素 - 對應平面的閾值。
    -i INPUT -vf "hwupload, erosion_opencl=30:40:50:coordinates=231, hwdownload" OUTPUT
    

33.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

33.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
    

33.7 dilation_opencl

對影片套用擴張效果。

此濾鏡會將像素替換為局部 (3x3) 最大值。

它接受以下選項

threshold0
threshold1
threshold2
threshold3

限制每個平面的最大變更。範圍為 [0, 65535],預設值為 65535。如果為 0,平面將保持不變。

coordinates

標記指定要參考的像素。範圍為 [0, 255],預設值為 255,即使用所有八個像素。

標記到以 x 為中心的局部 3x3 座標區域

1 2 3

4 x 5

6 7 8

33.7.1 範例

  • 套用膨脹濾鏡,threshold0 設定為 30,threshold1 設定為 40,threshold2 設定為 50,座標設定為 231,將輸出的每個像素設定為輸入中以其為中心的 3x3 區域的像素:1、2、3、6、7、8 之間的局部最大值。如果輸入像素與局部最大值之間的差異大於對應平面的閾值,則輸出像素將設定為輸入像素 + 對應平面的閾值。
    -i INPUT -vf "hwupload, dilation_opencl=30:40:50:coordinates=231, hwdownload" OUTPUT
    

33.8 nlmeans_opencl

透過 OpenCL 的非局部均值去噪濾鏡,此濾鏡接受與 nlmeans 相同的選項。

33.9 overlay_opencl

將一個視訊疊加在另一個視訊之上。

它接受兩個輸入並有一個輸出。第一個輸入是「主」視訊,第二個輸入覆蓋在其上。此濾鏡要求所有輸入都具有相同的記憶體佈局。因此,可能需要格式轉換。

通過第一個輸入。

x

設定覆蓋視訊在主視訊上的 x 座標。預設值為 0

y

設定覆蓋視訊在主視訊上的 y 座標。預設值為 0

33.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
    

33.10 pad_opencl

將填充新增至輸入影像,並將原始輸入放置在提供的 xy 座標處。

它接受以下選項

width (寬度),w
height, h

指定新增填充後的輸出影像大小的表達式。如果 widthheight 的值為 0,則輸出將使用對應的輸入大小。

width 表達式可以參考 height 表達式設定的值,反之亦然。

widthheight 的預設值為 0。

x
y

指定偏移量,以將輸入影像放置在填充區域內,相對於輸出影像的頂部/左側邊界。

x 表達式可以參考 y 表達式設定的值,反之亦然。

xy 的預設值為 0。

如果 xy 評估為負數,則它們將被更改,以便輸入影像在填充區域中居中。

顏色

指定填充區域的顏色。有關此選項的語法,請查看 (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 相同

33.11 prewitt_opencl

將 Prewitt 算子 (https://en.wikipedia.org/wiki/Prewitt_operator) 套用至輸入視訊串流。

此濾波器接受以下選項

planes

設定要濾波的平面。預設值為 0xf,表示處理所有平面。

scale

設定將與濾波結果相乘的值。範圍為 [0.0, 65535],預設值為 1.0

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

設定將新增至濾波結果的值。範圍為 [-65535, 65535],預設值為 0.0

33.11.1 範例

  • 套用 Prewitt 算子,比例設定為 2,delta 設定為 10。
    -i INPUT -vf "hwupload, prewitt_opencl=scale=2:delta=10, hwdownload" OUTPUT
    

33.12 program_opencl

使用 OpenCL 程式篩選視訊。

來源

OpenCL 程式原始碼檔案。

kernel

程式中的核心名稱。

inputs (輸入)

濾鏡的輸入數量。預設為 1。

size, s

輸出影格的大小。預設與第一個輸入相同。

program_opencl 濾鏡也支援 framesync 選項。

程式原始碼檔案必須包含具有給定名稱的核心函式,該函式將為輸出的每個平面執行一次。在平面上執行的每次執行都會排隊為單獨的 2D 全域 NDRange,每個像素一個工作項目。因此,每個工作項目的全域 ID 偏移量是目標影像中像素的座標。

核心函式需要採用以下引數

  • 目標影像,__write_only image2d_t

    此影像將成為輸出;核心應寫入所有內容。

  • 影格索引,unsigned int

    這是一個計數器,從零開始,每個影格遞增一。

  • 來源影像,__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));
    }
    

33.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) 手冊中的「Color」章節。預設顏色為 black

33.14 roberts_opencl

對輸入視訊串流應用 Roberts cross 運算子 (https://en.wikipedia.org/wiki/Roberts_cross)。

此濾波器接受以下選項

planes

設定要濾波的平面。預設值為 0xf,表示處理所有平面。

scale

設定將與濾波結果相乘的值。範圍為 [0.0, 65535],預設值為 1.0

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

設定將新增至濾波結果的值。範圍為 [-65535, 65535],預設值為 0.0

33.14.1 範例

  • 應用 Roberts cross 運算子,並將縮放比例設為 2,delta 設為 10。
    -i INPUT -vf "hwupload, roberts_opencl=scale=2:delta=10, hwdownload" OUTPUT
    

33.15 sobel_opencl

對輸入視訊串流應用 Sobel 運算子 (https://en.wikipedia.org/wiki/Sobel_operator)。

此濾波器接受以下選項

planes

設定要濾波的平面。預設值為 0xf,表示處理所有平面。

scale

設定將與濾波結果相乘的值。範圍為 [0.0, 65535],預設值為 1.0

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

設定將新增至濾波結果的值。範圍為 [-65535, 65535],預設值為 0.0

33.15.1 範例

  • 應用 Sobel 運算子,並將縮放比例設為 2,delta 設為 10。
    -i INPUT -vf "hwupload, sobel_opencl=scale=2:delta=10, hwdownload" OUTPUT
    

33.16 tonemap_opencl

執行 HDR(PQ/HLG) 至 SDR 轉換,並進行色調映射。

它接受以下參數

tonemap

指定要使用的色調映射運算子。與 tonemap 中的 tonemap 選項相同。

param

調整色調映射演算法。與 tonemap 中的 param 選項相同。

desat

對亮度超過此等級的高光應用去飽和處理。參數越高,保留的色彩資訊越多。此設定有助於防止超高光出現不自然的色彩溢出,方法是(平滑地)轉變為白色。這使影像感覺更自然,但會犧牲超出範圍色彩的資訊。

預設值為 0.5,且此處的演算法與目前的 CPU 版本色調映射略有不同。設定為 0.0 會停用此選項。

u

色調映射演算法參數會針對每個場景進行微調。並使用閾值來偵測場景是否已變更。如果目前影格的平均亮度與目前的執行平均值之間的距離超過閾值,我們將重新計算場景平均值和峰值亮度。預設值為 0.2。

format

指定輸出像素格式。

目前支援的格式為

p010
nv12
range, r

設定輸出色彩範圍。

可能的值為

tv/mpeg
pc/jpeg

預設與輸入相同。

色度主色,p

設定輸出色彩原色。

可能的值為

bt709
bt2020

預設與輸入相同。

轉換,t

設定輸出轉換特性。

可能的值為

bt709
bt2020

預設值為 bt709。

矩陣,m

設定輸出色彩空間矩陣。

可能的值為

bt709
bt2020

預設與輸入相同。

33.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
    

33.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'。

33.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
    

33.18 xfade_opencl

使用 OpenCL 透過自訂轉場效果淡入淡出兩個視訊。

它接受以下選項

transition (轉場)

設定其中一種可能的轉場效果。

custom

選擇自訂轉場效果,實際的轉場描述將從 source 和 kernel 選項中選取。

fade
wipeleft
wiperight
wipeup
wipedown
slideleft
slideright
slideup
slidedown

預設轉場效果為 fade。

來源

用於自訂轉場的 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);
    }
    

34 VAAPI 視訊濾鏡

VAAPI 視訊濾鏡通常與 VAAPI 解碼器和 VAAPI 編碼器一起使用。以下是 VAAPI 視訊濾鏡的描述。

若要啟用這些濾鏡的編譯,您需要使用 --enable-vaapi 配置 FFmpeg。

若要使用 vaapi 濾鏡,您需要正確設定 vaapi 裝置。如需更多資訊,請閱讀 https://trac.ffmpeg.org/wiki/Hardware/VAAPI

34.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

疊加層在主要視訊內的位置

alpha

設定疊加視訊的透明度。允許範圍為 0.0 到 1.0。值越高表示透明度越低。預設值為 1.0

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

請參閱 framesync

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

請參閱 framesync

[in]trim=start=10,smartblur=enable='between(t,10,180)',curves=enable='gte(t,3)'[out]

請參閱 framesync

此濾鏡也支援 framesync 選項。

34.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
    
  • 從輸入視訊的左上角偏移 (200, 100) 的位置疊加一個 LOGO 影像。輸入的色彩通道具有相同的記憶體佈局,疊加層具有額外的 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
    

34.2 tonemap_vaapi

執行 HDR 至 SDR 或 HDR 至 HDR 色調映射。目前僅接受 HDR10 作為輸入。

它接受以下參數

format

指定輸出像素格式。

HDR 至 SDR 色調映射的預設格式為 nv12,HDR 至 HDR 色調映射的預設格式為 p010。

色度主色,p

設定輸出色彩原色。

HDR 至 SDR 色調映射的預設色彩空間為 bt709,HDR 至 HDR 色調映射的預設色彩空間與輸入相同。

轉換,t

設定輸出轉換特性。

HDR 至 SDR 色調映射的預設色彩空間為 bt709,HDR 至 HDR 色調映射的預設色彩空間與輸入相同。

矩陣,m

設定輸出色彩空間矩陣。

HDR 至 SDR 色調映射的預設色彩空間為 bt709,HDR 至 HDR 色調映射的預設色彩空間與輸入相同。

display

設定輸出母帶顯示器色彩容積。它由一個以 '|' 分隔的列表組成,包含兩個值,兩個值之間以空格分隔。它依序設定 G、B、R 順序的顯示原色 x 和 y,然後是白點 x 和 y,以及標稱最小和最大顯示亮度。

當設定此選項時,將執行 HDR 至 HDR 色調映射。

light

設定輸出內容光照層級資訊。它接受 2 個以空格分隔的值,第一個輸入是最大光照層級,第二個輸入是最大平均光照層級。

對於 HDR 至 SDR 色調映射會忽略此選項,對於 HDR 至 HDR 色調映射則為可選選項。

34.2.1 範例

  • 將 HDR(HDR10) 視訊轉換為 bt2020-transfer-characteristic p010 格式。
    tonemap_vaapi=format=p010:t=bt2020-10
    
  • 將 HDR 視訊轉換為 HDR 視訊。
    tonemap_vaapi=display=7500\ 3000|34000\ 16000|13250\ 34500|15635\ 16450|500\ 10000000
    

34.3 hstack_vaapi

水平堆疊輸入視訊。

這是 hstack 濾鏡的 VA-API 變體,每個輸入串流可能具有不同的高度,此濾鏡將在保持原始縱橫比的同時縮放每個輸入串流。

它接受以下選項

inputs (輸入)

請參閱 hstack

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

請參閱 hstack

height

設定輸出高度。如果設定為 0,此濾鏡會將輸出高度設定為第一個輸入串流的高度。預設值為 0。

34.4 vstack_vaapi

垂直堆疊輸入視訊。

這是 vstack 濾鏡的 VA-API 變體,每個輸入串流可能具有不同的寬度,此濾鏡將在保持原始縱橫比的同時縮放每個輸入串流。

它接受以下選項

inputs (輸入)

請參閱 vstack

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

請參閱 vstack

width

設定輸出寬度。如果設定為 0,此濾鏡會將輸出寬度設定為第一個輸入串流的寬度。預設值為 0。

34.5 xstack_vaapi

將視訊輸入堆疊到自訂版面配置中。

這是 xstack 濾鏡的 VA-API 變體,每個輸入串流可能具有不同的大小,此濾鏡會將每個輸入串流縮放為給定的輸出大小,或第一個輸入串流的大小。

它接受以下選項

inputs (輸入)

請參閱 xstack

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

請參閱 xstack

layout

請參閱 xstack。此外,這允許使用者為每個輸入串流提供輸出大小。

xstack_vaapi=inputs=4:layout=0_0_1920x1080|0_h0_1920x1080|w0_0_1920x1080|w0_h0_1920x1080
網格

請參閱 xstack

grid_tile_size

當設定 grid 時,設定每個輸入串流的輸出大小。如果未設定此選項,此濾鏡預設會將輸出大小設定為第一個輸入串流的大小。關於此選項的語法,請查看 (ffmpeg-utils) 手冊中的 "視訊尺寸" 章節

fill

請參閱 xstack

34.6 pad_vaapi

將填充新增至輸入影像,並將原始輸入放置在提供的 xy 座標處。

它接受以下選項

width (寬度),w
height, h

指定新增填充後的輸出影像大小的表達式。如果 widthheight 的值為 0,則輸出將使用對應的輸入大小。

width 表達式可以參考 height 表達式設定的值,反之亦然。

widthheight 的預設值為 0。

x
y

指定偏移量,以將輸入影像放置在填充區域內,相對於輸出影像的頂部/左側邊界。

x 表達式可以參考 y 表達式設定的值,反之亦然。

xy 的預設值為 0。

如果 xy 評估為負數,則它們將被更改,以便輸入影像在填充區域中居中。

顏色

指定填充區域的顏色。有關此選項的語法,請查看 (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 相同

34.7 drawbox_vaapi

在輸入影像上繪製彩色方框。

它接受以下參數

x
y

指定方框左上角座標的表達式。預設值為 0。

width (寬度),w
height, h

指定方框寬度和高度的表達式;如果為 0,則將其解釋為輸入寬度和高度。預設值為 0。

color, c

指定要繪製的方框顏色。關於此選項的通用語法,請查看 (ffmpeg-utils) 手冊中的 "顏色" 章節

thickness, t

設定方框邊緣粗細的表達式。值為 fill 將建立一個填滿的方框。預設值為 3

請參閱下方接受的常數清單。

replace

當值為 1 時,繪製方框的像素將覆寫視訊的顏色和 Alpha 像素。預設值為 0,這會將方框合成到輸入視訊上。

用於 xywh 以及 t 的參數是包含以下常數的表達式

in_h, ih
in_w, iw

輸入寬度和高度。

x
y

繪製方框的 x 和 y 偏移座標。

f
h

繪製方框的寬度和高度。

t

繪製方框的粗細。

34.7.1 範例

  • 在輸入影像邊緣周圍繪製黑色方框
    drawbox
    
  • 繪製一個顏色為紅色且不透明度為 50% 的方框
    drawbox=10:20:200:60:red@0.5
    

    先前的範例可以指定為

    drawbox=x=10:y=20:w=200:h=60:color=red@0.5
    
  • 用粉紅色填滿方框
    drawbox=x=10:y=10:w=100:h=100:color=pink@0.5:t=fill
    
  • 繪製一個 2 像素紅色 2.40:1 遮罩
    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
    

35 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 濾鏡,以使輸出進入支援的格式。

35.1 avgblur_vulkan

應用平均模糊濾鏡,在 GPU 上使用 Vulkan 實作。

通過第一個輸入。

sizeX

設定水平半徑大小。範圍為 [1, 32],預設值為 3

sizeY

設定垂直半徑大小。範圍為 [1, 32],預設值為 3

planes

設定要濾波的平面。預設值為 0xf,表示處理所有平面。

35.2 blend_vulkan

將兩個 Vulkan 影格混合在一起。

blend 濾鏡接受兩個輸入流並輸出一個流,第一個輸入是「頂層」,第二個輸入是「底層」。預設情況下,當最長的輸入終止時,輸出終止。

以下是接受選項的描述。

c0_mode
c1_mode
c2_mode
c3_mode
all_mode

設定特定像素組件或所有像素組件(在 all_mode 的情況下)的混合模式。預設值為 normal

組件模式的可用值為

normal
multiply

35.3 bwdif_vulkan

使用 bwdif 的去交錯器,"Bob Weaver Deinterlacing Filter" 演算法,在 GPU 上使用 Vulkan 實作。

它接受以下參數

o

要採用的交錯模式。它接受以下其中一個值

0, send_frame

每個影格輸出一個影格。

1, send_field

每個場 (field) 輸出一個影格。

預設值為 send_field

parity

為輸入交錯視訊假設的圖像場奇偶性。它接受以下其中一個值

0, tff

假設頂場優先。

1, bff

假設底場優先。

-1, auto

啟用自動偵測場奇偶性。

預設值為 auto。如果交錯方式未知,或解碼器未匯出此資訊,則將假設為頂場優先。

deint

指定要對哪些影格進行去交錯處理。接受以下其中一個值

0, all

對所有影格進行去交錯處理。

1, interlaced

僅對標記為交錯的影格進行去交錯處理。

預設值為 all

35.4 chromaber_vulkan

應用模擬色差的效果。最適用於 RGB 輸入,但也為 YCbCr 輸入提供類似的效果。

dist_x

水平位移乘數。每個色度像素的位置將從影像中心開始乘以這個量。預設值為 0

dist_y

類似地,這設定垂直位移乘數。預設值為 0

35.5 color_vulkan

視訊來源,可建立純色的 Vulkan 影格。適用於基準測試或疊加。

它接受以下參數

顏色

要使用的顏色。可以是名稱或十六進位值。預設值為 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)。

35.6 vflip_vulkan

垂直翻轉影像。

35.7 hflip_vulkan

水平翻轉影像。

35.8 flip_vulkan

沿垂直和水平軸翻轉影像。

35.9 gblur_vulkan

在 Vulkan 影格上應用高斯模糊濾鏡。

通過第一個輸入。

sigma

設定水平 sigma,高斯模糊的標準差。預設值為 0.5

sigmaV

設定垂直 sigma,如果為負數,則與 sigma 相同。預設值為 -1

planes

設定要過濾的平面。預設情況下,所有平面都會被過濾。

size

設定沿水平軸的核心大小。預設值為 19

sizeV

設定沿垂直軸的核心大小。預設值為 0,這會設定為與 size 相同的值。

35.10 nlmeans_vulkan

使用非局部均值演算法對影格進行去噪,在 GPU 上使用 Vulkan 實作。支援比 nlmeansnlmeans_opencl 更多的像素格式,包括 Alpha 通道支援。

濾鏡接受以下選項。

s

設定所有組件的去噪強度。預設值為 1.0。必須在 [1.0, 100.0] 範圍內。

p

設定所有平面的修補程式大小。預設值為 7。必須是 [0, 99] 範圍內的奇數。

r

設定搜尋大小。預設值為 15。必須是 [0, 99] 範圍內的奇數。

t

設定平行處理。預設值為 36。必須是 [1, 168] 範圍內的數字。較大的值可能會加速處理,但會消耗更多 VRAM。較小的值會減慢速度,降低 VRAM 使用量。僅在具有原子浮點運算的 GPU (RDNA3+、Ampere+) 上支援。

s0
s1
s2
s3

設定特定組件的去噪強度。預設值為 1,等於 s。必須是 [1, 100] 範圍內的奇數。

p0
p1
p2
p3

設定特定組件的修補程式大小。預設值為 7,等於 p。必須是 [0, 99] 範圍內的奇數。

35.11 overlay_vulkan

將一個視訊疊加在另一個視訊之上。

它需要兩個輸入並有一個輸出。第一個輸入是「主要」視訊,第二個輸入疊加在其上。此濾鏡要求所有輸入使用相同的像素格式。因此,可能需要格式轉換。

通過第一個輸入。

x

設定覆蓋視訊在主視訊上的 x 座標。預設值為 0

y

設定覆蓋視訊在主視訊上的 y 座標。預設值為 0

35.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 時)。

35.13 transpose_vulkan

轉置輸入影片中的行列,並可選擇翻轉。如需更深入的範例,請參閱 transpose 影片濾鏡,它與此濾鏡共用大部分相同的選項。

它接受以下參數

dir

指定轉置方向。

可以採用以下值

cclock_flip

逆時針旋轉 90 度並垂直翻轉。(預設)

clock

順時針旋轉 90 度。

cclock

逆時針旋轉 90 度。

clock_flip

順時針旋轉 90 度並垂直翻轉。

passthrough

如果輸入幾何形狀與指定值指定的幾何形狀相符,則不套用轉置。它接受以下值

none

始終套用轉置。(預設)

portrait

保留直向幾何形狀(當 height >= width 時)。

landscape

保留橫向幾何形狀(當 width >= height 時)。

36 QSV 視訊濾鏡

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

若要啟用這些濾鏡的編譯,您需要使用 --enable-libmfx--enable-libvpl 配置 FFmpeg。

若要使用 QSV 濾鏡,您需要正確設定 QSV 裝置。如需更多資訊,請閱讀 https://trac.ffmpeg.org/wiki/Hardware/QuickSync

36.1 hstack_qsv

水平堆疊輸入視訊。

這是 hstack 濾鏡的 QSV 變體,每個輸入串流可能具有不同的高度,此濾鏡將在保持原始縱橫比的同時縮放每個輸入串流。

它接受以下選項

inputs (輸入)

請參閱 hstack

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

請參閱 hstack

height

設定輸出高度。如果設定為 0,此濾鏡會將輸出高度設定為第一個輸入串流的高度。預設值為 0。

36.2 vstack_qsv

垂直堆疊輸入視訊。

這是 vstack 濾鏡的 QSV 變體,每個輸入串流可能具有不同的寬度,此濾鏡將在保持原始縱橫比的同時縮放每個輸入串流。

它接受以下選項

inputs (輸入)

請參閱 vstack

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

請參閱 vstack

width

設定輸出寬度。如果設定為 0,此濾鏡會將輸出寬度設定為第一個輸入串流的寬度。預設值為 0。

36.3 xstack_qsv

將視訊輸入堆疊到自訂版面配置中。

這是 xstack 濾鏡的 QSV 變體。

它接受以下選項

inputs (輸入)

請參閱 xstack

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

請參閱 xstack

layout

請參閱 xstack。此外,這允許使用者為每個輸入串流提供輸出大小。

xstack_qsv=inputs=4:layout=0_0_1920x1080|0_h0_1920x1080|w0_0_1920x1080|w0_h0_1920x1080
網格

請參閱 xstack

grid_tile_size

當設定 grid 時,設定每個輸入串流的輸出大小。如果未設定此選項,此濾鏡預設會將輸出大小設定為第一個輸入串流的大小。關於此選項的語法,請查看 (ffmpeg-utils) 手冊中的 "視訊尺寸" 章節

fill

請參閱 xstack

37 視訊來源

以下是目前可用的視訊來源的描述。

37.1 buffer

緩衝視訊影格,並使其可用於濾鏡鏈。

緩衝音訊影格,並使其可用於濾波器鏈。

它接受以下參數

video_size

指定緩衝視訊影格的大小 (寬度和高度)。關於此選項的語法,請查看 (ffmpeg-utils) 手冊中的 "視訊尺寸" 章節

width

輸入視訊寬度。

height

輸入視訊高度。

pix_fmt

代表緩衝視訊影格像素格式的字串。它可以是與像素格式對應的數字,或是像素格式名稱。

time_base

指定緩衝影格的時間戳記所假設的時間基底。

frame_rate

指定視訊串流預期的影格率。

colorspace

代表緩衝視訊影格色彩空間的字串。它可以是與色彩空間對應的數字,或是色彩空間名稱。

range

代表緩衝視訊影格色彩範圍的字串。它可以是與色彩範圍對應的數字,或是色彩範圍名稱。

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

37.2 cellauto

建立由基本細胞自動機產生的圖案。

細胞自動機的初始狀態可以透過 <samp>filename</samp> 和 <samp>pattern</samp> 選項來定義。如果未指定這些選項,則會隨機建立初始狀態。

在每個新影格中,影片中的新列都會填入細胞自動機下一代的結果。當整個影格填滿時的行為由 <samp>scroll</samp> 選項定義。

將指示來源接受 44100Hz 的平面 16 位元有號立體聲。由於名稱為 "s16p" 的樣本格式對應於數字 6,而 "stereo" 聲道配置對應於值 0x3,因此這等效於

filename, f

從指定檔案讀取細胞自動機的初始狀態,即起始列。在檔案中,每個非空白字元都被視為存活的細胞,換行符號將終止該列,並且檔案中後續的字元將被忽略。

pattern, p

從指定的字串讀取細胞自動機的初始狀態,即起始列。

字串中的每個非空白字元都被視為存活的細胞,換行符號將終止該列,並且字串中後續的字元將被忽略。

rate, r

設定影片速率,即每秒產生的影格數。預設值為 25。

random_fill_ratio, ratio

設定初始細胞自動機列的隨機填充率。它是一個介於 0 到 1 之間的浮點數值,預設值為 1/PHI。

當指定檔案或圖案時,此選項將被忽略。

random_seed, seed

設定隨機填充初始列的種子,必須是介於 0 和 UINT32_MAX 之間的整數。如果未指定,或明確設定為 -1,則濾鏡將盡力使用良好的隨機種子。

rule

設定細胞自動機規則,它是一個介於 0 到 255 之間的數字。預設值為 110。

size, s

設定輸出影片的大小。關於此選項的語法,請查看 <a href="ffmpeg-utils.html#video-size-syntax">(ffmpeg-utils) 手冊</a> 中「Video size」章節。

如果指定了 <samp>filename</samp> 或 <samp>pattern</samp>,則預設大小會設定為指定初始狀態列的寬度,而高度會設定為 <var>width</var> * PHI。

如果設定了 <samp>size</samp>,則它必須包含指定圖案字串的寬度,並且指定的圖案將在較大的列中置中。

如果未指定檔案名稱或圖案字串,則大小值預設為 "320x518"(用於隨機產生的初始狀態)。

scroll

如果設定為 1,當輸出中的所有列都已填滿時,向上捲動輸出。如果設定為 0,則在底部列填滿後,新產生的列將覆寫頂部列。預設值為 1。

start_full, full

如果設定為 1,在輸出第一個影格之前,先用產生的列完全填滿輸出。這是預設行為,若要停用,請將值設定為 0。

stitch

如果設定為 1,將左右列邊緣縫合在一起。這是預設行為,若要停用,請將值設定為 0。

37.2.1 範例

  • 從 <samp>pattern</samp> 讀取初始狀態,並指定大小為 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
    

37.3 coreimagesrc

影片來源在 GPU 上使用 Apple 的 CoreImage API 於 OSX 上產生。

此影片來源是 <a href="#coreimage">coreimage</a> 影片濾鏡的特殊版本。在套用的濾鏡鏈開始時使用核心影像產生器來產生內容。

coreimagesrc 影片來源接受以下選項。

list_generators

列出所有可用的產生器及其各自的選項,以及可能的最小值和最大值以及預設值。

list_generators=true
size, s

指定來源影片的大小。關於此選項的語法,請查看 <a href="ffmpeg-utils.html#video-size-syntax">(ffmpeg-utils) 手冊</a> 中「Video size」章節。預設值為 <code>320x240</code>。

rate, r

指定來源影片的影格率,即每秒產生的影格數。它必須是字串格式 <var>frame_rate_num</var>/<var>frame_rate_den</var>、整數、浮點數或有效的影片影格率縮寫。預設值為 "25"。

sar

設定來源影片的樣本縱橫比。

release

設定來源影片的持續時間。關於接受的語法,請參閱 <a href="ffmpeg-utils.html#time-duration-syntax">(ffmpeg-utils) 手冊 ffmpeg-utils(1)</a> 中的「Time duration」章節。

如果未指定,或表示的持續時間為負數,則影片應永久產生。

此外,<a href="#coreimage">coreimage</a> 影片濾鏡的所有選項都接受。完整的濾鏡鏈可用於進一步處理產生的輸入,而無需 CPU-HOST 傳輸。詳細資訊請參閱 <a href="#coreimage">coreimage</a> 文件和範例。

37.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
    

    此範例等同於 <a href="#coreimage">coreimage</a> 的 QRCode 範例,無需 nullsrc 影片來源。

37.4 ddagrab

透過 Desktop Duplication API 擷取 Windows 桌面。

此濾鏡專門返回 D3D11 硬體影格,用於 GPU 上的編碼或處理。因此,任何軟體處理都需要明確的 <a href="#hwdownload">hwdownload</a>。

它接受以下選項

output_idx

要擷取的 DXGI 輸出索引。

通常對應於 Windows 給予螢幕的索引減一,因此從 0 開始。

預設為輸出 0。

draw_mouse (繪製滑鼠)

是否繪製滑鼠游標。

預設為 true。

僅影響硬體游標。如果遊戲或應用程式渲染自己的游標,則始終會被擷取。

framerate

擷取桌面的最大影格率 - 連續影格之間的時間間隔不會小於影格率的倒數。當 <var>dup_frames</var> 為 true(預設值)且桌面更新頻率不夠時,濾鏡將複製前一個影格。請注意,沒有背景緩衝正在進行,因此當濾鏡輪詢頻率不夠時,實際的影格間隔可能會顯著更大。

預設為 30 FPS。

video_size

指定擷取的影片大小。

預設為螢幕的完整大小。

如果小於螢幕尺寸,則從底部/右側裁剪。

offset_x (X 軸偏移)

擷取影片的水平偏移量。

offset_y (Y 軸偏移)

擷取影片的垂直偏移量。

output_fmt

想要的濾鏡輸出格式。預設為 8 Bit BGRA。

它接受以下值:

auto

將所有支援的輸出格式傳遞給 DDA,並返回 DDA 決定使用的格式。

‘<samp>8bit</samp>’
bgra

8 位元格式始終有效,DDA 會在必要時將其轉換。

‘<samp>10bit</samp>’
‘<samp>x2bgr10</samp>’

如果請求 10 位元格式但不可用,則濾鏡初始化將失敗。

dup_frames

當此選項設定為 true(預設值)時,當桌面未更新時,濾鏡將複製影格,以維持大致恆定的目標影格率。當此選項設定為 false 時,濾鏡將等待桌面更新(在這種情況下,影格間隔可能會顯著變化)。

37.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

37.5 gradients

產生多個漸層。

size, s

設定影格大小。關於此選項的語法,請查看 <a href="ffmpeg-utils.html#video-size-syntax">(ffmpeg-utils) 手冊</a> 中「Video size」章節。預設值為 "640x480"。

rate, r

設定影格率,以每秒影格數表示。預設值為 "25"。

c0, c1, c2, c3, c4, c5, c6, c7

設定 8 種顏色。顏色的預設值是隨機挑選一種。

x0, y0, y0, y1

設定漸層線的來源和目的地點。如果為負數或超出範圍,則會隨機挑選點。

nb_colors, n

設定一次要使用的顏色數量。允許範圍為 2 到 8。預設值為 2。

seed

設定挑選漸層線點的種子。

release

設定來源影片的持續時間。關於接受的語法,請參閱 <a href="ffmpeg-utils.html#time-duration-syntax">(ffmpeg-utils) 手冊 ffmpeg-utils(1)</a> 中的「Time duration」章節。

如果未指定,或表示的持續時間為負數,則影片應永久產生。

speed

設定漸層旋轉的速度。

type, t

設定漸層的類型。可用值為

linear
radial
‘<samp>circular</samp>’
‘<samp>spiral</samp>’
‘<samp>square</samp>’

預設類型為 <var>linear</var>。

37.5.1 指令

此來源支援將上述某些選項作為 <a href="#commands">commands</a>。

37.6 mandelbrot

產生 Mandelbrot 集碎形,並逐步縮放至以 <var>start_x</var> 和 <var>start_y</var> 指定的點。

將指示來源接受 44100Hz 的平面 16 位元有號立體聲。由於名稱為 "s16p" 的樣本格式對應於數字 6,而 "stereo" 聲道配置對應於值 0x3,因此這等效於

結束點 (end_pts)

設定終端 pts 值。預設值為 400。

end_scale

設定終端縮放值。必須是浮點數值。預設值為 0.3。

inner

設定內部著色模式,即用於繪製 Mandelbrot 碎形內部區域的演算法。

它應採用以下值之一

black

設定黑色模式。

convergence

顯示直到收斂的時間。

mincol

根據最接近迭代原點的點設定顏色。

period

設定週期模式。

預設值為 <var>mincol</var>。

bailout

設定 bailout 值。預設值為 10.0。

maxiter

設定渲染演算法執行的最大迭代次數。預設值為 7189。

outer

設定外部著色模式。它應採用以下值之一

iteration_count

設定迭代計數模式。

normalized_iteration_count

設定正規化迭代計數模式。

預設值為 <var>normalized_iteration_count</var>。

rate, r

設定影格率,以每秒影格數表示。預設值為 "25"。

size, s

設定影格大小。關於此選項的語法,請查看 <a href="ffmpeg-utils.html#video-size-syntax">(ffmpeg-utils) 手冊</a> 中「Video size」章節。預設值為 "640x480"。

start_scale

設定初始縮放值。預設值為 3.0。

start_x

設定初始 x 位置。必須是介於 -100 和 100 之間的浮點數值。預設值為 -0.743643887037158704752191506114774。

start_y

設定初始 y 位置。必須是介於 -100 和 100 之間的浮點數值。預設值為 -0.131825904205311970493132056385139。

37.7 mptestsrc

產生各種測試圖案,如同 MPlayer 測試濾鏡產生的圖案。

產生的影片大小是固定的,為 256x256。此來源特別適用於測試編碼功能。

將指示來源接受 44100Hz 的平面 16 位元有號立體聲。由於名稱為 "s16p" 的樣本格式對應於數字 6,而 "stereo" 聲道配置對應於值 0x3,因此這等效於

rate, r

指定來源影片的影格率,即每秒產生的影格數。它必須是字串格式 <var>frame_rate_num</var>/<var>frame_rate_den</var>、整數、浮點數或有效的影片影格率縮寫。預設值為 "25"。

release

設定來源影片的持續時間。關於接受的語法,請參閱 <a href="ffmpeg-utils.html#time-duration-syntax">(ffmpeg-utils) 手冊 ffmpeg-utils(1)</a> 中的「Time duration」章節。

如果未指定,或表示的持續時間為負數,則影片應永久產生。

test, t

設定要執行的測試編號或名稱。支援的測試包括

dc_luma
dc_chroma
freq_luma
freq_chroma
amp_luma
amp_chroma
cbp
mv
ring1
ring2
all
max_frames, m

設定每個測試產生的最大影格數,預設值為 30。

預設值為 "all",它將循環瀏覽所有測試的列表。

一些範例

mptestsrc=t=dc_luma

將產生 "dc_luma" 測試圖案。

37.8 frei0r_src

提供 frei0r 來源。

若要啟用此濾鏡的編譯,您需要安裝 frei0r 標頭並使用 <code>--enable-frei0r</code> 配置 FFmpeg。

此來源接受以下參數。

size

要產生的影片大小。關於此選項的語法,請查看 <a href="ffmpeg-utils.html#video-size-syntax">(ffmpeg-utils) 手冊</a> 中「Video size」章節。

framerate

產生的影片的影格率。它可以是 <var>num</var>/<var>den</var> 形式的字串或影格率縮寫。

filter_name

要載入的 frei0r 來源名稱。有關 frei0r 以及如何設定參數的更多資訊,請閱讀影片濾鏡文件中的 <a href="#frei0r">frei0r</a> 章節。

filter_params

要傳遞給 frei0r 來源的以 '|' 分隔的參數列表。

例如,產生大小為 200x200 且影格率為 10 的 frei0r partik0l 來源,並覆蓋在 overlay 濾鏡的主要輸入上。

frei0r_src=size=200x200:framerate=10:filter_name=partik0l:filter_params=1234 [overlay]; [in][overlay] overlay

37.9 life

產生生命圖案。

此來源基於 John Conway 生命遊戲的推廣。

來源輸入表示生命網格,每個像素代表一個細胞,它可以處於兩種可能的狀態之一,存活或死亡。每個細胞都與其八個鄰居互動,這些鄰居是水平、垂直或對角相鄰的細胞。

在每次互動時,網格都會根據採用的規則演變,該規則指定了鄰居存活細胞的數量,這些細胞將使細胞保持存活或誕生。<samp>rule</samp> 選項允許指定要採用的規則。

將指示來源接受 44100Hz 的平面 16 位元有號立體聲。由於名稱為 "s16p" 的樣本格式對應於數字 6,而 "stereo" 聲道配置對應於值 0x3,因此這等效於

filename, f

設定從中讀取初始網格狀態的檔案。在檔案中,每個非空白字元都被視為存活的細胞,換行符號用於分隔每列的末尾。

如果未指定此選項,則會隨機產生初始網格。

rate, r

設定影片速率,即每秒產生的影格數。預設值為 25。

random_fill_ratio, ratio

設定初始隨機網格的隨機填充率。它是一個介於 0 到 1 之間的浮點數值,預設值為 1/PHI。當指定檔案時,它將被忽略。

random_seed, seed

設定填充初始隨機網格的種子,必須是介於 0 和 UINT32_MAX 之間的整數。如果未指定,或明確設定為 -1,則濾鏡將盡力使用良好的隨機種子。

rule

設定生命規則。

規則可以使用 "S<var>NS</var>/B<var>NB</var>" 類型的代碼指定,其中 <var>NS</var> 和 <var>NB</var> 是 0-8 範圍內的數字序列,<var>NS</var> 指定使存活細胞保持存活的鄰居存活細胞數量,而 <var>NB</var> 指定使死亡細胞變成存活(即「誕生」)的鄰居存活細胞數量。"s" 和 "b" 可以分別代替 "S" 和 "B" 使用。

或者,規則可以使用 18 位元整數指定。如果細胞對於每個數量的鄰居存活細胞都存活,則高 9 位元用於編碼下一個細胞狀態,低位元指定「誕生」新細胞的規則。較高位元編碼較高數量的鄰居細胞。例如,數字 6153 = <code>(12&lt;&lt;9)+9</code> 指定保持存活規則為 12,誕生規則為 9,這對應於 "S23/B03"。

預設值為 "S23/B3",這是原始 Conway 生命遊戲規則,如果細胞有 2 或 3 個鄰居存活細胞,則會保持細胞存活,如果死亡細胞周圍有三個存活細胞,則會誕生新細胞。

size, s

設定輸出影片的大小。關於此選項的語法,請查看 <a href="ffmpeg-utils.html#video-size-syntax">(ffmpeg-utils) 手冊</a> 中「Video size」章節。

如果指定了 <samp>filename</samp>,則預設大小會設定為與輸入檔案相同的大小。如果設定了 <samp>size</samp>,則它必須包含輸入檔案中指定的大小,並且該檔案中定義的初始網格在較大的結果區域中置中。

如果未指定檔案名稱,則大小值預設為 "320x240"(用於隨機產生的初始網格)。

stitch

如果設定為 1,則將左右網格邊緣縫合在一起,以及頂部和底部邊緣。預設值為 1。

mold

設定細胞腐敗速度。如果設定,死亡細胞將以 <samp>mold</samp> 的步長從 <samp>death_color</samp> 變為 <samp>mold_color</samp>。<samp>mold</samp> 的值可以從 0 到 255。

life_color

設定存活(或新生)細胞的顏色。

death_color

設定死亡細胞的顏色。如果設定了 <samp>mold</samp>,這是用於表示死亡細胞的第一種顏色。

mold_color

設定腐敗顏色,用於完全死亡和腐敗的細胞。

關於這 3 個顏色選項的語法,請查看 <a href="ffmpeg-utils.html#color-syntax">(ffmpeg-utils) 手冊</a> 中「Color」章節。

37.9.1 範例

  • 從 <samp>pattern</samp> 讀取網格,並將其置中在大小為 300x300 像素的網格上。
    life=f=pattern:s=300x300
    
  • 產生大小為 200x200 的隨機網格,填充率為 2/3。
    life=ratio=2/3:s=200x200
    
  • 指定用於演變隨機產生網格的自訂規則。
    life=rule=S14/B34
    
  • 使用 <code>ffplay</code> 的慢速死亡效果(腐敗)完整範例。
    ffplay -f lavfi life=s=300x200:mold=10:r=60:ratio=0.1:death_color=#C83232:life_color=#00ff00,scale=1200:800:flags=16
    

37.10 perlin

產生 Perlin 雜訊。

Perlin 雜訊是一種在空間上具有局部連續性的雜訊。這可以用於產生在空間和時間上具有連續性的圖案,例如模擬煙霧、流體或地形。

如果透過 octaves 選項指定一個以上八度音程,則 Perlin 雜訊會產生為多個組件的總和,每個組件的頻率都會加倍。在這種情況下,persistence 選項指定相對於前一個組件的振幅比率。更多的八度音程組件能夠在產生的雜訊中指定更多高頻細節(例如,在產生的地形中,因巨石造成的小尺寸變化)。

37.10.1 選項

size, s

指定緩衝視訊影格的大小(寬度和高度)。關於此選項的語法,請查看 ffmpeg-utils 手冊中的 (ffmpeg-utils)「視訊大小」章節。預設值為 320x240

rate, r

指定視訊串流預期的影格率,以每秒影格數表示。預設值為 25

octaves(八度音程數)

指定組成雜訊的組件總數,每個組件的頻率都會加倍。預設值為 1

persistence(持久性)

設定用於計算下一個八度音程組件相對於前一個組件振幅的比率。預設值為 1

xscale(X 軸縮放)
yscale(Y 軸縮放)

定義用於乘上 x、y 座標的縮放係數。這對於定義沿著 x 或 y 軸拉伸的圖案效果非常有用。預設值為 1

tscale(時間縮放)

定義用於乘上時間座標的縮放係數。這對於更改時間變化速度非常有用。預設值為 1

random_mode(隨機模式)

設定用於計算初始圖案的隨機模式。

支援的值為

隨機

計算並使用隨機種子。

ken

使用 Ken Perlin 在原始文章中定義的預定義初始圖案,這對於將輸出與其他來源進行比較非常有用。

seed

使用 random_seed 選項指定的值。

預設值為 random

random_seed, seed

random_mode 設定為 random_seed 時,使用此值來計算初始圖案。預設值為 0

37.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
    

37.11 qrencodesrc

使用 libqrencode 函式庫產生 QR 碼(請參閱 https://fukuchi.org/works/qrencode/)。

若要啟用此來源的編譯,您需要使用 --enable-libqrencode 配置 FFmpeg。

QR 碼是從提供的文字或文字圖案產生。相應的 QR 碼會根據指定的輸出大小選項進行縮放並放置在視訊輸出中。

如果未指定文字,則不會產生 QR 碼,而是會傳回空的彩色輸出。

將指示來源接受 44100Hz 的平面 16 位元有號立體聲。由於名稱為 "s16p" 的樣本格式對應於數字 6,而 "stereo" 聲道配置對應於值 0x3,因此這等效於

qrcode_width, q
padded_qrcode_width, Q

指定渲染的 QR 碼寬度的表達式,包含和不包含填充。 qrcode_width 表達式可以參考由 padded_qrcode_width 表達式設定的值,反之亦然。預設情況下,padded_qrcode_width 設定為 qrcode_width,表示沒有填充。

這些表達式僅在初始化來源時評估一次。有關詳細資訊,請參閱 qrencode 表達式 章節。

請注意,某些常數對於來源而言是遺失的(例如 xt 或 ¸n),因為它們僅在為每個影格而非在初始化時評估表達式時才有意義。

rate, r

指定來源影片的影格率,即每秒產生的影格數。它必須是字串格式 <var>frame_rate_num</var>/<var>frame_rate_den</var>、整數、浮點數或有效的影片影格率縮寫。預設值為 "25"。

case_sensitive, cs

指示 libqrencode 使用區分大小寫的編碼。預設情況下啟用此選項。可以停用此選項以縮減 QR 編碼大小。

level, l

指定 QR 編碼錯誤校正等級。校正等級越高,編碼大小會增加,但程式碼對於損壞的容忍度會更高。較低等級為 L

它接受以下值:

L
M
Q
H
expansion

選擇如何展開輸入文字。可以是 nonenormal(預設值)。有關詳細資訊,請參閱 qrencode 文字展開 章節。

text
textfile

定義要呈現的文字。如果兩者皆未指定,則不會編碼 QR 碼(僅為空的彩色框架)。

如果啟用展開,則文字會被視為文字範本,使用 qrencode 展開機制。有關詳細資訊,請參閱 qrencode 文字展開 章節。

background_color, bc
foreground_color, fc

設定 QR 碼和背景顏色。foreground_color 的預設值為「black」,background_color 的預設值為「white」。

關於顏色選項的語法,請查看 (ffmpeg-utils) 手冊中的「Color」章節

37.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}
    
  • 產生一個 QR 碼,編碼 GMT 時間戳記
    qrencodesrc=text=%{gmtime}
    
  • 產生一個 QR 碼,編碼表示為浮點數的時間戳記
    qrencodesrc=text=%{pts}
    

37.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*N x N*N*N 像素的圖片,用作 3D 查找表的恆等矩陣。每個組件都以 1/(N*N) 比例編碼。

color, c

指定來源的色彩,僅在 color 來源中可用。關於此選項的語法,請查看 ffmpeg-utils 手冊中的 (ffmpeg-utils)「色彩」章節

size, s

指定來源影片的大小。關於此選項的語法,請查看 <a href="ffmpeg-utils.html#video-size-syntax">(ffmpeg-utils) 手冊</a> 中「Video size」章節。預設值為 <code>320x240</code>。

此選項不適用於 allrgballyuvhaldclutsrc 濾鏡。

rate, r

指定來源影片的影格率,即每秒產生的影格數。它必須是字串格式 <var>frame_rate_num</var>/<var>frame_rate_den</var>、整數、浮點數或有效的影片影格率縮寫。預設值為 "25"。

release

設定來源影片的持續時間。關於接受的語法,請參閱 <a href="ffmpeg-utils.html#time-duration-syntax">(ffmpeg-utils) 手冊 ffmpeg-utils(1)</a> 中的「Time duration」章節。

如果未指定,或表示的持續時間為負數,則影片應永久產生。

由於影格率用作時間基準,因此包括最後一個影格在內的所有影格都將具有完整持續時間。如果指定的持續時間不是影格持續時間的倍數,則會向上捨入。

sar

設定來源影片的樣本縱橫比。

alpha

指定背景的 Alpha(不透明度),僅在 testsrc2 來源中可用。該值必須介於 0(完全透明)和 255(完全不透明,預設值)之間。

decimals, n(小數位數,n)

設定要在時間戳記中顯示的小數位數,僅在 testsrc 來源中可用。

顯示的時間戳記值將對應於原始時間戳記值乘以指定值的 10 的次方。預設值為 0。

type

設定色譜的類型,僅在 colorspectrum 來源中可用。可以是以下其中之一

black
white
all
patch_size

設定單個色塊的色塊大小,僅在 colorchart 來源中可用。預設值為 64x64

preset

設定 colorchecker 色彩預設,僅在 colorchart 來源中可用。

可用值為

reference’(參考)
skintones’(膚色)

預設值為 reference

37.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
    

37.12.2 指令

color 來源支援以下命令

c, color(c,色彩)

設定建立的影像的色彩。接受與相應 color 選項相同的語法。

37.13 openclsrc

使用 OpenCL 程式產生視訊。

來源

OpenCL 程式原始碼檔案。

kernel

程式中的核心名稱。

size, s

要產生的影格大小。這必須設定。

format

用於產生影格的像素格式。這必須設定。

rate, r

每秒產生的影格數。預設值為 ’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);
    }
    

37.14 sierpinski

產生 Sierpinski 地毯/三角形碎形,並隨機平移。

將指示來源接受 44100Hz 的平面 16 位元有號立體聲。由於名稱為 "s16p" 的樣本格式對應於數字 6,而 "stereo" 聲道配置對應於值 0x3,因此這等效於

size, s

設定影格大小。關於此選項的語法,請查看 <a href="ffmpeg-utils.html#video-size-syntax">(ffmpeg-utils) 手冊</a> 中「Video size」章節。預設值為 "640x480"。

rate, r

設定影格率,以每秒影格數表示。預設值為 "25"。

seed

設定用於隨機平移的種子。

jump(跳躍)

設定單個平移目標的最大跳躍。允許範圍從 1 到 10000。

type

設定碎形類型,可以是預設值 carpettriangle

37.15 zoneplate

產生 zoneplate 測試視訊圖案。

將指示來源接受 44100Hz 的平面 16 位元有號立體聲。由於名稱為 "s16p" 的樣本格式對應於數字 6,而 "stereo" 聲道配置對應於值 0x3,因此這等效於

size, s

設定影格大小。關於此選項的語法,請查看 ffmpeg-utils 手冊中的 (ffmpeg-utils)「視訊大小」章節。預設值為 "320x240"。

rate, r

設定影格率,以每秒影格數表示。預設值為 "25"。

release

設定來源影片的持續時間。關於接受的語法,請參閱 <a href="ffmpeg-utils.html#time-duration-syntax">(ffmpeg-utils) 手冊 ffmpeg-utils(1)</a> 中的「Time duration」章節。

如果未指定,或表示的持續時間為負數,則影片應永久產生。

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。

37.15.1 指令

此來源支援將上述某些選項作為 <a href="#commands">commands</a>。

37.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
    

38 視訊接收器

以下是目前可用的視訊接收器的描述。

38.1 buffersink

緩衝視訊影格,並使其可用於濾鏡圖的末端。

此接收器主要用於程式化使用,特別是透過 libavfilter/buffersink.h 中定義的介面或選項系統。

它接受指向 AVBufferSinkContext 結構的指標,該結構定義傳入緩衝區的格式,將作為不透明參數傳遞給 avfilter_init_filter 以進行初始化。

38.2 nullsink

Null 視訊接收器:對輸入視訊絕對不做任何處理。它主要用作範本,並用於分析/除錯工具中。

39 多媒體濾鏡

以下是目前可用的多媒體濾鏡的描述。

39.1 a3dscope

將輸入音訊轉換為 3D 示波器視訊輸出。

通過第一個輸入。

rate, r

設定影格率,以每秒影格數表示。預設值為 "25"。

size, s

指定輸出的視訊大小。關於此選項的語法,請查看 ffmpeg-utils 手冊中的 (ffmpeg-utils)「視訊大小」章節。預設值為 hd720

fov(視野)

設定相機視野。預設值為 90 度。允許範圍從 40 到 150。

roll

設定相機滾動。

pitch

設定相機俯仰。

yaw

設定相機偏航。

xzoom(X 軸縮放)

設定相機在 X 軸上的縮放。

yzoom(Y 軸縮放)

設定相機在 Y 軸上的縮放。

zzoom(Z 軸縮放)

設定相機在 Z 軸上的縮放。

xpos(X 軸位置)

設定相機在 X 軸上的位置。

ypos(Y 軸位置)

設定相機在 Y 軸上的位置。

zpos(Z 軸位置)

設定相機在 Z 軸上的位置。

length

設定顯示的音訊波長度,以影格數表示。

39.1.1 指令

濾鏡支援上述某些選項作為 命令

39.2 abitscope

將輸入音訊轉換為視訊輸出,顯示音訊位元示波器。

通過第一個輸入。

rate, r

設定影格率,以每秒影格數表示。預設值為 "25"。

size, s

指定輸出的視訊大小。關於此選項的語法,請查看 ffmpeg-utils 手冊中的 (ffmpeg-utils)「視訊大小」章節。預設值為 1024x256

mgain

指定以空格或 '|' 分隔的色彩列表,這些色彩將用於繪製通道。無法辨識或遺失的色彩將被白色取代。

mode, m

設定輸出模式。可以是 barstrace。預設值為 bars

39.3 adrawgraph

使用輸入音訊元資料繪製圖表。

請參閱 drawgraph

39.4 agraphmonitor

請參閱 graphmonitor

39.5 ahistogram

將輸入音訊轉換為視訊輸出,顯示音量直方圖。

通過第一個輸入。

dmode(顯示模式)

指定如何計算直方圖。

它接受以下值:

single

為所有通道使用單一直方圖。

separate’(分離)

為每個通道使用單獨的直方圖。

預設值為 single

rate, r

設定影格率,以每秒影格數表示。預設值為 "25"。

size, s

指定輸出的視訊大小。關於此選項的語法,請查看 ffmpeg-utils 手冊中的 (ffmpeg-utils)「視訊大小」章節。預設值為 hd720

scale

設定顯示比例。

它接受以下值:

log

logarithmic(對數)

sqrt’(平方根)

平方根

cbrt’(立方根)

立方根

lin’(線性)

linear

rlog’(反向對數)

反向對數

預設值為 log

ascale(振幅縮放)

設定振幅縮放。

它接受以下值:

log

logarithmic(對數)

lin’(線性)

linear

預設值為 log

acount(累積計數)

設定要在直方圖中累積多少影格。預設值為 1。將此設定為 -1 會累積所有影格。

rheight(直方圖高度比率)

設定視窗高度的直方圖比率。

slide

設定聲譜圖滑動。

它接受以下值:

replace

用新列取代舊列。

scroll

從上到下滾動。

預設值為 replace

hmode(直方圖模式)

設定直方圖模式。

它接受以下值:

abs

使用樣本的絕對值。

sign’(符號)

使用未修改的樣本值。

預設值為 abs

39.6 aphasemeter

測量輸入音訊的相位,該相位匯出為元資料 lavfi.aphasemeter.phase,表示目前音訊影格的平均相位。也可以產生視訊輸出,預設情況下啟用。音訊作為第一個輸出傳遞。

如果音訊具有不同的通道佈局,則會重新矩陣化為立體聲。相位值範圍為 [-1, 1],其中 -1 表示左右通道完全異相,1 表示通道同相。

濾鏡接受以下選項,所有選項都與其視訊輸出相關

rate, r

設定輸出影格率。預設值為 25

size, s

指定輸出的視訊大小。關於此選項的語法,請查看 ffmpeg-utils 手冊中的 (ffmpeg-utils)「視訊大小」章節。預設值為 800x400

rc
gc
bc

指定紅色、綠色、藍色對比度。預設值分別為 271。允許範圍為 [0, 255]

mpc

設定將用於繪製中值相位的色彩。如果色彩為 none(預設值),則不會繪製中值相位值。

video

啟用視訊輸出。預設為啟用。

39.6.1 相位偵測

此濾波器也能偵測立體聲串流中的異相和單聲道序列。當持續時間長於或等於設定的最小值時,它會記錄序列的開始、結束和持續時間。

此濾波器接受以下選項進行偵測

phasing

啟用單聲道和異相偵測。預設為停用。

tolerance, t

設定單聲道偵測的相位容差,以振幅比表示。預設值為 0。允許範圍為 [0, 1]

angle, a

設定異相偵測的角度閾值,以度為單位。預設值為 170。允許範圍為 [90, 180]

release

設定單聲道或異相持續時間,直到發出通知,以秒為單位表示。預設值為 2

39.6.2 範例

  • 使用 ffmpeg 偵測 1 秒單聲道且相位容差為 0.001 的完整範例
    ffmpeg -i stereo.wav -af aphasemeter=video=0:phasing=1:duration=1:tolerance=0.001 -f null -
    

39.7 avectorscope

將輸入音訊轉換為視訊輸出,表示音訊向量示波器。

此濾波器用於測量立體聲音訊串流聲道之間的差異。由相同的左右聲道訊號組成的單聲道訊號會產生一條垂直直線。任何立體聲分離都可視為偏離此線,從而產生李薩如圖形。如果出現筆直(或偏離)但水平的線條,則表示左右聲道異相。

通過第一個輸入。

mode, m

設定向量示波器模式。

可用值為

lissajous

李薩如圖形旋轉 45 度。

lissajous_xy

與上述相同,但不旋轉。

polar

形狀類似半圓。

預設值為 ‘lissajous’。

size, s

設定輸出的視訊尺寸。有關此選項的語法,請查看 (ffmpeg-utils) 手冊中的「視訊尺寸」章節。預設值為 400x400

rate, r

設定輸出影格率。預設值為 25

rc
gc
bc
ac

指定紅色、綠色、藍色和 Alpha 對比度。預設值分別為 4016080255。允許範圍為 [0, 255]

rf
gf
bf
af

指定紅色、綠色、藍色和 Alpha 淡化。預設值分別為 151055。允許範圍為 [0, 255]

zoom

設定縮放係數。預設值為 1。允許範圍為 [0, 10]。小於 1 的值將自動調整縮放係數至最大可能值。

draw

設定向量示波器繪圖模式。

可用值為

dot

為每個樣本繪製點。

line

在前一個樣本和目前樣本之間繪製線條。

aaline

在前一個樣本和目前樣本之間繪製反鋸齒線條。

預設值為 ‘dot’。

scale

指定音訊樣本的振幅比例。

可用值為

lin’(線性)

線性。

sqrt’(平方根)

平方根。

cbrt’(立方根)

立方根。

log

對數。

swap

交換左聲道軸和右聲道軸。

mirror

鏡像軸。

none

無鏡像。

x

僅鏡像 x 軸。

y

僅鏡像 y 軸。

xy

鏡像兩個軸。

39.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]'
    

39.7.2 指令

此濾波器支援上述所有選項作為指令,但 sizerate 選項除外。

39.8 bench, abench

濾波器圖形的一部分基準測試。

通過第一個輸入。

action

啟動或停止計時器。

可用值為

start

取得目前時間,將其設定為影格元數據(使用金鑰 lavfi.bench.start_time),並將影格轉發到下一個濾波器。

stop

取得目前時間並從輸入影格元數據中擷取 lavfi.bench.start_time 元數據以取得時間差。然後列印時間差、平均時間、最大時間和最小時間(分別為 tavgmaxmin)。時間戳記以秒為單位表示。

39.8.1 範例

  • 基準測試 selectivecolor 濾波器
    bench=start,selectivecolor=reds=-.2 .12 -.49,bench=stop
    

39.9 concat

串連音訊和視訊串流,將它們一個接一個地連接在一起。

此濾波器適用於同步視訊和音訊串流的片段。所有片段必須具有相同數量的每種類型串流,這也將是輸出的串流數量。

通過第一個輸入。

n

設定片段數量。預設值為 2。

v

設定輸出視訊串流的數量,這也是每個片段中視訊串流的數量。預設值為 1。

a

設定輸出音訊串流的數量,這也是每個片段中音訊串流的數量。預設值為 0。

unsafe

啟動不安全模式:如果片段具有不同的格式,則不會失敗。

此濾波器具有 v+a 個輸出:首先是 v 個視訊輸出,然後是 a 個音訊輸出。

nx(v+a) 個輸入:首先是第一個片段的輸入,順序與輸出相同,然後是第二個片段的輸入,依此類推。

相關串流並不總是具有完全相同的持續時間,原因有很多,包括編解碼器影格大小或草率的製作。因此,相關的同步串流(例如,視訊及其音軌)應一次串連。concat 濾波器將使用每個片段(最後一個片段除外)中最長串流的持續時間,並在必要時以靜音填充較短的音訊串流。

為了使此濾波器正常運作,所有片段都必須從時間戳記 0 開始。

所有對應的串流在所有片段中都必須具有相同的參數;濾波系統將自動為視訊串流選擇通用的像素格式,並為音訊串流選擇通用的樣本格式、取樣率和聲道佈局,但其他設定(例如解析度)必須由使用者明確轉換。

不同的影格速率是可以接受的,但會導致輸出時的影格速率可變;請務必設定輸出檔案以處理它。

39.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]
    

    請注意,如果音訊和視訊串流在第一個檔案中沒有完全相同的持續時間,則在拼接處會發生不同步。

39.9.2 指令

此濾波器支援以下命令

next

關閉目前片段並步進到下一個片段

39.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) 手冊中的「視訊尺寸」章節。預設和最小解析度為 640x480

meter

設定 EBU 刻度儀表。預設值為 9。常用值為 918,分別用於 EBU 刻度儀表 +9 和 EBU 刻度儀表 +18。允許此範圍內的任何其他整數值。

metadata

設定元數據注入。如果設定為 1,則音訊輸入將分割為 100 毫秒的輸出影格,每個影格都包含元數據中的各種響度資訊。所有元數據金鑰都以 lavfi.r128. 為前綴。

預設值為 0

framelog

強制影格記錄級別。

可用值為

quiet

停用記錄

info

資訊記錄級別

verbose

詳細記錄級別

預設情況下,記錄級別設定為 info。如果設定了 videometadata 選項,則會切換為 verbose

peak (峰值)

設定峰值模式。

可用模式可以累積(選項是 flag 類型)。可能的值為

none

停用任何峰值模式(預設)。

sample

啟用樣本峰值模式。

簡單峰值模式,尋找較高的樣本值。它會記錄樣本峰值訊息(由 SPK 識別)。

true

啟用真峰值模式。

如果啟用,則峰值查找將在輸入串流的過取樣版本上完成,以獲得更好的峰值準確度。它會記錄真峰值訊息(由 TPK 識別)和每影格真峰值(由 FTPK 識別)。此模式需要使用 libswresample 建置。

dualmono

將單聲道輸入檔案視為「雙單聲道」。如果單聲道檔案旨在在立體聲系統上播放,則其 EBU R128 測量在感知上將不正確。如果設定為 true,此選項將補償此效應。多聲道輸入檔案不受此選項影響。

panlaw

設定用於測量雙單聲道檔案的特定聲像定律。此參數是選用的,預設值為 -3.01dB。

target

設定用作視覺化相對零點的特定目標級別(以 LUFS 為單位)。此參數是選用的,預設值為 EBU R128 規定的 -23LUFS。但是,線上發布的素材可能更喜歡 -16LUFS 的級別(例如,用於 Podcast 或視訊平台)。

gauge

設定儀表顯示的值。有效值為 momentary 和 s shortterm。預設情況下將使用瞬時值,但在某些情況下,觀察短時值可能更有用(例如,現場混音)。

scale

設定響度的顯示比例。有效參數為 absolute(以 LUFS 為單位)或相對於目標的 relative (LU)。這僅影響視訊輸出,而不影響摘要或連續記錄輸出。

integrated

測量整合響度的唯讀匯出值,以 LUFS 為單位。

range

lra

測量響度範圍的唯讀匯出值,以 LU 為單位。

lra_low

測量 LRA 低點的唯讀匯出值,以 LUFS 為單位。

lra_high

測量 LRA 高點的唯讀匯出值,以 LUFS 為單位。

sample_peak

測量樣本峰值的唯讀匯出值,以 dBFS 為單位。

true_peak

39.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 -
    

39.11 interleave, ainterleave

使用 ffmpeg 執行分析

暫時交錯來自多個輸入的影格。

interleave 適用於視訊輸入,ainterleave 適用於音訊。

這些濾波器從多個輸入讀取影格,並將最舊的佇列影格傳送到輸出。

輸入串流必須具有明確定義、單調遞增的影格時間戳記值。

為了提交一個影格到輸出,這些濾波器需要為每個輸入排隊至少一個影格,因此如果一個輸入尚未終止且不會接收傳入影格,則它們無法運作。

例如,考慮一個輸入是 select 濾波器的情況,該濾波器始終會捨棄輸入影格。interleave 濾波器將繼續從該輸入讀取,但在輸入傳送串流結束訊號之前,它將永遠無法傳送新影格到輸出。

此外,根據輸入同步,如果一個輸入接收的影格多於其他輸入,並且佇列已滿,則濾波器將捨棄影格。

這些濾波器接受以下選項

nb_inputs, n

duration

如何確定串流結束。

longest (最長)

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

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

shortest (最短)

最短輸入的持續時間。

first (第一個)

39.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
    

39.12 latency, alatency

新增閃爍模糊效果

測量濾波延遲。

報告前一個濾波器濾波延遲,音訊濾波器的延遲以音訊樣本數表示,視訊濾波器的延遲以視訊影格數表示。

39.13 metadata, ametadata

在輸入串流結束時,濾波器將報告濾波器圖形中先前運行的濾波器的最小和最大測量延遲。

此濾波器接受以下選項

o

操作影格元數據。

可以是以下其中之一

設定濾波器的操作模式。

select

如果同時設定了 valuekey,則選取具有此類元數據的影格。如果僅設定了 key,則選取元數據中具有此金鑰的每個影格。

add

新增新的元數據 keyvalue。如果金鑰已存在,則不執行任何操作。

modify

修改已存在的金鑰的值。

delete

如果設定了 value,則僅刪除具有此類值的金鑰。否則,刪除金鑰。如果未設定 key,則刪除影格中的所有元數據值。

print

key

如果找到元數據,則列印金鑰及其值。如果未設定 key,則列印影格中可用的所有元數據值。

key

設定用於所有模式的金鑰。對於除 printdelete 之外的所有模式都必須設定。

value

要使用哪個函式來比較 metadata 值和 value

可以是下列其中之一

same_str

值會被解讀為字串,如果 metadata 值與 value 相同則傳回 true。

starts_with

值會被解讀為字串,如果 metadata 值以 value 選項字串開始則傳回 true。

less

值會被解讀為浮點數,如果 metadata 值小於 value 則傳回 true。

equal

值會被解讀為浮點數,如果 value 等於 metadata 值則傳回 true。

greater

值會被解讀為浮點數,如果 metadata 值大於 value 則傳回 true。

expr

值會被解讀為浮點數,如果選項 expr 中的表達式評估為 true 則傳回 true。

ends_with

值會被解讀為字串,如果 metadata 值以 value 選項字串結尾則傳回 true。

expr (表達式)

設定當 function 設定為 expr 時使用的表達式。該表達式會透過 eval API 進行評估,並且可以包含下列常數

VALUE1, FRAMEVAL

來自 metadata 鍵的 value 的浮點數表示。

VALUE2, USERVAL

使用者在 value 選項中提供的 value 的浮點數表示。

file

如果在 print 模式中指定,則輸出會寫入到指定的檔案。可以使用任何可寫入的 URL 而非純粹的檔名。「-」檔名是標準輸出的簡寫。如果未設定 file 選項,則輸出會以 AV_LOG_INFO 日誌等級寫入到日誌中。

這可以在某些情況下提高效能,因為不需要載入幀的原始內容。

當輸出寫入到使用 file 設定的 URL 時,會減少 print 模式中的緩衝。

39.13.1 範例

  • 印出金鑰為 lavfi.signalstats.YDIF 且值介於 0 和 1 之間的所有影格的 metadata 值。
    signalstats,metadata=print:key=lavfi.signalstats.YDIF:value=0:function=expr:expr='between(VALUE1,0,1)'
    
  • 印出 silencedetect 輸出到檔案 metadata.txt
    silencedetect,ametadata=mode=print:file=metadata.txt
    
  • 將所有 metadata 直接導向到檔案描述符 4 的管道。
    metadata=mode=print:file='pipe\:4'
    

39.14 perms, aperms

設定輸出影格的讀取/寫入權限。

這些濾鏡主要針對開發人員,用於測試濾鏡圖中的後續濾鏡的直接路徑。

這些濾鏡接受以下選項

o

選擇權限模式。

它接受以下值:

none

不執行任何操作。這是預設值。

ro

將所有輸出影格設定為唯讀。

rw

將所有輸出影格設定為直接可寫入。

toggle

如果影格為可寫入,則設為唯讀;如果為唯讀,則設為可寫入。

random

隨機將每個輸出影格設定為唯讀或可寫入。

seed

設定 random 模式的種子,必須是介於 0UINT32_MAX 之間的整數。如果未指定,或明確設定為 -1,濾鏡會盡力使用良好的隨機種子。

注意:如果權限濾鏡和後續濾鏡之間自動插入了濾鏡,則後續濾鏡可能無法如預期接收到權限。在 perms/aperms 濾鏡之前插入 formataformat 濾鏡可以避免此問題。

39.15 realtime, arealtime

減慢濾鏡處理速度以大致符合即時。

這些濾鏡會暫停濾鏡處理一段可變的時間,以使輸出速率與輸入時間戳記相符。它們與 ffmpegre 選項類似。

它們接受下列選項

limit (限制)

暫停的時間限制。任何超過該時間的暫停都會被視為時間戳記不連續,並重置計時器。預設值為 2 秒。

speed

處理速度的倍數。該值必須是個大於零的浮點數。大於 1.0 的值會導致比即時更快的處理速度,較小的值則會減慢處理速度。limit 會自動相應調整。預設值為 1.0。

無法實現比沒有這些濾鏡時更快的處理速度。

39.15.1 指令

這兩個濾鏡都支援以上所有選項作為 commands

39.16 segment, asegment

將單一輸入串流分割成多個串流。

此濾鏡的功能與 concat 濾鏡相反。

segment 適用於視訊影格,asegment 適用於音訊樣本。

此濾波器接受以下選項

timestamps

以 ' | ' 分隔的輸出片段的時間戳記。第一個片段將從輸入串流的開頭開始執行。最後一個片段將執行到輸入串流的結尾

frames, samples

分割片段的精確影格/樣本計數。

在所有情況下,在每個片段前加上 ' + ' 將使其相對於前一個片段。

39.16.1 範例

  • 將輸入音訊串流分割成三個輸出音訊串流,從輸入音訊串流的開頭開始,並將其儲存在第一個輸出音訊串流中,然後在第 60 秒繼續,並將其儲存在第二個輸出音訊串流中,最後在輸入音訊串流的第 150 秒之後儲存在第三個輸出音訊串流中
    asegment=timestamps="60|150"
    

39.17 select, aselect

選取要在輸出中傳遞的影格。

此濾波器接受以下選項

expr, e

設定表達式,該表達式會針對每個輸入影格進行評估。

如果表達式評估為零,則會捨棄該影格。

如果評估結果為負數或 NaN,則影格會傳送到第一個輸出;否則,它會傳送到索引為 ceil(val)-1 的輸出,假設輸入索引從 0 開始。

例如,值 1.2 對應於索引為 ceil(1.2)-1 = 2-1 = 1 的輸出,即第二個輸出。

outputs, n

設定輸出的數量。要將選取的影格傳送到哪個輸出取決於評估的結果。預設值為 1。

表達式可以包含以下常數

n

經過濾鏡處理的影格的(循序)編號,從 0 開始。

selected_n

選取的影格的(循序)編號,從 0 開始。

prev_selected_n

最後一個選取的影格的循序編號。如果未定義,則為 NAN。

TB

輸入時間戳記的時間基底。

pts

經過濾鏡處理的影格的 PTS(呈現時間戳記),以 TB 單位表示。如果未定義,則為 NAN。

t

經過濾鏡處理的影格的 PTS,以秒為單位表示。如果未定義,則為 NAN。

prev_pts

先前經過濾鏡處理的影格的 PTS。如果未定義,則為 NAN。

prev_selected_pts

最後一個先前選取的影格的 PTS。如果未定義,則為 NAN。

prev_selected_t

最後一個先前選取的影格的 PTS,以秒為單位表示。如果未定義,則為 NAN。

開始點 (start_pts)

串流中第一個不是 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。

影格中樣本數

經過濾鏡處理的影格在檔案中的位置,如果資訊不可用則為 -1(例如,對於合成視訊);已棄用,請勿使用

scene (僅限視訊)

介於 0 和 1 之間的值,用於指示新場景;較低的值反映目前影格引入新場景的可能性較低,而較高的值表示目前影格更可能是新場景之一(請參閱以下範例)

concatdec_select

concat demuxer 可以透過設定 inpoint 和 outpoint 來僅選取 concat 輸入檔案的一部分,但輸出封包可能不會完全包含在選取的間隔內。透過使用此變數,可以跳過 concat demuxer 產生的影格,這些影格並未完全包含在選取的間隔內。

這透過將影格 pts 與 lavf.concat.start_timelavf.concat.duration 封包 metadata 值進行比較來運作,這些值也存在於解碼的影格中。

如果影格 pts 至少為 start_time,且 duration metadata 遺失或影格 pts 小於 start_time + duration,則 concatdec_select 變數為 -1,否則為 0,如果 start_time metadata 遺失,則為 NaN。

這基本上表示如果輸入影格的 pts 在 concat demuxer 設定的間隔內,則會選取該影格。

iw (僅限視訊)

代表輸入視訊影格的寬度。

ih (僅限視訊)

代表輸入視訊影格的高度。

view (僅限視訊)

多視圖視訊的視圖 ID。

select 表達式的預設值為 "1"。

39.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 檔案中選取有用的影格,該檔案使用 inpoint 和 outpoint,但來源檔案並非僅限影格內。
    ffmpeg -copyts -vsync 0 -segment_time_metadata 1 -i input.ffconcat -vf select=concatdec_select -af aselect=concatdec_select output.avi
    

39.18 sendcmd, asendcmd

將命令傳送到濾鏡圖中的濾鏡。

這些濾鏡讀取要傳送到濾鏡圖中其他濾鏡的命令。

sendcmd 必須插入在兩個視訊濾鏡之間,asendcmd 必須插入在兩個音訊濾鏡之間,但除此之外,它們的作用方式相同。

命令的規格可以在濾鏡引數中使用 commands 選項提供,也可以在 filename 選項指定的檔案中提供。

此外,根據輸入同步,如果一個輸入接收的影格多於其他輸入,並且佇列已滿,則濾波器將捨棄影格。

commands, c

設定要讀取並傳送到其他濾鏡的命令。

filename, f

設定要讀取並傳送到其他濾鏡的命令的檔名。

39.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

視訊或音訊的輸入影格計數,從 0 開始。

T

目前影格的時間,以秒為單位。

TS

目前命令間隔的開始時間,以秒為單位。

TE

目前命令間隔的結束時間,以秒為單位。

TI

目前命令間隔的內插時間,TI = (T - TS) / (TE - TS)。

W

視訊影格寬度。

H

視訊影格高度。

如果未指定 FLAGS,則預設值為 [enter]

TARGET 指定命令的目標,通常是濾鏡類別的名稱或特定濾鏡實例名稱。

COMMAND 指定目標濾鏡的命令名稱。

ARG 是可選的,用於指定給定 COMMAND 的可選引數列表。

在一個間隔規格和另一個間隔規格之間,空白字元或以 # 開頭直到行尾的字元序列會被忽略,並且可以用於註解。

以下是命令規格語法的簡化 BNF 描述

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]

39.18.2 範例

  • 在第 4 秒指定音訊速度變更
    asendcmd=c='4.0 atempo tempo 1.5',atempo
    
  • 目標為特定濾鏡實例
    asendcmd=c='4.0 atempo@my tempo 1.5',atempo@my
    
  • 在檔案中指定 drawtext 和 hue 命令的列表。
    # 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)
    

    允許讀取和處理儲存在檔案 test.cmd 中的上述命令列表的濾鏡圖,可以使用以下方式指定

    sendcmd=f=test.cmd,drawtext=fontfile=FreeSerif.ttf:text='',hue
    

39.19 setpts, asetpts

變更輸入影格的 PTS (presentation timestamp,展示時間戳記)。

setpts 作用於視訊影格,asetpts 作用於音訊影格。

此濾波器接受以下選項

expr (表達式)

為每個影格計算時間戳記的運算式。

該表達式會透過 eval API 進行評估,並且可以包含下列常數

FRAME_RATE, FR

影格率,僅針對恆定影格率視訊定義

PTS

輸入中的展示時間戳記

N

視訊的輸入影格計數,或音訊的已消耗樣本數,不包含當前影格,從 0 開始。

NB_CONSUMED_SAMPLES

已消耗樣本數,不包含當前影格(僅限音訊)

NB_SAMPLES, S

當前影格中的樣本數(僅限音訊)

SAMPLE_RATE, SR

音訊取樣率。

STARTPTS

第一個影格的 PTS。

STARTT

第一個影格的時間(秒)

INTERLACED

指示當前影格是否為交錯式。

T

當前影格的時間(秒)

POS

影格在檔案中的原始位置,如果當前影格未定義則為未定義;已棄用,請勿使用

PREV_INPTS

前一個輸入 PTS。

PREV_INT

先前的輸入時間(秒)

PREV_OUTPTS

前一個輸出 PTS。

PREV_OUTT

先前的輸出時間(秒)

RTCTIME

即時時鐘 (RTC) 時間,單位為微秒。此選項已棄用,請改用 time(0)。

RTCSTART

影片開始時的即時時鐘 (RTC) 時間,單位為微秒。

TB

輸入時間戳記的時間基底。

T_CHANGE

套用命令後第一個影格的時間,或如果沒有命令則為第一個影格的時間。

39.19.1 範例

  • 從零開始計數 PTS
    setpts=PTS-STARTPTS
    
  • 套用快動作效果
    setpts=0.5*PTS
    
  • 套用慢動作效果
    setpts=2.0*PTS
    
  • 設定固定速率為每秒 25 影格
    setpts=N/(25*TB)
    
  • 套用 +/-100 TB 單位隨機抖動效果
    setpts=PTS+randomi(0, -100\,100)
    
  • 設定固定速率 25 fps 並帶有一些抖動
    setpts='1/(25*TB) * (N + 0.05 * sin(N*2*PI/25))'
    
  • 對輸入 PTS 套用 10 秒的偏移
    setpts=PTS+10/TB
    
  • 從「即時來源」產生時間戳記,並重新基於目前的時間基底
    setpts='(RTCTIME - RTCSTART) / (TB * 1000000)'
    
  • 透過計數樣本產生時間戳記
    asetpts=N/SR/TB
    

39.19.2 指令

這兩個濾鏡都支援以上所有選項作為命令

39.20 setrange

強制輸出視訊影格的色彩範圍。

setrange 濾鏡標記輸出影格的色彩範圍屬性。它不會變更輸入影格,僅設定對應的屬性,這會影響後續濾鏡如何處理影格。

通過第一個輸入。

range

可用值為

auto

保持相同的色彩範圍屬性。

unspecified, unknown

將色彩範圍設定為未指定。

limited, tv, mpeg

將色彩範圍設定為有限。

full, pc, jpeg

將色彩範圍設定為完整。

39.21 settb, asettb

設定用於輸出影格時間戳記的時間基底。主要用於測試時間基底組態。

它接受以下參數

expr, tb

計算結果為輸出時間基底的運算式。

tb 的值是表示有理數的算術運算式。運算式可以包含常數 "AVTB"(預設時間基底)、"intb"(輸入時間基底)和 "sr"(取樣率,僅限音訊)。預設值為 "intb"。

39.21.1 範例

  • 將時間基底設定為 1/25
    settb=expr=1/25
    
  • 將時間基底設定為 1/10
    settb=expr=0.1
    
  • 將時間基底設定為 1001/1000
    settb=1+0.001
    
  • 將時間基底設定為 2*intb
    settb=2*intb
    
  • 設定預設時間基底值
    settb=AVTB
    

39.22 showcqt

將輸入音訊轉換為視訊輸出,以對數方式呈現頻譜,使用 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

sono_v, volume

指定聲譜圖音量運算式。它可以包含變數

bar_v

已計算的 bar_v 運算式

frequency, freq, f

計算時的頻率

timeclamp, tc

timeclamp 選項的值

和函數

a_weighting(f)

A 加權等響度曲線

b_weighting(f)

B 加權等響度曲線

c_weighting(f)

C 加權等響度曲線。

預設值為 16

bar_v, volume2

指定長條圖音量運算式。它可以包含變數

sono_v

已計算的 sono_v 運算式

frequency, freq, f

計算時的頻率

timeclamp, tc

timeclamp 選項的值

和函數

a_weighting(f)

A 加權等響度曲線

b_weighting(f)

B 加權等響度曲線

c_weighting(f)

C 加權等響度曲線。

預設值為 sono_v

sono_g, gamma

指定聲譜圖 gamma 值。較低的 gamma 值使頻譜對比更強,較高的 gamma 值使頻譜具有更大的範圍。預設值為 3。可接受的範圍為 [1, 7]

bar_g, gamma2

指定長條圖 gamma 值。預設值為 1。可接受的範圍為 [1, 7]

bar_t

指定長條圖透明度層級。較低的值使長條圖更銳利。預設值為 1。可接受的範圍為 [0, 1]

timeclamp, tc

指定轉換時間鉗位。在低頻率下,時域和頻域準確性之間需要權衡。如果 timeclamp 較低,則時域中的事件(例如快速低音鼓)會更準確地表示,否則頻域中的事件(例如低音吉他)會更準確地表示。可接受的範圍為 [0.002, 1]。預設值為 0.17

預設值為 o

設定攻擊時間(秒)。預設值為 0(停用)。否則,它會透過在時域中套用非對稱視窗化來限制未來樣本,這在需要低延遲時很有用。可接受的範圍為 [0, 1]

basefreq

指定轉換基準頻率。預設值為 20.01523126408007475,即低於 E0 50 音分的頻率。可接受的範圍為 [10, 100000]

endfreq

指定轉換結束頻率。預設值為 20495.59681441799654,即高於 D#10 50 音分的頻率。可接受的範圍為 [10, 100000]

coeffclamp

此選項已棄用且會被忽略。

tlength

指定時域中的轉換長度。使用此選項可控制每個頻率樣本在時域和頻域之間的準確性權衡。它可以包含變數

frequency, freq, f

計算時的頻率

timeclamp, tc

timeclamp 選項的值。

預設值為 384*tc/(384+tc*f)

count

指定每個視訊影格的轉換計數。預設值為 6。可接受的範圍為 [1, 30]

fcount

指定每個像素的轉換計數。預設值為 0,表示自動計算。可接受的範圍為 [0, 10]

fontfile

指定用於 freetype 的字型檔案,以繪製軸線。如果未指定,則使用內嵌字型。請注意,使用字型檔案或內嵌字型繪製軸線尚未實作自訂 basefreqendfreq,請改用 axisfile 選項。

font

指定 fontconfig 模式。此選項的優先順序低於 fontfilepattern 中的 : 可以替換為 |,以避免不必要的跳脫字元。

fontcolor

指定字型顏色運算式。這是應傳回整數值 0xRRGGBB 的算術運算式。它可以包含變數

frequency, freq, f

計算時的頻率

timeclamp, tc

timeclamp 選項的值

和函數

midi(f)

頻率 f 的 midi 編號,一些 midi 編號:E0(16)、C1(24)、C2(36)、A4(69)

r(x), g(x), b(x)

強度 x 的紅色、綠色和藍色值。

預設值為 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))

axisfile

指定用於繪製軸線的影像檔案。此選項會覆寫 fontfilefontcolor 選項。

axis, text

啟用/停用繪製文字到軸線。如果設定為 0,則停用繪製到軸線,忽略 fontfileaxisfile 選項。預設值為 1

csp

設定色彩空間。可接受的值為

unspecified

未指定 (預設)

bt709

BT.709

fcc

FCC

bt470bg

BT.470BG 或 BT.601-6 625

smpte170m

SMPTE-170M 或 BT.601-6 525

smpte240m

SMPTE-240M

bt2020ncl

BT.2020 (非恆定亮度)

cscheme

設定頻譜圖配色方案。這是浮點數值列表,格式為 left_r|left_g|left_b|right_r|right_g|right_b。預設值為 1|0.5|0|0|0.5|1

39.22.1 範例

  • 播放音訊時顯示頻譜
    ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt [out0]'
    
  • 與上述相同,但影格率為 30 fps
    ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt=fps=30:count=5 [out0]'
    
  • 以 1280x720 播放
    ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt=s=1280x720:count=4 [out0]'
    
  • 停用聲譜圖顯示
    sono_h=0
    
  • A1 及其諧波:A1、A2、(接近)E3、A3
    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]'
    
  • 與上述相同,但在頻域中具有更高的準確性
    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]'
    
  • 自訂音量
    bar_v=10:sono_v=bar_v*a_weighting(f)
    
  • 自訂 gamma 值,現在頻譜與振幅呈線性關係。
    bar_g=2:sono_g=2
    
  • 自訂 tlength 方程式
    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)))'
    
  • 自訂 fontcolor 和 fontfile,C 音符為綠色,其他音符為藍色
    fontcolor='if(mod(floor(midi(f)+0.5),12), 0x0000FF, g(1))':fontfile=myfont.ttf
    
  • 使用 fontconfig 的自訂字型
    font='Courier New,Monospace,mono|bold'
    
  • 使用影像檔案的自訂軸線和自訂頻率範圍
    axisfile=myaxis.png:basefreq=40:endfreq=10000
    

39.23 showcwt

將輸入音訊轉換為視訊輸出,使用連續小波轉換和 Morlet 小波表示頻譜。

通過第一個輸入。

size, s

指定輸出的視訊尺寸。有關此選項的語法,請查看 (ffmpeg-utils) 手冊中的「視訊尺寸」章節。預設值為 640x512

rate, r

設定輸出影格率。預設值為 25

scale

設定使用的頻率比例。允許的值為

linear
log
bark
mel
erbs
sqrt
cbrt
qdrt
fm

預設值為 linear

iscale

設定使用的強度比例。允許的值為

linear
log
sqrt
cbrt
qdrt

預設值為 log

min

設定輸出中將使用的最小頻率。預設值為 20 Hz。

max

設定輸出中將使用的最大頻率。預設值為 20000 Hz。實際頻率上限取決於輸入音訊的取樣率,當設定的值大於奈奎斯特頻率時,將強制執行此值。

imin

設定輸出中將使用的最小強度。

imax

設定輸出中將使用的最大強度。

logb

設定將計算出的幅度值對應到像素值時的亮度強度的對數基底。允許的範圍為 01。預設值為 0.0001

deviation

設定頻率偏差。小於 1 的值更偏重頻率,而大於 1 的值更偏重時間。允許的範圍為 010。預設值為 1

pps

設定每秒每列輸出的像素數。允許的範圍為 11024。預設值為 64

o

設定輸出視覺模式。允許的值為

magnitude

顯示幅度。

phase

phase

僅顯示相位。

magphase

channel

顯示幅度和相位的組合。幅度對應到亮度,相位對應到顏色。

stereo

為每個聲道幅度顯示獨特的顏色。

預設值為 magnitude

slide

設定輸出滑動方法。允許的值為

replace
scroll
frame
direction

設定輸出滑動方法的方向方法。允許的值為

lr

方向從左到右。

rl

rl

方向從右到左。

ud

方向從上到下。

du

方向從下到上。

bar

rotation (旋轉)

設定長條圖顯示與顯示尺寸的比率。預設值為 0。

39.24 showfreqs

設定顏色旋轉,必須在 [-1.0, 1.0] 範圍內。預設值為 0

通過第一個輸入。

size, s

將輸入音訊轉換為視訊輸出,表示音訊功率頻譜。音訊振幅在 Y 軸上,而頻率在 X 軸上。

rate, r

指定視訊尺寸。有關此選項的語法,請查看 (ffmpeg-utils) 手冊中的「視訊尺寸」章節。預設值為 1024x512

o

設定視訊速率。預設值為 25

它接受以下值:

line
bar
dot

設定顯示模式。這設定每個頻率區間將如何表示。

ascale(振幅縮放)

設定振幅縮放。

它接受以下值:

lin’(線性)

預設值為 bar

sqrt’(平方根)

線性比例。

cbrt’(立方根)

平方根比例。

log

立方根比例。

預設值為 log

size (大小)

對數比例。

它接受以下值:

lin’(線性)

預設值為 bar

log

立方根比例。

rlog’(反向對數)

反向對數比例。

預設值為 lin

win_size

設定視窗大小。允許的範圍為 16 到 65536。

預設值為 2048

win_func

設定視窗化函數。

它接受以下值:

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

預設值為 hanning

overlap

設定視窗重疊。範圍為 [0, 1]。預設值為 1,表示將選取所選視窗函數的最佳重疊。

averaging

設定時間平均。將此設定為 0 將顯示當前最大峰值。預設值為 1,表示停用時間平均。

mgain

指定以空格或 '|' 分隔的顏色列表,這些顏色將用於繪製聲道頻率。無法辨識或遺失的顏色將替換為白色。

cmode

設定聲道顯示模式。

它接受以下值:

combined
separate’(分離)

預設值為 combined

minamp

設定 log 振幅縮放器中使用的最小振幅。

data

設定資料顯示模式。

它接受以下值:

magnitude
phase
delay

預設值為 magnitude

channels

設定處理音訊時要使用的聲道。預設情況下,會處理所有聲道。

39.25 showspatial

將立體聲輸入音訊轉換為視訊輸出,表示兩個聲道之間的空間關係。

通過第一個輸入。

size, s

指定輸出的視訊尺寸。有關此選項的語法,請查看 (ffmpeg-utils) 手冊中的「視訊尺寸」章節。預設值為 512x512

win_size

設定視窗大小。允許範圍為 102465536。預設大小為 4096

win_func

設定視窗函數。

它接受以下值:

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

預設值為 hann

rate, r

設定輸出影格率。

39.26 showspectrum

將輸入音訊轉換為視訊輸出,表示音訊頻率頻譜。

通過第一個輸入。

size, s

指定輸出的視訊尺寸。有關此選項的語法,請查看 (ffmpeg-utils) 手冊中的「視訊尺寸」章節。預設值為 640x512

slide

指定頻譜應如何沿著視窗滑動。

它接受以下值:

replace

當樣本到達右側時,樣本從左側重新開始

scroll

scroll

fullframe

僅當樣本到達右側時才產生影格

rscroll

rscroll

lreplace

當樣本到達左側時,樣本從右側重新開始

預設值為 replace

o

指定顯示模式。

它接受以下值:

combined

combined

separate’(分離)

separate

預設值為 ‘combined’。

顏色

指定顯示顏色模式。

它接受以下值:

channel

每個聲道以不同的顏色顯示

intensity

每個聲道使用相同的配色方案顯示

rainbow

每個聲道使用彩虹配色方案顯示

moreland

每個聲道使用 moreland 配色方案顯示

nebulae

每個聲道使用 nebulae 配色方案顯示

fire

每個聲道使用 fire 配色方案顯示

fiery

fiery

fruit

每個聲道使用 fruit 配色方案顯示

cool

cool

magma

magma

green

green

viridis

viridis

plasma

plasma

cividis

cividis

terrain

每個聲道使用 terrain 配色方案顯示

預設值為 ‘channel’。

scale

指定用於計算強度色彩值的比例。

它接受以下值:

lin’(線性)

linear

sqrt’(平方根)

平方根,預設值

cbrt’(立方根)

立方根

log

logarithmic(對數)

4thrt

四次方根

5thrt

五次方根

預設值為 ‘sqrt’。

size (大小)

指定頻率比例。

它接受以下值:

lin’(線性)

linear

log

logarithmic(對數)

預設值為 ‘lin’。

saturation

設定顯示色彩的飽和度修飾符。負值提供替代的色彩方案。0 表示完全沒有飽和度。飽和度必須在 [-10.0, 10.0] 範圍內。預設值為 1

win_func

設定視窗函數。

它接受以下值:

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

預設值為 hann

方向

設定時間與頻率軸的方向。可以是 verticalhorizontal。預設值為 vertical

overlap

設定重疊視窗的比例。預設值為 0。當值為 1 時,重疊會設定為目前使用的特定視窗函數的建議大小。

增益 (gain)

設定用於計算強度色彩值的比例增益。預設值為 1

data

設定要顯示的資料。可以是 magnitude(預設值)或 phase,或解包裹相位:uphase

rotation (旋轉)

設定長條圖顯示與顯示尺寸的比率。預設值為 0。

start

設定開始頻率,從此頻率開始顯示頻譜圖。預設值為 0

stop

設定停止頻率,到此頻率停止顯示頻譜圖。預設值為 0

fps

設定幀率上限。預設值為 auto,無限制。

圖例

繪製時間軸和頻率軸以及圖例。預設為停用。

動態範圍

設定用於計算強度色彩值的動態範圍。預設值為 120 dBFS。允許範圍為 10 到 200。

limit (限制)

設定輸入音訊樣本音量的上限,單位為 dBFS。預設值為 0 dBFS。允許範圍為 -100 到 100。

opacity

在使用具有 Alpha 元件的像素格式輸出時,設定不透明度強度。

用法與 shows waves 濾鏡非常相似;請參閱該章節中的範例。

39.26.1 範例

  • 具有對數色彩縮放的大視窗
    showspectrum=s=1280x480:scale=log
    
  • 使用 ffplay 針對每個聲道的彩色滑動頻譜的完整範例
    ffplay -f lavfi 'amovie=input.mp3, asplit [a][out1];
                 [a] showspectrum=mode=separate:color=intensity:slide=1:scale=cbrt [out0]'
    

39.27 showspectrumpic

將輸入音訊轉換為單一視訊幀,代表音訊頻譜。

通過第一個輸入。

size, s

指定輸出的視訊大小。有關此選項的語法,請查看 (ffmpeg-utils) 手冊中的「視訊大小」章節。預設值為 4096x2048

o

指定顯示模式。

它接受以下值:

combined

combined

separate’(分離)

separate

預設值為 ‘combined’。

顏色

指定顯示顏色模式。

它接受以下值:

channel

每個聲道以不同的顏色顯示

intensity

每個聲道使用相同的配色方案顯示

rainbow

每個聲道使用彩虹配色方案顯示

moreland

每個聲道使用 moreland 配色方案顯示

nebulae

每個聲道使用 nebulae 配色方案顯示

fire

每個聲道使用 fire 配色方案顯示

fiery

fiery

fruit

每個聲道使用 fruit 配色方案顯示

cool

cool

magma

magma

green

green

viridis

viridis

plasma

plasma

cividis

cividis

terrain

每個聲道使用 terrain 配色方案顯示

預設值為 ‘intensity’。

scale

指定用於計算強度色彩值的比例。

它接受以下值:

lin’(線性)

linear

sqrt’(平方根)

平方根,預設值

cbrt’(立方根)

立方根

log

logarithmic(對數)

4thrt

四次方根

5thrt

五次方根

預設值為 ‘log’。

size (大小)

指定頻率比例。

它接受以下值:

lin’(線性)

linear

log

logarithmic(對數)

預設值為 ‘lin’。

saturation

設定顯示色彩的飽和度修飾符。負值提供替代的色彩方案。0 表示完全沒有飽和度。飽和度必須在 [-10.0, 10.0] 範圍內。預設值為 1

win_func

設定視窗函數。

它接受以下值:

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

預設值為 hann

方向

設定時間與頻率軸的方向。可以是 verticalhorizontal。預設值為 vertical

增益 (gain)

設定用於計算強度色彩值的比例增益。預設值為 1

圖例

繪製時間軸和頻率軸以及圖例。預設為啟用。

rotation (旋轉)

設定長條圖顯示與顯示尺寸的比率。預設值為 0。

start

設定開始頻率,從此頻率開始顯示頻譜圖。預設值為 0

stop

設定停止頻率,到此頻率停止顯示頻譜圖。預設值為 0

動態範圍

設定用於計算強度色彩值的動態範圍。預設值為 120 dBFS。允許範圍為 10 到 200。

limit (限制)

設定輸入音訊樣本音量的上限,單位為 dBFS。預設值為 0 dBFS。允許範圍為 -100 到 100。

opacity

在使用具有 Alpha 元件的像素格式輸出時,設定不透明度強度。

39.27.1 範例

  • 使用 ffmpeg 在 1024x1024 圖片中擷取整個音軌的音訊頻譜圖
    ffmpeg -i audio.flac -lavfi showspectrumpic=s=1024x1024 spectrogram.png
    

39.28 showvolume

將輸入音訊音量轉換為視訊輸出。

通過第一個輸入。

rate, r

設定視訊速率。

b

設定邊框寬度,允許範圍為 [0, 5]。預設值為 1。

f

設定聲道寬度,允許範圍為 [80, 8192]。預設值為 400。

h

設定聲道高度,允許範圍為 [1, 900]。預設值為 20。

f

設定淡化,允許範圍為 [0, 1]。預設值為 0.95。

c

設定音量色彩表達式。

表達式可以使用以下變數

VOLUME

聲道目前最大音量,單位為 dB。

PEAK

目前峰值。

CHANNEL

目前聲道編號,從 0 開始。

t

如果設定,則顯示聲道名稱。預設為啟用。

v

如果設定,則顯示音量值。預設為啟用。

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

設定方向,可以是水平:h 或垂直:v,預設值為 h

s

設定步進大小,允許範圍為 [0, 5]。預設值為 0,表示停用步進。

p

設定背景不透明度,允許範圍為 [0, 1]。預設值為 0。

m

設定計量模式,可以是峰值:p 或均方根值:r,預設值為 p

ds

設定顯示比例,可以是線性:lin 或對數:log,預設值為 lin

dm

以秒為單位。如果設定為 > 0.,則顯示前幾秒最大音量的線條。預設為停用:0.

dmc

最大線條的顏色。當 dm 選項設定為 > 0 時使用。預設值為:orange

39.29 showwaves

將輸入音訊轉換為視訊輸出,代表樣本波形。

通過第一個輸入。

size, s

指定輸出的視訊大小。有關此選項的語法,請查看 (ffmpeg-utils) 手冊中的「視訊大小」章節。預設值為 600x240

o

設定顯示模式。

可用值為

point

為每個樣本繪製一個點。

line

為每個樣本繪製一條垂直線。

p2p

為每個樣本繪製一個點,並在它們之間繪製一條線。

cline

為每個樣本繪製一條置中的垂直線。

預設值為 point

n

設定在同一列印出的樣本數。較大的值會降低幀率。必須是正整數。只有在未明確指定 rate 值時,才能設定此選項。

rate, r

設定(大約)輸出幀率。這是透過設定選項 n 完成的。預設值為 "25"。

split_channels

設定聲道應分開繪製還是重疊繪製。預設值為 0。

mgain

設定以 ’|’ 分隔的顏色,這些顏色將用於繪製每個聲道。

scale

設定振幅縮放。

可用值為

lin’(線性)

線性。

log

對數。

sqrt’(平方根)

平方根。

cbrt’(立方根)

立方根。

預設為線性。

draw

設定繪製模式。這對於設定高 n 值非常有用。

可用值為

scale

縮放每個繪製樣本的像素值。

full

直接繪製每個樣本。

預設值為 scale

39.29.1 範例

  • 同時輸出輸入檔案音訊和對應的視訊表示
    amovie=a.mp3,asplit[out0],showwaves[out1]
    
  • 建立合成訊號並使用 showwaves 顯示,強制幀率為每秒 30 幀
    aevalsrc=sin(1*2*PI*t)*sin(880*2*PI*t):cos(2*PI*200*t),asplit[out0],showwaves=r=30[out1]
    

39.30 showwavespic

將輸入音訊轉換為單一視訊幀,代表樣本波形。

通過第一個輸入。

size, s

指定輸出的視訊大小。有關此選項的語法,請查看 (ffmpeg-utils) 手冊中的「視訊大小」章節。預設值為 600x240

split_channels

設定聲道應分開繪製還是重疊繪製。預設值為 0。

mgain

設定以 ’|’ 分隔的顏色,這些顏色將用於繪製每個聲道。

scale

設定振幅縮放。

可用值為

lin’(線性)

線性。

log

對數。

sqrt’(平方根)

平方根。

cbrt’(立方根)

立方根。

預設為線性。

draw

設定繪製模式。

可用值為

scale

縮放每個繪製樣本的像素值。

full

直接繪製每個樣本。

預設值為 scale

filter

設定濾鏡模式。

可用值為

average

對每個繪製樣本使用平均樣本值。

peak

對每個繪製樣本使用峰值樣本值。

預設值為 average

39.30.1 範例

  • 使用 ffmpeg 在 1024x800 圖片中擷取整個音軌波形的聲道分離表示
    ffmpeg -i audio.flac -lavfi showwavespic=split_channels=1:s=1024x800 waveform.png
    

39.31 sidedata, asidedata

刪除幀邊數據,或根據幀邊數據選擇幀。

此濾波器接受以下選項

o

操作影格元數據。

可以是以下其中之一

設定濾波器的操作模式。

選擇每個具有 type 邊數據的幀。

修改已存在的金鑰的值。

刪除 type 的邊數據。如果未設定 type,則刪除幀中的所有邊數據。

type

設定與所有模式一起使用的邊數據類型。必須為 select 模式設定。有關幀邊數據類型列表,請參閱 libavutil/frame.h 中的 AVFrameSideDataType 列舉。例如,要選擇 AV_FRAME_DATA_PANSCAN 邊數據,您必須指定 PANSCAN

39.32 spectrumsynth

從 2 個輸入視訊頻譜合成音訊,第一個輸入流代表跨時間的幅度,第二個輸入流代表跨時間的相位。濾鏡將從視訊中顯示的頻域轉換回音訊輸出中呈現的時域。

此濾鏡主要用於反轉處理過的 showspectrum 濾鏡輸出,但也可用於從其他頻譜圖合成聲音。但在這種情況下,如果相位數據不可用,則結果會很差,因為在這種情況下需要重新建立相位數據,通常只是從隨機雜訊重新建立。為了獲得最佳結果,請對幅度視訊使用僅灰階輸出(showspectrum 濾鏡中的 channel 色彩模式)和 log 比例,對相位視訊使用 lin 比例。為了產生相位,對於第二個視訊,請使用 data 選項。輸入視訊通常應使用 fullframe 滑動模式,因為這樣可以節省解碼視訊所需的資源。

通過第一個輸入。

sample_rate

指定輸出音訊的取樣率,產生頻譜的音訊取樣率可能不同。

channels

設定輸入視訊頻譜中表示的聲道數。

scale

設定產生幅度輸入頻譜時使用的比例。可以是 linlog。預設值為 log

slide

設定產生輸入頻譜時使用的滑動方式。可以是 replacescrollfullframerscroll。預設值為 fullframe

win_func

設定用於重新合成的視窗函數。

overlap

設定視窗重疊。範圍為 [0, 1]。預設值為 1,表示將選取所選視窗函數的最佳重疊。

方向

設定輸入視訊的方向。可以是 verticalhorizontal。預設值為 vertical

39.32.1 範例

  • 首先從音訊建立幅度和相位視訊,假設音訊是立體聲,取樣率為 44100,然後使用 spectrumsynth 將視訊重新合成為音訊
    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
    

39.33 split, asplit

將輸入分割成多個相同的輸出。

asplit 適用於音訊輸入,split 適用於視訊。

濾鏡接受單一參數,該參數指定輸出數量。如果未指定,則預設為 2。

39.33.1 範例

  • 從同一個輸入建立兩個獨立的輸出
    [in] split [out0][out1]
    
  • 若要建立 3 個或更多輸出,您需要指定輸出數量,例如
    [in] asplit=3 [out0][out1][out2]
    
  • 從同一個輸入建立兩個獨立的輸出,一個裁剪過,一個填充過
    [in] split [splitout1][splitout2];
    [splitout1] crop=100:100:0:0    [cropout];
    [splitout2] pad=200:200:100:100 [padout];
    
  • 使用 ffmpeg 建立輸入音訊的 5 個副本
    ffmpeg -i INPUT -filter_complex asplit=5 OUTPUT
    

39.34 zmq, azmq

接收透過 libzmq 用戶端傳送的命令,並將它們轉發到濾鏡圖中的濾鏡。

zmqazmq 作為直通濾鏡工作。zmq 必須插入兩個視訊濾鏡之間,azmq 必須插入兩個音訊濾鏡之間。兩者都能够向任何濾鏡類型傳送訊息。

要啟用這些濾鏡,您需要安裝 libzmq 程式庫和標頭,並使用 --enable-libzmq 配置 FFmpeg。

有關 libzmq 的更多資訊,請參閱:http://www.zeromq.org/

zmqazmq 濾鏡作為 libzmq 伺服器工作,該伺服器接收透過 bind_address(或縮寫 "b")選項定義的網路介面傳送的訊息。此選項的預設值為 tcp://127.0.0.1:5555。您可能需要根據您的需求更改此值,但不要忘記跳脫任何 ’:’ 符號(請參閱 濾鏡圖跳脫)。

接收到的訊息必須採用以下格式

TARGET COMMAND [ARG]

TARGET 指定命令的目標,通常是濾鏡類別的名稱或特定的濾鏡實例名稱。預設濾鏡實例名稱使用模式 ‘Parsed_<filter_name>_<index>’,但您可以使用 ‘filter_name@id’ 語法覆蓋它(請參閱 濾鏡圖語法)。

COMMAND 指定目標濾鏡的命令名稱。

ARG 是可選的,並指定給定 COMMAND 的可選引數列表。

接收到訊息後,訊息會被處理,並且相應的命令會注入到濾鏡圖中。根據結果,濾鏡將向客戶端發送回覆,採用以下格式

ERROR_CODE ERROR_REASON
MESSAGE

MESSAGE 是可選的。

39.34.1 範例

查看 tools/zmqsend 以取得 zmq 用戶端的範例,該用戶端可用於傳送由這些濾鏡處理的命令。

考慮由 ffplay 產生的以下濾鏡圖。在此範例中,最後一個 overlay 濾鏡具有實例名稱。所有其他濾鏡都將具有預設實例名稱。

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 "

要更改視訊左側的顏色,可以使用以下命令

echo Parsed_color_0 c yellow | tools/zmqsend

要更改右側

echo Parsed_color_1 c pink | tools/zmqsend

要更改右側的位置

echo overlay@my x 150 | tools/zmqsend

40 多媒體來源

以下是目前可用的多媒體來源的描述。

40.1 amovie

這與 movie 來源相同,只是它預設選擇音訊流。

40.2 avsynctest

產生音訊/視訊同步測試。

產生的串流會定期顯示閃爍視訊幀並在音訊中發出嗶聲。有助於檢查 A/V 同步問題。

它接受以下選項

size, s

設定輸出視訊大小。預設值為 hd720

framerate, fr

設定輸出視訊幀率。預設值為 30

samplerate, sr

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

振幅,a

設定輸出音訊嗶聲振幅。預設值為 0.7

period, p

設定輸出音訊嗶聲週期,單位為秒。預設值為 3

delay, dl

設定輸出視訊閃爍延遲,單位為幀數。預設值為 0

cycle, c

啟用視訊延遲循環,預設為停用。

release

設定串流輸出持續時間。預設情況下,持續時間不受限制。

fg, bg, ag

設定前景/背景/附加顏色。

40.2.1 指令

此來源支援將上述某些選項作為 <a href="#commands">commands</a>。

40.3 movie

從影片容器讀取音訊和/或視訊串流。

它接受以下參數

filename

要讀取的資源名稱(不一定是檔案;也可以是透過某些協定存取的裝置或串流)。

format_name, f

指定要讀取的影片的格式,可以是容器名稱或輸入裝置。如果未指定,則格式會從 movie_name 或透過探測來猜測。

seek_point, sp

指定搜尋點,單位為秒。幀將從此搜尋點開始輸出。參數使用 av_strtod 評估,因此數值可以附加 IS 後綴。預設值為 "0"。

streams, s

指定要讀取的串流。可以指定多個串流,以 "+" 分隔。然後,來源將具有與之相同的多個輸出,順序相同。語法在 (ffmpeg) 手冊中的「串流指定器」章節中說明。兩個特殊名稱 "dv" 和 "da" 分別指定預設(最適合的)視訊和音訊串流。預設值為 "dv",如果濾鏡作為 "amovie" 呼叫,則預設值為 "da"。

stream_index, si

指定要讀取的視訊串流的索引。如果值為 -1,則會自動選擇最合適的視訊串流。預設值為 "-1"。已棄用。如果濾鏡稱為 "amovie",它將選擇音訊而不是視訊。

loop

指定按順序讀取串流的次數。如果值為 0,則串流將無限循環。預設值為 "1"。

請注意,當影片循環時,來源時間戳記不會更改,因此它將產生非單調遞增的時間戳記。

discontinuity

指定幀之間的時間差,超過此時間差的點被視為時間戳記不連續點,該不連續點會透過調整後續時間戳記來移除。

dec_threads

指定用於解碼的線程數

format_opts

指定已開啟檔案的格式選項。格式選項可以指定為以 ’:’ 分隔的 key=value 對列表。以下範例顯示如何新增 protocol_whitelist 和 protocol_blacklist 選項

ffplay -f lavfi
"movie=filename='1.sdp':format_opts='protocol_whitelist=file,rtp,udp\:protocol_blacklist=http'"

它允許將第二個視訊覆蓋在濾鏡圖主輸入的頂部,如此圖所示

input -----------> deltapts0 --> overlay --> output
                                    ^
                                    |
movie --> scale--> deltapts1 -------+

40.3.1 範例

  • 從 AVI 檔案 in.avi 的開頭跳過 3.2 秒,並將其覆蓋在標記為 "in" 的輸入頂部
    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]
    
  • 從 video4linux2 裝置讀取,並將其覆蓋在標記為 "in" 的輸入頂部
    movie=/dev/video0:f=video4linux2, scale=180:-1, setpts=PTS-STARTPTS [over];
    [in] setpts=PTS-STARTPTS [main];
    [main][over] overlay=16:16 [out]
    
  • 從 dvd.vob 讀取第一個視訊串流和 ID 為 0x81 的音訊串流;視訊連接到名為 "video" 的墊,音訊連接到名為 "audio" 的墊
    movie=dvd.vob:s=v:0+#0x81 [video] [audio]
    

40.3.2 指令

movie 和 amovie 都支援以下命令

seek

使用 "av_seek_frame" 執行搜尋。語法為:seek stream_index|timestamp|flags

  • stream_index:如果 stream_index 為 -1,則會選擇預設串流,並且 timestamp 會自動從 AV_TIME_BASE 單位轉換為串流特定的 time_base。
  • timestamp:AVStream.time_base 單位或(如果未指定串流)AV_TIME_BASE 單位中的時間戳記。
  • flags:選擇方向和搜尋模式的旗標。
get_duration

取得影片持續時間,單位為 AV_TIME_BASE。

41 外部函式庫

FFmpeg 可以與許多外部程式庫掛鉤,以新增對更多格式的支援。預設情況下不使用它們中的任何一個,它們的使用必須透過將適當的旗標傳遞給 ./configure 來明確請求。

41.1 開放媒體聯盟 (AOM)

FFmpeg 可以使用 AOM 程式庫進行 AV1 解碼和編碼。

前往 http://aomedia.org/ 並按照說明安裝程式庫。然後將 --enable-libaom 傳遞給 configure 以啟用它。

41.2 AMD AMF/VCE

FFmpeg 可以使用 AMD Advanced Media Framework 程式庫在具有視訊編碼引擎 (VCE) 的硬體上加速 H.264 和 HEVC(僅限 Windows)編碼。

要啟用支援,您必須從 https://github.com/GPUOpen-LibrariesAndSDKs/AMF.git 取得 AMF 框架標頭檔案(版本 1.4.9+)。

在系統包含路徑中建立一個 AMF/ 目錄。將 AMF/amf/public/include/ 的內容複製到該目錄中。然後使用 --enable-amf 配置 FFmpeg。

amf 編碼器的初始化按以下順序進行:1) 嘗試通過 dx11 初始化 (僅限 Windows) 2) 嘗試通過 dx9 初始化 (僅限 Windows) 3) 嘗試通過 vulkan 初始化

若要在 linux 上使用 h.264(AMD VCE) 編碼器,需要 amdgru-pro 版本 19.20+ 和 amf-amdgpu-pro 套件 (amdgru-pro 包含,但不會自動安裝)。

此驅動程式可以使用官方 amd 驅動程式檔案中的 amdgpu-pro-install 腳本安裝。

41.3 AviSynth

FFmpeg 可以讀取 AviSynth 腳本作為輸入。若要啟用支援,在安裝 AviSynth+ 提供的標頭檔後,傳遞 --enable-avisynth 以進行設定。AviSynth+ 可以設定為僅安裝標頭檔,方法是傳遞 -DHEADERS_ONLY:bool=on 給正常的 CMake 基礎建置系統,或是使用提供的 GNUmakefile

對於 Windows,支援的 AviSynth 變體為:32 位元建置的 AviSynth 2.6 RC1 或更高版本,以及 32 位元和 64 位元建置的 AviSynth+ r1718 或更高版本

對於 Linux、macOS 和 BSD,唯一支援的 AviSynth 變體是 AviSynth+,從 3.5 版開始。

在 2016 年,AviSynth+ 新增了使用 GCC 建置的支援。然而,由於 Windows 呼叫慣例的特殊性,32 位元 GCC 建置的 AviSynth+ 與典型的 32 位元建置的 FFmpeg 不相容。

預設情況下,FFmpeg 假設與 32 位元 MSVC 建置的 AviSynth+ 相容,因為這是最廣泛使用且根深蒂固的建置組態。使用者可以覆寫此設定,並透過在設定 FFmpeg 時,將 -DAVSC_WIN32_GCC32 傳遞給 --extra-cflags,來啟用對 32 位元 GCC 建置的 AviSynth+ 的支援。

64 位元建置的 FFmpeg 不受影響,並且可以使用 MSVC 或 GCC 建置的 AviSynth+,而無需任何特殊標記。

AviSynth(+) 是動態載入的。發行商可以使用 --enable-avisynth 建置 FFmpeg,而二進位檔將可運作,無論最終使用者是否安裝了 AviSynth。如果/當最終使用者想要使用 AviSynth 腳本時,他們可以安裝 AviSynth(+),而 FFmpeg 將能夠找到並使用它來開啟腳本。

41.4 Chromaprint

FFmpeg 可以使用 Chromaprint 函式庫來產生音訊指紋。傳遞 --enable-chromaprint 以進行設定來啟用它。請參閱 https://acoustid.org/chromaprint

41.5 codec2

FFmpeg 可以使用 codec2 函式庫進行 codec2 解碼和編碼。目前沒有原生解碼器,因此必須使用 libcodec2 進行解碼。

前往 http://freedv.org/,下載 "Codec 2 source archive"。使用 CMake 建置並安裝。Debian 使用者可以改為安裝 libcodec2-dev 套件。一旦安裝 libcodec2,您可以傳遞 --enable-libcodec2 以進行設定來啟用它。

使用 codec2 最簡單的方式是使用 .c2 檔案,因為它們包含解碼所需的模式資訊。若要編碼此類檔案,請使用 .c2 副檔名,並給 libcodec2 編碼器 -mode 選項:ffmpeg -i input.wav -mode 700C output.c2。播放就像 ffplay output.c2 一樣簡單。如需支援模式的清單,請執行 ffmpeg -h encoder=libcodec2。也支援原始 codec2 檔案。若要理解它們,需要將使用的模式指定為格式選項:ffmpeg -f codec2raw -mode 1300 -i input.raw output.wav

41.6 dav1d

FFmpeg 可以使用 dav1d 函式庫進行 AV1 視訊解碼。

前往 https://code.videolan.org/videolan/dav1d 並按照安裝函式庫的指示操作。然後傳遞 --enable-libdav1d 以進行設定來啟用它。

41.7 davs2

FFmpeg 可以使用 davs2 函式庫進行 AVS2-P2/IEEE1857.4 視訊解碼。

前往 https://github.com/pkuvcl/davs2 並按照安裝函式庫的指示操作。然後傳遞 --enable-libdavs2 以進行設定來啟用它。

libdavs2 採用 GNU 公共授權條款第 2 版或更高版本 (詳情請參閱 https://gnu.dev.org.tw/licenses/old-licenses/gpl-2.0.html),您必須將 FFmpeg 的授權升級到 GPL 才能使用它。

41.8 uavs3d

FFmpeg 可以使用 uavs3d 函式庫進行 AVS3-P2/IEEE1857.10 視訊解碼。

前往 https://github.com/uavs3/uavs3d 並按照安裝函式庫的指示操作。然後傳遞 --enable-libuavs3d 以進行設定來啟用它。

41.9 Game Music Emu

FFmpeg 可以使用 Game Music Emu 函式庫來讀取支援的電玩遊戲音樂檔案格式的音訊。傳遞 --enable-libgme 以進行設定來啟用它。請參閱 https://bitbucket.org/mpyne/game-music-emu/overview

41.10 Intel QuickSync Video

FFmpeg 可以使用 Intel QuickSync Video (QSV) 來加速多種編碼解碼器的解碼和編碼。若要使用 QSV,FFmpeg 必須與 libmfx 分派器連結,該分派器會載入實際的解碼函式庫。

分派器是開放原始碼的,可以從 https://github.com/lu-zero/mfx_dispatch.git 下載。FFmpeg 需要使用 --enable-libmfx 選項進行設定,且 pkg-config 需要能夠找到分派器的 .pc 檔案。

41.11 Kvazaar

FFmpeg 可以使用 Kvazaar 函式庫進行 HEVC 編碼。

前往 https://github.com/ultravideo/kvazaar 並按照安裝函式庫的指示操作。然後傳遞 --enable-libkvazaar 以進行設定來啟用它。

41.12 LAME

FFmpeg 可以使用 LAME 函式庫進行 MP3 編碼。

前往 http://lame.sourceforge.net/ 並按照安裝函式庫的指示操作。然後傳遞 --enable-libmp3lame 以進行設定來啟用它。

41.13 LCEVCdec

FFmpeg 可以使用 liblcevc_dec 函式庫在支援的位元串流上進行 LCEVC 增強層解碼。

前往 https://github.com/v-novaltd/LCEVCdec 並按照安裝函式庫的指示操作。然後傳遞 --enable-liblcevc-dec 以進行設定來啟用它。

LCEVCdec 採用 BSD-3-Clause-Clear 授權條款。

41.14 libilbc

iLBC 是一種窄頻語音編碼解碼器,Google 已將其作為 WebRTC 專案的一部分免費提供。libilbc 是 iLBC 編碼解碼器的封裝友善副本。FFmpeg 可以使用 libilbc 函式庫進行 iLBC 解碼和編碼。

前往 https://github.com/TimothyGu/libilbc 並按照安裝函式庫的指示操作。然後傳遞 --enable-libilbc 以進行設定來啟用它。

41.15 libjxl

JPEG XL 是一種影像格式,旨在完全取代傳統 JPEG,以延長使用壽命。請參閱 https://jpegxl.info/ 以取得更多資訊,並參閱 https://github.com/libjxl/libjxl 以取得函式庫原始碼。您可以傳遞 --enable-libjxl 以進行設定,以便啟用 libjxl 包裝器。

41.16 libvpx

FFmpeg 可以使用 libvpx 函式庫進行 VP8/VP9 解碼和編碼。

前往 http://www.webmproject.org/ 並按照安裝函式庫的指示操作。然後傳遞 --enable-libvpx 以進行設定來啟用它。

41.17 ModPlug

FFmpeg 可以使用此函式庫 (源自 Modplug-XMMS) 從類似 MOD 的音樂檔案讀取。請參閱 https://github.com/Konstanty/libmodplug。傳遞 --enable-libmodplug 以進行設定來啟用它。

41.18 OpenCORE、VisualOn 和 Fraunhofer 函式庫

Spun off Google Android 原始碼、OpenCore、VisualOn 和 Fraunhofer 函式庫為許多音訊編碼解碼器提供編碼器。

OpenCORE 和 VisualOn 函式庫採用 Apache License 2.0 授權條款 (詳情請參閱 http://www.apache.org/licenses/LICENSE-2.0),這與 LGPL 第 2.1 版和 GPL 第 2 版不相容。您必須將 FFmpeg 的授權升級到 LGPL 第 3 版 (或者如果您已啟用 GPL 組件,則升級到 GPL 第 3 版),方法是傳遞 --enable-version3 以進行設定,才能使用它。

Fraunhofer AAC 函式庫的授權與 GPL 不相容。因此,對於 GPL 建置,您必須傳遞 --enable-nonfree 以進行設定,才能使用它。據我們所知,它與 LGPL 相容。

41.18.1 OpenCORE AMR

FFmpeg 可以使用 OpenCORE 函式庫進行 AMR-NB 解碼/編碼和 AMR-WB 解碼。

前往 http://sourceforge.net/projects/opencore-amr/ 並按照安裝函式庫的指示操作。然後傳遞 --enable-libopencore-amrnb 和/或 --enable-libopencore-amrwb 以進行設定來啟用它們。

41.18.2 VisualOn AMR-WB 編碼器函式庫

FFmpeg 可以使用 VisualOn AMR-WBenc 函式庫進行 AMR-WB 編碼。

前往 http://sourceforge.net/projects/opencore-amr/ 並按照安裝函式庫的指示操作。然後傳遞 --enable-libvo-amrwbenc 以進行設定來啟用它。

41.18.3 Fraunhofer AAC 函式庫

FFmpeg 可以使用 Fraunhofer AAC 函式庫進行 AAC 解碼和編碼。

前往 http://sourceforge.net/projects/opencore-amr/ 並按照安裝函式庫的指示操作。然後傳遞 --enable-libfdk-aac 以進行設定來啟用它。

41.18.4 LC3 函式庫

FFmpeg 可以使用 Google LC3 函式庫進行 LC3 解碼和編碼。

前往 https://github.com/google/liblc3/ 並按照安裝函式庫的指示操作。然後傳遞 --enable-liblc3 以進行設定來啟用它。

41.19 OpenH264

FFmpeg 可以使用 OpenH264 函式庫進行 H.264 解碼和編碼。

前往 http://www.openh264.org/ 並按照安裝函式庫的指示操作。然後傳遞 --enable-libopenh264 以進行設定來啟用它。

對於解碼,此函式庫比 libavcodec 中的內建解碼器更受限;目前,此函式庫缺乏對 B 幀和一些其他 main/high profile 功能的支援。(目前僅支援 constrained baseline profile 和 CABAC。) 使用它主要用於測試,以及利用 Cisco 的專利組合授權 (http://www.openh264.org/BINARY_LICENSE.txt)。

41.20 OpenJPEG

FFmpeg 可以使用 OpenJPEG 函式庫來解碼/編碼 J2K 視訊。前往 http://www.openjpeg.org/ 以取得函式庫並按照安裝指示操作。若要在 FFmpeg 中啟用 OpenJPEG,請傳遞 --enable-libopenjpeg./configure

41.21 rav1e

FFmpeg 可以透過其 C 綁定使用 rav1e (Rust AV1 Encoder) 來編碼視訊。前往 https://github.com/xiph/rav1e/ 並按照指示建置 C 函式庫。若要在 FFmpeg 中啟用 rav1e,請傳遞 --enable-librav1e./configure

41.22 SVT-AV1

FFmpeg 可以使用 Scalable Video Technology for AV1 函式庫進行 AV1 編碼。

前往 https://gitlab.com/AOMediaCodec/SVT-AV1/ 並按照安裝函式庫的指示操作。然後傳遞 --enable-libsvtav1 以進行設定來啟用它。

41.23 TwoLAME

FFmpeg 可以使用 TwoLAME 函式庫進行 MP2 編碼。

前往 http://www.twolame.org/ 並按照安裝函式庫的指示操作。然後傳遞 --enable-libtwolame 以進行設定來啟用它。

41.24 VapourSynth

FFmpeg 可以讀取 VapourSynth 腳本作為輸入。若要啟用支援,傳遞 --enable-vapoursynth 以進行設定。Vapoursynth 是透過 pkg-config 偵測到的。支援 42 或更高版本。請參閱 http://www.vapoursynth.com/

由於安全性考量,Vapoursynth 腳本不會自動偵測,因此必須強制輸入格式。對於 ff* CLI 工具,請在輸入 -i yourscript.vpy 之前新增 -f vapoursynth

41.25 x264

FFmpeg 可以使用 x264 函式庫進行 H.264 編碼。

前往 http://www.videolan.org/developers/x264.html 並按照安裝函式庫的指示操作。然後傳遞 --enable-libx264 以進行設定來啟用它。

x264 採用 GNU 公共授權條款第 2 版或更高版本 (詳情請參閱 https://gnu.dev.org.tw/licenses/old-licenses/gpl-2.0.html),您必須將 FFmpeg 的授權升級到 GPL 才能使用它。

41.26 x265

FFmpeg 可以使用 x265 函式庫進行 HEVC 編碼。

前往 http://x265.org/developers.html 並按照安裝函式庫的指示操作。然後傳遞 --enable-libx265 以進行設定來啟用它。

x265 採用 GNU 公共授權條款第 2 版或更高版本 (詳情請參閱 https://gnu.dev.org.tw/licenses/old-licenses/gpl-2.0.html),您必須將 FFmpeg 的授權升級到 GPL 才能使用它。

41.27 xavs

FFmpeg 可以使用 xavs 函式庫進行 AVS 編碼。

前往 http://xavs.sf.net/ 並按照安裝函式庫的指示操作。然後傳遞 --enable-libxavs 以進行設定來啟用它。

41.28 xavs2

FFmpeg 可以使用 xavs2 函式庫進行 AVS2-P2/IEEE1857.4 視訊編碼。

前往 https://github.com/pkuvcl/xavs2 並按照安裝函式庫的指示操作。然後傳遞 --enable-libxavs2 以進行設定來啟用它。

libxavs2 採用 GNU 公共授權條款第 2 版或更高版本 (詳情請參閱 https://gnu.dev.org.tw/licenses/old-licenses/gpl-2.0.html),您必須將 FFmpeg 的授權升級到 GPL 才能使用它。

41.29 eXtra-fast Essential Video Encoder (XEVE)

FFmpeg 可以使用 XEVE 函式庫進行 EVC 視訊編碼。

前往 https://github.com/mpeg5/xeve 並按照安裝 XEVE 函式庫的指示操作。然後傳遞 --enable-libxeve 以進行設定來啟用它。

41.30 eXtra-fast Essential Video Decoder (XEVD)

FFmpeg 可以使用 XEVD 函式庫進行 EVC 視訊解碼。

前往 https://github.com/mpeg5/xevd 並按照安裝 XEVD 函式庫的指示操作。然後傳遞 --enable-libxevd 以進行設定來啟用它。

41.31 ZVBI

ZVBI 是一個 VBI 解碼函式庫,FFmpeg 可以使用它來解碼 DVB 圖文電視頁面和 DVB 圖文電視字幕。

前往 http://sourceforge.net/projects/zapping/ 並按照安裝函式庫的指示操作。然後傳遞 --enable-libzvbi 以進行設定來啟用它。

42 支援的檔案格式、編碼器或功能

您可以使用 -formats-codecs 選項來取得詳盡的清單。

42.1 檔案格式

FFmpeg 透過 libavformat 函式庫支援以下檔案格式

名稱編碼解碼註解
3dostrX
4xmX4X Technologies 格式,用於某些遊戲。
8088flex TMVX
AAXXAudible Enhanced Audio 格式,用於有聲書。
AAXAudible Format 2、3 和 4,用於有聲書。
ACT VoiceX包含 G.729 音訊
Adobe FilmstripXX
音訊 IFF (AIFF)XX
American Laser Games MMX多媒體格式,用於 Mad Dog McCree 等遊戲。
3GPP AMRXX
Amazing Studio Packed Animation FileX多媒體格式,用於遊戲 Heart Of Darkness。
Apple HTTP Live StreamingX
Artworx Data FormatX
Interplay ACMX僅限音訊格式,用於某些 Interplay 遊戲。
ADPX音訊格式,用於 Nintendo Gamecube。
AFCX音訊格式,用於 Nintendo Gamecube。
ADS/SS2X音訊格式,用於 PS2。
APNGXX
ASFXXAdvanced / Active Streaming Format (進階/主動串流格式)。
ASTXX音訊格式,用於 Nintendo Wii。
AVIXX
AviSynthX
AVRX音訊格式,用於 Mac。
AVSX多媒體格式,用於 Creature Shock 遊戲。
Beam Software SIFFX音訊和視訊格式,用於 Beam Software 的某些遊戲。
Bethesda Softworks VIDX用於 Bethesda Softworks 的某些遊戲。
Binary text (二進位文字)X
BinkX多媒體格式,用於許多遊戲。
Bink AudioX僅限音訊多媒體格式,用於某些遊戲。
Bitmap Brothers JVX用於 Z 和 Z95 遊戲。
BRPXArgonaut Games 格式。
Brute Force & IgnoranceX用於遊戲 Flash Traffic: City of Angels。
BFSTMX音訊格式,用於 Nintendo WiiU (基於 BRSTM)。
BRSTMX音訊格式,用於 Nintendo Wii。
BW64XBroadcast Wave 64bit (廣播波形 64 位元)。
BWFXX
codec2 (raw)XX必須給定 -mode 格式選項才能正確解碼。
codec2 (.c2 files)XX包含具有版本和模式資訊的標頭,簡化播放。
CRI ADXXX僅限音訊格式,用於家用遊戲機視訊遊戲。
CRI AIXX
CRI HCAX僅限音訊格式,用於家用遊戲機視訊遊戲。
Discworld II BMVX
Interplay C93X用於 Interplay 的遊戲 Cyberia。
Delphine Software International CINX多媒體格式,用於 Delphine Software 遊戲。
Digital Speech Standard (DSS) (數位語音標準)X
CD+GX視訊格式,用於 CD+G 卡拉 OK 光碟
Phantom CineX
Commodore CDXLXAmiga CD 視訊格式
Core Audio FormatXXApple Core Audio Format (Apple 核心音訊格式)
CRC testing format (CRC 測試格式)X
Creative VoiceXX為 Sound Blaster Pro 建立。
CRYO APCX音訊格式,用於 CRYO Interactive Entertainment 的某些遊戲。
D-Cinema audio (D-Cinema 音訊)XX
Deluxe Paint AnimationX
DCSTRX
DFAX此格式用於 Chronomaster 遊戲
DirectDraw SurfaceX
DSD Stream File (DSF) (DSD 串流檔案)X
DV video (DV 視訊)XX
DXAX此格式用於 Feeble Files 遊戲的非 Windows 版本,以及為了搭配 ScummVM 使用而重新封裝的不同遊戲過場動畫。
美商藝電 cdataX
美商藝電多媒體X用於多款 EA 遊戲;檔案副檔名如 WVE 和 UV2。
Ensoniq Paris 音訊檔案X
FFM (FFserver 即時饋送)XX
Flash (SWF)XX
Flash 9 (AVM2)XX僅解碼嵌入式音訊。
FLI/FLC/FLX 動畫X.fli/.flc 檔案
Flash 影片 (FLV)XXMacromedia Flash 影片檔案
framecrc 測試格式X
FunCom ISSX用於 FunCom 多款遊戲的音訊格式,例如《The Longest Journey》。
G.723.1XX
G.726X左對齊和右對齊皆可。
G.729 BITXX
G.729 rawX
GENHX用於多款遊戲的音訊格式。
GIF 動畫XX
GXFXX通用交換格式 SMPTE 360M,Thomson Grass Valley 播放伺服器使用。
HNMX僅支援版本 4,Cryo Interactive 的部分遊戲使用
iCEDraw 檔案X
ICOXXMicrosoft Windows ICO
id Quake II CIN 影片X
id RoQXX用於《Quake III》、《Jedi Knight 2》和其他電腦遊戲。
IEC61937 封裝XX
IFFX交換檔案格式
IFVX部分舊型閉路電視數位錄影機使用的格式。
iLBCXX
Interplay MVEX用於多款 Interplay 電腦遊戲的格式。
Iterated Systems ClearVideoX僅 I 影格
IV8XIndigoVision 8000 視訊伺服器產生的格式。
IVF (On2)XXlibvpx 使用的格式
網際網路影片錄製X
IRCAMXX
LAFXLimitless Audio Format
LATMXX
LMLM4XLinux Media Labs MPEG-4 PCI 板卡使用
LOASX包含 LATM 多工 AAC 音訊
LRCXX
LVFX
LXFXVR 原生串流格式,Leitch/Harris 視訊伺服器使用。
Magic Lantern Video (MLV)X
MatroskaXX
Matroska 音訊X
FFmpeg metadataXX文字格式的中繼資料。
MAXIS XAX用於《模擬城市 3000》;檔案副檔名 .xa。
MCAXCapcom 部分遊戲使用;檔案副檔名 .mca。
MD StudioX
Metal Gear Solid: The Twin SnakesX
Megalux FrameXMegalux Ultimate Paint 使用
MobiClip MODSX
MobiClip MOFLEXX
Mobotix .mxgX
Monkey’s AudioX
Motion Pixels MVIX
MOV/QuickTime/MP4XX支援 3GP、3GP2、PSP、iPod 變體
MP2XX
MP3XX
MPEG-1 系統XX多工音訊和視訊,支援 VCD 格式
MPEG-PS (程式串流)XX亦稱為 VOB 檔案,支援 SVCD 和 DVD 格式
MPEG-TS (傳輸串流)XX亦稱為 DVB 傳輸串流
MPEG-4XXMPEG-4 是 QuickTime 的變體。
MSFXPS3 上使用的音訊格式。
Mirillis FIC 影片X不呈現游標。
MIDI Sample Dump StandardX
MIME multipart JPEGX
MSN TCP 網路攝影機XMSN Messenger 網路攝影機串流使用。
MTVX
MusepackX
Musepack SV8X
Material eXchange Format (MXF)XXSMPTE 377M,D-Cinema、廣播產業使用。
Material eXchange Format (MXF),D-10 MappingXXSMPTE 386M,D-10/IMX Mapping。
NC 攝影機饋送XNC (AVIP NC4600) 攝影機串流
NIST SPeech HEader REsourcesX
Computerized Speech Lab NSPX
NTT TwinVQ (VQF)X日本電信電話公司 TwinVQ。
Nullsoft Streaming VideoX
NuppelVideoX
NUTXXNUT 開放容器格式
OggXX
Playstation Portable PMPX
Portable Voice FormatX
RK Audio (RKA)X
TechnoTrend PVAXTechnoTrend DVB PCI 板卡使用。
QCPX
raw ADTS (AAC)XX
raw AC-3XX
raw AMR-NBX
raw AMR-WBX
raw APACX
raw aptXXX
raw aptX HDXX
raw BonkX
raw Chinese AVS videoXX
raw DFPWMXX
raw DiracXX
raw DNxHDXX
raw DTSXX
raw DTS-HDX
raw E-AC-3XX
raw EVCXX
raw FLACXX
raw GSMX
raw H.261XX
raw H.263XX
raw H.264XX
raw HEVCXX
raw Ingenient MJPEGX
raw MJPEGXX
raw MLPX
raw MPEGX
raw MPEG-1X
raw MPEG-2X
raw MPEG-4XX
raw NULLX
raw videoXX
raw id RoQX
raw OBUXX
raw OSQX
raw SBCXX
raw ShortenX
raw TAKX
raw TrueHDXX
raw VC-1XX
raw PCM A-lawXX
raw PCM mu-lawXX
raw PCM Archimedes VIDCXX
raw PCM signed 8 bitXX
raw PCM signed 16 bit big-endianXX
raw PCM signed 16 bit little-endianXX
raw PCM signed 24 bit big-endianXX
raw PCM signed 24 bit little-endianXX
raw PCM signed 32 bit big-endianXX
raw PCM signed 32 bit little-endianXX
raw PCM signed 64 bit big-endianXX
raw PCM signed 64 bit little-endianXX
raw PCM unsigned 8 bitXX
raw PCM unsigned 16 bit big-endianXX
raw PCM unsigned 16 bit little-endianXX
raw PCM unsigned 24 bit big-endianXX
raw PCM unsigned 24 bit little-endianXX
raw PCM unsigned 32 bit big-endianXX
raw PCM unsigned 32 bit little-endianXX
raw PCM 16.8 floating point little-endianX
raw PCM 24.0 floating point little-endianX
raw PCM floating-point 32 bit big-endianXX
raw PCM floating-point 32 bit little-endianXX
raw PCM floating-point 64 bit big-endianXX
raw PCM floating-point 64 bit little-endianXX
RDTX
REDCODE R3DXRED Digital 相機使用的檔案格式,包含 JPEG 2000 影格和 PCM 音訊。
RealMediaXX
RedirectorX
RedSparkX
Renderware TeXture DictionaryX
Resolume DXVXX僅支援 DXT1 (一般品質,無 Alpha) 材質格式的編碼。
RF64X
RL2XEntertainment Software Partners 部分遊戲使用的音訊和視訊格式。
RPL/ARMovieX
Lego Mindstorms RSOXX
RSDX
RTMPXX透過將串流發佈至 RTMP 伺服器來執行輸出
RTPXX
RTSPXX
Sample Dump eXchangeX
SAPXX
SBGX
SDNSX
SDPX
SERX
Digital Pictures SGAX
Sega FILM/CPKXX多款 Sega Saturn 家用主機遊戲使用。
Silicon Graphics MovieX
Sierra SOLXSierra Online 遊戲中使用的 .sol 檔案。
Sierra VMDXSierra CD-ROM 遊戲中使用。
SmackerX多媒體格式,用於許多遊戲。
SMJPEGXXLoki 特定遊戲移植版本中使用。
SMPTE 337M 封裝X
SmushXLucasArts 部分遊戲使用的多媒體格式。
Sony OpenMG (OMA)XXSony Sonic Stage 和 Sony Vegas 中使用的音訊格式。
Sony PlayStation STRX
Sony Wave64 (W64)XX
SoX 原生格式XX
SUN AU 格式XX
SUP raw PGS 字幕XX
SVAGXKonami PS2 遊戲中使用的音訊格式。
TDSCX
文字檔案X
THPXNintendo GameCube 上使用。
Tiertex Limited SEQXDOS CD-ROM 版本遊戲《Flashback》中使用的 Tiertex .seq 檔案。
True AudioXX
VAGX多款 Sony PS2 遊戲中使用的音訊格式。
VC-1 測試位元串流XX
Vidvox HapXX
VivoX
VPKXSony PS 遊戲中使用的音訊格式。
Marble WADYX
WAVXX
Waveform ArchiverX
WavPackXX
WebMXX
Windows Televison (WTV)XX
Wing Commander III 電影XOrigin 的電腦遊戲《Wing Commander III》中使用的多媒體格式。
Westwood Studios 音訊XXWestwood Studios 遊戲中使用的多媒體格式。
Westwood Studios VQAXWestwood Studios 遊戲中使用的多媒體格式。
Wideband Single-bit Data (WSD)X
WVEX
Konami XMDX
XMVXXbox 遊戲中使用的 Microsoft 視訊容器。
XVAGXPS3 上使用的音訊格式。
xWMAXXAudio 2 使用的 Microsoft 音訊容器。
eXtended BINary text (XBIN)X
YUV4MPEG pipeXX
Psygnosis YOPX

X 表示該欄位 (編碼 / 解碼) 中的功能受到支援。

42.2 影像格式

FFmpeg 可以讀取和寫入視訊序列中每個影格的影像。以下為支援的影像格式

名稱編碼解碼註解
.Y.U.VXX每個元件一個 raw 檔案
Alias PIXXXAlias/Wavefront PIX 影像格式
animated GIFXX
APNGXXAnimated Portable Network Graphics
BMPXXMicrosoft BMP 影像
BRender PIXXArgonaut BRender 3D 引擎影像格式。
CRIXCintel RAW
DPXXXDigital Picture Exchange
EXRXOpenEXR
FITSXXFlexible Image Transport System
HDRXXRadiance HDR RGBE 影像格式
IMGXGEM Raster 影像
JPEGXX不支援循序式 JPEG。
JPEG 2000XX
JPEG-LSXX
LJPEGX無損 JPEG
Media 100X
MSPXMicrosoft Paint 影像
PAMXXPAM 是具有 Alpha 支援的 PNM 擴充功能。
PBMXXPortable BitMap 影像
PCDXPhotoCD
PCXXXPC Paintbrush
PFMXXPortable FloatMap 影像
PGMXXPortable GrayMap 影像
PGMYUVXXPGM,在 YUV 4:2:0 中具有 U 和 V 元件
PGXXPGX 檔案解碼器
PHMXXPortable HalfFloatMap 影像
PICXPictor/PC Paint
PNGXXPortable Network Graphics 影像
PPMXXPortable PixelMap 影像
PSDXPhotoshop
PTXXV.Flash PTX 格式
QOIXXQuite OK Image 格式
SGIXXSGI RGB 影像格式
Sun RasterfileXXSun RAS 影像格式
TIFFXX尚不支援 YUV、JPEG 和部分擴充功能。
Truevision TargaXXTarga (.TGA) 影像格式
VBNXXVizrt Binary Image 格式
WBMPXX無線應用協定點陣圖影像格式
WebPEXWebP 影像格式,透過外部程式庫 libwebp 支援編碼
XBMXXX BitMap 影像格式
XFaceXXX-Face 影像格式
XPMXX PixMap 影像格式
XWDXXX Window Dump 影像格式

X 表示該欄位 (編碼 / 解碼) 中的功能受到支援。

E 表示透過外部程式庫提供支援。

42.3 視訊編碼器

名稱編碼解碼註解
4X MovieX特定電腦遊戲中使用。
8088flex TMVX
A64 多彩X建立適用於在 Commodore 64 上播放的視訊 (多彩模式)。
Amazing Studio PAF VideoX
American Laser Games MMX類似《Mad Dog McCree》等遊戲中使用。
Amuse Graphics MovieX
AMV 視訊XX中國 MP3 播放器中使用。
ANSI/ASCII artX
Apple Intermediate CodecX
Apple MJPEG-BX
Apple PixletX
Apple ProResXXfourcc: apch,apcn,apcs,apco,ap4h,ap4x
Apple QuickDrawXfourcc: qdrw
Argonaut VideoX部分 Argonaut 遊戲中使用。
Asus v1XXfourcc: ASV1
Asus v2XXfourcc: ASV2
ATI VCR1Xfourcc: VCR1
ATI VCR2Xfourcc: VCR2
Auravision AuraX
Auravision Aura 2X
Autodesk Animator Flic 視訊X
Autodesk RLEXfourcc: AASC
AV1EE透過外部程式庫 libaom、libdav1d、librav1e 和 libsvtav1 支援
Avid 1:1 10-bit RGB PackerXXfourcc: AVrp
AVS (Audio Video Standard) 視訊X遊戲《Creature Shock》使用的視訊編碼。
AVS2-P2/IEEE1857.4EE透過外部程式庫 libxavs2 和 libdavs2 支援
AVS3-P2/IEEE1857.10E透過外部程式庫 libuavs3d 支援
AYUVXXMicrosoft 未壓縮封裝 4:4:4:4
Beam Software VBX
Bethesda VID 視訊X用於 Bethesda Softworks 的某些遊戲。
Bink VideoX
BitJazz SheerVideoX
Bitmap Brothers JV 視訊X
y41p Brooktree 未壓縮 4:1:1 12-bitXX
Brooktree ProSumer VideoXfourcc: BT20
Brute Force & IgnoranceX用於遊戲 Flash Traffic: City of Angels。
C93 視訊X遊戲《Cyberia》中使用的編碼器。
CamStudioXfourcc: CSCD
CD+GXCD+G 卡拉 OK 光碟的視訊編碼器
CDXLXAmiga CD 視訊編碼器
Chinese AVS videoEXAVS1-P2,JiZhun 設定檔,透過外部程式庫 libxavs 編碼
Delphine Software International CIN 視訊XDelphine Software International 遊戲中使用的編碼器。
Discworld II BMV VideoX
CineForm HDXX
Canopus HQX
Canopus HQAX
Canopus HQXX
Canopus Lossless CodecX
CDToonsX各種 Broderbund 遊戲中使用的編碼器。
CinepakX
Cirrus Logic AccuPakXXfourcc: CLJR
CPiA 視訊格式X
Creative YUV (CYUV)X
DFAX遊戲《Chronomaster》中使用的編碼器。
DiracEX透過原生 vc2 (Dirac Pro) 編碼器支援
Deluxe Paint AnimationX
DNxHDXX又名 SMPTE VC3
Duck TrueMotion 1.0Xfourcc: DUCK
Duck TrueMotion 2.0Xfourcc: TM20
Duck TrueMotion 2.0 RTXfourcc: TR20
DV (Digital Video)XX
Dxtory 擷取格式X
Feeble Files/ScummVM DXAX最初用於 Feeble Files 遊戲的編碼器。
Electronic Arts CMV 視訊XNHL 95 遊戲中使用。
Electronic Arts Madcow 視訊X
Electronic Arts TGV 視訊X
Electronic Arts TGQ 視訊X
Electronic Arts TQI 視訊X
Escape 124X
Escape 130X
EVC / MPEG-5 Part 1EE透過外部函式庫 libxeve 和 libxevd 支援編碼和解碼
FFmpeg 視訊編碼器 #1XX無損編碼器 (fourcc: FFV1)
Flash Screen Video v1XXfourcc: FSV1
Flash Screen Video v2XX
Flash 影片 (FLV)XX用於 Flash 的 Sorenson H.263
FM 螢幕擷取編碼器X
Forward UncompressedX
FrapsX
Go2MeetingXfourcc: G2M2, G2M3
Go2WebinarXfourcc: G2M4
Gremlin Digital VideoX
H.261XX
H.263 / H.263-1996XX
H.263+ / H.263-1998 / H.263 version 2XX
H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10EX透過外部函式庫 libx264 和 OpenH264 支援編碼
HEVCXX透過外部函式庫 libx265 和 libkvazaar 支援編碼
HNM version 4X
HuffYUVXX
HuffYUV FFmpeg 變體XX
IBM UltimotionXfourcc: ULTI
id Cinematic 視訊X用於 Quake II。
id RoQ 視訊XX用於 Quake III、Jedi Knight 2 和其他電腦遊戲。
IFF ILBMXIFF 交錯點陣圖
IFF ByteRun1XIFF 執行長度編碼點陣圖
Infinity IMM4X
Intel H.263X
Intel Indeo 2X
Intel Indeo 3X
Intel Indeo 4X
Intel Indeo 5X
Interplay C93X用於 Interplay 的遊戲 Cyberia。
Interplay MVE 視訊X用於 Interplay .MVE 檔案。
J2KXX
Karl Morton’s 視訊編碼器X用於 Worms 遊戲的編碼器。
Kega Game Video (KGV1)XKega 模擬器螢幕擷取編碼器。
LagarithX
LCEVC / MPEG-5 LCEVC / MPEG-5 Part 2E透過外部函式庫 liblcevc-dec 支援解碼
LCL (無損編碼器程式庫) MSZHX
LCL (無損編碼器程式庫) ZLIBEE
LEAD MCMPX
LOCOX
LucasArts SANM/SmushX用於 LucasArts 遊戲 / SMUSH 動畫。
無損 MJPEGXX
MagicYUV VideoXX
Mandsoft 螢幕擷取編碼器X
Microsoft ATC ScreenX也稱為 Microsoft Screen 3。
Microsoft Expression Encoder ScreenX也稱為 Microsoft Titanium Screen 2。
Microsoft RLEXX
Microsoft Screen 1X也稱為 Windows Media Video V7 Screen。
Microsoft Screen 2X也稱為 Windows Media Video V9 Screen。
Microsoft Video 1X
MimicX用於 MSN Messenger 網路攝影機串流。
Miro VideoXLXfourcc: VIXL
MJPEG (Motion JPEG)XX
Mobotix MxPEG 視訊X
Motion Pixels 視訊X
MPEG-1 視訊XX
MPEG-2 視訊XX
MPEG-4 part 2XXlibxvidcore 也可以用於編碼。
MPEG-4 part 2 Microsoft 變體版本 1X
MPEG-4 part 2 Microsoft 變體版本 2XX
MPEG-4 part 2 Microsoft 變體版本 3XX
Newtek SpeedHQXX
Nintendo Gamecube THP 視訊X
NotchLCX
NuppelVideo/RTjpegX用於 NuppelVideo 檔案的視訊編碼。
On2 VP3X仍為實驗性
On2 VP4Xfourcc: VP40
On2 VP5Xfourcc: VP50
On2 VP6Xfourcc: VP60,VP61,VP62
On2 VP7Xfourcc: VP70,VP71
VP8EXfourcc: VP80,透過外部函式庫 libvpx 支援編碼
VP9EX透過外部函式庫 libvpx 支援編碼
Pinnacle TARGA CineWave YUV16Xfourcc: Y216
Q-team QPEGXfourccs: QPEG, Q1.0, Q1.1
QuickTime 8BPS 視訊X
QuickTime Animation (RLE) 視訊XXfourcc: ’rle ’
QuickTime Graphics (SMC)XXfourcc: ’smc ’
QuickTime 視訊 (RPZA)XXfourcc: rpza
R10K AJA Kona 10-bit RGB 編碼器XX
R210 Quicktime 未壓縮 RGB 10-bitXX
Raw VideoXX
RealVideo 1.0XX
RealVideo 2.0XX
RealVideo 3.0X仍遠非理想
RealVideo 4.0X
RealVideo 6.0X
Renderware TXD (紋理字典)XRenderware 引擎使用的紋理字典。
RivaTuner VideoXfourcc: ’RTV1’
RL2 視訊X用於 Entertainment Software Partners 的一些遊戲中
ScreenPressorX
ScreenpressoX
Screen Recorder Gold CodecX
Sierra VMD 視訊X用於 Sierra VMD 檔案。
Silicon Graphics Motion Video Compressor 1 (MVC1)X
Silicon Graphics Motion Video Compressor 2 (MVC2)X
Silicon Graphics RLE 8-bit 視訊X
Smacker 視訊X用於 Smacker 的視訊編碼。
SMPTE VC-1X
SnowXX實驗性小波編碼器 (fourcc: SNOW)
Sony PlayStation MDEC (Motion DECoder)X
Sorenson Vector Quantizer 1XXfourcc: SVQ1
Sorenson Vector Quantizer 3Xfourcc: SVQ3
Sunplus JPEG (SP5X)Xfourcc: SP5X
TechSmith Screen Capture CodecXfourcc: TSCC
TechSmith Screen Capture Codec 2Xfourcc: TSC2
TheoraEX透過外部函式庫 libtheora 支援編碼
Tiertex Limited SEQ 視訊X用於 DOS CD-ROM FlashBack 遊戲的編碼器。
Ut VideoXX
v210 QuickTime 未壓縮 4:2:2 10-bitXX
v308 QuickTime 未壓縮 4:4:4XX
v408 QuickTime 未壓縮 4:4:4:4XX
v410 QuickTime 未壓縮 4:4:4 10-bitXX
VBLE Lossless CodecX
vMix VideoXfourcc: ’VMX1’
VMware Screen Codec / VMware VideoX用於 VMware 擷取視訊的編碼器。
Westwood Studios VQA (向量量化動畫) 視訊X
Windows Media ImageX
Windows Media Video 7XX
Windows Media Video 8XX
Windows Media Video 9X尚未完全運作
Wing Commander III / XanX用於 Wing Commander III .MVE 檔案。
Wing Commander IV / XanX用於 Wing Commander IV。
Winnov WNV1X
WMV7XX
YAMAHA SMAFXX
Psygnosis YOP VideoX
yuv4XXlibquicktime 未壓縮封裝 4:2:0
ZeroCodec Lossless VideoX
ZLIBXXLCL 的一部分,編碼器為實驗性
Zip Motion Blocks VideoXX編碼器僅在 PAL8 中運作。

X 表示該欄位 (編碼 / 解碼) 中的功能受到支援。

E 表示透過外部程式庫提供支援。

42.4 音訊編碼器

名稱編碼解碼註解
8SVX 指數X
8SVX 費波納契X
AACEXX透過內部編碼器和外部函式庫 libfdk-aac 支援編碼
AAC+EIX透過外部函式庫 libfdk-aac 支援編碼
AC-3IXIX
ACELP.KELVINX
ADPCM 4X MovieX
ADPCM Yamaha AICAX
ADPCM AmuseGraphics MovieX
ADPCM Argonaut GamesXX
ADPCM CDROM XAX
ADPCM Creative TechnologyX16 -> 4, 8 -> 4, 8 -> 3, 8 -> 2
ADPCM Electronic ArtsX用於各種 EA 遊戲。
ADPCM Electronic Arts Maxis CDROM XSX用於 Sim City 3000。
ADPCM Electronic Arts R1X
ADPCM Electronic Arts R2X
ADPCM Electronic Arts R3X
ADPCM Electronic Arts XASX
ADPCM G.722XX
ADPCM G.726XX
ADPCM IMA Acorn ReplayX
ADPCM IMA AMVXX用於 AMV 檔案
ADPCM IMA Cunning DevelopmentsX
ADPCM IMA Electronic Arts EACSX
ADPCM IMA Electronic Arts SEADX
ADPCM IMA FuncomX
ADPCM IMA High Voltage Software ALPXX
ADPCM IMA Mobiclip MOFLEXX
ADPCM IMA QuickTimeXX
ADPCM IMA Simon & Schuster InteractiveXX
ADPCM IMA Ubisoft APMXX
ADPCM IMA Loki SDL MJPEGX
ADPCM IMA WAVXX
ADPCM IMA WestwoodX
ADPCM ISS IMAX用於 FunCom 遊戲。
ADPCM IMA DialogicX
ADPCM IMA Duck DK3X用於一些 Sega Saturn 家用主機遊戲。
ADPCM IMA Duck DK4X用於一些 Sega Saturn 家用主機遊戲。
ADPCM IMA RadicalX
ADPCM IMA XboxX
ADPCM MicrosoftXX
ADPCM MS IMAXX
ADPCM Nintendo Gamecube AFCX
ADPCM Nintendo Gamecube DTKX
ADPCM Nintendo THPX
ADPCM PlaystationX
ADPCM QT IMAXX
ADPCM SEGA CRI ADXXX用於 Sega Dreamcast 遊戲。
ADPCM Shockwave FlashXX
ADPCM Sound Blaster Pro 2-bitX
ADPCM Sound Blaster Pro 2.6-bitX
ADPCM Sound Blaster Pro 4-bitX
ADPCM VIMAX用於 LucasArts SMUSH 動畫。
ADPCM Konami XMDX
ADPCM Westwood Studios IMAXX用於 Westwood Studios 遊戲,例如 Command and Conquer。
ADPCM YamahaXX
ADPCM ZorkX
AMR-NBEX透過外部函式庫 libopencore-amrnb 支援編碼
AMR-WBEX透過外部函式庫 libvo-amrwbenc 支援編碼
Amazing Studio PAF AudioX
Apple lossless audioXXQuickTime fourcc ’alac’
aptXXX用於 Bluetooth A2DP
aptX HDXX用於 Bluetooth A2DP
ATRAC1X
ATRAC3X
ATRAC3+X
ATRAC9X
Bink AudioX用於許多遊戲的 Bink 和 Smacker 檔案。
Bonk audioX
CELTE透過外部函式庫 libcelt 支援解碼
codec2EE透過外部函式庫 libcodec2 支援編碼/解碼
CRI HCAX
Delphine Software International CIN 音訊XDelphine Software International 遊戲中使用的編碼器。
DFPWMXX
數位語音標準 - 標準播放模式 (DSS SP)X
Discworld II BMV 音訊X
COOKX支援除 5.1 以外的所有版本。
DCA (DTS Coherent Acoustics)XX支援的副檔名:XCh、XXCH、X96、XBR、XLL、LBR(部分)
Dolby EX
DPCM Cuberoot-Delta-ExactX用於少數遊戲。
DPCM GremlinX
DPCM id RoQXX用於《Quake III》、《Jedi Knight 2》和其他電腦遊戲。
DPCM Marble WADYX
DPCM InterplayX用於各種 Interplay 電腦遊戲。
DPCM Squareroot-Delta-ExactX用於各種遊戲。
DPCM Sierra OnlineX用於 Sierra Online 遊戲音訊檔案。
DPCM SolX
DPCM XanX用於 Origin’s Wing Commander IV AVI 檔案。
DPCM Xilam DERFX
DSD (Direct Stream Digital),最低有效位元優先X
DSD (Direct Stream Digital),最高有效位元優先X
DSD (Direct Stream Digital),最低有效位元優先,平面X
DSD (Direct Stream Digital),最高有效位元優先,平面X
DSP Group TrueSpeechX
DST (Direct Stream Transfer)X
DV 音訊X
Enhanced AC-3XX
EVRC (Enhanced Variable Rate Codec)X
FLAC (Free Lossless Audio Codec)XIX
FTR VoiceX
G.723.1XX
G.729X
GSMEX透過外部函式庫 libgsm 支援編碼
GSM Microsoft 變體EX透過外部函式庫 libgsm 支援編碼
IAC (Indeo Audio Coder)X
iLBC (Internet Low Bitrate Codec)EEX透過外部函式庫 libilbc 支援編碼和解碼
IMC (Intel Music Coder)X
Interplay ACMX
LC3EE透過外部函式庫 liblc3 支援
MACE (Macintosh Audio Compression/Expansion) 6:1X
Marian’s A-pac 音訊X
MI-SC4 (Micronas SC-4 Audio)X
MLP (Meridian Lossless Packing)XX用於 DVD-Audio 光碟。
Monkey’s AudioX
MP1 (MPEG audio layer 1)IX
MP2 (MPEG audio layer 2)IXIX也透過外部函式庫 TwoLAME 支援編碼
MP3 (MPEG audio layer 3)EIX透過外部函式庫 LAME 支援編碼,也支援 ADU MP3 和 MP3onMP4
MPEG-4 Audio Lossless Coding (ALS)X
MobiClip FastAudioX
Musepack SV7X
Musepack SV8X
Nellymoser AsaoXX
On2 AVC (Audio for Video Codec)X
OpusEX透過外部函式庫 libopus 支援編碼
OSQ (Original Sound Quality)X
PCM A-lawXX
PCM mu-lawXX
PCM Archimedes VIDCXX
PCM signed 8-bit planarXX
PCM signed 16-bit big-endian planarXX
PCM signed 16-bit little-endian planarXX
PCM signed 24-bit little-endian planarXX
PCM signed 32-bit little-endian planarXX
PCM 32-bit 浮點 big-endianXX
PCM 32-bit 浮點 little-endianXX
PCM 64-bit 浮點 big-endianXX
PCM 64-bit 浮點 little-endianXX
PCM D-Cinema audio signed 24-bitXX
PCM signed 8-bitXX
PCM signed 16-bit big-endianXX
PCM signed 16-bit little-endianXX
PCM signed 24-bit big-endianXX
PCM signed 24-bit little-endianXX
PCM signed 32-bit big-endianXX
PCM signed 32-bit little-endianXX
PCM signed 16/20/24-bit big-endian in MPEG-TSX
PCM unsigned 8-bitXX
PCM unsigned 16-bit big-endianXX
PCM unsigned 16-bit little-endianXX
PCM unsigned 24-bit big-endianXX
PCM unsigned 24-bit little-endianXX
PCM unsigned 32-bit big-endianXX
PCM unsigned 32-bit little-endianXX
PCM SGAX
QCELP / PureVoiceX
QDesign Music Codec 1X
QDesign Music Codec 2X仍有一些失真。
RealAudio 1.0 (14.4K)XXReal 14400 bit/s 編碼器
RealAudio 2.0 (28.8K)XReal 28800 bit/s 編碼器
RealAudio 3.0 (dnet)IXXReal 低位元率 AC-3 編碼器
RealAudio LosslessX
RealAudio SIPR / ACELP.NETX
RK Audio (RKA)X
SBC (low-complexity subband codec)XX用於 Bluetooth A2DP
ShortenX
Sierra VMD 音訊X用於 Sierra VMD 檔案。
Smacker 音訊X
SMPTE 302M AES3 音訊XX
SonicXX實驗性編碼器
Sonic losslessXX實驗性編碼器
SpeexEEX透過外部函式庫 libspeex 支援
TAK (Tom’s lossless Audio Kompressor)X
True Audio (TTA)XX
TrueHDXX用於 HD-DVD 和 Blu-Ray 光碟。
TwinVQ (VQF flavor)X
VIMAX用於 LucasArts SMUSH 動畫。
ViewQuest VQCX
VorbisEX存在原生但非常原始的編碼器。
Voxware MetaSoundX
Waveform ArchiverX
WavPackXX
Westwood Audio (SND1)X
Windows Media Audio 1XX
Windows Media Audio 2XX
Windows Media Audio LosslessX
Windows Media Audio ProX
Windows Media Audio VoiceX
Xbox Media Audio 1X
Xbox Media Audio 2X

X 表示該欄位 (編碼 / 解碼) 中的功能受到支援。

E 表示透過外部程式庫提供支援。

I 表示也提供僅限整數的版本(確保在沒有硬體浮點支援的系統上具有高效能)。

42.5 字幕格式

名稱混合解混合編碼解碼
3GPP 定時文字XX
AQTitleXX
DVBXXXX
DVB 圖文電視XE
DVDXXXX
JACOsubXXX
MicroDVDXXX
MPL2XX
MPsub (MPlayer)XX
PGSX
PJS (Phoenix)XX
RealTextXX
SAMIXX
Spruce 格式 (STL)XX
SSA/ASSXXXX
SubRip (SRT)XXXX
SubViewer v1XX
SubViewerXX
TED Talks 字幕XX
TTMLXX
VobSub (IDX+SUB)XX
VPlayerXX
WebVTTXXXX
XSUBXX

X 表示支援此功能。

E 表示透過外部程式庫提供支援。

42.6 網路協定

名稱支援
AMQPE
fileX
FTPX
GopherX
GophersX
HLSX
HTTPX
HTTPSX
IcecastX
MMSHX
MMSTX
pipeX
Pro-MPEG FECX
RTMPX
RTMPEX
RTMPSX
RTMPTX
RTMPTEX
RTMPTSX
RTPX
SAMBAE
SCTPX
SFTPE
TCPX
TLSX
UDPX
ZMQE

X 表示支援此協定。

E 表示透過外部程式庫提供支援。

42.7 輸入/輸出裝置

名稱輸入輸出
ALSAXX
BKTRX
cacaX
DV1394X
Lavfi 虛擬裝置X
Linux framebufferXX
JACKX
LIBCDIOX
LIBDC1394X
OpenALX
OpenGLX
OSSXX
PulseAudioXX
SDLX
Video4Linux2XX
VfW 擷取X
X11 抓取X
Win32 抓取X

X 表示支援輸入/輸出。

42.8 時間碼

編碼器/格式讀取寫入
AVIXX
DVXX
GXFXX
MOVXX
MPEG1/2XX
MXFXX

43 另請參閱

ffprobe, ffmpeg, ffplay, ffmpeg-utils, ffmpeg-scaler, ffmpeg-resampler, ffmpeg-codecs, ffmpeg-bitstream-filters, ffmpeg-formats, ffmpeg-devices, ffmpeg-protocols, ffmpeg-filters

44 作者

FFmpeg 開發者。

關於作者的詳細資訊,請參閱專案的 Git 歷史記錄 (https://git.ffmpeg.org/ffmpeg),例如在 FFmpeg 原始碼目錄中輸入 git log 命令,或瀏覽線上儲存庫 https://git.ffmpeg.org/ffmpeg

特定組件的維護者列在原始碼樹狀結構中的 MAINTAINERS 檔案中。

本文件於 2025 年 1 月 21 日 使用 makeinfo 產生。

託管服務由 telepoint.bg 提供