ffprobe 文件

目錄

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,則匹配包含給定標籤且具有任何值的串流。keyvalue 中的冒號字元 ':' 需要使用反斜線跳脫。

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。當同時設定 flagsloglevel 時,預期在最後一個 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_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。如果未指定,則將輸出傳送到標準輸出。

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 開發原始碼樹中的最新綱要。

請注意,只有在未指定特殊的全域輸出選項(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 參見

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 提供