目錄
1 概要
ffprobe [options] input_url
2 描述
ffprobe 從多媒體串流收集資訊,並以人類和機器可讀的格式列印出來。
例如,它可以用於檢查多媒體串流所使用的容器格式,以及其中包含的每個媒體串流的格式和類型。
如果在輸入中指定了 url,ffprobe 將嘗試開啟並探測 url 內容。如果 url 無法開啟或無法識別為多媒體檔案,則會傳回正的結束代碼。
如果沒有使用 o 指定輸出,ffprobe 將寫入標準輸出。
ffprobe 可以作為獨立應用程式使用,也可以與文字篩選器結合使用,文字篩選器可以執行更複雜的處理,例如統計處理或繪圖。
選項用於列出 ffprobe 支援的一些格式,或用於指定要顯示哪些資訊,以及設定 ffprobe 將如何顯示這些資訊。
ffprobe 輸出旨在易於被文字篩選器解析,並且由一個或多個區段組成,區段的格式由選定的寫入器定義,寫入器由 output_format 選項指定。
區段可能包含其他巢狀區段,並由名稱(可能與其他區段共用)和唯一名稱識別。請參閱 sections 的輸出。
儲存在容器或串流中的元數據標籤會被識別並列印在相應的 "FORMAT"、"STREAM"、"STREAM_GROUP_STREAM" 或 "PROGRAM_STREAM" 區段中。
3 選項
所有數值選項,如果沒有另行指定,都接受表示數字的字串作為輸入,後面可以跟隨 SI 單位前綴,例如:'K'、'M' 或 'G'。
如果將 'i' 附加到 SI 單位前綴,則完整的前綴將被解釋為二進制倍數的單位前綴,二進制倍數基於 1024 的冪而不是 1000 的冪。將 'B' 附加到 SI 單位前綴會將值乘以 8。這允許使用,例如:'KB'、'MiB'、'G' 和 'B' 作為數字後綴。
不帶參數的選項是布林選項,並將相應的值設定為 true。它們可以透過在選項名稱前加上 "no" 來設定為 false。例如,使用 "-nofoo" 會將名稱為 "foo" 的布林選項設定為 false。
帶參數的選項支援特殊語法,其中命令列上給定的參數被解釋為檔案的路徑,實際的參數值從該檔案載入。若要使用此功能,請在選項名稱前立即新增一個正斜線 '/'(在開頭的破折號之後)。例如:
ffmpeg -i INPUT -/filter:v filter.script OUTPUT
將從名為 filter.script 的檔案載入濾鏡圖描述。
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,則匹配包含給定標籤且具有任何值的串流。key 或 value 中的冒號字元 ':' 需要使用反斜線跳脫。
- disp:dispositions[:additional_stream_specifier]
匹配具有給定 disposition(s) 的串流。dispositions 是由 '+' 連接的一個或多個 disposition 列表(如 -dispositions 選項所列印)。
- u
匹配具有可用組態的串流,編碼解碼器必須已定義,且必須存在基本資訊,例如視訊尺寸或音訊取樣率。
請注意,在
ffmpeg
中,依元數據匹配僅適用於輸入檔案。
3.2 通用選項
這些選項在 ff* 工具之間共用。
- -L
顯示授權條款。
- -h, -?, -help, --help [arg]
顯示說明。可以指定可選參數以列印關於特定項目的說明。如果未指定參數,則僅顯示基本(非進階)工具選項。
arg 的可能值為
- long
除了基本工具選項外,還列印進階工具選項。
- full
列印完整的選項列表,包括編碼器、解碼器、解多工器、多工器、濾鏡等的共用和私有選項。
- decoder=decoder_name
列印關於名為 decoder_name 的解碼器的詳細資訊。使用 -decoders 選項以取得所有解碼器的列表。
- encoder=encoder_name
列印關於名為 encoder_name 的編碼器的詳細資訊。使用 -encoders 選項以取得所有編碼器的列表。
- demuxer=demuxer_name
列印關於名為 demuxer_name 的解多工器的詳細資訊。使用 -formats 選項以取得所有解多工器和多工器的列表。
- muxer=muxer_name
列印關於名為 muxer_name 的多工器的詳細資訊。使用 -formats 選項以取得所有多工器和解多工器的列表。
- filter=filter_name
列印關於名為 filter_name 的濾鏡的詳細資訊。使用 -filters 選項以取得所有濾鏡的列表。
- bsf=bitstream_filter_name
列印關於名為 bitstream_filter_name 的位元串流濾鏡的詳細資訊。使用 -bsfs 選項以取得所有位元串流濾鏡的列表。
- protocol=protocol_name
列印關於名為 protocol_name 的協定的詳細資訊。使用 -protocols 選項以取得所有協定的列表。
- -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 前綴可以包含以下值
- ‘repeat’
表示重複的日誌輸出不應壓縮到第一行,並且將省略「最後一條訊息重複 n 次」行。
- ‘level’
表示日誌輸出應在每條訊息行中新增
[level]
前綴。這可以用作日誌著色的替代方案,例如在將日誌轉儲到檔案時。
旗標也可以單獨使用,方法是在前面新增 '+'/'-' 前綴,以設定/重設單個旗標,而不影響其他 flags 或變更 loglevel。當同時設定 flags 和 loglevel 時,預期在最後一個 flags 值和 loglevel 之前使用 '+' 分隔符。
loglevel 是一個字串或數字,包含以下值之一
- ‘quiet, -8’
完全不顯示任何內容;保持靜默。
- ‘panic, 0’
僅顯示可能導致程序崩潰的嚴重錯誤,例如斷言失敗。目前未用於任何用途。
- ‘fatal, 8’
僅顯示嚴重錯誤。這些是程序絕對無法繼續的錯誤。
- ‘error, 16’
顯示所有錯誤,包括可以從中恢復的錯誤。
- ‘warning, 24’
顯示所有警告和錯誤。將顯示任何與可能不正確或意外事件相關的訊息。
- ‘info, 32’
在處理期間顯示資訊性訊息。這是警告和錯誤之外的訊息。這是預設值。
- ‘verbose, 40’
與
info
相同,只是更詳細。- ‘debug, 48’
顯示所有內容,包括偵錯資訊。
- ‘trace, 56’
例如,若要啟用重複的日誌輸出,新增
level
前綴,並將 loglevel 設定為verbose
ffmpeg -loglevel repeat+level+verbose -i input output
另一個範例,啟用重複的日誌輸出,而不影響
level
前綴旗標或 loglevel 的目前狀態ffmpeg [...] -loglevel +repeat
預設情況下,程式會記錄到標準錯誤輸出。如果終端機支援著色,則會使用顏色標記錯誤和警告。可以透過設定環境變數
AV_LOG_FORCE_NOCOLOR
來停用日誌著色,或者可以透過設定環境變數AV_LOG_FORCE_COLOR
來強制啟用日誌著色。- -report
將完整的命令列和日誌輸出轉儲到目前目錄中名為
program-YYYYMMDD-HHMMSS.log
的檔案中。此檔案對於錯誤回報很有用。它也暗示了-loglevel debug
。將環境變數
FFREPORT
設定為任何值都具有相同的效果。如果該值是以 ':' 分隔的 key=value 序列,則這些選項將影響報告;如果選項值包含特殊字元或選項分隔符 ':',則必須對其進行跳脫(請參閱 ffmpeg-utils 手冊中的「引號和跳脫」章節)。以下選項可被識別
- file
設定用於報告的檔案名稱;
%p
展開為程式名稱,%t
展開為時間戳記,%%
展開為純%
- level
使用數值設定日誌詳細程度層級(請參閱
-loglevel
)。
例如,若要使用日誌層級
32
(日誌層級info
的別名)將報告輸出到名為 ffreport.log 的檔案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 ...
此選項的可能旗標為
- ‘x86’
- ‘mmx’
- ‘mmxext’
- ‘sse’
- ‘sse2’
- ‘sse2slow’
- ‘sse3’
- ‘sse3slow’
- ‘ssse3’
- ‘atom’
- ‘sse4.1’
- ‘sse4.2’
- ‘avx’
- ‘avx2’
- ‘xop’
- ‘fma3’
- ‘fma4’
- ‘3dnow’
- ‘3dnowext’
- ‘bmi1’
- ‘bmi2’
- ‘cmov’
- ‘ARM’
- ‘armv5te’
- ‘armv6’
- ‘armv6t2’
- ‘vfp’
- ‘vfpv3’
- ‘neon’
- ‘setend’
- ‘AArch64’
- ‘armv8’
- ‘vfp’
- ‘neon’
- ‘PowerPC’
- ‘altivec’
- ‘特定處理器’
- ‘pentium2’
- ‘pentium3’
- ‘pentium4’
- ‘k6’
- ‘k62’
- ‘athlon’
- ‘athlonxp’
- ‘k8’
- -cpucount count (全域)
覆寫 CPU 核心數偵測。此選項用於測試。除非您知道自己在做什麼,否則請勿使用它。
ffmpeg -cpucount 2
- -max_alloc bytes
設定 ffmpeg 系列 malloc 函數在堆積上分配區塊的最大大小限制。使用此選項時請極其謹慎。如果您不完全理解這樣做的後果,請勿使用。預設值為 INT_MAX。
3.3 AVOptions
這些選項由 libavformat、libavdevice 和 libavcodec 程式庫直接提供。若要查看可用的 AVOptions 列表,請使用 -help 選項。它們分為兩類
- 通用
這些選項可以為任何容器、編碼解碼器或裝置設定。通用選項列在容器/裝置的 AVFormatContext 選項下,以及編碼解碼器的 AVCodecContext 選項下。
- 私有
這些選項特定於給定的容器、裝置或編碼解碼器。私有選項列在其對應的容器/裝置/編碼解碼器下。
例如,若要將 ID3v2.3 標頭而不是預設的 ID3v2.4 寫入 MP3 檔案,請使用 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_streams
、show_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
- 搜尋到時間 10,讀取封包直到找到的搜尋點之後的 20 秒,然後搜尋到位置
- -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
/1
、never
/0
和auto
/-1
。預設值為 auto。- -analyze_frames
分析影格和/或其邊資料,直到提供的讀取間隔,提供可能在串流層級有用的其他資訊。必須與 -show_streams 選項配對,否則將不起作用。
目前,啟用此選項後提供的其他欄位是
closed_captions
和film_grain
欄位。例如,若要分析前 20 秒並填入這些欄位
ffprobe -show_streams -analyze_frames -read_intervals "%+20" INPUT
- -bitexact
強制位元精確輸出,有助於產生不依賴於特定建置的輸出。
- -i input_url
讀取 input_url。
- -o output_url
將輸出寫入 output_url。如果未指定,則將輸出傳送到標準輸出。
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
Compact 和 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
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 輸出在安裝在 FFmpeg datadir 中的 XML 綱要描述檔案 ffprobe.xsd 中描述。
綱要的更新版本可以在 URL http://www.ffmpeg.org/schema/ffprobe.xsd 取得,該 URL 重定向到提交到 FFmpeg 開發原始碼樹中的最新綱要。
請注意,只有在未指定特殊的全域輸出選項(unit、prefix、byte_binary_prefix、sexagesimal 等)時,發出的輸出才會符合 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 參見
ffprobe-all, ffmpeg, ffplay, ffmpeg-utils, ffmpeg-scaler, ffmpeg-resampler, ffmpeg-codecs, ffmpeg-bitstream-filters, ffmpeg-formats, ffmpeg-devices, ffmpeg-protocols, ffmpeg-filters
7 作者
FFmpeg 開發者。
有關作者身份的詳細資訊,請參閱專案的 Git 歷史記錄 (https://git.ffmpeg.org/ffmpeg),例如,透過在 FFmpeg 原始碼目錄中輸入命令 git log
,或瀏覽線上儲存庫 https://git.ffmpeg.org/ffmpeg。
特定組件的維護者列在原始碼樹中的檔案 MAINTAINERS 中。
本文件於 2025 年 1 月 21 日 使用 makeinfo 產生。
託管服務由 telepoint.bg 提供