1 概要
ffprobe [options] input_url
2 描述
ffprobe 从多媒体流中收集信息并以人机可读的方式打印出来。
例如,它可用于检查多媒体流使用的容器的格式以及其中包含的每个媒体流的格式和类型。
如果在输入中指定了 URL,ffprobe 将尝试打开并探测 URL 内容。如果无法打开 URL 或无法将其识别为多媒体文件,则返回正退出代码。
如果没有指定输出,则 o ffprobe 将输出到标准输出。
ffprobe 既可以作为独立应用程序使用,也可以与文本过滤器结合使用,后者可以执行更复杂的处理,例如统计处理或绘图。
选项用于列出 ffprobe 支持的某些格式或指定要显示的信息,以及设置 ffprobe 显示信息的方式。
ffprobe 输出旨在易于通过文本过滤器解析,并由所选编写器定义的一个或多个部分组成,由 output_format 选项指定。
部分可能包含其他嵌套部分,并通过名称(可能与其他部分共享)和唯一名称进行标识。请参阅部分的输出。
存储在容器或流中的元数据标签被识别并打印在相应的“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的文件加载过滤器图描述。
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 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 容器中的 PID)。
- m:key[:value]
匹配具有指定值的元数据标签键的流。如果未指定值,则匹配包含给定标签且具有任意值的流。
- u
匹配具有可用配置的流,必须定义编解码器,并且必须存在视频尺寸或音频采样率等基本信息。
请注意,在 ffmpeg 中,按元数据匹配仅适用于输入文件。
3.2 通用选项
这些选项在 ff* 工具之间共享。
- -L
显示许可证。
- -h, -?, -help, --help [arg]
显示帮助。可以指定可选参数来打印有关特定项目的帮助。如果未指定任何参数,则仅显示基本(非高级)工具选项。
arg 的可能值为:
- long
除了基本工具选项外,还打印高级工具选项。
- full
打印完整的选项列表,包括编码器、解码器、解复用器、复用器、过滤器等的共享和私有选项。
- decoder=decoder_name
打印有关名为 decrypt_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
显示流配置。
- -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
设置库使用的日志记录级别和标志。
可选的标志前缀可以由以下值组成:
- ‘repeat’
表示重复的日志输出不应压缩到第一行,并且将省略“最后一条消息重复 n 次”行。
- ‘level’
表示日志输出应在每条消息行中添加 [level] 前缀。这可以用作日志着色的替代方法,例如将日志转储到文件时。
也可以单独使用标志,方法是添加“+”/“-”前缀来设置/重置单个标志,而不会影响其他标志或更改日志级别。当同时设置标志和日志级别时,最后一个标志值和日志级别之前应该有一个“+”分隔符。
loglevel 是包含以下值之一的字符串或数字:
- ‘quiet, -8’
什么都不显示;保持沉默。
- ‘panic, 0’
仅显示可能导致进程崩溃的致命错误,例如断言失败。目前此功能不用于任何目的。
- ‘fatal, 8’
仅显示致命错误。这些错误会导致进程绝对无法继续。
- ‘error, 16’
显示所有错误,包括可以恢复的错误。
- ‘warning, 24’
显示所有警告和错误。任何与可能不正确或意外事件相关的消息都将显示。
- ‘info, 32’
在处理过程中显示信息性消息。这是对警告和错误的补充。这是默认值。
- ‘verbose, 40’
与信息相同,但更详细。
- ‘debug, 48’
显示所有内容,包括调试信息。
- ‘trace, 56’
例如,要启用重复日志输出,请添加级别前缀,并将日志级别设置为详细:
ffmpeg -loglevel repeat+level+verbose -i input output 另一个启用重复日志输出而不影响级别前缀标志或日志级别的当前状态的示例:
ffmpeg [...] -loglevel +repeat 默认情况下,程序会将日志记录到 stderr。如果终端支持着色,则使用颜色来标记错误和警告。可以通过设置环境变量 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(日志级别信息的别名)将报告输出到名为 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
这些选项可以针对任何容器、编解码器或设备进行设置。通用选项列在容器/设备的 AVFormatContext 选项下,以及编解码器的 AVCodecContext 选项下。
- private
这些选项特定于给定的容器、设备或编解码器。私有选项列在其相应的容器/设备/编解码器下。
例如,要将 ID3v2.3 标头(而不是默认的 ID3v2.4)写入 MP3 文件,请使用 MP3 复用器的 id3v2_version 私有选项:
ffmpeg -i input.flac -id3v2_version 3 out.mp3
所有编解码器 AVOption 都是针对每个流的,因此应将流说明符附加到它们:
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 语法不能用于布尔 AVOption,请使用 -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 转储形式显示。与 -show_packets 结合使用,它将转储数据包的数据。与 -show_streams 结合使用,它将转储编解码器额外数据。
转储打印为“数据”字段。它可能包含换行符。
- -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=codec_type 要显示流和格式部分中的所有标签:
stream_tags : format_tags 要仅显示流中的标题标签(如果可用)部分:
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/1、never/0 和 auto/-1。默认值为 auto。
- -bitexact
强制 bitexact 输出,有助于生成不依赖于特定构建的输出。
- -i input_url
读取 input_url。
- -o output_url
将输出写入 output_url。如果未指定,则将输出发送到 stdout。
4 写入器
写入器定义 ffprobe 采用的输出格式,并将用于打印输出的所有部分。
写入器可以接受一个或多个参数,这些参数指定要采用的选项。选项以键=值对列表的形式指定,以“:”分隔。
所有写入器都支持以下选项:
- 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
元数据标签打印在相应的“格式”或“流”部分中。如果打印元数据标签键,则以字符串“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 转义,因此可以直接嵌入到 sh 中脚本,只要分隔符是字母数字字符或下划线(请参阅 sep_char 选项)。
可接受选项的描述如下。
- sep_char, s
用于分隔打印字段键中的章节、节名称、ID 和潜在标签的分隔符。
默认值为“。”。
- hierarchical, h
指定节名称规范是否应分层。如果设置为 1,并且当前章节中有多个节,则节名称将以章节名称作为前缀。值为 0 将禁用此行为。
默认值为 1。
4.4 ini
INI 格式输出。
以基于 INI 的格式打印输出。
采用以下约定:
- 所有键和值均为 UTF-8
- ‘.’ 为子组分隔符
- 换行符、‘\t’、‘\f’、‘\b’ 和以下字符均被转义
- ‘\’ 为转义符
- ‘#’ 为注释指示符
- ‘=’ 为键/值分隔符
- ‘:’ 未使用,但通常被解析为键/值分隔符
此编写器接受的选项为键=值对列表,以‘:’分隔。
以下为可接受选项的描述。
- 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 开发源代码树中的最新模式。
请注意,仅当未指定任何特殊的全局输出选项(单位、前缀、byte_binary_prefix、六十进制等)时,发出的输出才会符合 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,参见时间码) 中找到。
- MOV 时间码从 tmcd 轨道中提取,可在 tmcd 流元数据 (-show_streams,参见 TAG:timecode) 中找到。
- DV、GXF 和 AVI 时间码可在格式元数据 (-show_format,参见 TAG:timecode) 中找到。