1 选项​

所有数字选项(如果未另行指定)都接受表示数字的字符串作为输入,该字符串后跟一个 SI 单位前缀,例如:"K"、"M"或"G"。

如果将"i"附加到SI单位前缀,则完整的前缀将被解释为二进制倍数的单位前缀,其基于1024的幂而不是1000的幂。将"B"附加到 SI 单位前缀会将该值乘以 8。这允许使用例如:"KB","MiB","G"和"B"作为数字后缀。

不带参数的选项是布尔选项,并将相应的值设置为 true。可以通过在选项名称前面加上"no"前缀来将它们设置为 false。例如,使用"-nofoo"会将名称为"foo"的布尔选项设置为 false。

1.1 流说明符​​​

某些选项适用于每个流,例如比特率或编解码器。流说明符用于精确指定给定选项所属的流。

流说明符是通常附加到选项名称并用冒号分隔的字符串。例如 包含与第二个音频流匹配的流说明符。因此,它将为第二个音频流选择 ac3 编解码器。​​-codec:a:1 ac3​​​​a:1​

流说明符可以匹配多个流,以便将该选项应用于所有流。例如,中的流说明符与所有音频流匹配。​​-b:a 128k​

空流说明符匹配所有流。例如,或者将复制所有流而不重新编码。​​-codec copy​​​​-codec: copy​

流说明符的可能形式包括:

stream_index

将流与此索引匹配。例如 会将第二个流的线程计数设置为 4。如果 用作附加流说明符(见下文),则它从匹配的流中选择流编号。流编号基于libavformat检测到的流的顺序,除非还指定了程序ID。在这种情况下,它基于程序中流的顺序。​​-threads:1 4​​stream_indexstream_index

stream_type[:additional_stream_specifier]

stream_type是以下之一:"v"或"V"表示视频,"a"表示音频,"s"表示字幕,"d"表示数据,"t"表示附件。"v"匹配所有视频流,"V"仅匹配未附加图片、视频缩略图或封面艺术的视频流。如果使用,则它与具有此类型且与 匹配 的流匹配。否则,它将匹配指定类型的所有流。additional_stream_specifieradditional_stream_specifier

p:program_id[:additional_stream_specifier]

将程序中的流与 id 匹配。如果使用,则它匹配流,这两个流都是程序的一部分,并且与 .program_idadditional_stream_specifieradditional_stream_specifier

#stream_id or i:stream_id

逐个流 ID 匹配流(例如 MPEG-TS 容器中的 PID)。

m:key[:value]

将流与具有指定值的元数据标记进行匹配。如果未给出,则 将包含给定标记的流与任何值进行匹配。keyvalue

u

将流与可用配置相匹配,必须定义编解码器,并且必须存在视频尺寸或音频采样率等基本信息。

请注意,在 中,按元数据匹配将仅适用于输入文件。​​ffmpeg​

1.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

"重复"

指示不应将重复的日志输出压缩到第一行,并且将省略"最后一条消息重复 n 次"行。

'水平'

指示日志输出应向每个消息行添加前缀。这可以用作日志着色的替代方法,例如,在将日志转储到文件时。​​[level]​

还可以通过添加"+"/"-"前缀来单独使用标志,以设置/重置单个标志,而不会影响其他标志或更改。同时设置 和 时,在最后一个值和之前之间需要一个"+"分隔符。flagsloglevelflagsloglevelflagsloglevel

loglevel是包含下列值之一的字符串或数字:

"安静,-8"

什么都不显示;沉默。

"恐慌,0"

仅显示可能导致进程崩溃的致命错误,例如断言失败。这目前不用于任何事情。

"致命,8"

仅显示致命错误。这些是错误,之后该过程绝对无法继续。

"错误,16"

显示所有错误,包括可以从中恢复的错误。

"警告,24"

显示所有警告和错误。将显示与可能不正确或意外事件相关的任何消息。

'信息, 32'

在处理过程中显示信息性消息。除了警告和错误之外,这还有。这是默认值。

"详细,40"

与 相同,只是更详细。​​info​

'调试, 48'

显示所有内容,包括调试信息。

'跟踪, 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​

将环境变量设置为任何值具有相同的效果。如果值是以":"分隔的键=值序列,则这些选项将影响报表;如果选项值包含特殊字符或选项分隔符":",则必须对其进行转义(请参阅 ffmpeg-utils 手册中的"引用和转义"部分)。​​FFREPORT​

可识别以下选项:

file

设置用于报告的文件名; 被扩展为程序的名称,被扩展为时间戳,被扩展为一个普通的​​%p​​​​%t​​​​%%​​​​%​

level

使用数值设置日志详细级别(请参见)。​​-loglevel​

例如,要将报告输出到使用日志级别 (日志级别的别名) 命名的文件,ffreport.log​​32​​​​info​

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"'毫米x''mmxext''sse''sse2''sse2slow''sse3''sse3slow''ssse3'"原子"'sse4.1''sse4.2''avx''avx2''xop''fma3''fma4''3dnow''3dnowext''bmi1''bmi2''cmov''手臂''armv5te''armv6''armv6t2''vfp''vfpv3'"霓虹灯"'setend'"AArch64"'armv8''vfp'"霓虹灯"'PowerPC''altivec'"特定处理器"'奔腾2''奔腾3''奔腾4''k6''k62'"速龙"'速龙xp''k8'-cpucount count (global)

覆盖 CPU 计数的检测。此选项用于测试。除非您知道自己在做什么,否则不要使用它。

ffmpeg -cpucount 2

-max_alloc bytes

通过 ffmpeg 的 malloc 函数系列设置在堆上分配块的最大大小限制。使用此选项时要格外小心。如果您不了解这样做的全部后果,请不要使用。默认值为 INT_MAX。