ffprobe 文档
1 概要
ffprobe [options] input_url
2 描述
ffprobe 从多媒体流中收集信息,并以人类和机器均可读的方式输出。
例如,它可用于检查多媒体流所用 container 的格式,以及其中包含的各个媒体流的格式和类型。
如果在输入中指定了 url,ffprobe 会尝试打开并探测该 url 的内容。如果无法打开该 url,或无法将其识别为多媒体文件,则会返回一个正的退出码。
如果没有通过 -o 指定输出,ffprobe 会写入标准输出。
ffprobe 既可以作为独立应用程序使用,也可以与文本处理过滤器结合使用,由后者执行统计处理、绘图等更复杂的处理。
选项用于列出 ffprobe 支持的部分格式、指定要显示哪些信息,以及设置 ffprobe 显示信息的方式。
ffprobe 的输出设计为易于被文本处理过滤器解析,由一个或多个小节组成,其形式由所选的 writer 定义,writer 通过 output_format 选项指定。
小节可以嵌套包含其他小节,通过一个名称(可能与其他小节共用)和一个唯一名称来标识。参见 sections 的输出。
存储在 container 或流中的元数据标签会被识别,并输出到对应的 "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
这会从名为 filter.script 的文件中加载 filtergraph 描述。
3.1 流指定符
有些选项按流应用,例如 bitrate 或 codec。流指定符用于精确指定某个选项属于哪个(些)流。
流指定符通常是附加在选项名之后、以冒号分隔的字符串。例如 -codec:a:1 ac3 中包含 a:1 这个流指定符,它匹配第二个音频流。因此,这会为第二个音频流选择 ac3 codec。
流指定符可以匹配多个流,此时该选项会应用到所有这些流上。例如 -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 or i:group_id
匹配具有该组 ID 的流。
p:program_id[:additional_stream_specifier]
匹配属于 ID 为 program_id 的节目的流。如果使用了 additional_stream_specifier,则匹配既属于该节目、又匹配 additional_stream_specifier 的流。
#stream_id or i:stream_id
按流 ID(例如 MPEG-TS container 中的 PID)匹配流。
m:key[:value]
匹配元数据标签 key 具有指定 value 的流。如果没有给出 value,则匹配包含该标签(不论其值)的流。key 或 value 中的冒号字符 ’:’ 需要用反斜杠转义。
disp:dispositions[:additional_stream_specifier]
匹配具有给定 disposition 的流。dispositions 是一个或多个 disposition(形式与 -dispositions 选项输出的一致)用 ’+’ 连接而成的列表。
u
匹配具有可用配置的流:codec 必须已定义,且视频尺寸或音频采样率等必要信息必须存在。
请注意,在 ffmpeg 中,按元数据匹配只对输入文件正常起作用。
3.2 通用选项
这些选项在各个 ff* 工具之间是共用的。
-L, -license
显示许可证。
-h, -?, -help, --help [arg]
显示帮助。可以指定一个可选参数,用于打印关于特定项目的帮助。如果未指定参数,则只显示基本(非高级)工具选项。
arg 可以取下列值:
long
除基本工具选项外,还打印高级工具选项。
full
打印选项的完整列表,包括 encoder、decoder、demuxer、muxer、滤镜等的共用选项和私有选项。
decoder=decoder_name
打印名为 decoder_name 的 decoder 的详细信息。可以用 -decoders 选项获取所有 decoder 的列表。
encoder=encoder_name
打印名为 encoder_name 的 encoder 的详细信息。可以用 -encoders 选项获取所有 encoder 的列表。
demuxer=demuxer_name
打印名为 demuxer_name 的 demuxer 的详细信息。可以用 -formats 选项获取所有 demuxer 和 muxer 的列表。
muxer=muxer_name
打印名为 muxer_name 的 muxer 的详细信息。可以用 -formats 选项获取所有 muxer 和 demuxer 的列表。
filter=filter_name
打印名为 filter_name 的滤镜的详细信息。可以用 -filters 选项获取所有滤镜的列表。
bsf=bitstream_filter_name
打印名为 bitstream_filter_name 的 bitstream 过滤器的详细信息。可以用 -bsfs 选项获取所有 bitstream 过滤器的列表。
protocol=protocol_name
打印名为 protocol_name 的 protocol 的详细信息。可以用 -protocols 选项获取所有 protocol 的列表。
-version
显示版本。
-buildconf
显示构建配置,每行一个选项。
-formats
显示可用的格式(包括设备)。
-demuxers
显示可用的 demuxer。
-muxers
显示可用的 muxer。
-devices
显示可用的设备。
-codecs
显示 libavcodec 已知的所有 codec。
请注意,本文档通篇将 ’codec’ 一词用作媒体 bitstream 格式这一更准确说法的简称。
-decoders
显示可用的 decoder。
-encoders
显示所有可用的 encoder。
-bsfs
显示可用的 bitstream 过滤器。
-protocols
显示可用的 protocol。
-filters
显示可用的 libavfilter 滤镜。
-pix_fmts
显示可用的 pixel format。
-sample_fmts
显示可用的 sample format。
-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’
表示重复的日志输出不应压缩到第一行,且 "Last message repeated n times" 这一行会被省略。
‘level’
表示应在每条消息行前添加 [level] 前缀。这可用作日志着色的替代方案,例如在把日志转储到文件时。
‘time’
表示日志行前应加上时间信息。
‘datetime’
表示日志行前应加上日期和时间信息。
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 手册中的 “Quoting and escaping” 小节)。
可识别以下选项:
file
设置用于报告的文件名;%p 会展开为程序名,%t 会展开为时间戳,%% 会展开为一个纯粹的 %
level
用数值设置日志的详细级别(参见 -loglevel)。
例如,要以日志级别 32(日志级别 info 的别名)把报告输出到名为 ffreport.log 的文件:
FFREPORT=file=ffreport.log:level=32 ffmpeg -i input output
解析环境变量时发生的错误不是致命的,也不会出现在报告中。
-hide_banner
禁止打印横幅信息。
所有 FFmpeg 工具通常都会显示版权声明、构建选项和库版本。这个选项可用于禁止打印这些信息。
-cpuflags flags (global)
允许设置和清除 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’ ‘Specific Processors’
‘pentium2’ ‘pentium3’ ‘pentium4’ ‘k6’ ‘k62’ ‘athlon’ ‘athlonxp’ ‘k8’ -cpucount count (global)
覆盖对 CPU 数量的检测。这个选项用于测试。除非你清楚自己在做什么,否则请勿使用。
ffmpeg -cpucount 2
-max_alloc bytes
为 ffmpeg 的 malloc 系列函数在堆上分配的块设置最大大小上限。使用此选项时请格外小心。如果你不完全理解这样做的后果,请勿使用。默认值为 INT_MAX。
3.3 AVOptions
这些选项由 libavformat、libavdevice 和 libavcodec 库直接提供。要查看可用 AVOptions 的列表,请使用 -help 选项。它们分为两类:
generic
这些选项可以为任意 container、codec 或设备设置。generic 选项在 container/设备下列在 AVFormatContext options 中,在 codec 下列在 AVCodecContext options 中。
private
这些选项是给定 container、设备或 codec 特有的。private 选项列在其对应的 container/设备/codec 之下。
例如,要给 MP3 文件写入 ID3v2.3 头而不是默认的 ID3v2.4 头,请使用 MP3 muxer 的 id3v2_version private 选项:
ffmpeg -i input.flac -id3v2_version 3 out.mp3
所有 codec 的 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
在上面的例子中,一个多声道音频流被映射了两次以供输出。第一个实例用 codec ac3 和比特率 640k 编码。第二个实例被下混为 2 声道,并用 codec aac 编码。这里使用输出流的绝对索引为它指定了比特率 128k。
注意:布尔类型的 AVOptions 不能使用 -nooption 语法,请使用 -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 的名称,writer_options 指定要传给该 writer 的选项。
例如,要以 JSON 格式打印输出,请指定:
-output_format json
关于可用输出打印格式的更多细节,请参见下面的 Writers 小节。
-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 转储的形式显示负载数据(可以用 -data_dump_format 选择其他格式)。与 -show_packets 搭配使用时,会转储数据包的数据;与 -show_streams 搭配使用时,会转储 codec 的 extradata。
转储以 "data" 字段输出,其中可能包含换行符。
-show_data_hash algorithm
显示负载数据的哈希值:搭配 -show_packets 用于数据包,搭配 -show_streams 用于 codec 的 extradata。
-data_dump_format format
选择用于 -show_data 选项启用的数据转储所用的格式。默认值是 xxd,这是一种与知名的 xxd 程序兼容的 hexdump 格式。也支持 base64。
-show_error
显示尝试探测输入时发现的错误信息。
错误信息会输出在名为 "ERROR" 的小节中。
-show_format
显示输入多媒体流的 container 格式信息。
所有 container 格式信息都会输出在名为 "FORMAT" 的小节中。
-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" 小节中只显示 codec 类型,可以指定下面的参数:
format : stream=codec_type
要显示 stream 和 format 小节中的所有标签,可以这样:
stream_tags : format_tags
要只显示 stream 小节中的 title 标签(如果存在),可以这样:
stream_tags=title
-show_packets
显示输入多媒体流中包含的每个数据包的信息。
每个单独的数据包的信息会输出在名为 "PACKET" 的专用小节中。
-show_frames
显示输入多媒体流中包含的每个帧和字幕的信息。
每个单独的帧的信息会输出在名为 "FRAME" 或 "SUBTITLE" 的专用小节中。
-show_log loglevel
根据 loglevel 中设置的值,显示 decoder 关于每一帧的日志信息(参见 -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
显示 private data,也就是取决于所显示的特定元素格式的数据。此选项默认启用,但在某些用途中你可能需要禁用它,例如在生成符合 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 的信息。
每种格式的 pixel format 信息会输出在名为 "PIXEL_FORMAT" 的小节中。
-show_optional_fields value
有些 writer(比如 JSON 和 XML)会省略打印值无效或不适用的字段,而其他 writer 则始终打印它们。此选项可以控制这一行为。有效值为 always/1、never/0 和 auto/-1。默认值为 auto。
-analyze_frames
分析帧及/或其边数据(side data),直到给定的读取区间为止,提供在流层面可能有用的附加信息。必须与 -show_streams 选项搭配使用,否则不起作用。
目前,启用此选项后提供的附加字段是 closed_captions 和 film_grain 字段。
例如,要分析前 20 秒并填充这些字段:
ffprobe -show_streams -analyze_frames -read_intervals "%+20" INPUT
-bitexact
强制 bitexact 输出,有助于生成不依赖具体构建的输出。
-i input_url
读取 input_url。
-o output_url
把输出写入 output_url。如果未指定,输出会被发送到标准输出。
-c:media_specifier codec_name -codec:media_specifier codec_name
为 media_specifier 标识的流强制使用特定的 decoder 实现,media_specifier 可以取 a(音频)、v(视频)、s(字幕)和 d(数据)等值。
4 Writers
writer 定义 ffprobe 采用的输出格式,用于打印输出的所有部分。
writer 可以接受一个或多个参数,用于指定所采用的选项。这些选项以 key=value 对的列表形式指定,用 ":" 分隔。
所有 writer 都支持下列选项:
string_validation, sv
设置字符串验证模式。
可接受的值如下。
‘fail’
如果在输入中发现无效的字符串(UTF-8)序列或码位,writer 会立即失败。这对于验证输入元数据特别有用。
‘ignore’
任何验证错误都会被忽略。这可能导致输出损坏,尤其是使用 json 或 xml writer 时。
‘replace’
writer 会用 string_validation_replacement 指定的字符串替换无效的 UTF-8 序列或码位。
默认值为 ‘replace’。
string_validation_replacement, svr
设置 string_validation 设为 ‘replace’ 时使用的替换字符串。
如果未指定该选项,writer 会假定为空字符串,也就是说会从输入字符串中移除无效序列。
下面是当前可用 writer 的说明。
4.1 default
默认格式。
以下列形式打印每个小节:
[SECTION]
key1=val1
...
keyN=valN
[/SECTION]
元数据标签会作为一行,输出在对应的 FORMAT、STREAM、STREAM_GROUP_STREAM 或 PROGRAM_STREAM 小节中,并以字符串 "TAG:" 为前缀。
接受的选项说明如下。
nokey, nk
如果设为 1,指定不打印每个字段的 key。默认值为 0。
noprint_wrappers, nw
如果设为 1,指定不打印小节的开头和结尾标记。默认值为 0。
4.2 compact, csv
compact 和 CSV 格式。
csv writer 与 compact 等价,但支持不同的默认值。
每个小节都打印在单独一行。如果未指定任何选项,输出的形式为:
section|key1=val1| ... |keyN=valN
元数据标签会输出在对应的 "format" 或 "stream" 小节中。元数据标签的 key,如果打印,会以字符串 "tag:" 为前缀。
下面是可接受选项的说明。
item_sep, s
指定用于分隔输出行中各字段的字符。必须是单个可打印字符,默认为 "|"(csv writer 为 ",")。
nokey, nk
如果设为 1,指定不打印每个字段的 key。其默认值为 0(csv writer 为 1)。
escape, e
设置要使用的转义模式,默认为 "c"(csv writer 为 "csv")。
它可以取下列值之一:
c
执行 C 语言风格的转义。包含换行符(‘\n’)、回车符(‘\r’)、制表符(‘\t’)、换页符(‘\f’)、转义字符(‘\’)或项分隔符 SEP 的字符串,会按 C 语言风格转义:换行符转换为序列 ‘\n’,回车符转换为 ‘\r’,‘\’ 转换为 ‘\\’,分隔符 SEP 转换为 ‘\SEP’。
csv
执行 RFC4180 所述的 CSV 风格转义。包含换行符(‘\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
用于分隔打印字段 key 中的章节、小节名称、ID 及潜在标签的分隔符字符。
默认值为 ‘.’。
hierarchical, h
指定小节名称的表示是否应为层级式。如果设为 1,且当前章节中有多个小节,小节名称前会加上该章节的名称作为前缀。设为 0 会禁用此行为。
默认值为 1。
4.4 ini
INI 格式输出。
以基于 INI 的格式打印输出。
采用下列约定:
- 所有 key 和值均为 UTF-8
- ‘.’ 是子组分隔符
- 换行符、‘\t’、‘\f’、‘\b’ 以及下列字符会被转义
- ‘\’ 是转义字符
- ‘#’ 是注释指示符
- ‘=’ 是 key/value 分隔符
- ‘:’ 不使用,但通常会被当作 key/value 分隔符解析
这个 writer 接受以 ‘:’ 分隔的 key=value 对列表作为选项。
下面是可接受选项的说明。
hierarchical, h
指定小节名称的表示是否应为层级式。如果设为 1,且当前章节中有多个小节,小节名称前会加上该章节的名称作为前缀。设为 0 会禁用此行为。
默认值为 1。
4.5 json
基于 JSON 的格式。
每个小节都以 JSON 记法打印。
下面是可接受选项的说明。
compact, c
如果设为 1,启用 compact 输出,即每个小节打印在单独一行。默认值为 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 track 中提取,因此可以在 tmcd 流的元数据中获取(-show_streams,参见 TAG:timecode)。
- DV、GXF 和 AVI 的时间码可以在 format 的元数据中获取(-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 文件里。
Hosting provided by telepoint.bg