ffprobe 文档

目录

1 概要

ffprobe [选项] 输入_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 的文件中加载 filtergraph 描述。

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]

匹配具有给定处置的流。dispositions 是一个或多个处置的列表(由 -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

显示流的配置。

-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

默认情况下,程序将日志记录到 stderr。如果终端支持着色,则使用颜色标记错误和警告。可以通过设置环境变量 AV_LOG_FORCE_NOCOLOR 来禁用日志着色,也可以通过设置环境变量 AV_LOG_FORCE_COLOR 来强制启用。

-report

将完整的命令行和日志输出转储到当前目录中名为 program-YYYYMMDD-HHMMSS.log 的文件中。此文件对于错误报告很有用。它还隐含了 -loglevel debug

将环境变量 FFREPORT 设置为任何值都具有相同的效果。如果该值是以“:”分隔的键=值序列,则这些选项将影响报告;如果选项值包含特殊字符或选项分隔符“:”,则必须对其进行转义(请参阅 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
Specific Processors
pentium2
pentium3
pentium4
k6
k62
athlon
athlonxp
k8
-cpucount count (全局)

覆盖检测 CPU 核心数。此选项用于测试,除非您清楚自己在做什么,否则请勿使用。

ffmpeg -cpucount 2
-max_alloc 字节数

设置 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 格式

强制使用的格式。

-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 写入器名称[=写入器选项]

设置输出打印格式。

写入器名称指定写入器的名称,写入器选项 指定要传递给写入器的选项。

例如,要以 JSON 格式打印输出,请指定

-output_format json

有关可用输出打印格式的更多详细信息,请参阅下面的“写入器”部分。

-sections

打印章节结构和章节信息,然后退出。输出不打算由机器解析。

-select_streams 流指定符

仅选择由 流指定符 指定的流。此选项仅影响与流相关的选项(例如 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 算法

显示有效载荷数据的哈希值,对于带有 -show_packets 的数据包,以及带有 -show_streams 的编解码器附加数据。

-show_error

显示尝试探测输入时发现的错误信息。

错误信息在名称为“ERROR”的章节中打印。

-show_format

显示有关输入多媒体流的容器格式的信息。

所有容器格式信息都在名称为“FORMAT”的章节中打印。

-show_format_entry 名称

-show_format 类似,但仅打印容器格式信息的指定条目,而不是全部。此选项可以多次给出,然后将显示所有指定的条目。

此选项已弃用,请改用 show_entries

-show_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),显示来自解码器有关每个帧的日志信息。此选项需要 -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 读取间隔

仅读取指定的间隔。读取间隔 必须是由“,”分隔的间隔规范序列。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

一些写入器(例如 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 输入 URL

读取 输入 URL

-o 输出 URL

将输出写入 输出 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 default

默认格式。

以以下形式打印每个部分

[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

平面格式。

一种自由格式输出,其中每行都包含一个显式键=值,例如“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’和以下字符被转义
  • \’是转义字符
  • #’是注释指示符
  • =’是键/值分隔符
  • :’未使用,但通常被解析为键/值分隔符

此写入器接受的选项为 = 对的列表,用 ‘:’ 分隔。

以下是接受的选项的说明。

hierarchical, h

指定节名称规范是否应为分层的。如果设置为 1,并且当前章节中有多个节,则节名称将以章节名称为前缀。值为 0 将禁用此行为。

默认值为 1。

4.5 json

基于 JSON 的格式。

每个部分都使用 JSON 符号打印。

以下是接受的选项的说明。

紧凑模式, c

如果设置为 1,则启用紧凑输出,即每个部分将打印在单行上。默认值为 0。

有关 JSON 的更多信息,请参阅 http://www.json.org/

4.6 xml

基于 XML 的格式。

XML 输出在 FFmpeg 数据目录中安装的 XML 模式描述文件 ffprobe.xsd 中进行了描述。

该模式的更新版本可以在 URL http://www.ffmpeg.org/schema/ffprobe.xsd 获取,该 URL 会重定向到提交到 FFmpeg 开发源代码树的最新模式。

请注意,只有在没有指定特殊的全局输出选项(unitprefixbyte_binary_prefixsexagesimal 等)的情况下,发出的输出才符合 ffprobe.xsd 模式。

以下是接受的选项的说明。

完全限定, 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 提供