ffprobe 文档

网站翻译由林建有提供支持

目录

1 Synopsis

ffprobe [options] input_url

2 Description

ffprobe gathers information from multimedia streams and prints it in human- and machine-readable fashion.

For example it can be used to check the format of the container used by a multimedia stream and the format and type of each media stream contained in it.

如果在输入中指定了一个 URL,ffprobe 将尝试打开并探测该 URL 的内容。如果无法打开 URL 或无法将其识别为多媒体文件,则返回一个正退出代码。

如果没有指定输出为offprobe 将写入 stdout。

ffprobe 既可以作为独立应用程序使用,也可以与文本过滤器结合使用,例如进行更复杂的处理,如统计处理或绘图。

选项用于列出 ffprobe 支持的一些格式,或指定显示哪些信息,并设置 ffprobe 将如何显示它。

ffprobe 的输出设计为易于被文本过滤器解析,由一种由所选写入器定义的格式组成,该写入器通过output_format选项指定。

部分可能包含其他嵌套部分,并通过名称(可能与其他部分共享)和一个唯一名称标识。参见sections.

容器或流中存储的元数据标签在相应的 "FORMAT"、"STREAM"、"STREAM_GROUP_STREAM" 或 "PROGRAM_STREAM" 部分中被识别并打印。

3 选项

所有数值选项,除非另有明确说明,接受表示数字的字符串作为输入,并且该字符串后可以跟随一个 SI 单位前缀,例如:'K'、'M' 或 'G'。

如果 SI 单位前缀后附加 'i',则完整前缀将被解释为基于 1024 的二进制倍数单位前缀,而不是基于 1000 的倍数。在 SI 单位前缀后附加 'B' 会将值乘以 8。例如,可以使用像 'KB'、'MiB'、'G' 和 'B' 作为数字后缀。

不接受参数的选项是布尔选项,并将相应的值设置为真。可以通过在选项名称前加前缀 "no" 将其设置为假。例如,使用 "-nofoo" 将布尔选项名称为 "foo" 的值设置为假。

接受参数的选项支持一种特殊语法,其中命令行上给定的参数被解释为文件的路径,实际的参数值将从该文件加载。要使用此功能,请在选项名称前立即添加一个正斜杠 '/'(在前导破折号之后)。例如:

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]

匹配属于节目 IDprogram_id的流。如果additional_stream_specifier被使用,则它匹配同时属于该节目并匹配additional_stream_specifier.

#stream_id or i:stream_id

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

m:key[:value]

匹配具有元数据标签key包含指定值的流。如果value未给出,则匹配包含给定标签且具有任何值的流。

disp:dispositions[:additional_stream_specifier]

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

显示流的 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).

例如,输出报告到名为ffreport.log使用日志级别32(日志级别的别名info):

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 计数 (全局)

覆盖 CPU 数量检测。此选项仅供测试使用。除非您确切了解自己在做什么,否则不要使用它。

ffmpeg -cpucount 2
-max_alloc 字节

设置 FFmpeg 的分配函数在堆上分配块的最大大小限制。在使用此选项时务必小心。如果您不了解这样做的后果,请不要使用默认值(INT_MAX)。

3.3 AVOptions

这些选项直接由 libavformat、libavdevice 和 libavcodec 库提供。要查看可用 AVOptions 的列表,请使用-help选项。它们分为两类:

generic

这些选项可以针对任何容器、编解码器或设备进行设置。通用选项列在容器/设备的 AVFormatContext 选项下以及编解码器的 AVCodecContext 选项下。

private

这些选项特定于给定的容器、设备或编解码器。私有选项列在其对应的容器/设备/编解码器下。

例如,要在 MP3 文件中写入 ID3v2.3 头而不是默认的 ID3v2.4,请使用id3v2_versionMP3 混合器的私有选项:

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 writer_name[=writer_options]

设置输出打印格式。

writer_name指定编写器名称,而writer_options指定要传递给编写器的选项。

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

-output_format json

有关可用输出打印格式的更多详细信息,请参阅以下的 Writers 部分。

-sections

打印 section 结构和 section 信息,然后退出。输出 并不是为了机器解析。

-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结合使用时,将转储编解码器的额外数据。

转储内容以 "data" 字段形式打印。可能包含换行符。

-show_data_hash 算法

显示载荷数据的哈希,在-show_packets的数据包和在-show_streams.

-show_error

中显示编解码器额外数据的哈希。

错误信息打印在名称为"ERROR"的区域中。

-show_format

展示输入多媒体流的容器格式信息。

所有容器格式信息打印在名为"FORMAT"的区域中。

-show_format_entry 名称

-show_format, 但只打印容器格式信息中预计条目

被多次指定。这种情况下 所有指定区域都将展示。show_entries

-show_entries 显示的注册条目

显示的条目需要如下格式

Entries are specified according to the following syntax. section_entries contains a list of section entries separated by :. Each section entry is composed by a section name (or unique name), optionally followed by a list of entries local to that section, separated by ,.

If section name is specified but is followed by no =, all entries are printed to output, together with all the contained sections. Otherwise only the entries specified in the local section entries list are printed. In particular, if = is specified but the list of local entries is empty, then no entries will be shown for that section.

Note that the order of specification of the local section entries is not honored in the output, and the usual display order will be retained.

The formal syntax is given by:

LOCAL_SECTION_ENTRIES ::= SECTION_ENTRY_NAME[,LOCAL_SECTION_ENTRIES]
SECTION_ENTRY         ::= SECTION_NAME[=[LOCAL_SECTION_ENTRIES]]
SECTION_ENTRIES       ::= SECTION_ENTRY[:SECTION_ENTRIES]

For example, to show only the index and type of each stream, and the PTS time, duration time, and stream index of the packets, you can specify the argument:

packet=pts_time,duration_time,stream_index : stream=index,codec_type

To show all the entries in the section "format", but only the codec type in the section "stream", specify the argument:

format : stream=codec_type

To show all the tags in the stream and format sections:

stream_tags : format_tags

To show only the title tag (if available) in the stream sections:

stream_tags=title
-show_packets

Show information about each packet contained in the input multimedia stream.

The information for each single packet is printed within a dedicated section with name "PACKET".

-show_frames

Show information about each frame and subtitle contained in the input multimedia stream.

The information for each single frame is printed within a dedicated section with name "FRAME" or "SUBTITLE".

-show_log loglevel

Show logging information from the decoder about each frame according to the value set in loglevel, (see -loglevel). This option requires -show_frames.

The information for each log message is printed within a dedicated section with name "LOG".

-show_streams

Show information about each media stream contained in the input multimedia stream.

Each media stream information is printed within a dedicated section with name "STREAM".

-show_programs

Show information about programs and their streams contained in the input multimedia stream.

Each media stream information is printed within a dedicated section with name "PROGRAM_STREAM".

-show_stream_groups

Show information about stream groups and their streams contained in the input multimedia stream.

Each media stream information is printed within a dedicated section with name "STREAM_GROUP_STREAM".

-show_chapters

Show information about chapters stored in the format.

Each chapter is printed within a dedicated section with name "CHAPTER".

-count_frames

Count the number of frames per stream and report it in the corresponding stream section.

-count_packets

Count the number of packets per stream and report it in the corresponding stream section.

-read_intervals read_intervals

Read only the specified intervals. read_intervals must be a sequence of interval specifications separated by ",". ffprobe will seek to the interval starting point, and will continue reading from that.

Each interval is specified by two optional parts, separated by "%".

The first part specifies the interval start position. It is interpreted as an absolute position, or as a relative offset from the current position if it is preceded by the "+" character. If this first part is not specified, no seeking will be performed when reading this interval.

The second part specifies the interval end position. It is interpreted as an absolute position, or as a relative offset from the current position if it is preceded by the "+" character. If the offset specification starts with "#", it is interpreted as the number of packets to read (not including the flushing packets) from the interval start. If no second part is specified, the program will read until the end of the input.

Note that seeking is not accurate, thus the actual interval start point may be different from the specified position. Also, when an interval duration is specified, the absolute end time will be computed by adding the duration to the interval start point found by seeking the file, rather than to the specified start value.

The formal syntax is given by:

INTERVAL  ::= [START|+START_OFFSET][%[END|+END_OFFSET]]
INTERVALS ::= INTERVAL[,INTERVALS]

A few examples follow.

  • Seek to time 10, read packets until 20 seconds after the found seek point, then seek to position 01:30 (1 minute and thirty seconds) and read packets until position 01:45.
    10%+20,01:30%01:45
    
  • Read only 42 packets after seeking to position 01:23:
    01:23%+#42
    
  • Read only the first 20 seconds from the start:
    %+20
    
  • Read from the start until position 02:30:
    %02:30
    
-show_private_data, -private

Show private data, that is data depending on the format of the particular shown element. This option is enabled by default, but you may need to disable it for specific uses, for example when creating XSD-compliant XML output.

-show_program_version

Show information related to program version.

Version information is printed within a section with name "PROGRAM_VERSION".

-show_library_versions

Show information related to library versions.

Version information for each library is printed within a section with name "LIBRARY_VERSION".

-show_versions

Show information related to program and library versions. This is the equivalent of setting both -show_program_version and -show_library_versions options.

-show_pixel_formats

Show information about all pixel formats supported by FFmpeg.

Pixel format information for each format is printed within a section with name "PIXEL_FORMAT".

-show_optional_fields value

Some writers viz. JSON and XML, omit the printing of fields with invalid or non-applicable values, while other writers always print them. This option enables one to control this behaviour. Valid values are always/1, never/0 and auto/-1. Default is auto.

-bitexact

Force bitexact output, useful to produce output which is not dependent on the specific build.

-i input_url

Read input_url.

-o output_url

Write output to output_url. If not specified, the output is sent to stdout.

4 Writers

A writer defines the output format adopted by ffprobe, and will be used for printing all the parts of the output.

A writer may accept one or more arguments, which specify the options to adopt. The options are specified as a list of key=value pairs, separated by ":".

All writers support the following options:

string_validation, sv

Set string validation mode.

The following values are accepted.

fail

如果输入中发现无效的字符串 (UTF-8) 序列或代码点,写入器将立即失败。这对于验证输入元数据特别有用。

ignore

任何验证错误都会被忽略。这可能会导致输出损坏,特别是使用 json 或 xml 写入器时。

replace

写入器将用指定的字符串替代无效的 UTF-8 序列或代码点。string_validation_replacement.

默认值是 ‘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 紧凑型, 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

执行类似于 RFC4180 的 CSV 转义。包含换行符 (‘\n’)、回车符 (‘\r’)、双引号 (‘"’)、或SEP的字符串将用双引号括起来。

none

不执行转义。

print_section, p

如果值是1,在每行的开头打印部分名称;如果值是0,则禁用它。默认值为1.

4.3 平面格式

平板格式。

一种自由格式输出,每行包含明确的 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 输出在 XML 模式说明文件中描述ffprobe.xsd安装于 FFmpeg 数据目录中。

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

注意,仅当未指定特殊的全局输出选项(ffprobe.xsd等)时,生成的输出将符合unit, prefix, byte_binary_prefix, sexagesimal模式。

下面描述了接受的选项。

fully_qualified, q

如果设置为 1,则指定输出是否应完全限定。默认值为 0。这对于生成可以通过 XSD 文件验证的 XML 文件是必需的。

xsd_strict, x

如果设置为 1,则执行更多检查以确保输出符合 XSD 标准。默认值为 0。此选项会自动将fully_qualified设置为 1。

有关 XML 格式的更多信息,请参见https://www.w3.org/XML/.

5 时间码

ffprobe支持时间码提取:

  • 从 GOP 中提取 MPEG1/2 时间码,并在视频流细节中可用(-show_streams,参见时间码).
  • MOV 时间码从 tmcd 轨道中提取,因此在 tmcd 流元数据中可用(-show_streams,参见TAG:时间码).
  • DV、GXF 和 AVI 时间码可在格式元数据中找到(-show_format,参见TAG:时间码).

6 语法

本节记录了 FFmpeg 库和工具采用的语法和格式。

6.1 引用和转义

除非明确指定,FFmpeg 采用以下引用和转义机制。应用以下规则:

  • '‘ 和 ‘\’ 是特殊字符(分别用于引用和转义)。此外,根据所用转义和引用的具体语法,还可能有其他特殊字符。
  • 通过在特殊字符前加上 ‘\’.
  • 将其转义。''被 ‘'’ 括起来的所有字符在解析字符串中都将被字面包含。引用字符 ‘
  • ’ 本身不能被引用,因此可能需要关闭引用并转义它。

除非被转义或引用,解析字符串中会移除开头和结尾的空格。

使用命令行或脚本时,根据采用的 shell 语言的语法,可能需要增加第二层转义。av_get_token函数libavutil/avstring.h中定义

可用于解析根据上述规则引用或转义的标记。tools/ffescapeFFmpeg 源代码树中的工具

6.1.1 例子

  • 转义字符串Crime d'Amour包含'特殊字符:
    Crime d\'Amour
    
  • 上述字符串包含一个引用,因此'在引用时需要对其进行转义:
    'Crime d'\''Amour'
    
  • 使用引用包含前导或尾随空格:
    '  this string starts and ends with whitespaces  '
    
  • 可以混合使用转义和引用:
    ' The string '\'string\'' is a string '
    
  • 要包含一个字面上的 ‘\’,可以使用转义或引用:
    'c:\foo' can be written as c:\\foo
    

6.2 日期

接受的语法是:

[(YYYY-MM-DD|YYYYMMDD)[T|t| ]]((HH:MM:SS[.m...]]])|(HHMMSS[.m...]]]))[Z]
now

如果值为 "now",则取当前时间。

时间是本地时间,除非附加了 Z,这种情况视为 UTC。 如果未指定年-月-日部分,则采用当前的年-月-日。

6.3 持续时间

有两种接受的语法来表示时间持续时间。

[-][小时::]分钟::秒:[.小数位:...]

小时表示小时数,分钟最多 2 位,用于表示分钟数,最多 2 位,用于表示秒数。小数位表示秒的小数部分。秒:.

[-]S+[.小数位:...][s|ms|us]

秒:表示秒数,并带有可选的小数部分小数位。 可选的文字后缀 ‘s’, ‘ms’ 或 ‘us’ 表示将值解释为秒、毫秒或微秒。

在两种表达形式中,可选的 ‘-’ 表示负持续时间。

6.3.1 例子

以下示例都是有效的时间持续时间:

55

55 秒

0.2

0.2 秒

200ms

200 毫秒,即 0.2 秒

200000us

200000 微秒,即 0.2 秒

12:03:45

12 小时、03 分钟和 45 秒

23.189

23.189 秒

6.4 视频大小

指定源视频的大小,可以是形式为宽度x高度的字符串,或者是一个尺寸缩写名。

以下缩写名可识别:

ntsc

720x480

pal

720x576

qntsc

352x240

qpal

352x288

sntsc

640x480

spal

768x576

film

352x240

ntsc-film

352x240

sqcif

128x96

qcif

176x144

cif

352x288

4cif

704x576

16cif

1408x1152

qqvga

160x120

qvga

320x240

vga

640x480

svga

800x600

xga

1024x768

uxga

1600x1200

qxga

2048x1536

sxga

1280x1024

qsxga

2560x2048

hsxga

5120x4096

wvga

852x480

wxga

1366x768

wsxga

1600x1024

wuxga

1920x1200

woxga

2560x1600

wqsxga

3200x2048

wquxga

3840x2400

whsxga

6400x4096

whuxga

7680x4800

cga

320x200

ega

640x350

hd480

852x480

hd720

1280x720

hd1080

1920x1080

2k

2048x1080

2kflat

1998x1080

2kscope

2048x858

4k

4096x2160

4kflat

3996x2160

4kscope

4096x1716

nhd

640x360

hqvga

240x160

wqvga

400x240

fwqvga

432x240

hvga

480x320

qhd

960x540

2kdci

2048x1080

4kdci

4096x2160

uhd2160

3840x2160

uhd4320

7680x4320

6.5 视频速率

指定视频的帧速率,以每秒生成的帧数表示。必须是以下格式的字符串帧速率_分子/帧速率_分母,整数,浮点数或有效视频帧速率缩写。

以下缩写名称可被识别:

ntsc

30000/1001

pal

25/1

qntsc

30000/1001

qpal

25/1

sntsc

30000/1001

spal

25/1

film

24/1

ntsc-film

24000/1001

6.6 比率

比率可以表现为一个表达式,或形式为分子:分母.

的字符串。 请注意,具有无限值(如 1/0)或负值的比率被认为是有效的,因此如果您希望排除这些值,需要对返回值进行检查。

未定义的值可以用字符串 "0:0" 表示。

6.7 颜色

它可以是不区分大小写的定义在下表中的颜色名,或者[0x|#]RRGGBB[AA]RGB 序列后可能带有 @ 和表示透明度组成成分的字符串。

透明度组成字符串可以由 "0x" 开头的十六进制数或介于 0.0 和 1.0 之间的十进制数字组成,表示不透明度(‘0x00’ 或 ‘0.0’ 表示完全透明,‘0xff’ 或 ‘1.0’ 表示完全不透明)。如果未指定透明度部分,则假定为 ‘0xff’。

字符串 ‘random’ 将导致生成随机颜色。

以下颜色名称被识别:

AliceBlue

0xF0F8FF

AntiqueWhite

0xFAEBD7

Aqua

0x00FFFF

Aquamarine

0x7FFFD4

Azure

0xF0FFFF

Beige

0xF5F5DC

Bisque

0xFFE4C4

Black

0x000000

BlanchedAlmond

0xFFEBCD

Blue

0x0000FF

BlueViolet

0x8A2BE2

Brown

0xA52A2A

BurlyWood

0xDEB887

CadetBlue

0x5F9EA0

Chartreuse

0x7FFF00

Chocolate

0xD2691E

Coral

0xFF7F50

CornflowerBlue

0x6495ED

Cornsilk

0xFFF8DC

Crimson

0xDC143C

Cyan

0x00FFFF

DarkBlue

0x00008B

DarkCyan

0x008B8B

DarkGoldenRod

0xB8860B

DarkGray

0xA9A9A9

DarkGreen

0x006400

DarkKhaki

0xBDB76B

DarkMagenta

0x8B008B

DarkOliveGreen

0x556B2F

Darkorange

0xFF8C00

DarkOrchid

0x9932CC

DarkRed

0x8B0000

DarkSalmon

0xE9967A

DarkSeaGreen

0x8FBC8F

DarkSlateBlue

0x483D8B

DarkSlateGray

0x2F4F4F

DarkTurquoise

0x00CED1

DarkViolet

0x9400D3

DeepPink

0xFF1493

DeepSkyBlue

0x00BFFF

DimGray

0x696969

DodgerBlue

0x1E90FF

FireBrick

0xB22222

FloralWhite

0xFFFAF0

ForestGreen

0x228B22

Fuchsia

0xFF00FF

Gainsboro

0xDCDCDC

GhostWhite

0xF8F8FF

Gold

0xFFD700

GoldenRod

0xDAA520

Gray

0x808080

Green

0x008000

GreenYellow

0xADFF2F

HoneyDew

0xF0FFF0

HotPink

0xFF69B4

IndianRed

0xCD5C5C

Indigo

0x4B0082

Ivory

0xFFFFF0

Khaki

0xF0E68C

Lavender

0xE6E6FA

LavenderBlush

0xFFF0F5

LawnGreen

0x7CFC00

LemonChiffon

0xFFFACD

LightBlue

0xADD8E6

LightCoral

0xF08080

LightCyan

0xE0FFFF

LightGoldenRodYellow

0xFAFAD2

LightGreen

0x90EE90

LightGrey

0xD3D3D3

LightPink

0xFFB6C1

LightSalmon

0xFFA07A

LightSeaGreen

0x20B2AA

LightSkyBlue

0x87CEFA

LightSlateGray

0x778899

LightSteelBlue

0xB0C4DE

LightYellow

0xFFFFE0

Lime

0x00FF00

LimeGreen

0x32CD32

Linen

0xFAF0E6

Magenta

0xFF00FF

Maroon

0x800000

MediumAquaMarine

0x66CDAA

MediumBlue

0x0000CD

MediumOrchid

0xBA55D3

MediumPurple

0x9370D8

MediumSeaGreen

0x3CB371

MediumSlateBlue

0x7B68EE

MediumSpringGreen

0x00FA9A

MediumTurquoise

0x48D1CC

MediumVioletRed

0xC71585

MidnightBlue

0x191970

MintCream

0xF5FFFA

MistyRose

0xFFE4E1

Moccasin

0xFFE4B5

NavajoWhite

0xFFDEAD

Navy

0x000080

OldLace

0xFDF5E6

Olive

0x808000

OliveDrab

0x6B8E23

Orange

0xFFA500

OrangeRed

0xFF4500

Orchid

0xDA70D6

PaleGoldenRod

0xEEE8AA

PaleGreen

0x98FB98

PaleTurquoise

0xAFEEEE

PaleVioletRed

0xD87093

PapayaWhip

0xFFEFD5

PeachPuff

0xFFDAB9

Peru

0xCD853F

Pink

0xFFC0CB

Plum

0xDDA0DD

PowderBlue

0xB0E0E6

Purple

0x800080

Red

0xFF0000

RosyBrown

0xBC8F8F

RoyalBlue

0x4169E1

SaddleBrown

0x8B4513

Salmon

0xFA8072

SandyBrown

0xF4A460

SeaGreen

0x2E8B57

SeaShell

0xFFF5EE

Sienna

0xA0522D

Silver

0xC0C0C0

SkyBlue

0x87CEEB

SlateBlue

0x6A5ACD

SlateGray

0x708090

Snow

0xFFFAFA

SpringGreen

0x00FF7F

SteelBlue

0x4682B4

Tan

0xD2B48C

Teal

0x008080

Thistle

0xD8BFD8

Tomato

0xFF6347

Turquoise

0x40E0D0

Violet

0xEE82EE

Wheat

0xF5DEB3

White

0xFFFFFF

WhiteSmoke

0xF5F5F5

Yellow

0xFFFF00

YellowGreen

0x9ACD32

6.8声道布局

声道布局指定了多声道音频流中各声道的空间分布。为了指定声道布局,FFmpeg使用了一种特殊的语法。

各个声道由下表给出的id标识:

FL

前左

FR

前右

FC

前中

LFE

低频

BL

后左

BR

后右

FLC

前左-中

FRC

前右-中

BC

后中

SL

侧左

SR

侧右

TC

顶部中

TFL

顶部前左

TFC

顶部前中

TFR

顶部前右

TBL

顶部后左

TBC

顶部后中

TBR

顶部后右

DL

下混合左

DR

下混合右

WL

宽左

WR

宽右

SDL

环绕直接左

SDR

环绕直接右

LFE2

低频2

标准声道布局组合可以通过使用以下标识符来指定:

mono

FC

stereo

FL+FR

2.1

FL+FR+LFE

3.0

FL+FR+FC

3.0(back)

FL+FR+BC

4.0

FL+FR+FC+BC

quad

FL+FR+BL+BR

quad(side)

FL+FR+SL+SR

3.1

FL+FR+FC+LFE

5.0

FL+FR+FC+BL+BR

5.0(side)

FL+FR+FC+SL+SR

4.1

FL+FR+FC+LFE+BC

5.1

FL+FR+FC+LFE+BL+BR

5.1(side)

FL+FR+FC+LFE+SL+SR

6.0

FL+FR+FC+BC+SL+SR

6.0(front)

FL+FR+FLC+FRC+SL+SR

3.1.2

FL+FR+FC+LFE+TFL+TFR

hexagonal

FL+FR+FC+BL+BR+BC

6.1

FL+FR+FC+LFE+BC+SL+SR

6.1

FL+FR+FC+LFE+BL+BR+BC

6.1(front)

FL+FR+LFE+FLC+FRC+SL+SR

7.0

FL+FR+FC+BL+BR+SL+SR

7.0(front)

FL+FR+FC+FLC+FRC+SL+SR

7.1

FL+FR+FC+LFE+BL+BR+SL+SR

7.1(wide)

FL+FR+FC+LFE+BL+BR+FLC+FRC

7.1(wide-side)

FL+FR+FC+LFE+FLC+FRC+SL+SR

5.1.2

FL+FR+FC+LFE+BL+BR+TFL+TFR

octagonal

FL+FR+FC+BL+BR+BC+SL+SR

cube

FL+FR+BL+BR+TFL+TFR+TBL+TBR

5.1.4

FL+FR+FC+LFE+BL+BR+TFL+TFR+TBL+TBR

7.1.2

FL+FR+FC+LFE+BL+BR+SL+SR+TFL+TFR

7.1.4

FL+FR+FC+LFE+BL+BR+SL+SR+TFL+TFR+TBL+TBR

7.2.3

FL+FR+FC+LFE+BL+BR+SL+SR+TFL+TFR+TBC+LFE2

9.1.4

FL+FR+FC+LFE+BL+BR+FLC+FRC+SL+SR+TFL+TFR+TBL+TBR

hexadecagonal

FL+FR+FC+BL+BR+BC+SL+SR+WL+WR+TBL+TBR+TBC+TFC+TFL+TFR

downmix

DL+DR

22.2

FL+FR+FC+LFE+BL+BR+FLC+FRC+BC+SL+SR+TC+TFL+TFC+TFR+TBL+TBC+TBR+LFE2+TSL+TSR+BFC+BFL+BFR

可以通过“+”分隔的术语序列来指定自定义声道布局。每个术语可以是:

  • 单个声道的名称(例如‘FL’, ‘FR’, ‘FC’, ‘LFE’等),每个术语可以包含一个’@’后的自定义名称(例如‘FL@Left’, ‘FR@Right’, ‘FC@Center’, ‘LFE@Low_Frequency’等)

可以通过以下方式指定标准声道布局:

  • 单个声道的名称(例如‘FL’, ‘FR’, ‘FC’, ‘LFE’等)
  • 标准声道布局的名称(例如‘mono’, ‘stereo’, ‘4.0’, ‘quad’, ‘5.0’等)
  • 一个以十进制表示的声道数量,后面加上“c”,产生该声道数量的默认布局(参见该函数av_channel_layout_default)。注意,并非所有声道数量都有默认布局。
  • 一个以十进制表示的声道数量,后面加上“C”,表示具有指定声道数量的未知声道布局。注意,并非所有声道布局字符串支持未知声道布局。
  • 以十六进制“0x”开始的声道布局掩码(参见AV_CH_*中的宏。libavutil/channel_layout.h.

在libavutil版本53之前,指定声道数量的尾随字符“c”是可选的,但现在是必需的。同时,声道布局掩码也可以表示为十进制数字(如果且仅如果未后接“c” 或“C”)。

另见函数av_channel_layout_from_string定义于libavutil/channel_layout.h.

7 表达式求值

在评估算术表达式时,FFmpeg通过一个实现于libavutil/eval.h接口的内部公式求值器实现。

表达式可以包含一元、二元运算符、常量和函数。

两个表达式表达式1表达式2可以组合形成另一个表达式“表达式1;表达式2". 表达式1表达式2依次求值,新的表达式的求值结果为表达式2.

以下是可用的二元运算符:+, -, *, /, ^.

以下是一元运算符:+, -.

可以用一些内部变量存储和加载中间结果。它们可以通过ldst函数访问,带有索引参数,范围从0到9,用于指定访问的内部变量。

以下是可用的函数:

abs(x)

计算的进制值x.

acos(x)

Compute arccosine of x.

asin(x)

Compute arcsine of x.

atan(x)

Compute arctangent of x.

atan2(y, x)

Compute principal value of the arc tangent of y/x.

between(x, min, max)

Return 1 if x is greater than or equal to min and lesser than or equal to max, 0 otherwise.

bitand(x, y)
bitor(x, y)

Compute bitwise and/or operation on x and y.

The results of the evaluation of x and y are converted to integers before executing the bitwise operation.

Note that both the conversion to integer and the conversion back to floating point can lose precision. Beware of unexpected results for large numbers (usually 2^53 and larger).

ceil(expr)

Round the value of expression expr upwards to the nearest integer. For example, "ceil(1.5)" is "2.0".

clip(x, min, max)

Return the value of x clipped between min and max.

cos(x)

Compute cosine of x.

cosh(x)

Compute hyperbolic cosine of x.

eq(x, y)

Return 1 if x and y are equivalent, 0 otherwise.

exp(x)

Compute exponential of x (with base e, the Euler’s number).

floor(expr)

Round the value of expression expr downwards to the nearest integer. For example, "floor(-1.5)" is "-2.0".

gauss(x)

Compute Gauss function of x, corresponding to exp(-x*x/2) / sqrt(2*PI).

gcd(x, y)

Return the greatest common divisor of x and y. If both x and y are 0 or either or both are less than zero then behavior is undefined.

gt(x, y)

Return 1 if x is greater than y, 0 otherwise.

gte(x, y)

Return 1 if x is greater than or equal to y, 0 otherwise.

hypot(x, y)

This function is similar to the C function with the same name; it returns "sqrt(x*x + y*y)", the length of the hypotenuse of a right triangle with sides of length x and y, or the distance of the point (x, y) from the origin.

if(x, y)

Evaluate x, and if the result is non-zero return the result of the evaluation of y, return 0 otherwise.

if(x, y, z)

Evaluate x, and if the result is non-zero return the evaluation result of y, otherwise the evaluation result of z.

ifnot(x, y)

Evaluate x, and if the result is zero return the result of the evaluation of y, return 0 otherwise.

ifnot(x, y, z)

Evaluate x, and if the result is zero return the evaluation result of y, otherwise the evaluation result of z.

isinf(x)

Return 1.0 if x is +/-INFINITY, 0.0 otherwise.

isnan(x)

Return 1.0 if x is NAN, 0.0 otherwise.

ld(idx)

Load the value of the internal variable with index idx, which was previously stored with st(idx, expr). The function returns the loaded value.

lerp(x, y, z)

Return linear interpolation between x and y by amount of z.

log(x)

Compute natural logarithm of x.

lt(x, y)

Return 1 if x is lesser than y, 0 otherwise.

lte(x, y)

Return 1 if x is lesser than or equal to y, 0 otherwise.

max(x, y)

Return the maximum between x and y.

min(x, y)

Return the minimum between x and y.

mod(x, y)

Compute the remainder of division of x by y.

not(expr)

Return 1.0 if expr is zero, 0.0 otherwise.

pow(x, y)

Compute the power of x elevated y, it is equivalent to "(x)^(y)".

print(t)
print(t, l)

Print the value of expression t with loglevel l. If l is not specified then a default log level is used. Return the value of the expression printed.

random(idx)

Return a pseudo random value between 0.0 and 1.0. idx is the index of the internal variable used to save the seed/state, which can be previously stored with st(idx).

To initialize the seed, you need to store the seed value as a 64-bit unsigned integer in the internal variable with index idx.

For example, to store the seed with value 42 in the internal variable with index 0 and print a few random values:

st(0,42); print(random(0)); print(random(0)); print(random(0))
randomi(idx, min, max)

Return a pseudo random value in the interval between min and max. idx is the index of the internal variable which will be used to save the seed/state, which can be previously stored with st(idx).

To initialize the seed, you need to store the seed value as a 64-bit unsigned integer in the internal variable with index idx.

root(expr, max)

Find an input value for which the function represented by expr with argument ld(0) is 0 in the interval 0..max.

The expression in expr must denote a continuous function or the result is undefined.

ld(0) is used to represent the function input value, which means that the given expression will be evaluated multiple times with various input values that the expression can access through ld(0). When the expression evaluates to 0 then the corresponding input value will be returned.

round(expr)

Round the value of expression expr to the nearest integer. For example, "round(1.5)" is "2.0".

sgn(x)

Compute sign of x.

sin(x)

Compute sine of x.

sinh(x)

Compute hyperbolic sine of x.

sqrt(expr)

Compute the square root of expr. This is equivalent to "(expr)^.5".

squish(x)

Compute expression 1/(1 + exp(4*x)).

st(idx, expr)

Store the value of the expression expr in an internal variable. idx specifies the index of the variable where to store the value, and it is a value ranging from 0 to 9. The function returns the value stored in the internal variable.

The stored value can be retrieved with ld(var).

Note: variables are currently not shared between expressions.

tan(x)

Compute tangent of x.

tanh(x)

Compute hyperbolic tangent of x.

taylor(expr, x)
taylor(expr, x, idx)

Evaluate a Taylor series at x, given an expression representing the ld(idx)-th derivative of a function at 0.

When the series does not converge the result is undefined.

ld(idx) is used to represent the derivative order in expr, which means that the given expression will be evaluated multiple times with various input values that the expression can access through ld(idx). If idx is not specified then 0 is assumed.

Note, when you have the derivatives at y instead of 0, taylor(expr, x-y) can be used.

time(0)

Return the current (wallclock) time in seconds.

trunc(expr)

Round the value of expression expr towards zero to the nearest integer. For example, "trunc(-1.5)" is "-1.0".

while(cond, expr)

Evaluate expression expr while the expression cond is non-zero, and returns the value of the last expr evaluation, or NAN if cond was always false.

The following constants are available:

PI

area of the unit disc, approximately 3.14

E

exp(1) (Euler’s number), approximately 2.718

PHI

golden ratio (1+sqrt(5))/2, approximately 1.618

Assuming that an expression is considered "true" if it has a non-zero value, note that:

* works like AND

+ works like OR

For example the construct:

if (A AND B) then C

is equivalent to:

if(A*B, C)

In your C code, you can extend the list of unary and binary functions, and define recognized constants, so that they are available for your expressions.

The evaluator also recognizes the International System unit prefixes. If ’i’ is appended after the prefix, binary prefixes are used, which are based on powers of 1024 instead of powers of 1000. The ’B’ postfix multiplies the value by 8, and can be appended after a unit prefix or used alone. This allows using for example ’KB’, ’MiB’, ’G’ and ’B’ as number postfix.

The list of available International System prefixes follows, with indication of the corresponding powers of 10 and of 2.

y

10^-24 / 2^-80

z

10^-21 / 2^-70

a

10^-18 / 2^-60

f

10^-15 / 2^-50

p

10^-12 / 2^-40

n

10^-9 / 2^-30

u

10^-6 / 2^-20

m

10^-3 / 2^-10

c

10^-2

d

10^-1

h

10^2

k

10^3 / 2^10

K

10^3 / 2^10

M

10^6 / 2^20

G

10^9 / 2^30

T

10^12 / 2^40

P

10^15 / 2^50

E

10^18 / 2^60

Z

10^21 / 2^70

Y

10^24 / 2^80

8 Codec Options

libavcodec 提供一些通用的全局选项,可以在所有编码器和解码器上设置。此外,每个编码器可能支持所谓的私有选项,这些选项是特定于某个编码器的。

有时候,全局选项可能仅影响某一类编码器,而对其他编码器可能无意义或被忽略,因此需要了解所指定选项的含义。此外,有些选项仅用于解码或编码。

可以通过指定 -选项 在 FFmpeg 工具中设置,也可以在AVCodecContext选项中显式设置值,或通过libavutil/opt.hAPI 进行程序化使用。

支持选项列表如下:

b 整数 (编码,音频,视频)

设置比特率(单位:位/秒)。默认值为 200K。

ab 整数 (编码,音频)

设置音频比特率(单位:位/秒)。默认值为 128K。

bt 整数 (编码,视频)

设置视频比特率容忍度(单位:位/秒)。在单次编码模式下,比特率容忍度指定了速率控制能偏离目标平均比特率值的范围。这与最小/最大比特率无关。过低的容忍度会对质量产生不利影响。

flags 标志 (解码/编码,音频,视频,字幕)

设置通用标志。

可能的值:

mv4

每个宏块使用 4 个运动矢量(mpeg4)。

qpel

使用 1/4 像素运动补偿。

loop

使用循环滤波器。

qscale

使用固定质量因子。

pass1

在第一阶段模式中使用内部两次速率控制。

pass2

在第二阶段模式中使用内部两次速率控制。

gray

仅解码/编码灰度图像。

psnr

在编码过程中设置错误[?]变量。

truncated

输入比特流可能被随机截断。

drop_changed

不要输出参数与流中第一个解码帧不同的帧。当帧丢弃时,会返回错误 AVERROR_INPUT_CHANGED。

ildct

使用隔行扫描 DCT。

low_delay

强制低延迟。

global_header

将全局标题放置在额外数据中,而不是每个关键帧。

bitexact

仅写入与平台、构建和时间无关的数据(除 (I)DCT)。这确保文件和数据校验和在不同平台之间是可重现的并且匹配。其主要用途是用于回归测试。

aic

应用 H263 的高级帧内编码/mpeg4 AC 预测。

ilme

应用隔行扫描运动估计。

cgop

使用闭合 GOP。

output_corrupt

输出甚至可能损坏的帧。

time_base 有理数

设置编解码器时间基。

它是时间的基本单位(以秒为单位),用于表示帧时间戳。对于固定帧率内容,时间基应为1 / frame_rate时间戳增量应相同为 1。

g 整数 (编码,视频)

设置图片组 (GOP) 的大小。默认值为 12。

ar 整数 (解码/编码,音频)

设置音频采样率(单位:Hz)。

ac 整数 (解码/编码,音频)

设置音频通道数。

cutoff 整数 (编码,音频)

设置截止带宽。(仅支持选定编码器,请参阅它们各自的文档部分。)

frame_size 整数 (编码,音频)

设置音频帧大小。

除最后一帧外,每个提交的帧必须包含每通道正好 frame_size 个采样。在解码器设置了 CODEC_CAP_VARIABLE_FRAME_SIZE 的情况下,帧大小不受限制。一些解码器会设置常量帧大小来指示帧大小。

frame_number 整数

设置帧号。

delay 整数
qcomp 浮点数 (编码,视频)

设置视频量化参数缩放压缩(可变比特率 VBR)。它作为速率控制方程中的常数。推荐范围为默认 rc_eq 的 0.0-1.0。

qblur 浮点数 (编码,视频)

设置视频量化参数缩放模糊(VBR)。

qmin 整数 (编码,视频)

设置视频量化参数的最小值(VBR)。必须在 -1 到 69 之间,默认值为 2。

qmax 整数 (编码,视频)

设置视频量化参数的最大值(VBR)。必须在 -1 到 1024 之间,默认值为 31。

qdiff 整数 (编码,视频)

设置量化参数缩放之间的最大差异(VBR)。

bf 整数 (编码,视频)

设置非 B 帧之间的最大 B 帧数量。

必须是 -1 到 16 之间的整数。0 表示禁用 B 帧。如果使用值 -1,它将根据编码器自动选择一个值。

默认值为 0。

b_qfactor 浮点数 (编码,视频)

设置 P 帧和 B 帧之间的 qp 因子。

codec_tag 整数
bug 标志 (解码,视频)

解决未自动检测到的编码器错误。

可能的值:

autodetect
xvid_ilace

Xvid 隔行扫描错误(如果 fourcc==XVIX 自动检测)

ump4

(如果 fourcc==UMP4 自动检测)

no_padding

填充错误(自动检测)

amv
qpel_chroma
std_qpel

旧标准 qpel(根据 fourcc/版本自动检测)

qpel_chroma2
direct_blocksize

direct-qpel-blocksize 错误(根据 fourcc/版本自动检测)

edge

边缘填充错误(根据 fourcc/版本自动检测)

hpel_chroma
dc_clip
ms

解决微软损坏解码器的各种错误。

trunc

截断帧

strict 整数 (解码/编码,音频,视频)

指定严格遵循标准的程度。

可能的值:

very

严格遵守更旧更严格的规格版本或参考软件

strict

严格遵守规格中的所有内容,不管后果如何

normal
unofficial

允许非官方扩展

experimental

允许非标准化的实验性内容,实验性(未完成/正在进行/尚未测试完全)解码器和编码器。 注意:实验性解码器可能带来安全风险,请勿用它解码不可信输入。

b_qoffset 浮点数 (编码,视频)

设置 P 帧和 B 帧之间的 QP 偏移。

err_detect 标志 (解码,音频,视频)

设置错误检测标志。

可能的值:

crccheck

验证嵌入的 CRC

bitstream

检测比特流规范偏差

buffer

检测不正确的比特流长度

explode

在检测到小错误时停止解码

ignore_err

忽略解码错误并继续解码。 如果想分析视频内容并希望无论如何都解码所有数据,这个选项非常有用。然而,在有错误的情况下,该选项不会生成令人愉悦的视频。

careful

将违反规范但尚未在实际应用中看到的内容视为错误

compliant

将所有不符合规范的内容视为错误

aggressive

将理智编码器不应做的事情视为错误

has_b_frames 整数
block_align 整数
rc_override_count 整数
maxrate 整数 (编码,音频,视频)

设置最大比特率容忍度(单位:位/秒)。需要设置 bufsize。

minrate 整数 (编码,音频,视频)

设置最小比特率容忍度(单位:位/秒)。主要用于设置 CBR 编码。除此之外用处不大。

bufsize 整数 (编码,音频,视频)

设置速率控制缓冲区大小(单位:位)。

i_qfactor 浮点数 (编码,视频)

设置 P 帧和 I 帧之间的 QP 因子。

i_qoffset 浮点数 (编码,视频)

设置 P 帧和 I 帧之间的 QP 偏移。

dct 整数 (编码,视频)

设置 DCT 算法。

可能的值:

auto

自动选择一个好的算法(默认)

fastint

快速整数

int

精确整数

mmx
altivec
faan

浮点数 AAN DCT

lumi_mask 浮点数 (编码,视频)

对亮区压缩强于中等区域。

tcplx_mask 浮点数 (编码,视频)

设置时间复杂性掩码。

scplx_mask 浮点数 (编码,视频)

设置空间复杂性掩码。

p_mask 浮点数 (编码,视频)

设置交错掩码。

dark_mask 浮点数 (编码,视频)

对暗区压缩强于中等区域。

idct 整数 (解码/编码,视频)

选择 IDCT 实现方案。

可能的值:

auto
int
simple
simplemmx
simpleauto

自动选择一种与简单方案兼容的 IDCT

arm
altivec
sh4
simplearm
simplearmv5te
simplearmv6
simpleneon
xvid
faani

浮点数 AAN IDCT

slice_count 整数
ec 标志 (解码,视频)

设置错误隐藏策略。

可能的值:

guess_mvs

迭代运动矢量(MV)搜索(慢)

deblock

对损坏的宏块使用强去块滤波

favor_inter

偏向于预测上一帧而非当前帧

bits_per_coded_sample 整数
aspect 有理数 (编码,视频)

设置采样长宽比(SAR)。

sar 有理数 (编码,视频)

设置采样长宽比(SAR)。别名为长宽比.

debug 标志 (解码/编码,音频,视频,字幕)

打印特定的调试信息。

可能的值:

pict

图像信息

rc

速率控制

bitstream
mb_type

宏块(MB)类型

qp

逐块量化参数(QP)

dct_coeff
green_metadata

显示即将来临的帧、GOP 或特定时长的复杂度元数据。

skip
startcode
er

错误识别

mmco

内存管理控制操作(H.264)

bugs
buffers

图片缓冲区分配

thread_ops

线程操作

nomc

跳过运动补偿

cmp 整数 (编码,视频)

设置全像素运动估计比较函数。

可能的值:

sad

绝对差值之和,快速(默认)

sse

平方误差之和

satd

绝对 Hadamard 变换差值之和

dct

绝对 DCT 变换差值之和

psnr

量化误差平方和(避免,低质量)

bit

块所需比特数

rd

速率失真优化,慢

zero

0

vsad

绝对纵向差值之和

vsse

纵向平方差值之和

nsse

噪声保持平方差值

w53

5/3 小波,仅用于 snow

w97

9/7 小波,仅用于 snow

dctmax
chroma
subcmp 整数 (编码,视频)

设置亚像素运动估计比较函数。

可能的值:

sad

绝对差值之和,快速(默认)

sse

平方误差之和

satd

绝对 Hadamard 变换差值之和

dct

绝对 DCT 变换差值之和

psnr

量化误差平方和(避免,低质量)

bit

块所需比特数

rd

速率失真优化,慢

zero

0

vsad

绝对纵向差值之和

vsse

纵向平方差值之和

nsse

噪声保持平方差值

w53

5/3 小波,仅用于 snow

w97

9/7 小波,仅用于 snow

dctmax
chroma
mbcmp 整数 (编码,视频)

设置宏块比较函数。

可能的值:

sad

绝对差值之和,快速(默认)

sse

平方误差之和

satd

绝对 Hadamard 变换差值之和

dct

绝对 DCT 变换差值之和

psnr

量化误差平方和(避免,低质量)

bit

块所需比特数

rd

速率失真优化,慢

zero

0

vsad

绝对纵向差值之和

vsse

纵向平方差值之和

nsse

噪声保持平方差值

w53

5/3 小波,仅用于 snow

w97

9/7 小波,仅用于 snow

dctmax
chroma
ildctcmp 整数 (编码,视频)

设置隔行扫描 DCT 比较函数。

可能的值:

sad

绝对差值之和,快速(默认)

sse

平方误差之和

satd

绝对 Hadamard 变换差值之和

dct

绝对 DCT 变换差值之和

psnr

量化误差平方和(避免,低质量)

bit

块所需比特数

rd

速率失真优化,慢

zero

0

vsad

绝对纵向差值之和

vsse

纵向平方差值之和

nsse

噪声保持平方差值

w53

5/3 小波,仅用于 snow

w97

9/7 小波,仅用于 snow

dctmax
chroma
dia_size 整数 (编码,视频)

设置用于运动估计的菱形类型和大小。

(1024, INT_MAX)

全运动估计(最慢)

(768, 1024]

umh 运动估计

(512, 768]

hex 运动估计

(256, 512]

l2s 菱形运动估计

[2,256]

var 菱形运动估计

(-1, 2)

小菱形运动估计

-1

搞笑菱形运动估计

(INT_MIN, -1)

sab 菱形运动估计

last_pred 整数 (编码,视频)

设置来自上一帧的运动预测器数量。

precmp 整数 (编码,视频)

设置预运动估计比较函数。

可能的值:

sad

绝对差值之和,快速(默认)

sse

平方误差之和

satd

绝对 Hadamard 变换差值之和

dct

绝对 DCT 变换差值之和

psnr

量化误差平方和(避免,低质量)

bit

块所需比特数

rd

速率失真优化,慢

zero

0

vsad

绝对纵向差值之和

vsse

纵向平方差值之和

nsse

噪声保持平方差值

w53

5/3 小波,仅用于 snow

w97

9/7 小波,仅用于 snow

dctmax
chroma
pre_dia_size 整数 (编码,视频)

为运动估计预处理设置菱形类型和大小。

subq 整数 (编码,视频)

设置亚像素运动估计质量。

me_range 整数 (编码,视频)

设置运动矢量范围限制(1023用于DivX播放器)。

global_quality 整数 (编码,音频,视频)
slice_flags 整数
mbd 整数 (编码,视频)

设置宏块决策算法(高质量模式)。

可能的值:

simple

使用mbcmp(默认)

bits

使用最少的位

rd

使用最佳速率失真

rc_init_occupancy 整数 (编码,视频)

设置在开始解码之前加载到RC缓冲区中的位数。

flags2 标志 (解码/编码,音频,视频,字幕)

可能的值:

fast

允许非规范兼容的加速技巧。

noout

跳过比特流编码。

ignorecrop

忽略SPS中的裁剪信息。

local_header

将全局标题放在每个关键帧而不是额外数据中。

chunks

帧数据可能被拆分为多个块。

showall

在第一个关键帧之前显示所有帧。

export_mvs

将运动矢量导出到帧侧数据中(参见AV_FRAME_DATA_MOTION_VECTORS),对于支持的编解码器。另请参见doc/examples/export_mvs.c.

skip_manual

不要跳过样本,并将跳过信息导出为帧侧数据。

ass_ro_flush_noop

不要在刷新时重置ASS的ReadOrder字段。

icc_profiles

从色彩信息标签生成/解析嵌入式ICC配置文件。

export_side_data 标志 (解码/编码,音频,视频,字幕)

可能的值:

mvs

将运动矢量导出到帧侧数据中(参见AV_FRAME_DATA_MOTION_VECTORS),对于支持的编解码器。另请参见doc/examples/export_mvs.c.

prft

将编码器生产者参考时间导出到数据包侧数据中(参见AV_PKT_DATA_PRFT),对于支持的编解码器。

venc_params

通过帧侧数据导出视频编码参数(参见AV_FRAME_DATA_VIDEO_ENC_PARAMS)。目前支持H.264和VP9。

film_grain

通过帧侧数据导出电影颗粒参数(参见AV_FRAME_DATA_FILM_GRAIN_PARAMS)。目前由AV1解码器支持。

threads 整数 (解码/编码,视频)

设置使用的线程数量,前提是选定的编解码器实现支持多线程。

可能的值:

auto, 0

自动选择线程的数量

默认值是 ‘auto’.

dc 整数 (编码,视频)

设置intra_dc_precision。

nssew 整数 (编码,视频)

设置NSSE权重。

skip_top 整数 (解码,视频)

设置顶部跳过的宏块行数。

skip_bottom 整数 (解码,视频)

设置底部跳过的宏块行数。

profile 整数 (编码,音频,视频)

设置编码器编解码器配置文件。默认值是 ‘unknown’。编码器特定配置文件记录在相关编码器文档中。

level 整数 (编码,音频,视频)

设置编码器级别。此级别取决于特定的编解码器,可能与配置文件级别对应。默认值设置为 ‘unknown’.

可能的值:

unknown
lowres 整数 (解码,音频,视频)

以1= 1/2, 2=1/4, 3=1/8分辨率进行解码。

mblmin 整数 (编码,视频)

设置宏块拉格朗日因子的最小值(VBR)。

mblmax 整数 (编码,视频)

设置宏块拉格朗日因子的最大值(VBR)。

skip_loop_filter 整数 (解码,视频)
skip_idct 整数 (解码,视频)
skip_frame 整数 (解码,视频)

根据选项值选择的帧类型,使解码器跳过处理。

skip_loop_filter跳过帧环过滤,skip_idct跳过帧IDCT/反量化,skip_frame跳过解码。

可能的值:

none

不丢弃任何帧。

default

丢弃无用的帧,例如大小为0的帧。

noref

丢弃所有非参考帧。

bidir

丢弃所有双向帧。

nokey

丢弃除关键帧以外的所有帧。

nointra

丢弃除I帧以外的所有帧。

all

丢弃所有帧。

默认值是 ‘default’.

bidir_refine 整数 (编码,视频)

优化双向宏块使用的两个运动矢量。

keyint_min 整数 (编码,视频)

设置IDR帧之间的最小间隔。

refs 整数 (编码,视频)

设置用于运动补偿的参考帧。

trellis 整数 (编码,音频,视频)

设置率失真优化量化。

mv0_threshold 整数 (编码,视频)
compression_level 整数 (编码,音频,视频)
bits_per_raw_sample 整数
channel_layout 整数 (解码/编码,音频)

参见(ffmpeg-utils)ffmpeg-utils(1)手册中的频道布局部分了解所需语法。

rc_max_vbv_use 浮点数 (编码,视频)
rc_min_vbv_use 浮点数 (编码,视频)
color_primaries 整数 (解码/编码,视频)

可能的值:

bt709

BT.709

bt470m

BT.470 M

bt470bg

BT.470 BG

smpte170m

SMPTE 170 M

smpte240m

SMPTE 240 M

film

电影

bt2020

BT.2020

smpte428
smpte428_1

SMPTE ST 428-1

smpte431

SMPTE 431-2

smpte432

SMPTE 432-1

jedec-p22

JEDEC P22

color_trc 整数 (解码/编码,视频)

可能的值:

bt709

BT.709

gamma22

BT.470 M

gamma28

BT.470 BG

smpte170m

SMPTE 170 M

smpte240m

SMPTE 240 M

linear

线性

log
log100

对数

log_sqrt
log316

对数平方根

iec61966_2_4
iec61966-2-4

IEC 61966-2-4

bt1361
bt1361e

BT.1361

iec61966_2_1
iec61966-2-1

IEC 61966-2-1

bt2020_10
bt2020_10bit

BT.2020 - 10 位

bt2020_12
bt2020_12bit

BT.2020 - 12 位

smpte2084

SMPTE ST 2084

smpte428
smpte428_1

SMPTE ST 428-1

arib-std-b67

ARIB STD-B67

colorspace 整数 (解码/编码,视频)

可能的值:

rgb

RGB

bt709

BT.709

fcc

FCC

bt470bg

BT.470 BG

smpte170m

SMPTE 170 M

smpte240m

SMPTE 240 M

ycocg

YCOCG

bt2020nc
bt2020_ncl

BT.2020 非线性

bt2020c
bt2020_cl

BT.2020 线性

smpte2085

SMPTE 2085

chroma-derived-nc

色度派生非线性

chroma-derived-c

色度派生线性

ictcp

ICtCp

color_range 整数 (解码/编码,视频)

如果用作输入参数,它是解码器的提示,用来说明输入的色彩范围。 可能的值:

tv
mpeg
limited

MPEG (219*2^(n-8))

pc
jpeg
full

JPEG (2^n-1)

chroma_sample_location 整数 (解码/编码,视频)

可能的值:

left
center
topleft
top
bottomleft
bottom
log_level_offset 整数

设置日志等级偏移。

slices 整数 (编码,视频)

切片数量,用于并行编码。

thread_type 标志 (解码/编码,视频)

选择使用哪种多线程方法。

使用‘frame’将增加每个线程的解码延迟一帧,因此无法提供未来帧的客户端不应使用。

可能的值:

slice

同时解码单帧的多个部分。

使用切片进行多线程仅在视频已用切片编码时有效。

frame

同时解码多帧。

默认值是‘slice+frame’.

audio_service_type 整数 (编码,音频)

设置音频服务类型。

可能的值:

ma

主要音频服务

ef

效果

vi

视障人士

hi

听障人士

di

对话

co

评论

em

紧急

vo

旁白

ka

卡拉OK

request_sample_fmt 采样格式 (解码,音频)

设置音频解码器首选的采样格式。默认值是none.

pkt_timebase 有理数
sub_charenc 编码 (解码,字幕)

设置输入字幕的字符编码。

field_order 场序 (视频)

设置/覆盖视频的场序。 可能的值:

progressive

逐行扫描视频

tt

隔行视频,顶部场先编码并显示

bb

隔行视频,底部场先编码并显示

tb

隔行视频,顶部先编码,底部先显示

bt

隔行视频,底部先编码,顶部先显示

skip_alpha 布尔值 (解码,视频)

设置为1以禁用处理Alpha(透明)。这类似‘gray’标志在flags选项中跳过色度信息,而不是Alpha信息。默认值是0。

codec_whitelist 列表 (输入)

以","分隔的允许解码器列表。默认情况下允许所有解码器。

dump_separator 字符串 (输入)

用于分隔有关流参数在命令行中打印的字段的分隔符。 例如,用换行符和缩进分隔字段:

ffprobe -dump_separator "
                          "  -i ~/videos/matrixbench_mpeg2.mpg
max_pixels 整数 (解码/编码,视频)

每图像的最大像素数量。此值可用于避免因大图像导致的内存不足错误。

apply_cropping 布尔值 (解码,视频)

启用裁剪,如果裁剪参数是所需对齐的左和顶部参数的倍数。如果未达到对齐要求,裁剪将部分应用以保持对齐。 默认值是 1(启用)。 注意:所需的对齐取决于AV_CODEC_FLAG_UNALIGNED是否设置以及CPU。AV_CODEC_FLAG_UNALIGNED不能通过命令行更改。此外,硬件解码器将不会应用左/顶部裁剪。

9 解码器

解码器是FFmpeg中经过配置的元素,允许多媒体流的解码。

配置FFmpeg构建时,所有支持的本地解码器默认启用。需要外部库的解码器必须通过相应的--enable-lib选项手动启用。您可以使用配置选项列出所有可用解码器--list-decoders.

您可以使用配置选项禁用所有解码器--disable-decoders并选择性启用/禁用单个解码器 通过选项--enable-decoder=解码器 / --disable-decoder=解码器.

选项-decoders在ff*工具中将显示启用的解码器列表。

10 视频解码器

以下是当前可用的视频解码器的一些描述。

10.1 AV1

AOMedia Video 1(AV1)解码器。

10.1.1 选项

operating_point

选择可扩展AV1比特流的操作点(0 - 31)。默认为0。

10.2 HEVC

HEVC(亦称ITU-T H.265或ISO/IEC 23008-2)解码器。

解码器支持MV-HEVC多视图流,最多两个视图。要输出的视图通过向解码器提供视图ID列表来选择(view_ids选项)。此选项可以在解码器初始化之前静态设置,也可以通过get_format()回调动态设置——适用于视图数量或ID在解码期间动态更改的情况。

默认情况下仅解码基本层。

注意,如果您使用ffmpegCLI工具,您应该使用其手册中记录的视图说明符,而非本文档中的选项。

10.2.1 选项

view_ids (MV-HEVC)

指定要输出的视图ID列表。此选项也可以设置为‘-1’,这样所有在VPS中定义的视图都会被解码和输出。

view_ids_available (MV-HEVC)

调用者可以通过此选项读取活动VPS中可用的视图ID数组。对于单层视频,该数组为空。

get_format()回调中读取时此选项的值保证准确。它在其他时间也可以被设置(例如打开解码器之后),但此值仅供参考可能不正确(例如流包含多个不同的VPS NALUs)。

view_pos_available (MV-HEVC)

调用者可以通过此选项读取活动VPS中可用的视图位置(左、右或未指定),作为AVStereo3DView值。当数组可用时,其元素适用于view_ids_available的对应元素,即view_pos_available[i]包含ID为view_ids_available[i].

视图的位置。view_ids_available

10.3 rawvideo

原始视频解码器。

此解码器解码rawvideo流。

10.3.1 选项

top 顶部场优先

指定输入视频的假设场类型。

-1

视频假设为渐进(默认)

0

假设底部场优先

1

假设顶部场优先

10.4 libdav1d

dav1d AV1解码器。

libdav1d允许libavcodec解码AOMedia Video 1(AV1)编解码器。 配置期间需要libdav1d头文件和库的存在。 显式配置构建时需要--enable-libdav1d.

10.4.1 选项

libdav1d包装器支持以下选项。

framethreads

设置解码期间使用的帧线程数量。默认值是0(自动检测)。 对于libdav1d >= 1.0,此选项已弃用将来会被移除。使用max_frame_delay选项以及全局选项threads替代。

tilethreads

设置解码期间使用的切片线程数量。默认值是0(自动检测)。 对于libdav1d >= 1.0,此选项已弃用将来会被移除。使用全局选项threads替代。

max_frame_delay

设置解码器可内部缓存的最大帧数量。默认值是0(自动检测)。

filmgrain

如果位流中有电影颗粒信息,则应用到解码的视频。默认为库的内部默认值。 此选项已弃用,将来会被移除。请参阅全局选项export_side_data以导出电影颗粒参数,而不是应用颗粒。

oppoint

选择可扩展AV1比特流的操作点(0 - 31)。默认为库的内部默认值。

alllayers

输出可扩展AV1比特流的所有空间层。默认值为false。

10.5 libdavs2

AVS2-P2/IEEE1857.4视频解码器封装。

这个解码器允许libavcodec通过davs2库解码AVS2流。

10.6 libuavs3d

AVS3-P2/IEEE1857.10视频解码器。

libuavs3d允许libavcodec解码AVS3流。 在配置过程中需要有libuavs3d的头文件和库。 您需要显式地用以下参数配置构建--enable-libuavs3d.

10.6.1 选项

libuavs3d封装支持以下选项。

frame_threads

设置解码过程中使用的帧线程数量。默认值为0(自动检测)。

10.7 libxevd

eXtra-fast Essential Video Decoder (XEVD) MPEG-5 EVC解码器封装。

这个解码器在配置过程中需要libxevd的头文件和库。 您需要显式地用以下参数配置构建--enable-libxevd.

xevd项目网站地址为https://github.com/mpeg5/xevd.

10.7.1 选项

libxevd封装支持以下选项。 xevd等效选项或值已列出,便于迁移。

要获得更准确和更全面的libxevd选项文档,请执行命令xevd_app --help或参考libxevd文档。

threads (threads)

强制使用指定数量的线程

10.8 QSV 解码器

Intel QuickSync视频解码器系列(VC1、MPEG-2、H.264、HEVC、JPEG/MJPEG、VP8、VP9、AV1、VVC)。

10.8.1 通用选项

所有qsv解码器支持以下选项。

async_depth

内部并行深度值,值越高,延迟越高。

gpu_copy

GPU加速的视频和系统内存之间的复制

default
on
off

10.8.2 HEVC选项

hevc_qsv的额外选项。

load_plugin

在内部会话中加载的用户插件

none
hevc_sw
hevc_hw
load_plugins

以冒号分隔的十六进制插件UID列表,用于在内部会话中加载

10.9 v210

未压缩的4:2:2 10位解码器。

10.9.1 选项

custom_stride

设置v210数据的行大小(字节)。默认值为0(自动检测)。对于无行距的v210(如在BOXX文件中可见)可以使用特殊的-1值。

11 音频解码器

以下是一些当前可用音频解码器的描述。

11.1 ac3

AC-3音频解码器。

此解码器实现了ATSC A/52:2010和ETSI TS 102 366的一部分,以及未公开的RealAudio 3(又称dnet)。

11.1.1 AC-3解码器选项

-drc_scale value

动态范围缩放因子。应用于AC-3流中的动态范围值的因子。此因子以指数方式应用。默认值为1。 以下是3个值得注意的缩放因子范围:

drc_scale == 0

禁用DRC。生成全动态范围音频。

0 < drc_scale <= 1

启用DRC。应用流DRC值的一部分。 音频重现介于全动态范围和完全压缩之间。

drc_scale > 1

启用DRC。非对称地应用drc_scale。 响亮的声音完全压缩。弱声音被增强。

11.2 flac

FLAC音频解码器。

此解码器旨在实现Xiph的完整FLAC规范。

11.2.1 FLAC解码器选项

-use_buggy_lpc

lavc FLAC编码器曾用于生成带有高lpc值的错误流(如默认值)。此选项可以通过使用lavc的旧错误lpc逻辑正确解码这些流。

11.3 ffwavesynth

内部波形合成器。

此解码器根据预定义序列生成波形图案。其用途纯属内部,其接受的数据格式未公开文档化。

11.4 libcelt

libcelt解码器封装。

libcelt允许libavcodec解码Xiph CELT超低延迟音频编解码器。 在配置过程中需要libcelt的头文件和库。 您需要显式地用以下参数配置构建--enable-libcelt.

11.5 libgsm

libgsm解码器封装。

libgsm允许libavcodec解码GSM全速音频编解码器。 在配置过程中需要libgsm的头文件和库。 您需要显式地用以下参数配置构建--enable-libgsm.

此解码器支持普通GSM和Microsoft变体。

11.6 libilbc

libilbc解码器封装。

libilbc允许libavcodec解码互联网低比特率编解码器(iLBC)音频编解码器。 在配置过程中需要libilbc的头文件和库。 您需要显式地用以下参数配置构建--enable-libilbc.

11.6.1 选项

libilbc封装支持以下选项。

enhance

当设置为1时,启用对解码音频的增强。默认值为0(禁用)。

11.7 libopencore-amrnb

libopencore-amrnb解码器封装。

libopencore-amrnb允许libavcodec解码自适应多速窄带音频编解码器。 这要求在配置过程中存在libopencore-amrnb头文件和库。 您需要显式地用以下参数配置构建--enable-libopencore-amrnb.

FFmpeg有一个AMR-NB的原生解码器,因此用户可以在没有此库的情况下解码AMR-NB。

11.8 libopencore-amrwb

libopencore-amrwb解码器封装。

libopencore-amrwb允许libavcodec解码自适应多速宽带音频编解码器。 这要求在配置过程中存在libopencore-amrwb头文件和库。 您需要显式地用以下参数配置构建--enable-libopencore-amrwb.

FFmpeg有一个AMR-WB的原生解码器,因此用户可以在没有此库的情况下解码AMR-WB。

11.9 libopus

libopus解码器封装。

libopus允许libavcodec解码Opus交互式音频编解码器。 在配置过程中需要libopus的头文件和库。 您需要显式地用以下参数配置构建--enable-libopus.

FFmpeg有一个Opus的原生解码器,因此用户可以在没有此库的情况下解码Opus。

12 字幕解码器

12.1 libaribb24

ARIB STD-B24字幕解码器。

实现ARIB STD-B24标准的A和C配置文件。

12.1.1 libaribb24解码器选项

-aribb24-base-path path

设置libaribb24库的基路径。这用于读取配置文件(用于自定义Unicode转换)以及将非文本符号作为图片转储到该位置。默认未设置。

Unset by default.

-aribb24-skip-ruby-text boolean

告诉解码器封装跳过包含半高ruby字体的文本块。

默认启用。

12.2 libaribcaption

使用外部libaribcaption库的另一个ARIB STD-B24字幕解码器。libaribcaption库。

实现了日本的ARIB STD-B24标准、巴西ABNT NBR 15606-1以及菲律宾的ISDB-T版本。

在配置过程中需要libaribcaption头文件和库 (https://github.com/xqq/libaribcaption)。 您需要显式地用以下参数配置构建--enable-libaribcaption。 如果同时启用了libaribb24libaribcaptionlibaribcaption解码器优先。

12.2.1 libaribcaption解码器选项

-sub_type subtitle_type

指定解码字幕的格式。

bitmap

图形图像。

ass

ASS格式的文本。

text

不带格式的简单文本输出。

默认值为asslibaribb24解码器相同。 某些当前的播放器(例如mpv)需要ARIB字幕的ASS格式。

-caption_encoding encoding_scheme

指定输入字幕文本的编码方式。

auto

自动检测文本编码(默认)。

jis

ARIB STD-B24标准中定义的8位字符JIS编码。 此编码在日本用于ISDB字幕。

utf8

ARIB STD-B24标准中定义的UTF-8编码。 此编码在菲律宾用于ISDB-T字幕。

latin

ABNT NBR 15606-1中定义的拉丁字符编码。 此编码在南美洲用于SBTVD / ISDB-Tb字幕。

-font font_name[,font_name2,...]

指定用于字幕渲染的字体族名称列表(用逗号分隔)。bitmapass类型的字幕渲染。 仅在ass类型的字幕中使用第一个字体名。

如果未指定,将使用内部定义的默认字体族。

-ass_single_rect boolean

ARIB STD-B24规范指出,有些字幕可能会同时显示在不同位置(多矩形字幕)。 由于某些播放器(例如旧版mpv)无法正确处理带有多个ASS矩形的单个AV字幕,或者拥有同一开始时间戳下不确定持续时间的多个ASS矩形,您可以通过此选项更改行为,使所有文本显示在单个ASS矩形中。

默认值为false.

如果您的播放器不能正确处理带有多个ASS矩形的AV字幕,请将此选项设置为true或在编译时定义ASS_SINGLE_RECT=1以更改默认行为。

-force_outline_text boolean

指定是否始终为所有字符渲染轮廓文本,而不管字符样式的指示。

默认值为false.

-outline_width number (0.0 - 3.0)

指定轮廓文本的宽度,以相对点为单位。

默认值为1.5.

-ignore_background boolean

指定是否忽略背景色渲染。

默认值为false.

-ignore_ruby boolean

指定是否忽略渲染类似ruby的字符(振假名)。

默认值为false.

-replace_drcs boolean

指定是否将替换的DRCS字符渲染为Unicode字符。

默认值为true.

-replace_msz_ascii boolean

指定是否将MSZ(中等大小;半宽)全宽的字母数字替换为半宽的字母数字。

默认值为true.

-replace_msz_japanese boolean

指定是否将某些MSZ(中等大小;半宽)的全宽日语特殊字符替换为半宽字符。

默认值为true.

-replace_msz_glyph boolean

指定是否在字体支持的情况下将MSZ(中等大小;半宽)字符替换为半宽字形。 此选项适用于使用Adobe-Japan1兼容字体的FreeType或DirectWrite渲染器。 例如:IBM Plex Sans JP、Morisawa BIZ UDGothic、Morisawa BIZ UDMincho、 游哥特体、游明朝体以及明瞭体。

默认值为true.

-canvas_size image_size

指定渲染字幕的画布分辨率;通常应为输入视频帧的大小。 这仅适用于-subtitle_type设置为bitmap.

libaribcaption解码器假设以下条件下进行的位图渲染的输入帧大小:

  1. PROFILE_A :1440 x 1080,SAR(像素宽高比)为4:3
  2. PROFILE_C :320 x 180,SAR(像素宽高比)为1:1

如果输入视频的实际帧大小与上述假设不匹配,则渲染的字幕可能会失真。 为了避免字幕失真,请添加-canvas_size选项以指定实际输入视频大小。

请注意,-canvas_size选项在视频具有不同的大小但相同的宽高比时不是必需的。 在这种情况下,如果未指定-canvas_size选项,字幕将根据实际视频大小拉伸或缩放。 如果指定了-canvas_size选项但大小不同,字幕将按指定大小进行拉伸或缩放,并通过计算得到的SAR进行调整。

12.2.2 libaribcaption解码器使用示例

通过工具显示带有ARIB字幕的MPEG-TS文件:ffplay工具:

ffplay -sub_type bitmap MPEG.TS

通过工具显示帧大小为1920x1080的MPEG-TS文件:ffplay工具:

ffplay -sub_type bitmap -canvas_size 1920x1080 MPEG.TS

在转码视频中嵌入ARIB字幕:

ffmpeg -sub_type bitmap -i src.m2t -filter_complex "[0:v][0:s]overlay" -vcodec h264 dest.mp4

12.3 dvbsub

12.3.1 选项

compute_clut
-2

如果流中没有匹配的CLUT,则计算一次clut。

-1

如果流中没有匹配的CLUT,则计算clut。

0

从不计算CLUT

1

始终计算CLUT并覆盖流中提供的CLUT。

dvb_substream

选择dvb子流,如果为-1,则选择所有子流(默认证)。

12.4 dvdsub

此编解码器用于解码DVD中的位图字幕;同样的字幕也可以在VobSub文件对以及一些Matroska文件中找到。

12.4.1 选项

palette

指定位图使用的全局调色板。当存储在VobSub时,调色板通常在索引文件中指定;在Matroska中,调色板以与VobSub中相同的格式存储在编解码器额外数据中。在DVD中,调色板存储在IFO文件中,因此在从转储的VOB文件读取时不可用。

此选项的格式为包含16个24位十六进制数字(无0x前缀)并以逗号分隔的字符串,例如0d00ee, ee450d, 101010, eaeaea, 0ce60b, ec14ed, ebff0b, 0d617a, 7b7b7b, d1d1d1, 7b2a0e, 0d950c, 0f007b, cf0dec, cfa80c, 7c127b.

ifo_palette

指定用于获取全局调色板的IFO文件。(实验性)

forced_subs_only

仅解码标记为强制显示的字幕条目。一些标题在同一轨道中同时包含强制和非强制字幕。设置此标志为1将仅保留强制字幕。默认值为0.

12.5 libzvbi-teletext

Libzvbi允许libavcodec解码DVB文本页和DVB字幕。需要在配置期间存在libzvbi头文件和库。您需要显式地配置构建--enable-libzvbi.

12.5.1 选项

txt_page

指定解码的文本页号码列表。不符合指定列表的页将被丢弃。您可以使用特殊*字符串匹配所有页面,或者subtitle匹配所有字幕页面。默认值为*。

txt_default_region

设置用于解码的默认字符集,值在0到87之间(请参见ETS 300 706第15节,第32表)。默认值为-1,不覆盖libzvbi默认值。此选项适用于一些不能信号正确字符集的旧版本1.0传输。

txt_chop_top

丢弃文本页顶部的行。默认值为1。

txt_format

指定解码字幕的格式。

bitmap

默认格式,应该用于文本页,因为某些图形和颜色无法在简单文本甚至ASS中表达。

text

简单基于文本的输出,不带格式。

ass

经过格式化的ASS输出,字幕页和文本页将以不同风格返回,字幕页被简化为文本,但会尽量保留文本对齐和格式。

txt_left

生成位图的X偏移量,默认为0。

txt_top

生成位图的Y偏移量,默认为0。

txt_chop_spaces

裁剪生成文本中的首尾空格并删除空行。此选项适用于基于文本的字幕,其中可能在行首或行末存在空格,或由于双倍大小的文本字符,在字幕行之间可能出现空行。默认值为1。

txt_duration

设置解码文本页或字幕的显示持续时间,以毫秒为单位。默认值为-1,表示无限期或直至下一个字幕事件出现。

txt_transparent

强制生成的文本位图背景透明。默认值为0,表示不透明背景。

txt_opacity

设置文本背景的透明度(0-255)。如果txt_transparent未设置,它仅影响起始框和结束框之间的字符,通常为字幕。默认值为0,如果txt_transparent已设置,否则为255。

13 比特流过滤器

当您配置FFmpeg构建时,所有支持的比特流过滤器默认情况下会被启用。您可以使用配置选项列出所有可用的过滤器--list-bsfs.

您可以使用配置选项禁用所有比特流过滤器--disable-bsfs,并使用选项选择性启用任何比特流过滤器--enable-bsf=BSF,或者您可以使用选项禁用特定的比特流过滤器--disable-bsf=BSF.

选项-bsfs对于ff*工具,将展示当前构建中支持的所有比特流过滤器的列表。

ff*工具具有一个-bsf选项,每个流应用,采用逗号分隔的过滤器列表,其参数在过滤器名称之后以'='连接。

ffmpeg -i INPUT -c:v copy -bsf:v filter1[=opt1=str1:opt2=str2][,filter2] OUTPUT

以下是当前可用的比特流过滤器及其参数的描述。

13.1 aac_adtstoasc

将MPEG-2/4 AAC ADTS转换为MPEG-4音频特定配置比特流。

此过滤器从MPEG-2/4 ADTS头创建MPEG-4 AudioSpecificConfig并移除ADTS头。

例如,当从原始ADTS AAC或MPEG-TS容器复制AAC流到MP4A-LATM、FLV文件或MOV/MP4文件及相关格式如3GP或M4A时,该过滤器是必需的。请注意,它已自动插入至MP4A-LATM和MOV/MP4及相关格式。

13.2 av1_metadata

修改嵌入到AV1流中的元数据。

td

在流的所有时间单元中插入或移除时间分隔符OBUs。

insert

在每个TU的开头插入一个TD,该TU尚未包含TD。

remove

移除每个TU开头的TD(已包含)。

color_primaries
transfer_characteristics
matrix_coefficients

在流中设置颜色描述字段(参见AV1第6.4.2节)。

color_range

在流中设置颜色范围(参见AV1第6.4.2节;注意,对于使用BT.709主色、sRGB传输特性和恒等(RGB)矩阵系数的流,这无法设置)。

tv

有限范围。

pc

全范围。

chroma_sample_position

在流中设置色度采样位置(参见AV1第6.4.2节)。这仅适用于4:2:0流。

vertical

左侧位置(与MPEG-2和H.264中的默认值相符)。

colocated

左上角位置。

tick_rate

设置计时信息中的滴答率(time_scale / num_units_in_display_tick)在序列头。

num_ticks_per_picture

设置每帧图片中的滴答数,以指示流具有固定帧率。 如果tick_rate未设置,则忽略。

delete_padding

删除Padding OBUs。

13.3 chomp

移除数据包末尾的零填充。

13.4 dca_core

从DCA/DTS流中提取核心,删除扩展部分如DTS-HD。

13.5 dovi_rpu

操纵HEVC/AV1流中的Dolby Vision元数据,可选地启用元数据压缩。

strip

如果启用,移除流中的所有Dolby Vision元数据(配置记录+RPU数据块)。

compression

启用的压缩级别。

none

没有元数据压缩。

limited

有限的元数据压缩方案。应与大多数设备兼容。这是默认值。

extended

扩展元数据压缩。设备不必支持该压缩级别。注意当前情况下此级别与“limited”在libavcodec中行为一致。

13.6 dump_extra

将额外数据添加到过滤数据包的开头,除非数据包已以恰当的方式开始并包含尝试添加的额外数据。

freq

附加参数指定需要过滤的数据包。它接受以下值:

k
keyframe

将额外数据添加到所有关键数据包

e
all

将额外数据添加到所有数据包

如果未指定,则假定为“k’.

例如以下ffmpeg命令强制生成H.264数据包中的全局标题(从而禁用个别数据包标题),但通过向关键数据包添加存储在额外数据中的 header 修正它们:libx264 encoder, but corrects them by adding the header stored in extradata to the key packets:

ffmpeg -i INPUT -map 0 -flags:v +global_header -c:v libx264 -bsf:v dump_extra out.ts

13.7 dv_error_marker

DV中标记为损坏的块将用指定颜色块替换。

color

用指定颜色替换损坏块

sta

一个16位掩码,指定16种可能的错误状态值中的哪些将被替换为彩色块。默认值为0xFFFE,替换所有非0错误状态值。

ok

无错误,无掩盖

err

错误,无掩盖

res

保留

notok

错误或掩盖

notres

未保留

Aa, Ba, Ca, Ab, Bb, Cb, A, B, C, a, b, erri, erru

具体错误状态代码

参见第44-46页或第5.5节http://web.archive.org/web/20060927044735/http://www.smpte.org/smpte_store/standards/pdf/s314m.pdf

13.8 eac3_core

从E-AC-3流中提取核心,删除额外通道。

13.9 extract_extradata

提取带内的额外数据。

某些编解码器允许长期标题(例如MPEG-2序列标题或H.264/HEVC(VPS/SPS/PPS))通过"带内"传输(即,作为包含编码帧的比特流的一部分)或"带外"传输(例如,在容器层级)。后一种形式在FFmpeg术语中称为"额外数据"。

此比特流过滤器检测带内标题,并使其作为额外数据可用。

remove

启用此选项后,从比特流中提取的长期标题将被移除。

13.10 filter_units

从流中移除具有某些类型或不具有特定类型的单位。

pass_types

通过移除所有其他单位来传递类型或类型范围的单位列表。这被指定为带有'|'分隔符的单位类型值或带有'-'范围值的列表。

remove_types

pass_types相同,但移除给定集合中的单位,并传递所有其他单位。

pass_types和remove_types使用的类型对应于H.264、HEVC和H.266中的NAL单位类型(nal_unit_type)(参见H.264和HEVC规范中的表7-1或H.266规范中的表5),对应JPEG的标记值(无0xFF前缀)以及MPEG-2的无起始码前缀的起始码(即0x000001后跟的字节)。VP8和VP9中的每个单位都有类型0。

额外数据通过此转换保持不变,但请注意,如果流中包含内联参数集,则输出可能不可用,如果这些内容被移除。

例如,从H.264流中移除所有非VCL NAL单位:

ffmpeg -i INPUT -c:v copy -bsf:v 'filter_units=pass_types=1-5' OUTPUT

从H.265流中移除所有AUD、SEI和填充数据:

ffmpeg -i INPUT -c:v copy -bsf:v 'filter_units=remove_types=35|38-40' OUTPUT

从MPEG-2流中移除所有用户数据,包括闭字幕:

ffmpeg -i INPUT -c:v copy -bsf:v 'filter_units=remove_types=178' OUTPUT

从H264流中移除所有SEI,包括闭字幕:

ffmpeg -i INPUT -c:v copy -bsf:v 'filter_units=remove_types=6' OUTPUT

从HEVC流中移除所有前缀和后缀SEI,包括闭字幕和动态HDR:

ffmpeg -i INPUT -c:v copy -bsf:v 'filter_units=remove_types=39|40' OUTPUT

13.11 hapqa_extract

提取HAPQA文件中的RGB或Alpha部分,无需重新压缩,以便创建HAPQ或HAPAlphaOnly文件。

texture

指定保留的纹理。

color
alpha

将HAPQA转换为HAPQ

ffmpeg -i hapqa_inputfile.mov -c copy -bsf:v hapqa_extract=texture=color -tag:v HapY -metadata:s:v:0 encoder="HAPQ" hapq_file.mov

将HAPQA转换为HAPAlphaOnly

ffmpeg -i hapqa_inputfile.mov -c copy -bsf:v hapqa_extract=texture=alpha -tag:v HapA -metadata:s:v:0 encoder="HAPAlpha Only" hapalphaonly_file.mov

13.12 h264_metadata

修改嵌入在H.264流中的元数据。

aud

在流的所有访问单元中插入或移除AUD NAL单位。

pass
insert
remove

默认值为通过。

sample_aspect_ratio

在VUI参数中设置流的样本宽高比。参见H.264表E-1。

overscan_appropriate_flag

设置流是否适合使用过扫描显示(参见H.264第E.2.1节)。

video_format
video_full_range_flag

设置流中的视频格式(参见H.264第E.2.1节和表E-2)。

colour_primaries
transfer_characteristics
matrix_coefficients

设置流中的颜色描述(参见H.264第E.2.1节以及表E-3、E-4和E-5)。

chroma_sample_loc_type

在流中设置色度样本位置(参见H.264第E.2.1节以及图E-1)。

tick_rate

在VUI参数中设置滴答率(time_scale / num_units_in_tick)。这是流中可表示的最小时间单位,大多数情况下代表流的场率(帧率的两倍)。

fixed_frame_rate_flag

设置流是否具有固定帧率 - 通常这表明帧率正好是滴答率的一半,但确切含义取决于隔行和图片结构(参见H.264第E.2.1节和表E-6)。

zero_new_constraint_set_flags

在SPS中将constraint_set4_flag和constraint_set5_flag设置为零。这些位在H.264规范的先前版本中是保留的,因此某些硬件解码器要求这些位为零。将它们设置为零的结果仍是有效比特流。

crop_left
crop_right
crop_top
crop_bottom

在 SPS 中设置帧裁剪偏移。这些值将在流已经裁剪的情况下替换当前值。

这些字段以像素为单位设置。注意,如果色度被二次采样或流是隔行扫描的(参见 H.264 第 7.4.2.1.1 节),某些尺寸可能无法表示。

sei_user_data

插入字符串作为 SEI 未注册用户数据。参数必须采用格式UUID+字符串,其中 UUID 是可能用连字符分隔的十六进制数字,字符串可以是任意内容。

例如,‘086f3693-b7b3-4f2c-9653-21492feee5b8+hello’将插入与给定 UUID 关联的字符串“hello”。

delete_filler

删除填充 NAL 单元和填充 SEI 消息。

display_orientation

插入、提取或删除显示方向 SEI 消息。 有关语法和语义,请参见 H.264 第 D.1.27 和 D.2.27 节。

pass
insert
remove
extract

默认是保留。

插入模式与rotateflip选项结合使用。任何已有显示方向消息将在插入或移除模式下被删除。 提取模式将显示矩阵作为附加数据添加到数据包。

rotate

设置显示方向 SEI 中的旋转(以逆时针角度表示的度数)。范围是 -360 到 +360。默认值为 NaN。

flip

设置显示方向 SEI 中的翻转。

horizontal
vertical

默认是未设置。

level

在 SPS 中设置级别。参见 H.264 第 A.3 节以及表 A-1 到 A-5。

参数必须是级别名称(例如,‘4.2’), 一个级别 ID 值(例如,‘42’),或者是特殊名称‘auto’, 表示过滤器应尝试从输入流属性猜测级别。

13.13 h264_mp4toannexb

将 H.264 位流从长度前缀模式转换为起始码前缀模式(如 ITU-T H.264 规范的附录 B 中定义的)。

这在某些流格式中是必需的,通常是 MPEG-2 传输流格式(复用器mpegts).

例如,要将包含 H.264 流的 MP4 文件重新复用到 mpegts 格式,使用ffmpeg,可以使用命令:

ffmpeg -i INPUT.mp4 -codec copy -bsf:v h264_mp4toannexb OUTPUT.ts

请注意,该过滤器会自动插入到 MPEG-TS(复用器mpegts)和原始 H.264(复用器h264)输出格式。

13.14 h264_redundant_pps

这对某些 Blu-ray 流执行特定修复,这些流包含冗余 PPS,修改了流无关的参数,导致需要正确额外数据的其他转换出现混乱。

13.15 hevc_metadata

修改嵌入 HEVC 流中的元数据。

aud

在流的所有访问单元中插入或移除 AUD NAL 单元。

insert
remove
sample_aspect_ratio

在 VUI 参数中设置流的样本纵横比。

video_format
video_full_range_flag

设置流中的视频格式(参见 H.265 第 E.3.1 节和表 E.2)。

colour_primaries
transfer_characteristics
matrix_coefficients

设置流中的颜色描述(参见 H.265 第 E.3.1 节和表 E.3、E.4 和 E.5)。

chroma_sample_loc_type

设置流中的色度样本位置(参见 H.265 第 E.3.1 节和图 E.1)。

tick_rate

在 VPS 和 VUI 参数中设置时钟频率(time_scale / num_units_in_tick)。与num_ticks_poc_diff_one结合使用,可以设置流中的恒定帧率。注意,当流位于容器中时,可能会被容器参数覆盖。

num_ticks_poc_diff_one

在 VPS 和 VUI 中设置 poc_proportional_to_timing_flag,并使用此值设置 num_ticks_poc_diff_one_minus1(参见 H.265 第 7.4.3.1 节和 E.3.1 节)。如果未同时设置tick_rate则忽略。

crop_left
crop_right
crop_top
crop_bottom

在 SPS 中设置一致性窗口裁剪偏移。这些值将在流已经裁剪的情况下替换当前值。

这些字段以像素为单位设置。注意,如果色度被二次采样(参见 H.265 第 7.4.3.2.1 节),某些尺寸可能无法表示。

width
height

设置裁剪后的宽度和高度。

level

在 VPS 和 SPS 中设置级别。请参见 H.265 第 A.4 节和表 A.6、A.7。

参数必须是级别名称(例如,‘5.1’),一个general_level_idc值(例如,‘153’表示级别 5.1), 或者是特殊名称‘auto’,表示过滤器应尝试从输入流属性中猜测级别。

13.16 hevc_mp4toannexb

将 HEVC/H.265 位流从长度前缀模式转换为起始码前缀模式(如 ITU-T H.265 规范的附录 B 中定义)。

这在某些流格式中是必需的,通常是 MPEG-2 传输流格式(复用器mpegts).

例如,将包含 HEVC 流的 MP4 文件重新复用到 mpegts 格式,使用ffmpeg,可以使用命令:

ffmpeg -i INPUT.mp4 -codec copy -bsf:v hevc_mp4toannexb OUTPUT.ts

请注意,该过滤器会自动插入到 MPEG-TS(复用器mpegts)、原始 HEVC/H.265(复用器h265或者hevc)输出格式。

13.17 imxdump

修改比特流以适合 MOV 并可被 Final Cut Pro 解码器使用。此过滤器仅适用于 mpeg2video 编解码器,并可能不适用 Final Cut Pro 7 及更新版本,提供了适当的-tag:v.

例如,要将 30 MB/秒 NTSC IMX 重新混合到 MOV:

ffmpeg -i input.mxf -c copy -bsf:v imxdump -tag:v mx3n output.mov

13.18 mjpeg2jpeg

将 MJPEG/AVI1 数据包转换为完整的 JPEG/JFIF 数据包。

MJPEG 是一种视频编解码器,其中每个视频帧本质上是一个 JPEG 图像。可以无损地提取单个帧,例如通过

ffmpeg -i ../some_mjpeg.avi -c:v copy frames_%d.jpg

不幸的是,这些块是不完整的 JPEG 图像,因为它们缺少解码所需的 DHT 段。引用自http://www.digitalpreservation.gov/formats/fdd/fdd000063.shtml:

Avery Lee 在 2001 年 rec.video.desktop 新闻组中评论说:“MJPEG,或者至少在带有 MJPG 四字符码的 AVI 文件中的 MJPEG,是受限的 JPEG,具有固定的——且被*省略*的——霍夫曼表。JPEG 必须是 YCbCr 色彩空间,必须是 4:2:2,而且必须使用基本的霍夫曼编码,而不是算术或渐进编码……确实可以提取 MJPEG 帧,并使用常规 JPEG 解码器解码它们,但必须在它们前面加上 DHT 段,否则解码器将无法知道如何解压缩数据。所需的确切表在 OpenDML 规范中给出。”

此比特流过滤器修补从 MJPEG 流中提取的帧(携带 AVI1 头 ID 并缺少 DHT 段)的头,以生成完全符合条件的 JPEG 图像。

ffmpeg -i mjpeg-movie.avi -c:v copy -bsf:v mjpeg2jpeg frame_%d.jpg
exiftran -i -9 frame*.jpg
ffmpeg -i frame_%d.jpg -c:v copy rotated.avi

13.19 mjpegadump

向比特流添加 MJPEG A 头,以启用 Quicktime 的解码。

13.20 mov2textsub

从 MOV 字幕中提取可表示的文本文件,删除每个字幕数据包中的元数据头。

另见text2movsub过滤器。

13.21 mpeg2_metadata

修改嵌入 MPEG-2 流中的元数据。

display_aspect_ratio

设置流中的显示纵横比。

支持以下固定值:

4/3
16/9
221/100

任何其他值将导致信号为方形像素(参见 H.262 第 6.3.3 节和表 6-3)。

frame_rate

设置流中的帧速率。这是通过已知值的表结合小的乘数和除数构造的——如果提供的值无法完全表示,将使用最接近的表示值(参见 H.262 第 6.3.3 节和表 6-4)。

video_format

设置流中的视频格式(参见 H.262 第 6.3.6 节和表 6-6)。

colour_primaries
transfer_characteristics
matrix_coefficients

设置流中的颜色描述(参见 H.262 第 6.3.6 节和表 6-7、6-8 和 6-9)。

13.22 mpeg4_unpack_bframes

解包 DivX 风格的打包 B 帧。

DivX 风格的打包 B 帧不是有效的 MPEG-4,仅是为了解决一个破坏的 Video for Windows 子系统的临时方法。 它们占用更多空间,可能导致轻微的 AV 同步问题,解码需要更多的 CPU 能力(除非播放器有一些解码图片队列来补偿 2,0,2,0 帧每数据包样式)并且如果复制到一个标准容器如 mp4 或 mpeg-ps/ts,可能造成问题,因为 MPEG-4 解码器可能无法解码它们,因为它们不是有效的 MPEG-4。

例如,使用ffmpeg修复包含 DivX 风格打包 B 帧的 MPEG-4 数据流的 AVI 文件,可以使用命令:

ffmpeg -i INPUT.avi -codec copy -bsf:v mpeg4_unpack_bframes OUTPUT.avi

13.23 noise

破坏数据包内容或者简单地丢弃数据包而不会损坏容器。可以用于模糊测试或测试误差恢复/隐蔽功能。

参数:

amount

接受一个表达式,该表达式每个数据包评估以确定该数据包中的字节将被修改的频率。值低于 0 将导致不固定的频率。 默认值为 0,即不进行修改。但是,如果既未指定 amount 又未指定 drop,则 amount 将设置为-1。有关接受的变量,请参见下文。

drop

接受一个每数据包评估的表达式,其值确定该数据包是否被丢弃。 评估为正值则导致数据包被丢弃。评估为负值则造成它被丢弃的机会变化,约与该值的大小成反比。默认值为 0,即不丢弃。有关接受的变量,请参见下文。

dropamount

接受一个非负整数,该值分配一个变化的丢弃机会,约与该值成反比。默认值为 0,即不丢弃。此选项保留用于向后兼容,相当于将 drop 设置为具有相同大小的负值,即dropamount=4drop=-4相同。如果同时指定 drop,则忽略。

两者amountdrop接受包含以下变量的表达式:

n

数据包的索引,从零开始。

tb

数据包时间戳的时间基。

pts

数据包的展示时间戳。

dts

数据包的解码时间戳。

nopts

表示 AV_NOPTS_VALUE 的常量。

startpts

流中首次见到的非 AV_NOPTS_VALUE PTS。

startdts

流中首次见到的非 AV_NOPTS_VALUE DTS。

duration
d

数据包持续时间,单位为时间基。

pos

输入中的数据包位置;可能为 -1,如果未知或未设置。

size

数据包大小,以字节为单位。

key

数据包是否被标记为关键帧。

state

一个伪随机整数,主要来源于数据包有效载荷的内容。

13.23.1 示例

对每个字节应用修改,但不丢弃任何数据包。

ffmpeg -i INPUT -c copy -bsf noise=1 output.mkv

丢弃时间戳超过 30s 的非关键帧视频数据包,但不修改其他数据包。

ffmpeg -i INPUT -c copy -bsf:v noise=drop='gt(t\,30)*not(key)' output.mkv

每隔 10 秒丢弃一秒音频,并向其余部分添加一些随机噪声。

ffmpeg -i INPUT -c copy -bsf:a noise=amount=-1:drop='between(mod(t\,10)\,9\,10)' output.mkv

13.24 null

此比特流过滤器不进行任何修改地传递数据包。

13.25 pcm_rechunk

重新打包 PCM 音频,使每个数据包包含固定数量的样本或保持固定的每秒数据包速率。这类似于(ffmpeg-filters)asetnsamples 音频过滤器但作用于音频数据包而非音频帧。

nb_out_samples, n

设置每个输出音频数据包的样本数量。该数量表示每个通道的样本数。默认值为 1024。

pad, p

如果设置为 1,过滤器将用静默填充最后一个音频数据包,使其与之前数据包含有相同数量的样本(或者大致等于数量,参见frame_rate)。默认值为 1。

frame_rate, r

此选项使过滤器输出固定每秒数据包数量而不是固定每包样本数量。如果音频采样率不能被帧速率整除,则样本数量不会固定,而是会略有调整,以使每个数据包尽可能靠近帧边界开始。使用此选项优先于nb_out_samples.

您可以通过生成 NTSC 帧速率对应的 48kHz 音频 1602-1601-1602-1601-1602 模式frame_rate选项.

ffmpeg -f lavfi -i sine=r=48000:d=1 -c pcm_s16le -bsf pcm_rechunk=r=30000/1001 -f framecrc -

13.26 pgs_frame_merge

将以"end of display set"段结束的PGS字幕片段序列合并为单个数据包。

这是某些支持PGS字幕的容器所要求的操作 (复用器matroska).

13.27 prores_metadata

修改嵌入在prores流中的颜色属性元数据。

color_primaries

设置颜色原点。 可用值为:

auto

保持相同的颜色原点属性(默认)。

unknown
bt709
bt470bg

BT601 625

smpte170m

BT601 525

bt2020
smpte431

DCI P3

smpte432

P3 D65

transfer_characteristics

设置颜色传输。 可用值为:

auto

保持相同的传输特性属性(默认)。

unknown
bt709

BT 601, BT 709, BT 2020

smpte2084

SMPTE ST 2084

arib-std-b67

ARIB STD-B67

matrix_coefficients

设置矩阵系数。 可用值为:

auto

保持相同的色彩空间属性(默认)。

unknown
bt709
smpte170m

BT 601

bt2020nc

为文件的每帧设置Rec709色彩空间

ffmpeg -i INPUT -c copy -bsf:v prores_metadata=color_primaries=bt709:color_trc=bt709:colorspace=bt709 output.mov

为文件的每帧设置混合对数伽马(Hybrid Log-Gamma)参数

ffmpeg -i INPUT -c copy -bsf:v prores_metadata=color_primaries=bt2020:color_trc=arib-std-b67:colorspace=bt2020nc output.mov

13.28 remove_extra

从数据包中移除额外数据。

接受以下参数:

freq

设置要从哪些帧类型移除额外数据。

k

仅从非关键帧移除额外数据。

keyframe

仅从关键帧移除额外数据。

e, all

从所有帧移除额外数据。

13.29 setts

设置数据包中的PTS和DTS。

接受以下参数:

ts
pts
dts

设置PTS、DTS或两者的表达式。

duration

设置持续时间的表达式。

time_base

设置输出时间基。

通过eval API评估表达式,并可包含以下常量:

N

输入数据包的计数。从0开始。

TS

输入中的解复用时间戳(如果使用tsdts选项,在使用pts选项时为显示时间戳)。

POS

数据包在文件中的原始位置;如果当前数据包未定义,则为未定义

DTS

输入中的解复用时间戳。

PTS

输入中的显示时间戳。

DURATION

输入中的持续时间。

STARTDTS

第一数据包的DTS。

STARTPTS

第一数据包的PTS。

PREV_INDTS

前一个输入DTS。

PREV_INPTS

前一个输入PTS。

PREV_INDURATION

前一个输入持续时间。

PREV_OUTDTS

前一个输出DTS。

PREV_OUTPTS

前一个输出PTS。

PREV_OUTDURATION

前一个输出持续时间。

NEXT_DTS

下一个输入DTS。

NEXT_PTS

下一个输入PTS。

NEXT_DURATION

下一个输入持续时间。

TB

流数据包所属的时间基。

TB_OUT

输出时间基。

SR

流数据包所属的采样率。

NOPTS

AV_NOPTS_VALUE常量。

例如,将PTS设为DTS(如果涉及B帧不推荐):

ffmpeg -i INPUT -c:a copy -bsf:a setts=pts=DTS out.mkv

13.30 showinfo

记录基本数据包信息。主要用于测试、调试和开发。

13.31 text2movsub

将文本字幕转换为MOV字幕(如mov_text编解码器使用的)并添加元数据头。

另见mov2textsub滤镜。

13.32 trace_headers

记录包含编码流标题(所有高于独立编码块级别的部分)语法元素的跟踪输出。 这对于调试底层流问题非常有用。

支持AV1, H.264, H.265, (M)JPEG, MPEG-2 和VP9,但具体支持的可能会因构建而有所不同。

13.33 truehd_core

从TrueHD流中提取核心数据,去除ATMOS数据。

13.34 vp9_metadata

修改嵌入在VP9流中的元数据。

color_space

设置帧头中的颜色空间值。请注意,任何设置为RGB的帧都会被隐式地设置为PC范围,并且RGB与配置文件0和2不兼容。

unknown
bt601
bt709
smpte170
smpte240
bt2020
rgb
color_range

设置帧头中的颜色范围值。请注意,颜色空间强加的任何值将优先于此值。

tv
pc

13.35 vp9_superframe

将VP9不可见(alt-ref)帧重新合并到VP9超级帧中。 修复了分割/分段VP9流的合并问题,其中alt-ref帧与其可见对应部分分离。

13.36 vp9_superframe_split

将VP9超级帧拆分为单独的帧。

13.37 vp9_raw_reorder

给定一个时间戳正确但可能无序的VP9流,插入额外的现有帧显示数据包以校正排序。

14 格式选项

libavformat库提供了一些通用的全局选项,可在所有复用器和解复用器上设置。 此外,每个复用器或解复用器可能支持所谓的私有选项,这些选项是该组件特有的。

选项可以通过选项 设置值FFmpeg工具中进行设置,或者通过具体在AVFormatContext选项或使用libavutil/opt.hAPI进行编程使用。

以下是支持选项的列表:

avioflags 标志 (输入/输出)

可能的值:

direct

减少缓冲。

probesize 整数 (输入)

设置探测大小(以字节为单位),即分析数据以获取流信息的大小。 更高的值将允许检测更多信息(如果分散在流中),但会增加延迟。 必须是一个大于或等于32的整数。默认值为5000000。

max_probe_packets 整数 (输入)

设置探测编解码器时允许缓冲的数据包的最大数量。 默认值为2500个数据包。

packetsize 整数 (输出)

设置数据包大小。

fflags 标志

设置格式标志。某些仅适用于有限数量的格式。

输入文件的可能值:

discardcorrupt

丢弃损坏的数据包。

fastseek

为某些格式启用快速但不准确的搜寻。

genpts

如果设置了DTS则生成缺失的PTS。

igndts

如果也设置了PTS,则忽略DTS。在PTS设置的情况下,DTS 值被设置为NOPTS。当启用nofillin标志时会被忽略。

ignidx

忽略索引。

nobuffer

降低初始输入流分析时缓冲引入的延迟。

nofillin

不要填充可以通过严格计算得到的数据包字段中缺失的值。

noparse

禁用AVParsers,这需要+nofillin支持。

sortdts

尝试通过DTS对输出数据包进行交织。当前仅对带有索引的AVI格式可用。

输出文件的可能值:

autobsf

根据输出格式的需要自动应用比特流过滤器。默认启用。

bitexact

仅写入与平台、构建和时间无关的数据。 这确保了文件和数据校验和在不同平台之间可重复并匹配。 主要用于回归测试。

flush_packets

立即写出数据包。

shortest

在最短流结束时停止复用。 可能需要增加max_interleave_delta以避免在EOF之前冲洗较长的流。

seek2any 整数 (输入)

在解复用器级别允许定位到非关键帧(如果支持)时,设置为1。 默认值为0。

analyzeduration 整数 (输入)

指定分析输入的微秒数。 更高的值将使得检测到更精确的信息,但会增加延迟。 默认值为5000000微秒=5秒。

cryptokey 十六进制字符串 (输入)

设置解密密钥。

indexmem 整数 (输入)

设置时间戳索引使用的最大内存(每流)。

rtbufsize 整数 (输入)

设置用于缓冲实时帧的最大内存。

fdebug 标志 (输入/输出)

打印特定的调试信息。

可能的值:

ts
max_delay 整数 (输入/输出)

设置最大复用或解复用延迟(以微秒为单位)。

fpsprobesize 整数 (输入)

设置用于探测fps的帧数量。

audio_preload 整数 (输出)

设置音频数据包应该被提前交错的微秒数。

chunk_duration 整数 (输出)

为每个块设置微秒数。

chunk_size 整数 (输出)

为每个块设置字节数。

err_detect, f_err_detect 标志 (输入)

设置错误检测标志。f_err_detect已被弃用,仅应通过ffmpeg工具使用。

可能的值:

crccheck

验证嵌入的CRC。

bitstream

检测比特流规范偏差。

buffer

检测不适当的比特流长度。

explode

在检测到轻微错误时中止解码。

careful

将违反规范但在实际中未见过的行为视为错误。

compliant

将所有规范不合规行为视为错误。

aggressive

将一个理智的编码器不应做的事情视为错误。

max_interleave_delta 整数 (输出)

设置交错的最大缓冲持续时间。 持续这以微秒为单位表示,默认为10000000(10秒)。

为确保所有流都正确交错,libavformat将在实际写入任何数据包之前至少等待每个流具有一个数据包。 当某些流是"稀疏"的(即连续数据包之间存在较大间隔),这可能会导致过多缓冲。

此字段指定复用队列中第一个和最后一个数据包时间戳之间的最大差值, 超过此值,libavformat将输出一个数据包,无论是否为所有流排队了一个数据包。

如果设置为0,libavformat将继续缓冲数据包,直到每个流都有一个数据包为止,无论缓冲数据包间的最大时间戳差是多少。

use_wallclock_as_timestamps 整数 (输入)

如果设置为1,则使用挂钟作为时间戳。 默认值为0。

avoid_negative_ts 整数 (输出)

可能的值:

make_non_negative

调整时间戳以使其为非负值。 另请注意,这仅影响前置负时间戳,而不包括非单调负时间戳。

make_zero

调整时间戳以使第一个时间戳为0。

auto (default)

在目标格式需要的情况下启用调整。

disabled

禁用时间戳调整。

启用调整后,所有输出时间戳都将按相同的量进行调整。 音频、视频和字幕的不同步和相对时间戳差异将保留,与未调整时相比保持一致。

skip_initial_bytes 整数 (输入)

设置读取头文件和帧之前要跳过的字节数(如果设置为1)。 默认值为0。

correct_ts_overflow 整数 (输入)

如果设置为1,则纠正单次时间戳溢出。 默认值为1。

flush_packets 整数 (输出)

在每个数据包之后刷新底层I/O流。 默认值为-1(自动),表示底层协议将自行决定。 1启用,并会降低延迟;0禁用,在某些情况下可能提高I/O吞吐量。

output_ts_offset 偏移量 (输出)

设置输出时间偏移量。

偏移量必须是时间持续时间规范,详见ffmpeg-utils手册中时间持续时间部分。.

偏移量由复用器添加到输出时间戳。

指定正偏移意味着相应的流毫秒延迟于偏移量中指定的时间持续时间。 默认值为0(意味着未应用偏移)。

format_whitelist 列表 (输入)

","分隔的允许解复用器列表。 默认情况下允许所有。

dump_separator 字符串 (输入)

用于分隔命令行中有关流参数信息字段的分隔符。 例如,用换行符和缩进分隔字段:

ffprobe -dump_separator "
                          "  -i ~/videos/matrixbench_mpeg2.mpg
max_streams 整数 (输入)

指定最大流数量。 这可用于拒绝由于流数量过多而需要太多资源的文件。

skip_estimate_duration_from_pts 布尔值 (输入)

如果需要为文件末尾pts的额外探测,跳过输入持续时间估计。 目前,适用于MPEG-PS和MPEG-TS。

duration_probesize 整数 (输入)

设置探测输入持续时间时的探测大小(以字节为单位), 当它实际上需要探测文件结尾的PTS时(目前适用于:MPEG-PS和MPEG-TS)。 用于对本身或间接使用更精确的持续时间探测,或通过诸如concat解复用器之类的方式。 典型使用场景为高比特率、大缓冲和音视频内容PTS相同的清洁结尾的MPEG-TSCBR:在此时最后一包视频和音频之间存在较大数据间隔, 需要从中读取大量字节才能获取视频流持续时间。 另一个用例如:默认探测行为只能探测到一个并非流最后一帧的单个视频帧(由于帧重新排序),因此时间持续时间不准确。 设置该选项会对小文件也产生性能影响,因探测碰撞是固定值。 默认行为为广泛适配,不损全时探测流时间,而不以任何代价达到探测目标。

strict, f_strict 整数 (输入/输出)

指定遵循标准的严格程度。f_strict已弃用,仅应通过以下方式使用ffmpeg工具。

可能的值:

very

严格遵守较旧、更严格版本的规范或参考软件

strict

严格遵守规范中的所有内容,无论后果如何

normal
unofficial

允许非正式扩展

experimental

允许非标准化的实验性功能,包括实验性(未完成/进行中的/未经充分测试的)解码器和编码器。 注意:实验性解码器可能存在安全风险,不要用于解码不受信任的输入。

14.1 格式流说明符

格式流说明符允许选择符合特定属性的一个或多个流。

流说明符的确切语义由以下部分定义avformat_match_stream_specifier()功能,声明在libavformat/avformat.h头文件中并记录在(ffmpeg)流说明符章节中,位于ffmpeg(1)手册中.

15 解复用器

解复用器是FFmpeg中的可配置元素,可以从特定类型的文件中读取多媒体流。

配置FFmpeg构建时,支持的所有解复用器默认都已启用。可以使用以下配置选项列出所有可用解复用器:--list-demuxers.

可以使用以下配置选项禁用所有解复用器:--disable-demuxers,并通过选项有选择地启用单个解复用器--enable-demuxer=DEMUXER,或通过以下选项禁用--disable-demuxer=DEMUXER.

选项-demuxersFF*工具将显示已启用的解复用器列表。使用-formats查看已启用的解复用器和复用器的组合列表。

以下是一些当前可用解复用器的说明。

15.1 aa

Audible Format 2、3和4解复用器。

此解复用器用于解复用Audible Format 2、3和4 (.aa)文件。

15.2 aac

原始音频数据传输流AAC解复用器。

此解复用器用于解复用包含单个AAC流的ADTS输入以及其中的任何ID3v1/2或APE标签。

15.3 apng

动画便携网络图形解复用器。

此解复用器用于解复用APNG文件。 所有标头除PNG签名外,直到第一个fcTL块为止(但不包括)作为额外数据传输。 帧随后分割为两fcTL块之间或最后一个fcTL与IEND块之间的所有块。

-ignore_loop bool

如果设置,忽略文件中的循环变量。默认启用。

-max_fps int

每秒最大帧速率。默认值为0,不限制。

-default_fps int

文件中未指定时的默认每秒帧速率(0表示尽可能快)。默认值为15。

15.4 asf

高级系统格式解复用器。

此解复用器用于解复用ASF文件和MMS网络流。

-no_resync_search bool

不要尝试通过寻找某个可选的开始代码来重新同步。

15.5 concat

虚拟连接脚本解复用器。

此解复用器从文本文件中读取文件列表和其他指令,并将它们一个接一个地解复用,就好像它们的所有数据包已经被复用在一起。

文件中的时间戳会调整为第一个文件从0开始,每个后续文件从上一个文件结束的位置开始。请注意,这是在全局范围内完成的,可能会在所有流长度不完全相同时产生间隙。

所有文件必须具有相同的流(相同的编解码器,相同的时间基等)。

每个文件的持续时间用于调整下一个文件的时间戳:如果文件持续时间计算错误(例如,由于使用比特率计算或文件被截断),可能会导致伪影。使用duration指令可覆盖每个文件中存储的持续时间。

15.5.1 语法

脚本是扩展ASCII文本文件,每行一个指令。 空行、前导空格以及以‘#’开头的行会被忽略。 识别以下指令:

file path

要读取的文件路径;特殊字符和空格必须用反斜杠或单引号进行转义。

之后的所有与文件相关的指令都适用于该文件。

ffconcat version 1.0

识别脚本类型和版本。

为了使 FFmpeg 能自动识别格式,此指令必须完全如实(无额外空格或字节序标记)出现在脚本的第一行。

duration dur

文件的持续时间。 此信息可以从文件中指定;如果文件中的信息不可用或不准确,在此处指定可能更高效或有助于解决问题。

如果为所有文件设置持续时间,则可以在整个连接视频中进行寻找。

inpoint timestamp

文件的进入点。解复用器打开文件时会立即跳转到指定时间戳。 搜索是为了确保所有流在进入点可以成功呈现。

此指令在帧内编码器中效果最佳,因为对非帧内编码器,通常会在实际进入点之前得到额外数据包,并且解码内容很可能包含进入点之前的帧。

对于每个文件,在文件进入点之前的数据包的时间戳将小于文件的计算开始时间戳(第一个文件的时间戳为负),而文件的持续时间(如果未通过duration指令指定)将根据其指定的进入点减少。

由于可能存在进入点之前的数据包,数据包时间戳在两个连接的文件之间可能会重叠。

outpoint timestamp

文件的结束点。当解复用器在任何流中达到指定的解码时间戳时,它会将其视为文件结束条件,并跳过当前及所有剩余的数据包。

结束点是排他性的;这意味着解复用器不会输出具有解码时间戳大于或等于结束点的数据包。

此指令在帧内编码器和所有流紧密交错的格式中效果最佳。 对于非帧内编码器,通常会得到呈现时间戳晚于结束点的额外数据包,因此解码内容很可能包含结束点之后的帧内容。 如果你的流未紧密交错,你可能未能获得结束点之前所有流的所有数据包,并可能只能解码最早的流直到结束点。

文件的持续时间(如果未通过duration指令指定)将根据其指定的结束点减少。

file_packet_metadata key=value

文件数据包的元数据。 指定的元数据将应用于每个文件数据包。 可以多次指定此指令以添加多个元数据条目。 此指令已弃用,请使用file_packet_meta代替。

file_packet_meta key value

文件数据包的元数据。 指定的元数据将应用于每个文件数据包。 可以多次指定此指令以添加多个元数据条目。

option key value

访问、打开和探测文件的选项。 可以多次出现。

stream

在虚拟文件中引入一个流。 随后的所有与流相关的指令都适用于最近引入的流。 必须设置一些流属性以便能够识别子文件中的匹配流。 如果脚本中没有定义流,则会复制第一个文件中的流。

exact_stream_id id

设置流的ID。 如果提供了此指令,将使用子文件中对应ID的字符串。 这对于MPEG-PS (VOB)文件特别有用,因为流的顺序不可靠。

stream_meta key value

流的元数据。 可以多次出现。

stream_codec value

流的编解码器。

stream_extradata hex_string

流的额外数据,以十六进制编码。

chapter id start end

添加一个章节。id是一个唯一标识符,可能是小的和连续的。

15.5.2 选项

此解复用器接受以下选项:

safe

如果设置为1,拒绝不安全的文件路径和指令。 文件路径被认为安全,如果它不包含协议规范且为相对路径,且所有组件仅包含可移植字符集中的字符(字母、数字、句点、下划线和连字符),且组件开头没有句点。

如果设置为0,则接受任何文件名。

默认值为1。

auto_convert

如果设置为1,尝试对数据包数据进行自动转换以使流可连接。 默认值为1。

目前,唯一的转换是为MP4格式的H.264流添加 h264_mp4toannexb比特流过滤器。 如果有分辨率变化,这是特别需要的。

segment_time_metadata

如果设置为1,每个数据包将包含lavf.concat.start_timelavf.concat.duration数据包元数据值,这些值分别是连接输出中相应文件段的起始时间和持续时间,单位为微秒。只有当根据连接文件已知时,才会设置持续时间元数据。 默认值为0。

15.5.3 示例

  • 使用绝对文件名并包含一些注释:
    # my first filename
    file /mnt/share/file-1.wav
    # my second filename including whitespace
    file '/mnt/share/file 2.wav'
    # my third filename including whitespace plus single quote
    file '/mnt/share/file 3'\''.wav'
    
  • 允许输入格式自动探测,使用安全文件名并设置第一个文件的持续时间:
    ffconcat version 1.0
    
    file file-1.wav
    duration 20.0
    
    file subdir/file-2.wav
    

15.6 dash

动态自适应流HTTP解复用器。

此解复用器会呈现清单中的所有AVStreams。 通过设置AVStreams的丢弃标志,调用者可以决定 要实际接收哪些流。 每个流以元数据键"id"和"variant_bitrate" 分别镜像id and bandwidth中的<Representation> as metadata keys named "id" and "variant_bitrate" respectively.

15.6.1 选项

此解复用器接受以下选项:

cenc_decryption_key

16字节密钥,以十六进制形式,用于解密使用ISO通用加密技术加密的文件(CENC/AES-128 CTR;ISO/IEC 23001-7)。

15.7 dvdvideo

DVD视频解复用器,由libdvdnav和libdvdread驱动。

可以直接将DVD标题(具体为顺序PGC)引入转换管道中。 菜单资源,如背景视频或音频, 也可以利用菜单坐标进行解复用(尽力尝试)。 目前不支持搜索功能。

支持块设备(DVD驱动器)、ISO文件和目录结构。 使用-f dvdvideo激活这些输入中的一种。

此解复用器不包含任何类型的解密代码。 处理加密DVD时需自行解决,不应期望在此事上获得支持。

底层播放由libdvdnav处理,结构解析由libdvdread处理。 FFmpeg必须构建为同时支持GPL库并具有以下配置开关--enable-libdvdnav--enable-libdvdread.

需提供所需的"标题号"或确切PGC/PG坐标信息。 许多开源DVD播放器和工具可以帮助提供此信息。 如果未指定,解复用器会默认为标题1,这适用于许多光盘。 然而,由于格式的灵活性,建议手动检查。 许多光盘采用奇怪的方式进行编制或存在无效标题。

如果输入为真实DVD驱动器,请注意,有些驱动器可能会悄无声息地因读取光盘上的坏扇区失败而返回随机位,这在事实上是损坏的数据。 尤其在老化或损坏的光盘中较为明显。 需要进行第二次传递和完整性检查来检测损坏。 这不是FFmpeg的问题。

15.7.1 背景

DVD-Video 不是传统意义直接可访问的线性容器格式。相反,它允许复杂的程序化播放存储在无头 VOB 文件中的经过精细混合的 MPEG-PS 流。对终端用户而言,这些流被简单地称为“标题”,但实际的逻辑播放顺序由标题内的一个或多个“PGC”(节目组链)定义。PGC 又由多个“PG”(节目)组成,它们是真正的视频片段(对于典型的电影特性来说是按顺序排列的)。PGC 结构、流布局及元数据存储在需要解析的 IFO 文件中。从简单术语来看,PGC 可以看作播放列表。

实际的 DVD 播放器依赖用户通过菜单的 GUI 交互和内部虚拟机驱动解复用方向。通常,用户会通过导航(通过菜单)或自动重定向到他们选择的 PGC。在此过程中以及随后的播放过程中,DVD 播放器的内部虚拟机还会维护状态并执行指令,这些指令可以在播放期间跳转到不同的扇区。这就是为什么需要 libdvdnav,因为简单读取光盘(VOBs)上的 MPEG-PS 数据块在许多情况下不足以生成正确的播放顺序。

许多其他 DVD 结构(一个漫长的主题)在此不会讨论。导航包(NAV packets)尤其由该解复用器处理以建立准确的时间,但不会作为流发出。一个良好的高级理解,请参阅:https://code.videolan.org/videolan/libdvdnav/-/blob/master/doc/dvd_structures

15.7.2 选项

此解复用器接受以下选项:

title 整数

要播放的标题编号。如果pgcpg未设置,则必须设置。不适用于菜单。默认值是 0(自动),当前仅选择第一个可用标题(标题 1)并通知用户其相关含义。

chapter_start 整数

要开始的章节或 PTT(标题的一部分)编号。不适用于菜单。默认值是 1。

chapter_end 整数

要结束的章节或 PTT(标题的一部分)编号。不适用于菜单。默认值是 0,这是一个特殊值,表示在最后一个可能的章节结束。

angle 整数

视频角度编号,指的是基本上由 VOB 中交织的交替帧组成的额外视频流。不适用于菜单。默认值是 1。

region 整数

用于播放的区域代码。有些光盘可能使用此代码在不同区域默认播放特定角度。此选项不会影响实际 DVD 驱动器的区域代码(如果用作输入)。不适用于菜单。默认值是 0,“全球”。

menu 布尔值

解复用菜单资源而不是导航标题。需要菜单的确切坐标(menu_lu, menu_vts, pgc, pg)。默认值是 false。

menu_lu 整数

要解复用的菜单语言。在 DVD 中,菜单按语言分组。默认值是 0,第一个语言单元。

menu_vts 整数

菜单所在的 VTS,或者如果是 VMG 菜单(根级),则为 0。默认值是 0,VMG 菜单。

pgc 整数

pg一起开始播放的入口 PGC。title的替代设置。title.

pg 整数

pgc一起开始播放的入口 PG。title. Chapter markers are not supported at this time. Default is 0, automatically resolve from value of title或从菜单的开头(PG 1)开始。

preindex 布尔值

启用此选项以获得准确的章节(PTT)标记和时长测量,这需要二次缓慢读取以便从导航包(NAV packets)中索引章节标记时间戳。这对实际光驱而言是额外的非理想工作。建议与存储在硬盘上的 DVD 结构备份一起使用,速度更快。与pgcpg不兼容。不适用于菜单。默认值是 0 即 false。

trim 布尔值

跳过开头的填充单元(即长度不足 1 秒的单元)。许多光盘在 PGC 的开头存在填充片段,通常含有用于控制实际 DVD 播放器缓冲速度的垃圾数据,没有其它材料值。不适用于菜单。默认值是 1,即 true。

15.7.3 示例

  • 打开来自指定 DVD 结构的标题 3:
    ffmpeg -f dvdvideo -title 3 -i <path to DVD> ...
    
  • 从指定 DVD 结构的标题 1 打开章节 3-6:
    ffmpeg -f dvdvideo -chapter_start 3 -chapter_end 6 -title 1 -i <path to DVD> ...
    
  • 从指定 DVD 结构的标题 1 仅打开章节 5:
    ffmpeg -f dvdvideo -chapter_start 5 -chapter_end 5 -title 1 -i <path to DVD> ...
    
  • 从 VTS 1 的菜单、语言 1、PGC 1 开始在 PG 1 解复用菜单:
    ffmpeg -f dvdvideo -menu 1 -menu_lu 1 -menu_vts 1 -pgc 1 -pg 1 -i <path to DVD> ...
    

15.8 ea

电子艺界多媒体格式解复器。

此格式被多款电子艺界游戏使用。

15.8.1 选项

merge_alpha 布尔值

通常 VP6 透明度通道(若存在)作为第二个视频流返回,通过设置此选项可以使解复器返回包含透明度通道在内的单一视频流。

15.9 imf

互操作主格式解复器。

此解复器呈现 IMF 组合中发现的音频和视频流,如SMPTE ST 2067-2.

ffmpeg [-assetmaps <path of ASSETMAP1>,<path of ASSETMAP2>,...] -i <path of CPL> ...

如果-assetmaps未指定,解复器将在 CPL 同一个目录中查找名为ASSETMAP.xml的文件。

15.10 flv, live_flv, kux

Adobe Flash 视频格式解复器。

此解复器用于解复 FLV 文件和 RTMP 网络流。如果是实时网络流,强制格式时可以使用 live_flv 选项而不是 flv,以应对时间戳中断。 kux 是用在优酷平台上的 flv 变种。

ffmpeg -f flv -i myfile.flv ...
ffmpeg -f live_flv -i rtmp://<any.server>/anything/key ....
-flv_metadata 布尔值

根据 onMetaData 数组内容分配流。

-flv_ignore_prevtag 布尔值

忽略前一个标签值的大小。

-flv_full_metadata 布尔值

输出整个 OnMetaData 内容。

15.11 gif

动画 GIF 解复器。

它接受以下选项:

min_delay

设置帧之间的最小有效延迟(以百分之一秒为单位)。范围为 0 至 6000。默认值是 2。

max_gif_delay

设置帧之间的最大有效延迟(以百分之一秒为单位)。范围为 0 至 65535。默认值是 65535(将近十一分钟),指定的最大允许值。

default_delay

设置帧之间的默认延迟(以百分之一秒为单位)。范围为 0 至 6000。默认值是 10。

ignore_loop

GIF 文件可以包含循环特定次数(或无限)的信息。如果ignore_loop设置为 1,则忽略输入的循环设置,不会发生循环。如果设置为 0,则会发生循环,循环次数根据 GIF 设置。默认值是 1。

例如,使用叠加滤镜,将一个无限循环 GIF 覆盖在另一个视频上:

ffmpeg -i input.mp4 -ignore_loop 0 -i input.gif -filter_complex overlay=shortest=1 out.mkv

注意在以上示例中,叠加过滤器使用的 shortest 选项用于将输出视频的长度限制在最短输入文件的长度上,这种情况下为input.mp4,GIF 在此示例中无限循环。

15.12 hls

HLS 解复器

Apple HTTP Live Streaming 解复器。

此解复器呈现所有变体流中的所有 AVStreams。 id 字段设置为比特率变体索引号。通过设置 AVStreams 的丢弃标志(在 ffplay 中按 “a” 或 “v”),调用者可以决定实际接收哪些变体流。变体所属的总比特率在名为 "variant_bitrate" 的元数据键中提供。

它接受以下选项:

live_start_index

开始实时流的片段索引(负值来自末尾)。

prefer_x_start

如果播放列表中存在 #EXT-X-START,则优先使用它而不是 live_start_index。

allowed_extensions

‘,’ 分隔的文件扩展名列表,hls 可以访问它们。

max_reload

尝试重新加载不足列表的最大次数。默认值是 1000。

m3u8_hold_counters

当 m3u8 刷新但没有新片段时重新加载的最大次数。默认值是 1000。

http_persistent

使用持久的 HTTP 连接。仅适用于 HTTP 流。默认启用。

http_multiple

使用多个 HTTP 连接下载 HTTP 片段。默认对 HTTP/1.1 服务器启用。

http_seekable

使用 HTTP 部分请求下载 HTTP 片段。 0 = 禁用, 1 = 启用, -1 = 自动, 默认值为自动。

seg_format_options

使用键值对列表设置媒体片段解复用器的选项,用:.

seg_max_retry

出现错误时重新加载片段的最大次数,当网络错误时不希望跳过片段时有用。默认值是 0。

15.13 image2

图像文件解复器。

此解复器从指定图案的图像文件列表中读取。 图案的语法和含义由pattern_type.

选项定义。

图像的大小、像素格式和格式在文件序列中必须一致。

此解复器接受以下选项:

framerate

设置视频流的帧速率。默认值为 25。

loop

如果设置为 1,则对输入进行循环。默认值为 0。

pattern_type

选择用于解释提供的文件名的图案类型。

pattern_type接受以下值之一。

none

禁用图案匹配,因此视频将只包含指定的图像。如果不希望从多个图像创建序列并且文件名可能包含特殊图案字符,请使用此选项。

sequence

选择序列图案类型,用于指定由连续数字索引的文件序列。

序列图案可能包含字符串 “%d” 或 "%0Nd,它指定文件名中数字位置。d" 的形式使用,文件名中的数字字符串是 0 填充的,“N” 是代表数字的总的填充位数。图案中的文字字符 ‘%’ 可以通过字符串 "%%" 来指定。d" is used, the string representing the number in each filename is 0-padded and N is the total number of 0-padded digits representing the number. The literal character ’%’ can be specified in the pattern with the string "%%".

如果序列图案包含 "%d" 或 "%0Nd,则文件列表的第一个文件名必须包含一个数字,包含范围在start_numberstart_number+start_number_range-1 内,并且所有后续数字必须是连续的。

例如,图案 “img-%03d.bmp” 将匹配形式为img-001.bmp, img-002.bmp, ..., img-010.bmp的文件名序列;图案 “i%%m%%g-%d.jpg” 将匹配形式为i%m%g-1.jpg, i%m%g-2.jpg, ..., i%m%g-10.jpg的文件名序列。

注意图案不必要包含 "%d" 或 "%0Nd,例如转换单个图像文件img.jpeg可以使用命令:

ffmpeg -i img.jpeg img.png
glob

选择 global 通配符图案类型。

图案被解释为类似于glob()的图案。这只有在 libavformat 以 globbing 支持编译时才可选择。

glob_sequence (已弃用,将被移除)

选择混合 global 通配符/序列图案类型。

如果你的 libavformat 版本以 globbing 支持编译,并且提供的图案包含至少一个 glob 元字符在其间%*?[]{}在未转义的“%”之前,该模式被解释为类似glob()的模式,否则它将被解释为类似序列模式。

所有的通配符特殊字符%*?[]{}必须以“%”作为前缀。要转义字面的“%”,需要使用“%%”。

例如,此模式foo-%*.jpeg会匹配所有以“foo-”为前缀并以“.jpeg”结尾的文件名,而foo-%?%?%?.jpeg会匹配所有以“foo-”为前缀、后跟三个字符的序列并以“.jpeg”结尾的文件名。

这种模式类型已废弃,推荐使用通配符序列.

默认值为glob_sequence.

pixel_format

设置读取图像的像素格式。如果未指定,将从序列中的第一张图像文件中猜测像素格式。

start_number

设置从匹配图像文件模式的文件索引开始读取。默认值为0。

start_number_range

设置搜索序列中第一张图像文件时的索引间隔范围,从start_number开始。默认值为5。

ts_from_file

如果设置为1,将把帧时间戳设置为图像文件的修改时间。请注意,时间戳单调性无法保障:图像的顺序与未使用此选项的顺序相同。默认值为0。如果设置为2,将把帧时间戳设为图像文件的修改时间,并精确到纳秒。

video_size

设置读取图像的视视频尺寸。如果未指定,将从序列中的第一张图像文件中猜测视频尺寸。

export_path_metadata

如果设置为1,将为输入中找到的元数据添加两个额外字段,使它们也可用于其他滤镜(请参见drawtext过滤器作为示例)。默认值为0。下述是额外字段的说明:

lavf.image2dec.source_path

对应正在读取的输入文件的完整路径。

lavf.image2dec.source_basename

对应正在读取的文件名称。

15.13.1 示例

  • 使用ffmpeg从文件序列中的图像创建视频img-001.jpeg, img-002.jpeg, ..., 假设输入帧速率为每秒10帧:
    ffmpeg -framerate 10 -i 'img-%03d.jpeg' out.mkv
    
  • 如上,但从序列中索引为100的文件开始读取:
    ffmpeg -framerate 10 -start_number 100 -i 'img-%03d.jpeg' out.mkv
    
  • 读取匹配“*.png”通配符模式的图像,即所有以“.png”结尾的文件:
    ffmpeg -framerate 10 -pattern_type glob -i "*.png" out.mkv
    

15.14 libgme

Game Music Emu库是一个视频游戏音乐文件仿真器的集合。

请参阅https://bitbucket.org/mpyne/game-music-emu/overview了解更多信息。

它接受以下选项:

track_index

设置要解复用的曲目索引。解复用器只能导出一个曲目。曲目索引从0开始。默认是选择第一条曲目。曲目数量作为tracks元数据条目导出。

sample_rate

设置导出曲目的采样率。范围为1000至999999。默认是44100。

max_size (字节)

解复用器会将整个文件缓冲到内存中。调整该值来设置最大缓冲区大小,进而限制可读取的文件大小。默认是50 MiB。

15.15 libmodplug

基于ModPlug的模块解复用器

请参阅https://github.com/Konstanty/libmodplug

它将导出一个双声道、16位、44.1 kHz的音频流。可选,pal8可以导出一个16色视频流,带或不带元数据打印。

它接受以下选项:

noise_reduction

应用一个简单的低通滤波器。可以为1(开启)或0(关闭)。默认是0。

reverb_depth

设置混响量。范围0-100,默认是0。

reverb_delay

设置延迟时间(以毫秒为单位),范围为40-250毫秒,默认是0。

bass_amount

应用低音扩展功能(又称XBass或megabass)。范围为0(安静)到100(响亮),默认是0。

bass_range

设置低音频率的截止上限。范围为10-100 Hz,默认是0。

surround_depth

应用Dolby Pro-Logic环绕效果。范围为0(安静)到100(强烈)。默认是0。

surround_delay

设置环绕延迟时间,以毫秒为单位,范围限制为5-40毫秒。默认是0。

max_size

解复用器会将整个文件缓冲到内存中。调整该值来设置最大缓冲大小,从而限制可读取的文件大小。范围为0到100 MiB。值为0将移除缓冲大小限制(不推荐)。默认是5 MiB。

video_stream_expr

使用eval API评估的字符串,通过它为生成的视频流分配颜色。可用于的变量是x, y, w, h, t, speed, tempo, order, patternrow.

video_stream

生成视频流。可以为1(开启)或0(关闭)。默认是0。

video_stream_w

设置视频帧宽度(以字符为单位),每个字符表示8个像素。范围为20-512。默认是30。

video_stream_h

设置视频帧高度(以字符为单位),每个字符表示8个像素。范围为20-512。默认是30。

video_stream_ptxt

在视频流中打印元数据。包括speed, tempo, order, pattern, rowts(以毫秒为单位的时间)。可以为1(开启)或0(关闭)。默认是1。

15.16 libopenmpt

基于libopenmpt的模块解复用器

请参阅https://lib.openmpt.org/libopenmpt/了解更多信息。

一些文件有多个子曲(轨道),它们可以通过subsong选项设置。

它接受以下选项:

subsong

设置子曲索引。这可以是 “all”、“auto”,或者是子曲的索引值。子曲的索引从0开始。默认是“auto”。

默认值是让libopenmpt自行选择。

layout

设置声道布局。有效值是1,2和4。默认值是STEREO。

sample_rate

设置libopenmpt输出的采样率。范围是从1000到INT_MAX。默认值为48000。

15.17 mov/mp4/3gp

Quicktime文件格式和ISO/IEC基本媒体文件格式的解复用器 (ISO/IEC 14496-12 或 MPEG-4 部分12, ISO/IEC 15444-12 或 JPEG 2000部分12)。

已注册的扩展名:mov, mp4, m4a, 3gp, 3g2, mj2, psp, m4b, ism, ismv, isma, f4v

15.17.1 选项

此解复用器接受以下选项:

enable_drefs

启用外部轨道加载,默认禁用。启用此功能在某些使用情况下理论上可能造成信息泄露。

use_absolute_path

允许通过绝对路径加载外部轨道,默认禁用。启用此功能存在安全风险。仅在确定源不含恶意内容时启用。

seek_streams_individually

在寻求时,单独识别每个流中最近的点,并从该流的标识点开始解复用包。这可能导致与从头线性解复用相比,不同的包序列。默认值为true。

ignore_editlist

忽略任何编辑列表原子。默认情况下,解复用器会修改流索引以反映编辑列表描述的时间线。默认值是false。

advanced_editlist

修改流索引以反映编辑列表描述的时间线。当ignore_editlist被设置为 false 时,此选项方有效。如果ignore_editlist和此选项均设置为false,则只有流索引的开始处会被修改,以反映编辑列表中描述的初始驻留时间或起始时间戳。默认值为true。

ignore_chapters

不要解析章节内容。这包括GoPro的“HiLight”标签/时刻。请注意,章节内容仅在输入可寻址时进行解析。默认值为false。

use_mfra_for

对于可寻址的分段输入,根据媒体片段随机访问箱(如存在)设置片段的起始时间戳。

以下选项可用:

auto

自动检测是将mfra时间戳设置为PTS还是DTS(默认值)

dts

将mfra时间戳设置为DTS

pts

将mfra时间戳设置为PTS

0

不使用mfra箱设置时间戳

use_tfdt

对于分段输入,将片段起始时间戳设置为baseMediaDecodeTime,来源于tfdt箱。默认启用,该设置更倾向于使用tfdt箱设置DTS。禁用时将使用earliest_presentation_time来源于sidx箱。然而,如果mfra箱提供了时间戳,并且use_mfra_for被设置为PTS或DTS,则时间戳从

export_all

箱中提取。udta箱作为元数据条目导出未识别的箱。箱类型的前四个字符用作键。默认值为false。

export_xmp

以字符串形式导出XMP_箱和uuid箱中的全部内容,键为xmp。请注意,如果设置了export_all而此选项未启用,内容将被导出,键为XMP_,内容仍然会使用键XMP_导出。默认值是false。

activation_bytes

用于解密Audible AAX和AAX+文件的4字节密钥。请参阅下面的Audible AAX子部分。

audible_fixed_key

用于处理Audible AAX/AAX+文件的固定密钥。这已预设,因此通常无需指定。

decryption_key

用于解密使用ISO通用加密(CENC/AES-128 CTR;ISO/IEC 23001-7)加密的文件的16字节十六进制密钥。

max_stts_delta

trak的stts箱中写入的极高采样增量可能在某些情况下是预期的,但通常是由于错误写入或在解释为带符号的32位整数时用于存储负值以进行dts校正。此选项允许用户设置一个上限,超出该范围的增量值会被限制为1。如果负值在限制范围内,将用于调整后续的dts。

单位是轨道时间比例。范围为0到 UINT_MAX。默认是UINT_MAX - 48000*10,允许48 kHz音频流的10秒dts校正,同时适应99.9%的uint32范围。

interleaved_read

在解复用器级别将来自多个轨道的数据包交错。对于交错不佳的文件,这可以防止不同轨道之间数据包大间隙引起的播放问题,因为MOV/MP4未要求数据包放置。然而,对于交错非常糟糕的文件,这可能需要频繁在轨道之间寻求,禁用此功能可以避免I/O问题,但会影响播放。

15.17.2 Audible AAX

Audible AAX文件是已加密的M4B文件,可以通过特定的4字节激活密钥解密。

ffmpeg -activation_bytes 1CEB00DA -i test.aax -vn -c:a copy output.mp4

15.18 mpegts

MPEG-2传输流解复用器。

该解复用器接受以下选项:

resync_size

设置查找新同步时的大小限制。默认值为65536。

skip_unknown_pmt

跳过不在PAT中定义的程序的PMT。默认值为0。

fix_teletext_pts

用PCR计算的时间戳覆盖teletext数据包的PTS和DTS值。默认值为1。如果要保持teletext数据包PTS和DTS值不变,请将此选项设置为0。

ts_packetsize

输出选项,显示原始数据包的字节大小。无法由用户设置,仅用于显示检测到的原始数据包大小。

scan_all_pmts

扫描并组合所有PMT。此值为整数,可取值范围为-1到1(-1表示自动设置,1表示启用,0表示禁用)。默认值是-1。

merge_pmt_versions

当PMT版本更新且基本流移至不同PIDs时,重用现有流。默认值是0。

max_packet_size

设置解复用器发出的数据包的最大大小(以字节为单位)。超过此大小的有效负载将拆分成多个数据包。范围为1到INT_MAX/2。默认值为204800字节。

15.19 mpjpeg

多部分MIME封装的MJPEG解复用器。

此解复用器允许读取MJPEG,其中每帧表示为多部分x/mixed-replace流的一部分。

strict_mime_boundary

默认实现对多部分MIME边界检测应用宽松标准,以避免破坏生成非标准MIME MJPEG流的众多现有端点。通过将此选项设为1可启用对边界值更严格的检查。

15.20 rawvideo

原始视频解复用器。

此解复用器允许读取原始视频数据。由于没有指定视频参数的头信息,用户必须指定这些参数以正确解码数据。

此解复用器接受以下选项:

framerate

设置输入视频帧率。默认值为25。

pixel_format

设置输入视频像素格式。默认值为yuv420p.

video_size

设置输入视频尺寸。该值必须显式指定。

例如,读取一个原始视频文件input.raw带有ffplay,假设像素格式为rgb24,视频尺寸为320x240,帧率为每秒10帧时,可以使用以下命令:

ffplay -f rawvideo -pixel_format rgb24 -video_size 320x240 -framerate 10 input.raw

15.21 rcwt

RCWT(带时间的原始字幕)是一种ccExtractor特有的格式,这是一个常用的开源工具,用于处理608/708闭合字幕(CC)源。有关格式的更多信息,请参见(ffmpeg-formats)rcwtenc.

此解复用器实现了截至2024年3月稳定且自2014年4月起未更改的规格。

15.21.1 示例

  • 使用内置解码器将CC渲染为ASS:
    ffmpeg -i CC.rcwt.bin CC.ass
    

    注意,如果输出为空,可能需要手动设置解码器的data_field选项以选择所需的CC子流。

  • 将RCWT备份转换为Scenarist(SCC)格式:
    ffmpeg -i CC.rcwt.bin -c:s copy CC.scc
    

    注意,SCC格式不支持在RCWT中存储的所有可能的CC扩展(例如EIA-708)。

15.22 sbg

SBaGen脚本解复用器。

此解复用器读取SBaGen使用的脚本语言http://uazu.net/sbagen/以生成双声节拍会话。一个SBG脚本看起来像这样:

-SE
a: 300-2.5/3 440+4.5/0
b: 300-2.5/0 440+4.5/3
off: -
NOW      == a
+0:07:00 == b
+0:14:00 == a
+0:21:00 == b
+0:30:00    off

一个SBG脚本可以同时使用绝对和相对时间戳。如果脚本仅使用绝对时间戳(包括脚本启动时间)或仅使用相对时间戳,则其布局固定,转换是直接的。另一方面,如果脚本混合使用两种时间戳,则为相对时间戳的NOW参考时间将取自读取脚本时的当天时间,并根据该参考将脚本布局冻结。这意味着如果直接播放脚本,实际时间将与绝对时间戳匹配(受声音控制器时钟精度限制),但如果用户暂停播放或搜索,所有时间将相应地偏移。

15.23 tedcaptions

用于TED演讲.

的JSON字幕tools/bookmarklets.htmlFFmpeg源代码树中的文件包含一个书签小工具,用于显示它们。

此解复用器接受以下选项:

start_time

设置TED演讲的开始时间,以毫秒为单位。默认值为15000(15秒)。它用于将字幕与可下载视频同步,因为它们包括一个15秒的简介。

示例:将字幕转换为大多数播放器可以理解的格式:

ffmpeg -i http://www.ted.com/talks/subtitles/id/1/lang/en talk1-en.srt

15.24 vapoursynth

Vapoursynth封装。

由于安全原因,Vapoursynth脚本不会自动检测,因此需要强制设置输入格式。对于ff* CLI工具,添加-f vapoursynth到输入之前-i yourscript.vpy.

此解复用器接受以下选项:

max_script_size

解复用器将整个脚本缓冲到内存中。调整该值以设置最大缓冲区大小,它同时充当可读取脚本大小的上限。默认值为1 MiB。

15.25 w64

Sony Wave64音频解复用器。

此解复用器接受以下选项:

max_size

参阅wav解复用器的相同选项。

15.26 wav

RIFF Wave音频解复用器。

此解复用器接受以下选项:

max_size

指定解复用数据包的最大数据包大小(以字节为单位)。默认设置为0,这意味着根据输入格式选择一个合理的值。

16 元数据

FFmpeg能够将媒体文件中的元数据导出到简单的UTF-8编码的INI样式文本文件中,并使用元数据复用器/解复用器加载它。

文件格式如下:

  1. 一个文件由标题和若干元数据标签组成,分为几个段,每行一个。
  2. 标题是一个‘;FFMETADATA’字符串,加上一个版本号(目前为1)。
  3. 元数据标签的格式是‘key=value
  4. 标题后紧跟全局元数据
  5. 全局元数据之后可能有包含每流/每章节元数据的段。
  6. 一个段以段名称开头,段名称为大写格式(即STREAM或CHAPTER),使用括号‘[’, ‘]’括起,结束于下一个段或文件结尾处。
  7. 章节段开头可能有一个可选时间基,用于开始/结束值。格式必须为‘TIMEBASE=num/den’,其中numden是整数。如果缺少时间基,则默认开始/结束时间以纳秒计算。

    接下来章节段必须以‘START=num’, ‘END=num’形式包含章节开始和结束时间,其中num是一个正整数。

  8. 空行和以‘;’或‘#’开头的行将被忽略。
  9. 包含特殊字符(‘=’, ‘;’, ‘#’, ‘\’和换行符)的元数据键或值必须使用反斜杠‘\’.
  10. 注意元数据中的空格(例如‘foo = bar’)视为标签的一部分(以上示例中键为‘foo ’,值为‘ bar’).

一个ffmetadata文件可能如下所示:

;FFMETADATA1
title=bike\\shed
;this is a comment
artist=FFmpeg troll team

[CHAPTER]
TIMEBASE=1/1000
START=0
#chapter ends at 0:01:00
END=60000
title=chapter \#1
[STREAM]
title=multi\
line

通过使用ffmetadata复用器和解复用器,可以从输入文件中提取元数据到ffmetadata文件,然后将文件转码为带有编辑后的ffmetadata文件的输出文件。

提取一个ffmetadata文件的方式如下:ffmpeg重新插入从FFMETADATAFILE文件编辑的元数据信息的方法是:

ffmpeg -i INPUT -f ffmetadata FFMETADATAFILE

Reinserting edited metadata information from the FFMETADATAFILE file can be done as:

ffmpeg -i INPUT -i FFMETADATAFILE -map_metadata 1 -codec copy OUTPUT

17 协议选项

libavformat库提供了一些通用的全局选项,可以针对所有协议设置。此外,每个协议可能支持所谓的专有选项,这些选项是该组件特有的。

可以通过在FFmpeg工具中指定-选项 来设置选项,或者显式设置AVFormatContext选项值,也可以使用libavutil/opt.hAPI用于编程用途。

支持选项的列表如下:

protocol_whitelist 列表 (输入)

设置一个逗号分隔的允许协议列表。“ALL”表示匹配所有协议。前缀带“-”的协议将被禁用。默认情况下允许所有协议,但由另一协议使用的协议(嵌套协议)将限制为每协议的子集。

18 协议

协议是FFmpeg中配置的元素,允许访问需要特定协议的资源。

配置FFmpeg编译时,默认启用所有支持的协议。可以使用配置选项“–list-protocols”列出所有可用协议。

可以使用配置选项“–disable-protocols”禁用所有协议,并可以使用选项“–enable-protocol=PROTOCOL”有选择地启用某个协议,或者可以使用选项“–disable-protocol=PROTOCOL".

禁用特定协议。

ff*工具的选项“-protocols”将显示支持的协议列表。

rw_timeout

等待(网络)读/写操作完成的最大时间,以微秒为单位。

以下是当前可用协议的描述。

18.1 amqp

高级消息队列协议(AMQP)0-9-1版本是一种基于代理的发布订阅通信协议。

必须使用–enable-librabbitmq编译FFmpeg以支持AMQP。此外,还必须运行一个独立的AMQP代理。一个示例开源AMQP代理是RabbitMQ。

启动代理后,FFmpeg客户端可以使用以下命令向代理流式传输数据:

ffmpeg -re -i input -f mpegts amqp://[[user]:[password]@]hostname[:port][/vhost]

其中hostname和port(默认值为5672)是代理的地址。客户端还可以设置用户/密码进行认证。两个字段的默认值为“guest”。可以用vhost设置代理上的虚拟主机名称。默认值为“/”。

多个订阅方可以使用以下命令从代理流式传输数据:

ffplay amqp://[[user]:[password]@]hostname[:port][/vhost]

在RabbitMQ中,发布到代理的所有数据都会通过一个特定的交换机流转,每个订阅客户端都有一个分配的队列/缓冲区。当数据包到达交换机时,根据交换机和routing_key字段可能会复制到客户端的队列。

支持以下选项:

exchange

设置代理上的交换机。RabbitMQ有几个预定义的交换机:“amq.direct”是默认交换机,发布方和订阅方必须有匹配的routing_key;“amq.fanout”类似于广播操作(即数据会独立于routing_key转发到fanout交换机上的所有队列);“amq.topic”类似于“amq.direct”,但允许更复杂的模式匹配(参见RabbitMQ文档)。

routing_key

设置路由键。默认值为“amqp”。在“amq.direct”和“amq.topic”交换机中使用路由键决定是否将数据包写入订阅者的队列。

pkt_size

设置发送/接收至代理的每个数据包的最大大小。默认值为131072。最小值为4096,最大值为任何大值(可由一个int表示)。接收数据包时,这会设置FFmpeg中的内部缓冲区大小。它应该等于或大于发布至代理的数据包大小,否则接收到的消息可能会被截断,导致解码错误。

connection_timeout

在初始连接到代理期间的超时时间,以秒为单位。默认值为rw_timeout,如果未设置rw_timeout,则默认为5秒。

delivery_mode 模式

设置发送到代理的每条消息的交付模式。接受以下值:

persistent

交付模式设置为“持久化”(2)。这是默认值。消息可能会写入代理的磁盘,具体取决于其设置。

non-persistent

交付模式设置为“非持久化”(1)。消息将保存在代理的内存中,除非代理内存压力较大。

18.2 async

用于输入流的异步数据填充封装。

在后台线程中填充数据,以将I/O操作与解复用线程分离。

async:URL
async:http://host/resource
async:cache:http://host/resource

18.3 bluray

读取蓝光播放列表。

接受的选项为:

angle

蓝光角度

chapter

开始章节(1...N)

playlist

要读取的播放列表(BDMV/PLAYLIST/?????.mpls)

示例:

从挂载到/mnt/bluray的蓝光读取最长的播放列表:

bluray:/mnt/bluray

从挂载到/mnt/bluray的蓝光读取播放列表4的角度2,从章节2开始:

-playlist 4 -angle 2 -chapter 2 bluray:/mnt/bluray

18.4 cache

用于输入流的缓存封装。

将输入流缓存到临时文件。为实时流带来寻求能力。

接受的选项为:

read_ahead_limit

在不支持寻求时可以提前读取的字节数。范围为-1到INT_MAX。-1表示无限制。默认值为65536。

URL语法为

cache:URL

18.5 concat

物理连接协议。

按顺序从多个资源读取和寻求,就像它们是唯一资源一样。

此协议接受的URL语法为:

concat:URL1|URL2|...|URLN

其中URL1, URL2, ..., URLN是要连接的资源的URL,每个URL可能指定一个独特的协议。

例如读取文件序列split1.mpeg, split2.mpeg, split3.mpeg使用ffplay使用以下命令:

ffplay concat:split1.mpeg\|split2.mpeg\|split3.mpeg

注意,您可能需要转义字符 "|",因其对于许多 shell 是特殊字符。

18.6 concatf

使用换行符分隔的资源列表进行物理拼接协议。

从多个资源中依次读取和定位,就像它们是一个独特资源一样。

此协议接受的 URL 具有以下语法:

concatf:URL

其中URL是包含资源列表的 URL,列表以换行符分隔以便拼接,每个资源可能指定一种不同的协议。特殊字符必须用反斜杠或单引号转义。详见(ffmpeg-utils)ffmpeg-utils(1)手册中的“引用和转义”部分.

例如,要读取一组文件split1.mpeg, split2.mpeg, split3.mpeg列表位于文件中的独立行split.txt使用ffplay使用以下命令:

ffplay concatf:split.txt

其中split.txt包含以下行:

split1.mpeg
split2.mpeg
split3.mpeg

18.7 crypto

AES 加密流读取协议。

可用的选项如下:

key

从给定的十六进制表示中设置 AES 解密密钥二进制块。

iv

从给定的十六进制表示中设置 AES 解密初始化向量二进制块。

接受的 URL 格式:

crypto:URL
crypto+URL

18.8 data

URI 内嵌数据。详见http://en.wikipedia.org/wiki/Data_URI_scheme.

例如,要转换一个嵌入的 GIF 文件ffmpeg:

ffmpeg -i "data:image/gif;base64,R0lGODdhCAAIAMIEAAAAAAAA//8AAP//AP///////////////ywAAAAACAAIAAADF0gEDLojDgdGiJdJqUX02iB4E8Q9jUMkADs=" smiley.png

18.9 fd

文件描述符访问协议。

接受的语法如下:

fd: -fd 文件描述符

如果fd未指定,写操作默认使用 stdout 的文件描述符,读取操作使用 stdin 的文件描述符。与管道协议不同,fd 协议如果对应普通文件则支持定位操作。fd 协议不支持通过 URL 传递文件描述符以确保安全性。

此协议接受以下选项:

blocksize

设置 I/O 操作的最大块大小(单位:字节)。默认值为INT_MAX,表示不限制请求的块大小。将此值设置得比较低可以提高用户终止请求的反应时间,对于传输速度较慢的数据非常重要。

fd

设置文件描述符。

18.10 file

文件访问协议。

读取或写入文件。

文件 URL 可采用以下格式:

file:文件名

其中文件名是要读取的文件路径。

没有协议前缀的 URL 将被假定为文件 URL。根据构建方式,开头像 Windows 路径的 URL (带有驱动器字母)通常也被假定为文件 URL (通常在 Unix 类系统构建中不会出现此情况)。

例如,从文件读取input.mpeg使用ffmpeg使用以下命令:

ffmpeg -i file:input.mpeg output.mpeg

此协议接受以下选项:

truncate

如果设置为 1,在写入时截断已存在的文件。如果值为 0 则不截断。默认值为 1。

blocksize

设置 I/O 操作的最大块大小(单位:字节)。默认值为INT_MAX,表示不限制请求的块大小。将此值设置得比较低可以提高用户终止请求的反应时间,对于慢速介质上的文件非常重要。

follow

如果设置为 1,则协议将尝试在文件末尾重新读取,以便读取仍在被写入的文件。为使此操作终止,您需要使用 rw_timeout 选项,或者使用中断回调(API 用户)。

seekable

控制文件是否可寻址。0 表示不可寻址,-1 表示自动(正常文件可寻址,命名管道不可寻址)。

许多解复用器对可寻址和不可寻址资源处理方式不同,修改此设置可能会加快某些文件的打开速度,但会损失一些功能(例如精确定位)。

18.11 ftp

FTP(文件传输协议)。

使用 FTP 协议从远程资源读取或写入。

需要遵循以下语法。

ftp://[user[:password]@]server[:port]/path/to/remote/resource.mpeg

此协议接受以下选项。

timeout

设置用于底层低级操作的套接字 I/O 操作超时时间(单位:微秒)。默认值为 -1,表示未指定超时时间。

ftp-user

设置用于 FTP 服务器认证的用户。此值会被 FTP URL 中的用户覆盖。

ftp-password

设置用于 FTP 服务器认证的密码。此值会被 FTP URL 中的密码覆盖,或者被ftp-anonymous-password替代,如果未设置用户。

ftp-anonymous-password

匿名登录时使用的密码。通常应使用电子邮件地址。

ftp-write-seekable

在编码期间控制连接是否为可寻址。设置为 1 时资源被认为可寻址,设置为 0 时资源被认为不可寻址。默认值为 0。

注意:此协议可用作输出,但建议谨慎使用(需要测试、定制的服务器配置等)。不同的 FTP 服务器在定位操作中的行为不同。FF* 工具可能因服务器限制而产生不完整的内容。

18.12 gopher

Gopher协议。

18.13 gophers

Gophers协议。

带有TLS封装的Gopher协议。

18.14 hls

读取符合Apple HTTP Live Streaming规范的分段流作为一个统一流。描述分段的M3U8播放列表可以是远程HTTP资源,也可以是本地文件,通过标准文件协议访问。嵌套协议通过在hls URI方案名称后指定"+协议"来声明,其中协议可以是"file"或者"http"。

hls+http://host/path/to/remote/resource.m3u8
hls+file://path/to/local/resource.m3u8

不推荐使用此协议——hls解复用器应能正常工作(如果不能,请报告问题),而且更完整。要使用hls解复用器,请直接使用指向m3u8文件的URLs。

18.15 http

HTTP(超文本传输协议)。

此协议接受以下选项:

seekable

控制连接的可寻址性。如果设置为 1,资源被认为是可寻址的;如果设置为 0,资源被认为是不可寻址的;如果设置为 -1,将尝试自动检测资源是否可寻址。默认值为-1。

chunked_post

如果设置为 1,则使用分块传输编码进行发布操作。默认值为1。

http_proxy

设置HTTP代理进行隧道操作,例如 http://example.com:1234

headers

设置自定义HTTP头,可以覆盖内置默认头。值必须是编码头的字符串。

content_type

为POST消息或监听模式设置特定内容类型。

user_agent

覆盖User-Agent头。如果未指定,协议将使用描述libavformat版本的字符串("Lavf/<version>")。

referer

设置Referer头。在HTTP请求中包含`Referer: URL`头。

multiple_requests

如果设置为1使用持久化连接,默认值为0。

post_data

设置自定义HTTP发布数据。

mime_type

导出MIME类型。

http_version

导出HTTP响应版本号。通常为"1.0"或"1.1"。

cookies

设置将在未来请求中发送的cookies。每个cookie的格式与Set-Cookie HTTP响应字段的值相同。多个cookies可以通过换行符分隔。

icy

如果设置为1,则向服务器请求ICY(SHOUTcast)元数据。如果服务器支持,应用程序必须通过读取icy_metadata_headersicy_metadata_packet选项,来检索元数据。默认值为1。

icy_metadata_headers

如果服务器支持ICY元数据,此选项包含ICY特定的HTTP回复头,用换行符分隔。

icy_metadata_packet

如果服务器支持ICY元数据,并且icy设置为1,此选项包含服务器发送的最后一个非空的元数据包。应用程序需定期轮询此选项以更新流中的元数据。

metadata

设置从数据流中导出的字典,包含Icecast元数据(如果存在)。仅对C API有用。

auth_type

设置HTTP认证类型。不支持Digest选项,因为该方法需要先从服务器获取随机数参数,无法像Basic认证那样直接使用。

none

自动选择HTTP认证类型。这是默认设置。

basic

选择HTTP基本认证。

基本认证发送的是Base64编码字符串,其中包含客户端的用户名和密码。Base64不是一种加密形式,其实质等同于以明文方式发送用户名和密码(Base64是可逆的编码)。如果需要保护资源,请考虑使用除基本认证外的其他认证方案。如果使用基本认证,应当启用HTTPS/TLS。在没有这些额外的安全措施的情况下,基本认证不应用于保护敏感或有价值的信息。

send_expect_100

为POST操作发送`Expect: 100-continue`头。如果设置为1,则发送;如果设置为0,则不发送;如果设置为-1,则尝试在适用时发送。默认值为-1。

location

导入字典,包含内容的位置信息。仅对C API有用。

offset

设置初始字节偏移。

end_offset

尝试限制请求至该偏移前的字节。

method

当用作客户端选项时,设置请求的HTTP方法。

当用作服务器选项时,设置期望的HTTP方法,该方法将用于客户端连接检查。如果期望的HTTP方法与接收到的HTTP方法不匹配,客户端将收到错误420请求错误响应。在未设置时,HTTP方法目前未检查。未来将以自动检测代替。

reconnect

在到达EOF之前自动重新连接。

reconnect_at_eof

如果设置了此选项,则EOF会被当作错误并触发重新连接。这对于实时/无限流很有用。

reconnect_on_network_error

在发生TCP/TLS连接错误时自动重新连接。

reconnect_on_http_error

设置希望重新连接的HTTP状态码(以逗号分隔)。可以是具体的状态码(例如'503')或字符串'4xx'/'5xx'。

reconnect_streamed

如果设置,即使是流式/不可定位的流,也将在发生错误时重新连接。

reconnect_delay_max

设置最大延迟时间(单位:秒),超过此时间后停止重新连接。

reconnect_max_retries

设置最大重连次数。默认未设置。

reconnect_delay_total_max

设置最大总延迟时间(单位:秒),超过此时间后停止重新连接。

respect_retry_after

如果启用,并且收到 Retry-After 头,则按要求的重新连接延迟操作,而不是使用指数回退。这对于429和503错误很有用。默认启用。

listen

如果设置为1,则启用实验性HTTP服务器。这可用于作为输出选项发送数据,也可用于作为输入选项处理来自客户端的HTTP POST数据。如果设置为2,则启用多客户端实验HTTP服务器。当前未在ffmpeg.c中实施,因此不可用于命令行选项。

# Server side (sending):
ffmpeg -i somefile.ogg -c copy -listen 1 -f ogg http://服务器:端口

# Client side (receiving):
ffmpeg -i http://服务器:端口 -c copy somefile.ogg

# Client can also be done with wget:
wget http://服务器:端口 -O somefile.ogg

# Server side (receiving):
ffmpeg -listen 1 -i http://服务器:端口 -c copy somefile.ogg

# Client side (sending):
ffmpeg -i somefile.ogg -chunked_post 0 -c copy -f ogg http://服务器:端口

# Client can also be done with wget:
wget --post-file=somefile.ogg http://服务器:端口
resource

客户端请求的资源(在使用实验性HTTP服务器时)。

reply_code

返回给客户端的HTTP代码(在使用实验性HTTP服务器时)。

short_seek_size

设置阈值(单位:字节),用于决定是否优先选择预读取而不是定位和新的HTTP请求。这对于确保同一连接读取包含较大视频包且夹杂小音频包的情况很有帮助。

18.15.1 HTTP Cookies

某些 HTTP 请求将被拒绝,除非请求携带了 cookie 的值。cookies选项允许指定这些 cookie。 每个 cookie 至少需要指定值以及路径和域名。 HTTP 请求会自动在 HTTP Cookie 头字段中包含符合域名和路径的 cookie 值。多个 cookie 可通过换行符分隔。

指定 cookie 播放流所需的语法为:

ffplay -cookies "nlqptid=nltid=tsn; path=/; domain=somedomain.com;" http://somedomain.com/somestream.m3u8

18.16 Icecast

Icecast 协议(流向 Icecast 服务器)

此协议接受以下选项:

ice_genre

设置流派。

ice_name

设置流名称。

ice_description

设置流描述。

ice_url

设置流网站 URL。

ice_public

设置流是否公开。 默认值为 0(非公开)。

user_agent

覆盖 User-Agent 头。如果未指定,将使用类似于 "Lavf/<版本>" 的字符串。

password

设置 Icecast 挂载点的密码。

content_type

设置流内容类型。如果与音频/mpeg 不同,则必须设置。

legacy_icecast

启用 Icecast 版本 < 2.4.0 的支持,这些版本使用 SOURCE 方法而非 HTTP PUT 方法。

tls

与 Icecast 建立 TLS (HTTPS) 连接。

icecast://[用户名[:密码]@]服务器:端口/挂载点

18.17 ipfs

星际文件系统(IPFS)协议支持。 可以通过所谓的网关访问存储在 IPFS 网络上的文件。 这些都是 http(s) 端点。 此协议将 IPFS 原生协议 (ipfs:// 和 ipns://) 发送到这样的网关。 用户可以(而且应该)托管自己的节点,这意味着此协议将使用其本地网关访问 IPFS 网络上的文件。

此协议接受以下选项:

gateway

定义要使用的网关。 如果未设置,协议将首先尝试通过查看以下内容来找到本地网关:$IPFS_GATEWAY, $IPFS_PATH$HOME/.ipfs/,按顺序。

可以通过两种方式使用此协议。 使用 IPFS:

ffplay ipfs://<hash>

或者使用 IPNS 协议(IPNS 是可变的 IPFS):

ffplay ipns://<hash>

18.18 mmst

通过 TCP 的微软媒体服务器(MMS)协议。

18.19 mmsh

通过 HTTP 的微软媒体服务器(MMS)协议。

所需的语法为:

mmsh://服务器[:端口][/应用程序][/播放路径]

18.20 md5

MD5 输出协议。

计算要写入数据的 MD5 哈希值,并在关闭时将其写入指定输出或 stdout(如果未指定)。 它可以用于测试复用器而无需实际写入文件。

以下是一些示例。

# Write the MD5 hash of the encoded AVI file to the file output.avi.md5.
ffmpeg -i input.flv -f avi -y md5:output.avi.md5

# Write the MD5 hash of the encoded AVI file to stdout.
ffmpeg -i input.flv -f avi -y md5:

注意某些格式(通常是 MOV 文件)要求输出协议支持可寻址,因此会与 MD5 输出协议失败。

18.21 pipe

UNIX 管道访问协议。

从 UNIX 管道中读取和写入数据。

接受的语法为:

pipe:[编号]

如果fd未指定,编号是与管道文件描述符对应的编号(例如,0 表示 stdin,1 表示 stdout,2 表示 stderr)。如果编号未指定,默认情况下将使用 stdout 文件描述符进行写入,使用 stdin 进行读取。

例如,从 stdin 读取:ffmpeg:

cat test.wav | ffmpeg -i pipe:0
# ...this is the same as...
cat test.wav | ffmpeg -i pipe:

写入到 stdout:ffmpeg:

ffmpeg -i test.wav -f avi pipe:1 | cat > test.avi
# ...this is the same as...
ffmpeg -i test.wav -f avi pipe: | cat > test.avi

此协议接受以下选项:

blocksize

设置 I/O 操作的最大块大小(单位:字节)。默认值为INT_MAX,表示不限制请求的块大小。 如果将该值设置得较低,可以改善用户终止请求的反应时间,这在数据传输速度较慢时很有价值。

fd

设置文件描述符。

请注意某些格式(通常是 MOV 文件)要求输出协议支持可寻址,因此会与管道输出协议失败。

18.22 prompeg

Pro-MPEG 实践代码#3,版本2 FEC协议。

Pro-MPEG CoP#3 FEC 是一种用于通过 RTP 发送的 MPEG-2 传输流的二维奇偶校验前向错误校正机制。

此协议必须与rtp_mpegts复用器和rtp协议一起使用。

所需的语法为:

-f rtp_mpegts -fec prompeg=选项=... rtp://主机名:端口

目标 UDP 端口为port + 2(用于列 FEC 流)和port + 4(用于行 FEC 流)。

此协议接受以下选项:

l=列数量(4-20,LxD <= 100)

n

d=行数量(4-20,LxD <= 100)

n

使用示例:

-f rtp_mpegts -fec prompeg=l=8:d=4 rtp://主机名:端口

18.23 rist

可靠互联网流传输协议

接受的选项包括:

rist_profile

支持的值:

simple
main

这一个是默认值。

advanced
buffer_size

设置内部 RIST 缓冲区大小(单位:毫秒)用于数据重传。 默认值为 0,表示使用 librist 默认值(1 秒)。最大值为 30 秒。

fifo_size

设置 librist 接收器输出 fifo 大小(以数据包数量计)。 此值必须是 2 的幂。 默认值为 8192(vs librist 默认值为 1024)。

overrun_nonfatal=1|0

在 librist fifo 缓冲区溢出的情况下继续工作。默认值为 0。

pkt_size

设置发送数据的最大数据包大小。默认值为 1316。

log_level

设置 RIST 日志消息的日志级别。您仅需要设置此选项以显式启用调试级消息或数据包丢失模拟, 否则会遵循常规日志级别。

secret

设置加密密钥覆盖,默认未设置。

encryption

设置加密类型,默认禁用。 可接受的值为 128 和 256。

18.24 rtmp

实时消息传输协议。

实时消息传输协议 (RTMP) 用于通过 TCP/IP 网络流式传输多媒体内容。

所需的语法为:

rtmp://[用户名:密码@]服务器[:端口][/应用程序][/实例][/播放路径]

接受的参数包括:

username

可选的用户名(主要用于发布)。

password

可选的密码(主要用于发布)。

server

RTMP 服务器的地址。

port

使用的 TCP 端口号(默认值为 1935)。

app

访问的应用程序名称。通常对应 RTMP 服务器上的应用程序安装路径 (例如/ondemand/, /flash/live/等)。也可以通过rtmp_app选项覆盖从 URI 中解析的值。

playpath

引用 apps 指定的应用程序播放的资源路径或名称应用程序,可能以 "mp4:" 为前缀。您也可以通过rtmp_playpath选项覆盖从 URI 中解析的值。

listen

作为服务器,等待连接到来。

timeout

等待传入连接的最大时间。包含 listen。

此外,还可以通过命令行选项设置以下参数 (或通过代码使用AVOptions):

rtmp_app

连接 RTMP 服务器上的应用程序名称。 此选项会覆盖 URI 中指定的参数。

rtmp_buffer

设置客户端缓冲时间,以毫秒为单位。默认值是 3000。

rtmp_conn

额外的任意 AMF 连接参数,从字符串解析,例如B:1 S:authMe O:1 NN:code:1.23 NS:flag:ok O:0。 每个值都由单个字符前缀表示类型: B 表示布尔值,N 表示数字,S 表示字符串,O 表示对象,或者 Z 表示 null, 后跟一个冒号。 对于布尔值,数据必须是 0 或 1 分别表示 FALSE 或 TRUE。 对于对象,数据必须是 0 或 1 分别表示结束或开始一个对象。 项在子对象中可以命名, 通过以 ‘N’ 前缀类型并在值前指定名称(例如NB:myFlag:1此选项可以多次使用构建任意 AMF 序列。

rtmp_enhanced_codecs

指定客户端宣布支持增强 RTMP 流中编码器的列表。 此选项应设定为逗号分隔的四cc值列表,例如hvc1,av01,vp09用于多个编码器 或hvc1仅有一个编码器。 指定列表将在连接命令消息的"fourCcLive"属性中显示。

rtmp_flashver

用于运行 SWF 播放器的 Flash 插件版本。 默认是 LNX 9,0,124,2。(发布时,默认是 FMLE/3.0(兼容;<libavformat 版本>)。

rtmp_flush_interval

在相同请求中刷新包数量 (RTMPT 专用)。默认值为 10。

rtmp_live

指定媒体是否为流直播。 直播流中不支持恢复或寻找。默认值是any订阅者优先尝试播放指定的直播流。 如果未找到指定名称的直播流,它将播放录制的流。 其他可能的值为liverecorded.

rtmp_pageurl

嵌入媒体的网页 URL。 默认情况下不会发送任何值。

rtmp_playpath

用于播放或发布的流标识符。 此选项会覆盖 URI 中指定的参数。

rtmp_subscribe

要订阅的直播流名称。 默认情况下不会发送任何值。 仅在该选项或 rtmp_live 设置为 live 时发送。

rtmp_swfhash

解压缩 SWF 文件的 SHA256 哈希值 (32字节)。

rtmp_swfsize

解压缩 SWF 文件的大小,SWFVerification 所需。

rtmp_swfurl

媒体对应的 SWF 播放器 URL。 默认情况下不会发送任何值。

rtmp_swfverify

播放器 swf 文件的 URL,自动计算哈希值/大小。

rtmp_tcurl

目标流的 URL。默认值为 proto://host[:port]/app。

tcp_nodelay=1|0

设置 TCP_NODELAY 禁用 Nagle 算法。默认值为 0。

备注:写入套接字当前未优化以最小化系统调用,同时降低 TCP_NODELAY 的效率/效果。

例如读取资源ffplay名为 "样例" 的多媒体资源 来自应用程序 "vod" 位于 RTMP 服务器 "myserver" 上:

ffplay rtmp://myserver/vod/sample

用指定密码保护的服务器上发布内容,分别传递播放路径和 应用程序名称:

ffmpeg -re -i <input> -f flv -rtmp_playpath some/long/path -rtmp_app long/app/name rtmp://username:password@myserver/

18.25 rtmpe

加密实时消息传输协议。

加密实时消息传输协议 (RTMPE) 在标准加密技术基础上使用, 包括 Diffie-Hellman 密钥交换和 HMACSHA256,生成一对 RC4 密钥。

18.26 rtmps

通过安全 SSL 连接的实时消息传输协议。

实时消息传输协议 (RTMPS) 用于通过加密连接流式传输多媒体内容。

18.27 rtmpt

通过 HTTP 的实时消息传输协议。

实时消息传输协议通过 HTTP (RTMPT) 在 HTTP 请求内发送, 用于流式传输多媒体内容以穿越防火墙。

18.28 rtmpte

通过 HTTP 的加密实时消息传输协议。

加密实时消息传输协议通过 HTTP (RTMPTE) 在其 HTTP 请求内发送, 用于流式传输多媒体内容以穿越防火墙。

18.29 rtmpts

通过 HTTPS 的实时消息传输协议。

实时消息传输协议通过 HTTPS (RTMPTS) 在其 HTTPS 请求内发送, 用于流式传输多媒体内容以穿越防火墙。

18.30 libsmbclient

libsmbclient 允许操作 CIFS/SMB 网络资源。

所需语法如下。

smb://[[domain:]user[:password@]]server[/share[/path[/file]]]

此协议接受以下选项。

timeout

设置用于基础高级操作中的套接字 I/O 操作的超时时间(以毫秒为单位)。 默认设置为 -1,表示未指定超时。

truncate

现有文件写入时是否截断,如果设置为 1 则为截断。值为 0 表示避免截断。 默认值为 1。

workgroup

设置用于建立连接的工作组。 默认情况下未指定工作组。

如需更多信息,请查看:http://www.samba.org/.

18.31 libssh

通过 libssh 的安全文件传输协议

使用 SFTP 协议读取或写入远程资源。

所需的语法如下。

sftp://[user[:password]@]server[:port]/path/to/remote/resource.mpeg

此协议接受以下选项。

timeout

设置底层低级操作所使用的套接字I/O操作的超时时间。默认设置为-1,表示未指定超时时间。

truncate

在写入时截断现有文件,如果设置为1。值为0则防止截断。默认值为1。

private_key

指定在授权期间使用的私钥文件路径。 默认情况下,libssh会在~/.ssh/目录中搜索密钥。

示例:播放存储在远程服务器上的文件。

ffplay sftp://user:password@server_address:22/home/user/resource.mpeg

18.32 librtmp rtmp、rtmpe、rtmps、rtmpt、rtmpte

通过librtmp支持的实时消息传输协议及其变体。

配置过程中需要存在librtmp的头文件和库。您需要明确使用"–enable-librtmp"进行构建配置。如果启用,它将替代本机RTMP协议。

此协议提供了大多数客户端功能以及支持RTMP、HTTP通道中的RTMP(RTMPT)、加密RTMP(RTMPE)、SSL/TLS上的RTMP(RTMPS)和这些加密类型的通道变体(RTMPTE、RTMPTS)所需的少数服务器功能。

所需的语法为:

rtmp_proto://服务器[:端口][/应用程序][/播放路径] 选项

其中rtmp_proto是字符串"rtmp"、"rtmpt"、"rtmpe"、"rtmps"、"rtmpte"、"rtmpts"中的一个,分别对应每种RTMP变体,而服务器, 端口, 应用程序播放路径含义与RTMP本机协议中规定的一样。选项包含形式为=.

的以空格分开的选项列表。

参见librtmp手册页(手册3 librtmp)以获取更多信息。ffmpeg:

ffmpeg -re -i myfile -f flv rtmp://myserver/live/mystream

使用以下方式播放相同的流:ffplay:

ffplay "rtmp://myserver/live/mystream live=1"

18.33 rtp

实时传输协议。

RTP URL的所需语法为: rpt://主机名[:端口][?选项=...]

端口指定要使用的RTP端口。

支持以下URL选项:

ttl=n

设置TTL(生存时间)值(仅用于多播)。

rtcpport=n

将远程RTCP端口设置为n。.

localrtpport=n

将本地RTP端口设置为n。.

localrtcpport=n'

将本地RTCP端口设置为n。.

pkt_size=n

将最大数据包大小(以字节为单位)设置为n。.

buffer_size=大小

以字节为单位设置最大UDP套接字缓冲区大小。

connect=0|1

connect()执行操作(如果设置为1)或不执行(如果设置为0)。

sources=IP[,IP]

列出允许的源IP地址。

block=IP[,IP]

列出不允许(被阻止)的源IP地址。

write_to_source=0|1

将数据包发送至最近接收到数据包的来源地址(如果设置为1)或默认的远程地址(如果设置为0)。

localport=n

将本地RTP端口设置为n。.

localaddr=地址

用于发送数据包或加入多播组的网络接口的本地IP地址。

timeout=n

将套接字I/O操作的超时时间(以微秒为单位)设置为n。.

这是一个已弃用的选项。相反,localrtpport应被使用。

重要注意事项:

  1. 如果rtcpport未设置,则RTCP端口会被设置为RTP端口值加1。
  2. 如果localrtpport(本地RTP端口)未设置,则会使用任何可用的端口作为本地RTP和RTCP端口。
  3. 如果localrtcpport(本地RTCP端口)未设置,则会被设置为本地RTP端口值加1。

18.34 rtsp

实时流传输协议。

RTSP在libavformat中技术上不是一个协议处理器,它是一个解复用器和复用器。解复用器支持普通RTSP(通过RTP传输数据;这被例如苹果和微软使用)以及Real-RTSP(通过RDT传输数据)。

复用器可以用来通过RTSP ANNOUNCE将流发送到支持它的服务器(目前支持Darwin Streaming Server和Mischa Spiegelmock的RTSP服务器).

RTSP URL的必需语法为:

rtsp://主机名[:端口]/路径

选项可以设置在ffmpeg/ffplay命令行,或者通过AVOptions或在代码中进行设置。avformat_open_input.

18.34.1 复用器

支持以下选项。

rtsp_transport

设置RTSP传输协议。

它接受以下值:

udp

使用UDP作为底层传输协议。

tcp

使用TCP(RTSP控制通道内的交错)作为底层传输协议。

默认值为‘0’.

rtsp_flags

设置RTSP标志。

接受以下值:

latm

对AAC使用MP4A-LATM数据包化而不是MPEG4-GENERIC。

rfc2190

对H.263使用RFC 2190数据包化而不是RFC 4629。

skip_rtcp

不发送RTCP发送者报告。

h264_mode0

对RTP中的H.264使用模式0。

send_bye

结束时发送RTCP BYE数据包。

默认值为‘0’.

min_port

设置最低本地UDP端口。默认值为5000。

max_port

设置最高本地UDP端口。默认值为65000。

buffer_size

以字节为单位设置最大套接字缓冲区大小。

pkt_size

设置最大发送数据包大小(以字节为单位)。默认值为1472。

18.34.2 解复用器

支持以下选项。

initial_pause

如果设置为1,则不立即开始播放流。默认值为0。

rtsp_transport

设置RTSP传输协议。

它接受以下值:

udp

使用UDP作为底层传输协议。

tcp

使用TCP(RTSP控制通道内的交错)作为底层传输协议。

udp_multicast

使用UDP多播作为底层传输协议。

http

使用HTTP隧道作为底层传输协议,这对于通过代理非常有用。

https

使用HTTPs隧道作为底层传输协议,这在安全性考虑中非常广泛使用。

可以指定多个底层传输协议,在这种情况下,它们会依次尝试(如果一个设置失败,会尝试下一个)。对于复用器,仅支持‘tcp’ 和 ‘udp’ 选项。

rtsp_flags

设置RTSP标志。

接受以下值:

filter_src

仅接受来自协商对等地址和端口的数据包。

listen

作为服务器,监听传入连接。

prefer_tcp

如果TCP可用作为RTSP RTP传输,则首先尝试TCP。

satip_raw

导出原始的MPEG-TS流而不是解复用。该标志将简单地写出原始流,带有原始PAT/PMT/PID。

默认值为‘none’.

allowed_media_types

设置从服务器接受的媒体类型。

接受以下标志:

video
audio
data
subtitle

默认情况下它接受所有媒体类型。

min_port

设置最低本地UDP端口。默认值为5000。

max_port

设置最高本地UDP端口。默认值为65000。

listen_timeout

设置建立初始连接的最大超时时间(以秒为单位)。设置listen_timeout> 0 设置rtsp_flags为‘listen’。默认值为-1,这表示在设置‘listen’模式时没有无限超时。

reorder_queue_size

设置数据包缓冲数量以处理重新排序数据包。

timeout

以微秒为单位设置套接字TCP I/O超时。

user_agent

覆盖用户代理头。如果未指定,它默认使用libavformat标识符字符串。

buffer_size

以字节为单位设置最大套接字缓冲区大小。

当通过UDP接收数据时,解复用器尝试重新排序接收到的数据包(由于它们可能无序到达,或者数据包可能完全丢失)。可以通过将最大解复用延迟设置为零来禁用(通过 AVFormatContext 的max_delay字段)。

观看多个比特率Real-RTSP流时,使用ffplay, 可选择要显示的流。-vst n-ast n分别用于视频和音频,并可以通过按va.

18.34.3 示例

以下所有示例都使用ffplayffmpeg工具。

  • 通过UDP观看流,最大重排序延迟为0.5秒:
    ffplay -max_delay 500000 -rtsp_transport udp rtsp://server/video.mp4
    
  • 观看通过HTTP隧道的流:
    ffplay -rtsp_transport http rtsp://server/video.mp4
    
  • 以实时方式将流发送到RTSP服务器供他人观看:
    ffmpeg -re -i 输入 -f rtsp -muxdelay 0.1 rtsp://server/live.sdp
    
  • 实时接收流:
    ffmpeg -rtsp_flags listen -i rtsp://ownaddress/live.sdp 输出
    

18.35 sap

会话公告协议(RFC 2974)。此协议技术上不是libavformat中的协议处理器,它是一个复用器和解复用器。 它用于信号传输RTP流,通过定期在单独端口上公告流的SDP。

18.35.1 复用器

给复用器指定SAP URL的语法为:

sap://目的地[:端口][?选项]

RTP数据包发送到目的地的端口端口, 或如果未指定端口,则发送到端口5004。选项是一个通过&-分隔的列表。支持以下选项:

announce_addr=地址

指定发送公告的目的IP地址。 如果省略,则公告发送到常用的SAP公告组播地址224.2.127.254(sap.mcast.net), 或者如果目的地是IPv6地址,则发送到ff0e::2:7ffe。

announce_port=端口

指定发送公告的端口,默认值如果未指定,则为9875。

ttl=TTL

指定公告和RTP数据包的生存时间值,默认值为255。

same_port=0|1

如果设置为1,所有RTP流将发送到相同的端口对。如果为零(默认值),所有流将发送到独特的端口,每个流发送到比上一个流高两个数字的端口。 VLC/Live555要求设置为1,以便能够接收流。 libavformat中的RTP接收堆栈要求所有流发送到独特的端口。

以下是示例命令行。

在本地子网中广播流以供VLC观看:

ffmpeg -re -i 输入 -f sap sap://224.0.0.255?same_port=1

同样地,用于在ffplay:

ffmpeg -re -i 中观看: -f sap sap://224.0.0.255

输入ffplay中,使用IPv6:

ffmpeg -re -i 输入 -f sap sap://[ff0e::1:2:3:4]

18.35.2 解复用器

给解复用器指定SAP URL的语法为:

sap://[地址][:端口]

地址是侦听公告的组播地址, 如果省略,则默认使用224.2.127.254(sap.mcast.net)。端口是侦听的端口,如果省略,则为9875。

解复用器侦听给定地址和端口的公告。 一旦接收到公告,它尝试接收特定流。

以下是示例命令行。

在普通SAP组播地址上播放第一个公告的流:

ffplay sap://

在默认IPv6 SAP组播地址上播放第一个公告的流:

ffplay sap://[ff0e::2:7ffe]

18.36 sctp

流控制传输协议。

接受的URL语法为:

sctp://主机:端口[?选项]

协议接受以下选项:

listen

如果设置为任何值,则侦听传入连接。默认情况下完成外向连接。

max_streams

设置流的最大数量。默认情况下未设置限制。

18.37 srt

通过libsrt的Haivision安全可靠传输协议。

支持的SRT URL语法为:

srt://主机名:端口[?选项]

选项包含形式为=.

选项 srt://主机名:端口

选项包含形式为‘- ’ 的选项。

此协议接受以下选项。

connect_timeout=毫秒

连接超时;当默认连接超时为3秒时,RTT > 1500毫秒(2次握手交换)时SRT无法连接。 此选项适用于呼叫方和随机交汇连接模式。对于随机交汇模式,连接超时是值设置的10倍(此值可用于解决早期版本的连接问题)。

ffs=字节

飞行标志大小(窗口大小),以字节为单位。FFS实际上是一个内部参数,您应该设置它不低于recv_buffer_sizemss。默认值相对较大,除非您设置一个非常大的接收缓冲区,否则不需要更改此选项。默认值为25600。

inputbw=字节/秒

发送方标称输入速率,以字节每秒计。与oheadbw结合使用,当maxbw设置为相对(0)时,用于计算发送速率最大值,当恢复包与主媒体流一起发送时:inputbw * (100 + oheadbw) / 100 如果inputbw未设置,而maxbw设置为相对(0),实际输入速率在库内评估。默认值为0。

iptos=tos

IP 服务类型。仅适用于发送方。默认值是 0xB8。

ipttl=ttl

IP 生存时间(TTL)。仅适用于发送方。默认值是 64。

latency=微秒

基于时间戳的包传递延迟。 用于吸收丢包重传时的突发。此标志同时设置rcvlatencypeerlatency为相同值。注意,在版本 1.3.0 之前,这是唯一设置延迟的标志,但是实际上等效于设置peerlatency,当方是发送方时,以及rcvlatency当方为接收方时启用,并且不支持双向流发送。

listen_timeout=微秒

设置套接字监听超时时间。

maxbw=字节/秒

最大发送带宽,单位为字节每秒。 -1 无限(CSRTCC 限制为 30Mbps) 0 相对于输入速率(参见inputbw) >0 绝对限制值 默认值是 0(相对)

mode=caller|listener|rendezvous

连接模式。caller开启客户端连接。listener启动服务器以监听传入连接。rendezvous使用会合(Rendez-Vous)连接模式。 默认值是 caller。

mss=字节

最大段大小,单位为字节。用于缓冲分配和通过包计数进行速率计算,假设包已满。 使用对等方中最小的 MSS。默认情况下,整个互联网中的值是 1500。 这是 UDP 数据包的最大大小,仅能减小,除非您有一些特殊的专用网络设置。默认值是 1500。

nakreport=1|0

如果设置为 1,接收方将定期发送 ‘UMSG_LOSSREPORT’ 消息,直到丢失数据包被重新传输或故意丢弃。默认值是 1。

oheadbw=百分比

输入速率之上的恢复带宽开销,单位为百分比。 参见inputbw。默认值是 25%。

passphrase=字符串

HaiCrypt 加密/解密密码字符串,长度为 10 到 79 个字符。 密码是发送方和接收方之间的共享密钥。 它用于通过 PBKDF2(基于密码的密钥派生函数)生成密钥加密密钥。 仅在pbkeylen非零的情况下使用。仅当接收到的数据经过加密时,接收方才会使用此密码。 配置的密码无法被恢复(只可写)。

enforced_encryption=1|0

如果为 true,则双方必须设置相同的密码(包括为空,即无加密)。 如果密码不匹配或仅一方未加密,连接将被拒绝。默认值是 true。

kmrefreshrate=数据包

传输固定数量的数据包后,将切换到新的加密密钥的数量。默认为 -1。 值 -1 表示自动(在 SRT 库中为 0x1000000)。该选项范围为 0 到INT_MAX.

kmpreannounce=数据包

从发送新加密密钥到切换发生之间的时间间隔。 该值还适用于切换发生后到旧加密密钥停用之间的后续时间间隔。 默认值为 -1。 -1 表示自动(在 SRT 库中为 0x1000)。该选项范围为 0 到INT_MAX.

snddropdelay=微秒

发送方在丢弃数据包之前的额外延迟。此延迟将添加到默认的丢弃延迟时间间隔值。

特殊值 -1:发送方根本不丢弃数据包。

payload_size=字节

设置在实时模式下的单次发送函数调用中传输的数据包声明的最大大小。 如果此值未使用,请使用 0(文件模式下的默认值)。 默认值是 -1(自动),通常意味着 MPEG-TS; 如果您计划 使用 SRT 发送任何其他类型的有效载荷(例如非常小的帧封装实时流), 则可以使用更大的最大帧大小,但不能超过 1456 字节。

pkt_size=字节

别名‘payload_size’.

peerlatency=微秒

由发送方设置的延迟值(如描述于rcvlatency)作为接收方的最小值。

pbkeylen=字节

发送方加密密钥长度,以字节为单位。 只能设置为 0、16、24 或 32。 如果不为 0,则启用发送方加密。 接收方不需要(设置为 0), 密钥大小从发送方在 HaiCrypt 握手中获得。 默认值是 0。

rcvlatency=微秒

应从数据包发送到传递到接收器应用程序的时间经过的时间。 此时间应为足够大的缓冲时间以覆盖发送时、意外延长的 RTT 时间 和重传丢失 UDP 数据包所需的时间。 实际延迟值将是该选项的值与peerlatency由对等方设置的值。 在版本 1.3.0 之前,此选项仅作为latency.

recv_buffer_size=字节

设置 UDP 接收缓冲区大小,单位为字节。

send_buffer_size=字节

设置 UDP 发送缓冲区大小,单位为字节。

timeout=微秒

为读取、写入和连接操作设置触发错误的超时时间。 注意,SRT 库有可单独控制的内部超时时间, 此处设置的值仅限于这些时间。

tlpktdrop=1|0

延迟过晚数据包丢弃。当在接收方启用时,它会跳过未及时到达的丢失数据包, 并在随后的数据包到达播放时间时将其传递给应用程序。 它还向发送方发送一个伪 ACK。 当在发送方启用并且接收对等方也启用时, 发送方会丢弃那些无法及时传递的旧数据包。 如果接收方支持此功能,发送方会自动启用此功能。

sndbuf=字节

设置发送缓冲区大小,单位为字节。

rcvbuf=字节

设置接收缓冲区大小,单位为字节。

接收缓冲区不得大于ffs.

lossmaxttl=数据包

重新排序容忍值最大可增长到的值。 当 Reorder Tolerance > 0 时,数据包丢失报告被延迟 直到达到该值的数量的数据包到达。 如果 UDP 数据包倾向于无序到达,Reorder Tolerance 会在非重传情况下(即非序列丢失),增加至该选项的值。 默认值是 0,即关闭此机制,丢失报告总是在检测到序列间隙时立即发送。

minversion

对等方所需的最低 SRT 版本。 如果对等方不满足最低版本要求,连接将被拒绝。

版本格式使用十六进制表示,形式为 0xXXYYZZ,对应 .x.y.z 的人类可读表达。

streamid=字符串

在连接前设置在套接字上的字符串,长度限制为 512 个字符。 监听方可以通过从连接的套接字中检索此 Stream ID, 套接字通过 srt_accept 返回。 Stream ID 的内容没有强制解释规则。 此选项在会合连接模式下无意义;可能导致某一方覆盖另一方的值。

srt_streamid=字符串

别名‘streamid’,避免与 FFMPEG 命令行选项冲突。

smoother=live|file

用于该套接字传输的 Smoother 使用类型,负责传输和拥塞控制。 两个连接的端必须使用完全相同的 Smoother 类型, 否则连接将被拒绝。

messageapi=1|0

当设定时,此套接字使用 Message API,否则使用 Buffer API。 注意在实时模式(参见transtype)中,仅支持消息 API。 在文件模式中可以选择两种模式:

流模式(默认,当此选项为 false)。 在此模式下,可以通过一个发送指令发送任意数据, 或者使用专门的函数直接从一个文件读取数据。 内部设施将处理任何速度和拥堵控制。 在接收时,也可接收任意数据,未提取的数据会等待下次调用。 在 Stream 模式中,数据间没有边界。

消息模式。在此模式中,单个发送指令传递恰好一个边界明确定义的一段数据(即消息)。 与实时模式相比,该消息可能跨越多个 UDP 数据包, 且唯一的大小限制为发送缓冲区能够完全容纳。 接收方应使用足够大的缓冲区接收消息,否则消息将不会交付。 如果消息不完整(未接收到所有数据包或出现丢包),则不会交付。

transtype=live|file

设置套接字的传输类型,特别是,设定此选项会根据需要 为特定传输类型设置多个其他参数的默认值。

实时:以实时传输的设置选项。 此模式下发送数据对于单次发送指令应限于适合单一 UDP 数据包, 且不超过payload_size(默认为 1316)。此模式中没有速度控制,仅当配置时以 限制带宽控制(包括重传与控制数据包传输开销)。

文件:非实时传输的设置选项。messageapi参见详细设置说明。

linger=

套接字在关闭时等待未发送数据的时间,以秒为单位。 默认值是-1。 -1 表示自动(实时模式为关闭,时间为 0 秒;文件模式为开启,时间为180秒)。 该选项范围为 0 到INT_MAX.

tsbpd=1|0

当为 true 时,使用基于时间戳的数据包传递模式。 默认行为取决于传输类型:实时模式下启用,文件模式下禁用。

更多信息见:https://github.com/Haivision/srt.

18.38 srtp

安全实时传输协议(SRTP)。

接受的选项是:

srtp_in_suite
srtp_out_suite

选择输入和输出的编码套件。

支持的值:

AES_CM_128_HMAC_SHA1_80
SRTP_AES128_CM_HMAC_SHA1_80
AES_CM_128_HMAC_SHA1_32
SRTP_AES128_CM_HMAC_SHA1_32
srtp_in_params
srtp_out_params

设置输入与输出编码参数, 以 base64 编码表示的二进制块形式表达。 该二进制块的前 16 字节用作主密钥, 后续 14 字节用作主要盐值。

18.39 subfile

虚拟提取文件或其他流的片段。 基础流必须支持定位。

接受的选项:

start

提取片段的起始偏移量,单位为字节。

end

提取片段的结束偏移量,单位为字节。 如果设置为 0,则提取到文件末尾。

示例:

从 DVD VOB 文件中提取章节(起始与结束扇区需外部提供并乘以 2048):

subfile,,start,153391104,end,268142592,,:/media/dvd/VIDEO_TS/VTS_08_1.VOB

直接从 TAR 档案播放 AVI 文件:

subfile,,start,183241728,end,366490624,,:archive.tar

从起始偏移量播放 MPEG-TS 文件直到结束:

subfile,,start,32815239,end,0,,:video.ts

18.40 tee

同时将输出写入多个协议。单个输出间通过 | 分隔。

tee:file://path/to/local/this.avi|file://path/to/local/that.avi

18.41 tcp

传输控制协议(TCP)。

TCP URL 的必需语法是:

tcp://主机名:端口[?选项]

选项包含列表,其中选项形式以 & 分隔=.

支持的选项列表如下。

listen=2|1|0

监听入站连接。0 禁用监听,1 启用单客户端模式下的监听,2 启用多客户端模式下的监听。默认值为 0。

local_addr=地址

用于 TCP 套接字连接的网络接口的本地 IP 地址。

local_port=端口

用于 TCP 套接字连接的本地端口。

timeout=微秒

设置超时错误触发点,以微秒为单位。

该选项仅在读取模式下相关:如果在所设定的时间间隔内未收到数据,则触发错误。

listen_timeout=毫秒

设置监听超时时间,以毫秒为单位。

recv_buffer_size=字节

设置接收缓冲区大小,以字节为单位。

send_buffer_size=字节

设置发送缓冲区大小,以字节为单位。

tcp_nodelay=1|0

设置 TCP_NODELAY 禁用 Nagle 算法。默认值为 0。

备注:当前写入套接字未优化以最小化系统调用,从而降低了 TCP_NODELAY 的效率/效果。

tcp_mss=字节

设置 TCP 数据包的最大段大小,以字节为单位。

以下示例展示了如何使用以下方式设置监听的 TCP 连接ffmpeg,然后通过以下方式访问ffplay:

ffmpeg -i 输入 -f 格式 tcp://主机名:端口?listen
ffplay tcp://主机名:端口

18.42 TLS

传输层安全 (TLS) / 安全套接字层 (SSL)

TLS/SSL URL 的必要语法是:

tls://主机名:端口[?选项]

以下参数可以通过命令行选项设置 (或在代码中通过AVOption调用):

ca_file, cafile=文件名

存储证书颁发机构 (CA) 根证书文件,被视为可信。如果链接的 TLS 库包含默认配置,则可能不需要为验证指定此参数,但并非所有库和设置都有内置默认配置。 文件必须为 OpenSSL PEM 格式。

tls_verify=1|0

如果启用,将尝试验证正在通信的对端。 注意,如果使用 OpenSSL,目前只会确保对端证书是由 CA 数据库中的根证书之一签名,而不会验证该证书是否真的与我们尝试连接的主机名匹配。(使用其他后端时,主机名也是经过验证的。)

默认情况下该功能是禁用的,因为在许多情况下需要调用方提供 CA 数据库。

cert_file, cert=文件名

包含证书的文件,用于与对端进行握手。 (当以服务器模式操作时,监听模式下通常需要对端提供证书,而客户端证书仅在某些设置中需要。)

key_file, key=文件名

包含证书私钥的文件。

listen=1|0

如果启用,在提供的端口监听连接,并假定在握手中是服务器角色,而不是客户端角色。

http_proxy

通过 HTTP 代理进行隧道连接,例如http://example.com:1234。 代理必须支持 CONNECT 方法。

示例命令行:

创建一个 TLS/SSL 服务器来服务于一个输入流。

ffmpeg -i 输入 -f 格式 tls://主机名:端口?listen&cert=server.crt&key=server.key

使用以下方式从 TLS/SSL 服务器回放一个流ffplay:

ffplay tls://主机名:端口

18.43 UDP

用户数据报协议。

UDP URL 的必要语法是:

udp://主机名:端口[?选项]

选项包含列表,其中选项形式以 & 分隔=.

如果系统启用了线程功能,将使用循环缓冲区存储入站数据,这可以减少由于 UDP 套接字缓冲区溢出导致的数据丢失。fifo_sizeoverrun_nonfatal选项与此缓冲区相关。

支持的选项列表如下。

buffer_size=大小

设置 UDP 最大套接字缓冲区大小,以字节为单位。用于设置接收或发送缓冲区大小,具体取决于套接字的用途。 默认值为输出 32 KB,输入 384 KB。另外请参见fifo_size.

bitrate=比特率

如果设置为非零,输出将拥有指定的恒定比特率,前提是输入拥有足够的包以维持它。

burst_bits=

使用时比特率指定数据包突发的最大位数。

localport=端口

覆盖绑定的本地 UDP 端口。

localaddr=地址

用于发送数据包或加入多播组的网络接口的本地 IP 地址。

pkt_size=大小

设置 UDP 数据包大小,以字节为单位。

reuse=1|0

显式允许或禁止复用 UDP 套接字。

ttl=TTL

设置生存时间的值(仅适用于多播)。

connect=1|0

connect()初始化 UDP 套接字。在这种情况下,目标地址不能通过 ff_udp_set_remote_url 更改。 如果起初不知道目标地址,此选项也可以在 ff_udp_set_remote_url 中指定。 这样设置可以通过 getsockname 找出数据包的源地址,写入时如果收到 "目标不可达" 错误,将返回 AVERROR(ECONNREFUSED)。 在接收数据时,这一设置仅接收来自指定对端地址/端口的数据包。

sources=地址[,地址]

仅接收来自指定地址发送的数据包。在使用多播时,也仅订阅来自这些地址的多播流量。

block=地址[,地址]

忽略来自指定地址发送的数据包。在使用多播时,也将这些源地址排除在多播订阅中。

fifo_size=单位

设置 UDP 接收环形缓冲区的大小,表示数据包数,每个数据包大小为 188 字节。如果未指定,默认大小为 7*4096。

overrun_nonfatal=1|0

在 UDP 接收环形缓冲区溢出的情况下保持生存。默认值为 0。

timeout=微秒

设置超时错误触发点,以微秒为单位。

该选项仅在读取模式下相关:如果在所设定的时间间隔内未收到数据,则触发错误。

broadcast=1|0

显式允许或禁止 UDP 广播。

请注意,广播可能在具有广播风暴保护的网络中无法正常工作。

18.43.1 示例

  • 使用ffmpeg通过 UDP 流式传输到远程终端:
    ffmpeg -i 输入 -f 格式 udp://主机名:端口
    
  • 使用ffmpeg在 MPEG-TS 格式下通过 UDP 流式传输,使用 188 字节大小的数据包,并使用较大的输入缓冲区:
    ffmpeg -i 输入 -f mpegts udp://主机名:端口?pkt_size=188&buffer_size=65535
    
  • 使用ffmpeg从远程终端通过 UDP 接收数据:
    ffmpeg -i udp://[多播地址]:端口 ...
    

18.44 Unix

Unix 本地套接字

Unix 套接字 URL 的必要语法是:

unix://文件路径

以下参数可以通过命令行选项设置 (或在代码中通过AVOption调用):

timeout

超时时间,以毫秒为单位。

listen

以监听模式创建 Unix 套接字。

18.45 ZMQ

基于 libzmq 库的 ZeroMQ 异步消息传递。

此库支持多客户端单播流式传输,无需依赖外部服务器。

流式传输或连接到流的必要语法是:

zmq:tcp://ip-address:port

示例: 在端口 5555 上创建一个本地主机流:

ffmpeg -re -i input -f mpegts zmq:tcp://127.0.0.1:5555

多个客户端可以通过以下方式连接到流:

ffplay zmq:tcp://127.0.0.1:5555

通过 ZeroMQ 发布-订阅模式实现对多个客户端的流式传输。 服务器端绑定到端口并发布数据。客户端连接到服务器(通过 IP 地址/端口)并订阅流。 通常情况下,服务器和客户端启动的顺序无关紧要。

要支持此协议,ffmpeg 必须编译时使用 –enable-libzmq 选项。

选项可以在ffmpeg/ffplay命令行中设置。支持以下选项:

pkt_size

强制发送/接收数据包的最大大小。默认值为 131,072 字节。 在服务器端,这设置经 ZeroMQ 发送的最大数据包大小。 在客户端,设置接收数据包的内部缓冲区大小。 注意,客户端上的 pkt_size 应该等于或大于服务器上的 pkt_size。 否则接收到的消息可能会被截断,导致解码错误。

19 设备选项

libavdevice 提供与 libavformat 相同的接口。 具体来说,输入设备被视为解复用器,输出设备被视为复用器,接口和泛型设备选项与 libavformat 提供的一致(参见 ffmpeg 格式手册)。

此外,每个输入或输出设备可能支持所谓的私有选项,这些选项特定于该组件。

选项可以通过指定 -option value在 FFmpeg 工具中设置,或通过设备显式设置值AVFormatContext选项或使用libavutil/opt.hAPI 编程使用。

20 输入设备

输入设备是 FFmpeg 中配置的元素,它使您可以访问系统附加的多媒体设备中的数据。

配置 FFmpeg 构建时,默认情况下会启用所有支持的输入设备。 您可以使用 "–list-indevs" 选项列出所有可用的输入设备。

您可以使用 "–disable-indevs" 配置选项禁用所有输入设备, 并使用 "–enable-indev=" 选项选择性启用某个输入设备INDEV", 或使用 "–disable-indev=" 选项禁用特定输入设备INDEV".

ff* 工具的 "-devices" 选项将显示支持的输入设备列表。

以下是当前可用输入设备的描述。

20.1 ALSA

ALSA(高级 Linux 声音架构)输入设备。

要在配置期间启用此输入设备,您需要在系统上安装 libasound。

此设备允许从 ALSA 设备捕获。捕获设备的名称必须是 ALSA 卡标识符。

ALSA 标识符的语法为:

hw:[,设备[,子设备]]

其中设备子设备组件是可选的。

三个参数(依次为,设备,子设备) 指定卡号或标识符、设备号和子设备号(-1 表示任意)。

要查看系统当前识别的卡列表,请检查文件/proc/asound/cards/proc/asound/devices.

例如,使用以下配置从卡 ID 为 0 的 ALSA 设备捕获:ffmpeg运行以下命令:

ffmpeg -f alsa -i hw:0 alsaout.wav

更多信息请参阅:http://www.alsa-project.org/alsa-doc/alsa-lib/pcm.html

20.1.1 选项

sample_rate

以 Hz 为单位设置采样率。默认值为 48000。

channels

设置通道数。默认值为 2。

20.2 android_camera

Android 摄像头输入设备。

此输入设备使用 Android Camera2 NDK API,该 API 在支持 API 级别 24+ 的设备上可用。 配置期间会自动检测 android_camera 的可用性。

此设备允许从集成到 Camera2 NDK API 的所有 Android 摄像头捕获数据。

可用摄像头在内部枚举,可通过camera_index参数选择。输入文件字符串将被忽略。

通常后置摄像头的索引为 0,而前置摄像头的索引为 1。

20.2.1 选项

video_size

设置视频大小,格式如 640x480 或 hd720。如果请求的视频大小不可用或默认值不会成功,则会回退到 Android 报告的第一个可用配置。

framerate

设置视频帧率。如果请求的帧率不可用或默认值不会成功,则会回退到 Android 报告的第一个可用配置(默认值为 -1)。

camera_index

设置要使用的摄像头索引。默认值为 0。

input_queue_size

设置最大缓冲帧数。默认值为 5。

20.3 avfoundation

AVFoundation 输入设备。

AVFoundation 是 Apple 推荐的框架,用于 OSX >= 10.7 以及 iOS 上的流媒体抓取。

输入文件名需要使用以下语法提供:

-i "[[VIDEO]:[AUDIO]]"

第一个条目选择视频输入,而后者选择音频输入。 流必须通过设备名称或设备索引按照设备列表指定。 或者,可以使用 -video_device_index <INDEX> 和/或 -audio_device_index <INDEX> 选择视频和/或音频输入设备,覆盖输入文件名中提供的设备名称或索引。

所有可用设备可以通过使用-list_devices true来枚举,列出所有设备名称和对应的索引。

有两个设备名称别名:

default

选择对应类型的 AVFoundation 默认设备。

none

不要录制对应的媒体类型。 这等同于指定空设备名称或索引。

20.3.1 选项

AVFoundation 支持以下选项:

-list_devices <TRUE|FALSE>

如果设置为 true,则会显示所有可用输入设备的列表,展示所有设备名称和索引。

-video_device_index <INDEX>

通过其索引指定视频设备。覆盖输入文件名中提供的任何内容。

-audio_device_index <INDEX>

通过其索引指定音频设备。覆盖输入文件名中提供的任何内容。

-pixel_format <FORMAT>

请求视频设备使用特定的像素格式。 如果指定的格式不被支持,会显示可用格式列表 并使用该列表中的第一个格式。可用的像素格式有:monob, rgb555be, rgb555le, rgb565be, rgb565le, rgb24, bgr24, 0rgb, bgr0, 0bgr, rgb0, bgr48be, uyvy422, yuva444p, yuva444p16le, yuv444p, yuv422p16, yuv422p10, yuv444p10, yuv420p, nv12, yuyv422, gray

-framerate

设置抓取的帧率。默认值是ntsc,对应的帧率为30000/1001.

-video_size

设置视频帧的大小。

-capture_cursor

捕获鼠标指针。默认值为 0。

-capture_mouse_clicks

捕获屏幕鼠标点击。默认值为 0。

-capture_raw_data

捕获原始设备数据。默认值为 0。 使用此选项可能会接收到传递给 AVFoundation 框架的底层数据。例如,对于发送原始 DV 数据到框架的多路设备(如磁带式摄像机),将此选项设置为 false 会导致仅捕获以指定像素格式提取的视频帧。将此选项设置为 true 则会接收到未加工的 DV 流。

20.3.2 示例

  • 打印支持的 AVFoundation 设备列表并退出:
    $ ffmpeg -f avfoundation -list_devices true -i ""
    
  • 从视频设备 0 和音频设备 0 录制视频到 out.avi:
    $ ffmpeg -f avfoundation -i "0:0" out.avi
    
  • 从视频设备 2 和音频设备 1 录制视频到 out.avi:
    $ ffmpeg -f avfoundation -video_device_index 2 -i ":1" out.avi
    
  • 使用像素格式 bgr0 从系统默认视频设备录制视频,并不录制任何音频到 out.avi:
    $ ffmpeg -f avfoundation -pixel_format bgr0 -i "default:none" out.avi
    
  • 从适合的输入设备录制原始 DV 数据并将输出写入 out.dv:
    $ ffmpeg -f avfoundation -capture_raw_data true -i "zr100:none" out.dv
    

20.4 bktr

BSD 视频输入设备。不推荐使用并将移除 - 如果您有兴趣维护此设备,请联系开发人员。

20.4.1 选项

framerate

设置帧率。

video_size

设置视频帧的大小。默认值为vga.

standard

可用值有:

pal
ntsc
secam
paln
palm
ntscj

20.5 decklink

decklink 输入设备为 Blackmagic DeckLink 设备提供捕获功能。

要启用此输入设备,需要 Blackmagic DeckLink SDK 并需要进行适当的配置--extra-cflags--extra-ldflags。 在 Windows 上,需要将 IDL 文件通过widl.

DeckLink 对于其支持的格式非常严格。可以使用raw_format设置输入的像素格式。 帧率和视频大小必须通过-list_formats 1来为您的设备确定。音频采样率总是 48 kHz,通道数量可以是 2、8 或 16。请注意,所有音频通道都包含在一个音轨中。

20.5.1 选项

list_devices

如果设置为true,打印设备列表并退出。 默认值为false。此选项已弃用,请使用 ffmpeg 的-sources选项列出可用输入设备。

list_formats

如果设置为true,打印支持的格式列表并退出。 默认值为false.

format_code <FourCC>

此选项将输入视频格式设置为由 FourCC 提供的格式。要查看您的设备支持的值,请使用list_formats。 注意,有一个 FourCC'pal '也可以被用作pal(3 个字母)。 默认行为是自动检测输入视频格式,如果硬件支持这种方式。

raw_format

设置捕获视频的像素格式。 可用值有:

auto

这是默认值,表示使用 8-bit YUV 422 或 8-bit ARGB(如果使用格式自动检测),否则为 8-bit YUV 422。

uyvy422

8-bit YUV 422。

yuv422p10

10-bit YUV 422。

argb

8-bit RGB。

bgra

8-bit RGB。

rgb10

10-bit RGB。

teletext_lines

如果设置为非零值,将会从垂直辅助数据捕获一个额外的字幕数据流。支持 SD PAL(576i)和 HD(1080i 或 1080p)来源。在 HD 来源的情况下,会解码 OP47 数据包。

此选项是一个位掩码,可以捕获 SD PAL VBI 行,具体包括行 6 至 22 和行 318 至 335。行 6 是掩码中的最低有效位。选定行中没有字幕信息的行将被忽略。可以使用特殊值all来选择所有可能的行,或者使用standard跳过行 6、318 和 319,这些行与所有接收器不兼容。

对于 SD 来源,ffmpeg 需要编译带有--enable-libzvbi。对于 HD 来源,在较旧的(4K 以前)DeckLink 卡模型上,需要以 10 位模式捕获。

channels

定义捕获的音频通道数量。必须为 ‘2’, ‘8’ 或 ‘16’。 默认值为 ‘2’.

duplex_mode

设置 decklink 设备的双工/配置文件模式。必须为 ‘unset’, ‘half’, ‘full’, ‘one_sub_device_full’, ‘one_sub_device_half’, ‘two_sub_device_full’, ‘four_sub_device_half’ 默认值为 ‘unset’.

注意:DeckLink SDK 11.0 已经将双工属性替换为配置文件属性。 对于 DeckLink Duo 2 和 DeckLink Quad 2,配置文件在使用相同接口的任何两个子设备之间共享。对于 DeckLink 8K Pro,配置文件在所有 4 个子设备之间共享。因此,DeckLink 8K Pro 支持四个配置文件。

DeckLink 8K Pro 的有效配置文件模式(使用 DeckLink SDK >= 11.0): ‘one_sub_device_full’, ‘one_sub_device_half’, ‘two_sub_device_full’, ‘four_sub_device_half

DeckLink Quad 2 和 DeckLink Duo 2 的有效配置文件模式: ‘half’, ‘full

timecode_format

需要在帧和视频流元数据里包含的时间码类型。必须为 ‘none’, ‘rp188vitc’, ‘rp188vitc2’, ‘rp188ltc’, ‘rp188hfr’, ‘rp188any’, ‘vitc’, ‘vitc2’,或 ‘serial’。 默认值为 ‘none’(未包含)。

为了正确支持 50/60 fps 的时间码,对于时间码类型 ‘rp188any’ 的查询优先级是 HFR, VITC1, VITC2 和 LTC(大于 30 fps 的内容)。注意这与 DeckLink API 的查询优先级略有不同,它的方法是 HFR, VITC1, LTC, VITC2。

video_input

设置视频输入源。必须为 ‘unset’, ‘sdi’, ‘hdmi’, ‘optical_sdi’, ‘component’, ‘composite’ 或 ‘s_video’。 默认值为 ‘unset’.

audio_input

设置音频输入源。必须为 ‘unset’, ‘embedded’, ‘aes_ebu’, ‘analog’, ‘analog_xlr’, ‘analog_rca’ 或 ‘microphone’。默认值为 ‘unset’.

video_pts

设置视频包时间戳来源。必须为 ‘video’, ‘audio’, ‘reference’, ‘wallclock’ 或 ‘abs_wallclock’。 默认值为 ‘video’.

audio_pts

设置音频包时间戳来源。必须为 ‘video’, ‘audio’, ‘reference’, ‘wallclock’ 或 ‘abs_wallclock’。 默认值为 ‘audio’.

draw_bars

如果设置为 ‘true’,在信号丢失的情况下绘制彩条。 默认值为 ‘true’。 此选项已弃用,请使用signal_loss_action选项。

signal_loss_action

在信号丢失的情况下采取的动作。接受以下值之一:

1, none

信号丢失时不采取任何动作。这通常会导致黑屏。

2, bars

在信号丢失时绘制彩条。仅支持 8-bit 输入信号。

3, repeat

在信号丢失时重复最后的视频帧。

默认值为 ‘bars’.

queue_size

设置最大输入缓冲区大小(以字节为单位)。如果缓冲达到此值,输入帧将会被丢弃。 默认值为 ‘1073741824’.

audio_depth

设置音频采样的位深度。必须为 ‘16’ 或 ‘32’。 默认值为 ‘16’.

decklink_copyts

如果设置为true,时间戳将原样转发,不移除初始偏移。 默认值为false.

timestamp_align

捕获开始时间对齐(以秒为单位)。如果设置为非零值,将丢弃输入帧直到系统时间戳与配置的值对齐。 最多容忍一个帧持续时间的对齐差异。 此方法用于保持在部署于多路硬件设备的情况下的输入同步。不同硬件设备的系统时间应通过 NTP 或 PTP 等协议进行同步后再使用此选项。 请注意,此方法并非完全可靠。在某些边界情况下,输入同步可能不会发生,因为操作系统中的线程调度抖动。 同步可能出错一帧,或者较少情况下为timestamp_align秒。 默认值为 ‘0’.

wait_for_tc (bool)

丢弃帧直到收到带有时间码的帧。有时,在接收到的第一输入帧时不会收到串行时间码。如果发生这种情况,存储的流时间码将会不准确。如果此选项设置为true,输入帧将会丢弃直到收到带有时间码的帧。 选项timecode_format必须指定。 默认值为false.

enable_klv(bool)

如果设置为true,将从 VANC 提取 KLV 数据并输出 KLV 包。 KLV VANC 包将根据 MID 和 PSC 字段进行连接并聚合到一个 KLV 包中。 默认值为false.

20.5.2 示例

  • 列出输入设备:
    ffmpeg -sources decklink
    
  • 列出支持的格式:
    ffmpeg -f decklink -list_formats 1 -i 'Intensity Pro'
    
  • 捕获 1080i50 的视频剪辑:
    ffmpeg -format_code Hi50 -f decklink -i 'Intensity Pro' -c:a copy -c:v copy output.avi
    
  • 捕获 1080i50 10 位视频剪辑:
    ffmpeg -raw_format yuv422p10 -format_code Hi50 -f decklink -i 'UltraStudio Mini Recorder' -c:a copy -c:v copy output.avi
    
  • 捕获 1080i50 并包含 16 音频通道的视频剪辑:
    ffmpeg -channels 16 -format_code Hi50 -f decklink -i 'UltraStudio Mini Recorder' -c:a copy -c:v copy output.avi
    

20.6 dshow

Windows DirectShow 输入设备。

当使用 mingw-w64 项目构建 FFmpeg 时,启用 DirectShow 支持。 当前仅支持音频和视频设备。

可以作为单独的输入打开多个设备,但它们也可以在同一输入上打开,从而改善它们之间的同步。

输入名称格式应为:

类型=名称[:类型=名称]

其中类型可以是音频视频, 而名称则是设备的名称或别名。

20.6.1 选项

如果未指定任何选项,则使用设备的默认设置。 如果设备不支持所请求的选项,则打开失败。

video_size

在捕获的视频中设置视频尺寸。

framerate

在捕获的视频中设置帧率。

sample_rate

设置捕获音频的采样率(以 Hz 为单位)。

sample_size

设置捕获音频的样本大小(以位为单位)。

channels

设置捕获音频的通道数。

list_devices

如果设置为true,打印设备列表并退出。

list_options

如果设置为true,打印所选设备的选项列表并退出。

video_device_number

为名称相同的设备设置视频设备编号(从 0 开始,默认为 0)。

audio_device_number

为名称相同的设备设置音频设备编号(从 0 开始,默认为 0)。

pixel_format

选择 DirectShow 使用的像素格式。这只能在未设置视频编解码器或设置为 rawvideo 时设置。

audio_buffer_size

设置音频设备缓冲区大小(以毫秒为单位,可以直接影响延迟,具体取决于设备)。 默认情况下使用音频设备的默认缓冲区大小(通常是 500 毫秒的倍数)。 将此值设置过低可能会降低性能。 详见http://msdn.microsoft.com/en-us/library/windows/desktop/dd377582(v=vs.85).aspx

video_pin_name

选择视频捕获引脚使用名称或别名。

audio_pin_name

选择音频捕获引脚使用名称或别名。

crossbar_video_input_pin_number

为交叉网络设备选择视频输入引脚编号。这将被路由到交叉网络设备的视频解码器输出引脚。 注意,改变此值可能会影响未来的调用(设置新默认值),直到系统重新启动。

crossbar_audio_input_pin_number

为交叉网络设备选择音频输入引脚编号。这将被路由到交叉网络设备的音频解码器输出引脚。 注意,改变此值可能会影响未来的调用(设置新默认值),直到系统重新启动。

show_video_device_dialog

如果设置为true在开始捕获之前,弹出一个显示对话框给最终用户,允许他们手动更改视频过滤器的属性和配置。注意,对于交叉开关设备,有时可能需要在此对话框中调整值,以切换PAL(25 fps)和NTSC(29.97 fps)输入帧率、尺寸、隔行扫描等内容。更改这些值可以启用不同的扫描率/帧率,并避免底部出现绿条、闪烁的扫描线等问题。需要注意的是,对于某些设备,更改这些属性可能会影响未来的调用(设置新的默认值),直到系统重新启动后才恢复。

show_audio_device_dialog

如果设置为true在开始捕获之前,弹出一个显示对话框给最终用户,允许他们手动更改音频过滤器的属性和配置。

show_video_crossbar_connection_dialog

如果设置为true在开始捕获之前,当打开视频设备时,弹出一个显示对话框给最终用户,允许他们手动修改交叉开关针脚路由。

show_audio_crossbar_connection_dialog

如果设置为true在开始捕获之前,当打开音频设备时,弹出一个显示对话框给最终用户,允许他们手动修改交叉开关针脚路由。

show_analog_tv_tuner_dialog

如果设置为true在开始捕获之前,弹出一个显示对话框给最终用户,允许他们手动修改电视频道和频率。

show_analog_tv_tuner_audio_dialog

如果设置为true在开始捕获之前,弹出一个显示对话框给最终用户,允许他们手动修改电视音频(如单声道与立体声、语言A、B或C)。

audio_device_load

从文件加载一个音频捕获过滤设备,而不是通过名字搜索它。如果过滤器支持其属性的序列化,还可以加载其他参数。为了使用此功能,必须指定音频捕获源,但它可以是任何内容,甚至是虚假的。

audio_device_save

将当前使用的音频捕获过滤设备及其参数(如果过滤器支持)保存到文件。如果文件名已存在,则将被覆盖。

video_device_load

从文件加载一个视频捕获过滤设备,而不是通过名字搜索它。如果过滤器支持其属性的序列化,还可以加载其他参数。为了使用此功能,必须指定视频捕获源,但它可以是任何内容,甚至是虚假的。

video_device_save

将当前使用的视频捕获过滤设备及其参数(如果过滤器支持)保存到文件。如果文件名已存在,则将被覆盖。

use_video_device_timestamps

如果设置为false视频帧的时间戳将从实时时钟派生,而不是从捕获设备提供的时间戳。这可以解决由设备提供的时间戳不可靠的问题。

20.6.2 示例

  • 列出DirectShow支持的设备并退出:
    $ ffmpeg -list_devices true -f dshow -i dummy
    
  • 打开视频设备摄像头:
    $ ffmpeg -f dshow -i video="Camera"
    
  • 通过名称打开第二个视频设备摄像头:
    $ ffmpeg -f dshow -video_device_number 1 -i video="Camera"
    
  • 打开视频设备摄像头并打开音频设备麦克风:
    $ ffmpeg -f dshow -i video="Camera":audio="Microphone"
    
  • 列出选定设备中支持的选项并退出:
    $ ffmpeg -list_options true -f dshow -i video="Camera"
    
  • 指定针脚名称以通过名称或备用名称捕获,指定备用设备名称:
    $ ffmpeg -f dshow -audio_pin_name "Audio Out" -video_pin_name 2 -i video=video="@device_pnp_\\?\pci#ven_1a0a&dev_6200&subsys_62021461&rev_01#4&e2c7dd6&0&00e1#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\{ca465100-deb0-4d59-818f-8c477184adf6}":audio="Microphone"
    
  • 配置一个交叉开关设备,指定交叉开关针脚,在启动时允许用户调整视频捕获属性:
    $ ffmpeg -f dshow -show_video_device_dialog true -crossbar_video_input_pin_number 0
         -crossbar_audio_input_pin_number 3 -i video="AVerMedia BDA Analog Capture":audio="AVerMedia BDA Analog Capture"
    

20.7 fbdev

Linux帧缓冲输入设备。

Linux帧缓冲是一个与硬件独立的抽象层,用于在计算机显示器上显示图形,通常是在控制台上。可以通过一个文件设备节点访问,通常是/dev/fb0.

要了解更多详细信息,请阅读Linux源代码树中包含的Documentation/fb/framebuffer.txt文件。

另见http://linux-fbdev.sourceforge.net/和fbset(1)。

从帧缓冲设备录制/dev/fb0使用ffmpeg:

ffmpeg -f fbdev -framerate 10 -i /dev/fb0 out.avi

您可以使用以下命令拍摄单张截图:

ffmpeg -f fbdev -framerate 1 -i /dev/fb0 -frames:v 1 screenshot.jpeg

20.7.1 选项

framerate

设置帧率。默认为25。

20.8 gdigrab

基于Win32 GDI的屏幕捕获设备。

此设备允许您捕获Windows上的显示区域。

输入文件名的选项中包括以下元素:

desktop

title=窗口标题

hwnd=窗口句柄

第一个选项将捕获整个桌面或桌面的固定区域。第二个和第三个选项将捕获单个窗口的内容,无论其在屏幕上的位置。

例如,使用以下命令捕获整个桌面:ffmpeg:

ffmpeg -f gdigrab -framerate 6 -i desktop out.mpg

在位置捕获640x480区域10,20:

ffmpeg -f gdigrab -framerate 6 -offset_x 10 -offset_y 20 -video_size vga -i desktop out.mpg

捕获名为“计算器”的窗口内容

ffmpeg -f gdigrab -framerate 6 -i title=Calculator out.mpg

20.8.1 选项

draw_mouse

指定是否绘制鼠标指针。使用值0不绘制指针。默认值为1.

framerate

设置捕获帧率。默认值为ntsc,对应的帧率为30000/1001.

show_region

在屏幕上显示捕获区域。

如果show_region1一起指定,则屏幕上将指示捕获区域。使用此选项时,如果仅捕获屏幕的一部分,很容易知道正在捕获的内容。

注意,show_region与捕获单个窗口的内容不兼容。

例如:

ffmpeg -f gdigrab -show_region 1 -framerate 6 -video_size cif -offset_x 10 -offset_y 20 -i desktop out.mpg
video_size

设置视频帧大小。如果选择了desktop,则默认捕获全屏;如果选择了title=窗口标题,则默认捕获窗口的全部大小。

offset_x

在使用video_size捕获区域时,设置距离屏幕或桌面左边缘的距离。

注意,此偏移量是从Windows主显示器的左上角计算的。如果显示器位于主显示器左侧,则需要使用负offset_x值来将区域移动到该显示器上。

offset_y

在使用video_size捕获区域时,设置距离屏幕或桌面顶部边缘的距离。

注意,此偏移量是从Windows主显示器的左上角计算的。如果显示器位于主显示器上方,则需要使用负offset_y值来将区域移动到该显示器上。

20.9 iec61883

使用libiec61883的FireWire DV/HDV输入设备。

要启用此输入设备,您需要在系统上安装libiec61883、libraw1394和libavc1394。使用配置选项--enable-libiec61883以启用此设备的编译。

iec61883捕获设备支持从通过IEEE1394(FireWire)连接的视频设备捕获,使用libiec61883和新的Linux FireWire堆栈(juju)。这是Linux内核2.6.37及更高版本中的默认DV/HDV输入方法,因为旧的FireWire堆栈已被移除。

指定要用作输入文件的FireWire端口,或使用“auto”选择第一个连接的端口。

20.9.1 选项

dvtype

覆盖DV/HDV的自动检测。仅当自动检测不起作用或应禁止使用其他设备类型时使用。如果将DV设备视为HDV(或反之),将不起作用并导致未定义的行为。支持的值为auto, dvhdv

dvbuffer

设置传入数据缓冲区的最大大小(以帧为单位)。对于DV,这是一个精确值。对于HDV,由于HDV没有固定的帧大小,因此不是帧精确的。

dvguid

通过指定其GUID来选择捕获设备。仅从指定的设备执行捕获,如果未找到具有给定GUID的设备,则操作失败。这对于同时连接多个设备时选择输入非常有用。查看/sys/bus/firewire/devices以找到GUID。

20.9.2 示例

  • 抓取并显示FireWire DV/HDV设备的输入。
    ffplay -f iec61883 -i auto
    
  • 抓取并记录FireWire DV/HDV设备的输入,如果源是HDV,使用100000个数据包的包缓冲区。
    ffmpeg -f iec61883 -i auto -dvbuffer 100000 out.mpg
    

20.10 jack

JACK输入设备。

在配置期间启用此输入设备需要在系统上安装libjack。

JACK输入设备为每个音频通道创建一个或多个JACK可写客户端,每个客户端以client_name:input_N命名,其中client_name是应用程序提供的名称,N是标识通道的数字。每个可写客户端都会将获取的数据发送到FFmpeg输入设备。

创建一个或多个JACK可读客户端后,您需要将它们连接到一个或多个JACK可写客户端。

要连接或断开JACK客户端,您可以使用jack_connectjack_disconnect程序,或者通过图形界面,例如使用qjackctl.

要列出JACK客户端及其属性,您可以调用以下命令jack_lsp.

以下是一个示例,展示如何使用JACK音频服务器捕获一个JACK可读客户端:ffmpeg.

# Create a JACK writable client with name "ffmpeg".
$ ffmpeg -f jack -i ffmpeg -y out.wav

# Start the sample jack_metro readable client.
$ jack_metro -b 120 -d 0.2 -f 4000

# List the current JACK clients.
$ jack_lsp -c
system:capture_1
system:capture_2
system:playback_1
system:playback_2
ffmpeg:input_1
metro:120_bpm

# Connect metro to the ffmpeg writable client.
$ jack_connect metro:120_bpm ffmpeg:input_1

更多信息请阅读:http://jackaudio.org/

20.10.1 选项

channels

设置通道数。默认为2。

20.11 kmsgrab

KMS视频输入设备。

捕获与指定CRTC或平面相关联的KMS扫描输出帧缓冲区,作为一个可以传递到其他硬件功能的DRM对象。

运行时需要有DRM主权限或CAP_SYS_ADMIN权限。

如果您不明白这些术语的意思,那么您可能不需要这个设备。请参阅x11grab以获得更多信息。

20.11.1 选项

device

要捕获的DRM设备。默认值为/dev/dri/card0.

format

帧缓冲区的像素格式。如果您运行的是Linux 5.7或更高版本,可以自动检测,但在更早版本中需要提供此信息。默认值为bgr0,这是Linux控制台和Xorg X服务器最常用的格式。

format_modifier

用于信号输出帧的格式修饰符。这在将帧导入某些API时是必要的。如果运行Linux 5.7或更高版本,可以自动检测,但在更早版本中需要明确提供。有关可能的值,请参阅libdrm文档。

crtc_id

用于定义捕获源的KMS CRTC ID。将使用给定CRTC上的第一个活动平面。

plane_id

用于定义捕获源的KMS平面ID。如果未指定crtc_idplane_id,则默认使用找到的第一个活动平面。

framerate

捕获的帧率。这并不同步于任何页面翻转或帧缓冲区更改,只定义了帧缓冲区的采样间隔。如果采样速率快于帧缓冲区的更新速率,将生成具有相同内容的独立帧。默认值为30.

20.11.2 示例

  • 从第一个活动平面捕获,将结果下载为普通帧并编码。仅当帧缓冲区既是线性的又是可映射的时,这才会有效;否则,结果可能会被随机化或下载失败。
    ffmpeg -f kmsgrab -i - -vf 'hwdownload,format=bgr0' output.mp4
    
  • 以60fps的速率从CRTC ID 42捕获,将结果映射到VAAPI,将其转换为NV12并编码为H.264。
    ffmpeg -crtc_id 42 -framerate 60 -f kmsgrab -i - -vf 'hwmap=derive_device=vaapi,scale_vaapi=w=1920:h=1080:format=nv12' -c:v h264_vaapi output.mp4
    
  • 为了仅捕获平面的一部分,可以对输出进行裁剪——只要拥有已知的绝对位置和大小,这可以用于捕获单个窗口。例如,为了捕获和编码1920x1080平面中央的四分之一区域:
    ffmpeg -f kmsgrab -i - -vf 'hwmap=derive_device=vaapi,crop=960:540:480:270,scale_vaapi=960:540:nv12' -c:v h264_vaapi output.mp4
    

20.12 lavfi

Libavfilter输入虚拟设备。

此输入设备从libavfilter过滤图的打开输出端读取数据。

对于每个过滤图打开的输出,输入设备将创建一个相应的流,该流映射到生成的输出。graph.

20.12.1 选项

graph

指定用作输入的过滤图。每个视频打开输出必须由形式为"out"的唯一字符串标记。", 其中是从0开始的数字,对应于设备生成的映射输入流。 第一个未标记的输出会自动分配为"out0"标签,但其他所有的都需要显式指定。

输出标签可以附加后缀"+subcc"以创建一个附带关闭字幕数据包的额外流(实验性;目前仅适用于EIA-608 / CEA-708)。 subcc流是在所有普通流之后按相应流的顺序创建的。 例如,如果有"out19+subcc","out7+subcc"以及最高到"out42",那么流#43是流#7的subcc,而流#44是流#19的subcc。

如果未指定,默认为输入设备指定的文件名。

graph_file

设置要读取并传送到其他过滤器的过滤器图的文件名。过滤器图的语法与通过选项指定的语法相同。.

dumpgraph

将图形转储到标准错误输出。

20.12.2 示例

  • 创建一个彩色视频流并使用播放它ffplay:
    ffplay -f lavfi -graph "color=c=pink [out0]" dummy
    
  • 与前一个示例类似,但使用带文件名的过滤器图描述,并省略"out0"标签:
    ffplay -f lavfi color=c=pink
    
  • 创建三个不同的视频测试过滤器源并播放它们:
    ffplay -f lavfi -graph "testsrc [out0]; testsrc,hflip [out1]; testsrc,negate [out2]" test3
    
  • 使用amovie源从文件中读取音频流并用播放它ffplay:
    ffplay -f lavfi "amovie=test.wav"
    
  • 读取音频流和视频流并用播放它ffplay:
    ffplay -f lavfi "movie=test.avi[out0];amovie=test.wav[out1]"
    
  • 将解码的帧转储为图像,并将闭路字幕转储为RCWT备份:
    ffmpeg -f lavfi -i "movie=test.ts[out0+subcc]" -map v frame%08d.png -map s -c copy -f rcwt subcc.bin
    

20.13 libcdio

基于libcdio的音频CD输入设备。

要在配置期间启用此输入设备,您需要在系统上安装libcdio。需要使用配置选项--enable-libcdio.

此设备允许从音频CD进行播放和抓取。

例如,用ffmpeg复制整个音频CD,/dev/sr0,您可以运行以下命令:

ffmpeg -f libcdio -i /dev/sr0 cd.wav

20.13.1 选项

speed

设置驱动器读取速度。默认值为0。

速度以CD-ROM速度单位指定。速度是通过libcdiocdio_cddap_speed_set函数设置的。在许多CD-ROM驱动器上,指定过大的值会导致使用最快速度。

paranoia_mode

设置偏执恢复模式标志。可以接受以下值之一:

disable
verify
overlap
neverskip
full

默认值为‘disable’.

有关可用恢复模式的更多信息,请查阅paranoia项目文档。

20.14 libdc1394

基于libdc1394和libraw1394的IIDC1394输入设备。

需要使用配置选项--enable-libdc1394.

20.14.1 选项

framerate

设置帧速率。默认值为ntsc,对应于帧速率为30000/1001.

pixel_format

选择像素格式。默认值为uyvy422.

video_size

设置视频大小,格式为字符串,如640x480hd720。 默认值为qvga.

20.15 openal

OpenAL输入设备提供在具有运行OpenAL 1.1实现的所有系统上的音频捕获。

要在配置期间启用此输入设备,您需要在系统上安装OpenAL头文件和库,并需要使用配置FFmpeg--enable-openal.

OpenAL头文件和库应作为您的OpenAL实现的一部分或作为额外下载(SDK)提供。根据您的安装,您可能需要通过--extra-cflags--extra-ldflags指定附加标志,允许构建系统定位到OpenAL头文件和库。

以下是OpenAL实现的一个不完整列表:

Creative

官方的Windows实现,提供具有支持设备的硬件加速和软件回退。 参见http://openal.org/.

OpenAL Soft

便携的、开源的(LGPL)软件实现。包括Windows、Linux、Solaris和BSD操作系统上最常见的声音API的后端。 参见http://kcat.strangesoft.net/openal.html.

Apple

OpenAL是Core Audio的一部分,这是Mac OS X官方音频接口。 参见http://developer.apple.com/technologies/mac/audio-and-video.html

此设备允许通过OpenAL捕获来自音频输入设备的音频。

您需要在提供的文件名中指定要捕获的设备名称。如果提供空字符串,将自动选择默认设备。您可以使用选项获取支持设备的列表list_devices.

20.15.1 选项

channels

设置捕获音频中的声道数。目前仅支持以下值1(单声道)和2(立体声)。 默认值为2.

sample_size

设置捕获音频的样本大小(以位为单位)。目前仅支持以下值816。默认值为16.

sample_rate

设置捕获音频的采样率(以Hz为单位)。 默认值为44.1k.

list_devices

如果设置为true,打印设备列表并退出。 默认值为false.

20.15.2 示例

打印支持的OpenAL设备列表并退出:

$ ffmpeg -list_devices true -f openal -i dummy out.ogg

从OpenAL设备捕获DR-BT101 via PulseAudio:

$ ffmpeg -f openal -i 'DR-BT101 via PulseAudio' out.ogg

从默认设备捕获(注意文件名为空字符串”):

$ ffmpeg -f openal -i '' out.ogg

同时从两个设备捕获,写入两个不同的文件, 在同一个ffmpeg命令下:

$ ffmpeg -f openal -i 'DR-BT101 via PulseAudio' out1.ogg -f openal -i 'ALSA Default' out2.ogg

注意:并非所有OpenAL实现都支持多输入设备同时捕获——如果上述操作不起作用,请尝试最新的OpenAL Soft。

20.16 oss

Open Sound System输入设备。

提供给输入设备的文件名是表示OSS输入设备的设备节点,通常设置为/dev/dsp.

例如,从/dev/dsp抓取时,使用ffmpeg用以下命令:

ffmpeg -f oss -i /dev/dsp /tmp/oss.wav

有关OSS的更多信息,请参见:http://manuals.opensound.com/usersguide/dsp.html

20.16.1 选项

sample_rate

以Hz为单位设置采样率。默认值为48000。

channels

设置声道数。默认值为2。

20.17 pulse

PulseAudio输入设备。

要启用此输出设备,您需要使用以下命令配置FFmpeg--enable-libpulse.

提供给输入设备的文件名是源设备或字符串"default"。

您可以运行以下命令来列出PulseAudio源设备及其属性pactl list sources.

有关PulseAudio的更多信息,请参见http://www.pulseaudio.org.

20.17.1 选项

server

连接到通过IP地址指定的特定PulseAudio服务器。 当未提供时将使用默认服务器。

name

指定PulseAudio在显示活跃客户端时使用的应用程序名称, 默认情况下为LIBAVFORMAT_IDENT字符串。

stream_name

指定PulseAudio在显示活跃流时使用的流名称, 默认情况下为"record"。

sample_rate

以Hz为单位指定采样率,默认使用48kHz。

channels

指定使用的声道,默认设置为2(立体声)。

frame_size

此选项不起作用,已被弃用。

fragment_size

指定缓冲区中最小缓冲片段的大小(以字节为单位), 它会影响音频延迟。默认设置为50毫秒的数据量。

wallclock

使用当前时间设置初始PTS。默认值为1。

20.17.2 示例

从默认设备录制流:

ffmpeg -f pulse -i default /tmp/pulse.wav

20.18 sndio

sndio输入设备。

要在配置期间启用此输入设备,您需要在系统上安装libsndio。

提供给输入设备的文件名是表示sndio输入设备的设备节点,通常设置为/dev/audio0.

例如,从/dev/audio0抓取时,使用ffmpeg用以下命令:

ffmpeg -f sndio -i /dev/audio0 /tmp/oss.wav

20.18.1 选项

sample_rate

以Hz为单位设置采样率。默认值为48000。

channels

设置声道数。默认值为2。

20.19 video4linux2, v4l2

Video4Linux2输入视频设备。

"v4l2"可用作"video4linux2"的别名。

如果FFmpeg是通过v4l-utils支持(使用以下命令)构建的--enable-libv4l2配置选项,它可以与-use_libv4l2输入设备选项一起使用。

要抓取的设备名称是一个设备节点文件,通常Linux系统会在设备(如USB网络摄像头)连接到系统时自动创建该节点,其名称类似于/dev/videoN,其中N是与设备相关联的一个数字。

Video4Linux2设备通常支持一组有限的宽度x高度的尺寸和帧速率。您可以使用以下命令检查支持的内容-list_formats all获取Video4Linux2设备的支持信息。 某些设备,例如电视卡,支持一个或多个标准。可以使用以下命令列出所有支持的标准-list_standards all.

时间戳的时间基是1微秒。根据内核版本和配置,时间戳可能来源于实时时钟(起点为Unix Epoch)或单调时钟(起点通常为开机时间,不受NTP或手动更改时钟的影响)。-timestamps abs-ts abs选项可用于强制转换为实时时钟。

以下是video4linux2设备的一些使用示例,与ffmpegffplay:

  • 列出Video4Linux2设备的支持格式:
    ffplay -f video4linux2 -list_formats all /dev/video0
    
  • 抓取并显示Video4Linux2设备的输入:
    ffplay -f video4linux2 -framerate 30 -video_size hd720 /dev/video0
    
  • 抓取并记录Video4Linux2设备的输入,同时保持帧速率和尺寸与之前设置相同:
    ffmpeg -f video4linux2 -input_format mjpeg -i /dev/video0 out.mpeg
    

有关Video4Linux的更多信息,请查看http://linuxtv.org/.

20.19.1 选项

standard

设置标准。必须是支持的标准的名称。要获取支持的标准列表,请使用list_standards选项。

channel

设置输入通道号。默认值为-1,这表示使用先前选择的通道。

video_size

设置视频帧尺寸。参数必须是形式为宽度x高度或有效的尺寸缩写的字符串。

pixel_format

选择像素格式(仅对原始视频输入有效)。

input_format

设置首选像素格式(用于原始视频)或编解码器名称。 此选项允许选择输入格式(当有多个可用时)。

framerate

设置首选视频帧速率。

list_formats

列出可用格式(支持的像素格式、编解码器和帧尺寸)并退出。

可用值为:

all

显示所有可用的(压缩和未压缩的)格式。

raw

仅显示原始视频(未压缩的)格式。

compressed

仅显示压缩格式。

list_standards

列出支持的标准并退出。

可用值为:

all

显示所有支持的标准。

timestamps, ts

设置抓取帧的时间戳类型。

可用值为:

default

使用内核提供的时间戳。

abs

使用绝对时间戳(挂钟时间)。

mono2abs

强制从单调时间戳转换为绝对时间戳。

默认值为default.

use_libv4l2

使用libv4l2(v4l-utils)转换功能。默认值为0。

20.20 vfwcap

VfW(Windows视频)捕获输入设备。

作为输入传递的文件名是捕获驱动程序编号,从0到9。不带用作文件名时将打印驱动程序列表。 其他任何文件名都会被解释为设备编号0。

20.20.1 选项

video_size

设置视频帧大小。

framerate

设置抓取帧速率。默认值为ntsc,对应的帧速率为30000/1001.

20.21 x11grab

X11视频输入设备。

要在配置期间启用此输入设备,您需要在系统上安装libxcb。系统会在配置期间自动检测。

此设备允许抓取X11显示器的一个区域。

作为输入传递的文件名具有以下语法:

[主机名]:显示器编号.屏幕编号[+x偏移,y偏移]

主机名:显示器编号.屏幕编号指定要抓取的屏幕的X11显示器名称。主机名可以省略,默认值为"localhost"。环境变量DISPLAY包含显示器名称的默认值。

x偏移y偏移指定抓取区域相对于X11屏幕左上角边界的偏移值。默认值为0。

请查看X11文档(例如man X)获取更多详细信息。

使用xdpyinfo程序来获取有关您的 X11 显示器属性的基本信息(例如,可以用 grep 搜索“name”或“dimensions”)。

例如抓取自:0.0使用ffmpeg:

ffmpeg -f x11grab -framerate 25 -video_size cif -i :0.0 out.mpg

在位置抓取10,20:

ffmpeg -f x11grab -framerate 25 -video_size cif -i :0.0+10,20 out.mpg

20.21.1 选项

select_region

指定是否通过指针图形选择抓取区域。值为1将提示用户通过点击和拖动以图形方式选择抓取区域。单击且不拖动将选择整个屏幕。具有零宽度或高度的区域也将选择整个屏幕。此选项会覆盖video_size, grab_xgrab_y选项。默认值是0.

draw_mouse

指定是否绘制鼠标指针。值为0指定不要绘制指针。默认值为1.

follow_mouse

使抓取区域跟随鼠标。参数可以是centered或指定的像素数量PIXELS.

当指定为“centered”时,抓取区域跟随鼠标指针并将指针保持在区域中心;否则,只有当鼠标指针接近区域边缘PIXELS(大于零)时,区域才会跟随。

例如:

ffmpeg -f x11grab -follow_mouse centered -framerate 25 -video_size cif -i :0.0 out.mpg

仅在鼠标指针接近边缘100像素时跟随:

ffmpeg -f x11grab -follow_mouse 100 -framerate 25 -video_size cif -i :0.0 out.mpg
framerate

设置抓取的帧率。默认值为ntsc对应的帧率为30000/1001.

show_region

在屏幕上显示抓取的区域。

如果show_region指定为1,则抓取的区域将在屏幕上显示出来。使用此选项时,如果仅抓取了屏幕的一部分,很容易知道正在抓取的内容。

region_border

设置区域边框厚度,如果-show_region 1已使用。 范围是1到128,默认值是3(仅适用于基于 XCB 的 x11grab)。

例如:

ffmpeg -f x11grab -show_region 1 -framerate 25 -video_size cif -i :0.0+10,20 out.mpg

使用follow_mouse:

ffmpeg -f x11grab -follow_mouse centered -show_region 1 -framerate 25 -video_size cif -i :0.0 out.mpg
window_id

抓取此窗口,而不是整个屏幕。默认值为 0,表示映射到整个屏幕(根窗口)。

可以使用xwininfo程序找到窗口的 ID,可能需要使用 -tree 和 -root 选项。

如果窗口后来扩大,新区域不会被记录。视频在窗口关闭、取消映射(即图标化)或缩小到比视频尺寸小的情况下结束(默认值为初始窗口尺寸)。

此选项禁用选项follow_mouseselect_region.

video_size

设置视频帧的尺寸。默认值是桌面或窗口的全尺寸。

grab_x
grab_y

设置抓取区域的坐标。它们从 X11 窗口的左上角偏移,分别对应x_offsety_offset参数在设备名称中。两个选项的默认值都是0。

21 重采样器选项

音频重采样器支持以下指定选项。

可以通过指定 -选项 在 FFmpeg 工具中设置,选项=用于 aresample 过滤器, 或通过在SwrContext选项中显式设置值或使用libavutil/opt.hAPI 以编程方式使用。

uchl, used_chlayout

设置输入通道布局。默认值未设置。此选项仅用于特殊重映射。

isr, in_sample_rate

设置输入采样率。默认值为0。

osr, out_sample_rate

设置输出采样率。默认值为0。

isf, in_sample_fmt

指定输入采样格式。默认值为none.

osf, out_sample_fmt

指定输出采样格式。默认值为none.

tsf, internal_sample_fmt

设置内部采样格式。默认值为none。 未显式设置时,将自动选择。

ichl, in_chlayout
ochl, out_chlayout

设置输入/输出通道布局。

请参见(ffmpeg-utils)ffmpeg-utils(1)手册中的通道布局部分查看所需语法。

clev, center_mix_level

设置中心混合级别。它是一个以分贝表达的值,必须在[-32,32]区间内。

slev, surround_mix_level

设置环绕混合级别。它是一个以分贝表达的值,必须在[-32,32]区间内。

lfe_mix_level

设置 LFE (超低音)混合进入非 LFE级别。当有 LFE 输入但无 LFE 输出时使用。它是一个以分贝表达的值,必须在[-32,32]区间内。

rmvol, rematrix_volume

设置重矩阵音量。默认值为 1.0。

rematrix_maxval

设置重矩阵的最大输出值。 可以用于防止裁剪或防止音量减少。 值为 1.0 可防止裁剪。

flags, swr_flags

设置转换器使用的标志。默认值为 0。

它支持以下单个标志:

res

强制重采样,即使输入和输出的采样率匹配,仍强制使用重采样。

dither_scale

设置抖动比例。默认值为 1。

dither_method

设置抖动方法。默认值为 0。

支持的值:

rectangular

选择矩形抖动

triangular

选择三角形抖动

triangular_hp

选择高通过滤的三角形抖动

lipshitz

选择 Lipshitz 噪声整形抖动。

shibata

选择 Shibata 噪声整形抖动。

low_shibata

选择低 Shibata 噪声整形抖动。

high_shibata

选择高 Shibata 噪声整形抖动。

f_weighted

选择 f 加权噪声整形抖动

modified_e_weighted

选择修改后的 e 加权噪声整形抖动

improved_e_weighted

选择改进的 e 加权噪声整形抖动

resampler

设置重采样引擎。默认值为 swr。

支持的值:

swr

选择本机 SW 重采样器;过滤器选项 precision 和 cheby 在这种情况下不适用。

soxr

选择 SoX 重采样器(如适用);补偿,和过滤器选项 filter_size、phase_shift、exact_rational、filter_type 和 kaiser_beta 不适用。

filter_size

仅用于 swr,设置重采样过滤器大小,默认值是32。

phase_shift

仅用于 swr,设置重采样相移,默认值是10,范围必须在[0,30]内。

linear_interp

启用时使用线性插值(默认)。禁用它如果您希望在 exact_rational 失败时保持速度而不是质量。

exact_rational

仅用于 swr,启用时尝试根据输入和输出采样率使用准确的 phase_count。当 phase_count 大于1 << phase_shift时,phase_count 将回退为1 << phase_shift。默认值为启用。

cutoff

设置截止频率比例(swr:6dB点;soxr:0dB点);必须是0到1之间的浮点值。默认值是 swr 为 0.97,而 soxr 为 0.91(使用采样率为 44100 时,可保持整个音频频带至 20kHz)。

precision

仅用于 soxr,在高精度到位比特默认值为20的情况下,该重采样信号将被计算默认值为建设建议适合终点比深度。值为28时传输更为高质量,这是S

cheby

仅用于 soxr,选择无通道卷积无(Chebyshev)&确切可以效果(十真)。过滤器选项精度无。

async

仅用于 swr,通过拉伸、压缩、填充和修剪以简单方式进行1元音频同步至时间戳。设置为1时将启用填充和修剪,较大的值表示每秒数据可以拉伸或压缩的最大数量。 默认值为0,因此不应用补偿以使样本匹配音频时间戳。

first_pts

仅用于 swr,假设第一个 pts 应该是此值。时间单位是1 / 采样率。 这允许在流开始时进行填充/修剪。默认情况下,不对第一帧的预期 pts 做任何假设,因此不会进行填充或修剪。 例如,如果音频流在视频流后开始,可以设置为0在开头填充静音或者是修剪由于编码器延迟产生负 pts 的样本。

min_comp

仅用于 swr,设置时间戳与音频数据之间的最小时间差(秒)以触发数据的拉伸/压缩/填充或修剪,使其与时间戳匹配。默认值是min_comp = FLT_MAX).

min_hard_comp

仅用于 swr,设置时间戳与音频数据之间的最小时间差(秒)以触发添加/删除样本,使其与时间戳匹配。此选项实际上是选择硬(trim/fill)和软(squeeze/stretch)补偿之间的阈值。所有补偿默认通过min_comp禁用。 默认值是 0.1。

comp_duration

仅用于 swr,设置拉伸/压缩数据以使其符合时间戳的持续时间(秒)。必须是非负浮点值,默认值是 1.0。

max_soft_comp

仅用于 swr,设置数据拉伸/压缩以使其匹配时间戳的最大因子。必须是非负双精度浮点值,默认值是 0。

matrix_encoding

选择矩阵化的立体声编码。

它接受以下值:

none

选择无

dolby

选择 Dolby

dplii

选择 Dolby Pro Logic II

默认值是none.

filter_type

仅用于 swr,选择重采样滤波器类型。这只影响重采样操作。

它接受以下值:

cubic

选择立方

blackman_nuttall

选择 Blackman Nuttall 窗口化 sinc

kaiser

选择 Kaiser 窗口化 sinc

kaiser_beta

仅用于 swr,设置 Kaiser 窗口 beta 值。必须是在[2,16]区间内的双精度浮点值,默认值是 9。

output_sample_bits

仅用于 swr,设置用于抖动的输出样本位数。必须是区间[0,64]内的整数,默认值是0,表示未使用。

22 缩放器选项

视频缩放器支持以下指定选项。

可以通过指定 -选项 在FFmpeg工具中设置,并有一些仅限API的特殊情况例外。 对于编程用途,它们可以在SwsContext选项中显式设置或通过libavutil/opt.hAPI来设置。

sws_flags

设置缩放器标志。这也用于设置缩放算法。只能选择一种算法。默认值是 ‘bicubic’.

它接受以下值:

fast_bilinear

选择快速双线性缩放算法。

bilinear

选择双线性缩放算法。

bicubic

选择双三次缩放算法。

experimental

选择实验性缩放算法。

neighbor

选择最近邻重缩放算法。

area

选择平均区域重缩放算法。

bicublin

选择用于亮度组件的双三次缩放算法,彩色度组件使用双线性方法。

gauss

选择高斯重缩放算法。

sinc

选择 sinc 重缩放算法。

lanczos

选择 Lanczos 重缩放算法。默认宽度(alpha)是 3,可以通过设置param0.

spline

选择自然双三次样条重缩放算法。

print_info

启用打印/调试日志。

accurate_rnd

启用精确舍入。

full_chroma_int

启用完整的色度插值。

full_chroma_inp

选择完整的色度输入。

bitexact

启用比特精确输出。

srcw (仅限API)

设置源宽度。

srch (仅限API)

设置源高度。

dstw (仅限API)

设置目标宽度。

dsth (仅限API)

设置目标高度。

src_format (仅限API)

设置源像素格式(必须表示为整数)。

dst_format (仅限API)

设置目标像素格式(必须表示为整数)。

src_range (布尔值)

如果值设置为1,表示源为全范围。默认值为0,表示源为限制范围。

dst_range (布尔值)

如果值设置为1,启用目标的全范围。默认值是0,启用限制范围。

param0, param1

设置缩放算法参数。指定的值是一些缩放算法的特定值,其他算法会忽略。指定的值应为浮点数。

sws_dither

设置抖动算法。接受以下值之一。 默认值是 ‘auto’.

auto

自动选择

none

无抖动

bayer

拜耳抖动

ed

误差扩散抖动

a_dither

基于加法的数学抖动

x_dither

算术抖动,基于异或操作(比a_dither更加随机/较少明显的图案)。

alphablend

设置当输入具有透明度但输出不具有透明度时使用的Alpha混合方式。 默认值是‘none’.

uniform_color

混合到统一背景颜色上

checkerboard

混合到棋盘格上

none

无混合

23 滤镜简介

FFmpeg中的滤镜通过libavfilter库启用。

在libavfilter中,一个滤镜可以有多个输入和多个输出。 为了说明可能实现哪些功能,我们考虑以下滤镜图。

                [main]
input --> split ---------------------> overlay --> output
            |                             ^
            |[tmp]                  [flip]|
            +-----> crop --> vflip -------+

这个滤镜图将输入流分为两个流,然后将一个流通过裁剪滤镜和垂直翻转滤镜,最终在顶部将其与另一个流合并在一起。您可以使用以下命令实现:

ffmpeg -i INPUT -vf "split [main][tmp]; [tmp] crop=iw:ih/2:0:0, vflip [flip]; [main][flip] overlay=0:H/2" OUTPUT

结果将是视频的上半部分镜像到输出视频的下半部分。

位于同一线性链中的滤镜由逗号分隔,而不同线性链的滤镜由分号分隔。在我们的示例中,crop,vflip在一个线性链中,splitoverlay分别在另一个链中。线性链连接的点通过方括号标记。在示例中,分离滤镜生成的两个输出与标签[main][tmp].

相关联。发送到split的第二个输出,标签为[tmp]的流会经过crop滤镜(裁剪掉视频的下半部分),然后垂直翻转。overlay滤镜将来自分离滤镜的第一个未改变的输出(标记为[main]的输出)与crop,vflip滤镜链生成的输出叠加在它的下半部分。

一些滤镜需要输入参数列表:这些参数在滤镜名称后通过等号指定,并用冒号分隔。

还存在所谓的源滤镜不需要音频/视频输入,和汇滤镜不需要音频/视频输出。

24 graph2dot

FFmpeg中的graph2dot程序可以用于解析滤镜图描述并输出一个以dot语言表示的对应文本表示。tools directory can be used to parse a filtergraph description and issue a corresponding textual representation in the dot language.

运行以下命令:

graph2dot -h

来查看如何使用graph2dot.

然后可以将dot语言描述传递给dot程序(来自graphviz程序套件),以获取滤镜图的图形化表示。

例如以下命令序列:

echo GRAPH_DESCRIPTION | \
tools/graph2dot -o graph.tmp && \
dot -Tpng graph.tmp -o graph.png && \
display graph.png

可用来创建并显示由GRAPH_DESCRIPTION字符串描述的图像。注意该字符串必须是 一个完整的自包含图,其中明确定义了它的输入和输出。 例如,如果您的命令行是以下形式:

ffmpeg -i infile -vf scale=640:360 outfile

您的GRAPH_DESCRIPTION字符串需要是以下形式:

nullsrc,scale=640:360,nullsink

您可能还需要设置nullsrc参数并添加一个format滤镜以模拟一个特定的输入文件。

25 滤镜图描述

滤镜图是连接滤镜的有向图。它可以包含循环,并且可以在一对滤镜之间存在多条链接。每个链接的一侧连接到一个滤镜的输入插口,该链接从此滤镜获取输入;另一侧连接到一个接受其输出的滤镜的输出插口。

滤镜图中的每个滤镜是应用中注册的滤镜类的一个实例,该类定义了滤镜的功能,以及其输入和输出插口的数量。

一个没有输入插口的滤镜称为“源”,没有输出插口的滤镜称为“汇”。

25.1 滤镜图语法

滤镜图有一个文本形式的表示,该表示通过-filter/-vf/-af-filter_complex选项在ffmpeg-vf/-af中被识别,ffplay,并且通过定义在avfilter_graph_parse_ptr()中的函数进行识别。libavfilter/avfilter.h.

滤镜链由一系列连接的滤镜组成,每个滤镜都连接到序列中前一个滤镜。滤镜链通过一个逗号分隔的滤镜描述列表表示。

滤镜图由一系列滤镜链组成。滤镜链序列由一个分号分隔的滤镜链描述列表表示。

一个滤镜由以下格式的字符串表示: [in_link_1]...[in_link_N]filter_name@id=arguments[out_link_1]...[out_link_M]

filter_name是描述的滤镜所属于的滤镜类的名称,必须是程序中注册的滤镜类之一的名称,之后可以可选地接上"@id"。 滤镜类的名称可以可选地后跟一个"=arguments".

arguments是一个字符串,包含初始化滤镜实例所需的参数。它可以具有以下两种形式之一:

  • 一个由‘:’分隔的key=value键值对列表。
  • 一个由‘:’分隔的value值列表。在这种情况下,键会被假设为按声明顺序的选项名称。例如fade滤镜按以下顺序声明了三个选项 –type, start_framenb_frames。那么参数列表in:0:30表示值in分配给选项type, 0start_frame分配给30nb_frames.
  • 分配给value and long key=value pairs. The direct value必须出现在key=value键值对之前,并遵循上一点的约束顺序。以下key=value键值对可以以任意顺序设置。

如果选项值本身是一个项目列表(例如format滤镜接受像素格式列表),则列表中的项目通常用‘|’.

参数列表可以使用字符‘'’作为开始和结束标记,并使用字符‘\’对引用文本内的字符进行转义;否则,当遇到下一个特殊字符(属于集合‘[]=;,’)时,参数字符串被认为已结束。

ffmpegCLI工具中实现的一种特殊语法允许从文件加载选项值。这是通过在选项名称之前添加斜杠’/‘来完成的,然后提供的值被解释为从中加载实际值的路径。例如

ffmpeg -i <INPUT> -vf drawtext=/text=/tmp/some_text <OUTPUT>

将从/tmp/some_text加载要绘制的文本。希望实现类似功能的API用户应使用avfilter_graph_segment_*()函数与自定义IO代码一起使用。

滤镜的名称和参数可以选择性地出现在链接标签列表之前和之后。 链接标签允许用户命名一个链接并将其关联到滤镜的输出或输入插口。前面的标签in_link_1 ... in_link_N与滤镜的输入插口相关联,后续标签out_link_1 ... out_link_M与输出插口相关联。

当在滤镜图中发现两个具有相同名称的链接标签时,会在相应的输入和输出插口之间创建链接。

如果输出插口未标记,它会默认连接到滤镜链中下一个滤镜的第一个未标记输入插口。例如,在滤镜链

nullsrc, split[L1], [L2]overlay, nullsink

分离滤镜实例有两个输出插口,叠加滤镜实例有两个输入插口。分离滤镜的第一个输出插口标记为"L1",叠加滤镜的第一个输入插口标记为"L2",分离滤镜的第二个输出插口连接到叠加滤镜的第二个输入插口,两个插口都没有标记。

在滤镜描述中,如果第一个滤镜的输入标签未指定,则假定为"in";如果最后一个滤镜的输出标签未指定,则假定为"out"。

在完整滤镜链中,所有未标记的滤镜输入和输出插口必须连接。滤镜图被认为是有效的,如果所有滤镜链中的所有滤镜的输入和输出插口都被连接起来。

滤镜图规范中的分隔标记间的前后空格(空格、制表符或换行符)会被忽略。这意味着滤镜图可以使用空行和空格来改善可读性。

例如,滤镜图:

testsrc,split[L1],hflip[L2];[L1][L2] hstack

可以表示为:

testsrc,
split [L1], hflip [L2];

[L1][L2] hstack

Libavfilter会在需要格式转换时自动插入scale滤镜。可以通过在滤镜图描述前添加sws_flags=flags;来指定这些自动插入的缩放器的swscale标志。

以下是滤镜图语法的BNF描述:

NAME             ::= sequence of alphanumeric characters and '_'
FILTER_NAME      ::= NAME["@"NAME]
LINKLABEL        ::= "[" NAME "]"
LINKLABELS       ::= LINKLABEL [LINKLABELS]
FILTER_ARGUMENTS ::= sequence of chars (possibly quoted)
FILTER           ::= [LINKLABELS] FILTER_NAME ["=" FILTER_ARGUMENTS] [LINKLABELS]
FILTERCHAIN      ::= FILTER [,FILTERCHAIN]
FILTERGRAPH      ::= [sws_flags=flags;] FILTERCHAIN [;FILTERGRAPH]

25.2 滤镜图转义注意事项

滤镜图描述组成涉及几个层次的转义。请参阅(ffmpeg-utils)的ffmpeg-utils(1)手册中“引用和转义”部分以了解所采用的转义过程的更多信息。

第一层转义影响每个滤镜选项值的内容,其中可能包含特殊字符:用于分隔值,或一个转义字符\'.

第二层转义影响整个滤镜描述,其中可能包含转义字符\'或滤镜图描述使用的特殊字符[],;

最后,当在shell命令行中指定滤镜图时,需要为其中包含的shell特殊字符执行第三层转义。

例如,考虑以下嵌入在drawtext滤镜描述中的字符串text值:

this is a 'string': may contain one, or more, special characters

该字符串包含'特殊转义字符,以及:特殊字符,因此它需要按以下方式转义:

text=this is a \'string\'\: may contain one, or more, special characters

当在滤镜图描述中嵌入滤镜描述时,需要第二层转义来转义所有滤镜图的特殊字符。因此,上述示例变为:

drawtext=text=this is a \\\'string\\\'\\: may contain one\, or more\, special characters

(注意,除了转义\'特殊字符,还需要转义,)。

最后,当在shell命令中写入滤镜图描述时,还需要额外的转义级别,这取决于所采用的shell的转义规则。例如,假设\是特殊字符,需要通过另一个\来转义,上述字符串最终结果为:

-vf "drawtext=text=this is a \\\\\\'string\\\\\\'\\\\: may contain one\\, or more\\, special characters"

为了在接受滤镜规范作为输入的命令行工具中避免繁琐的转义,建议避免在shell中直接包含滤镜或选项规范。

例如,在使用drawtext滤镜时,您可能更倾向于使用textfile选项代替text来指定要渲染的文本。

26 时间线编辑

一些滤镜支持通用的enable选项。对于支持时间线编辑的滤镜,该选项可以设置为一个表达式,并在将帧发送到滤镜之前进行评估。如果评估结果为非零,则滤镜将被启用,否则帧将保持不变地发送到滤镜图中的下一个滤镜。

该表达式接受以下值:

t

时间戳,以秒为单位,如果输入时间戳未知,则为NAN

n

输入帧的连续编号,从0开始

pos

输入帧在文件中的位置,如果未知则为 NAN;已弃用,请勿使用

w
h

如果是视频,则为输入帧的宽度和高度

此外,这些滤镜支持一个enable可用于重新定义表达式的命令。

与任何其他过滤选项一样,enable选项遵循相同的规则。

例如,要从 10 秒到 3 分钟启用模糊滤镜(smartblur),以及从第 3 秒开始启动一个curves滤镜:

smartblur = enable='between(t,10,3*60)',
curves    = enable='gte(t,3)' : preset=cross_process

查看哪些滤镜支持时间线。ffmpeg -filters to view which filters have timeline support.

27 通过命令在运行时更改选项

某些选项可以在滤镜操作期间通过命令更改。这些选项在输出中标记为“T”。ffmpeg -h filter=<name of filter>命令的名称是选项的名称,参数是新的值。

28 对具有多个输入的滤镜的选项(帧同步)

一些具有多个输入的滤镜支持一组通用选项。这些选项只能通过名称设置,而不能使用简写格式。

eof_action

遇到辅助输入 EOF 时采取的操作;它接受以下值之一:

repeat

重复最后一帧(默认值)。

endall

结束两个流。

pass

通过主输入流。

shortest

如果设置为 1,则当最短输入终止时,强制输出终止。默认值为 0。

repeatlast

如果设置为 1,则强制滤镜将辅助流的最后一帧扩展到主流结束。设置为 0 时禁用此行为。默认值为 1。

ts_sync_mode

根据辅助输入时间戳同步流的严格程度;它接受以下值之一:

default

辅助输入中与主输入帧时间戳最近且小于或等于的帧。

nearest

辅助输入中与主输入帧时间戳绝对最近的帧。

29 音频滤镜

配置 FFmpeg 构建时,可通过--disable-filters禁用任何现有滤镜。 配置输出会显示构建中包含的音频滤镜。

以下是当前可用音频滤镜的描述。

29.1 aap

使用第二音频流对第一音频流应用仿射投影算法。

此自适应滤镜用于基于多个输入音频样本估算未知音频。 仿射投影算法能够在计算复杂性与收敛速度之间制造权衡。

以下是接受的选项描述。

order

设置滤镜阶数。

projection

设置投影阶数。

mu

设置滤镜 mu。

delta

设置内部分辨率矩阵初始化的系数。

out_mode

设置滤镜输出样本。它接受以下值:

i

通过第一个输入。

d

通过第二个输入。

o

通过目标音频、第二个输入与误差信号估算的差异。

n

通过输入音频、第一音频与误差信号估算的差异。

e

通过估算的误差信号样本。

默认值为o.

precision

设置在处理样本时使用的精度。

auto

根据其他滤镜自动选择内部样本格式。

float

始终使用单浮点精度样本格式。

double

始终使用双浮点精度样本格式。

29.2 acompressor

压缩器主要用于减少信号的动态范围。 尤其是现代音乐大多以高比例压缩以提高整体响度。 这样可以引起听众的最大关注,增强声音并赋予曲目更多的“力量”。 但如果信号过度压缩,可能会显得沉闷或“死气沉沉”, 或者可能会开始“泵动”(这可以是强大的效果,但也可能完全破坏音轨)。 正确的压缩是实现专业声音的关键,也是混音和母带制作的高级艺术。 由于其复杂的设置,可能需要很长时间才能对这种效果获得正确的感觉。

压缩通过检测高于选定水平的音量来完成threshold并用设置的因子进行分配ratio。 例如,如果您将阈值设置为 -12dB,而信号达到 -6dB, 设置的比例为 2:1,结果信号为 -9dB。 由于对信号的精确操作会导致波形失真,因此可以随着时间调整减少量。 这是通过设置“攻击时间”和“释放时间”完成的。attack确定在任何减少发生之前信号要高于阈值的时间长度,release设置信号必须低于阈值的时间以减少再次减少时间。 短于攻击时间的信号将保持不变。 信号的总减少量可以通过makeup设置之后进行补偿。 例如,将信号峰值压缩 6dB,并将补偿提高到此水平, 其结果是信号比源信号响度增加了一倍。 为使压缩的入口更加柔和,knee可以在选定的分贝范围内平滑阈值的硬边界。

滤镜接受以下选项:

level_in

设置输入增益。默认值为 1。范围在 0.015625 到 64 之间。

mode

设置压缩器操作模式。可以是upwarddownward。 默认是downward.

threshold

如果流的信号量高于此级别,它将对增益减少产生影响。 默认值为 0.125,范围在 0.00097563 与 1 之间。

ratio

设置信号减少的比例。1:2 意味着如果水平上升到阈值以上 4dB, 减少后它将为空阈值以上 2dB。 默认值为 2,范围在 1 到 20 之间。

attack

信号在开始增益减少之前需要上升到阈值以上的时长。 默认值为 20。范围是 0.01 到 2000 毫秒。

release

信号在减少再次减少之前需要低于阈值的时间长度。 默认值为 250。范围是 0.01 到 9000 毫秒。

makeup

设置处理后对信号的增强量。 默认值为 1。范围是 1 到 64。

knee

弯曲阈值周围的锋利边缘以更柔和地进入增益减少。 默认值为 2.82843,范围是 1 到 8。

link

选择是否average调整输入流的所有通道之间的平衡,或者通过更响亮的(maximum)输入流的通道影响减少。 默认值为average.

detection

peak情况下是确切的信号还是在rms情况下是 RMS 信号。 默认值为rms通常较平滑。

mix

输出信号中使用压缩信号的比例。 默认值是 1,范围在 0 到 1。

29.2.1 命令

此滤镜支持以上所有选项作为命令.

29.3 acontrast

简单的音频动态范围压缩/扩展滤镜。

滤镜接受以下选项:

contrast

设置对比度。默认值是 33。允许范围在 0 到 100 之间。

29.4 acopy

将输入音源原样复制到输出。这主要用于测试目的。

29.5 acrossfade

将一个输入音频流过渡到另一个输入音频流。 过渡发生在第一流的指定时长内。

滤镜接受以下选项:

nb_samples, ns

指定交叉淡化效果持续的样本数。 在交叉淡化结束时,第一个输入音频将完全静音。 默认值是 44100。

duration, d

指定交叉淡化效果的持续时间。参见(ffmpeg-utils)ffmpeg-utils(1) 手册中的时间持续时间部分接受的语法。 默认情况下持续时间由nb_samples确定。 如果设置此选项,则使用此选项代替nb_samples.

overlap, o

第一流结束时是否与第二流开始重叠。默认启用。

curve1

设置第一流交叉淡化过渡的曲线。

curve2

设置第二流交叉淡化过渡的曲线。

有关可用曲线类型的说明,请参阅afade过滤器说明。

29.5.1 示例

  • 从一个输入过渡到另一个输入进行交叉淡化:
    ffmpeg -i first.flac -i second.flac -filter_complex acrossfade=d=10:c1=exp:c2=exp output.flac
    
  • 从一个输入过渡到另一个输入进行交叉淡化,但没有重叠:
    ffmpeg -i first.flac -i second.flac -filter_complex acrossfade=d=10:o=0:c1=exp:c2=exp output.flac
    

29.6 acrossover

将音频流分成多个频段。

此滤镜将音频流分为两个或多个频率范围。 将所有流合并返回将恢复平坦输出。

滤镜接受以下选项:

split

设置分割频率。这些频率必须是正值且递增。

order

设置每个频带分割的滤镜阶数。这控制滤镜转移函数的滚降或陡度。 可用值为:

2nd

每倍频程 12 dB。

4th

每倍频程 24 dB。

6th

每倍频程 36 dB。

8th

每倍频程 48 dB。

10th

每倍频程 60 dB。

12th

每倍频程 72 dB。

14th

每倍频程 84 dB。

16th

每倍频程 96 dB。

18th

每倍频程 108 dB。

20th

每倍频程 120 dB。

默认值为第 4 阶.

level

设置输入增益水平。允许范围是 0 到 1。默认值是 1。

gains

设置每个频带的输出增益。默认值是所有频带的 1。

precision

设置在处理样本时使用的精度。

auto

根据其他滤镜选择内部样本格式。

float

始终使用单浮点精度样本格式。

double

始终使用双浮点精度样本格式。

默认值是auto.

29.6.1 示例

  • 将输入音频流分为两个频带(低频和高频),分割频率为 1500 Hz,每个频带将在单独的流中:
    ffmpeg -i in.flac -filter_complex 'acrossover=split=1500[LOW][HIGH]' -map '[LOW]' low.wav -map '[HIGH]' high.wav
    
  • 与上述相同,但滤镜阶数更高:
    ffmpeg -i in.flac -filter_complex 'acrossover=split=1500:order=8th[LOW][HIGH]' -map '[LOW]' low.wav -map '[HIGH]' high.wav
    
  • 与上述相同,但还添加了一个中频频带(1500Hz 和 8000Hz 之间的频率):
    ffmpeg -i in.flac -filter_complex 'acrossover=split=1500 8000:order=8th[LOW][MID][HIGH]' -map '[LOW]' low.wav -map '[MID]' mid.wav -map '[HIGH]' high.wav
    

29.7 acrusher

减少音频位分辨率。

此滤镜是具有增强功能的位压缩器。位压缩器用于可听地减少音频信号的采样位数。 这不会改变位深度,只会产生效果。 被压缩为低位深度的材料的声音会变得更尖锐、更具“数字感”。 此滤镜甚至能够舍入为连续值而不是离散位深度。 此外,它具有一个 D/C 位移,能够在信号的下半部分和上半部分产生不同程度的压缩。 抗锯齿设置能够生成“更柔和”的压缩声音。

此滤镜的另一个特点是对数模式。 此设置将位之间的线性距离切换为对数距离。 结果是一种更“自然”的压缩器,不会例如对低信号进行门控。 人类耳朵具有对数感知,因此这种类型的压缩令人更加愉悦。 对数压缩还能够进行抗锯齿。

滤镜接受以下选项:

level_in

设置输入音量。

level_out

设置输出音量。

bits

设置位数减少。

mix

设置混音量。

mode

可以是线性的:lin或对数的:log.

dc

设置 DC 位移。

aa

设置抗锯齿。

samples

设置采样减少。

lfo

启用低频振荡器 (LFO)。默认禁用。

lforange

设置 LFO 范围。

lforate

设置 LFO 速率。

29.7.1 命令

此滤镜支持以上所有选项作为命令.

29.8 acue

延迟音频过滤直到指定的墙上时间戳。参见cue滤镜。

29.9 adeclick

从输入音频中移除瞬时噪声。

检测为瞬时噪声的样本将通过使用自回归建模插值样本进行替换。

window, w

设置窗口大小,以毫秒为单位。允许范围是10100。 默认值是55毫秒。 这设置将一次处理的窗口大小。

overlap, o

设置窗口重叠,按窗口大小的百分比表示。允许范围为5095。默认值为75百分比。 将此值设置为非常高会增加脉冲噪声的去除,但会显著降低处理速度。

arorder, a

设置自回归阶数,按窗口大小的百分比表示。允许范围为025。默认值为2百分比。此选项还控制使用邻近的良好样本进行插值样本的质量。

threshold, t

设置阈值。允许范围为1100。 默认值为2。 此值控制要去除的脉冲噪声的强度。值越低,越多的样本会被检测为脉冲噪声。

burst, b

设置突发融合,按窗口大小的百分比表示。允许范围为010。默认值为2。 如果检测到的两个噪声样本之间的间隔小于此值,那么这两个样本之间的任何样本也将被检测为噪声。

method, m

设置重叠方法。

接受以下值:

add, a

选择重叠-相加方法。即使是未插值的样本也会用此方法略微改变。

save, s

选择重叠-保存方法。未插值的样本保持不变。

默认值为a.

29.10 adeclip

从输入音频中移除削波样本。

检测为削波的样本会被使用自回归建模插值的样本替换。

window, w

设置窗口大小,以毫秒为单位。允许范围为10100。 默认值为55毫秒。 此参数设置将一次处理的窗口大小。

overlap, o

设置窗口重叠,按窗口大小的百分比表示。允许范围为5095。默认值为75百分比。

arorder, a

设置自回归阶数,按窗口大小的百分比表示。允许范围为025。默认值为8百分比。此选项还控制使用邻近的良好样本进行插值样本的质量。

threshold, t

设置阈值。允许范围为1100。 默认值为10。值越高,削波检测越不激进。

hsize, n

设置用于检测剪裁的直方图大小。允许范围为1009999。 默认值为1000。值越高,剪裁检测越不激进。

method, m

设置重叠方法。

接受以下值:

add, a

选择重叠-相加方法。即使是未插值的样本也会用此方法略微改变。

save, s

选择重叠-保存方法。未插值的样本保持不变。

默认值为a.

29.11 adecorrelate

对输入音频流应用装饰相关处理。

过滤器接受以下选项:

stages

设置装饰相关过滤的阶段数。 允许范围为1到16。默认值为6。

seed

设置跨通道的随机延迟采样种子。

29.12 adelay

对一个或多个音频通道延迟处理。

被延迟的通道样本用静音填充。

过滤器接受以下选项:

delays

设置每个通道的延时时长(以毫秒为单位),用‘|’分隔。 未使用的延时将被静默忽略。如果提供的延时数量少于通道数量,所有 剩余通道将不延迟。如果要精确延迟一定数量的样本,请在数字后加‘S’。 如果想用秒为单位延迟,则在数字后加‘s’。

all

对所有剩余通道使用最后设置的延时。默认情况下禁用。 此选项如果启用,将更改delays选项的解释方式。

29.12.1 示例

  • 将第一个通道延迟1.5秒,第三个通道延迟0.5秒,保留 第二个通道(以及可能存在的任何其他通道)不变。
    adelay=1500|0|500
    
  • 将第二个通道延迟500个样本,第三个通道延迟700个样本,保留 第一个通道(以及可能存在的任何其他通道)不变。
    adelay=0|500S|700S
    
  • 所有通道延迟相同数量的样本:
    adelay=delays=64S:all=1
    

29.13 adenorm

通过添加极低级别的噪声来修正音频中的反标准化。

此过滤器应放置在任何可能产生反标准化的过滤器之前。

接受参数的描述如下。

level

设置添加噪声的水平(以分贝为单位)。默认值为-351。 允许范围为-451到-90。

type

设置添加噪声的类型。

dc

添加直流信号。

ac

添加交流信号。

square

添加方波信号。

pulse

添加脉冲信号。

默认值为dc.

29.13.1 命令

此过滤器支持以上所有选项作为命令.

29.14 aderivative, aintegral

计算音频流的导数/积分。

连续应用这两个过滤器后,将得到原始音频。

29.15 adrc

对输入音频流应用频谱动态范围控制过滤器。

接受选项的描述如下。

transfer

设置转换表达式。

表达式可以包含以下常量:

ch

当前通道号

sn

当前样本号

nb_channels

通道数

t

时间戳(以秒为单位)

sr

采样率

p

当前频率功率值(以分贝为单位)

f

当前频率(以赫兹为单位)

默认值为p.

attack

设置攻击时间(以毫秒为单位)。默认值为50毫秒。 允许范围为1到1000毫秒。

release

设置释放时间(以毫秒为单位)。默认值为100毫秒。 允许范围为5到2000毫秒。

channels

设置要过滤的通道。但是默认情况下,all音频流中的通道会被过滤。

29.15.1 命令

此过滤器支持以上所有选项作为命令.

29.15.2 示例

  • 对所有频率应用分谱压缩,阈值为-50分贝,1:6比率:
    adrc=transfer='if(gt(p,-50),-50+(p-(-50))/6,p)':attack=50:release=100
    
  • 与上述类似,但比率为1:2,仅过滤前置中间通道:
    adrc=transfer='if(gt(p,-50),-50+(p-(-50))/2,p)':attack=50:release=100:channels=FC
    
  • 对所有频率应用分谱噪声门控,阈值为-85分贝,并具有短攻击时间和短释放时间:
    adrc=transfer='if(lte(p,-85),p-800,p)':attack=1:release=5
    
  • 对所有频率应用分谱扩展,阈值为-10分贝,1:2比率:
    adrc=transfer='if(lt(p,-10),-10+(p-(-10))*2,p)':attack=50:release=100
    
  • 对所有频率应用限制器,最大-60分贝,攻击时间2ms,释放时间10ms:
    adrc=transfer='min(p,-60)':attack=2:release=10
    

29.16 adynamicequalizer

对输入音频流应用动态均衡。

接受选项的描述如下。

threshold

设置用于触发均衡的检测阈值。 阈值检测使用检测过滤器。 默认值为0。允许范围为0到100。

dfrequency

设置用于触发均衡的检测过滤器的检测频率(以赫兹为单位)。 默认值为1000赫兹。允许范围在2到1000000赫兹之间。

dqfactor

设置检测过滤器用于触发均衡的检测共振因子。 默认值为1。允许范围从0.001到1000。

tfrequency

设置均衡过滤器的目标频率。 默认值为1000赫兹。允许范围在2到1000000赫兹之间。

tqfactor

设置目标均衡过滤器的目标共振因子。 默认值为1。允许范围从0.001到1000。

attack

设置检测信号超出检测阈值后触发均衡所需的毫秒数。 默认值为20。允许范围为1到2000。

release

设置检测信号低于检测阈值后结束均衡所需的毫秒数。 默认值为200。允许范围为1到2000。

ratio

设置提高均衡增益的比率。 默认值为1。允许范围为0到30。

makeup

设置以提高均衡增益的补偿偏移量。 默认值为0。允许范围为0到100。

range

设置允许的最大降幅/提升量。默认值为50。 允许范围为1到200。

mode

设置过滤器的操作模式,可以是以下值之一:

listen

仅输出隔离检测信号。

cutbelow

剪切低于检测阈值的频率。

cutabove

剪切高于检测阈值的频率。

boostbelow

提升低于检测阈值的频率。

boostabove

提升高于检测阈值的频率。

默认模式为‘cutbelow’.

dftype

设置检测过滤器的类型,可以是以下之一:

bandpass
lowpass
highpass
peak

默认类型为‘bandpass’.

tftype

设置目标过滤器的类型,可以是以下之一:

bell
lowshelf
highshelf

默认类型为‘bell’.

auto

自动从检测过滤器收集阈值。默认值是‘disabled’。 此选项用于在输入音频流的特定时间帧中检测阈值,在这种情况下, 选项值会在运行时更改。

可用值:

disabled

禁用自动收集的阈值。

off

停止采集阈值。

on

开始采集阈值。

adaptive

通过计算滑动窗口熵自适应采集阈值。

precision

设置处理样本时使用的精度。

auto

根据其他过滤器自动选择内部样本格式。

float

始终使用单精度浮点精度样本格式。

double

始终使用双精度浮点精度样本格式。

29.16.1 命令

此过滤器支持以上所有选项作为命令.

29.17 adynamicsmooth

对输入音频流应用动态平滑。

接受选项的描述如下。

sensitivity

设置对频率波动敏感度的量。默认值为2。 允许范围为0到1e+06。

basefreq

设置用于平滑的基频。默认值为22050。 允许范围为2到1e+06。

29.17.1 命令

此过滤器支持以上所有选项作为命令.

29.18 aecho

对输入音频应用回声。

回声是反射声音,可以自然地出现在山脉中 (有时还有大型建筑)当说话或喊叫时;数字回声 效果模拟了这种行为,通常用于帮助填充一个单一乐器或人声的 声音。原始信号与反射之间的时间差是delay,而反射信号的响亮程度是decay。 多个回声可以具有不同的延迟和衰减。

接受参数的描述如下。

in_gain

设置反射信号的输入增益。默认值为0.6.

out_gain

设置反射信号的输出增益。默认值为0.3.

delays

设置原始信号与反射之间的时间间隔列表(以毫秒为单位),用‘|’分隔。 每个delay的允许范围为(0 - 90000.0]。 默认值为1000.

decays

设置反射信号响度的列表,用‘|’分隔。 每个decay的允许范围为(0 - 1.0]。 默认值为0.5.

29.18.1 示例

  • 让它听起来好像有双倍的乐器在演奏:
    aecho=0.8:0.88:60:0.4
    
  • 如果延迟非常短,那么它听起来像一个(金属的)机器人在演奏音乐:
    aecho=0.8:0.88:6:0.4
    
  • 更长的延迟将听起来像山间的露天音乐会:
    aecho=0.8:0.9:1000:0.3
    
  • 与上面类似,但又多了一座山:
    aecho=0.8:0.9:1000|1800:0.3|0.25
    

29.19 aemphasis

音频强调过滤器通过不同的过滤曲线创建或还原直接从LP或 强调CD中获取的材料。例如,为了在黑胶唱片上存储音乐, 信号必须首先通过过滤器进行调整,以弥补此记录介质的劣势。 播放材料后,必须应用反向过滤器以 恢复频率响应的失真。

过滤器接受以下选项:

level_in

设置输入增益。

level_out

设置输出增益。

mode

设置过滤模式。要还原材料,使用reproduction模式,否则 使用production模式。默认值为reproduction模式。

type

设置过滤器类型。选择介质。可以是以下之一:

col

选择哥伦比亚。

emi

选择EMI。

bsi

选择BSI(78RPM)。

riaa

选择RIAA。

cd

选择紧凑型光盘(CD)。

50fm

选择50µs(FM)。

75fm

选择75µs(FM)。

50kf

选择50µs(FM-KF)。

75kf

选择75µs(FM-KF)。

29.19.1 命令

此滤镜支持以上所有选项作为命令.

29.20 aeval

根据指定的表达式修改音频信号。

此滤镜接受一个或多个表达式(每个通道一个),这些表达式被评估并用于修改对应的音频信号。

它接受以下参数:

exprs

为每个独立通道设置用 '|' 分隔的表达式列表。如果输入通道的数量大于表达式的数量,将对剩余的输出通道使用最后指定的表达式。

channel_layout, c

设置输出通道布局。如果未指定,通道布局由表达式数量决定。如果设置为 'same',则默认使用相同的输入通道布局。

表达式中exprs可以包含以下常量和函数:

ch

当前表达式的通道号

n

从0开始的已评估样本数

s

采样率

t

已评估样本的时间(以秒为单位)

nb_in_channels
nb_out_channels

输入和输出的通道数量

val(CH)

具有编号CH

的输入通道的值

29.20.1 示例

  • 音量减半:
    aeval=val(ch)/2:c=same
    
  • 反相第二通道的相位:
    aeval=val(0)|-val(1)
    

29.21 aexciter

激励器用于产生原始信号中不存在的高音。这是通过创建信号的谐波失真,并限制在一定范围内然后将其添加到原始信号来实现的。激励器提升音频信号的上端,而不仅仅是像均衡器那样简单地提升高频,从而创造出更“清晰”或“明亮”的声音。

该滤镜接受以下选项:

level_in

设置信号处理前的输入电平。 允许范围为 0 到 64。 默认值为 1。

level_out

设置信号处理后的输出电平。 允许范围为 0 到 64。 默认值为 1。

amount

设置添加到原始信号中的谐波数量。 允许范围为 0 到 64。 默认值为 1。

drive

设置新创建的谐波数量。 允许范围为 0.1 到 10。 默认值为 8.5。

blend

设置新创建的谐波的倍频程。 允许范围为 -10 到 10。 默认值为 0。

freq

设置产生谐波的最低频率限制(Hz)。 允许范围为 2000 到 12000 Hz。 默认值为 7500 Hz。

ceil

设置产生谐波的最高频率限制。 允许范围为 9999 到 20000 Hz。 如果值低于 10000 Hz,则不应用限制。

listen

静音原始信号,仅输出新增的谐波。 默认情况下禁用。

29.21.1 命令

此滤镜支持以上所有选项作为命令.

29.22 afade

对输入音频应用淡入/淡出效果。

以下是接受的参数描述。

type, t

指定效果类型,可以是in用于淡入,或out用于淡出效果。默认值为in.

start_sample, ss

指定开始应用淡入/淡出效果的起始样本编号。默认值为 0。

nb_samples, ns

指定淡入/淡出效果持续的样本数。淡入效果结束时,输出音频的音量将与输入音频相同;淡出过渡结束时,输出音频将是静音。默认值为 44100。

start_time, st

指定淡入/淡出效果的开始时间,默认为 0。 值必须以时间持续值形式指定;请参阅(ffmpeg-utils) ffmpeg-utils(1) 手册中的时间持续部分了解接受的语法。 如果设置了此选项,将代替start_sample.

duration, d

指定淡入/淡出效果的持续时间。请参阅(ffmpeg-utils) ffmpeg-utils(1) 手册中的时间持续部分了解接受的语法。 淡入效果结束时,输出音频的音量将与输入音频相同;淡出过渡结束时,输出音频将是静音。 默认情况下,持续时间由nb_samples决定。 如果设置了此选项,将代替nb_samples.

curve

为淡入/淡出过渡设置曲线。

它接受以下值:

tri

选择三角形,线性斜坡(默认)

qsin

选择四分之一正弦波

hsin

选择半正弦波

esin

选择指数正弦波

log

选择对数

ipar

选择反抛物线

qua

选择二次方

cub

选择立方

squ

选择平方根

cbr

选择立方根

par

选择抛物线

exp

选择指数

iqsin

选择四分之一反正弦波

ihsin

选择二分之一反正弦波

dese

选择双指数凹函数

desi

选择双指数“S型”函数

losi

选择逻辑“S型”函数

sinc

选择正弦积分函数

isinc

选择反正弦积分函数

quat

选择四次方

quatr

选择四次方根

qsin2

选择平方的四分之一正弦波

hsin2

选择平方的二分之一正弦波

nofade

不应用淡入/淡出

silence

设置淡入初始增益或淡出最终增益。 默认值为0.0.

unity

设置淡出初始增益或淡入最终增益。 默认值为1.0.

29.22.1 命令

此滤镜支持以上所有选项作为命令.

29.22.2 示例

  • 为前15秒的音频应用淡入效果:
    afade=t=in:ss=0:d=15
    
  • 为一段900秒音频的最后25秒应用淡出效果:
    afade=t=out:st=875:d=25
    

29.23 afftdn

使用 FFT 对音频样本进行降噪。

以下是接受的参数描述。

noise_reduction, nr

设置降噪强度(单位为 dB),允许范围为 0.01 至 97。 默认值为 12 dB。

noise_floor, nf

设置噪声底限(单位为 dB),允许范围为 -80 至 -20。 默认值为 -50 dB。

noise_type, nt

设置噪声类型。

它接受以下值:

white, w

选择白噪声。

vinyl, v

选择唱片噪声。

shellac, s

选择胶木噪声。

custom, c

选择自定义噪声,定义于bn选项中。

默认值为白噪声。

band_noise, bn

为15个频带中的每个设置自定义频带噪声配置文件。 频带之间用 ' ' 或 '|' 分隔。

residual_floor, rf

设置剩余值底限(单位为 dB),允许范围为 -80 到 -20。 默认值为 -38 dB。

track_noise, tn

启用噪声底限跟踪。默认情况下禁用。 启用后,噪声底限会自动调整。

track_residual, tr

启用剩余值跟踪。默认情况下禁用。

output_mode, om

设置输出模式。

它接受以下值:

input, i

不改变输入,直接通过。

output, o

通过滤除后的噪声。

noise, n

仅通过噪声。

默认值是output.

adaptivity, ad

设置适应因子,用于控制每个频率条调整增益的速度。值0表示即时适应,而较高的值反应更慢。 允许范围是01。默认值是0.5.

floor_offset, fo

设置噪声底限偏移因子。此选项用于调整测量噪声底限时应用的偏移。 仅在启用噪声底限跟踪时有效。 允许范围是-2.02.0。默认值是1.0.

noise_link, nl

设置用于多通道音频的噪声链接。

它接受以下值:

none

使用未更改通道的噪声底限。

min

使用所有通道的最小测量噪声底限。

max

使用所有通道的最大测量噪声底限。

average

使用所有通道的平均测量噪声底限。

默认值是min.

band_multiplier, bm

设置频率条扩展到频带的倍增因子。 允许范围是0.25。默认值是1.25.

sample_noise, sn

切换从输入音频抓取和测量噪声配置文件。

它接受以下值:

start, begin

开始采样噪声数据。

stop, end

停止采样噪声并测量新的频带噪声配置文件。

默认值是none.

gain_smooth, gs

为每个频率条设置增益平滑空间半径。 用于减少随机音乐噪声伪影。 较高值会增加增益的平滑度。 允许范围是050。 默认值是0.

29.23.1 命令

此滤镜支持某些上述提到的选项作为命令.

29.23.2 示例

  • 将白噪声降低10dB,并使用先前测量的-40dB噪声底限:
    afftdn=nr=10:nf=-40
    
  • 将白噪声降低10dB,同时将初始噪声底限设置为-80dB并启用自动噪声底限跟踪,这样噪声底限将在处理期间逐渐变化:
    afftdn=nr=10:nf=-80:tn=1
    
  • 将噪声减少20dB,使用-40dB的噪声底限,并使用命令来获取输入音频前0.4秒的噪声配置文件:
    asendcmd=0.0 afftdn sn start,asendcmd=0.4 afftdn sn stop,afftdn=nr=20:nf=-40
    

29.24 afftfilt

对频域中的样本应用任意表达式。

real

为各个独立通道设置频域实表达式,用 '|' 分隔。默认是 "re"。 如果输入通道的数量多于表达式的数量,最后指定的表达式将用于剩余的输出通道。

imag

为各个独立通道分别设置频域虚表达式,用 '|' 分隔。默认是 "im"。

表达式中realimag可以包含以下常量和函数:

sr

采样率

b

当前频率条编号

nb

可用频率条数量

ch

当前表达式的通道编号

chs

通道数量

pts

当前帧 pts

re

当前通道频率条实部

im

当前通道频率条虚部

real(b, ch)

返回编号为 (bin,channel)

imag(b, ch)

的频率条实部的值bin,channel)

win_size

设置窗口大小。允许范围为16到131072。 默认值是4096

win_func

设置窗口函数。

它接受以下值:

rect
bartlett
hann, hanning
hamming
blackman
welch
flattop
bharris
bnuttall
bhann
sine
nuttall
lanczos
gauss
tukey
dolph
cauchy
parzen
poisson
bohman
kaiser

默认值是hann.

overlap

设置窗口重叠。如果设置为1,将选择推荐的窗口函数重叠。默认值是0.75.

29.24.1 示例

  • 保留音频的低频部分为主:
    afftfilt="'real=re * (1-clip((b/nb)*b,0,1))':imag='im * (1-clip((b/nb)*b,0,1))'"
    
  • 应用机器人效果:
    afftfilt="real='hypot(re,im)*sin(0)':imag='hypot(re,im)*cos(0)':win_size=512:overlap=0.75"
    
  • 应用耳语效果:
    afftfilt="real='hypot(re,im)*cos((random(0)*2-1)*2*3.14)':imag='hypot(re,im)*sin((random(1)*2-1)*2*3.14)':win_size=128:overlap=0.8"
    
  • 应用相移:
    afftfilt="real=re*cos(1)-im*sin(1):imag=re*sin(1)+im*cos(1)"
    

29.25 afir

应用任意有限冲激响应滤波器。

此滤镜设计用于应用长 FIR 滤波器,最长可达 60 秒。

它可用作数字分频滤波器、房间均衡、串扰消除、波场合成、听觉化、环绕声和空间化的组件。

此滤镜使用第一个流之外的其他流作为 FIR 系数。 如果非首个流只有一个通道,则它将被用于第一个流中所有输入通道,否则非首个流中的通道数必须与第一个流的通道数量相同。

它接受以下参数:

dry

设置干增益。这会设置输入增益。

wet

设置湿增益。这会设置最终的输出增益。

length

设置冲激响应滤波器长度。默认值为 1,意味着处理整个 IR。

gtype

此选项已过时,且不起任何作用。

irnorm

设置滤波之前应用于 IR 系数的标准化值。 允许范围是-12。 IR 系数将以由此选项设定的向量范数进行归一化。 对于负值,不计算标准化,并且 IR 系数完全不被修改。 默认值是1.

irlink

对于多通道 IR,如果此选项设置为true,所有 IR 通道将使用所有 IR 通道系数测量的最大增益进行标准化,如irnorm选项设置的那样。 禁用此选项时,每个 IR 通道中的所有 IR 系数将独立进行标准化。 默认值是true.

irgain

设置滤波之前应用于 IR 系数的增益。 允许范围是 0 到 1。此增益在通过irnorm选项应用任何增益之后被应用。

irfmt

设置IR流的格式。可以是monoinput。 默认值是input.

maxir

设置允许的最大脉冲响应滤波器持续时间(秒)。默认值是30秒。 允许范围是0.1到60秒。

response

此选项已弃用,无任何作用。

channel

此选项已弃用,无任何作用。

size

此选项已弃用,无任何作用。

rate

此选项已弃用,无任何作用。

minp

设置用于卷积的最小分区大小。默认值是8192。 允许范围是从165536。 较低的值会降低延迟,但会增加CPU使用率。

maxp

设置用于卷积的最大分区大小。默认值是8192。 允许范围是从865536。 较低的值可能会增加CPU使用率。

nbirs

设置输入脉冲响应流的数量,这些流可以在运行时切换。 允许范围是从132。默认值是1.

ir

设置将用于卷积的IR流,从0开始,始终应 低于由nbirs选项提供的值。默认值是0。 此选项可以通过命令在运行时更改.

precision

设置处理样本时使用的精度。

auto

根据其他过滤器自动选择内部样本格式。

float

始终使用单浮点精度样本格式。

double

始终使用双浮点精度样本格式。

默认值是自动。

irload

设置何时加载IR流。可以是initaccess。 第一个选项在初始化时加载并准备所有IR,第二个选项 在首次访问特定IR时加载。 默认值是init.

29.25.1 示例

  • 使用单声道IR文件作为第二输入对流应用混响,完整命令使用ffmpeg:
    ffmpeg -i input.wav -i middle_tunnel_1way_mono.wav -lavfi afir output.wav
    
  • 在给定输入立体声流以及用于左声道和右声道的两个立体声脉冲响应文件的情况下进行真实立体声处理, 脉冲响应文件的名称为l_ir.wav和r_ir.wav,并设置irnorm选项值:
    "pan=4C|c0=FL|c1=FL|c2=FR|c3=FR[a];amovie=l_ir.wav[LIR];amovie=r_ir.wav[RIR];[LIR][RIR]amerge[ir];[a][ir]afir=irfmt=input:irnorm=1.2,pan=stereo|FL<c0+c2|FR<c1+c3"
    
  • 与上述示例类似,但irgain显式设置为估计值,并且irnorm被禁用:
    "pan=4C|c0=FL|c1=FL|c2=FR|c3=FR[a];amovie=l_ir.wav[LIR];amovie=r_ir.wav[RIR];[LIR][RIR]amerge[ir];[a][ir]afir=irfmt=input:irgain=-5dB:irnom=-1,pan=stereo|FL<c0+c2|FR<c1+c3"
    

29.26 aformat

为输入音频设置输出格式约束。框架将协商最合适的格式以尽量减少转换。

它接受以下参数:

sample_fmts, f

以'|'分隔的所请求样本格式列表。

sample_rates, r

以'|'分隔的所请求样本率列表。

channel_layouts, cl

以'|'分隔的所请求声道布局列表。

参见(ffmpeg-utils)在ffmpeg-utils(1)手册中的声道布局部分以了解所需的语法。

如果未提供参数,则所有值均被允许。

强制将输出设置为无符号8位或有符号16位立体声

aformat=sample_fmts=u8|s16:channel_layouts=stereo

29.27 afreqshift

对输入音频样本应用频率偏移。

此过滤器接受以下选项:

shift

指定频率偏移。允许范围是-INT_MAX到INT_MAX。 默认值是0.0。

level

设置最终输出的增益。允许范围是从0.0到1.0。 默认值是1.0。

order

设置用于过滤的滤波器顺序。允许范围是从1到16。 默认值是8。

29.27.1 命令

此过滤器支持上述所有选项作为命令.

29.28 afwtdn

使用小波从输入样本中降低宽带噪声。

以下是所接受选项的描述。

sigma

设置噪声sigma,允许范围是从0到1。 默认值是0。 此选项控制应用于输入样本的降噪强度。 设置此选项最有用的方式是通过分贝,例如-45dB。

levels

设置分解的小波层级数。 允许范围是从1到12。 默认值是10。 设置得太低会使降噪性能非常差。

wavet

设置用于分解输入帧的小波类型。 它们按系数数量排序,从最低到最高。 更多的系数意味着较差的过滤速度,但总体质量更好。 可用的小波是:

sym2
sym4
rbior68
deb10
sym10
coif5
bl3
percent

设置完全降噪的百分比。允许范围是从0到100%。 默认值是85%或部分降噪。

profile

如果启用,第一个输入帧将用作噪声配置文件。 如果第一个帧样本包含非噪声则性能将非常差。

adaptive

如果启用,输入帧会分析噪声的存在。 如果检测到噪声的高可能性,则输入帧配置文件将用于处理随后帧,直到检测到新的噪声帧。

samples

设置单个帧的大小(样本数)。允许范围是从512到 65536。默认帧大小是8192样本。

softness

设置阈值函数内所应用的柔软度。允许范围是0到 10。默认柔软度是1。

29.28.1 命令

此过滤器支持上述所有选项作为命令.

29.29 agate

门限主要用于减少信号的较低部分。这种类型的信号 处理减少了有用信号之间的干扰噪声。

通过检测音量低于选定水平阈值并将其除以由比率设置的因子来完成门限操作。 噪声底部通过范围来设置。 由于对信号进行精确操作会导致波形失真, 可以通过时间来平滑减少。 这是通过设置攻击释放时间.

攻击决定信号必须低于阈值的时间 之后才会发生减少,并且释放设定信号必须高于阈值的时间来减少减弱时间。 短于选定攻击时间的信号将保持不变。

level_in

设置过滤前的输入级别。 默认值为1。允许范围是0.015625到64。

mode

设置操作模式。可以是upwarddownward。 默认值为downward。如果设置为upward模式,较高的信号部分 将被放大,向上扩展动态范围。 否则,对于downward模式,较低的信号部分将被减少。

range

设置信号低于阈值时的增益减少水平。 默认值为0.06125。允许范围是0到1。 将此值设为0将禁用减少,此时过滤器表现为扩展器。

threshold

如果信号高于此水平,则增益减少将释放。 默认值为0.125。允许范围是0到1。

ratio

设置信号减少的比率。 默认值为2。允许范围是从1到9000。

attack

信号必须超过阈值才能停止减少的时间(毫秒)。 默认值为20毫秒。允许范围是从0.01到9000。

release

信号必须低于阈值才能开始增加减少的时间(毫秒)。 默认值为250毫秒。允许范围是从0.01到9000。

makeup

设置处理后的信号放大量。 默认值为1。允许范围是从1到64。

knee

设置围绕阈值的圆滑膝形以更柔和地进入减少增益。 默认值为2.828427125。允许范围是从1到8。

detection

选择检测使用精确信号或类似RMS信号。 默认值为rms。可以是peakrms.

link

选择所有声道之间的平均级别或响亮声道是否影响减少。 默认值为average。可以是averagemaximum.

29.29.1 命令

此过滤器支持上述所有选项作为命令.

29.30 aiir

应用任意无限脉冲响应过滤器。

它接受以下参数:

zeros, z

设置B/分子/零点/反映系数。

poles, p

设置A/分母/极点/梯系数。

gains, k

设置声道增益。

dry_gain

设置输入增益。

wet_gain

设置输出增益。

format, f

设置系数格式。

ll

格子-梯子函数

sf

模拟传递函数

tf

数字传递函数

zp

Z平面零点/极点,直角(默认)

pr

Z平面零点/极点,极坐标(弧度)

pd

Z平面零点/极点,极坐标(度数)

sp

S平面零点/极点

process, r

设置处理类型。

d

直接处理

s

串联处理

p

并联处理

precision, e

设置过滤精度。

dbl

双精度浮点(默认)

flt

单精度浮点

i32

32位整数

i16

16位整数

normalize, n

归一化滤波器系数,默认启用。 启用它将归一化DC上的幅度响应为0dB。

mix

设置输出中使用过滤信号的比例。默认值为1。 范围是0到1之间。

response

显示脉冲响应频率响应,幅度(洋红色)、相位(绿色)和群延迟(黄色)在额外视频流中。 默认值是禁用。

channel

设置用于显示频率响应的IR声道。默认显示第一声道。 此选项仅在响应启用时使用。

size

设置视频流大小。此选项仅在响应启用时使用。

系数在tfsf格式中以空格分隔,并按升序排列。

系数在zp格式中以空格分隔,系数顺序无关紧要。系数在zp格式中是复数,并带有i虚部单位。

可以为每个声道提供不同的系数和增益,在这种情况下 使用'|'分隔系数或增益。最后提供的系数将用于所有剩余声道。

29.30.1 示例

  • 在48000 Hz采样率下应用2极椭圆形陷波过滤器,频率约为5000Hz:
    aiir=k=1:z=7.957584807809675810E-1 -2.575128568908332300 3.674839853930788710 -2.57512875289799137 7.957586296317130880E-1:p=1 -2.86950072432325953 3.63022088054647218 -2.28075678147272232 6.361362326477423500E-1:f=tf:r=d
    
  • 与上述类似但使用zp格式:
    aiir=k=0.79575848078096756:z=0.80918701+0.58773007i 0.80918701-0.58773007i 0.80884700+0.58784055i 0.80884700-0.58784055i:p=0.63892345+0.59951235i 0.63892345-0.59951235i 0.79582691+0.44198673i 0.79582691-0.44198673i:f=zp:r=s
    
  • 应用3阶模拟归一化巴特沃斯低通滤波器,使用模拟传递函数格式:
    aiir=z=1.3057 0 0 0:p=1.3057 2.3892 2.1860 1:f=sf:r=d
    

29.31 alimiter

限幅器防止输入信号超过所需的阈值。 此限幅器使用前瞻技术来防止信号失真。 这意味着信号处理后会有一个小的延迟。 请记住,该延迟就是您设置的攻击时间。

过滤器接受以下选项:

level_in

设置输入增益。默认值为1。

level_out

设置输出增益。默认值为1。

limit

不要让信号超过此水平通过限幅器。默认值为1。

attack

限幅器将在此时间(毫秒)内达到衰减水平。 默认值为5毫秒。

release

从限幅回到衰减1.0所需的时间,以毫秒为单位。 默认值为50毫秒。

asc

当始终需要增益减少时,ASC会处理释放到一个 平均减弱级别,而不是在释放时间内达到减少0。

asc_level

选择释放时间受到ASC影响的程度,0表示几乎没有变化 释放时间,而1则会产生更高的释放时间。

level

自动对输出信号进行电平调整。默认启用。 如果启用,这会将音频归一化回0dB。

latency

补偿使用攻击参数设置的前瞻缓冲区所引入的延迟。 当流到达EOF(文件结束)时,也会刷新前瞻缓冲区中的有效音频数据。

根据所选设置,建议在应用此过滤器之前将输入 上采样2倍或4倍使用aresample

29.32 allpass

应用一个具有中心频率(单位:Hz)的两极全通滤波器频率,以及过滤宽度宽度。 全通滤波器改变音频的频率到相位关系, 而不改变其频率到幅度关系。

过滤器接受以下选项:

frequency, f

设置频率(单位:Hz)。

width_type, t

设置过滤器带宽的指定方法。

h

赫兹

q

品质因数

o

八度

s

斜率

k

千赫兹

width, w

以width_type单位指定过滤器的带宽。

mix, m

设置输出中使用过滤信号的比例。默认值为1。 范围是0到1之间。

channels, c

指定要过滤的通道,默认情况下会过滤所有可用的通道。

normalize, n

归一化双二阶滤波器系数,默认禁用。 启用后,直流的幅值响应将归一化为0dB。

order, o

设置滤波器阶数,可以是1或2。默认值是2。

transform, a

设置IIR滤波器的变换类型。

di
dii
tdi
tdii
latt
svf
zdf
precision, r

设置过滤的精度。

auto

根据环绕滤波器选择自动样本格式。

s16

始终使用有符号16位。

s32

始终使用有符号32位。

f32

始终使用浮点32位。

f64

始终使用浮点64位。

29.32.1 命令

此滤镜支持以下命令:

frequency, f

更改全通滤波器频率。 命令语法为:"频率"

width_type, t

更改全通滤波器宽度类型。 命令语法为:"宽度类型"

width, w

更改全通滤波器宽度。 命令语法为:"宽度"

mix, m

更改全通滤波器混合。 命令语法为:"混合"

29.33 声音循环

循环音频样本。

滤镜接受以下选项:

loop

设置循环次数。将此值设置为-1将产生无限循环。 默认值为0。

size

设置最大样本数。默认值为0。

start

设置循环的第一个样本。默认值为0。

time

设置循环开始的时间(秒)。 仅在名为开始选项设置时使用-1.

29.34 音频合并

合并两个或多个音频流,生成一个多声道流。

滤镜接受以下选项:

inputs

设置输入数量。默认值为2。

如果输入的声道布局是分开的并且兼容, 输出的声道布局将相应设置并且声道会被重新排列。如果输入的声道布局不分开, 输出将包含第一个输入的所有声道,然后是第二个输入的所有声道, 按此顺序排列,输出的声道布局将是对应于总声道数量的默认值。

例如,如果第一个输入是2.1(左前+右前+低频)模式, 第二个输入是中间+左后+右后模式,那么输出将为5.1模式,声道排列为:a1,a2,b1,a3,b2,b3(a1是第一个输入的第一个声道,b1是第二个输入的第一个声道)。

另一方面,如果两个输入都是立体声,输出声道将使用默认顺序:a1,a2,b1,b2, 输出的声道布局将被任意设置为4.0,这可能不是预期的值。

所有输入必须具有相同的采样率和格式。

如果输入的持续时间不同,输出将以最短的持续时间停止。

29.34.1 使用示例

  • 将两个单声道文件合并为一个立体声流:
    amovie=left.wav [l] ; amovie=right.mp3 [r] ; [l] [r] amerge
    
  • 假设1个视频流和6个音频流进行多次合并input.mkv:
    ffmpeg -i input.mkv -filter_complex "[0:1][0:2][0:3][0:4][0:5][0:6] amerge=inputs=6" -c:a pcm_s16le output.mkv
    

29.35 音频混合

将多个音频输入混合为单个输出。

注意此滤镜仅支持浮点样本(音频合并声道音频滤镜支持多种格式)。如果 audio filters support many formats). If the 音频混合输入样本为整数类型,则音频重采样将自动插入以执行浮点样本的转换。

它接受以下参数:

inputs

输入数量。如果未指定,默认为2。

duration

确定流结束的方式。

longest

最长输入的持续时间。(默认)

shortest

最短输入的持续时间。

first

第一个输入的持续时间。

dropout_transition

当一个输入流结束时,音量重新归一化的过渡时间,以秒为单位。 默认值为2秒。

weights

指定每个输入音频流的权重,权重是以空格分隔的数字序列。 如果指定的权重数量少于输入数量, 最后一个权重将分配给剩余的输入。 每个输入默认的权重是1。

normalize

始终按比例缩放输入,而不是仅执行样本的求和操作。 如果在过滤之前或之后未进行归一化,这种方式可能会导致严重的剪辑。 默认情况下启用。

29.35.1 使用示例

  • 将3个输入音频流混合为一个输出,输出的持续时间与第一个输入相同, 且具有3秒的掉落过渡时间:
    ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex amix=inputs=3:duration=first:dropout_transition=3 OUTPUT
    
  • 将一个人声和一个音乐输入音频流混合为一个输出, 输出的持续时间与最长的输入相同。音乐的权重将为人声的四分之一, 输入未进行归一化处理:
    ffmpeg -i VOCALS -i MUSIC -filter_complex amix=inputs=2:duration=longest:dropout_transition=0:weights="1 0.25":normalize=0 OUTPUT
    

29.35.2 命令

此滤镜支持以下命令:

weights
normalize

语法与具有相同名称的选项一致。

29.36 音频相乘

第一音频流与第二音频流相乘,结果存储 在输出音频流中。通过将来自第一个音频流的每个样本 与第二个音频流中相同位置的样本相乘完成该操作。

通过此逐元素乘法,可以创建振幅渐变和振幅调制。

29.37 参数均衡器

对每个声道进行高阶参数化多段均衡。

它接受以下参数:

params

该选项字符串的格式为: "c声道f=中央频率w=宽度g=增益t=滤波器类型| ..." 每个均衡器频段以’|’分隔。

chn

设置要应用均衡的声道编号。 如果输入中没有该声道,则忽略该项。

f

设置频段的中心频率。 如果输入中没有该频率,则忽略该项。

w

设置频段宽度,以赫兹为单位。

g

设置频段增益,以分贝为单位。

t

设置频段的滤波器类型,可选,可以是:

0

巴特沃斯滤波器,这是默认值。

1

切比雪夫类型1。

2

切比雪夫类型2。

curves

启用此选项时,参数均衡器的频率响应将显示在视频流中。

size

设置视频流大小。仅当曲线选项被激活时有用。

mgain

设置最大显示增益值。仅当曲线选项被激活时有用。 将其设置为一个合理值使得能够显示由邻近频段产生的增益, 如果多个频段相互间隔太近而且都被激活时可能会出现更高的增益。

fscale

设置用于在视频输出中绘制频率响应的频率比例。 可以是线性或对数。默认是对数。

colors

为视频流中将要显示的每个声道曲线设置颜色。 这是颜色名称的列表,用空格或’|’分隔。 未识别或缺失的颜色将替换为白色。

29.37.1 使用示例

  • 使用切比雪夫类型1滤波器,将中央频率200Hz和宽度100Hz的增益降低10, 应用于前两个声道:
    anequalizer=c0 f=200 w=100 g=-10 t=1|c1 f=200 w=100 g=-10 t=1
    

29.37.2 命令

此滤镜支持以下命令:

change

更改现有的滤频参数。 命令语法为:"滤波编号|f=频率|w=宽度|g=增益"

滤波编号是现有滤波器的编号,从0开始,如果没有这样的滤波器, 将返回错误。频率设置新的频率参数。宽度以赫兹为单位设置新的宽度参数。增益以分贝为单位设置新的增益参数。

使用asendcmd完整调用滤波器可能如下: asendcmd=c=’4.0 参数均衡器 修改 0|f=200|w=50|g=1’,参数均衡器=...

29.38 非局域均值降噪

使用非局域均值算法减少音频样本中的宽带噪音。

通过查看具有相似上下文的其他样本来调整每个样本。 这种上下文相似性通过比较其周围补丁的大小来定义p。补丁将在一个区域内搜索r

滤镜接受以下选项:

strength, s

设置降噪强度。允许范围是0.00001到10000。默认值为0.00001。

patch, p

设置补丁半径持续时间。允许范围是1到100毫秒。 默认值为2毫秒。

research, r

设置研究半径持续时间。允许范围是2到300毫秒。 默认值为6毫秒。

output, o

设置输出模式。

它接受以下值:

i

通过输入不变。

o

通过过滤的噪音。

n

仅通过噪音。

默认值为o.

smooth, m

设置平滑因子。默认值为11。允许范围是11000.

29.38.1 命令

此滤镜支持以上所有选项作为命令.

29.39 归一化最小均方误差与最小均方算法

将归一化最小均方(平方|第四)算法应用于第一个音频流,并使用第二个音频流进行操作。

该自适应滤波器用于模拟所需的滤波器,通过找到与产生实际信号(第一个输入音频流) 与目标信号(第二个输入音频流)之间的误差信号的最小均方相关的滤波器系数。

以下是接受的选项说明。

order

设置滤波器阶数。

mu

设置滤波器的步长。

eps

设置滤波器的容差值。

leakage

设置滤波器的泄漏。

out_mode

它接受以下值:

i

传递第一个输入。

d

传递第二个输入。

o

传递目标信号(第二输入)与误差信号估计的差值。

n

传递输入信号(第一个输入)与误差信号估计的差值。

e

传递误差信号估计的样本值。

默认值为o.

precision

设置处理样本时使用的精度。

auto

根据其它滤波器自动选择内部样本格式。

float

始终使用单精度浮点样本格式。

double

始终使用双精度浮点样本格式。

29.39.1 使用示例

  • 该滤镜的众多用途之一是噪声抑制,输入音频使用与自己固定延迟量的样本进行滤波, 一个对立体声音频的例子是:
    asplit[a][b],[a]adelay=32S|32S[a],[b][a]anlms=order=128:leakage=0.0005:mu=.5:out_mode=o
    

29.39.2 命令

此滤镜支持与选项相同的命令,但不包括选项order.

29.40 音频通过

将音频源不变地传递到输出。

29.41 音频填充

用静音填充音频流的尾部。

这可以与ffmpeg -shortest配合使用 将音频流扩展到与视频流的长度相同。

以下是接受选项的说明。

packet_size

设置静音数据包的大小。默认值是4096。

pad_len

设置要在尾部添加的静音样本数。在达到值后,将终止流。 此选项与whole_len.

whole_len

设置输出音频流的最小总样本数。 如果值比输入音频长度还长, 则尾部会添加静音,直到达到该值。 此选项与pad_len.

pad_dur

指定添加静音样本的持续时间。请参见(ffmpeg-utils)ffmpeg-utils(1)手册中的时间持续时间部分以了解接受的语法。仅在设置为非负值时使用。

whole_dur

指定输出音频流的最短总持续时间。请参见(ffmpeg-utils)ffmpeg-utils(1)手册中的时间持续时间部分以了解接受的语法。如果值比输入音频长度还长, 则尾部会添加静音,直到达到该值。 此选项与pad_dur

如果未设置pad_lenwhole_lenpad_durwhole_dur选项,滤镜将无限地在输入流尾部添加静音。

注意,对于ffmpeg 4.4及以下版本,零pad_durwhole_dur也会导致滤镜无限地添加静音。

29.41.1 使用示例

  • 在输入尾部添加1024个静音样本:
    apad=pad_len=1024
    
  • 确保音频输出至少包含10000个样本,如需要会在输入尾部填充静音:
    apad=whole_len=10000
    
  • 使用ffmpeg填充音频输入尾部的静音,以便视频流始终是最短的, 在输出文件中转换到结尾时使用shortest选项:
    ffmpeg -i VIDEO -i AUDIO -filter_complex "[1:0]apad" -shortest OUTPUT
    

29.42 相位器

为输入音频添加一个相位效果。

相位过滤器在频谱中创建一系列的峰和谷。 这些峰和谷的位置会被调制,使其随时间变化,从而产生扫过的效果。

以下是接受的参数的描述。

in_gain

设置输入增益。默认值为0.4。

out_gain

设置输出增益。默认值为0.74。

delay

设置延迟时间(毫秒)。默认值为3.0。

decay

设置衰减。默认值为0.4。

speed

设置调制速度(赫兹)。默认值为0.5。

type

设置调制类型。默认是三角形波。

它接受以下值:

triangular, t
sinusoidal, s

29.43 相移器

对输入音频样本应用相位偏移。

过滤器接受以下选项:

shift

指定相位偏移。允许范围为-1.0到1.0。 默认值为0.0。

level

设置应用于最终输出的输出增益。允许范围为0.0到1.0。 默认值为1.0。

order

设置用于过滤的滤波器阶数。允许范围为1到16。 默认值为8。

29.43.1 命令

该过滤器支持上述所有选项作为命令.

29.44 apsnr

测量音频峰值信噪比。

此过滤器接受两个音频流作为输入,并输出第一个音频流。 结果以每个声道的分贝(dB)形式显示在任一输入的结尾。

29.45 apsyclip

对输入音频流应用心理声学剪辑器。

过滤器接受以下选项:

level_in

设置输入增益。默认值为1。范围是[0.015625 - 64]。

level_out

设置输出增益。默认值为1。范围是[0.015625 - 64]。

clip

设置剪辑起始值。默认值为0dBFS或1。

diff

仅输出差异样本,用于听到引入的失真。 默认情况下禁用。

adaptive

设置适应性失真的强度。默认值为0.5。 允许范围是从0到1。

iterations

设置心理声学剪辑器的迭代次数。 允许范围是从1到20。默认值为10。

level

自动调整输出信号的电平。默认情况下禁用。 如果启用,它会将音频标准化为0dBFS。

29.45.1 命令

该过滤器支持上述所有选项作为命令.

29.46 apulsator

音频脉动器介于自动声像和颤音之间。 但它也可以产生有趣的立体声效果。脉动器基于低频振荡器(LFO) 使用不同的波形和相移改变左右声道的音量。 此过滤器能够定义左声道和右声道之间的偏移量。 偏移量为0意味着两个LFO形状彼此匹配。 左右声道均匀改变 - 传统的颤音效果。 偏移量为50%意味着右声道的形状完全相移 (或向后移动约半个频率) - 脉动器充当自动声像器。 偏移量为1时两个曲线再次匹配。任何中间的设置都会使 相移无缝连接在所有阶段之间,并产生一些带有 正弦和三角波形的“绕过”声音。 从0.5开始,偏移量越接近1,信号从左到右扬声器的速度越快。

过滤器接受以下选项:

level_in

设置输入增益。默认值为1。范围是[0.015625 - 64]。

level_out

设置输出增益。默认值为1。范围是[0.015625 - 64]。

mode

设置LFO将使用的波形形状。可以是以下之一:正弦波、三角波、方波、 锯齿向上或锯齿向下。默认是正弦波。

amount

设置调制强度。定义原始信号受到LFO影响的程度。

offset_l

设置左声道偏移。默认值为0。允许范围是[0 - 1]。

offset_r

设置右声道偏移。默认值为0.5。允许范围是[0 - 1]。

width

设置脉宽。默认值为1。允许范围是[0 - 2]。

timing

设置可能的计时模式。可以是以下之一:bpm、毫秒或赫兹。默认为赫兹。

bpm

设置bpm(节拍每分钟)。默认值为120。允许范围是[30 - 300]。 仅在计时模式设置为bpm时使用。

ms

设置毫秒值。默认值为500。允许范围是[10 - 2000]。 仅在计时模式设置为毫秒时使用。

hz

设置赫兹频率。默认值为2。允许范围是[0.01 - 100]。 仅在计时模式设置为赫兹时使用。

29.47 aresample

使用libswresample库重新采样输入音频到指定参数。 如果未指定任何参数,则过滤器会自动在输入和输出之间转换。

此过滤器还能伸展/压缩音频数据以使其与时间戳匹配,或者注入静音/剪切音频, 以使其与时间戳匹配,可以同时进行这两种操作或都不做。

过滤器接受以下语法 [采样率:]重采样选项, 其中采样率表示采样率,重采样选项是一个=对列表,用":"分隔。参见(ffmpeg-resampler)“重采样选项”部分, 在ffmpeg-resampler(1)手册中查阅完整的支持选项列表。

29.47.1 示例

  • 将输入音频重新采样为44100Hz:
    aresample=44100
    
  • 伸展/压缩样本到给定的时间戳,每秒最多补偿1000 样本:
    aresample=async=1000
    

29.48 areverse

反转音频剪辑。

警告:此过滤器需要内存缓存整个剪辑,因此建议进行修剪。

29.48.1 示例

  • 取剪辑的前5秒并反转它。
    atrim=end=5,areverse
    

29.49 arls

使用第二个音频流对第一个音频流应用递归最小二乘算法。

此自适应过滤器用于通过递归找到与生成最小加权线性最小二乘误差信号(即期望的第2 输入音频流与实际信号,即第1输入音频流之间的差异)相关的滤波器系数来模仿目标滤波器。

以下是接受选项的描述。

order

设置滤波器阶数。

lambda

设置遗忘因子。

delta

设置初始化内部协方差矩阵的系数。

out_mode

设置过滤器输出样本。它接受以下值:

i

通过第1个输入。

d

通过第2个输入。

o

通过期望信号估计和误差信号之间的差异。

n

通过输入信号估计和误差信号之间的差异。

e

传递估计的误差信号样本。

默认值为o.

precision

设置处理样本时使用的精度。

auto

根据其他过滤器自动选择内部样本格式。

float

始终使用单精度浮点样本格式。

double

始终使用双精度浮点样本格式。

29.50 arnndn

使用循环神经网络减少语音中的噪音。

此过滤器接受以下选项:

model, m

设置加载训练模型文件。此选项始终是必需的。

mix

设置过滤样本混合到最终输出的比例。 允许范围为-1到1,默认值为1。 负值具有特殊含义,表示在最终过滤输出中保留过滤噪音的比例。 将此选项设为-1可以听到从输入信号中去除的实际噪音。

29.50.1 命令

该过滤器支持上述所有选项作为命令.

29.51 asdr

测量音频信号与失真比。

此过滤器接受两个音频流作为输入,并输出第一个音频流。 结果以每个声道的分贝(dB)形式显示在任一输入的结尾。

29.52 asetnsamples

设置每个输出音频帧的样本数。

最后一个输出包可能包含不同数量的样本,当输入音频 信号达到尾端时,过滤器将刷新所有剩余样本。

过滤器接受以下选项:

nb_out_samples, n

设置每个输出音频帧的样本数。 数字表示每个声道的样本数。每个声道。 默认值为1024。

pad, p

如果设置为1,过滤器会用零填充最后一个音频帧, 使最后一个帧包含与前一个帧相同数量的样本。默认值为1。

例如,设置每帧样本数为1234并禁用最后帧的填充,可使用:

asetnsamples=n=1234:p=0

29.53 asetrate

设置采样率而不改变PCM数据。 这将导致速度和音调的变化。

过滤器接受以下选项:

sample_rate, r

设置输出采样率。默认值为44100赫兹。

29.54 ashowinfo

为每个输入音频帧显示包含各种信息的行。 输入音频不会被修改。

显示的行包含一系列形式为键/值对的信息,例如:.

以下值在输出中显示:

n

输入帧的(顺序)编号,从0开始。

pts

输入帧的呈现时间戳,以时间基单位表示;时间基 取决于过滤器输入端,并且通常为1/采样率.

pts_time

以秒表示的输入帧的呈现时间戳。

fmt

样本格式。

chlayout

声道布局。

rate

音频帧的采样率。

nb_samples

每帧(每个声道)的样本数量。

checksum

音频数据的Adler-32校验和(以十六进制打印)。对于平面 音频,数据被视为所有平面好像已连接在一起。

plane_checksums

每个数据平面的Adler-32校验和列表。

29.55 asisdr

测量音频尺度不变信号与失真比。

此过滤器接受两个音频流作为输入,并输出第一个音频流。 结果以每个声道的分贝(dB)形式显示在任一输入的结尾。

29.56 asoftclip

应用音频软剪辑。

软剪辑是一种失真效果,其中信号的振幅沿平滑曲线饱和, 而不是硬剪辑的突兀形状。

此过滤器接受以下选项:

type

设置软剪辑类型。

它接受以下值:

hard
tanh
atan
cubic
exp
alg
quintic
sin
erf
threshold

设置开始剪辑的阈值。默认值为0dB或1。

output

设置应用于输出的增益。默认值为0dB或1。

param

设置控制S型函数的额外参数。

oversample

设置过采样因子。

29.56.1 命令

该过滤器支持上述所有选项作为命令.

29.57 aspectralstats

显示音频通道的频域统计信息。 统计信息会为每个音频通道和音频帧计算并存储为元数据。

它接受以下选项:

win_size

设置窗口长度(样本数)。默认值为2048。 允许范围是32到65536。

win_func

设置窗口函数。

它接受以下值:

rect
bartlett
hann, hanning
hamming
blackman
welch
flattop
bharris
bnuttall
bhann
sine
nuttall
lanczos
gauss
tukey
dolph
cauchy
parzen
poisson
bohman
kaiser

默认是hann.

overlap

设置窗口重叠。允许范围是01。默认值为0.5.

measure

选择要测量的参数。元数据键可以 作为标志使用,默认值是all测量所有参数。none禁用所有测量。

以下是每个元数据键的列表:

mean
variance
centroid
spread
skewness
kurtosis
entropy
flatness
crest
flux
slope
decrease
rolloff

29.58 asr

自动语音识别

此过滤器使用PocketSphinx进行语音识别。要启用 此过滤器的编译,您需要使用以下选项配置FFmpeg。--enable-pocketsphinx.

它接受以下选项:

rate

设置输入音频的采样率。默认值为16000。 这需要与语音模型匹配,否则会获得较差的结果。

hmm

设置包含声学模型文件的字典。

dict

设置发音词典。

lm

设置语言模型文件。

lmctl

设置语言模型集。

lmname

设置要使用的语言模型。

logfn

设置日志消息的输出。

过滤器将识别的语音导出为帧元数据。lavfi.asr.text.

29.59 astats

显示音频通道的时域统计信息。统计信息针对每个音频通道计算和显示,并且在适用的情况下,还提供总体值。

它接受以下选项:

length

短窗口长度(以秒为单位),用于峰值和谷值RMS测量。默认值是0.05(50毫秒)。允许范围是[0 - 10].

metadata

设置元数据注入。所有元数据键都以lavfi.astats.X为前缀,其中X是从1开始的通道编号或字符串Overall。默认情况下禁用。

每个通道的可用键包括:位深 峰值因子 直流偏移 动态范围 熵值 平坦因子 最大差异 最大水平 平均差异 最小差异 最小水平 噪声基准 噪声基准计数 无穷值的数量 NaN值的数量 反常值的数量 峰值计数 绝对峰值计数 峰值水平 RMS差异 RMS峰值 RMS谷值 零交叉点 零交叉率

以及对于Overall: 位深 直流偏移 熵值 平坦因子 最大差异 最大水平 平均差异 最小差异 最小水平 噪声基准 噪声基准计数 无穷值的数量 NaN值的数量 反常值的数量 样本数量 峰值计数 绝对峰值计数 峰值水平 RMS差异 RMS水平 RMS峰值 RMS谷值

例如,完整的键格式像lavfi.astats.1.DC_offsetlavfi.astats.Overall.Peak_count.

请参阅下方的键描述。

reset

设置在重置之前累计统计数据所需的帧数。默认情况下禁用。

measure_perchannel

选择每个通道测量的参数。元数据键可以用作标志,默认值为all,表示测量所有内容。none禁用所有每通道的测量。

measure_overall

选择总体测量的参数。元数据键可以用作标志,默认值为all,表示测量所有内容。none禁用所有总体测量。

以下是测量键的说明:

none

没有测量值

all

所有测量值

Bit_depth

整体音频位深,即每个样本使用的位数

Crest_factor

峰值与RMS水平的标准比率(注意:不是dB)

DC_offset

零值的平均幅度偏移

Dynamic_range

以dB为单位测量的音频动态范围

Entropy

整段音频的熵值,接近1.0的熵值通常为白噪声测量值

Flat_factor

信号在其峰值水平处的平坦度(即连续样本具有相同值),例如最小水平最大水平)

Max_difference

两个连续样本之间的最大差异

Max_level

最大采样值

Mean_difference

两个连续样本之间的平均差异,即每两个连续样本差异的平均值

Min_difference

两个连续样本之间的最小差异

Min_level

最小采样值

Noise_floor

通过短窗口在dBFS中测量的最小局部峰值

Noise_floor_count

信号达到的次数(不是样本数)噪声基准

Number_of_Infs

具有无穷值的样本数

Number_of_NaNs

具有NaN (非数字)值的样本数

Number_of_denormals

具有亚常值的样本数

Number_of_samples

样本数

Peak_count

信号达到的次数(不是样本数),无论是最小水平最大水平

Abs_Peak_count

信号中的绝对样本达到 最大绝对值的次数最小水平最大水平

Peak_level

标准峰值水平,以dBFS为单位测量

RMS_difference

两个连续样本之间的均方根差

RMS_level

标准RMS水平,以dBFS为单位测量

RMS_peak
RMS_trough

通过短窗口测量的RMS水平的峰值和谷值,以dBFS为单位测量。

Zero crossings

波形穿过零轴的点数

Zero crossings rate

零交叉点率和音频样本数

29.60 asubboost

增强低音频率。

过滤器接受以下选项:

dry

设置干增益,表示保留多少原始信号。允许范围为0到1。 默认值为1.0。

wet

设置湿增益,表示保留多少过滤信号。允许范围为0到1。 默认值为1.0。

boost

设置最大增强因子。允许范围为1到12。默认值为2。

decay

设置延迟线衰减增益值。允许范围为0到1。 默认值为0.0。

feedback

设置延迟线反馈增益值。允许范围为0到1。 默认值为0.9。

cutoff

设置截止频率(赫兹)。允许范围为50到900。 默认值为100。

slope

设置截止频率的斜率值。允许范围为0.0001到1。 默认值为0.5。

delay

设置延迟。允许范围为1到100。 默认值为20。

channels

设置要处理的通道。默认值是所有可用通道。

29.60.1 命令

此过滤器支持以上所有选项作为命令.

29.61 asubcut

削减低音频率。

该过滤器允许设置自定义、陡峭的剪切,而不是高通滤波器,因此能够在停止带中更有效降低频率含量。

过滤器接受以下选项:

cutoff

设置截止频率(赫兹)。允许范围为2到200。 默认值为20。

order

设置滤波器阶数。可用值为3到20。 默认值为10。

level

设置输入增益水平。允许范围为0到1。 默认值为1。

29.61.1 命令

此过滤器支持以上所有选项作为命令.

29.62 asupercut

削减高频率。

过滤器接受以下选项:

cutoff

设置截止频率(赫兹)。允许范围为20000到192000。 默认值为20000。

order

设置滤波器阶数。可用值为3到20。 默认值为10。

level

设置输入增益水平。允许范围为0到1。 默认值为1。

29.62.1 命令

此过滤器支持以上所有选项作为命令.

29.63 asuperpass

应用高阶巴特沃斯带通滤波器。

过滤器接受以下选项:

centerf

设置中心频率(赫兹)。允许范围为2到999999。 默认值为1000。

order

设置滤波器阶数。可用值为4到20。 默认值为4。

qfactor

设置Q因子。允许范围为0.01到100。 默认值为1。

level

设置输入增益水平。允许范围为0到2。 默认值为1。

29.63.1 命令

此过滤器支持以上所有选项作为命令.

29.64 asuperstop

应用高阶巴特沃斯带阻滤波器。

过滤器接受以下选项:

centerf

设置中心频率(赫兹)。允许范围为2到999999。 默认值为1000。

order

设置滤波器阶数。可用值为4到20。 默认值为4。

qfactor

设置Q因子。允许范围为0.01到100。 默认值为1。

level

设置输入增益水平。允许范围为0到2。 默认值为1。

29.64.1 命令

此过滤器支持以上所有选项作为命令.

29.65 atempo

调整音频节奏。

过滤器接受一个参数,即音频节奏。如果未指定,过滤器将假定标准1.0节奏。节奏必须在[0.5, 100.0]范围内。

请注意,对于超过2的节奏值,将跳过一些样本而不是混合它们。如果出于任何原因对此感到担忧,可以连接多个atempo实例来达到所需的节奏乘积。

29.65.1 示例

  • 将音频节奏减慢到80%:
    atempo=0.8
    
  • 将音频节奏加快到300%:
    atempo=3
    
  • 通过连接两个atempo实例将音频节奏加快到300%:
    atempo=sqrt(3),atempo=sqrt(3)
    

29.65.2 命令

此过滤器支持以下命令:

tempo

更改滤波器节奏缩放因子。 命令的语法是:"tempo"

29.66 atilt

对音频流应用倾斜滤波器。

该过滤器对任何指定频段应用任何频谱衰减斜率。

过滤器接受以下选项:

freq

设置倾斜的中心频率(赫兹)。默认值为10000 Hz。

slope

设置倾斜的斜率方向。默认值为0。允许范围为-1到1。

width

设置倾斜宽度。默认值为1000。允许范围为100到10000。

order

设置倾斜滤波器阶数。

level

设置输入音量水平。允许范围为0到4。 默认值为1。

29.66.1 命令

此过滤器支持以上所有选项作为命令.

29.67 atrim

对输入进行修剪,使输出包含输入的一段连续子部分。

它接受以下参数:

start

保留的部分起始时间戳(以秒为单位)。即时间戳为start的音频样本将是输出中的第一个样本。

end

指定将被丢弃的第一个音频样本的时间,即在具有时间戳为end之前的音频样本 将是输出中的最后一个样本。

start_pts

start相同,但此选项以样本而不是秒设置起始时间戳。

end_pts

end相同,但此选项以样本而不是秒设置结束时间戳。

duration

输出的最大持续时间,以秒为单位。

start_sample

应输出的第一个样本的数量。

end_sample

应丢弃的第一个样本的数量。

start, endduration以时间持续时间规格表示;请参阅(ffmpeg-utils)ffmpeg-utils(1)手册中的时间持续时间部分.

注意,第一个和第二组起始/结束选项以及duration选项查看帧时间戳,而_sample选项仅仅统计通过过滤器的样本。因此,start/end_pts和start/end_sample在时间戳错误、不准确或未从零开始时会产生不同结果。还要注意,此过滤器不会修改时间戳。如果希望输出时间戳从零开始,请在atrim过滤器之后插入asetpts过滤器。

如果设置了多个起始或结束选项,此过滤器将尝试保持所有至少满足一个指定约束的样本。要仅保留同时满足所有约束的部分,可链式使用多个atrim过滤器。

默认情况下会保留所有输入。因此可以仅设置例如结束值以保留特定时间之前的所有内容。

示例:

  • 仅保留输入的第二分钟内容:
    ffmpeg -i INPUT -af atrim=60:120
    
  • 仅保留前1000个样本:
    ffmpeg -i INPUT -af atrim=end_sample=1000
    

29.68 axcorrelate

计算两个输入音频流的归一化窗口交叉相关性。

生成的样本始终在-1和1之间。如果结果为1,则表示选择的片段中两个输入样本高度相关。结果为0表示它们完全无关。如果结果为-1,则表示两个输入样本不同相位,这意味着它们互相抵消。

过滤器接受以下选项:

size

设置计算交叉相关性的片段大小。 默认值为256。允许范围为2到131072。

algo

设置交叉相关性的算法。可以是slowfastbest。默认值为best。快速算法假设在任何给定片段上的平均值始终为零,因此需要更少的计算。 这通常不正确,但对典型音频流有效。

29.68.1 示例

  • 计算立体声音频流中通道之间的相关性:
    ffmpeg -i stereo.wav -af channelsplit,axcorrelate=size=1024:algo=fast correlation.wav
    

29.69 bandpass

应用两极巴特沃斯带通滤波器,设置中心频率frequency,以及(3dB点)带宽宽度。 该常数裙增益选项选择常数裙增益(峰值增益=Q),而不是默认值:常数0dB峰值增益。 滤波器以每倍频程6dB(每十倍频范围20dB)的速率滚降。

滤波器接受以下选项:

frequency, f

设置滤波器的中心频率。默认值为3000.

csg

如果设置为1,则为常数裙增益。默认为0。

width_type, t

设置指定滤波器带宽的方法。

h

赫兹

q

品质因数

o

倍频程

s

斜率

k

千赫兹

width, w

以“width_type”单位指定滤波器的带宽。

mix, m

在输出中使用滤波信号的比例。默认值为1。 范围在0到1之间。

channels, c

指定要过滤的通道,默认情况下过滤所有可用通道。

normalize, n

归一化双二阶滤波器系数,默认情况下禁用。 启用它将使直流处的幅值响应归一化为0dB。

transform, a

设置IIR滤波器的变换类型。

di
dii
tdi
tdii
latt
svf
zdf
precision, r

设置过滤精度。

auto

根据环绕滤波器选择自动采样格式。

s16

始终使用有符号16位。

s32

始终使用有符号32位。

f32

始终使用32位浮点。

f64

始终使用64位浮点。

block_size, b

设置用于反向IIR处理的块大小。如果将此值设置为足够高的值 (高于当接近零值时截断的瞬态响应长度),则过滤将成为线性相位,否则如果不够大,它只会产生难看的伪影。

请注意,当设置为非零值时,滤波延迟将正好为这么多样本。

29.69.1 命令

此滤波器支持以下命令:

frequency, f

更改带通频率。 命令的语法是:"频率"

width_type, t

更改带通width_type。 命令的语法是:"width_type"

width, w

更改带通宽度。 命令的语法是:"宽度"

mix, m

更改带通混合比例。 命令的语法是:"混合比例"

29.70 带阻

应用一个中心频率为 的双极巴特沃斯带阻滤波器频率,以及(3dB点)带宽宽度。 滤波器以每倍频程6dB(每十倍频范围20dB)的速率滚降。

滤波器接受以下选项:

frequency, f

设置滤波器的中心频率。默认值为3000.

width_type, t

设置指定滤波器带宽的方法。

h

赫兹

q

品质因数

o

倍频程

s

斜率

k

千赫兹

width, w

以“width_type”单位指定滤波器的带宽。

mix, m

在输出中使用滤波信号的比例。默认值为1。 范围在0到1之间。

channels, c

指定要过滤的通道,默认情况下过滤所有可用通道。

normalize, n

归一化双二阶滤波器系数,默认情况下禁用。 启用它将使直流处的幅值响应归一化为0dB。

transform, a

设置IIR滤波器的变换类型。

di
dii
tdi
tdii
latt
svf
zdf
precision, r

设置过滤精度。

auto

根据环绕滤波器选择自动采样格式。

s16

始终使用有符号16位。

s32

始终使用有符号32位。

f32

始终使用32位浮点。

f64

始终使用64位浮点。

block_size, b

设置用于反向IIR处理的块大小。如果将此值设置为足够高的值 (高于当接近零值时截断的瞬态响应长度),则过滤将成为线性相位,否则如果不够大,它只会产生难看的伪影。

请注意,当设置为非零值时,滤波延迟将正好为这么多样本。

29.70.1 命令

此滤波器支持以下命令:

frequency, f

更改带阻频率。 命令的语法是:"频率"

width_type, t

更改带阻width_type。 命令的语法是:"width_type"

width, w

更改带阻宽度。 命令的语法是:"宽度"

mix, m

更改带阻混合比例。 命令的语法是:"混合比例"

29.71 低音,低架滤波

使用具有标准高保的音调控制类似响应的双极架式滤波器提升或降低音频的低音(较低)频率。这也称为架式均衡(EQ)。

滤波器接受以下选项:

gain, g

给出在0赫兹的增益。其有用范围约为-20 (较大衰减)到+20(较大提升)。当使用正增益时请注意失真。

frequency, f

设置滤波器的中心频率,因此可以用来扩展或减少要提升或降低的频率范围。 默认值为100赫兹。

width_type, t

设置指定滤波器带宽的方法。

h

赫兹

q

品质因数

o

倍频程

s

斜率

k

千赫兹

width, w

确定滤波器的架式过渡有多陡峭。

poles, p

设置极点的数量。默认值为2。

mix, m

在输出中使用滤波信号的比例。默认值为1。 范围在0到1之间。

channels, c

指定要过滤的通道,默认情况下过滤所有可用通道。

normalize, n

归一化双二阶滤波器系数,默认情况下禁用。 启用它将使直流处的幅值响应归一化为0dB。

transform, a

设置IIR滤波器的变换类型。

di
dii
tdi
tdii
latt
svf
zdf
precision, r

设置过滤精度。

auto

根据环绕滤波器选择自动采样格式。

s16

始终使用有符号16位。

s32

始终使用有符号32位。

f32

始终使用32位浮点。

f64

始终使用64位浮点。

block_size, b

设置用于反向IIR处理的块大小。如果将此值设置为足够高的值 (高于当接近零值时截断的瞬态响应长度),则过滤将成为线性相位,否则如果不够大,它只会产生难看的伪影。

请注意,当设置为非零值时,滤波延迟将正好为这么多样本。

29.71.1 命令

此滤波器支持以下命令:

frequency, f

更改低音频率。 命令的语法是:"频率"

width_type, t

更改低音width_type。 命令的语法是:"width_type"

width, w

更改低音宽度。 命令的语法是:"宽度"

gain, g

更改低音增益。 命令的语法是:"增益"

mix, m

更改低音混合比例。 命令的语法是:"混合比例"

29.72 双二阶滤波器

应用具有给定系数的双二阶IIR滤波器。 其中b0, b1, b2以及a0, a1, a2分别是分子和分母系数。 以及通道, c指定要过滤的通道,默认情况下过滤所有 可用通道。

29.72.1 命令

此滤波器支持以下命令:

a0
a1
a2
b0
b1
b2

更改双二阶滤波器参数。 命令的语法是:"数值"

mix, m

在输出中使用滤波信号的比例。默认值为1。 范围在0到1之间。

channels, c

指定要过滤的通道,默认情况下过滤所有可用通道。

normalize, n

归一化双二阶滤波器系数,默认情况下禁用。 启用它将使直流处的幅值响应归一化为0dB。

transform, a

设置IIR滤波器的变换类型。

di
dii
tdi
tdii
latt
svf
zdf
precision, r

设置过滤精度。

auto

根据环绕滤波器选择自动采样格式。

s16

始终使用有符号16位。

s32

始终使用有符号32位。

f32

始终使用32位浮点。

f64

始终使用64位浮点。

block_size, b

设置用于反向IIR处理的块大小。如果将此值设置为足够高的值 (高于当接近零值时截断的瞬态响应长度),则过滤将成为线性相位,否则如果不够大,它只会产生难看的伪影。

请注意,当设置为非零值时,滤波延迟将正好为这么多样本。

29.73 Bauer立体声至双耳转换

Bauer立体声至双耳转换,可以改善使用耳机听立体声音频的体验。

要启用此滤波器的编译,需要使用以下配置FFmpeg:--enable-libbs2b.

它接受以下参数:

profile

预定义的交叉反馈等级。

default

默认等级(fcut=700,feed=50)。

cmoy

Chu Moy电路(fcut=700,feed=60)。

jmeier

Jan Meier电路(fcut=650,feed=95)。

fcut

截止频率(单位:赫兹)。

feed

反馈等级(单位:赫兹)。

29.74 通道映射

将输入通道重新映射到新位置。

它接受以下参数:

map

将输入映射到输出。参数是一个由‘|’分隔的映射列表,每个映射格式为输入通道-输出通道或者输入通道格式。输入通道可以是输入通道的名称(例如前左FL)或输入通道布局中的索引。输出通道可以是输出通道的名称或输出通道布局中的索引。如果输出通道未提供,则它隐含为从零开始的索引,并且对于每个映射递增一。混合类型的映射是不允许的,将导致解析错误。

channel_layout

输出流的通道布局。如果未指定,则过滤器将根据输出通道名称或映射数量进行猜测。 猜测的布局不一定按映射的顺序包含通道。

如果没有映射,过滤器将隐含地将输入通道映射到输出通道,保持索引。

29.74.1 示例

  • 例如,假设是一个5.1+下混的输入MOV文件,
    ffmpeg -i in.mov -filter 'channelmap=map=DL-FL|DR-FR' out.wav
    

    将从输入的下混通道创建一个标记为立体声的输出WAV文件。

  • 修复通过AAC原生通道顺序编码的不正确的5.1 WAV:
    ffmpeg -i in.wav -filter 'channelmap=1|2|0|5|3|4:5.1' out.wav
    

29.75 通道分拆

将输入音频流的每个通道拆分为一个单独的输出流。

它接受以下参数:

channel_layout

输入流的通道布局。默认值为“立体声”。

channels

描述要作为单独输出流提取的通道的通道布局,或选择“全部”以提取每个输入通道为单独的流。默认值为“全部”。

选择在输入时通道布局中不存在的通道将导致错误。

29.75.1 示例

  • 例如,假设是一个立体声输入MP3文件,
    ffmpeg -i in.mp3 -filter_complex channelsplit out.mkv
    

    将创建一个带有两个音频流的输出Matroska文件,一个包含左声道,另一个包含右声道。

  • 将一个5.1 WAV文件拆分为按通道文件:
    ffmpeg -i in.wav -filter_complex
    'channelsplit=channel_layout=5.1[FL][FR][FC][LFE][SL][SR]'
    -map '[FL]' front_left.wav -map '[FR]' front_right.wav -map '[FC]'
    front_center.wav -map '[LFE]' lfe.wav -map '[SL]' side_left.wav -map '[SR]'
    side_right.wav
    
  • 仅从一个5.1 WAV文件中提取低频效果声道:
    ffmpeg -i in.wav -filter_complex 'channelsplit=channel_layout=5.1:channels=LFE[LFE]'
    -map '[LFE]' lfe.wav
    

29.76 合唱效果

为音频添加一个合唱效果。

可以使单一人声听起来像合唱,但也可以应用于乐器。

合唱类似于带有短延迟的回声效果,但与回声的恒定延迟不同,合唱的延迟通过正弦或三角调制使其变化。 调制深度定义了调制延迟在延迟之前或之后播放的范围。因此延迟的声音听起来会更慢或更快,即延迟的声音围绕原始声音调谐,就像合唱中某些声音稍微跑调一样。

它接受以下参数:

in_gain

设置输入增益。默认值为0.4。

out_gain

设置输出增益。默认值为0.4。

delays

设置延迟。典型延迟约为40ms至60ms。

decays

设置衰减。

speeds

设置速度。

depths

设置深度。

29.76.1 示例

  • 一个单独的延迟:
    chorus=0.7:0.9:55:0.4:0.25:2
    
  • 两个延迟:
    chorus=0.6:0.9:50|60:0.4|0.32:0.25|0.4:2|1.3
    
  • 具有三个延迟的丰满的合唱效果:
    chorus=0.5:0.9:50|60|40:0.4|0.32|0.3:0.25|0.4|0.3:2|2.3|1.3
    

29.77 压缩-展开

压缩或扩展音频的动态范围。

它接受以下参数:

attacks
decays

每个通道的时间列表,用于计算输入信号的瞬时音量。攻击表示音量增加,衰减表示音量减少。对于大多数情况,攻击时间(对音频变响的响应)应比衰减时间更短,因为人耳对突然的响声音频更敏感,而对突然的轻声音频更敏感。 攻击的典型值为0.3秒,而衰减的典型值为0.8秒。 如果指定的攻击和衰减数量少于通道数,最后组的攻击/衰减将用于所有剩余通道。

points

用于转换函数的一组点,指定为相对最大可能信号幅值的分贝值。每组键点列表必须使用以下语法:x0/y0|x1/y1|x2/y2|....或者x0/y0 x1/y1 x2/y2 ....

输入值必须严格递增,但传递函数不必单调递增。点0/0被假定为值,但可以被覆盖(通过0/out-dBn)。典型的传递函数值是-70/-70|-60/-20|1/0.

soft-knee

设置所有接点的曲线半径(以dB为单位)。默认值为0.01。

gain

设置所有传递函数点上应用的附加增益(以dB为单位)。这使得整体增益的调整变得容易。默认值为0。

volume

开始过滤时,为每个通道指定一个假定的初始音量,以dB为单位。这允许用户初始提供一个标称级别,例如,在动态范围压缩操作开始之前,避免在初始信号水平上施加非常大的增益。对于最初安静的音频,典型值为-90 dB。默认值为0。

delay

设置延迟时间(以秒为单位)。输入音频被立即分析,但音频在送到音量调节器之前会有延迟。指定一个近似等于起延和衰减时间的延迟,允许过滤器实际上以预测模式工作而不是响应模式。默认值为0。

29.77.1 示例

  • 使具有安静和响亮段落的音乐适合在嘈杂环境中收听:
    compand=.3|.3:1|1:-90/-60|-60/-40|-40/-30|-20/-20:6:0:-90:0.2
    

    另一个示例,包含耳语和爆炸部分的音频:

    compand=0|0:1|1:-90/-900|-70/-70|-30/-9|0/-3:6:0:0:0
    
  • 当噪音水平较低于信号时,用于降噪的噪音门:
    compand=.1|.1:.2|.2:-900/-900|-50.1/-900|-50/-50:.01:0:-90:.1
    
  • 这是另一种噪音门,这次是当噪音水平高于信号时(在某些方面类似于静噪):
    compand=.1|.1:.1|.1:-45.1/-45.1|-45/-900|0/-900:.01:45:-90:.1
    
  • 从-6dB开始的2:1压缩:
    compand=points=-80/-80|-6/-6|0/-3.8|20/3.5
    
  • 从-9dB开始的2:1压缩:
    compand=points=-80/-80|-9/-9|0/-5.3|20/2.9
    
  • 从-12dB开始的2:1压缩:
    compand=points=-80/-80|-12/-12|0/-6.8|20/1.9
    
  • 从-18dB开始的2:1压缩:
    compand=points=-80/-80|-18/-18|0/-9.8|20/0.7
    
  • 从-15dB开始的3:1压缩:
    compand=points=-80/-80|-15/-15|0/-10.8|20/-5.2
    
  • 压缩器/门:
    compand=points=-80/-105|-62/-80|-15.4/-15.4|0/-12|20/-7.6
    
  • 扩展器:
    compand=attacks=0:points=-80/-169|-54/-80|-49.5/-64.6|-41.1/-41.1|-25.8/-15|-10.8/-4.5|0/0|20/8.3
    
  • 从-6dB开始的硬限制器:
    compand=attacks=0:points=-80/-80|-6/-6|20/-6
    
  • 从-12dB开始的硬限制器:
    compand=attacks=0:points=-80/-80|-12/-12|20/-12
    
  • 在-35dB的硬噪声门:
    compand=attacks=0:points=-80/-115|-35.1/-80|-35/-35|20/20
    
  • 软限制器:
    compand=attacks=0:points=-80/-80|-12.4/-12.4|-6/-8|0/-6.8|20/-2.8
    

29.78 补偿延迟

补偿延迟线是一个基于度量的延迟,用于补偿麦克风或扬声器的不同位置。

例如,您使用分别放置在不同位置的两个麦克风录制吉他。由于声波前沿在正常条件下具有固定速度,麦克风的相位可能会有所不同,具体取决于它们的位置及彼此之间的关系。当这些麦克风处于同步状态时,可以获得最佳的音效混音。请注意,两个麦克风之间约30厘米的距离会使一个麦克风捕获的信号与另一个麦克风捕获的信号相位相反。这使得最终混音听起来郁闷。此过滤器通过向每个麦克风轨道添加不同的延迟以使它们同步,解决了相位问题。

最佳效果可以通过选取一个轨道作为基准,同时逐个同步其他轨道来实现。记住,同步/延迟容差也取决于采样率。更高的采样率能够提供更大的容差。

过滤器接受以下参数:

mm

设置毫米距离。这是用于微调的补偿距离。默认值为0。

cm

设置厘米距离。这是用于调整距离设置的补偿距离。默认值为0。

m

设置米距离。这是用于硬性距离设置的补偿距离。默认值为0。

dry

设置干音量。未处理(干)信号的比例。默认值为0。

wet

设置湿音量。处理后(湿)信号的比例。默认值为1。

temp

设置环境温度(以摄氏度为单位)。这是环境的温度。默认值为20。

29.78.1 命令

此过滤器支持以下所有选项作为命令.

29.79 交叉馈送

应用耳机交叉馈送过滤器。

交叉馈送是将立体声音频录音的左右通道混合在一起的过程。其主要用于减少低频的极端立体声分离。

目的是为听众产生更类似扬声器的声音。

过滤器接受以下选项:

strength

设置交叉馈送的强度。默认值为0.2。允许范围为0到1。这设置了立体声图像边缘部分的低架滤波器增益。默认值为-6dB。当强度设置为1时,最大允许值为-30dB。

range

设置声场宽度。默认值为0.5。允许范围为0到1。这设置了低架滤波器的截止频率。默认值接近1550 Hz的截止频率。范围设置为1时,截止频率设置为2100 Hz。

slope

设置低架滤波器的曲线斜率。默认值为0.5。允许范围为0.01到1。

level_in

设置输入增益。默认值为0.9。

level_out

设置输出增益。默认值为1。

block_size

设置用于反向IIR处理的块大小。如果此值设置得足够高(高于当接近零值截止时截断的脉冲响应长度),过滤将变为线性相位,否则如果设置得不够大,它将仅产生不良伪影。

请注意,当设置为非零值时,过滤延迟将正好为这么多采样点。

29.79.1 命令

此过滤器支持以下所有选项作为命令.

29.80 晶化器

用于音频噪声锐化的简单算法。

此过滤器线性增加每个音频样本之间的差异。

过滤器接受以下选项:

i

设置效果强度(默认值:2.0)。必须在-10.0到0(保持原声)到10.0(最大效果)之间的范围内。要进行反向过滤,请使用负值。

c

启用削波。默认情况下已启用。

29.80.1 命令

此过滤器支持以下所有选项作为命令.

29.81 直流偏移

对音频应用DC偏移。

这可以用于移除音频中的DC偏移(可能是由于录音链中的硬件问题引起的)。DC偏移的效果是减少动态余量,从而降低音量。astats过滤器可用于判断信号是否有DC偏移。

shift

设置直流偏移,允许范围为[-1, 1]。它表示音频的偏移量。

limitergain

可选项。它的值应该远小于1(例如0.05或0.02),用于防止削波。

29.82 去齿施

对音频样本应用去齿处理。

i

设置触发去齿的强度。允许范围为0到1。默认值为0。

m

设置减弱音域中高音部分的量。允许范围为0到1。默认值为0.5。

f

设置去齿处理时保留原始频率内容的比例。允许范围为0到1。默认值为0.5。

s

设置输出模式。

接受以下值:

i

原样传递输入。

o

传递被滤除的齿音。

e

仅传递齿音。

默认值为o.

29.83 对话增强

增强立体声音频中的对话。

此过滤器接受立体声输入并生成环绕(3.0)声道输出。新生成的前置中间声道包含立体声声道中原始的增强语音对话。此过滤器输出的前置左声道和前置右声道与立体声输入中提供的相同。

过滤器接受以下选项:

original

设置到前置中间声道输出中保持的原始中间因子。允许范围为0到1。默认值为1。

enhance

设置应用到前置中间声道输出中的对话增强因子。允许范围为0到3。默认值为1。

voice

设置语音检测因子。允许范围为2到32。默认值为2。

29.83.1 命令

此过滤器支持以下所有选项作为命令.

29.84 动态范围计

测量音频动态范围。

动态范围值为14及更高表示非常动态的素材。8到13之间表示过渡性素材。而低于8的值表示动态范围很差并且经过高度压缩。

过滤器接受以下选项:

length

设置用于将音频切分为等长度段的窗口长度(以秒为单位)。默认值为3秒。

29.85 动态音频标准化

动态音频标准化器。

此过滤器对输入音频应用特定增益以将其峰值幅度带到目标水平(例如0 dBFS)。然而,与更"简单"的标准化算法不同,动态音频标准化器动态地重新调整输入音频的增益因子。这允许对"安静"部分的音频应用额外增益,同时避免失真或剪切"响亮"部分。换句话说,动态音频标准化器将"平衡"安静与响亮部分的音量,使每部分的音量达到相同的目标水平。但请注意,动态音频标准化器实现这一目标却没有应用"动态范围压缩",它将保留音频文件每段内容100%的动态范围。

framelen, f

设置帧长度(以毫秒为单位)。范围为10到8000毫秒。默认值为500毫秒。动态音频标准化器以小块处理输入音频,这些小块被称为帧。这是必要的,因为对于单个采样值,峰值幅度没有意义。相反,我们需要确定连续采样值序列的峰值幅度。默认情况下,动态音频标准化器使用500毫秒的帧长度,这已被证明对大多数文件效果良好。注意,帧的确切长度(以样本数为单位)将根据各输入音频文件的采样率自动确定。

gausssize, g

设置高斯滤波器窗口大小。范围为3到301,必须是奇数。默认值为31。动态音频标准化器最重要的参数可能是高斯平滑滤波器的窗口大小。窗口大小以帧为单位,围绕当前帧指定。为了简单起见,这必须是奇数。默认值31考虑当前帧,以及前15帧和后15帧。使用更大的窗口结果是更强的平滑效果,从而动态音频标准化器的增益调整更缓慢。相反,使用更小的窗口结果是更弱的平滑效果,从而动态音频标准化器的增益调整更快速。window size of the Gaussian smoothing filter. The filter’s window size is specified in frames, centered around the current frame. For the sake of simplicity, this must be an odd number. Consequently, the default value of 31 takes into account the current frame, as well as the 15 preceding frames and the 15 subsequent frames. Using a larger window results in a stronger smoothing effect and thus in less gain variation, i.e. slower gain adaptation. Conversely, using a smaller window results in a weaker smoothing effect and thus in more gain variation, i.e. faster gain adaptation. In other words, the more you increase this value, the more the Dynamic Audio Normalizer will behave like a "traditional" normalization filter. On the contrary, the more you decrease this value, the more the Dynamic Audio Normalizer will behave like a dynamic range compressor.

peak, p

设置目标峰值。这指定了标准化音频输入的最大允许幅度水平。过滤器将尽可能接近目标峰值,同时确保标准化信号绝不会超过此峰值。帧的最大局部增益因子的限制直接由目标峰值决定。默认值为0.95,因此留有5%的余量。建议不要超过此值。

maxgain, m

设置最大增益因子。范围为1.0到100.0,默认值为10.0。动态音频标准化器为每个输入帧确定最大可能(局部)增益因子,即不会导致剪波或失真。最大增益因子由帧的最大幅度采样值决定。动态音频标准化器还通过预设的(全局)最大增益因子来限制帧的最大增益因子。这样可以避免在"静音"或近乎静音的帧中使用过大增益因子。默认情况下,最大增益因子为10.0。对于大多数输入,默认值应该足够,通常不建议增加此值。然而,对于整体音量水平极低的输入,可能需要允许更高的增益因子。请注意,动态音频标准化器不会简单应用一个"硬"的阈值(即切断超过阈值的值),而是应用一个"S型"阈函数。如此一来,增益因子会平滑地趋近平滑值,但永远不会超过该值。

targetrms, r

设置目标RMS值。范围从0.0到1.0。默认值为0.0 - 禁用。 默认情况下,动态音频归一化器执行"峰值"归一化。 这意味着每帧的最大局部增益因子仅由帧中最大幅度的样本定义。 这样可以最大化样本的放大,而不会超过最大信号水平,也就是不会发生剪裁。然而,可选的是,动态音频归一化器也可以将帧的均方根(RMS,Root Mean Square)考虑在内。 在电气工程中,均方根通常用于确定时变信号的功率。因此,均方根被认为是比仅关注信号的峰值幅度更好的"感知响度"近似。因此,通过将所有帧调整到一个恒定的RMS值,可以建立统一的"感知响度"。 如果指定了目标RMS值,帧的局部增益因子定义为会正好产生该RMS值的因子。但是请注意,为防止剪裁,最大局部增益因子仍然受帧中最大幅度样本的限制。

coupling, n

启用通道耦合。默认情况下启用。 默认情况下,动态音频归一化器将以相同的量放大所有通道。 这意味着将对所有通道应用相同的增益因子,即最大可用增益因子由"最响"的通道决定。 然而,在某些录音中,可能会出现不同通道的音量不均匀的情况,例如,一个通道可能比其他通道"更静"。 在这种情况下,可以使用该选项来禁用通道耦合。 这样,每个通道的增益因子将独立确定,仅根据单个通道的最大幅度样本。这允许平衡不同通道的音量。

correctdc, c

启用直流偏移校正。默认情况下禁用。 音频信号(时间域中)是样本值的序列。 在动态音频归一化器中,这些样本值表示在范围-1.0到1.0之间,无论原始输入格式如何。正常情况下,音频信号或"波形"应围绕零点居中。 这意味着如果我们计算文件或单个帧中所有样本的平均值,结果应该是0.0或至少非常接近该值。 然而,如果平均值从0.0显著偏离,无论是正方向还是负方向,这将称为直流偏移或直流偏差。 由于直流偏移显然是不理想的,动态音频归一化器提供了可选的直流偏移校正。 启用直流偏移校正后,动态音频归一化器将确定每个输入帧的平均值或"直流校正"偏移,并从帧的所有样本值中减去该值,从而确保这些样本重新居中到0.0。此外,为了避免帧边界处的"间隙",邻近帧之间的直流校正偏移值将被平滑插值。

altboundary, b

启用替代边界模式。默认情况下禁用。 动态音频归一化器会考虑每帧周围一定的邻域,包括前面的帧和后续的帧。然而,对于位于音频文件起点和终点的"边界"帧,并非所有邻近帧都是可用的。 尤其是对于音频文件的前几帧,前面的帧是未知的。同样,对于音频文件的后几帧,后续帧是未知的。因此,其缺失帧的增益因子应该赋值为多少的问题就出现了。 动态音频归一化器为处理这种情况实现了两种模式。默认的边界模式为缺失帧假设一个正好为1.0的增益因子,从而在输入的开头和结尾分别产生平滑的"淡入"和"淡出"效果。

compress, s

设置压缩因子。范围从0.0到30.0。默认值为0.0。 默认情况下,动态音频归一化器不执行"传统"压缩。 这意味着信号峰值不会被裁剪,从而在每个局部邻域中保持完整的动态范围。 然而,在某些情况下,可能希望将动态音频归一化器的归一化算法与更"传统"的压缩相结合。 为此,动态音频归一化器提供了可选的压缩(阈值化)功能。如果(并且只有在)启用了压缩功能,所有输入帧将在实际归一化过程之前由一个软拐点阈值化函数处理。 简单来说,阈值化函数将裁剪所有幅度超过某个阈值的样本。 然而,动态音频归一化器不会简单地应用一个固定的阈值,而是为每个单独的帧调整阈值。 一般来说,较小的参数会导致更强的压缩,反之亦然。推荐避免使用小于3.0的值,以免出现可闻的失真。

threshold, t

设置目标阈值。该值指定音频输入中允许的最低幅度水平,该水平将被归一化。 如果输入帧的音量高于该值,帧将被归一化。 否则,帧可能完全不被归一化。默认值为0,意味着所有输入帧将被归一化。 此选项主要用于避免对数字噪声进行放大的情况。

channels, h

指定需要过滤的通道,默认情况下过滤所有可用的通道。

overlap, o

指定帧的重叠部分。如果设置为0(默认为0),将不会进行帧重叠。 使用范围大于0小于1的值会使增益调整不那么保守,例如当帧长度选项设置为较小的值时,如果帧长度选项值通过非零重叠进行补偿,则与零重叠情况相比,增益调整在时间上会更加平滑。

curve, v

指定计算帧增益时使用的峰值映射曲线表达式。帧增益的最大输出值仍然受此过滤器之前提到的其他选项限制。

表达式可以包含以下常量:

ch

当前通道号

sn

当前样本号

nb_channels

通道总数

t

以秒表示的时间戳

sr

采样率

p

当前帧峰值

29.85.1 命令

该过滤器支持上述所有选项作为命令.

29.86 耳蜡

使在耳机上的音频收听更舒适。

此滤镜为44.1kHz立体声(即音频CD格式)音频增加"提示信号",使得在耳机上收听时,立体声图像从头内(耳机的标准设置)移到听者外前方(音响的标准设置)。

移植自SoX。

29.87 均衡器

应用双极性峰值均衡滤波器(EQ)。使用此滤波器,可以在选定的频率及其周围增大或减小信号水平,而所有其他频率不会受到影响(与带通和带阻滤波器不同)。

为了生成复杂的均衡曲线,可以多次调用此滤波器,每次使用不同的中心频率。

该滤波器接受以下选项:

frequency, f

设置滤波器的中心频率,以Hz为单位。

width_type, t

设置指定滤波器带宽的方式。

h

Hz

q

品质因数(Q-Factor)

o

倍频程

s

斜率

k

kHz

width, w

以width_type单位指定滤波器的带宽。

gain, g

设置所需的增益或衰减,以dB为单位。 当使用正增益时请注意剪裁问题。

mix, m

设置输出中使用滤波信号的比例。默认值为1。 范围在0到1之间。

channels, c

指定需要过滤的通道,默认情况下过滤所有可用的通道。

normalize, n

归一化二次滤波系数,默认情况下禁用。 启用该选项将DC点的幅度响应归一化至0dB。

transform, a

设置IIR滤波器的变换类型。

di
dii
tdi
tdii
latt
svf
zdf
precision, r

设置过滤的精度。

auto

根据环绕滤镜选择自动采样格式。

s16

始终使用签名16位。

s32

始终使用签名32位。

f32

始终使用浮点32位。

f64

始终使用浮点64位。

block_size, b

设置反向IIR处理的块大小。如果此值设置得足够高(高于接近零值时截断的脉冲响应长度),过滤将变成线性相位,否则如果不足,它将只会产生难听的伪像。

注意,如果设置为非零值,滤波延迟将正好是这么多样本。

29.87.1 示例

  • 在1000Hz处衰减10dB,带宽为200Hz:
    equalizer=f=1000:t=h:width=200:g=-10
    
  • 在Q为1的情况下在1000Hz处增强2dB,并在Q为2的情况下在100Hz处衰减5dB:
    equalizer=f=1000:t=q:w=1:g=2,equalizer=f=100:t=q:w=2:g=-5
    

29.87.2 命令

此滤镜支持以下命令:

frequency, f

更改均衡器频率。 命令的语法为:"频率"

width_type, t

更改均衡器的width_type。 命令的语法为:"宽度类型"

width, w

更改均衡器宽度。 命令的语法为:"宽度"

gain, g

更改均衡器增益。 命令的语法为:"增益"

mix, m

更改均衡器混合比例。 命令的语法为:"混合"

29.88 外部立体声

线性增大左右通道之间的差异,从而为播放添加某种"现场"效果。

此滤镜接受以下选项:

m

设置差异系数(默认值:2.5)。0.0表示单声道效果(两个通道的平均值),1.0表示声音保持不变,-1.0表示左右通道将交换。

c

启用剪裁。默认情况下启用。

29.88.1 命令

此滤镜支持上述所有选项作为命令.

29.89 火线均衡器

应用FIR均衡来实现自定义频率响应。

此滤镜接受以下选项:

gain

设置增益曲线表达式(以dB为单位)。表达式可以包含变量:

f

评估的频率

sr

采样率

ch

通道编号,当禁用多通道评估时设为0

chid

通道标识,请参见libavutil/channel_layout.h,当禁用多通道评估时设为第一个通道标识

chs

通道数量

chlayout

通道布局,请参见libavutil/channel_layout.h

以及函数:

gain_interpolate(f)

基于gain_entry在频率f上插值增益

cubic_interpolate(f)

与gain_interpolate相同,但更加平滑

此选项也可作为命令使用。默认值为gain_interpolate(f).

gain_entry

为gain_interpolate函数设置增益项。表达式可以包含函数:

entry(f, g)

在频率f处存储值为g的增益项

此选项也可作为命令使用。

delay

设置滤波器延迟(以秒为单位)。较高的值意味着更精确。 默认值为0.01.

accuracy

设置滤波器精度(以Hz为单位)。较低的值意味着更精确。 默认值为5.

wfunc

设置窗口函数。可接受的值有:

rectangular

矩形窗口,适用于增益曲线已经平滑的情况

hann

汉宁窗口(默认)

hamming

汉明窗口

blackman

布莱克曼窗口

nuttall3

连续一阶导数的三项努特尔窗口

mnuttall3

最小三项不连续努特尔窗口

nuttall

连续一阶导数的四项努特尔窗口

bnuttall

最小四项不连续努特尔(布莱克曼-努特尔)窗口

bharris

布莱克曼-哈里斯窗口

tukey

图基窗口

fixed

如果启用,使用固定数量的音频样本。这在处理具有较大延迟的过滤时提高了速度。默认是禁用。

multi

启用增益的多通道评估。默认是禁用。

zero_phase

启用零相位模式,通过减去时间戳以补偿延迟。默认是禁用。

scale

设置增益使用的尺度。可接受的值有:

linlin

线性频率、线性增益

linlog

线性频率、对数(分贝)增益(默认)

loglin

对数(八度音阶,20 Hz为0)频率、线性增益

loglog

对数频率、对数增益

dumpfile

设置用于导出的文件,适用于gnuplot。

dumpscale

设置导出文件的尺度。可接受的值与尺度选项相同。默认是linlog。

fft2

启用使用复FFT的双通道卷积。这显著提高速度。默认是禁用。

min_phase

启用最小相位脉冲响应。默认是禁用。

29.89.1 示例

  • 1000 Hz的低通滤波器:
    firequalizer=gain='if(lt(f,1000), 0, -INF)'
    
  • 具有gain_entry的1000 Hz低通滤波器:
    firequalizer=gain_entry='entry(1000,0); entry(1001, -INF)'
    
  • 自定义均衡:
    firequalizer=gain_entry='entry(100,0); entry(400, -4); entry(1000, -6); entry(2000, 0)'
    
  • 通过零相位补偿延迟实现更高延迟:
    firequalizer=delay=0.1:fixed=on:zero_phase=on
    
  • 左声道低通滤波器,右声道高通滤波器:
    firequalizer=gain='if(eq(chid,1), gain_interpolate(f), if(eq(chid,2), gain_interpolate(1e6+f), 0))'
    :gain_entry='entry(1000, 0); entry(1001,-INF); entry(1e6+1000,0)':multi=on
    

29.90 镶边效果

对音频应用镶边效果。

此滤波器接受以下选项:

delay

设置基延迟(单位:毫秒)。范围为0到30。默认值为0。

depth

设置附加扫动延迟(单位:毫秒)。范围为0到10。默认值为2。

regen

设置百分比再生(延迟信号反馈)。范围为-95到95。默认值为0。

width

设置百分比延迟信号与原始信号的混合比例。范围为0到100。默认值为71。

speed

设置每秒扫动次数(单位:赫兹)。范围为0.1到10。默认值为0.5。

shape

设置扫动波形,可以为三角形正弦形。 默认值是正弦形.

phase

为多通道设置扫动波的百分比偏移。范围为0到100。默认值为25。

interp

设置延迟线插值方式,线性二次型。 默认是线性.

29.91 哈斯效应

对音频应用哈斯效应。

请注意,这通常最好应用于单声道信号。 将此滤波器应用于单声道信号时,它会增加方向感并拓宽其立体声空间。

此滤波器接受以下选项:

level_in

设置输入音量。默认是1, 或0dB

level_out

设置输出音量。默认是1, 或0dB。

side_gain

对信号的边缘部分应用的增益。默认是1.

middle_source

设置中间源的类型。可以是以下之一:

left

选择左声道。

right

选择右声道。

mid

选择立体声图像的中间部分信号。

side

选择立体声图像的边界部分信号。

middle_phase

更改中间相位。默认是禁用。

left_delay

设置左声道延迟。默认是2.05毫秒。

left_balance

设置左声道平衡。默认是-1.

left_gain

设置左声道增益。默认是1.

left_phase

更改左相位。默认是禁用。

right_delay

设置右声道延迟。默认是2.12毫秒。

right_balance

设置右声道平衡。默认是1.

right_gain

设置右声道增益。默认是1.

right_phase

更改右相位。默认是启用。

29.92 hdcd

解码高清兼容数字(HDCD)数据。16位PCM流包含嵌入的HDCD代码,并扩展为20位PCM流。

此过滤器支持HDCD的峰值扩展和低音电平增益调整特性,并检测瞬态过滤器标志。

ffmpeg -i HDCD16.flac -af hdcd OUT24.flac

使用此滤波器处理wav时,注意wav的默认编码为16位,因此结果中的20位流将截断回16位。使用类似于-acodec pcm_s24le过滤器之后可获得24位PCM输出。

ffmpeg -i HDCD16.wav -af hdcd OUT16.wav
ffmpeg -i HDCD16.wav -af hdcd -c:a pcm_s24le OUT24.wav

此滤波器接受以下选项:

disable_autoconvert

在滤波器图中禁用任何自动格式转换或重采样。

process_stereo

同时处理立体声通道。如果左右声道的目标增益不一致,则将其视为无效并使用最后可用的目标增益。

cdt_ms

设置代码检测定时器周期(单位:毫秒)。

force_pe

无论是否标记了PE,总是扩展超过-3dBFS的峰值。

analyze_mode

用一个实音替换音频,并调整其幅度以指示解码过程的某些特定方面。将输出文件与原始文件一起加载到音频编辑器中以辅助分析。

analyze_mode=pe:force_pe=true可以用于查看所有高于PE级别的样本。

模式包括:

0, off

禁用

1, lle

每个样本的增益调整级别

2, pe

发生峰值扩展的样本

3, cdt

代码检测定时器处于激活状态时的样本

4, tgm

目标增益在两声道间不匹配时的样本

29.93 耳机效果

应用头相关转移函数(HRTFs),以创建虚拟扬声器围绕用户,使用户通过耳机实现双耳环绕听觉。 HRIR通过附加流提供,每个频道需要一个单声道输入流。

此滤波器接受以下选项:

map

设置用于卷积的输入流映射。 参数是一个由“|”分隔的频道名称列表,按照提供给滤波器的附加流顺序排列。 同时指定了输入流的数量。输入流的数量不得少于第一个流的频道数量加一。

gain

设置音频的增益。值为dB。默认是0。

type

设置处理类型,可以是时间域频域. 。时间域是对音频进行时间域处理,较慢。 is processing audio in time domain which is slow. 频域是对音频进行频率域处理,较快。 默认是 is processing audio in frequency domain which is fast. Default is 频域.

lfe

设置LFE频道的自定义增益。值为dB。默认是0。

size

设置每次处理的帧大小(样本数量)。默认值是1024。允许范围为1024到96000。

hrir

设置HRIR流的格式。 默认值是立体声。另一个值是多声道。 如果值设置为立体声,则附加流的数量应大于等于第一个输入流的频道数量。 此外,每个附加流应具有两个通道。 如果值设置为多声道,则附加流的数量应正好为1。此外附加流的输入频道数量应等于或超过第一个输入流的频道数量的两倍。

29.93.1 示例

  • 使用wav文件作为系数的完整示例,该示例将amovie滤波器用于7.1混音,每个amovie滤波器使用带有IR系数的立体声文件作为输入。文件为虚拟扬声器的每个位置提供系数:
    ffmpeg -i input.wav
    -filter_complex "amovie=azi_270_ele_0_DFC.wav[sr];amovie=azi_90_ele_0_DFC.wav[sl];amovie=azi_225_ele_0_DFC.wav[br];amovie=azi_135_ele_0_DFC.wav[bl];amovie=azi_0_ele_0_DFC.wav,asplit[fc][lfe];amovie=azi_35_ele_0_DFC.wav[fl];amovie=azi_325_ele_0_DFC.wav[fr];[0:a][fl][fr][fc][lfe][bl][br][sl][sr]headphone=FL|FR|FC|LFE|BL|BR|SL|SR"
    output.wav
    
  • 使用wav文件作为系数的完整示例,该示例将amovie滤波器用于7.1混音,但这次采用多声道 hrir格式。
    ffmpeg -i input.wav -filter_complex "amovie=minp.wav[hrirs];[0:a][hrirs]headphone=map=FL|FR|FC|LFE|BL|BR|SL|SR:hrir=multich"
    output.wav
    

29.94 高通滤波

应用一个3dB点频率的高通滤波器。滤波器可以是单极或双极(默认)。 滤波器的衰减率为每极每倍频程6dB(每极每十倍频程20dB)。

此滤波器接受以下选项:

frequency, f

设置频率(单位:赫兹)。默认是3000。

poles, p

设置极的数量。默认是2。

width_type, t

设置用于指定滤波器带宽的方法。

h

赫兹

q

Q因子

o

倍频程

s

斜率

k

千赫兹

width, w

以width_type单位指定滤波器的带宽。 仅适用于双极滤波器。 默认是0.707q,提供了巴特沃斯响应。

mix, m

在输出中使用过滤信号的比例。默认是1。 范围在0到1之间。

channels, c

指定需要过滤的通道,默认过滤所有可用通道。

normalize, n

对双二次系数进行归一化,默认是禁用。 启用时将使直流的幅值响应归一化为0dB。

transform, a

设置IIR滤波器的变换类型。

di
dii
tdi
tdii
latt
svf
zdf
precision, r

设置过滤的精度。

auto

选择环绕滤波器时的自动采样格式。

s16

始终使用有符号16位。

s32

始终使用有符号32位。

f32

始终使用浮点32位。

f64

始终使用浮点64位。

block_size, b

设置反向IIR处理使用的块大小。如果此值设置为充分高(高于当接近零值时截断的脉冲响应长度),则过滤将成为线性相位,否则若未充分大,会产生严重的伪影。

请注意,当设置为非零值时,滤波器延迟将确切等于此样本数量。

29.94.1 命令

此滤波器支持以下命令:

frequency, f

更改高通频率。 命令的语法是:"frequency"

width_type, t

更改高通width_type。 命令的语法是:"width_type"

width, w

更改高通带宽。 命令的语法是:"width"

mix, m

更改高通混合。 命令的语法是:"mix"

29.95 合并

将多个输入流合并为一个多声道流。

它接受以下参数:

inputs

输入流的数量。默认是2。

channel_layout

所需的输出声道布局。默认是立体声。

map

将输入的频道映射到输出。参数是一个“|”分隔的映射列表,格式为input_idx.in_channel-out_channelinput_idx是输入流的从零开始的索引。in_channel可以是输入频道的名称(例如FL表示前左)或其在指定输入流中的索引。out_channel是输出频道的名称。

当未明确指定映射时,滤波器将尝试猜测映射。 它首先尝试找到一个未使用的匹配输入频道;如果失败,则选择第一个未使用的输入频道。

合并3个输入(具有正确设置的频道布局):

ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex join=inputs=3 OUTPUT

从6个单通道流构建5.1输出:

ffmpeg -i fl -i fr -i fc -i sl -i sr -i lfe -filter_complex
'join=inputs=6:channel_layout=5.1:map=0.0-FL|1.0-FR|2.0-FC|3.0-SL|4.0-SR|5.0-LFE'
out

29.96 ladspa

加载LADSPA(Linux音频开发者的简单插件API)插件。

要启用此滤波器的编译,需要使用以下选项配置FFmpeg:--enable-ladspa.

file, f

指定要加载的LADSPA插件库的名称。 如果环境变量LADSPA_PATH已定义,将在LADSPA_PATH的冒号分隔列表中指定的每一个目录中搜索该LADSPA插件,否则将在标准LADSPA路径中搜索,这些路径按以下顺序:HOME/.ladspa/lib/, /usr/local/lib/ladspa/, /usr/lib/ladspa/.

plugin, p

指定库中的插件。有些库只包含一个插件,但其他库可能包含多个插件。如果未设置此选项,过滤器将列出指定库中所有可用的插件。

controls, c

设置“|”分隔的控件列表,这些控件是零个或多个浮点值,用以确定加载插件的行为(例如延迟、阈值或增益)。 控件需要使用以下语法定义: c0=value0|c1=value1|c2=value2|..., 其中valuei是设置在i号控件上的值。 或者,它们也可以使用以下语法定义:value0|value1|value2|..., 其中valuei是设置在i号控件上的值。 如果controls设置为help, 将输出所有可用控件及其有效范围。

sample_rate, s

指定采样率,默认是44100。仅当插件没有输入时使用。

nb_samples, n

设置每个输出帧每个频道的样本数量,默认是1024。仅当插件没有输入时使用。

duration, d

设置源音频的最小持续时间。请参阅(ffmpeg-utils)ffmpeg-utils(1)手册中的“时间长度”部分。有关接受的语法。 请注意,生成的音频的持续时间可能会超过指定的时间, 因为生成的音频总是在一个完整帧的末尾被截断。 如果未指定,或表达的持续时间为负值,则假定音频将永远生成。 仅当插件没有输入时使用。

latency, l

启用延迟补偿,默认情况下禁用。 仅当插件有输入时使用。

29.96.1 示例

  • 列出 amp (LADSPA 示例插件) 库中的所有可用插件:
    ladspa=file=amp
    
  • 列出vcf_notch插件的所有可用控制及其有效范围VCF,从
    ladspa=f=vcf:p=vcf_notch:c=help
    
  • 使用Computer Music Toolkit(CMT) 插件库模拟低质量音频设备:
    ladspa=file=cmt:plugin=lofi:controls=c0=22|c1=12|c2=12
    
  • 使用 TAP 插件 (Tom 的音频处理插件) 为音频添加混响:
    ladspa=file=tap_reverb:tap_reverb
    
  • 生成白噪声,幅度为 0.2:
    ladspa=file=cmt:noise_source_white:c=c0=.2
    
  • 使用插件生成 20 bpm 的点击声C* Click - Metronome,从C* Audio Plugin Suite(CAPS) 库:
    ladspa=file=caps:Click:c=c1=20'
    
  • 应用C* Eq10X2 - Stereo 10-band equaliser效果:
    ladspa=caps:Eq10X2:c=c0=-48|c9=-24|c3=12|c4=2
    
  • 使用 Steve Harris 的快速前瞻限制器将音量增加 20dBSWH Plugins集合:
    ladspa=fast_lookahead_limiter_1913:fastLookaheadLimiter:20|0|2
    
  • 使用 Steve Harris 的多频段均衡器衰减低频SWH Plugins集合:
    ladspa=mbeq_1197:mbeq:-24|-24|-24|0|0|0|0|0|0|0|0|0|0|0|0
    
  • 使用Narrower减少立体声图像,从C* Audio Plugin Suite(CAPS) 库:
    ladspa=caps:Narrower
    
  • 另一个白噪声,现在使用C* Audio Plugin Suite(CAPS) 库:
    ladspa=caps:White:.2
    
  • 一些分形噪声,使用C* Audio Plugin Suite(CAPS) 库:
    ladspa=caps:Fractal:c=c1=1
    
  • 使用VLevel插件的动态音量规范化:
    ladspa=vlevel-ladspa:vlevel_mono
    

29.96.2 命令

此过滤器支持以下命令:

cN

修改N的控制值。

如果指定的值无效,则将忽略并保留之前的值。

29.97 loudnorm

EBU R128响度标准化。包括动态和线性标准化模式。 支持单次通行(直播流、文件)和双次通行(文件)模式。 此算法可以针对 IL、LRA 和最大真峰值进行目标设定。在动态模式下,为了准确 检测真峰值,音频流将被上采样到 192 kHz。 使用-ar选项或aresample过滤器显式设置输出采样率。

过滤器接受以下选项:

I, i

设置综合响度目标。 范围为 -70.0 - -5.0。默认值为 -24.0。

LRA, lra

设置响度范围目标。 范围为 1.0 - 50.0。默认值为 7.0。

TP, tp

设置最大真峰值。 范围为 -9.0 到 +0.0。默认值为 -2.0。

measured_I, measured_i

输入文件的 IL 测量值。 范围为 -99.0 到 +0.0。

measured_LRA, measured_lra

输入文件的 LRA 测量值。 范围为 0.0 到 99.0。

measured_TP, measured_tp

输入文件的真峰值测量值。 范围为 -99.0 到 +99.0。

measured_thresh

输入文件的阈值测量值。 范围为 -99.0 到 +0.0。

offset

设置偏移增益。增益在真峰值限制器之前应用。 范围为 -99.0 到 +99.0。默认值为 +0.0。

linear

通过线性缩放源音频进行标准化。measured_I, measured_LRA, measured_TP, 和measured_thresh都必须指定。目标 LRA 不应 低于源 LRA,并且综合响度的变化不应导致真峰值 超过目标 TP。如果不满足这些条件,标准化模式将退回到动态。 选项是truefalse。默认值是true.

dual_mono

将单声道输入文件视为 "双单声道"。如果单声道文件打算在 立体声系统上播放,其 EBU R128 测量将感知不正确。 如果设置为true,此选项将补偿此影响。 多通道输入文件不受此选项影响。 选项为 true 或 false。默认值为 false。

print_format

设置统计信息的打印格式。选项为 summary、json 或 none。 默认值为 none。

29.98 lowpass

应用具有 3dB 截止点频率的低通滤波器。 滤波器可以是单极或双极的(默认是双极)。 滤波器的每极衰减速率为每八度 6dB(每十倍频 20dB)。

过滤器接受以下选项:

frequency, f

以 Hz 设置频率。默认值为 500。

poles, p

设置极数。默认值为 2。

width_type, t

设置用于指定滤波器带宽的方法。

h

Hz

q

质量因数

o

八度

s

坡度

k

千赫

width, w

以 width_type 单位指定滤波器的带宽。 仅适用于双极滤波器。 默认值为 0.707q,提供一个巴特沃斯响应。

mix, m

在输出中使用过滤信号的程度。默认值为 1。 范围介于 0 和 1 之间。

channels, c

指定要过滤的通道,默认情况下过滤所有可用通道。

normalize, n

归一化双二阶系数,默认情况下禁用。 启用后会在直流时将幅度响应归一化到 0dB。

transform, a

设置 IIR 滤波器的变换类型。

di
dii
tdi
tdii
latt
svf
zdf
precision, r

设置滤波的精度。

auto

根据环绕过滤器选择自动样本格式。

s16

始终使用有符号 16 位。

s32

始终使用有符号 32 位。

f32

始终使用浮点数 32 位。

f64

始终使用浮点数 64 位。

block_size, b

为逆 IIR 处理设置使用的块大小。如果此值设置为足够大的 值(大于接近零值时截短的冲击响应长度),过滤将成为线性相位,否则如果不够大 可能会产生不良伪影。

请注意,如果设置为非零值,则过滤延迟将分别为指定的采样数量。

29.98.1 示例

  • 仅对 LFE 通道进行低通处理,如果不存在 LFE,则什么也不做:
    lowpass=c=LFE
    

29.98.2 命令

此过滤器支持以下命令:

frequency, f

更改低通频率。 命令的语法为:"频率"

width_type, t

更改低通宽度类型。 命令的语法为:"宽度类型"

width, w

更改低通宽度。 命令的语法为:"宽度"

mix, m

更改低通混合比例。 命令的语法为:"混合"

29.99 lv2

加载一个 LV2 (LADSPA Version 2) 插件。

要启用此过滤器的编译,您需要使用以下命令配置 FFmpeg--enable-lv2.

plugin, p

指定插件 URI。您可能需要对 ':' 进行转义。

controls, c

设置 '|' 分隔的控件列表,这些控件是零个或多个决定加载的插件行为的浮点值(例如延迟、 阈值或增益)。 如果controls设置为help,将打印所有可用控件及其有效范围。

sample_rate, s

指定采样率,默认为 44100。仅当插件没有 输入时使用。

nb_samples, n

设置每个输出帧的每通道样本数量,默认值 为 1024。仅当插件没有输入时使用。

duration, d

设置源音频的最短持续时间。参见(ffmpeg-utils) ffmpeg-utils(1) 手册中的时间持续时间部分有关接受的语法。 请注意,生成的音频的持续时间可能会超过指定的时间, 因为生成的音频总是在一个完整帧的末尾被截断。 如果未指定,或表达的持续时间为负值,则假定音频将永久生成。 仅当插件没有输入时使用。

29.99.1 示例

  • 应用 Calf 的低音增强插件:
    lv2=p=http\\\\://calf.sourceforge.net/plugins/BassEnhancer:c=amount=2
    
  • 应用 Calf 的黑胶插件:
    lv2=p=http\\\\://calf.sourceforge.net/plugins/Vinyl:c=drone=0.2|aging=0.5
    
  • 应用 ArtyFX 的位干扰器插件:
    lv2=p=http\\\\://www.openavproductions.com/artyfx#bitta:c=crush=0.3
    

29.99.2 命令

此过滤器支持插件作为命令导出的所有选项。

29.100 mcompand

多频段压缩或扩展音频的动态范围。

输入音频通过 4 阶 Linkwitz-Riley IIR 被分为多个频段。 这类比于扬声器的分频器,且在没有压缩/扩展操作时提供平坦的频率响应。

它接受以下参数:

args

此选项的语法为: attack,decay,[attack,decay..] 软膝点 crossover_frequency [delay [initial_volume [gain]]] | attack,decay ... 每个项目的解释请参考 compand 滤波器文档。

29.101 pan

以特定增益级别混合通道。过滤器接受输出 通道布局,后跟一组通道定义。

此过滤器还为高效重新映射音频流的通道进行了设计。

过滤器接受以下形式的参数: "l|输出定义|输出定义|..."

l

输出通道布局或通道数量

outdef

输出通道规格,形式为: "输出名称=[增益*]输入名称[(+-)[增益*]输入名称...]"

out_name

要定义的输出通道, 既可以是通道名称 (FL, FR 等),也可以是通道编号 (c0, c1 等)

gain

通道的乘法系数,设置为 1 时保持音量不变

in_name

要使用的输入通道,请参见输出名称获取详情;不能混合命名和编号的输入通道

如果通道规格中的 '=' 被替换为 '<',则该规格的增益将重新 归一化,总和为 1,从而避免剪辑噪音。

29.101.1 混音示例

例如,如果您想要从立体声向单声道混音,但左声道的权重更大:

pan=1c|c0=0.9*c0+0.1*c1

一个自定义的立体声向下混音,自动适用于 3、4、5 和 7 通道环绕:

pan=stereo| FL < FL + 0.5*FC + 0.6*BL + 0.6*SL | FR < FR + 0.5*FC + 0.6*BR + 0.6*SR

请注意ffmpeg集成了一个默认的向下混音(和向上混音)系统 应该优先使用(见 "-ac" 选项),除非您有非常具体的需求。

29.101.2 重新映射示例

如果且仅当满足以下条件时,通道重新映射才会有效:

  • 增益系数为 0 或 1,
  • 每通道输出仅有一个输入,

如果以上所有条件都满足,过滤器将通知用户("检测到纯通道映射"),并使用优化且无损的方法进行 重新映射。

例如,如果您有一个 5.1 源,并希望通过丢弃多余的通道生成一个立体声音频流:

pan="stereo| c0=FL | c1=FR"

对于相同的源,您也可以交换前左和前右通道并保持输入通道布局:

pan="5.1| c0=c1 | c1=c0 | c2=c2 | c3=c3 | c4=c4 | c5=c5"

如果输入是立体声音频流,您可以静音前左通道(并且仍然保持立体声通道布局):

pan="stereo|c1=c1"

如果输入是立体声音频流,您可以将右通道复制到前左和前右通道:

pan="stereo| c0=FR | c1=FR"

29.102 replaygain

ReplayGain 扫描滤波器。此过滤器将音频流作为输入并 保持输出不变。 在过滤结束时显示track_gaintrack_peak.

该过滤器接受以下导出的只读选项:

track_gain

在流结束时导出的轨道增益(单位:dB)。

track_peak

在流结束时导出的轨道峰值。

29.103 resample

转换音频样本格式、采样率和通道布局。这并非 设计为直接使用。

29.104 rubberband

用 librubberband 应用时间伸展和音调移位。

要启用此过滤器的编译,您需要使用以下命令配置 FFmpeg--enable-librubberband.

过滤器接受以下选项:

tempo

设置速度刻度因子。

pitch

设置音调刻度因子。

transients

设置瞬态检测器。 可能的值为:

清晰
混合
平滑
detector

设置检测器。 可能的值为:

复合
打击乐
柔和
phase

设置相位。 可能的值为:

层流
独立
window

设置处理窗口大小。 可能的值为:

标准
smoothing

设置平滑功能。 可能的值为:

关闭
开启
formant

在移调时启用共振峰保留。 可能的值为:

移调
保留
pitchq

设置调音质量。 可能的值为:

质量
速度
一致性
channels

设置通道。 可能的值为:

独立
一起

29.104.1 命令

此过滤器支持以下命令:

tempo

更改过滤器速度刻度因子。 命令的语法为:"速度"

pitch

更改过滤器音调刻度因子。 命令的语法为:"音调"

29.105 sidechaincompress

此过滤器的行为类似于普通压缩器,但能够使用第二输入信号对检测到的信号进行压缩。 它需要两个输入流并返回一个输出流。 第一个输入流将根据第二个流信号进行处理。 处理后的信号可以在后续的处理阶段中与其他过滤器一起过滤。参见合并过滤器。

过滤器接受以下选项:

level_in

设置输入增益。默认值为 1。范围为 0.015625 到 64。

mode

设置压缩器操作模式。可以是upwarddownward。 默认值是downward.

threshold

如果第二流的信号超过此级别,它将影响第一流的增益减少。 默认值是 0.125。范围是 0.00097563 到 1。

ratio

设置信号减弱的比例。1:2 意味着,如果电平超过阈值 4dB,减少后将仅超过阈值 2dB。 默认值是 2。范围是 1 到 20。

attack

信号需超过阈值一定毫秒数后才开始减少增益的时间。 默认值是 20 毫秒。范围是 0.01 到 2000 毫秒。

release

信号需低于阈值一定毫秒数后减少量再次降低的时间。 默认值是 250 毫秒。范围是 0.01 到 9000 毫秒。

makeup

设置处理后信号将被放大的量。 默认值为 1。范围是 1 到 64。

knee

在阈值周围曲作用力,让增益减少更柔和。 默认值是 2.82843。范围是 1 到 8。

link

选择是否average侧链流所有通道的平均电平 还是较大的(maximum)侧链流通道的电平影响减少。 默认值是average.

detection

应在情况下采取准确信号peak或在情况下取 RMS 信号rms。 默认值是rms,主要更平滑。

level_sc

设置侧链增益。默认值是 1。范围是 0.015625 到 64。

mix

压缩信号在输出中使用的程度。 默认值是 1。范围是 0 到 1。

29.105.1 命令

此过滤器支持上述所有选项作为命令.

29.105.2 示例

  • 完整 ffmpeg 示例,使用两个音频输入,第一个输入根据第二个输入信号进行压缩,随后将压缩后的信号与第二个输入合并:
    ffmpeg -i main.flac -i sidechain.flac -filter_complex "[1:a]asplit=2[sc][mix];[0:a][sc]sidechaincompress[compr];[compr][mix]amerge"
    

29.106 侧链门

侧链门像普通(宽频)门一样工作,但有能力在发送到增益减少阶段之前过滤检测到的信号。 通常,门使用全范围信号来检测高于阈值的电平。 例如:如果从侧链信号中切除所有较低频率,门仅会在高频不足时降低音轨音量。使用此技巧,您可以减少自然鼓的共振或消除从严重失真吉他中消音重击的“隆隆声”。 它需要两个输入流并返回一个输出流。 第一个输入流将根据第二个流信号进行处理。

过滤器接受以下选项:

level_in

设置过滤前的输入电平。 默认值是 1。允许范围是 0.015625 到 64。

mode

设置操作模式。可以是upwarddownward。 默认值是downward。 如果设置为upward模式,信号的较高部分将被放大,向上扩展动态范围。 否则,在downward情况下,信号的较低部分将被减少。

range

设置当信号低于阈值时的增益减少水平。 默认值是 0.06125。允许范围是 0 到 1。 将此设置为 0 禁用减少,然后过滤器的行为如同扩展器。

threshold

如果信号上升至超过该级别,增益减少将被释放。 默认值是 0.125。允许范围是 0 到 1。

ratio

设置信号减少的比例。 默认值是 2。允许范围是 1 到 9000。

attack

信号必须在超过阈值前升高一定毫秒数后才停止增益减少。 默认值是 20 毫秒。允许范围是 0.01 到 9000 毫秒。

release

信号必须在低于阈值后下降一定毫秒数后再次增加减少量。 默认值是 250 毫秒。 允许范围是 0.01 到 9000 毫秒。

makeup

设置处理后信号的放大量。 默认值是 1。允许范围是 1 到 64。

knee

在阈值周围曲作用力,让增益减少更温和。 默认值是 2.828427125。允许范围是 1 到 8。

detection

选择是应该采取确切信号进行检测还是类似 RMS 的信号。 默认值是 rms。可以是 peak 或 rms。

link

选择是所有通道的平均电平还是更高的通道影响减少。 默认值是 average。可以是 average 或 maximum。

level_sc

设置侧链增益。默认值是 1。范围是 0.015625 到 64。

29.106.1 命令

此过滤器支持上述所有选项作为命令.

29.107 静音检测

检测音频流中的静音。

当检测到输入音频音量小于或等于噪声容忍值且持续时间大于或等于最小检测噪声持续时间时,过滤器会记录一条消息。

打印的时间和持续时间均以秒表示。lavfi.silence_startlavfi.silence_start.X元数据键 在时间戳等于或超过检测持续时间的第一帧上设置,并包含静音的第一帧的时间戳。

lavfi.silence_durationlavfi.silence_duration.Xlavfi.silence_endlavfi.silence_end.X元数据 键设置在静音后的第一帧上。如果mono启用,并且每个通道单独评估,则使用后缀键,.X对应于通道号。X corresponds to the channel number.

过滤器接受以下选项:

noise, n

设置噪声容忍值。可以用 dB 指定(如果指定值后附加“dB”)或振幅比来设置。默认值是 -60dB 或 0.001。

duration, d

设置静音检测通知持续时间(默认是 2 秒)。参见(ffmpeg-utils)ffmpeg-utils(1)手册中的持续时间部分以获取接受的语法。

mono, m

将每个通道单独处理,而不是合并处理。默认未启用。

29.107.1 示例

  • 检测静音 5 秒,噪声容忍值为 -50dB:
    silencedetect=n=-50dB:d=5
    
  • 带有完整示例ffmpeg以检测 0.0001 噪声容忍值的静音silence.mp3:
    ffmpeg -i silence.mp3 -af silencedetect=noise=0.0001 -f null -
    

29.108 静音移除

从音频的开头、中间或结尾移除静音。

过滤器接受以下选项:

start_periods

此值用来表示是否应在音频的开头修剪静音。值为零表示不修剪开头的静音。 如果指定一个非零值,它将修剪开头的音频直到找到非静音部分。 通常,修剪音频开头的静音时,start_periods将被1设置,但可以将其增加到更高的值以修剪所有音频直到特定数量的非静音周期。 默认值为0.

start_duration

指定检测到非静音后需存在一定持续时间才停止修剪音频。 通过增加持续时间,可以将噪音突发看作静音并修剪掉。 默认值为0.

start_threshold

此值表示什么样的样本值应被看作静音。 对于数字音频,0可能就足够了,但对于来自模拟的音频,您可能需要增加值以考虑背景噪音。 可以是 dB 指定(如果指定值后附加“dB”)或振幅比。 默认值为0.

start_silence

指定开头静音最大持续时间,在修剪后依然保留。默认是 0,相当于修剪所有检测为静音的样本。

start_mode

指定多通道音频开始处的静音结束检测模式。 可以是任意全部。 默认值为任意。 使用任意时,任何通道的任何样本被检测为非静音都会触发开头静音修剪的结束。 使用全部时,仅当每个通道的每个样本都被检测为非静音时才会触发开头静音修剪的结束,使用受限。

stop_periods

设置修剪末尾静音的次数。 如果指定一个正值,它将修剪音频在找到指定静音周期后。 要从文件中间移除静音,请指定一个stop_periods为负值。 此值会被视为正值,并用于指示效果应按stop_periods所指定的方式重新启动处理,使其适合移除音频中间的静音周期。 默认值为0.

stop_duration

指定静音需存在的持续时间才能停止复制音频。 通过指定更高的持续时间,可以将想保留的静音保留在音频中。 默认值是0.

stop_threshold

此值与start_threshold对应,但用于修剪音频末尾的静音。 可以是 dB 指定(如果指定值后附加“dB”)或振幅比。 默认值为0.

stop_silence

指定末尾静音最大持续时间,在修剪后依然保留。 默认是 0,相当于修剪所有检测为静音的样本。

stop_mode

指定多通道音频起始点后静音开始检测模式。 可以是任意全部。 默认是全部。 使用任意时,任何通道的任何样本检测为静音都会触发开始点后静音修剪的开始,使用受限。 使用全部时,仅当每个通道的每个样本都检测为静音时才会触发开始点后静音修剪的开始。

detection

设定静音的检测方式。

avg

移动窗口中样本绝对值的平均值。

rms

移动窗口中样本绝对值的平方根均值。

peak

移动窗口中样本绝对值的最大值。

median

移动窗口中样本绝对值的中位值。

ptp

移动窗口中样本最大峰值与最小峰值的绝对差。

dev

移动窗口中样本值的标准差。

默认值为rms.

window

设定用于计算检测静音窗口样本大小的持续时间秒数。 使用0将有效禁用任何窗口操作,并仅使用每通道单样本进行静音检测。 在这种情况下,可能还需要将start_silence和/或stop_silence设置为非零值,同时也要设置start_duration和/或stop_duration为非零值。 默认值是0.02。允许范围为010.

timestamp

设置每个音频帧输出时间戳的处理模式。

write

完全时间戳重写,仅保留第一帧的开始时间。

copy

未丢弃的帧保留与输入音频帧相同的时间戳。

默认值为write.

29.108.1 示例

  • 以下示例展示了如何使用此过滤器来开始录音,避免通常发生在按下录音按钮和开始表演之间的延迟:
    silenceremove=start_periods=1:start_duration=5:start_threshold=0.02
    
  • 修剪从头到尾检测到的所有静音,其中音频中静音超过 1 秒:
    silenceremove=stop_periods=-1:stop_duration=1:stop_threshold=-90dB
    
  • 修剪所有检测到的数字静音样本,使用峰值检测,从头到尾,其中音频静音超过 0 个样本,数字静音在所有通道的相同位置被检测到:
    silenceremove=window=0:detection=peak:stop_mode=all:start_mode=all:stop_periods=-1:stop_threshold=0
    
  • 修剪从头到尾每隔第二个检测到的静音周期,其中音频中每个静音周期的静音超过 1 秒:
    silenceremove=stop_periods=-2:stop_duration=1:stop_threshold=-90dB
    
  • 与上面类似,但在修剪的静音周期中最多保留 0.5 秒的静音:
    silenceremove=stop_periods=-2:stop_duration=1:stop_threshold=-90dB:stop_silence=0.5
    
  • 与上面类似,但在音频开头最多保留 1.5 秒的静音:
    silenceremove=stop_periods=-2:stop_duration=1:stop_threshold=-90dB:stop_silence=0.5:start_periods=1:start_duration=1:start_silence=1.5:stop_threshold=-90dB
    

29.108.2 命令

此滤镜支持上述一些选项,如命令.

29.109 sofalizer

SOFAlizer 使用头相关传递函数 (HRTF) 创建虚拟扬声器,以便通过耳机进行双耳监听(支持最多 9 声道的音频格式)。 HRTFs 存储在 SOFA 文件中(参见http://www.sofacoustics.org/此数据库)。 SOFAlizer 由奥地利科学院声学研究所 (ARI) 开发。

要启用此滤镜的编译,需要使用以下参数配置 FFmpeg--enable-libmysofa.

过滤器接受以下选项:

sofa

设置用于渲染的 SOFA 文件。

gain

设置应用于音频的增益。值以分贝为单位。默认值为 0。

rotation

设置虚拟扬声器的旋转角度(单位:度)。默认值为 0。

elevation

设置虚拟扬声器的倾斜角度(单位:度)。默认值为 0。

radius

设置近场 HRTFs 中扬声器与听者之间的距离(单位:米)。默认值为 1。

type

设置处理类型。可以是timefreq. time是对时域音频进行处理,速度较慢。freq是对频域音频进行处理,速度较快。 默认值为freq.

speakers

设置虚拟扬声器的自定义位置。此选项的语法是: <CH> <AZIM> <ELEV>[|<CH> <AZIM> <ELEV>|...]。 每个虚拟扬声器由短声道名称、方位角和倾斜角(单位:度)描述。 每组扬声器描述以 '|' 分隔。 例如,要覆盖前左和前右声道的位置,使用: 'speakers=FL 45 15|FR 345 15'。 不识别的声道名称的描述将被忽略。

lfegain

设置 LFE 声道的自定义增益。值以分贝为单位。默认值为 0。

framesize

设置自定义帧大小,以样本数表示。默认值为 1024。 允许范围是从 1024 到 96000。当选项 'type' 设置为freq.

normalize

在导入 SOFA 文件时,是否应对所有 IR 进行归一化。 默认情况下启用。

interpolate

当确切位置不匹配时,是否应对最近的 IR 与邻近的 IR 进行插值。 默认情况下禁用。

minphase

加载 SOFA 文件时,是否对所有 IR 应用最小相位处理。 默认情况下禁用。

anglestep

设置邻近搜索角度步长。仅当选项interpolate启用时使用。

radstep

设置邻近搜索半径步长。仅当选项interpolate启用时使用。

29.109.1 示例

  • 使用 ClubFritz6 SOFA 文件:
    sofalizer=sofa=/path/to/ClubFritz6.sofa:type=freq:radius=1
    
  • 使用 ClubFritz12 SOFA 文件并设置更大的半径和小的旋转:
    sofalizer=sofa=/path/to/ClubFritz12.sofa:type=freq:radius=2:rotation=5
    
  • 与上面类似,但设置前左、前右、后左和后右的扬声器位置以及自定义增益:
    "sofalizer=sofa=/path/to/ClubFritz6.sofa:type=freq:radius=2:speakers=FL 45|FR 315|BL 135|BR 225:gain=28"
    

29.110 speechnorm

语音归一化处理器。

此滤镜根据阈值调整音频样本的每个半周期(本地样本集均高于或低于零点且位于两个最近零交点之间),以便音频在受控条件下达到目标峰值。

过滤器接受以下选项:

peak, p

设置扩展目标峰值。这指定了归一化音频输入的最高绝对幅度级别。 默认值为 0.95。允许范围是 0.0 到 1.0。

expansion, e

设置最大扩展因子。允许范围是 1.0 到 50.0。默认值为 2.0。 此选项控制最大本地半周期样本的扩展。最大扩展的结果是使本地峰值达到目标峰值但不超过目标值,同时新旧峰值比不会超过此选项值。

compression, c

设置最大压缩因子。允许范围是 1.0 到 50.0。默认值为 2.0。 该选项仅在threshold选项值大于 0.0 的情况下使用,此时当本地峰值低于或等于threshold时,属于该半周期峰值的所有样本都会按当前压缩因子进行压缩。

threshold, t

设置阈值。默认值为 0.0。允许范围是 0.0 到 1.0。 此选项指定哪些样本的半周期将被压缩,哪些将被扩展。任何本地峰值低于或等于该选项值的半周期样本将通过当前压缩因子进行压缩;否则它们将通过扩展因子扩展,以便达到目标峰值但不超越。

raise, r

设置扩展因子在每个半周期样本中的提升量。默认值为 0.001。 允许范围是 0.0 到 1.0。这控制扩展因子在每个半周期内的提升速度,直到达到expansion值。 设置此选项值过高可能导致失真。

fall, f

设置压缩因子在每个半周期样本中的提升量。默认值为 0.001。 允许范围是 0.0 到 1.0。这控制压缩因子在每个半周期内的提升速度,直到达到compression值。

channels, h

指定要过滤的声道,默认情况下过滤所有可用的声道。

invert, i

启用反向过滤,默认情况下禁用。此选项反转threshold的解释逻辑。当启用时,任何其本地峰值小于或等于threshold选项的半周期样本将被扩展,否则将被压缩。

link, l

链接声道以计算应用到每个过滤声道样本的增益,默认情况下禁用。 禁用时,每个过滤声道增益计算独立;否则,启用此选项时,将使用所有可能的增益中的最小值。

rms, m

设置扩展目标 RMS 值。这指定了归一化音频输入的最高允许 RMS 级别。 默认值为 0.0,因此禁用。允许范围是 0.0 到 1.0。

29.110.1 命令

此滤镜支持所有上述选项作为命令.

29.110.2 示例

  • 微弱且缓慢的放大:
    speechnorm=e=3:r=0.00001:l=1
    
  • 中等且缓慢的放大:
    speechnorm=e=6.25:r=0.00001:l=1
    
  • 强劲且快速的放大:
    speechnorm=e=12.5:r=0.0001:l=1
    
  • 非常强劲且快速的放大:
    speechnorm=e=25:r=0.0001:l=1
    
  • 极限且快速的放大:
    speechnorm=e=50:r=0.0001:l=1
    

29.111 stereotools

此滤镜具有一些管理立体声音频的实用工具,用于将 M/S 立体声录音转换为 L/R 信号,同时控制参数,或扩展母带曲目中的立体声图像。

过滤器接受以下选项:

level_in

设置滤镜前两声道的输入音量级别。默认值为 1。 允许范围是 0.015625 到 64。

level_out

设置滤镜后两声道的输出音量级别。默认值为 1。 允许范围是 0.015625 到 64。

balance_in

设置两声道之间的输入平衡。默认值为 0。 允许范围是 -1 到 1。

balance_out

设置两声道之间的输出平衡。默认值为 0。 允许范围是 -1 到 1。

softclip

启用软削波。会产生模拟失真而不是刺耳的数字 0dB 削波。默认情况下禁用。

mutel

静音左声道。默认情况下禁用。

muter

静音右声道。默认情况下禁用。

phasel

改变左声道的相位。默认情况下禁用。

phaser

改变右声道的相位。默认情况下禁用。

mode

设置立体声模式。可用值为:

lr>lr

左/右到左/右,这是默认设置。

lr>ms

左/右到中/侧。

ms>lr

中/侧到左/右。

lr>ll

左/右到左/左。

lr>rr

左/右到右/右。

lr>l+r

左/右到左 + 右。

lr>rl

左/右到右/左。

ms>ll

中/侧到左/左。

ms>rr

中/侧到右/右。

ms>rl

中/侧到右/左。

lr>l-r

左/右到左 - 右。

slev

设置侧信号的音量级别。默认值为 1。 允许范围是 0.015625 到 64。

sbal

设置侧信号的平衡。默认值为 0。 允许范围是 -1 到 1。

mlev

设置中信号的音量级别。默认值为 1。 允许范围是 0.015625 到 64。

mpan

设置中信号的声道平移。默认值为 0。 允许范围是 -1 到 1。

base

设置单声道和反转声道之间的立体声基准。默认值为 0。 允许范围是 -1 到 1。

delay

设置左声道与右声道之间的延迟时间(单位:毫秒)。默认值为 0。 允许范围是 -20 到 20。

sclevel

设置 S/C 音量级别。默认值为 1。 允许范围是 1 到 100。

phase

设置立体声相位(单位:度)。默认值为 0。 允许范围是 0 到 360。

bmode_in, bmode_out

设置 balance_in/balance_out 选项的平衡模式。

可设置为以下之一:

balance

经典平衡模式。每次衰减一个声道。 增益最多升高至 1。

amplitude

与上述经典模式类似,但增益最多升高至 2。

power

等功率分配,从 -6dB 到 +6dB 范围。

29.111.1 命令

此滤镜支持所有上述选项作为命令.

29.111.2 示例

  • 应用类似卡拉 OK 效果:
    stereotools=mlev=0.015625
    
  • 将 M/S 信号转换为 L/R:
    "stereotools=mode=ms>lr"
    

29.112 stereowiden

此滤镜通过抑制两声道共同的信号并延迟左声道的信号到右声道和反之,增强立体声效果,从而扩大立体声效果。

过滤器接受以下选项:

delay

左声道信号到右声道和反向的延迟时间(单位:毫秒)。默认值为 20 毫秒。

feedback

左声道到右声道和右声道到左声道的延迟信号增益量。赋予延迟效果的增益,增强立体声效果。默认值为 0.3。

crossfeed

左右声道交叉混合并反向相位。这有助于抑制单声道信号。如果值为 1,将会取消所有两声道共同的信号。默认值为 0.3。

drymix

设置原始声道输入信号的音量级别。默认值为 0.8。

29.112.1 命令

此滤镜支持所有上述选项除外delay作为命令.

29.113 superequalizer

应用 18 波段均衡器。

过滤器接受以下选项:

1b

设置 65Hz 波段增益。

2b

设置 92Hz 波段增益。

3b

设置 131Hz 波段增益。

4b

设置 185Hz 波段增益。

5b

设置 262Hz 波段增益。

6b

设置 370Hz 波段增益。

7b

设置 523Hz 波段增益。

8b

设置 740Hz 波段增益。

9b

设置 1047Hz 波段增益。

10b

设置 1480Hz 波段增益。

11b

设置 2093Hz 波段增益。

12b

设置 2960Hz 波段增益。

13b

设置 4186Hz 波段增益。

14b

设置 5920Hz 波段增益。

15b

设置 8372Hz 波段增益。

16b

设置 11840Hz 波段增益。

17b

设置 16744Hz 波段增益。

18b

设置 20000Hz 波段增益。

29.114 surround

应用音频环绕升级滤镜。

此滤镜允许从音频流生成多声道输出。

过滤器接受以下选项:

chl_out

设置输出声道布局。默认值为5.1.

参见(ffmpeg-utils) ffmpeg-utils(1) 手册中的声道布局章节获取所需语法。

chl_in

设置输入声道布局。默认值为立体声.

参见(ffmpeg-utils) ffmpeg-utils(1) 手册中的声道布局章节获取所需语法。

level_in

设置输入音量级别。默认值为1.

level_out

设置输出音量级别。默认值为1.

lfe

如果输出声道布局中存在 LFE 声道,则启用 LFE 声道输出。默认情况下启用。

lfe_low

设置 LFE 低截止频率。默认值为128Hz。

lfe_high

设置 LFE 高截止频率。默认值为256Hz。

lfe_mode

设置 LFE 模式,可以是addsub。默认值为add。 在add模式中,LFE 声道由输入音频生成并添加到输出。 在sub模式,LFE通道由输入音频创建并添加到输出中,但同时所有非LFE输出通道都会被输出LFE通道减去。

smooth

设置时间平滑强度,用于在时间上逐步改变转换立体声音效时的因子。允许范围是从0.01.0。 当焦点选项值大于0.0时,这很有用。 默认值是0.0。只有在这个范围内且未触及边界的值才有效。

angle

设置立体声环绕转换的角度,允许范围是从0360。 默认值是90.

focus

设置立体声环绕转换的焦点,允许范围是从-11。 默认值是0.

fc_in

设置正前方中心输入音量。默认值是1.

fc_out

设置正前方中心输出音量。默认值是1.

fl_in

设置正前方左侧输入音量。默认值是1.

fl_out

设置正前方左侧输出音量。默认值是1.

fr_in

设置正前方右侧输入音量。默认值是1.

fr_out

设置正前方右侧输出音量。默认值是1.

sl_in

设置侧左输入音量。默认值是1.

sl_out

设置侧左输出音量。默认值是1.

sr_in

设置侧右输入音量。默认值是1.

sr_out

设置侧右输出音量。默认值是1.

bl_in

设置后左输入音量。默认值是1.

bl_out

设置后左输出音量。默认值是1.

br_in

设置后右输入音量。默认值是1.

br_out

设置后右输出音量。默认值是1.

bc_in

设置后中心输入音量。默认值是1.

bc_out

设置后中心输出音量。默认值是1.

lfe_in

设置LFE输入音量。默认值是1.

lfe_out

设置LFE输出音量。默认值是1.

allx

设置所有通道在X轴上的立体声图像扩展使用。 允许范围是从-115。 默认该值为负-1,因此未被使用。

ally

设置所有通道在Y轴上的立体声图像扩展使用。 允许范围是从-115。 默认该值为负-1,因此未被使用。

fcx, flx, frx, blx, brx, slx, srx, bcx

为每个通道设置在X轴上的立体声图像扩展。 允许范围是从0.0615。 默认值是0.5.

fcy, fly, fry, bly, bry, sly, sry, bcy

为每个通道设置在Y轴上的立体声图像扩展。 允许范围是从0.0615。 默认值是0.5.

win_size

设置窗口大小。允许范围是从102465536。默认大小是4096.

win_func

设置窗口函数。

它接受以下值:

rect
bartlett
hann, hanning
hamming
blackman
welch
flattop
bharris
bnuttall
bhann
sine
nuttall
lanczos
gauss
tukey
dolph
cauchy
parzen
poisson
bohman
kaiser

默认值是hann.

overlap

设置窗口重叠。如果设置为1,将为选择的窗口函数选择推荐的重叠。默认值是0.5.

29.115 倾斜搁架

通过使用两极搁架滤波器提升或削减音频的低频和削减或提升高频,滤波器的响应类似于标准高保真的音调控制。 这也被称为搁架均衡(EQ)。

滤波器接受以下选项:

gain, g

在0 Hz处给出增益。其有用范围约为-20(大幅削减)到+20(大幅提升)。 使用正增益时要注意可能的失真。

frequency, f

设置滤波器的中心频率,因此可以用来扩展或减少要提升或削减的频率范围。 默认值是3000Hz。

width_type, t

设置用于指定滤波器带宽的方法。

h

Hz

q

品质因数

o

八度

s

坡度

k

kHz

width, w

确定滤波器搁架过渡的陡峭程度。

poles, p

设置极数量。默认值为2。

mix, m

在输出中使用滤波信号的比例。默认值为1。 范围是0到1。

channels, c

指定要过滤的通道,默认情况下所有可用通道都会被过滤。

normalize, n

规范化双二次系数,默认情况下禁用。 启用后将规范化直流上的幅度响应为0dB。

transform, a

设置IIR滤波器的转换类型。

di
dii
tdi
tdii
latt
svf
zdf
precision, r

设置过滤精度。

auto

根据环绕滤波器选择自动采样格式。

s16

始终使用16位有符号整数。

s32

始终使用32位有符号整数。

f32

始终使用32位浮点数。

f64

始终使用64位浮点数。

block_size, b

设置用于反向IIR处理的块大小。如果该值设置得足够高(高于当接近于零值时截断的脉冲响应长度),过滤将变为线性相位,否则如果不足够高,就会产生令人不快的伪影。

注意,当设置为非零值时,滤波延迟将准确等于这么多个样本。

29.115.1 命令

此滤波器支持一些选项作为命令.

29.116 高音、高搁架

通过两极搁架滤波器提升或削减音频的高音(高频),其响应类似于标准高保真的音调控制。这也被称为搁架均衡(EQ)。

滤波器接受以下选项:

gain, g

在约22 kHz和奈奎斯特频率之间取较低值,给出增益。其有用范围约为-20(大幅削减)到+20(大幅提升)。使用正增益时要注意可能的失真。

frequency, f

设置滤波器的中心频率,因此可以用来扩展或减少要提升或削减的频率范围。 默认值是3000Hz。

width_type, t

设置用于指定滤波器带宽的方法。

h

Hz

q

品质因数

o

八度

s

坡度

k

kHz

width, w

确定滤波器搁架过渡的陡峭程度。

poles, p

设置极数量。默认值为2。

mix, m

在输出中使用滤波信号的比例。默认值为1。 范围是0到1。

channels, c

指定要过滤的通道,默认情况下所有可用通道都会被过滤。

normalize, n

规范化双二次系数,默认情况下禁用。 启用后将规范化直流上的幅度响应为0dB。

transform, a

设置IIR滤波器的转换类型。

di
dii
tdi
tdii
latt
svf
zdf
precision, r

设置过滤精度。

auto

根据环绕滤波器选择自动采样格式。

s16

始终使用16位有符号整数。

s32

始终使用32位有符号整数。

f32

始终使用32位浮点数。

f64

始终使用64位浮点数。

block_size, b

设置用于反向IIR处理的块大小。如果该值设置得足够高(高于当接近于零值时截断的脉冲响应长度),过滤将变为线性相位,否则如果不足够高,就会产生令人不快的伪影。

注意,当设置为非零值时,滤波延迟将准确等于这么多个样本。

29.116.1 命令

此滤波器支持以下命令:

frequency, f

更改高音频率。 命令的语法是:"频率"

width_type, t

更改高音宽度类型。 命令的语法是:"宽度类型"

width, w

更改高音宽度。 命令的语法是:"宽度"

gain, g

更改高音增益。 命令的语法是:"增益"

mix, m

更改高音混合。 命令的语法是:"混合"

29.117 颤音

正弦幅度调制。

滤波器接受以下选项:

f

以赫兹为单位的调制频率。在亚谐波范围(20 Hz或更低)的调制频率将产生颤音效果。 指定超过20 Hz的调制频率时,该滤波器也可以用作环形调制器。 范围为0.1 - 20000.0。默认值为5.0 Hz。

d

以百分比表示的调制深度。范围为0.0 - 1.0。 默认值为0.5。

29.118 颤音效果

正弦相位调制。

该滤波器接受以下选项:

f

以赫兹为单位的调制频率。 范围为0.1 - 20000.0。默认值为5.0 Hz。

d

以百分比表示的调制深度。范围为0.0 - 1.0。 默认值为0.5。

29.119 虚拟低音

应用音频虚拟低音滤波器。

该滤波器接受立体声输入并输出带有LFE(2.1)通道的立体声。生成的新LFE通道增强了本来从两个立体声通道获得的虚拟低音。这一滤波器的输出左前和右前通道与立体声输入中保留不变。

该滤波器接受以下选项:

cutoff

设置虚拟低音截止频率。默认值为250 Hz。 允许范围是从100到500 Hz。

strength

设置虚拟低音强度。允许范围是从0.5到3。 默认值为3。

29.120 音量

调整输入音频音量。

它接受以下参数:

volume

设置音频音量表达式。

输出值会被截断到最大值。

输出音频音量的关系为:

输出音量 = 音量 * 输入音量

默认值为音量是"1.0"。

precision

此参数表示数学精度。

它决定了将允许的输入采样格式,这会影响音量缩放的精度。

fixed

8位定点;这限制了输入采样格式为U8、S16和S32。

float

32位浮点;这限制了输入采样格式为FLT。(默认)

double

64位浮点;这限制了输入采样格式为DBL。

replaygain

选择在输入框中遇到ReplayGain边数据时的行为。

drop

删除ReplayGain边数据,忽略其内容(默认)。

ignore

忽略ReplayGain边数据,但将其保留在帧中。

track

如果存在,则优先选用曲目增益。

album

如果存在,则优先选用专辑增益。

replaygain_preamp

对选定的ReplayGain增益应用预放大增益(dB)。

默认值为replaygain_preamp是0.0。

replaygain_noclip

通过限制应用的增益来防止失真。

默认值为replaygain_noclip是1。

eval

设置音量表达式的评估时间。

它接受以下值:

once

仅在滤波初始化期间或在发送‘volume’命令时评估表达式

frame

为每个传入帧评估表达式

默认值是‘once’.

音量表达式可以包含以下参数。

n

帧号(从0开始)

nb_channels

通道数量

nb_consumed_samples

滤波器处理的采样点数

nb_samples

当前帧的采样数量

pos

文件中原始帧的位置;不推荐使用

pts

帧PTS

sample_rate

采样率

startpts

流启动时的PTS

startt

流启动时的时间

t

帧时间

tb

时间戳时间基

volume

上次设置的音量值

注意,当eval设置为‘once’时,仅有采样率tb变量可用,所有其他变量将评估为NAN。

29.120.1 命令

此滤波器支持以下命令:

volume

修改音量表达式。 该命令接受与对应选项相同的语法。

如果指定的表达式无效,则保持其当前值。

29.120.2 示例

  • 将输入音频音量减半:
    volume=volume=0.5
    volume=volume=1/2
    volume=volume=-6.0206dB
    

    在以上所有示例中,命名键volume可以省略,例如:

    volume=0.5
    
  • 使用定点精度将输入音频功率增加6分贝:
    volume=volume=6dB:precision=fixed
    
  • 在时间10之后淡出音量,并设置5秒的消失时间:
    volume='if(lt(t,10),1,max(1-(t-10)/5,0))':eval=frame
    

29.121 音量检测

检测输入视频的音量。

该过滤器无参数。它仅支持16位有符号整数样本,因此必要时输入将被转换。输入流结束时,将在日志中打印音量统计数据。

特别是,它会显示平均音量(均方根)、最大音量(基于每个样本)以及注册音量值的直方图开始部分(从最大值到累积1000分之一的样本数)。

所有音量均为相对于最大PCM值的分贝值。

29.121.1 示例

以下是输出的摘录:

[Parsed_volumedetect_0  0xa23120] mean_volume: -27 dB
[Parsed_volumedetect_0  0xa23120] max_volume: -4 dB
[Parsed_volumedetect_0  0xa23120] histogram_4db: 6
[Parsed_volumedetect_0  0xa23120] histogram_5db: 62
[Parsed_volumedetect_0  0xa23120] histogram_6db: 286
[Parsed_volumedetect_0  0xa23120] histogram_7db: 1042
[Parsed_volumedetect_0  0xa23120] histogram_8db: 2551
[Parsed_volumedetect_0  0xa23120] histogram_9db: 4609
[Parsed_volumedetect_0  0xa23120] histogram_10db: 8409

这意味着:

  • 均方能量约为-27 dB,即10^-2.7。
  • 最大样本为-4 dB,或者更精确地介于-4 dB和-5 dB之间。
  • 在-4 dB有6个样本,在-5 dB有62个样本,在-6 dB有286个样本,以此类推。

换句话说,音量增加+4 dB不会导致任何剪辑, 增加+5 dB会导致6个样本出现剪辑,等等。

30种音频源

以下是当前可用音频源的描述。

30.1 abuffer

缓冲音频帧并使其可用于滤波链。

此源主要用于程序化使用,尤其是通过以下定义的接口libavfilter/buffersrc.h.

它接受以下参数:

time_base

用于提交帧时间戳的时间基。它必须是浮点数或采用分子/分母形式。

sample_rate

输入音频缓冲区的采样率。

sample_fmt

输入音频缓冲区的采样格式。 可以是采样格式名或在以下枚举 AVSampleFormat 中的对应整数表示libavutil/samplefmt.h

channel_layout

输入音频缓冲区的声道布局。 可以是从 channel_layout_map 中的声道布局名称libavutil/channel_layout.c或其对应整数表示 来自 AV_CH_LAYOUT_* 宏libavutil/channel_layout.h

channels

输入音频缓冲区的声道数。 如果同时指定了channelschannel_layout,那么它们必须一致。

30.1.1 示例

abuffer=sample_rate=44100:sample_fmt=s16p:channel_layout=stereo

将指示源接受频率为44100Hz的16位无符号立体声分块。 由于名为"s16p"的采样格式对应数字6,并且"立体声"声道布局对应值0x3,这等同于:

abuffer=sample_rate=44100:sample_fmt=6:channel_layout=0x3

30.2 aevalsrc

生成由表达式指定的音频信号。

此源接受一个或多个输入表达式(每个声道一个表达式),利用这些表达式生成相应的音频信号。

此源接受以下选项:

exprs

为每个单独的声道设置由'|'分隔的表达式列表。如果channel_layout选项未指定,选择的声道布局依赖于提供的表达式数量。否则,最后指定的表达式将应用于剩下的输出声道。

channel_layout, c

设置声道布局。指定的布局中的声道数必须与指定的表达式数量相等。

duration, d

设置源音频的最小时长。请参见(ffmpeg-utils)ffmpeg-utils(1)手册中的时间持续时长部分以了解可接受的语法。 注意,结果的时长可能会大于指定时长,因为生成的音频总是在完整帧的最后被截断。

如果未指定,或者表达的时长为负数,则假定音频会永久生成。

nb_samples, n

每个输出帧中每个声道的样本数,默认为1024。

sample_rate, s

指定采样率,默认为44100。

exprs的每个表达式中可以包含以下常量:

n

评估样本的编号,从0开始

t

以秒为单位的评估样本时间,从0开始

s

采样率

30.2.1 示例

  • 生成静音:
    aevalsrc=0
    
  • 生成频率为440 Hz 的正弦波信号,设置采样率为8000 Hz:
    aevalsrc="sin(440*2*PI*t):s=8000"
    
  • 生成两声道信号,显式指定声道布局(前中心+后中心):
    aevalsrc="sin(420*2*PI*t)|cos(430*2*PI*t):c=FC|BC"
    
  • 生成白噪声:
    aevalsrc="-2+random(0)"
    
  • 生成幅度调制信号:
    aevalsrc="sin(10*2*PI*t)*sin(880*2*PI*t)"
    
  • 在360 Hz载波上生成2.5 Hz双耳节拍:
    aevalsrc="0.1*sin(2*PI*(360-2.5/2)*t) | 0.1*sin(2*PI*(360+2.5/2)*t)"
    

30.3 afdelaysrc

生成分数延迟FIR系数。

生成的流可以用于afir滤波器来滤波音频信号。

此滤波器接受以下选项:

delay, d

设置分数延迟。默认为0。

sample_rate, r

设置采样率,默认为44100。

nb_samples, n

设置每帧样本数量。默认为1024。

taps, t

设置输出音频流中的滤波器系数数量。 默认值为0。

channel_layout, c

指定声道布局,可以是一个表示声道布局的字符串。 默认值为channel_layout为"立体声"。

30.4 afireqsrc

生成FIR均衡器系数。

生成的流可以用于afir滤波器来滤波音频信号。

此滤波器接受以下选项:

preset, p

设置均衡器预设。 默认预设为flat.

可用的预设值为:

custom
flat
acoustic
bass
beats
classic
clear
deep bass
dubstep
electronic
hard-style
hip-hop
jazz
metal
movie
pop
r&b
rock
vocal booster
gains, g

为每个频段设置自定义增益。只有在预设选项设置为custom时才使用。 增益值以白色空格分隔,每个增益值以 dBFS 为单位表示。 默认值为0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.

bands, b

设置自定义频段以从中设置自定义均衡器增益。 该值必须严格递增。只有在预设选项设置为custom时才使用。 频段值以白色空格分隔,每个频段表示Hz单位的频率。 默认值为25 40 63 100 160 250 400 630 1000 1600 2500 4000 6300 10000 16000 24000.

taps, t

设置输出音频流中的滤波器系数数量。 默认值为4096.

sample_rate, r

设置输出音频流的采样率,默认为44100.

nb_samples, n

设置每帧输出音频流的样本数量。默认为1024.

interp, i

为FIR均衡器系数设置插值方法。可以是linearcubic.

phase, h

设置FIR滤波器的相位类型,可以是linearmin:最小相位。 默认值为最小相位滤波器。

30.5 afirsrc

使用频率采样方法生成FIR系数。

生成的流可以用于afir滤波器来滤波音频信号。

此滤波器接受以下选项:

taps, t

设置输出音频流中的滤波器系数数量。 默认值为1025。

frequency, f

设置频率点,以从中设置幅度和相位值。 此值必须是非递减顺序,且第一个元素必须是0,最后一个元素必须是1。 元素以白色空格分隔。

magnitude, m

frequency设置每个频率点的幅度值。 值的数量必须与频率点的数量相同。 值以白色空格分隔。

phase, p

frequency设置每个频率点的相位值。 值的数量必须与频率点的数量相同。 值以白色空格分隔。

sample_rate, r

设置采样率,默认为44100。

nb_samples, n

设置每帧样本数量。默认为1024。

win_func, w

设置窗函数。默认为blackman。

30.6 anullsrc

空音频源,返回未处理的音频帧。它主要用作模板并用于分析/调试工具,或者作为忽略输入数据的滤波器的源(例如sox合成滤波器)。

此源接受以下选项:

channel_layout, cl

指定声道布局,可以是整数值或表示声道布局的字符串。 默认值为channel_layout为"立体声"。

请查看libavutil/channel_layout.c中的channel_layout_map定义以了解字符串与声道布局值的映射关系。

sample_rate, r

指定采样率,默认为44100。

nb_samples, n

设置每帧请求的样本数。

duration, d

设置来源音频的时长。参见(ffmpeg-utils)ffmpeg-utils(1)手册中的时间持续时长部分以了解可接受的语法。

如果未指定,或者表达的持续时间为负数,则假定音频会永久生成。

30.6.1 示例

  • 将采样率设置为48000 Hz,并将声道布局设置为AV_CH_LAYOUT_MONO。
    anullsrc=r=48000:cl=4
    
  • 使用更直观的语法进行同样的操作:
    anullsrc=r=48000:cl=mono
    

所有参数需要显式定义。

30.7 flite

使用libflite库生成语音合成。

要启用此滤波器的编译,您需要使用以下选项配置FFmpeg:--enable-libflite.

注意,2.0版本之前的flite库不是线程安全的。

此滤波器接受以下选项:

list_voices

如果设置为1,列出可用语音的名称并立即退出。 默认值为0。

nb_samples, n

设置每帧的最大样本数。 默认值为512。

textfile

设置文件名,文件中包含要朗读的文本。

text

设置要朗读的文本。

voice, v

设置要用于语音合成的语音。 默认值为kal。另请参阅list_voices选项。

30.7.1 示例

  • 从文件speech.txt中读取,并使用标准flite语音合成文本:
    flite=textfile=speech.txt
    
  • 读取指定的文本并选择slt语音:
    flite=text='So fare thee well, poor devil of a Sub-Sub, whose commentator I am':voice=slt
    
  • 输入文本到ffmpeg:
    ffmpeg -f lavfi -i flite=text='So fare thee well, poor devil of a Sub-Sub, whose commentator I am':voice=slt
    
  • ffplay朗读指定文本,使用flitelavfi设备:
    ffplay -f lavfi flite=text='No more be grieved for which that thou hast done.'
    

有关libflite的更多信息,请访问:http://www.festvox.org/flite/

30.8 anoisesrc

生成一个噪声音频信号。

此滤波器接受以下选项:

sample_rate, r

指定采样率。 默认值为48000 Hz。

amplitude, a

指定生成音频流的振幅(0.0-1.0)。 默认值为1.0。

duration, d

指定生成音频流的持续时间。 不指定此选项会生成具有无限长度的噪声。

color, colour, c

指定噪声的颜色。 可用的噪声颜色有白色、粉红色、棕色、蓝色、紫色和绒毛。 默认颜色为白色。

seed, s

指定用于为PRNG生成种子的值。

nb_samples, n

设置每帧输出样本数量,默认为1024。

density

设置绒毛噪声生成器的密度(0.0-1.0),默认为0.05。

30.8.1 示例

  • 生成60秒的粉红噪声,采样率为44.1 kHz,振幅为0.5:
    anoisesrc=d=60:c=pink:r=44100:a=0.5
    

30.9 hilbert

生成奇点Hilbert变换FIR系数。

生成的流可以用于afir滤波器将信号相移90度。

这在许多矩阵编码方案中使用,也用于解析信号生成。 这个过程通常表示为乘以i(或j),即虚数单位。

此滤波器接受以下选项:

sample_rate, s

设置采样率,默认为44100。

taps, t

设置FIR滤波器的长度,默认为22051。

nb_samples, n

设置每帧样本数量。

win_func, w

设置窗函数,用于生成FIR系数。

30.10 sinc

生成sinc Kaiser窗低通滤波器、高通滤波器、带通滤波器或带阻滤波器的FIR系数。

生成的流可以用于afir滤波器来滤波音频信号。

此滤波器接受以下选项:

sample_rate, r

设置采样率,默认为44100。

nb_samples, n

设置每帧样本数量,默认为1024。

hp

设置高通滤波器频率。默认为0。

lp

设置低通滤波器频率。默认为0。 如果高通滤波器频率低于低通滤波器频率,并且低通频率大于0,则滤波器将创建带通滤波器系数, 否则为带阻滤波器系数。

phase

设置滤波器的相位响应。默认为50。 允许范围为0到100。

beta

设置Kaiser窗的beta值。

att

设置阻带衰减。默认为120dB,允许范围为40到180 dB。

round

启用舍入,默认为禁用。

hptaps

为高通滤波器设置抽头数。

lptaps

为低通滤波器设置抽头数。

30.11 sine

生成一个由振幅为1/8的正弦波组成的音频信号。

音频信号是完全精确的。

此滤波器接受以下选项:

frequency, f

设置载波频率。默认值为440 Hz。

beep_factor, b

启用每秒一次的周期性蜂鸣,频率为beep_factor倍的载波频率。 默认值为0,表示蜂鸣被禁用。

sample_rate, r

指定采样率,默认为44100。

duration, d

指定生成音频流的时长。

samples_per_frame

设置每帧输出样本数量。

表达式可以包含以下常量:

n

输出音频帧的顺序编号,从0开始。

pts

输出音频帧的PTS(演示时间戳),以TB单位。

t

输出音频帧的PTS,以秒为单位表达。

TB

输出音频帧的时间基。

默认值是1024.

30.11.1 示例

  • 生成一个简单的440 Hz正弦波:
    sine
    
  • 生成一个220 Hz正弦波和每秒一个880 Hz哔声,持续5秒:
    sine=220:4:d=5
    sine=f=220:b=4:d=5
    sine=frequency=220:beep_factor=4:duration=5
    
  • 生成一个1千赫兹的正弦波,遵循1602,1601,1602,1601,1602NTSC 模式:
    sine=1000:samples_per_frame='st(0,mod(n,5)); 1602-not(not(eq(ld(0),1)+eq(ld(0),3)))'
    

31 音频输出

以下是当前可用音频输出的说明。

31.1 abuffersink

缓冲音频帧,并使它们可用于过滤链的末端。

此输出主要用于编程使用,特别是通过定义在libavfilter/buffersink.h或选项系统中的接口。

它接受一个指向AVABufferSinkContext结构的指针,该结构定义了传入缓冲区的格式,作为初始化中传递的opaque参数。avfilter_init_filter进行初始化。

31.2 anullsink

空音频输出;对输入音频绝不处理。它主要作为模板并用于分析/调试工具。

32 视频滤镜

配置FFmpeg构建时,可以禁用任何现有的滤镜,使用--disable-filters。 配置输出将显示你的构建中包含的视频滤镜。

以下是当前可用的视频滤镜的说明。

32.1 addroi

在视频帧中标记感兴趣区域。

帧数据保持不变,但元数据附加到帧上,指示感兴趣区域,可以影响后续编码的行为。多个区域可以通过多次应用滤镜进行标记。

x

到帧左边缘的区域距离,以像素为单位。

y

到帧顶部边缘的区域距离,以像素为单位。

w

区域宽度,以像素为单位。

h

区域高度,以像素为单位。

参数x, y, wh都是表达式,并可能包含以下变量:

iw

输入帧的宽度。

ih

输入帧的高度。

qoffset

在区域内应用的量化偏移。

此值必须在 -1 到 +1 范围内,零表示无质量变化。负值要求更好质量(更少量化),而正值要求更低质量(更多量化)。

范围经过校准,以便极限值表示最大可能偏移——如果帧的其他部分以最差质量编码,则偏移值 -1 表示该区域无论如何都应该以最佳质量编码。中间值随后以某种编解码器依赖的方式插值。

例如,在10位的H.264中,量化参数范围从-12到51。一个典型的qoffset值为-1/10,因此指示该区域应该以比该范围其余部分好大约十分之一的质量(QP)编码。因此,如果帧的大部分以QP约30编码,该区域会获得大约24左右的QP(偏移约-1/10 * (51 - -12) = -6.3)。极限值-1意味着该区域应该无论如何都以最佳质量编码,而不考虑帧的其他部分的处理,即以QP为-12。

clear

如果设置为true,在添加新区域之前移除帧上标记的任何现有感兴趣区。

32.1.1 示例

  • 标记帧中心四分之一为感兴趣。
    addroi=iw/4:ih/4:iw/2:ih/2:-1/10
    
  • 将帧左边缘的100像素宽区域标记为非常不感兴趣(以远低于帧其他部分质量编码)。
    addroi=0:0:100:ih:+1/5
    

32.2 alphaextract

从输入中提取alpha成分作为灰度视频。这个功能尤其与alphamerge滤镜配合有用。

32.3 alphamerge

用第二个输入的灰度值添加或替换主要输入的alpha成分。这功能旨在与alphaextract结合使用,以允许在不支持alpha通道的格式中传输或存储帧序列。

例如,从一个正常的YUV编码视频和另一个视频用alphaextract创建,你可能使用:

movie=in_alpha.mkv [alpha]; [in][alpha] alphamerge [out]

32.4 amplify

在相同像素位置上放大当前像素与相邻帧像素的差异。

这个滤镜接受以下选项:

radius

设置帧半径。默认值是2。允许范围是1到63。 例如半径为3会告诉滤镜计算7帧的平均值。

factor

设置放大差异的因子。默认值为2。允许范围是0到65535。

threshold

设置差异放大的阈值。任何大于或等于此值的差异不会改变原始像素。默认值为10。 允许范围是0到65535。

tolerance

设置差异放大中的容差。任何低于此值的差异不会改变原始像素。默认值为0。 允许范围是0到65535。

low

设置更改原始像素的下限。默认值为65535。允许范围是0到65535。 此选项控制最大可能的值来减少原始像素值。

high

设置更改原始像素的上限。默认值为65535。允许范围是0到65535。 此选项控制最大可能的值来增加原始像素值。

planes

设置要过滤的平面。默认是全部。允许范围是0到15。

32.4.1 命令

此滤镜支持以下命令对应于同名选项:

factor
threshold
tolerance
low
high
planes

32.5 ass

subtitles滤镜相同,只不过它不需要libavcodec和libavformat来工作。另一方面,它仅限于ASS(高级字幕Alpha)字幕文件。

此滤镜除了subtitles滤镜的常规选项外,还接受以下选项:

shaping

设置形状引擎

可用值为:

auto

默认libass形状引擎,是最好的选择。

simple

快速,无关字体的成形引擎,只能进行替换

complex

使用OpenType进行替换和定位的较慢成形引擎

默认值是auto.

32.6 atadenoise

对视频输入应用自适应时间平均噪声过滤器。

滤镜接受以下选项:

0a

为第一个平面设置阈值A。默认值为0.02。 有效范围为0到0.3。

0b

为第一个平面设置阈值B。默认值为0.04。 有效范围为0到5。

1a

为第二个平面设置阈值A。默认值为0.02。 有效范围为0到0.3。

1b

为第二个平面设置阈值B。默认值为0.04。 有效范围为0到5。

2a

为第三个平面设置阈值A。默认值为0.02。 有效范围为0到0.3。

2b

为第三个平面设置阈值B。默认值为0.04。 有效范围为0到5。

阈值A设计用于对输入信号中的突然变化反应,阈值B设计用于对输入信号中的连续变化反应。

s

设置滤镜用于平均化的帧数。默认值为9。必须是范围[5, 129]内的奇数。

p

设置滤镜将用于平均化的帧的平面。默认值是全部平面。

a

设置滤镜用于平均化的算法变体。默认值是pparallel。 还可以设置为sserial。

Parallel可能比serial更快,但从不相反。Parallel会在第一次变化大于阈值时提前终止,而serial如果它们等于或低于阈值则会继续处理帧的其他部分。

0s
1s
2s

为1号平面、2号平面或3号平面设置sigma。默认值为32767。 有效范围是0到32767。 该选项控制定义的大小的半径内每个像素的权重。 默认值表示每个像素具有相同的权重。 将此选项设置为0实际上禁用过滤。

32.6.1 命令

此滤镜支持与选项相同的命令除了选项s。 该命令接受与对应选项相同的语法。

32.7 avgblur

应用平均模糊滤镜。

滤镜接受以下选项:

sizeX

设置水平半径大小。

planes

设置要过滤的平面。默认情况下过滤所有平面。

sizeY

如果为零则设置垂直半径大小与sizeX相同。 默认值是0.

32.7.1 命令

此滤镜支持与选项相同的命令。 该命令接受对应选项的相同语法。

如果指定的表达式无效,则保持当前值不变。

32.8 backgroundkey

将静态背景转换为透明。

滤镜接受以下选项:

threshold

场景更改检测的阈值。

similarity

与背景的相似度百分比。

blend

为不相似的像素设置混合量。

32.8.1 命令

此滤镜支持以上所有选项作为命令.

32.9 bbox

计算输入帧亮度平面中非黑色像素的边界框。

此滤镜计算包含所有亮度值大于最小允许值的像素的边界框。 描述边界框的参数打印在滤镜日志中。

滤镜接受以下选项:

min_val

设置最小亮度值。默认值是16.

32.9.1 命令

此滤镜支持以上所有选项作为命令.

32.10 bilateral

应用双边滤镜,空间平滑同时保留边缘。

滤镜接受以下选项:

sigmaS

设置高斯函数的sigma以计算空间权重。 允许范围是0到512。默认值是0.1。

sigmaR

设置高斯函数的sigma以计算范围权重。 允许范围是0到1。默认值是0.1。

planes

设置要过滤的平面。默认是仅第一个。

32.10.1 命令

此滤镜支持以上所有选项作为命令.

32.11 bilateral_cuda

CUDA加速版双边滤镜,一种边缘保留滤镜。 由于使用了GPU加速,此滤镜在数学上是精确的。 为了获得最佳的输出质量,使用一对一的色度抽样,例如yuv444p格式。

滤镜接受以下选项:

sigmaS

设置高斯函数的sigma以计算空间权重,也称为空间sigma。 允许范围为0.1到512。默认值是0.1。

sigmaR

设置高斯函数的sigma以计算颜色范围权重,也称为颜色sigma。 允许范围为0.1到512。默认值为0.1。

window_size

设置双边函数的窗口大小以决定需要循环的邻居数量。 如果输入的数字是偶数,会自动加1。 允许范围是1到255。默认值是1。

32.11.1 示例

  • 在视频上应用双边滤镜。
    ./ffmpeg -v verbose \
    -hwaccel cuda -hwaccel_output_format cuda -i input.mp4  \
    -init_hw_device cuda \
    -filter_complex \
    " \
    [0:v]scale_cuda=format=yuv444p[scaled_video];
    [scaled_video]bilateral_cuda=window_size=9:sigmaS=3.0:sigmaR=50.0" \
    -an -sn -c:v h264_nvenc -cq 20 out.mp4
    

32.12 bitplanenoise

显示并测量位平面噪声。

滤镜接受以下选项:

bitplane

设置要分析的平面。默认是1.

filter

从设置的上面过滤出噪声像素。 默认是禁用。bitplane set above. Default is disabled.

32.13 blackdetect

检测(几乎)完全黑的视频间隔。可以用于检测章节转换、广告或无效录音。

滤镜将其检测分析输出到日志和帧元数据。如果发现至少指定的最短持续时间的黑色段,则会将开始和结束时间戳以及持续时间打印到日志中,并带有级别info。 此外,还会打印带有级别的日志行debug每帧打印显示检测到的黑色量。

过滤器还会将元数据附加到黑段的第一帧,键为lavfi.black_start以及黑段结束后的第一帧的键为lavfi.black_end。值是帧的时间戳。无论指定的最短持续时间如何,都会添加此元数据。

过滤器接受以下选项:

black_min_duration, d

设置以秒为单位的最小检测黑色持续时间。必须是非负浮点数。

默认值为2.0。

picture_black_ratio_th, pic_th

设置考虑图片为“黑色”的阈值。 表示比例值的最小值:

nb_black_pixels / nb_pixels

图片被视为黑色的情况下。 默认值为0.98。

pixel_black_th, pix_th

设置考虑像素为“黑色”的阈值。

阈值表示像素亮度值的最大值,低于此值的像素即为“黑色”。提供的值按以下等式缩放:

absolute_threshold = luma_minimum_value + pixel_black_th * luma_range_size

luma_range_sizeluma_minimum_value取决于输入视频格式,对于全范围的YUV格式,范围为[0-255],对于非全范围的YUV格式,范围为[16-235]。

默认值为0.10。

以下示例将最大像素阈值设置为最小值,仅检测持续2秒或更长时间的黑色间隔:

blackdetect=d=2:pix_th=0.00

32.14 blackframe

检测几乎完全黑色的帧。这对检测章节转换或广告很有用。输出行包括检测帧的帧号、黑色百分比、文件中的位置(如果已知)或-1,以及以秒为单位的时间戳。

为了显示输出行,需要将日志级别至少设置为AV_LOG_INFO值。

此过滤器输出帧元数据lavfi.blackframe.pblack。 值表示图片像素低于阈值的百分比。

它接受以下参数:

amount

必须低于阈值的像素百分比;默认值为98.

threshold, thresh

低于此值的像素值被视为黑色;默认值为32.

32.15 blend

将两个视频帧融合在一起。

The blend过滤器接收两个输入流并输出一个流,第一个输入是“上层”,第二个输入是“下层”。 默认情况下,当最长输入结束时输出终止。

The tblend(时间混合)过滤器从一个单一流中提取两个连续帧,并输出通过将新帧覆盖在旧帧上获得的结果。

以下是接受的选项的描述。

c0_mode
c1_mode
c2_mode
c3_mode
all_mode

为特定像素组件或所有像素组件设置混合模式(在all_mode情况下)。默认值为all_modenormal.

组件模式的可用值为:

addition
and
average
bleach
burn
darken
difference
divide
dodge
exclusion
extremity
freeze
geometric
glow
grainextract
grainmerge
hardlight
hardmix
hardoverlay
harmonic
heat
interpolate
lighten
linearlight
multiply
multiply128
negation
normal
or
overlay
phoenix
pinlight
reflect
screen
softdifference
softlight
stain
subtract
vividlight
xor
c0_opacity
c1_opacity
c2_opacity
c3_opacity
all_opacity

为特定像素组件或所有像素组件设置混合不透明度(在all_opacity情况下)。 仅在结合像素组件混合模式时使用。all_opacity

c0_expr
c1_expr
c2_expr
c3_expr
all_expr

为特定像素组件或所有像素组件设置混合表达式(在all_expr情况下)。 请注意,相关模式选项如果已设置将被忽略。all_expr

表达式可以使用以下变量:

N

过滤帧的连续编号,从0.

X
Y

当前采样点的坐标

W
H

当前滤波平面的宽度和高度

SW
SH

正在过滤平面的比例宽度和高度。该值是当前平面尺寸与亮度平面之间的比例,例如,对于yuv420p帧,亮度平面值为1,1,色差平面值为0.5,0.5

T

当前帧的时间,以秒为单位。

TOP, A

第一个视频帧(上层)当前位置的像素组件值。

BOTTOM, B

第二个视频帧(下层)当前位置的像素组件值。

The blend过滤器也支持framesync选项。

32.15.1 示例

  • 在前10秒对底层到上层应用转换:
    blend=all_expr='A*(if(gte(T,10),1,T/10))+B*(1-(if(gte(T,10),1,T/10)))'
    
  • 从顶部层到底层沿水平线性过渡:
    blend=all_expr='A*(X/W)+B*(1-X/W)'
    
  • 应用1x1棋盘效果:
    blend=all_expr='if(eq(mod(X,2),mod(Y,2)),A,B)'
    
  • 应用从左侧显现效果:
    blend=all_expr='if(gte(N*SW+X,W),A,B)'
    
  • 应用从下向上显现效果:
    blend=all_expr='if(gte(Y-N*SH,0),A,B)'
    
  • 应用左上向显现效果:
    blend=all_expr='if(gte(T*SH*40+Y,H)*gte((T*40*SW+X)*W/H,W),A,B)'
    
  • 对角线拆分视频,左侧显示顶部层,右侧显示底层:
    blend=all_expr='if(gt(X,Y*(W/H)),A,B)'
    
  • 显示当前和上一帧之间的差异:
    tblend=all_mode=grainextract
    

32.15.2 命令

此过滤器支持与选项相同的命令

32.16 blockdetect

判断帧的方块失真,在不更改输入帧的情况下。

基于Remco Muijs和Ihor Kirenko的《用于自适应视频处理的无参考方块伪影度量》(2005第13届欧洲信号处理会议)。

过滤器接受以下选项:

period_min
period_max

设置确定像素网格(周期)的最小值和最大值。 默认值为[3,24]。

planes

设置需要过滤的平面。默认情况下,仅过滤第一个平面。

32.16.1 示例

  • 确定对第一个平面的方块失真,并在[8,32]范围内搜索周期:
    blockdetect=period_min=8:period_max=32:planes=1
    

32.17 blurdetect

判断帧的模糊程度,在不更改输入帧的情况下。

基于Marziliano等人的《一种无参考的感知模糊度量》。 支持基于块的缩略。

过滤器接受以下选项:

low
high

设置Canny阈值算法使用的低值和高值阈值。

高值阈值选择“强边缘像素”,这些与低值阈值选择的“弱边缘像素”通过8连通相连。

lowhigh阈值值必须在[0,1]范围内选择,且low值应小于或等于high.

默认值为low20/255high默认值为50/255.

radius

定义围绕边缘像素搜索局部最大值的半径。

block_pct

仅针对最显著的块确定模糊度,按百分比给出。

block_width

为宽度为block_width的块确定模糊度。如果设置小于1的值,则无论block_height.

block_height

为高度为block_height的块确定模糊度。如果设置小于1的值,则无论block_width.

planes

设置需要过滤的平面。默认情况下,仅过滤第一个平面。

32.17.1 示例

  • 为最显著的80%的32x32块确定模糊度:
    blurdetect=block_width=32:block_height=32:block_pct=80
    

32.18 bm3d

使用块匹配的BM3D算法降噪帧。

过滤器接受以下选项。

sigma

设置降噪强度。默认值为1。 允许的范围是0到999.9。 降噪算法对sigma非常敏感,因此请根据来源调整。

block

设置局部块的大小。这设置为2D尺寸。

bstep

设置块处理滑动步长。默认值为4。 允许的范围是1到64。 较小的值允许处理更多引用块,但速度较慢。

group

为第三维设置相似块的最大数量。默认值为1。 设置为1时不会进行块匹配。较大值允许单个组中有更多块。 允许范围为1至256。

range

设置块匹配搜索半径。默认值为9。 允许范围是1到INT32_MAX。

mstep

设置块匹配两次搜索位置之间的步长。默认值为1。 允许范围是1到64。较小值速度较慢。

thmse

设置块匹配的均方误差阈值。有效范围为0到INT32_MAX。

hdthr

为在三维变换域中的硬阈值设置参数。 较大的值会导致在频率域中的更强硬阈值过滤。

estim

设置滤波估计模式。可以是basicfinal。 默认值为basic.

ref

如果启用,过滤器将使用第二个输入流进行块匹配。 对于估计模式值basicestimestim选项的默认值,禁用此功能, 而当估计模式值为estim时,总是启用。final.

planes

设置需要过滤的平面。默认情况下,所有可用的平面都被过滤,除了透明通道。

32.18.1 示例

  • 使用bm3d的基本滤波:
    bm3d=sigma=3:block=4:bstep=2:group=1:estim=basic
    
  • 同上,但仅过滤亮度:
    bm3d=sigma=3:block=4:bstep=2:group=1:estim=basic:planes=1
    
  • 同上,但使用两种估计模式:
    split[a][b],[a]bm3d=sigma=3:block=4:bstep=2:group=1:estim=basic[a],[b][a]bm3d=sigma=3:block=4:bstep=2:group=16:estim=final:ref=1
    
  • 同上,但用nlmeans代替:
    split[a][b],[a]nlmeans=s=3:r=7:p=3[a],[b][a]bm3d=sigma=3:block=4:bstep=2:group=16:estim=final:ref=1
    

32.19 boxblur

对输入视频应用方框模糊算法。

它接受以下参数:

luma_radius, lr
luma_power, lp
chroma_radius, cr
chroma_power, cp
alpha_radius, ar
alpha_power, ap

以下是接受选项的描述。

luma_radius, lr
chroma_radius, cr
alpha_radius, ar

为用于模糊相应输入平面的方框半径设置表达式。

半径值必须为非负数,并且不得大于表达式的值min(w,h)/2对于亮度和alpha平面,以及min(cw,ch)/2对于色度平面。

默认值为luma_radius为"2"。如果未指定,chroma_radiusalpha_radius默认为为luma_radius.

设置的对应值。

w
h

以像素为单位的输入宽度和高度。

cw
ch

以像素为单位的输入色度图像宽度和高度。

hsub
vsub

水平和垂直色度子采样值。例如,对于像素格式“yuv422p”,hsub为2,vsub为1。

luma_power, lp
chroma_power, cp
alpha_power, ap

指定对相应平面应用方框模糊过滤器的次数。

默认值为luma_power为2。如果未指定,chroma_poweralpha_power默认为为luma_power.

设置为0将禁用此效果。

32.19.1 示例

  • 使用亮度、色度和alpha半径均为2的设置应用方框模糊过滤器:
    boxblur=luma_radius=2:luma_power=1
    boxblur=2:1
    
  • 设置亮度半径为2,alpha和色度半径为0:
    boxblur=2:1:cr=0:ar=0
    
  • 将亮度和色度半径设置为视频维度的某个分数:
    boxblur=luma_radius=min(h\,w)/10:luma_power=1:chroma_radius=min(cw\,ch)/10:chroma_power=1
    

32.20 bwdif

对输入视频进行去隔行扫描(“bwdif”代表“Bob Weaver去隔行扫描过滤器”)。

基于 yadif 的运动自适应去隔行扫描,使用 w3fdif 和立方插值算法。 它接受以下参数:

mode

采用的隔行扫描模式。可接受以下值之一:

0, send_frame

为每帧输出一个帧。

1, send_field

为每场输出一个帧。

默认值为send_field.

parity

输入隔行扫描视频假设的图像场顺序。可接受以下值之一:

0, tff

假设顶场优先。

1, bff

假设底场优先。

-1, auto

启用自动检测场顺序。

默认值为auto。 如果隔行扫描未知或解码器未导出此信息,则假设为顶场优先。

deint

指定要隔行扫描的帧。接受以下值之一:

0, all

去隔行扫描所有帧。

1, interlaced

仅去隔行扫描标记为隔行扫描的帧。

默认值为all.

32.21 bwdif_cuda

使用bwdif算法对输入视频进行去隔行扫描,但在CUDA中实现, 以便可以作为使用nvdec和/或nvenc的GPU加速管道的一部分进行工作。

它接受以下参数:

mode

采用的隔行扫描模式。可接受以下值之一:

0, send_frame

为每帧输出一个帧。

1, send_field

为每场输出一个帧。

默认值为send_field.

parity

输入隔行扫描视频假设的图像场顺序。可接受以下值之一:

0, tff

假设顶场优先。

1, bff

假设底场优先。

-1, auto

启用自动检测场顺序。

默认值为auto。 如果隔行扫描未知或解码器未导出此信息,则假设为顶场优先。

deint

指定要隔行扫描的帧。接受以下值之一:

0, all

对所有帧进行去隔行。

1, interlaced

仅对标记为隔行的帧进行去隔行。

默认值是all.

32.22 ccrepack

重新打包CEA-708闭路字幕的旁路数据

此过滤器修复商业编码器中常见的上游CEA-708有效载荷格式错误问题,特别是目标帧率的错误元组数(错误的cc_count)以及元组排序错误(例如,CEA-608元组未在有效载荷的第一个条目中)。

32.23 cas

将对比度自适应锐化过滤器应用于视频流。

该过滤器接受以下选项:

strength

设置锐化强度。默认值为0。

planes

设置需要过滤的平面。默认值为过滤所有平面,除了Alpha平面。

32.23.1 命令

此过滤器支持与选项相同的命令

32.24 chromahold

移除所有颜色信息,仅保留特定颜色。

该过滤器接受以下选项:

color

不会被中性色彩替代的颜色。

similarity

与上述颜色的相似百分比。0.01仅匹配精确的关键颜色,1.0匹配所有颜色。

blend

混合比例。 0.0使像素要么完全是灰色,要么完全不是灰色。 更高的值会保留更多的颜色。

yuv

表示传递的颜色已经是YUV格式而不是RGB。

启用此选项时,像“绿色”或“红色”之类的字面颜色将不再有意义。 这可用于以十六进制形式传递精确的YUV值。

32.24.1 命令

此过滤器支持与选项相同的命令。 命令接受与相应选项相同的语法。

如果指定的表达式无效,则将保持当前值。

32.25 chromakey

YUV颜色空间的颜色/色度键控。

该过滤器接受以下选项:

color

将被替换为透明的颜色。

similarity

与关键颜色的相似百分比。

0.01仅匹配精确的关键颜色,1.0匹配所有颜色。

blend

混合比例。

0.0使像素要么完全透明,要么完全不透明。

更高的值会使像素半透明,像素颜色越接近关键颜色,透明度越高。

yuv

表示传递的颜色已经是YUV格式而不是RGB。

启用此选项时,像“绿色”或“红色”之类的字面颜色将不再有意义。 这可用于以十六进制形式传递精确的YUV值。

32.25.1 命令

此过滤器支持与选项相同的命令。 命令接受与相应选项相同的语法。

如果指定的表达式无效,则将保持当前值。

32.25.2 示例

  • 使输入图像中的每个绿色像素透明:
    ffmpeg -i input.png -vf chromakey=green out.png
    
  • 将绿屏视频覆盖在静态黑色背景之上。
    ffmpeg -f lavfi -i color=c=black:s=1280x720 -i video.mp4 -shortest -filter_complex "[1:v]chromakey=0x70de77:0.1:0.2[ckout];[0:v][ckout]overlay[out]" -map "[out]" output.mkv
    

32.26 chromakey_cuda

CUDA加速的YUV颜色空间的颜色/色度键控。

此过滤器的工作原理类似于常规chroma键控过滤器,但操作在CUDA帧上。 有关更多详细信息和参数,请参阅chromakey.

32.26.1 示例

  • 使输入视频中的所有绿色像素透明,并将其用作其他视频的叠加:
    ./ffmpeg \
        -hwaccel cuda -hwaccel_output_format cuda -i input_green.mp4  \
        -hwaccel cuda -hwaccel_output_format cuda -i base_video.mp4 \
        -init_hw_device cuda \
        -filter_complex \
        " \
            [0:v]chromakey_cuda=0x25302D:0.1:0.12:1[overlay_video]; \
            [1:v]scale_cuda=format=yuv420p[base]; \
            [base][overlay_video]overlay_cuda" \
        -an -sn -c:v h264_nvenc -cq 20 output.mp4
    
  • 处理两个软件源,显式上传帧:
    ./ffmpeg -init_hw_device cuda=cuda -filter_hw_device cuda \
        -f lavfi -i color=size=800x600:color=white,format=yuv420p \
        -f lavfi -i yuvtestsrc=size=200x200,format=yuv420p \
        -filter_complex \
        " \
            [0]hwupload[under]; \
            [1]hwupload,chromakey_cuda=green:0.1:0.12[over]; \
            [under][over]overlay_cuda" \
        -c:v hevc_nvenc -cq 18 -preset slow output.mp4
    

32.27 chromanr

减少亮度噪声。

该过滤器接受以下选项:

thres

设置用于平均亮度值的阈值。 当前像素和邻近像素的Y、U和V像素分量的绝对差值之和低于此阈值的值将被用于平均。 亮度分量不变并复制到输出中。 默认值为30,允许范围为1到200。

sizew

设置用于平均的矩形的水平半径。 允许范围为1至100。默认值为5。

sizeh

设置用于平均的矩形的垂直半径。 允许范围为1至100。默认值为5。

stepw

设置平均时的水平步长。默认值为1。 允许范围为1到50。 主要用于加速过滤。

steph

设置平均时的垂直步长。默认值为1。 允许范围为1到50。 主要用于加速过滤。

threy

设置用于平均亮度值的Y阈值。 对当前像素和邻近像素的Y分量的最大允许差值设置更精细的控制。 默认值为200,允许范围为1到200。

threu

设置用于平均亮度值的U阈值。 对当前像素和邻近像素的U分量的最大允许差值设置更精细的控制。 默认值为200,允许范围为1到200。

threv

设置用于平均亮度值的V阈值。 对当前像素和邻近像素的V分量的最大允许差值设置更精细的控制。 默认值为200,允许范围为1到200。

distance

设置计算中使用的距离类型。

manhattan

绝对差值。

euclidean

平方差。

默认距离类型为曼哈顿距离。

32.27.1 命令

此过滤器支持与选项相同的命令。 命令接受与相应选项相同的语法。

32.28 chromashift

水平和/或垂直地移动色度像素。

此过滤器接受以下选项:

cbh

设置水平移动蓝色色度的量。

cbv

设置垂直移动蓝色色度的量。

crh

设置水平移动红色色度的量。

crv

设置垂直移动红色色度的量。

edge

设置边缘模式,可以是涂抹(默认),或者变形.

32.28.1 命令

此过滤器支持以上所有选项作为命令.

32.29 ciescope

显示CIE色彩图,并将像素覆盖其上。

此过滤器接受以下选项:

system

设置色彩系统。

ntsc, 470m
ebu, 470bg
smpte
240m
apple
widergb
cie1931
rec709, hdtv
uhdtv, rec2020
dcip3
cie

设置CIE系统。

xyy
ucs
luv
gamuts

设置要绘制的色域。

请参阅system选项来获取可用值。

size, s

设置ciescope大小,默认值为512。

intensity, i

设置将输入像素值映射到CIE图的强度。

contrast

设置对绘制超出活动色彩系统内的颜色的对比度。

corrgamma

校正范围内显示的伽玛,默认启用。

showwhite

在CIE图上显示白点,默认禁用。

gamma

设置输入伽玛。仅在XYZ输入色彩空间中使用。

fill

填充CIE颜色。默认启用。

32.30 codecview

可视化某些编解码器导出的信息。

某些编解码器可以通过帧使用旁路数据或其他途径导出信息。 例如,一些基于MPEG的编解码器通过导出export_mvs标志来输出运动矢量。flags2 option.

The filter accepts the following option:

block

Display block partition structure using the luma plane.

mv

Set motion vectors to visualize.

Available flags for mv are:

pf

forward predicted MVs of P-frames

bf

forward predicted MVs of B-frames

bb

backward predicted MVs of B-frames

qp

Display quantization parameters using the chroma planes.

mv_type, mvt

Set motion vectors type to visualize. Includes MVs from all frames unless specified by frame_type option.

Available flags for mv_type are:

fp

forward predicted MVs

bp

backward predicted MVs

frame_type, ft

Set frame type to visualize motion vectors of.

Available flags for frame_type are:

if

intra-coded frames (I-frames)

pf

predicted frames (P-frames)

bf

bi-directionally predicted frames (B-frames)

32.30.1 Examples

  • Visualize forward predicted MVs of all frames using ffplay:
    ffplay -flags2 +export_mvs input.mp4 -vf codecview=mv_type=fp
    
  • Visualize multi-directionals MVs of P and B-Frames using ffplay:
    ffplay -flags2 +export_mvs input.mp4 -vf codecview=mv=pf+bf+bb
    

32.31 colorbalance

Modify intensity of primary colors (red, green and blue) of input frames.

The filter allows an input frame to be adjusted in the shadows, midtones or highlights regions for the red-cyan, green-magenta or blue-yellow balance.

A positive adjustment value shifts the balance towards the primary color, a negative value towards the complementary color.

The filter accepts the following options:

rs
gs
bs

Adjust red, green and blue shadows (darkest pixels).

rm
gm
bm

Adjust red, green and blue midtones (medium pixels).

rh
gh
bh

Adjust red, green and blue highlights (brightest pixels).

Allowed ranges for options are [-1.0, 1.0]. Defaults are 0.

pl

Preserve lightness when changing color balance. Default is disabled.

32.31.1 Examples

  • Add red color cast to shadows:
    colorbalance=rs=.3
    

32.31.2 Commands

This filter supports the all above options as commands.

32.32 colorcontrast

Adjust color contrast between RGB components.

The filter accepts the following options:

rc

Set the red-cyan contrast. Defaults is 0.0. Allowed range is from -1.0 to 1.0.

gm

Set the green-magenta contrast. Defaults is 0.0. Allowed range is from -1.0 to 1.0.

by

Set the blue-yellow contrast. Defaults is 0.0. Allowed range is from -1.0 to 1.0.

rcw
gmw
byw

Set the weight of each rc, gm, by option value. Default value is 0.0. Allowed range is from 0.0 to 1.0. If all weights are 0.0 filtering is disabled.

pl

Set the amount of preserving lightness. Default value is 0.0. Allowed range is from 0.0 to 1.0.

32.32.1 Commands

This filter supports the all above options as commands.

32.33 colorcorrect

Adjust color white balance selectively for blacks and whites. This filter operates in YUV colorspace.

The filter accepts the following options:

rl

Set the red shadow spot. Allowed range is from -1.0 to 1.0. Default value is 0.

bl

Set the blue shadow spot. Allowed range is from -1.0 to 1.0. Default value is 0.

rh

Set the red highlight spot. Allowed range is from -1.0 to 1.0. Default value is 0.

bh

Set the blue highlight spot. Allowed range is from -1.0 to 1.0. Default value is 0.

saturation

Set the amount of saturation. Allowed range is from -3.0 to 3.0. Default value is 1.

analyze

If set to anything other than manual it will analyze every frame and use derived parameters for filtering output frame.

Possible values are:

manual
average
minmax
median

Default value is manual.

32.33.1 Commands

This filter supports the all above options as commands.

32.34 colorchannelmixer

Adjust video input frames by re-mixing color channels.

This filter modifies a color channel by adding the values associated to the other channels of the same pixels. For example if the value to modify is red, the output value will be:

red=red*rr + blue*rb + green*rg + alpha*ra

The filter accepts the following options:

rr
rg
rb
ra

Adjust contribution of input red, green, blue and alpha channels for output red channel. Default is 1 for rr, and 0 for rg, rb and ra.

gr
gg
gb
ga

Adjust contribution of input red, green, blue and alpha channels for output green channel. Default is 1 for gg, and 0 for gr, gb and ga.

br
bg
bb
ba

Adjust contribution of input red, green, blue and alpha channels for output blue channel. Default is 1 for bb, and 0 for br, bg and ba.

ar
ag
ab
aa

Adjust contribution of input red, green, blue and alpha channels for output alpha channel. Default is 1 for aa, and 0 for ar, ag and ab.

Allowed ranges for options are [-2.0, 2.0].

pc

Set preserve color mode. The accepted values are:

none

Disable color preserving, this is default.

lum

Preserve luminance.

max

Preserve max value of RGB triplet.

avg

Preserve average value of RGB triplet.

sum

Preserve sum value of RGB triplet.

nrm

Preserve normalized value of RGB triplet.

pwr

Preserve power value of RGB triplet.

pa

Set the preserve color amount when changing colors. Allowed range is from [0.0, 1.0]. Default is 0.0因此被禁用。

32.34.1 示例

  • 将源转换为灰度:
    colorchannelmixer=.3:.4:.3:0:.3:.4:.3:0:.3:.4:.3
    
  • 模拟棕褐色调:
    colorchannelmixer=.393:.769:.189:0:.349:.686:.168:0:.272:.534:.131
    

32.34.2 命令

此过滤器支持以上所有选项作为命令.

32.35 着色

在视频流上覆盖实色。

过滤器接受以下选项:

hue

设置色调。允许范围为0到360。 默认值为0。

saturation

设置饱和度。允许范围为0到1。 默认值为0.5。

lightness

设置亮度。允许范围为0到1。 默认值为0.5。

mix

设置源亮度的混合比例。 默认值为1.0。 允许范围为0.0到1.0。

32.35.1 命令

此过滤器支持以上所有选项作为命令.

32.36 颜色键

RGB颜色空间颜色键控。 此过滤器作用于8位RGB格式帧,通过将落入键颜色相似性半径内的每个像素的alpha分量设置为0进行操作。 超出相似性半径的像素alpha值取决于混合选项的值。

过滤器接受以下选项:

color

设置alpha将为0(完全透明)的颜色。 参见ffmpeg-utils手册中的“颜色”部分。 默认值为black.

similarity

设置从键颜色起的半径范围,半径内的其他颜色也拥有完全透明度。 计算出的距离与键颜色RGB值与像素颜色之间的3D空间单元分数距离相关。 范围为0.01到1.0。0.01在键颜色周围的非常小的半径内匹配,而1.0匹配所有颜色。 默认值为0.01.

blend

设置如何计算落在相似性半径外的像素的alpha值。 0.0使像素要么完全透明,要么完全不透明。 较高的值会产生半透明的像素,与键颜色越相似则像素透明度越大。 范围为0.0到1.0。 默认值为0.0.

32.36.1 示例

  • 使输入图像中的每个绿色像素透明:
    ffmpeg -i input.png -vf colorkey=green out.png
    
  • 将在静态背景图像上叠加绿屏视频。
    ffmpeg -i background.png -i video.mp4 -filter_complex "[1:v]colorkey=0x3BBD1E:0.3:0.2[ckout];[0:v][ckout]overlay[out]" -map "[out]" output.flv
    

32.36.2 命令

此过滤器支持相同命令作为选项。 命令接受对应选项的相同语法。

如果指定的表达式无效,则保持其当前值。

32.37 保持颜色

删除所有RGB颜色的颜色信息,仅保留特定颜色。

过滤器接受以下选项:

color

不会被中性灰色替代的颜色。

similarity

与上述颜色的相似度百分比。 0.01仅匹配精确的键颜色,而1.0匹配所有颜色。

blend

混合百分比。0.0使像素完全灰色。 更高的值会保留更多颜色。

32.37.1 命令

此过滤器支持相同命令作为选项。 命令接受对应选项的相同语法。

如果指定的表达式无效,则保持其当前值。

32.38 颜色级别

使用级别调整视频输入帧。

过滤器接受以下选项:

rimin
gimin
bimin
aimin

调整红、绿、蓝和alpha输入黑点。 允许范围为[-1.0, 1.0]。默认值为0.

rimax
gimax
bimax
aimax

调整红、绿、蓝和alpha输入白点。 允许范围为[-1.0, 1.0]。默认值为1.

输入级别用于减轻高光(明亮色调)、加深阴影(暗色调)、改变明暗色调的平衡。

romin
gomin
bomin
aomin

调整红、绿、蓝和alpha输出黑点。 允许范围为[0, 1.0]。默认值为0.

romax
gomax
bomax
aomax

调整红、绿、蓝和alpha输出白点。 允许范围为[0, 1.0]。默认值为1.

输出级别允许手动选择限制的输出范围。

preserve

设置保留颜色模式。接受值为:

none

禁用颜色保留,默认值。

lum

保留亮度。

max

保留RGB三元组的最大值。

avg

保留RGB三元组的平均值。

sum

保留RGB三元组的总和值。

nrm

保留RGB三元组的归一化值。

pwr

保留RGB三元组的功率值。

32.38.1 示例

  • 使视频输出变暗:
    colorlevels=rimin=0.058:gimin=0.058:bimin=0.058
    
  • 增加对比度:
    colorlevels=rimin=0.039:gimin=0.039:bimin=0.039:rimax=0.96:gimax=0.96:bimax=0.96
    
  • 使视频输出变亮:
    colorlevels=rimax=0.902:gimax=0.902:bimax=0.902
    
  • 增加亮度:
    colorlevels=romin=0.5:gomin=0.5:bomin=0.5
    

32.38.2 命令

此过滤器支持以上所有选项作为命令.

32.39 颜色映射

对视频流应用自定义颜色映射。

此过滤器需要三个输入视频流。 第一个流是将要被过滤的视频流。 第二和第三个视频流指定源颜色和目标颜色的颜色块映射。

过滤器接受以下选项:

patch_size

设置源和目标视频流的颜色块大小(以像素为单位)。

nb_patches

设置从源和目标视频流中使用的颜色块最大数量。 默认值为附加视频流中可用颜色块的数量。 颜色块的最大允许数量为64.

type

设置目标颜色的调整方式。可为relativeabsolute。 默认值为absolute.

kernel

设置用于测量映射颜色之间颜色差异的核。

接受值为:

euclidean
weuclidean

默认值为euclidean.

32.40 颜色矩阵

转换颜色矩阵。

过滤器接受以下选项:

src
dst

指定源和目标颜色矩阵。必须同时指定两个值。

接受值为:

bt709

BT.709

fcc

FCC

bt601

BT.601

bt470

BT.470

bt470bg

BT.470BG

smpte170m

SMPTE-170M

smpte240m

SMPTE-240M

bt2020

BT.2020

例如,将BT.601转换为SMPTE-240M,可以使用以下命令:

colormatrix=bt601:smpte240m

32.41 颜色空间

转换颜色空间、传递特性或颜色主色。 输入视频需要具有偶数大小。

过滤器接受以下选项:

all

一次指定所有颜色属性。

接受值为:

bt470m

BT.470M

bt470bg

BT.470BG

bt601-6-525

BT.601-6 525

bt601-6-625

BT.601-6 625

bt709

BT.709

smpte170m

SMPTE-170M

smpte240m

SMPTE-240M

bt2020

BT.2020

space

指定输出颜色空间。

接受值为:

bt709

BT.709

fcc

FCC

bt470bg

BT.470BG 或 BT.601-6 625

smpte170m

SMPTE-170M 或 BT.601-6 525

smpte240m

SMPTE-240M

ycgco

YCgCo

bt2020ncl

BT.2020 非恒定亮度

trc

指定输出传递特性。

接受值为:

bt709

BT.709

bt470m

BT.470M

bt470bg

BT.470BG

gamma22

恒定伽玛 2.2

gamma28

恒定伽玛 2.8

smpte170m

SMPTE-170M, BT.601-6 625 或 BT.601-6 525

smpte240m

SMPTE-240M

srgb

SRGB

iec61966-2-1

iec61966-2-1

iec61966-2-4

iec61966-2-4

xvycc

xvycc

bt2020-10

BT.2020 10位内容

bt2020-12

BT.2020 12位内容

primaries

指定输出颜色主色。

接受值为:

bt709

BT.709

bt470m

BT.470M

bt470bg

BT.470BG 或 BT.601-6 625

smpte170m

SMPTE-170M 或 BT.601-6 525

smpte240m

SMPTE-240M

film

影片

smpte431

SMPTE-431

smpte432

SMPTE-432

bt2020

BT.2020

jedec-p22

JEDEC P22 磷光体

range

指定输出颜色范围。

接受值为:

tv

电视(受限)范围

mpeg

MPEG(受限)范围

pc

PC(完全)范围

jpeg

JPEG(完全)范围

format

指定输出颜色格式。

接受值为:

yuv420p

YUV 4:2:0 平面 8位

yuv420p10

YUV 4:2:0 平面 10位

yuv420p12

YUV 4:2:0 平面 12位

yuv422p

YUV 4:2:2 平面 8位

yuv422p10

YUV 4:2:2 平面 10位

yuv422p12

YUV 4:2:2 平面 12位

yuv444p

YUV 4:4:4 平面 8位

yuv444p10

YUV 4:4:4 平面 10位

yuv444p12

YUV 4:4:4 平面 12位

fast

执行快速转换,跳过伽玛/主色校正。这将显著减少CPU开销,但在数学上是不正确的。 为了获得与colormatrix过滤器生成的输出兼容的结果,请使用fast=1。

dither

指定抖动模式。

接受值为:

none

无抖动

fsb

Floyd-Steinberg抖动

wpadapt

白点适配模式。

接受值为:

bradford

Bradford白点适配

vonkries

von Kries白点适配

identity

身份白点适配(即无白点适配)

iall

一次覆盖所有输入属性。与相同的接受值。.

ispace

覆盖输入颜色空间。与空间接受值相同。.

iprimaries

覆盖输入颜色主色。与主色接受值相同。.

itrc

覆盖输入传递特性。与传递特性接受值相同。.

irange

覆盖输入颜色范围。与范围接受值相同。.

过滤器将传递特性、颜色空间和颜色主色转换为指定的用户值。 如果未指定输出值,则根据"all"属性设置默认值。 如果也未指定该属性,过滤器将记录错误。 输出颜色范围和值格式默认为输入颜色范围和值格式。 输入传递特性、颜色空间、颜色主色和颜色范围应设置为输入数据。 如果缺少任何这些值,过滤器将记录错误并且不会发生转换。

例如,将输入转换为SMPTE-240M,可以使用以下命令:

colorspace=smpte240m

32.42 colorspace_cuda

colorspace过滤器的CUDA加速实现。

与软件colorspace过滤器相比,它并不完全具备所有功能,且目前仅支持jpeg/全范围和mpeg/有限范围之间的颜色范围转换。

过滤器接受以下选项:

range

指定输出颜色范围。

接受值为:

tv

电视(受限)范围

mpeg

MPEG(受限)范围

pc

PC(完全)范围

jpeg

JPEG(完全)范围

32.43 色温

调整视频中的色温以模拟环境色温的变化。

过滤器接受以下选项:

temperature

设置温度(单位:开尔文)。允许范围为1000到40000。 默认值为6500 K。

mix

设置过滤输出的混合。允许范围为0到1。 默认值为1。

pl

设置保留亮度的量。允许范围为0到1。 默认值为0。

32.43.1 命令

此过滤器支持相同命令作为选项。

32.44 卷积

应用3x3、5x5、7x7或水平/垂直最多49个元素的卷积运算。

过滤器接受以下选项:

0m
1m
2m
3m

为每个平面设置矩阵。 矩阵是9、25或49个有符号整数的序列,格式为方形模式, 从1到49个奇数有符号整数,格式为模式。

0rdiv
1rdiv
2rdiv
3rdiv

为每个平面设置计算值的乘数。 如果未设置或为0,则为所有矩阵元素的和的倒数。

0bias
1bias
2bias
3bias

为每个平面设置偏移值。此值会加入乘法结果。 用于使总图像更明亮或更暗。默认值为0.0。

0mode
1mode
2mode
3mode

为每个平面设置矩阵模式。可为方形, 。 默认值为. Default is 方形.

32.44.1 命令

此过滤器支持以上所有选项作为命令.

32.44.2 示例

  • 应用锐化:
    convolution="0 -1 0 -1 5 -1 0 -1 0:0 -1 0 -1 5 -1 0 -1 0:0 -1 0 -1 5 -1 0 -1 0:0 -1 0 -1 5 -1 0 -1 0"
    
  • 应用模糊:
    convolution="1 1 1 1 1 1 1 1 1:1 1 1 1 1 1 1 1 1:1 1 1 1 1 1 1 1 1:1 1 1 1 1 1 1 1 1:1/9:1/9:1/9:1/9"
    
  • 应用边缘增强:
    convolution="0 0 0 -1 1 0 0 0 0:0 0 0 -1 1 0 0 0 0:0 0 0 -1 1 0 0 0 0:0 0 0 -1 1 0 0 0 0:5:1:1:1:0:128:128:128"
    
  • 应用边缘检测:
    convolution="0 1 0 1 -4 1 0 1 0:0 1 0 1 -4 1 0 1 0:0 1 0 1 -4 1 0 1 0:0 1 0 1 -4 1 0 1 0:5:5:5:1:0:128:128:128"
    
  • 应用包含对角线的拉普拉斯边缘检测器:
    convolution="1 1 1 1 -8 1 1 1 1:1 1 1 1 -8 1 1 1 1:1 1 1 1 -8 1 1 1 1:1 1 1 1 -8 1 1 1 1:5:5:5:1:0:128:128:0"
    
  • 应用浮雕效果:
    convolution="-2 -1 0 -1 1 1 0 1 2:-2 -1 0 -1 1 1 0 1 2:-2 -1 0 -1 1 1 0 1 2:-2 -1 0 -1 1 1 0 1 2"
    

32.45 卷积

在频域中对视频流进行2D卷积,使用第二流作为脉冲。

过滤器接受以下选项:

planes

设置要处理的平面。

impulse

设置要处理的脉冲视频帧,可以是第一个全部。默认值为全部.

过滤器还支持convolve帧同步选项。 options.

32.46 复制

将输入视频源未更改地复制到输出。主要用于测试目的。

32.47 核心图像

使用苹果OSX中的CoreImage API进行视频GPU过滤。

硬件加速基于OpenGL上下文。通常,这意味着视频由硬件处理。 但软件OpenGL实现也存在,这意味着没有硬件处理的保证。这取决于具体的OSX系统。

苹果提供了许多过滤器和图像生成器,具有多种选项。过滤器必须通过其名称以及选项进行引用。

核心图像过滤器接受以下选项:

list_filters

列出所有可用的过滤器和生成器以及它们各自的选项、可能的最小值和最大值,以及默认值。

list_filters=true
filter

通过各自的名称和选项指定所有过滤器。使用list_filters来确定所有有效的过滤器名称和选项。数值选项通过浮点值指定,并自动限制在其各自的值范围内。向量和颜色选项必须指定为以空格分隔的浮点值列表。字符转义必须完成。一个特殊选项名称default可用以使用过滤器的默认选项。

必须指定default或至少一个过滤器选项。所有省略的选项将使用它们的默认值。过滤器字符串的语法如下:

filter=<NAME>@<OPTION>=<VALUE>[@<OPTION>=<VALUE>][@...][#<NAME>@<OPTION>=<VALUE>[@<OPTION>=<VALUE>][@...]][#...]
output_rect

指定一个矩形,将过滤器链的输出复制到输入图像中。它由以空格分隔的浮点值列表给出:

output_rect=x\ y\ width\ height

如果没有提供,输出矩形等于输入图像的尺寸。输出矩形会自动在输入图像边界处裁剪。每个分量的负值是有效的。

output_rect=25\ 25\ 100\ 100

多个过滤器可以链接进行连续处理,而无需 GPU-HOST 传输,从而允许快速处理复杂的过滤器链。目前,仅支持具有零个(生成器)或恰好一个(过滤器)输入图像和一个输出图像的过滤器。此外,过渡过滤器目前还不能按预期使用。

某些过滤器生成具有附加填充的输出图像,具体取决于各自的过滤器内核。填充会自动移除,以确保过滤器输出与输入图像具有相同的大小。

对于图像生成器,输出图像的大小由过滤器链的前一个输出图像或整个过滤器链的输入图像决定。生成器不使用该图像的像素信息来生成其输出。然而,生成的输出会混合到该图像上,从而导致输出图像的部分或完全覆盖。

使用coreimagesrc视频源用于生成输入图像,并直接传递到过滤器链中。通过使用它,无需通过其他视频源或输入视频来提供输入图像。

32.47.1 示例

  • 列出所有可用的过滤器:
    coreimage=list_filters=true
    
  • 使用带默认选项的 CIBoxBlur 过滤器来模糊图像:
    coreimage=filter=CIBoxBlur@default
    
  • 使用一个过滤器链,CISepiaTone 使用默认值,CIVignetteEffect 的中心设置为100x100,半径为50像素:
    coreimage=filter=CIBoxBlur@default#CIVignetteEffect@inputCenter=100\ 100@inputRadius=50
    
  • 使用 nullsrc 和 CIQRCodeGenerator 为 FFmpeg 主页创建二维码,以下是为 Apple 标准 bash shell 提供的完整且转义的命令行:
    ffmpeg -f lavfi -i nullsrc=s=100x100,coreimage=filter=CIQRCodeGenerator@inputMessage=https\\\\\://FFmpeg.org/@inputCorrectionLevel=H -frames:v 1 QRCode.png
    

32.48 corr

获取两个输入视频之间的相关性。

该过滤器需要两个输入视频。

两个输入视频必须具有相同的分辨率和像素格式,才能使该过滤器正常工作。此外,假设两个输入具有相同数量的帧,这些帧是一一比较的。

获得的每个分量、平均值、最小值和最大值相关性通过日志系统打印。

过滤器将每帧计算的相关性存储在帧元数据中。

此过滤器还支持framesync选项。

在以下示例中,正在处理的输入文件main.mpg与参考文件进行比较ref.mpg.

ffmpeg -i main.mpg -i ref.mpg -lavfi corr -f null -

32.49 cover_rect

遮盖矩形对象

它接受以下选项:

cover

可选遮盖图像的文件路径,需要为 yuv420 格式。

mode

设置遮盖模式。

它接受以下值:

cover

通过提供的图像来遮盖它

blur

通过插值周围像素来遮盖它

默认值为模糊.

32.49.1 示例

  • 通过给定视频中的提供图像遮盖矩形对象ffmpeg:
    ffmpeg -i file.ts -vf find_rect=newref.pgm,cover_rect=cover.jpg:mode=cover new.mkv
    

32.50 裁剪

将输入视频裁剪为给定的尺寸。

它接受以下参数:

w, out_w

输出视频的宽度。默认值为iw。 此表达式仅在过滤器配置期间或发送“w”或“out_w”命令时评估一次。

h, out_h

输出视频的高度。默认值为ih。 此表达式仅在过滤器配置期间或发送“h”或“out_h”命令时评估一次。

x

输入视频中输出视频左边缘的水平位置。默认值为(in_w-out_w)/2。 此表达式每帧评估一次。

y

输入视频中输出视频顶部边缘的垂直位置。默认值为(in_h-out_h)/2。 此表达式每帧评估一次。

keep_aspect

如果设置为1,将强制输出显示长宽比与输入相同,通过更改输出样本长宽比。默认值为0。

exact

启用精确裁剪。如果启用,子采样视频将按指定的确切宽度/高度/x/y裁剪,不会舍入为更小的值。默认值为0。

参数out_w, out_h, x, y是包含以下常量的表达式:

x
y

计算得出的xy值。它们每帧进行计算。

in_w
in_h

输入的宽度和高度。

iw
ih

这与in_win_h.

out_w
out_h

输出(裁剪后)的宽度和高度。

ow
oh

这与out_wout_h.

a

iw / ih

sar

输入样本长宽比

dar

输入显示长宽比,与(iw / ih) * sar

hsub
vsub

水平和垂直色度子采样值。例如,对于像素格式“yuv422p”hsub为2,vsub为1。

n

输入帧的编号,从0开始。

pos

输入帧在文件中的位置,未知时为 NAN;已弃用,不要使用

t

时间戳以秒为单位表示。如果输入时间戳未知,则为 NAN。

表达式out_w可能依赖于out_h的值, 表达式out_h可能依赖于out_w,但它们 不能依赖于xy,因为xy会在out_wout_h.

之后计算。xy参数指定位于输出(未裁剪)区域左上角的表达式。它们 会为每帧计算一次。如果计算得出的值无效,则它会 近似到最接近的有效值。

表达式x可能依赖于y,表达式y可能依赖于x.

32.50.1 示例

  • 裁剪 100x100 大小的区域,其位置为(12,34)。
    crop=100:100:12:34
    

    使用命名的参数,以上示例变为:

    crop=w=100:h=100:x=12:y=34
    
  • 裁剪输入区域中心大小为 100x100:
    crop=100:100
    
  • 裁剪输入视频的中心区域大小为输入视频的 2/3:
    crop=2/3*in_w:2/3*in_h
    
  • 裁剪输入视频中心正方形:
    crop=out_w=in_h
    crop=in_h
    
  • 限定一个矩形,其左上角位置为 100:100, 右下角对应于输入图像的右下角。
    crop=in_w-100:in_h-100:100:100
    
  • 从左、右边缘裁剪10像素,从上、下边缘裁剪20像素
    crop=in_w-2*10:in_h-2*20
    
  • 仅保留输入图像的右下四分之一部分:
    crop=in_w/2:in_h/2:in_w/2:in_h/2
    
  • 裁剪高度以获得希腊和谐:
    crop=in_w:1/PHI*in_w
    
  • 应用震颤效果:
    crop=in_w/2:in_h/2:(in_w-out_w)/2+((in_w-out_w)/2)*sin(n/10):(in_h-out_h)/2 +((in_h-out_h)/2)*sin(n/7)
    
  • 根据时间戳应用不稳定摄像机效果:
    crop=in_w/2:in_h/2:(in_w-out_w)/2+((in_w-out_w)/2)*sin(t*10):(in_h-out_h)/2 +((in_h-out_h)/2)*sin(t*13)
    
  • 设置 x 取决于 y 的值:
    crop=in_w/2:in_h/2:y:10+10*sin(n/10)
    

32.50.2 命令

此过滤器支持以下命令:

w, out_w
h, out_h
x
y

设置输出视频的宽度/高度以及 输入视频中的水平/垂直位置。 该命令接受与对应选项相同的语法。

如果指定的表达式无效,则继续保持当前值。

32.51 cropdetect

自动检测裁剪大小。

它计算必要的裁剪参数,并通过日志系统打印 推荐的参数。检测到的尺寸根据模式.

接受以下参数:

mode

根据模式裁剪检测基于周围像素的纯黑值或运动矢量和边缘像素的组合。

black

检测播放视频周围的黑色像素。要进行精确控制,请使用选项限制.

mvedges

通过视频内部的运动矢量检测播放中的视频,并扫描边缘像素(通常形成播放视频的边界)。

limit

设置更高的黑色值阈值,可以选择指定值 从无(0)到全部(对于 8 位格式为 255)。 大于设置值的强度值会被视为非黑色。默认值为 24。 您还可以指定一个介于 0.0 到 1.0 之间的值,该值将根据像素格式的位深度进行缩放。

round

设置宽度/高度应整除的值。默认值为 16。 偏移会自动调整以居中视频。使用 2 以仅获得偶数维度(针对 4:2:2 视频需要)。 编码到大多数视频编码时,16 是最佳选择。

skip

设置初始帧数,在此期间跳过评估。 默认值是2。范围是0到INT_MAX。

reset_count, reset

设置计数器,该计数器在检测到的最大视频区域重新设置并重新开始检测当前最佳裁剪区域之前决定经过的帧数。 默认值是 0。

当频道标志会干扰视频区域时,这可能会很有用。0 表示“从不重置”, 并返回播放期间遇到的最大区域。

mv_threshold

设置作为运动检测阈值的像素单位运动。默认值为 8。

low
high

设置低阈值和高阈值,用于 Canny 阈值算法。

高阈值选择“强”边缘像素,然后这些强像素通过 8 连通性与低阈值选择的“弱”边缘像素连接。

阈值必须选择在范围 [0,1] 中,并且应小于或等于.

默认值为0.055/255默认值为15/255.

32.51.1 示例

  • 查找视频周围有黑色边框的区域:
    ffmpeg -i file.mp4 -vf cropdetect,metadata=mode=print -f null -
    
  • 查找嵌入的视频区域,事先生成运动矢量:
    ffmpeg -i file.mp4 -vf mestimate,cropdetect=mode=mvedges,metadata=mode=print -f null -
    
  • 查找嵌入的视频区域,使用解码器的运动矢量:
    ffmpeg -flags2 +export_mvs -i file.mp4 -vf cropdetect=mode=mvedges,metadata=mode=print -f null -
    

32.51.2 命令

此过滤器支持以下命令:

limit

命令接受与对应选项相同的语法。 如果指定的表达式无效,则继续保持其当前值。

32.52 延迟

延迟视频过滤,直到给定的墙钟时间戳。过滤器 首先传递preroll数量的帧,然后缓冲最多buffer数量的帧并等待提示。达到提示后 转发缓冲帧以及输入中的任何后续帧。

该过滤器可用于同步多个 ffmpeg 进程的输出,适用于 实时输出设备(例如 Decklink)。通过将该延迟放入过滤链中 并预缓冲帧,进程可以几乎在目标墙钟时间戳 到达后立即传递数据到输出。

不能保证完美的帧精度,但结果足以满足某些方案。

cue

提示时间戳,以微秒为单位的 UNIX 时间戳表示。默认值为 0。

preroll

以秒为单位通过预卷传递的内容持续时间。默认值为 0。

buffer

在等待提示之前缓冲内容的最大持续时间,以秒为单位。默认值为0。

32.53曲线

通过曲线应用颜色调整。

此滤镜类似于Adobe Photoshop和GIMP中的曲线工具。每个组件(红色、绿色和蓝色)的值由N关键点通过平滑曲线相互连接来定义。x轴表示输入帧的像素值,y轴表示要为输出帧设置的新像素值。

默认情况下,一个组件曲线由两个点定义(0;0)(1;1)。这创建了一条直线,其中每个原始像素值都被调整为其自身的值,这意味着图像没有变化。

该滤镜允许您重新定义这两个点并添加更多点。将定义一条新的曲线,使其平滑地通过所有这些新坐标。新定义的点需要在x轴上严格递增,并且它们的xy值必须在[0;1]区间内。曲线通过使用自然或单调的三次样条插值形成,具体取决于interp选项(默认值为natural)。natural样条通常产生更平滑的曲线,而单调(pchip)样条保证指定点之间的过渡是单调的。如果计算出的曲线恰好超出向量空间,将根据情况对值进行剪裁。

滤镜接受以下选项:

preset

选择一项可用的颜色预设。此选项可以与r, g, b参数一起使用;在这种情况下,后者选项优先于预定义值。 可用的预设包括:

none
color_negative
cross_process
darker
increase_contrast
lighter
linear_contrast
medium_contrast
negative
strong_contrast
vintage

默认值为none.

master, m

设置主关键点。这些点将定义第二次映射。这有时被称为"亮度"或"值"映射。可以与r, g, ball一起使用,因为它的作用像后处理LUT。

red, r

设置红色组件的关键点。

green, g

设置绿色组件的关键点。

blue, b

设置蓝色组件的关键点。

all

设置所有组件(不包括主组件)的关键点。 可以与其他组件关键点选项一起使用。在这种情况下,未设置的组件将回落到此all设置。

psfile

指定一个Photoshop曲线文件.acv)以导入设置。

plot

将曲线的Gnuplot脚本保存到指定文件。

interp

指定插值类型。可用的算法包括:

natural

自然三次样条,使用分段三次多项式,具有两次连续可微性。

pchip

单调三次样条,使用分段三次Hermite插值多项式(PCHIP)。

为了避免一些滤镜图语法冲突,每个关键点列表需要使用以下语法进行定义:x0/y0 x1/y1 x2/y2 ....

32.53.1命令

此过滤器支持与选项相同的命令

32.53.2示例

  • 轻微提升蓝色的中间水平:
    curves=blue='0/0 0.5/0.58 1/1'
    
  • 复古效果:
    curves=r='0/0.11 .42/.51 1/0.95':g='0/0 0.50/0.48 1/1':b='0/0.22 .49/.44 1/0.8'
    

    这里我们得到了每个组件的以下坐标:

    红色

    (0;0.11) (0.42;0.51) (1;0.95)

    绿色

    (0;0) (0.50;0.48) (1;1)

    蓝色

    (0;0.22) (0.49;0.44) (1;0.80)

  • 之前的示例也可以通过相关的内置预设来实现:
    curves=preset=vintage
    
  • 或者简单地:
    curves=vintage
    
  • 使用Photoshop预设并重新定义绿色组件的点:
    curves=psfile='MyCurvesPresets/purple.acv':green='0/0 0.45/0.53 1/1'
    
  • 检查曲线的cross_process配置文件使用ffmpeggnuplot:
    ffmpeg -f lavfi -i color -vf curves=cross_process:plot=/tmp/curves.plt -frames:v 1 -f null -
    gnuplot -p /tmp/curves.plt
    

32.54数据范围

视频数据分析滤镜。

此滤镜显示部分视频的十六进制像素值。

滤镜接受以下选项:

size, s

设置输出视频尺寸。

x

设置拾取像素的x偏移量。

y

设置拾取像素的y偏移量。

mode

设置范围模式,可选值包括:

mono

用白色在黑色背景上绘制十六进制像素值。

color

用输入视频像素颜色在黑色背景上绘制十六进制像素值。

color2

在从输入视频中拾取的彩色背景上绘制十六进制像素值,文字颜色按照总是可见的方式选择。

axis

在视频的左边和顶部绘制行和列编号。

opacity

设置背景透明度。

format

设置显示的数字格式。可以是hex,或者dec。默认值为hex.

components

设置要显示的像素组件。默认情况下,显示所有像素组件。

32.54.1命令

此过滤器支持与选项相同的命令,不包括size选项。

32.55方向模糊

应用方向模糊滤镜。

滤镜接受以下选项:

angle

设置方向模糊的角度。默认值为45.

radius

设置方向模糊的半径。默认值为5.

planes

设置需要过滤的部分。默认情况下过滤所有部分。

32.55.1命令

此过滤器支持与选项相同的命令。 命令接受与对应选项相同的语法。

如果指定的表达式无效,则保持其当前值。

32.56离散余弦去噪

使用二维离散余弦变换(频域过滤)对帧去噪。

此滤镜不为实时设计。

滤镜接受以下选项:

sigma, s

设置噪声标准差常量。

sigma定义了一个硬阈值的3 * sigma;每个绝对值低于此阈值的离散余弦系数将被丢弃。

如果需要更高级的过滤机制,请参见expr.

默认值为0.

overlap

设置每个块的重叠像素数量。由于过滤器可能比较慢,您可以想要减少此值,但会导致过滤器效果不如之前并可能产生各种伪影。

如果重叠值未允许处理整个输入宽度或高度,将显示一个警告,并相应的边界不会被去噪。

默认值为块尺寸-1,这是最佳设置。

expr, e

设置系数因子表达式。

对于离散余弦块的每个系数,此表达式将作为系数的一个乘子值进行评估。

如果此选项被设置,则sigma选项将被忽略。

离散余弦块绝对值可以通过c变量进行访问。

n

通过定义位数设置块尺寸1<<n定义了块尺寸,这是处理块的宽度和高度。

默认值为3(8x8),可以提高到4以获得块尺寸的16x16块。注意更改此设置对处理速度有巨大影响。此外,较大的块尺寸并不一定意味着更好的去噪。

32.56.1示例

应用标准差为sigma的去噪。4.5:

dctdnoiz=4.5

同样操作也可以使用表达式系统来实现:

dctdnoiz=e='gte(c, 4.5*3)'

使用块尺寸为16x16:

dctdnoiz=15:n=4

的猛烈去噪。

去除输入视频中的带状伪影。 它通过用参考像素的平均值替换带状像素来工作。

滤镜接受以下选项:

1thr
2thr
3thr
4thr

为每个部分设置带状检测阈值。默认值为0.02。 有效范围为0.00003到0.5。 如果当前像素与参考像素之间的差异小于阈值,将被视为带状。

range, r

带状检测范围,以像素为单位。默认是16。如果为正,使用从0到设置值区间内的随机数。如果为负,则使用确切的绝对值。 范围定义了当前像素周围四个像素的方块。

direction, d

设置方向(以弧度为单位),从中比较四个像素。如果为正,随机方向从0到设置值区间内。如果为负,则选择绝对值。例如方向0,-PI或-2*PI弧度只选择同一行上的像素,-PI/2只选择同一列上的像素。

blur, b

如果启用,将用所有四个周围像素的平均值与当前像素进行比较。默认值为启用。如果禁用,将单独比较当前像素与所有四个周围像素。如果只有所有四个与周围像素的差异都小于阈值,则像素被视为带状。

coupling, c

如果启用,只有当所有像素组件都是带状时才更改当前像素,例如所有颜色组件的带状检测阈值都触发。 默认值为禁用。

32.57.1命令

此过滤器支持以上所有选项作为命令.

32.58去块

从输入视频中移除块状伪影。

滤镜接受以下选项:

filter

设置过滤器类型,可以是。默认值为。 这控制了应用什么类型的去块操作。

block

设置块的大小,允许范围为4到512。默认值为8.

alpha
beta
gamma
delta

设置块检测阈值。允许范围为0到1。 默认值为:0.098对于alpha0.05其他。 使用更高的阈值会增加去块强度。 设置alpha控制块的精确边缘检测阈值。 剩余选项控制块附近边缘的检测阈值。每个选项分别适用于低于/高于或左/右。如果将任何一个设置为0禁用去块。

planes

设置需要过滤的平面。默认情况下对所有可用平面进行过滤。

32.58.1示例

  • 使用弱过滤器和块大小为4像素的去块操作。
    deblock=filter=weak:block=4
    
  • 使用强过滤器、块大小为4像素,并自定义阈值以过滤更多边缘。
    deblock=filter=strong:block=4:alpha=0.12:beta=0.07:gamma=0.06:delta=0.05
    
  • 类似上述操作,但仅过滤第一个平面。
    deblock=filter=strong:block=4:alpha=0.12:beta=0.07:gamma=0.06:delta=0.05:planes=1
    
  • 类似上述操作,但仅过滤第二个和第三个平面。
    deblock=filter=strong:block=4:alpha=0.12:beta=0.07:gamma=0.06:delta=0.05:planes=6
    

32.58.2命令

此过滤器支持上述所有选项作为命令.

32.59抽取

在固定间隔处丢弃重复帧。

滤镜接受以下选项:

cycle

设置丢弃一个帧所需的帧数。从中每N帧中丢弃一帧。 默认值为N frames will be dropped. Default is 5.

dupthresh

设置重复检测的阈值。如果帧的差异度量小于或等于此值,则将其声明为重复帧。默认值为1.1

scthresh

设置场景变化的阈值。默认值为15.

blockx
blocky

设置用于度量计算的x轴和y轴块的大小。较大的块提供更好的抗噪性,但在检测小运动时效果较差。必须是2的幂。默认值为32.

ppsrc

将主输入标记为预处理输入并激活纯净源输入流。这允许输入通过多种过滤器进行预处理,以帮助度量计算,同时保持帧选择无损。当设置为1时,第一个流为预处理输入,第二个流是纯净源,用于选择保留的帧。默认值为0.

chroma

设置是否在度量计算中考虑颜色信息。默认值为1.

mixed

设置输入是否仅部分包含需要抽取的内容。 默认值为false。 如果启用,视频输出流将是可变帧率。

32.60去卷积

通过使用第二个流作为脉冲,对视频流进行频域的二维去卷积。

滤镜接受以下选项:

planes

设置要处理的平面。

impulse

设置将要处理的脉冲视频帧,可以是第一帧所有帧。默认值为所有帧。.

noise

在进行分割时设置噪声。默认值为0.0000001。当宽度和高度不相同且不是2的幂,或流在卷积之前有噪声时很有用。

deconvolve滤镜还支持同步帧选项。

32.61点去杂

从视频中减小交叉亮度(点爬行)和交叉颜色(彩虹效应)。

它接受以下选项:

m

设置操作模式。可以是多个的组合。点爬纹用于减少交叉亮度和/或彩虹纹用于减少交叉颜色。

lt

设置空间亮度阈值。值越低,交叉亮度的减少越多。

tl

设置时间亮度的容差。值越高,交叉亮度的减少越多。

tc

设置色度时间变化的容差。值越高,交叉颜色的减少越多。

ct

设置时间色度阈值。值越低,交叉颜色的减少越多。

32.62 压缩

将压缩效果应用于视频。

此滤镜通过局部 (3x3) 平均值替换像素,仅考虑低于该像素的值。

它接受以下选项:

threshold0
threshold1
threshold2
threshold3

限制每个平面的最大变化,默认值为 65535。 如果为 0,平面将保持不变。

32.62.1 命令

此滤镜支持以上所有选项作为命令.

32.63 去闪烁

去除时间帧亮度的变化。

它接受以下选项:

size, s

设置移动平均滤波器的帧大小。默认值为 5,允许范围是 2 - 129。

mode, m

设置平滑时间亮度变化的平均方式。

可用的值有:

am

算术平均

gm

几何平均

hm

调和平均

qm

平方平均

cm

立方平均

pm

幂平均

median

中值

bypass

实际上不修改帧。当只是想要元数据时很有用。

32.64 去抖动

去除部分交错的电影化内容所产生的抖动。

例如,抖动可能由提取滤镜产生。如果原始来源是部分电影化内容,则输出pullup,dejudder将具有可变帧率。这可能会更改容器的记录帧率。除此之外,此滤镜不会影响恒定帧率视频。

此滤镜可用的选项为:

cycle

指定抖动重复的窗口长度。

接受大于 1 的任何整数。常用的值有:

4

如果原始内容是从 24 fps 至 30 fps(电影到 NTSC)进行电影化。

5

如果原始内容是从 25 fps 至 30 fps(PAL 到 NTSC)进行电影化。

20

如果是两者的混合。

默认值为‘4’.

32.65 去标志

通过简单插值周围像素来抑制电视台的标志。只需设置一个覆盖标志的矩形并让它消失(有时可能会出现更丑陋的东西——结果可能有所不同)。

它接受以下参数:

x
y

指定标志的左上角坐标。必须指定。

w
h

指定要清除的标志的宽度和高度。必须指定。

show

设置为 1 时,在屏幕上绘制一个绿色矩形以简化寻找合适的x, y, wh参数。 默认值为 0。

矩形绘制在将被(部分)替换为插值值的最外层像素上。每个方向上位于此矩形之外的下一行像素将用于计算矩形内部的插值像素值。

32.65.1 示例

  • 设置一个覆盖区域左上角坐标为 0,0,大小为 100x77 的矩形:
    delogo=x=0:y=0:w=100:h=77
    

32.66 去雨

通过应用基于卷积神经网络的去雨方法来去除输入图像/视频中的雨水。支持的模型:

训练以及模型生成脚本可在以下仓库中找到:https://github.com/XueweiMeng/derain_filter.git.

此滤镜接受以下选项:

filter_type

指定要使用的滤镜。此选项接受以下值:

derain

去雨滤镜。执行去雨滤镜需要使用去雨模型。

dehaze

去雾滤镜。执行去雾滤镜需要使用去雾模型。

默认值为‘derain’.

dnn_backend

指定用于模型加载和执行的 DNN 后端。此选项接受以下值:

tensorflow

TensorFlow 后端。要启用此后端,您需要安装 TensorFlow 的 C 库(见https://www.tensorflow.org/install/lang_c)并配置 FFmpeg。--enable-libtensorflow

model

设置指定网络架构及其参数的模型文件路径。 注意,不同的后端使用不同的文件格式。TensorFlow 仅能加载其自身格式的文件。

为了获得完整功能(如异步执行),请使用dnn_processing滤镜。

32.67 去抖

尝试修复横向和/或纵向移动的小变化。 此滤镜有助于消除手持相机、碰撞三脚架、车辆移动等导致的相机抖动。

此滤镜接受以下选项:

x
y
w
h

指定一个矩形区域以限制运动向量的搜索。 如有需要,可将运动向量的搜索限制在由其左上角、宽度和高度定义的框架矩形区域中。 这些参数的含义与用于显示边界框位置的 drawbox 滤镜相同。

这在框中主体的同步移动可能会与运动向量搜索的相机运动混淆时很有用。

如果x, y, wh中的任意一个或全部设置为 -1 则将使用整个框架。这允许在未指定运动向量搜索边界框的情况下设置后续选项。

默认值 - 搜索整个框架。

rx
ry

指定 x 和 y 方向的最大移动范围,范围为 0-64 像素。默认值为 16。

edge

指定如何生成像素以填补框架边缘的空白区域。可用值为:

blank, 0

在空白位置填充零

original, 1

在空白位置使用原始图像

clamp, 2

在空白位置使用挤出的边缘值

mirror, 3

在空白位置使用镜像边缘

默认值为‘mirror’.

blocksize

指定用于运动搜索的区块大小。范围为 4-128 像素,默认值为 8。

contrast

指定区块的对比度阈值。只有对比度(最暗和最亮像素之间的差异)超过指定阈值的区块才会被考虑。范围为 1-255,默认值为 125。

search

指定搜索策略。可用值为:

exhaustive, 0

设置为全面搜索

less, 1

设置为较少的全面搜索。

默认值为‘exhaustive’.

filename

如果设置,则将详细的运动搜索日志写入指定文件。

32.68 消除溢色

去除由绿屏或蓝屏反射颜色引起的不必要的前景颜色污染。

此滤镜接受以下选项:

type

设置要使用的溢色消除类型。

mix

设置如何生成溢色图。

expand

设置如何去除仍然残留的溢色。

red

控制溢色区域红色的量。

green

控制溢色区域绿色的量。 对于绿屏,应为 -1。

blue

控制溢色区域蓝色的量。 对于蓝屏,应为 -1。

brightness

控制溢色区域的亮度,同时保留原色。

alpha

从生成的溢色图中修改 alpha 通道。

32.68.1 命令

此滤镜支持以上所有选项作为命令.

32.69 去电影化

应用电影化操作的精确反转。需要使用 pattern 选项指定一个预定义的模式,该模式必须与传递给电影化滤镜的模式相同。

此滤镜接受以下选项:

first_field
top, t

顶部字段优先

bottom, b

底部字段优先 默认值为top.

pattern

字符串,表示想要应用的电影提取模式。 默认值为23.

start_frame

表示第一个帧相对于电影化模式的位置的值。如果剪切了流,可以使用此选项。 默认值为0.

32.70 扩张

对视频应用扩张效果。

此滤镜通过局部 (3x3) 最大值替换像素。

它接受以下选项:

threshold0
threshold1
threshold2
threshold3

限制每个平面的最大变化,默认值为 65535。 如果为 0,平面将保持不变。

coordinates

指定参考像素的标志。默认值为 255,即使用所有八个像素。

标志与局部 3x3 坐标的映射如下:

1 2 3 4 5 6 7 8

32.70.1 命令

此滤镜支持以上所有选项作为命令.

32.71 位移

根据第二和第三个输入流指示的内容移动像素。

它接受三个输入流并输出一个流,第一个输入为源,第二个和第三个输入为位移图。

第二个输入指定像素沿 x 轴的位移量,而第三个输入指定像素沿 y 轴的位移量。 如果位移图流中的一个终止,则将使用该位移图的最后一帧。

请注意,一旦生成,位移图可以反复重用。

以下是接受的选项说明。

edge

设置超出范围像素的处理行为。

可用值为:

blank

丢失的像素将被黑色像素代替。

smear

相邻像素将扩展以代替丢失的像素。

wrap

超出范围的像素会环绕指向屏幕另一侧的像素。

mirror

超出范围的像素将用镜像像素代替。

默认值为‘smear’.

32.71.1 示例

  • 为视频尺寸为 hd720 的 RGB 输入添加波纹效果:
    ffmpeg -i INPUT -f lavfi -i nullsrc=s=hd720,lutrgb=128:128:128 -f lavfi -i nullsrc=s=hd720,geq='r=128+30*sin(2*PI*X/400+T):g=128+30*sin(2*PI*X/400+T):b=128+30*sin(2*PI*X/400+T)' -lavfi '[0][1][2]displace' OUTPUT
    
  • 为视频尺寸为 hd720 的 RGB 输入添加波浪效果:
    ffmpeg -i INPUT -f lavfi -i nullsrc=hd720,geq='r=128+80*(sin(sqrt((X-W/2)*(X-W/2)+(Y-H/2)*(Y-H/2))/220*2*PI+T)):g=128+80*(sin(sqrt((X-W/2)*(X-W/2)+(Y-H/2)*(Y-H/2))/220*2*PI+T)):b=128+80*(sin(sqrt((X-W/2)*(X-W/2)+(Y-H/2)*(Y-H/2))/220*2*PI+T))' -lavfi '[1]split[x][y],[0][x][y]displace' OUTPUT
    

32.72 dnn 分类

根据边界框使用深度神经网络进行分类。

此滤镜接受以下选项:

dnn_backend

指定用于加载和执行模型的 DNN 后端。此选项目前仅支持 OpenVINO,将添加 TensorFlow 后端。

model

设置指定网络架构及其参数的模型文件路径。 注意,不同的后端使用不同的文件格式。

input

设置 dnn 网络的输入名称。

output

设置 dnn 网络的输出名称。

confidence

设置置信阈值(默认值:0.5)。

labels

设置指定标签 id 和名称之间映射关系的标签文件路径。 每个标签名称占一行,尾部空格和空行会被跳过。 第一行是标签 ID 0 的名称, 第二行是标签 ID 1 的名称,依此类推。 如果未提供标签文件,则标签 ID 将被视为名称。

backend_configs

设置要传递到后端的配置。

对于 TensorFlow 后端,您可以通过sess_config选项设置其配置, 请使用 tools/python/tf_sess_config.py 获取适合您系统的配置。

32.73 dnn 检测

使用深度神经网络进行目标检测。

此滤镜接受以下选项:

dnn_backend

指定用于加载和执行模型的 DNN 后端。此选项目前仅支持 OpenVINO,将添加 TensorFlow 后端。

model

设置指定网络架构及其参数的模型文件路径。 注意,不同的后端使用不同的文件格式。

input

设置 dnn 网络的输入名称。

output

设置 dnn 网络的输出名称。

confidence

设置置信阈值(默认值:0.5)。

labels

设置指定标签 id 和名称之间映射关系的标签文件路径。 每个标签名称占一行,尾部空格和空行会被跳过。 第一行是标签 ID 0(通常是“背景”), 第二行是标签 ID 1 的名称,依此类推。 如果未提供标签文件,则标签 ID 将被视为名称。

backend_configs

设置要传递到后端的配置。要使用异步执行,请设置 async(默认值:set)。 如果后端不支持异步执行,将回滚为同步执行。

32.74 深度神经网络处理

使用深度神经网络进行图像处理。它与另一个过滤器协同工作,将帧的像素格式转换为深度神经网络所需的格式。

该过滤器接受以下选项:

dnn_backend

指定使用哪个深度神经网络后端来加载和运行模型。本选项接受以下值:

tensorflow

TensorFlow 后端。要启用此后端,需要安装 TensorFlow for C 库(见https://www.tensorflow.org/install/lang_c)并使用以下方式配置 FFmpeg--enable-libtensorflow

openvino

OpenVINO 后端。要启用此后端,需要构建并安装 OpenVINO for C 库(见https://github.com/openvinotoolkit/openvino/blob/master/build-instruction.md),并使用以下方式配置 FFmpeg--enable-libopenvino(如果未将头文件和库安装到系统路径中,则可能需要使用 –extra-cflags=-I... –extra-ldflags=-L...)

torch

Libtorch 后端。要启用此后端,需要构建并安装 Libtorch for C++ 库。请下载 cxx11 ABI 版本(见https://pytorch.org/get-started/locally),并使用以下方式配置 FFmpeg--enable-libtorch --extra-cflags=-I/libtorch_root/libtorch/include --extra-cflags=-I/libtorch_root/libtorch/include/torch/csrc/api/include --extra-ldflags=-L/libtorch_root/libtorch/lib/

model

设置模型文件的路径以指定网络架构及其参数。请注意,不同后端使用不同的文件格式。TensorFlow、OpenVINO 和 Libtorch 后端只能加载其格式的文件。

input

设置深度神经网络的输入名称。

output

设置深度神经网络的输出名称。

backend_configs

设置要传递给后端的配置。要使用异步执行,请设置为 async(默认设置)。如果后端不支持异步,则回滚到同步执行。

对于 TensorFlow 后端,可以通过以下方式设置配置sess_config选项, 请使用 tools/python/tf_sess_config.py 获取您系统上 TensorFlow 后端的配置。

32.74.1 示例

  • 使用 can.pb 删除 rgb24 帧中的雨水(见去雨过滤器):
    ./ffmpeg -i rain.jpg -vf format=rgb24,dnn_processing=dnn_backend=tensorflow:model=can.pb:input=x:output=y derain.jpg
    
  • 对 yuv420p(支持平面 YUV 格式)的帧使用 srcnn.pb 处理 Y 通道(见超分辨率过滤器):
    ./ffmpeg -i 480p.jpg -vf format=yuv420p,scale=w=iw*2:h=ih*2,dnn_processing=dnn_backend=tensorflow:model=srcnn.pb:input=x:output=y -y srcnn.jpg
    
  • 对 yuv420p(支持平面 YUV 格式)的帧使用 espcn.pb 处理 Y 通道(见超分辨率过滤器),该操作会更改帧大小,请使用 tools/python/tf_sess_config.py 获取您系统上 TensorFlow 后端的配置。
    ./ffmpeg -i 480p.jpg -vf format=yuv420p,dnn_processing=dnn_backend=tensorflow:model=espcn.pb:input=x:output=y:backend_configs=sess_config=0x10022805320e09cdccccccccccec3f20012a01303801 -y tmp.espcn.jpg
    

32.75 绘制方框

在输入图像上绘制一个彩色方框。

它接受以下参数:

x
y

指定方框左上角坐标的表达式。默认值为 0。

width, w
height, h

指定方框的宽度和高度的表达式;如果为 0,则解释为输入宽度和高度。默认值为 0。

color, c

指定方框的颜色。有关此选项的通用语法,请查看(ffmpeg-utils)"颜色"部分中的 ffmpeg-utils 手册。如果使用特殊值invert,方框边缘颜色将与视频相同,但亮度取反。

thickness, t

设置方框边缘厚度的表达式。 值为fill将创建填充的方框。默认值是3.

请参阅下面的接受常量列表。

replace

适用于输入具有 alpha 通道的情况。如果值为1,绘制的方框像素 将覆盖视频的色彩和 alpha 像素。 默认值为0,它将方框合成到输入中,保留视频的 alpha 通道。

参数x, y, wh以及t是包含以下常量的表达式:

dar

输入显示纵横比,与 (w / h) * sar.

hsub
vsub

水平和垂直色度子采样值。例如,对于像素格式 "yuv422p"hsub是 2 而vsub是 1。

in_h, ih
in_w, iw

输入的宽度和高度。

sar

输入的像素纵横比。

x
y

绘制方框的 x 和 y 偏移坐标。

w
h

绘制方框的宽度和高度。

box_source

盒子的来源可以设置为 side_data_detection_bboxes,如果您希望使用来自边数据检测的盒子数据。

如果box_source已设置,x, y, widthheight将被忽略,并仍然使用边数据检测中的盒子数据。因此,如果您不确定盒子来源,请不要使用此参数。

t

绘制方框的厚度。

这些常量允许x, y, w, ht表达式相互引用,因此您可以例如指定y=x/darh=w/dar.

32.75.1 示例

  • 在输入图像边缘绘制一个黑色方框:
    drawbox
    
  • 绘制一个颜色为红色且透明度为 50% 的方框:
    drawbox=10:20:200:60:red@0.5
    

    上一个示例可指定为:

    drawbox=x=10:y=20:w=200:h=60:color=red@0.5
    
  • 填充方框为粉红色:
    drawbox=x=10:y=10:w=100:h=100:color=pink@0.5:t=fill
    
  • 绘制一个 2 像素厚的红色 2.40:1 遮罩:
    drawbox=x=-t:y=0.5*(ih-iw/2.4)-t:w=iw+t*2:h=iw/2.4+t*2:t=2:c=red
    

32.75.2 命令

此过滤器支持与选项相同的命令。 该命令接受与对应选项相同的语法。

如果指定的表达式无效,则保持当前值。

32.76 绘制图表

使用输入视频元数据绘制图表。

它接受以下参数:

m1

设置第一个帧元数据键,其元数据值将用于绘制图表。

fg1

设置第一个前景色表达式。

m2

设置第二个帧元数据键,其元数据值将用于绘制图表。

fg2

设置第二个前景色表达式。

m3

设置第三个帧元数据键,其元数据值将用于绘制图表。

fg3

设置第三个前景色表达式。

m4

设置第四个帧元数据键,其元数据值将用于绘制图表。

fg4

设置第四个前景色表达式。

min

设置元数据值的最小值。

max

设置元数据值的最大值。

bg

设置图表背景颜色。默认是白色。

mode

设置图表模式。

模式可用的值为:

bar
dot
line

默认值为line.

slide

设置滑动模式。

滑动模式可用的值为:

frame

右边框到达时绘制新的帧。

replace

用新的列替换旧的列。

scroll

从右向左滚动。

rscroll

从左向右滚动。

picture

绘制单一图片。

默认值为frame.

size

设置图表视频的尺寸。有关此选项的语法,请查看(ffmpeg-utils)"视频尺寸"部分中的 ffmpeg-utils 手册。 默认值为900x256.

rate, r

设置输出帧率。默认值为25.

前景色表达式可以使用以下变量:

MIN

元数据值的最小值。

MAX

元数据值的最大值。

VAL

当前元数据键的值。

颜色定义为 0xAABBGGRR。

使用来自signalstats过滤器的元数据示例:

signalstats,drawgraph=lavfi.signalstats.YAVG:min=0:max=255

使用来自ebur128过滤器的元数据示例:

ebur128=metadata=1,adrawgraph=lavfi.r128.M:min=-120:max=5

32.77 绘制网格

在输入图像上绘制一个网格。

它接受以下参数:

x
y

指定网格相交点某点的坐标的表达式(用于配置偏移量)。两者默认值为 0。

width, w
height, h

指定网格单元的宽度和高度的表达式。如果为 0,则分别解释为输入宽度和高度减去thickness,使图像 被框住。默认值为 0。

color, c

指定网格颜色。有关此选项的通用语法,请查看(ffmpeg-utils)"颜色"部分中的 ffmpeg-utils 手册。如果使用特殊值invert,网格颜色将与视频相同,但亮度取反。

thickness, t

设置网格线厚度的表达式。默认值为1.

请参阅下面的接受常量列表。

replace

适用于输入具有 alpha 通道的情况。值为1时,绘制的网格像素 将覆盖视频的色彩和 alpha 像素。 默认值为0,它将网格合成到输入中,保留视频的 alpha 通道。

参数x, y, wh以及t是包含以下常量的表达式:

dar

输入显示纵横比,与 (w / h) * sar.

hsub
vsub

水平和垂直色度子采样值。例如,对于像素格式 "yuv422p"hsub是 2 而vsub是 1。

in_h, ih
in_w, iw

输入的网格单元宽度和高度。

sar

输入的像素纵横比。

x
y

网格相交点某点的 x 和 y 坐标(用于配置偏移量)。

w
h

绘制单元的宽度和高度。

t

绘制单元的厚度。

这些常量允许x, y, w, ht表达式相互引用,因此您可以例如指定y=x/darh=w/dar.

32.77.1 示例

  • 绘制一个单元为 100x100 像素、厚度为 2 像素、颜色为红色且透明度为 50% 的网格:
    drawgrid=width=100:height=100:thickness=2:color=red@0.5
    
  • 绘制一个白色 3x3 网格,透明度为 50%:
    drawgrid=w=iw/3:h=ih/3:t=2:c=white@0.5
    

32.77.2 命令

此过滤器支持与选项相同的命令。 该命令接受与对应选项相同的语法。

如果指定的表达式无效,则保持当前值。

32.78 绘制文本

使用 libfreetype 库在视频顶部绘制文本字符串或从指定的文件中绘制文本。

要启用此过滤器的编译,需要使用以下方式配置 FFmpeg--enable-libfreetype--enable-libharfbuzz。 要启用默认字体回退以及字体选项,您需要使用以下方式配置 FFmpeg--enable-libfontconfig。 要启用文本成形选项,您需要使用以下方式配置 FFmpeg--enable-libfribidi.

32.78.1 语法

它接受以下参数:

box

使用背景颜色在文本周围绘制一个框。 该值必须为 1(启用)或 0(禁用)。的默认值为 0。

boxborderw

设置用于在文本周围绘制框的边框宽度,使用框颜色。 该值必须使用以下格式之一指定:

  • boxborderw=10设置所有边框宽度为 10
  • boxborderw=10|20设置顶部和底部边框宽度为 10 左右边框宽度为 20
  • boxborderw=10|20|30设置顶部边框宽度为 10,底部边框宽度为 30 左右边框宽度为 20
  • boxborderw=10|20|30|40设置边框宽度为 10(顶部)、20(右侧)、 30(底部)、40(左侧)

框边框宽度的默认值为 "0"。 is "0".

boxcolor

设置用于在文本周围绘制框的颜色。有关此选项的语法,请查看(ffmpeg-utils)"颜色"部分中的 ffmpeg-utils 手册.

框颜色的默认值为 "白色"。 is "white".

line_spacing

设置行间距(以像素为单位)。行间距的默认值为 0。

text_align

设置文本相对于框边界的垂直和水平对齐方式。 该值是标志的组合,一个用于垂直对齐(T=顶部,M=中间,B=底部) 一个用于水平对齐(L=左侧,C=居中,R=右侧)。 请注意,制表符字符仅在左水平对齐的情况下支持。

y_align

指定y值的参考内容。可能的值包括:

  • text第一行文本中最高字形的顶部与y
  • baseline第一行文本的基线与y
  • font第一行文本的基线与y加上字体指标中定义的上升部分(以像素为单位)一起放置

y 对齐的默认值是 "文本",以保持向后兼容性。 is "text" for backward compatibility.

borderw

设置用于在文本周围绘制框的边框宽度,使用边框颜色。 边框宽度的默认值为 0。 is 0.

bordercolor

设置用于在文本周围绘制边框的颜色。有关此选项的语法,请查看(ffmpeg-utils)"颜色"部分中的 ffmpeg-utils 手册.

边框颜色的默认值为 "黑色"。 is "black".

expansion

选择扩展文本的方式。可以是none, strftime(已弃用) 或normal(默认)。有关详细信息,请参阅文本扩展章。

basetime

设置计数开始时间。值以微秒为单位。仅在已弃用的strftime扩展模式下应用。要在正常扩展模式下模拟,请使用pts函数,并提供开始时间(以秒为单位)作为第二个参数。

fix_bounds

如果为真,检查并修复文本坐标以避免裁剪。

fontcolor

用于绘制字体的颜色。有关此选项的语法,请查看(ffmpeg-utils)"颜色"部分在ffmpeg-utils手册中的内容.

默认值为fontcolor(字体颜色)是"黑色"。

fontcolor_expr

一个字符串,与文本一样扩展以动态获取fontcolor(字体颜色)值。默认情况下,此选项为空值且不会被处理。当此选项设置时,它将覆盖fontcolor(字体颜色)选项。

font

用于绘制文本的字体系列。默认值是Sans。

fontfile

用于绘制文本的字体文件。路径必须包括在内。如果字体配置支持被禁用,此参数是必需的。

alpha

绘制文本应用 alpha 混合。值可以是 0.0 到 1.0之间的数字。表达式也接受相同的变量x, y默认值是1。 请参阅fontcolor_expr(字体颜色表达式).

fontsize

用于绘制文本的字体大小。 默认值为fontsize(字体大小)是16。

text_shaping

如果设置为1,则在绘制文本之前尝试对文本进行处理成形(例如,逆转从右到左的文本顺序并合并阿拉伯字符)。否则,仅准确地显示给出的文本。 默认值为1(如果支持)。

ft_load_flags

用于加载字体的标志。

标志映射到libfreetype支持的相应标志,并是以下值的组合:

default(默认)
no_scale(无缩放)
no_hinting(无提示)
render(渲染)
no_bitmap(不使用位图)
vertical_layout(垂直布局)
force_autohint(强制自动提示)
crop_bitmap(裁剪位图)
pedantic(拘泥于细节)
ignore_global_advance_width(忽略全局提前宽度)
no_recurse(无递归)
ignore_transform(忽略转换)
monochrome(单色)
linear_design(线性设计)
no_autohint(无自动提示)

默认值是"default"。

有关详细信息,请查阅FT_LOAD_* libfreetype标志的文档。

shadowcolor

用于绘制文本后面的阴影的颜色。有关此选项的语法,请检查(ffmpeg-utils)"颜色"部分在ffmpeg-utils手册中的内容.

默认值为shadowcolor(阴影颜色)是"黑色"。

boxw

设置绘制在文本周围的框的宽度。 默认值为boxw(框宽度)自动根据文本宽度计算。

boxh

设置绘制在文本周围的框的高度。 默认值为boxh(框高度)自动根据文本高度计算。

shadowx
shadowy

文本阴影位置相对于文本位置的x和y偏移量。它们可以是正值或负值。 默认值为"0"。

start_number

对于 n/frame_num 变量的初始帧号。默认值为"0"。

tabsize

用于渲染制表符的空格大小。 默认值为4。

timecode

设置"hh:mm:ss[:;.]ff"格式的初始时间码表示形式。它可以与或不与文本参数一起使用。timecode_rate(时间码速率)选项必须被指定。

timecode_rate, rate, r

设置时间码帧速率(仅限时间码)。值将四舍五入到最接近的整数。 最小值为"1"。 对于帧率30和60,支持掉帧时间码。

tc24hmax

如果设置为1,则时间码选项的输出将在24小时后回绕。 默认值为0(禁用)。

text

要绘制的文本字符串。文本必须是UTF-8编码字符的序列。 如果未用参数指定文件,则此参数为必填项textfile(文本文件).

textfile

包含要绘制文本的文本文件。文本必须是UTF-8编码字符的序列。

如果未通过参数指定文本字符串,则此参数为必填项文本.

如果同时指定了文本文本文件将引发错误。

text_source

如果希望在检测侧数据的边界框中使用文本数据,应将文本源设置为side_data_detection_bboxes。

如果设置为文本源,文本文本文件将被忽略,并仍然使用检测侧数据边界框中的文本数据。因此,如果不确定文本源,请不要使用此参数。

reload

文本文件将在指定帧间隔重新加载。 请确保原子更新 will be reloaded at specified frame interval. Be sure to update 文本文件否则可能会部分读取,甚至失败。 范围是0到INT_MAX。默认值是0。

x
y

指定文本将在视频帧内绘制的偏移的表达式。 它们相对于输出图像的顶/左边框。

默认值为xy是"0"。

请参阅下面列出可接受的常量和函数。

对于xy的参数是包含以下常量和函数的表达式:

dar

输入显示宽高比,等于(宽度 / 高度) * sar(样本宽高比)

hsub
vsub

水平和垂直色度子采样值。例如,对于像素格式"yuv422p"hsub是2,vsub是1。

line_h, lh

每行文本的高度

main_h, h, H

输入高度

main_w, w, W

输入宽度

max_glyph_a, ascent

从基线到最高/上网格坐标的最大距离,用于放置所有渲染字符轮廓点。 它是正值,因为网格的方向Y轴向上。

max_glyph_d, descent

从基线到最低网格坐标的最大距离,用于放置所有渲染字符轮廓点。 这是负值,因为网格的方向是Y轴向上。

max_glyph_h

最大字形高度,即渲染文本中所有字形的最大高度,相当于升高 - 降低.

max_glyph_w

最大字形宽度,即渲染文本中所有字形的最大宽度。

font_a

在字体度量中定义的上升尺寸

font_d

在字体度量中定义的下降尺寸

top_a

第一行文本字形的最大上升

bottom_d

最后一行文本字形的最大下降

n

输入帧数,从0开始

rand(min, max)

返回一个最小值最大值

sar

输入样本宽高比。

t

时间戳以秒表示,如果输入时间戳未知则为NAN

text_h, th

渲染文本的高度

text_w, tw

渲染文本的宽度

x
y

绘制文本时的x和y偏移坐标。

这些参数允许xy表达式相互关联,因此您可以例如指定y=x/dar.

pict_type

当前帧图片类型的一字符描述。

pkt_pos

当前包在输入文件或流中的位置 (从输入开始的字节)。值为-1表示此信息不可用。

duration

当前包的持续时间,以秒为单位。

pkt_size

当前包的大小(以字节为单位)。

32.78.2 文本扩展

如果expansion设置为strftime,过滤器在提供的文本中识别strftimeC函数接受的序列并据此扩展。请查看strftime的文档。normal此功能已被推荐使用gmtimelocaltime扩展函数替代。

如果expansion设置为none,则会原样打印文本。

如果expansion设置为normal(默认值),则使用以下扩展机制。

反斜杠字符"\",后跟任何字符,总是扩展到第二个字符。

形式上的序列%{...}将被扩展。括号之间的文本是一个函数名称,可能后跟用‘:’分隔的参数列表。 如果参数中包含特殊字符或分隔符(‘:’或‘}’),则它们需要被转义。

请注意,这些字符可能还需要作为text选项在过滤器参数字符串中的值转义,以及作为过滤器图描述中的过滤器参数转义,可能还需要为shell转义,总计最多需要四级转义;使用textfile选项的文本文件可以避免这些问题。

以下功能可用:

expr, e

表达式评估结果。

它必须采用一个指定要评估的表达式的参数,接受与xy值相同的常量和函数。请注意,并非所有常量都应使用,例如,在评估表达式时,文本大小未知,因此常量文本宽度文本高度将具有未定义值。

expr_int_format, eif

评估表达式的值并作为格式化整数输出。

第一个参数是要评估的表达式,与expr函数一样。x’, ‘X’, ‘d第二个参数指定输出格式。允许的值包括‘u’和‘printf’。它们与

gmtime

过滤器运行时的时间,以UTC表示。 它可以接受一个参数:一个strftimeC函数格式字符串。 格式字符串扩展支持变量%[1-6]N打印秒的分数部分,可选择指定数字位数。

localtime

过滤器运行时的时间,以当地时区表示。 它可以接受一个参数:一个strftimeC函数格式字符串。 格式字符串扩展支持变量%[1-6]N打印秒的分数部分,可选择指定数字位数。

metadata

帧元数据。有两个参数。

第一个参数是强制性的,指定元数据键。

第二个参数是可选的,当找不到或元数据键为空时,使用默认值。

可用元数据可以通过检查每帧部分中的TAG条目识别,运行后打印ffprobe -show_frames.

过滤器之前生成的字符串元数据也可用。

n, frame_num

帧号,从0开始。

pict_type

当前图片类型的一字符描述。

pts

当前帧的时间戳。 它最多可以接受三个参数。

第一个参数是时间戳的格式;默认值为flt以秒为单位的小数数字,精确到微秒;hms表示格式化的[-]HH:MM:SS.mmm时间戳,精确到毫秒。gmtime表示UTC时间格式化的帧时间戳;localtime表示以本地时区时间格式化的帧时间戳。

第二个参数是要加到时间戳的偏移量。

如果格式设置为hms,第三个参数24HH可以 用于以24小时格式(00-23)显示格式化时间戳的小时部分。

如果格式设置为localtimegmtime,可以提供第三个参数:一个strftimeC函数格式字符串。 默认情况下,YYYY-MM-DD HH:MM:SS格式将被使用。

32.78.3 命令

此过滤器支持通过命令更改参数:

reinit

更改现有过滤参数。

参数的语法与过滤器调用的语法相同,例如。

fontsize=56:fontcolor=green:text='Hello World'

带有 sendcmd 的完整过滤器调用如下:

sendcmd=c='56.0 drawtext reinit fontsize=56\:fontcolor=green\:text=Hello\\ World'

如果整个参数无法解析或应用为有效值,则过滤器将继续使用其现有参数。

以下选项也支持作为命令:

  • x
  • y
  • alpha
  • fontsize(字体大小)
  • fontcolor(字体颜色)
  • boxcolor(框颜色)
  • bordercolor(边框颜色)
  • shadowcolor(阴影颜色)
  • box
  • boxw(框宽度)
  • boxh(框高度)
  • boxborderw(框边框宽度)
  • line_spacing(行间距)
  • text_align(文本对齐)
  • shadowx(阴影x位置)
  • shadowy(阴影y位置)
  • borderw

32.78.4 示例

  • 使用FreeSerif字体绘制"测试文本",采用可选参数的默认值。
    drawtext="fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text'"
    
  • 使用FreeSerif字体大小为24在位置x=100和y=50上绘制"测试文本"(从屏幕左上角开始计数),文本颜色为黄色,并带有一个红色框。文本和框均具有20%的不透明度。
    drawtext="fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text':\
              x=100: y=50: fontsize=24: fontcolor=yellow@0.2: box=1: boxcolor=red@0.2"
    

    请注意,如果参数列表中不使用空格,则不需要使用双引号。

  • 在视频帧的中心显示文本:
    drawtext="fontsize=30:fontfile=FreeSerif.ttf:text='hello world':x=(w-text_w)/2:y=(h-text_h)/2"
    
  • 在随机位置显示文本,每30秒切换到新位置:
    drawtext="fontsize=30:fontfile=FreeSerif.ttf:text='hello world':x=if(eq(mod(t\,30)\,0)\,rand(0\,(w-text_w))\,x):y=if(eq(mod(t\,30)\,0)\,rand(0\,(h-text_h))\,y)"
    
  • 在视频帧的最后一行显示一行从右向左滑动的文本。文件LONG_LINE被认为只包含单行且没有换行符。
    drawtext="fontsize=15:fontfile=FreeSerif.ttf:text=LONG_LINE:y=h-line_h:x=-50*t"
    
  • 显示文件的内容CREDITS从帧底部滚动并向上移动。
    drawtext="fontsize=20:fontfile=FreeSerif.ttf:textfile=CREDITS:y=h-20*t"
    
  • 在输入视频的中心绘制一个绿色字母"g"。字形的基线位于屏幕高度的一半。
    drawtext="fontsize=60:fontfile=FreeSerif.ttf:fontcolor=green:text=g:x=(w-max_glyph_w)/2:y=h/2-ascent"
    
  • 每3秒显示1秒的文本:
    drawtext="fontfile=FreeSerif.ttf:fontcolor=white:x=100:y=x/dar:enable=lt(mod(t\,3)\,1):text='blink'"
    
  • 使用fontconfig设置字体。注意需要为冒号加上转义。
    drawtext='fontfile=Linux Libertine O-40\\:style=Semibold:text=FFmpeg'
    
  • 根据视频高度绘制字体大小可变的"测试文本"。
    drawtext="text='Test Text': fontsize=h/30: x=(w-text_w)/2: y=(h-text_h*2)"
    
  • 打印实时编码的日期(请参阅strftimeC函数)的文档:
    drawtext='fontfile=FreeSans.ttf:text=%{localtime\:%a %b %d %Y}'
    
  • 显示淡入淡出的文本(出现/消失):
    #!/bin/sh
    DS=1.0 # display start
    DE=10.0 # display end
    FID=1.5 # fade in duration
    FOD=5 # fade out duration
    ffplay -f lavfi "color,drawtext=text=TEST:fontsize=50:fontfile=FreeSerif.ttf:fontcolor_expr=ff0000%{eif\\\\: clip(255*(1*between(t\\, $DS + $FID\\, $DE - $FOD) + ((t - $DS)/$FID)*between(t\\, $DS\\, $DS + $FID) + (-(t - $DE)/$FOD)*between(t\\, $DE - $FOD\\, $DE) )\\, 0\\, 255) \\\\: x\\\\: 2 }"
    
  • 水平对齐多个单独的文本。注意max_glyph_afontsize值包含在y偏移中。
    drawtext=fontfile=FreeSans.ttf:text=DOG:fontsize=24:x=10:y=20+24-max_glyph_a,
    drawtext=fontfile=FreeSans.ttf:text=cow:fontsize=24:x=80:y=20+24-max_glyph_a
    
  • 绘制特殊lavf.image2dec.source_basename元数据到每一帧(如果此类元数据存在)。否则,绘制字符串"NA"。注意,image2解复用器必须启用选项-export_path_metadata 1以使滤镜可用特殊元数据字段。
    drawtext="fontsize=20:fontcolor=white:fontfile=FreeSans.ttf:text='%{metadata\:lavf.image2dec.source_basename\:NA}':x=10:y=10"
    

关于libfreetype的更多信息,请访问:http://www.freetype.org/.

关于fontconfig的更多信息,请访问:http://freedesktop.org/software/fontconfig/fontconfig-user.html.

关于libfribidi的更多信息,请访问:http://fribidi.org/.

关于libharfbuzz的更多信息,请访问:https://github.com/harfbuzz/harfbuzz.

32.79 边缘检测

检测并绘制边界。该滤镜使用Canny边缘检测算法。

该滤镜接受以下选项:

low
high

设置Canny阈值算法使用的低阈值和高阈值。

高阈值选择"强"边缘像素,然后通过8连接性连接由低阈值选择的"弱"边缘像素。

阈值必须在范围[0,1]内,并且应小于或等于.

低的默认值是low is 20/255,高的默认值是high is 50/255.

mode

定义绘制模式。

wires

在黑色背景上绘制白色/灰色线条。

colormix

混合颜色以创建油画/卡通效果。

canny

对所有选定的平面应用Canny边缘检测器。

默认值是wires.

planes

选择要过滤的平面。默认情况下,过滤所有可用平面。

32.79.1 示例

  • 具有自定义滞后阈值的标准边缘检测:
    edgedetect=low=0.1:high=0.4
    
  • 无阈值的绘画效果:
    edgedetect=mode=colormix:high=0
    

32.80 elbg

使用ELBG(增强型LBG)算法应用色彩分层效果。

对于每个输入图像,滤镜将根据码书长度(即输出的独特颜色数)计算输入到输出的最佳映射。

滤镜接受以下选项。

codebook_length, l

设置码书长度。值必须是正整数,表示独特输出颜色的数量。默认值为256。

nb_steps, n

设置最大迭代次数以计算最佳映射。值越高,结果越好,计算时间也越长。默认值为1。

seed, s

设置随机种子,必须是在0和UINT32_MAX之间的整数。如果未指定或者显式设置为-1,滤镜将尽可能使用优秀的随机种子。

pal8

设置pal8输出像素格式。此选项不适用于码书长度大于256的情况。默认禁用。

use_alpha

在量化计算中包含alpha值。允许创建带有多种alpha平滑混合的调色板输出图像(例如PNG8)。

32.81 熵

测量视频帧颜色通道直方图的灰度熵。

它接受以下参数:

mode

可以为正常差分。默认是正常.

差分模式测量直方图差值的熵,即相邻直方图值的绝对差。

32.82 epx

应用专为像素艺术设计的EPX放大滤镜。

它接受以下选项:

n

设置缩放维度:2对于2xEPX, 3对于3xEPX。 默认是3.

32.83 eq

设置亮度、对比度、饱和度和近似伽玛调整。

滤镜接受以下选项:

contrast

设置对比度表达式。该值必须为范围-1000.01000.0内的浮点值。默认值为"1"。

brightness

设置亮度表达式。该值必须在范围-1.01.0内的浮点值。默认值为"0"。

saturation

设置饱和度表达式。该值必须在范围0.03.0内的浮点值。默认值为"1"。

gamma

设置伽玛表达式。该值必须在范围0.110.0内的浮点值。默认值为"1"。

gamma_r

设置红色伽玛表达式。值必须在范围0.110.0内的浮点值。默认值为"1"。

gamma_g

设置绿色伽玛表达式。值必须在范围0.110.0内的浮点值。默认值为"1"。

gamma_b

设置蓝色伽玛表达式。值必须在范围0.110.0内的浮点值。默认值为"1"。

gamma_weight

设置伽玛权重表达式。可以用于减少高伽玛值对图像亮区的影响,例如防止它们被过度放大成纯白。该值必须为范围0.01.0内的浮点值。值为0.0时完全关闭伽玛校正,而1.0时保持其完全强度。默认为"1"。

eval

设置何时评估亮度、对比度、饱和度和伽玛表达式。

它接受以下值:

init

仅在滤镜初始化或处理命令时评估表达式一次

frame

为每个输入帧评估表达式

默认值是‘init’.

表达式接受以下参数:

n

从0开始的输入帧的帧计数

pos

输入文件中对应数据包的字节位置,如果未指定则为NAN;已弃用,请勿使用

r

输入视频的帧率,如果帧率未知则为NAN

t

以秒为单位的时间戳,如果输入时间戳未知则为NAN

32.83.1 命令

滤镜支持以下命令:

contrast

设置对比度表达式。

brightness

设置亮度表达式。

saturation

设置饱和度表达式。

gamma

设置伽玛表达式。

gamma_r

设置gamma_r表达式。

gamma_g

设置gamma_g表达式。

gamma_b

设置gamma_b表达式。

gamma_weight

设置gamma_weight表达式。

命令接受与对应选项相同的语法。

如果指定的表达式无效,则保留当前值。

32.84 腐蚀

对视频应用腐蚀效果。

该滤镜用局部(3x3)最小值替换像素。

它接受以下选项:

threshold0
threshold1
threshold2
threshold3

为每个平面限制最大变化默认值为65535。如果为0,则平面保持不变。

coordinates

设定参考像素的标志。默认值为255,即使用所有8个像素。

将标志对应到局部3x3坐标,如下所示:

1 2 3 4 5 6 7 8

32.84.1 命令

此滤镜支持以上所有选项作为命令.

32.85 estdif

对输入视频进行去隔行("estdif"代表"边缘斜率跟踪去隔行滤镜")。

仅限于空间的滤镜,使用边缘斜率跟踪算法插值丢失的行。 它接受以下参数:

mode

要采用的隔行模式。接受以下值之一:

frame

每帧输出一帧。

field

每场输出一帧。

默认值是field.

parity

为输入隔行视频假定的场奇偶性。接受以下值之一:

tff

假设上场优先。

bff

假设下场优先。

auto

启用场奇偶性自动检测。

默认值是auto。 如果隔行状态未知或解码器未导出此信息,则假定为上场优先。

deint

指定要去隔行的帧。接受以下值之一:

all

对所有帧去隔行。

interlaced

仅对标记为隔行的帧去隔行。

默认值是all.

rslope

指定用于边缘斜率跟踪的搜索半径。默认值为1。 允许范围为1到15。

redge

指定用于最佳边缘匹配的搜索半径。默认值为2。 允许范围为0到15。

ecost

指定用于边缘匹配的边缘成本。默认值为2。 允许范围为0到50。

mcost

指定用于边缘匹配的中间成本。默认值为1。 允许范围为0到50。

dcost

指定用于边缘匹配的距离成本。默认值为1。 允许范围为0到50。

interp

指定使用的插值。默认是4点插值。接受以下值之一:

2p

两点插值。

4p

四点插值。

6p

六点插值。

32.85.1 命令

此滤镜支持与选项相同的命令。 as options.

32.86 曝光

调整视频流的曝光。

滤镜接受以下选项:

exposure

设置曝光校正值(单位为EV)。允许范围为-3.0到3.0 EV。 默认值为0 EV。

black

设置黑电平校正。允许范围为-1.0到1.0。 默认值为0。

32.86.1 命令

此滤镜支持与选项相同的命令。 as options.

32.87 提取平面

将输入视频流的颜色通道组件提取为单独的灰度视频流。

滤镜接受以下选项:

planes

设置要提取的平面。

平面可用值有:

y
u
v
a
r
g
b

选择输入中不可用的平面将会导致错误。 这意味着不能同时选择r, g, b planes with y, u, v平面。

32.87.1 示例

  • 提取输入视频帧中的亮度、u和v颜色通道组件为三个灰度输出:
    ffmpeg -i video.avi -filter_complex 'extractplanes=y+u+v[y][u][v]' -map '[y]' y.avi -map '[u]' u.avi -map '[v]' v.avi
    

32.88 渐变

对输入视频应用渐入/渐出效果。

它接受以下参数:

type, t

效果类型可以为"in"(渐入)或"out"(渐出)。 默认是in.

start_frame, s

指定开始应用渐变效果的帧编号。默认是0。

nb_frames, n

渐变效果持续的帧数。在渐入效果结束时,输出视频的明暗度将与输入视频相同。 在渐出过渡结束时,输出视频将填充为选定的color。 默认是25。

alpha

如果设置为1,则仅对alpha通道渐变(如果输入中存在alpha通道)。 默认值为0。

start_time, st

指定开始应用渐变效果的帧的时间戳(单位为秒)。如果同时指定了start_frame和start_time,则渐变将从两者中较晚的时间开始。 默认是0。

duration, d

渐变效果需要持续的秒数。在渐入效果结束时,输出视频的明暗度将与输入视频相同, 在渐出过渡结束时,输出视频将填充为选定的color。 如果同时指定了duration和nb_frames,则以duration为准。默认是0(默认使用nb_frames)。

color, c

指定渐变的颜色。默认是"黑色"。

32.88.1 示例

  • 为视频的前30帧应用渐入效果:
    fade=in:0:30
    

    上述命令等价于:

    fade=t=in:s=0:n=30
    
  • 为一个200帧的视频的最后45帧应用渐出效果:
    fade=out:155:45
    fade=type=out:start_frame=155:nb_frames=45
    
  • 在一个1000帧的视频中,前25帧淡入,最后25帧淡出:
    fade=in:0:25, fade=out:975:25
    
  • 使前5帧变成黄色,然后在第5到24帧之间渐显:
    fade=in:5:20:color=yellow
    
  • 在视频的前25帧中渐显透明度:
    fade=in:0:25:alpha=1
    
  • 使前5.5秒变成黑色,然后在接下来的0.5秒内渐显:
    fade=t=in:st=5.5:d=0.5
    

32.89反馈

应用反馈视频滤镜。

此滤镜将裁剪的输入帧传递到第二个输出。从那里可以通过其他视频滤镜进行处理。在滤镜从第二个输入接收到帧后,该帧与来自第一个输入的原始帧组合并传递到第一个输出。

典型用途是仅过滤帧的一部分。

滤镜接受以下选项:

x
y

设置裁剪区域的左上角位置。

w
h

设置裁剪大小。

32.89.1 示例

  • 使用gblur滤镜仅模糊视频帧左上角大小为100x100的矩形部分。
    [in][blurin]feedback=x=0:y=0:w=100:h=100[out][blurout];[blurout]gblur=8[blurin]
    
  • 使用drawbox滤镜在视频帧的左上角大小为100x100的部分绘制黑框。
    [in][blurin]feedback=x=0:y=0:w=100:h=100[out][blurout];[blurout]drawbox=x=0:y=0:w=100:h=100:t=100[blurin]
    
  • 使用pixelize滤镜对视频帧大小为100x100的矩形部分进行像素化处理。
    [in][blurin]feedback=x=320:y=240:w=100:h=100[out][blurout];[blurout]pixelize[blurin]
    

32.90 fftdnoiz

使用3D FFT(频域过滤)去噪帧。

滤镜接受以下选项:

sigma

设置噪声的sigma常量。这决定了降噪强度。默认值为1。允许范围是0到30。使用非常高的sigma结合低重叠可能会产生块状伪影。

amount

设置降噪量。默认情况下所有检测到的噪声都会被减少。默认值为1,允许范围是0到1。

block

设置块大小,以像素为单位。默认值为32,可以是8到256。

overlap

设置块的重叠量。默认值为0.5,允许范围是0.2到0.8。

method

设置降噪方法。默认值为wiener,也可以是hard.

prev

设置用于降噪的前帧数量。默认情况下设为0。

next

设置用于降噪的后帧数量。默认情况下设为0。

planes

设置将被过滤的平面,默认情况下滤除了alpha以外的所有可用平面。

32.91 fftfilt

在频域对样本应用任意表达式

dc_Y

调整图像亮度平面的直流值(增益)。滤镜接受范围内的整数值01000。默认值设为0.

dc_U

调整图像第一个色度平面的直流值(增益)。滤镜接受范围内的整数值01000。默认值设为0.

dc_V

调整图像第二个色度平面的直流值(增益)。滤镜接受范围内的整数值01000。默认值设为0.

weight_Y

设置亮度平面的频域权重表达式。

weight_U

设置第一个色度平面的频域权重表达式。

weight_V

设置第二个色度平面的频域权重表达式。

eval

设置表达式的评估时间。

接受以下值:

init

仅在滤镜初始化期间评估表达式一次。

frame

为每个传入帧评估表达式。

默认值为‘init’.

滤镜接受以下变量:

X
Y

当前样本的坐标。

W
H

图像的宽度和高度。

N

输入帧的数量,从0开始。

WS
HS

用于水平和垂直处理的FFT数组大小。

32.91.1 示例

  • 高通滤波:
    fftfilt=dc_Y=128:weight_Y='squish(1-(Y+X)/100)'
    
  • 低通滤波:
    fftfilt=dc_Y=0:weight_Y='squish((Y+X)/100-1)'
    
  • 锐化:
    fftfilt=dc_Y=0:weight_Y='1+squish(1-(Y+X)/100)'
    
  • 模糊:
    fftfilt=dc_Y=0:weight_Y='exp(-4 * ((Y+X)/(W+H)))'
    

32.92 field

使用步幅算法从隔行视频中提取单个字段以避免浪费CPU时间。输出帧标记为非隔行。

滤镜接受以下选项:

type

指定是否提取顶部字段(如果值为0top)或底部字段(如果值为1bottom).

32.93 fieldhint

通过从提示文件提供的周围帧中的顶部和底部字段复制来创建新帧。

hint

设置包含提示的文件:绝对/相对帧数。

剪辑中的每一帧必须有一行。每行必须包含两个用逗号分隔的数字,后面可选-+。文件中每一行提供的数字不能超出[N-1,N+1]范围,其中N是当前帧数针对absolute模式或超出[-1, 1]范围针对relative模式。第一个数字表示从哪一帧获取顶部字段,第二个数字表示从哪一帧获取底部字段。

如果后面可选+输出帧将标记为隔行,否则如果后面是-输出帧将被标记为渐进,否则将标记为与输入帧相同。如果后面可选t输出帧将仅使用顶部字段,或者在b情况下将仅使用底部字段。如果行以#;开头,则该行将被跳过。

mode

可以是项目absoluterelativepattern。默认值为absolutepattern模式与relative模式相同,除非文件的最后一个条目如果还有更多帧要处理那么hint文件将被重新定位到开始处。

针对hint模式的relative文件的前几行示例:

0,0 - # first frame
1,0 - # second frame, use third's frame top field and second's frame bottom field
1,0 - # third frame, use fourth's frame top field and third's frame bottom field
1,0 -
0,0 -
0,0 -
1,0 -
1,0 -
1,0 -
0,0 -
0,0 -
1,0 -
1,0 -
1,0 -
0,0 -

32.94 fieldmatch

用于逆插帧的字段匹配滤镜。它旨在从插帧流中重构渐进帧。滤镜不会删除重复帧,因此完成逆插帧fieldmatch需要后接过滤器链中的去重滤镜,例如decimate

字段匹配和去重的分离尤其是出于在两者之间插入去隔行滤镜的可能性。如果源具有插帧和真正隔行内容的混合,fieldmatch将无法匹配隔行部分的字段。但这些remaining combed frames 将被标记为隔行,因此可以由后续滤镜如yadif在去重前进行去隔行处理。

除了各种配置选项之外fieldmatch可以通过ppsrc选项激活可选的第二个流。如果启用,帧重建将基于来自第二个流的字段和帧。这允许第一个输入被预处理,以帮助滤镜的各种算法,同时保持输出无损(假设字段正确匹配)。通常情况下,基于字段的去噪器或亮度/对比度调整可以提供帮助。

请注意,此滤镜使用了与TIVTC/TFM(AviSynth项目)以及VIVTC/VFM(VapourSynth项目)相同的算法。后者是TFM的一个轻量克隆,基于此fieldmatch在构建。虽然语义和使用方式非常接近,但某些行为和选项名称可能会有所不同。

目前decimate滤镜只能用于恒定帧率输入。如果您的输入具有混合插帧(30fps)和具有较低帧率如24fps的渐进内容,请使用以下滤镜链生成必要的恒定帧率流:dejudder,fps=30000/1001,fieldmatch,decimate.

滤镜接受以下选项:

order

指定输入流的假定字段顺序。可用值为:

auto

自动检测奇偶性(使用FFmpeg的内部奇偶值)。

bff

假定底部字段优先。

tff

假定顶部字段优先。

请注意,有时建议不要信任流声明的奇偶性值。

默认值为auto.

mode

设置用于使用的匹配模式或策略。pc模式是最安全的一种模式,因为它避免了由于重复帧而可能导致的卡顿风险,但如果存在错误编辑或混合字段,它会产生combed frames,尽管可能存在一个匹配帧。而pcn_ub模式是最有风险的,可能会导致卡顿,但几乎总能找到一个好的帧匹配。其他值在pcpcn_ub之间,权衡了卡顿风险、产生重复帧与在有糟糕编辑、混合字段等情况下找到匹配帧的可能性。

有关p/c/n/u/b的更多详细信息请参阅p/c/n/u/b含义部分。

可用值为:

pc

2向匹配(p/c)

pc_n

2向匹配,如果仍然combed则尝试第3个匹配(p/c + n)

pc_u

2向匹配,如果仍然combed则尝试第3个匹配(相同顺序)(p/c + u)

pc_n_ub

2向匹配,如果仍然combed则尝试第3个匹配,以及第4/5个匹配(p/c + n + u/b)

pcn

3向匹配(p/c/n)

pcn_ub

3向匹配,如果所检测的所有3个原匹配均为combed的则尝试第4/5个匹配(p/c/n + u/b)

括号中表示对应于该模式的用于匹配的项(假设order=tfffield设置于autotop).

就速度而言pc模式速度远远最快而pcn_ub是最慢的。

默认值为pc_n.

ppsrc

将主输入流标记为预处理输入,并启用次要输入流以从中选择字段。有关更多细节请参阅过滤器介绍。这类似于clip2功能来自VFM/TFM。

默认值为0(禁用)。

field

设置用于匹配的字段。建议将其设置为与order一致,除非您遇到与该设置相关的匹配失败。在某些情况下,改变用于匹配的字段对匹配性能有重大影响。可选值为:

auto

自动(与order).

bottom

从底部字段匹配。

top

从顶部字段匹配。

默认值为auto.

mchroma

设置是否在匹配比较中包含彩色。在大多数情况下建议保持启用状态。仅在您的剪辑存在明显的彩色问题如严重的彩条或其他伪影时设置为0。设置为0也可用于加快处理速度但可能减少一些准确性。

默认值为1.

y0
y1

这些定义一个排除带,该排除带将忽略y0y1之间的行以进行字段匹配决策。此排除带可用于忽略字幕、徽标或可能干扰匹配的其他图像内容。y0定义起始扫描行,y1定义结束行;在y0y1之间的所有行(包括y0y1)都将被忽略。将y0y1设置为相同值将禁用该功能。y0y1的默认值为0.

scthresh

设置场景变化检测阈值作为亮度平面上最大变化的百分比。良好的值范围为[8.0, 14.0]。场景变化检测仅在combmatch=sc时相关。scthresh的范围为[0.0, 100.0].

默认值为12.0.

combmatch

combatch不为none, fieldmatch

none

不基于combed分数进行最终匹配。

sc

仅在检测到场景变化时使用combed分数。

full

在任何情况下均使用combed分数。

默认值为sc.

combdbg

强制fieldmatch计算某些匹配的combed指标并打印它们。此设置在TFM/VFM术语中称为micout。可用值为:

none

不强制计算。

pcn

强制进行p/c/n计算。

pcnub

强制进行p/c/n/u/b计算。

默认值为none.

cthresh

这是用于combed帧检测的区域梳理阈值。本质上该值控制了梳理的“强度”或“可见性”必须到达什么程度才能被检测到。较大的值意味着梳理必须更明显,而较小的值表示即使梳理不明显或强烈仍然可以被检测到。有效范围为-1(每个像素都会被检测为梳理)到255(不会有像素被检测为梳理)。这是一个基本像素差异值。一个好的范围为[8, 12].

默认值为9.

chroma

设置在梳状帧判定中是否考虑色度。只有当您的来源存在色度问题(如彩虹效应等)并且启用色度检测导致问题时才禁用此功能。实际上,使用chroma=0通常更可靠,除了来源中存在仅色度梳状的情况。

默认值为0.

blockx
blocky

分别设置梳状帧检测期间窗口的x轴和y轴大小。这与combpel像素数量有关,需要在区域内检测到这些像素才能将帧声明为梳状帧。请参阅combpel参数说明以获取更多信息。 可能的值为从4开始的以2为幂的任意数字,一直到512。

默认值为16.

combpel

帧上的任何blockyxblockx大小的块内被检测为梳状的像素数量以决定该帧是否为梳状帧。而cthresh控制梳状的“可见度”,此设置控制在帧的任何局部区域(由blockxblocky设置定义的窗口)中必须存在“多少”梳状。最小值为0,最大值为blocky x blockx(在此情况下,永远不会检测到任何梳状帧)。此设置在TFM/VFM术语中被称为MI

默认值为80.

32.94.1 p/c/n/u/b 含义

32.94.1.1 p/c/n

假设以下带有梳状的流:

Top fields:     1 2 2 3 4
Bottom fields:  1 2 3 4 4

数字对应于字段关联的渐进帧。这里,前两帧是渐进的,第3和第4帧是梳状的,依此类推。

fieldmatch被配置为从底部运行匹配(field=底部)时,这个输入流会被转化为:

Input stream:
                T     1 2 2 3 4
                B     1 2 3 4 4   <-- matching reference

Matches:              c c n n c

Output stream:
                T     1 2 3 4 4
                B     1 2 3 4 4

由于字段匹配的结果,我们可以看到某些帧被重复。 要完成完整的逆转(inverse telecine),您需要在此操作后依赖于去重滤镜。例如参阅去重滤镜。

现在从顶端字段匹配的同样操作(field=顶部)看起来如下:

Input stream:
                T     1 2 2 3 4   <-- matching reference
                B     1 2 3 4 4

Matches:              c c p p c

Output stream:
                T     1 2 2 3 4
                B     1 2 2 3 4

在这些示例中,我们可以看到p, cn的含义; 基本上,它们指的是具有相反奇偶校验的帧和字段:

  • p与前一帧中具有相反奇偶校验的字段匹配
  • c与当前帧中具有相反奇偶校验的字段匹配
  • n与下一帧中具有相反奇偶校验的字段匹配

32.94.1.2 u/b

匹配ub有点特殊,因为它们从相反的奇偶校验标志进行匹配。在以下例子中,我们假设目前正在匹配第2帧(顶部:2,底部:2)。根据匹配,‘x’会被放置在每个匹配字段的上下方。

底部匹配(field=底部):

Match:           c         p           n          b          u

                 x       x               x        x          x
  Top          1 2 2     1 2 2       1 2 2      1 2 2      1 2 2
  Bottom       1 2 3     1 2 3       1 2 3      1 2 3      1 2 3
                 x         x           x        x              x

Output frames:
                 2          1          2          2          2
                 2          2          2          1          3

顶部匹配(field=顶部):

Match:           c         p           n          b          u

                 x         x           x        x              x
  Top          1 2 2     1 2 2       1 2 2      1 2 2      1 2 2
  Bottom       1 2 3     1 2 3       1 2 3      1 2 3      1 2 3
                 x       x               x        x          x

Output frames:
                 2          2          2          1          2
                 2          1          3          2          2

32.94.2 示例

对顶部优先的场影像流进行简单逆转(IVTC):

fieldmatch=order=tff:combmatch=none, decimate

高级逆转处理,带有保留yadif用于仍然梳状的帧:

fieldmatch=order=tff:combmatch=full, yadif=deint=interlaced, decimate

32.95 fieldorder

变更输入视频的字段顺序。

接受以下参数:

order

输出字段顺序。有效值为tff表示顶部字段优先或bff表示底部字段优先。

默认值是‘tff’.

字段顺序的变换是通过将画面内容向上或向下移动一行完成的,并使用适当的画面内容填充剩下的行。 此方法与大多数广播字段顺序转换器一致。

如果输入视频未标记为隔行扫描,或者已标记为所需的输出字段顺序,则此滤镜不会更改传入的视频。

非常适合用于转换至或从PAL DV素材 (该素材为底部字段优先)。

例如:

ffmpeg -i in.vob -vf "fieldorder=bff" out.dv

32.96 fillborders

填充输入视频的边框,而不更改视频流的尺寸。 有时视频的四边会出现无用数据,而您可能不希望裁剪视频输入,以保持大小是某些数字的倍数。

此滤镜接受以下选项:

left

从左边框填充的像素数。

right

从右边框填充的像素数。

top

从顶部边框填充的像素数。

bottom

从底部边框填充的像素数。

mode

设置填充模式。

接受以下值:

smear

使用最外侧的像素填充

mirror

使用对称镜像(半样本)填充

fixed

用常量值填充像素

reflect

使用反射(全样本对称)填充像素

wrap

使用环绕填充像素

fade

使像素渐变到常量值

margins

使用接近边框的像素的加权平均值填充顶部和底部像素

默认值是涂抹.

color

在固定或渐变模式下为像素设置颜色。默认是黑色.

32.96.1 命令

此滤镜支持与选项相同的命令。 命令接受与对应选项相同的语法。

如果指定的表达式无效,则它会保持当前值。

32.97 find_rect

在输入视频中查找矩形对象。

要搜索的对象必须以灰度8图像的形式指定并通过object选项指定。

为每个可能的匹配计算一个分数。如果分数达到指定的阈值,则认为找到了对象。

如果输入视频包含对象的多个实例,则滤镜仅会找到其中一个。

当发现一个对象时,在匹配帧中会设置以下元数据条目:

lavfi.rect.w

对象的宽度

lavfi.rect.h

对象的高度

lavfi.rect.x

对象的x位置

lavfi.rect.y

对象的y位置

lavfi.rect.score

找到对象的匹配分数

接受以下选项:

object

对象图像的文件路径,需要为灰度8。

threshold

检测阈值,以0-1范围的小数表示。

阈值为0.01表示仅精确匹配,阈值为0.99表示几乎所有都匹配。

默认值为0.5。

mipmaps

指定的mipmap数量,默认是3。

xmin, ymin, xmax, ymax

指定搜索的矩形区域。

discard

丢弃未检测到对象的帧。默认是禁用的。

32.97.1 示例

  • 通过提供的图像覆盖给定视频中的矩形对象ffmpeg:
    ffmpeg -i file.ts -vf find_rect=newref.pgm,cover_rect=cover.jpg:mode=cover new.mkv
    
  • 使用ffprobe查找每帧中对象的位置并记录到日志文件:
    ffprobe -f lavfi movie=test.mp4,find_rect=object=object.pgm:threshold=0.3 \
      -show_entries frame=pkt_pts_time:frame_tags=lavfi.rect.x,lavfi.rect.y \
      -of csv -o find_rect.csv
    

32.98 floodfill

用另一种值填充与一个像素分量相同的区域。

接受以下选项:

x

设置像素x坐标。

y

设置像素y坐标。

s0

设置源#0分量值。

s1

设置源#1分量值。

s2

设置源#2分量值。

s3

设置源#3分量值。

d0

设置目标#0分量值。

d1

设置目标#1分量值。

d2

设置目标#2分量值。

d3

设置目标#3分量值。

32.99 format

将输入视频转换为指定的一种像素格式。 Libavfilter将尝试选择一种适合作为下一个滤镜输入的格式。

接受以下参数:

pix_fmts

由’|’分隔的像素格式名称列表,如“pix_fmts=yuv420p|monow|rgb24”。

color_spaces

由’|’分隔的色彩空间名称列表,如“color_spaces=bt709|bt470bg|bt2020nc”。

color_ranges

由’|’分隔的色彩范围名称列表,如“color_spaces=tv|pc”。

32.99.1 示例

  • 将输入视频转换为yuv420p格式
    format=pix_fmts=yuv420p
    

    将输入视频转换为列表中的任一格式

    format=pix_fmts=yuv420p|yuv444p|yuv410p
    

32.100 fps

通过必要时重复或删除帧将视频转换为指定的恒定帧速率。

接受以下参数:

fps

所需的输出帧速率。它接受包含以下常量的表达式:

source_fps

输入的帧速率

ntsc

NTSC帧速率为30000/1001

pal

PAL帧速率为25.0

film

电影帧速率为24.0

ntsc_film

NTSC电影帧速率为24000/1001

默认值是25.

start_time

假设第一个PTS应该是给定的值(以秒为单位)。这允许在流的开始处进行填充/修剪。 默认情况下,不对第一帧的预期时间戳进行任何假设,因此不会进行填充或修剪。 例如,可以将此值设置为0以填充流的开头,将其与第一个帧的副本匹配,或者修剪任何具有负PTS的帧。

round

时间戳(PTS)舍入方法。

可能的值有:

zero

向零舍入

inf

远离零舍入

down

向无穷负舍入

up

向无穷正舍入

near

舍入到最近

默认值是near.

eof_action

读取最后一帧时执行的操作。

可能的值有:

round

使用与其他帧相同的时间戳舍入方法。

pass

如果输入持续时间尚未达到,则通过最后一帧。

默认值是round.

或者,可以将选项指定为简单的字符串格式:fps[:开始时间[:舍入]].

参见setpts滤镜。

32.100.1 示例

  • 一种典型的用法,将帧速率设置为25:
    fps=fps=25
    
  • 将帧速率设置为24,使用省略号并舍入方式为向最近舍入:
    fps=fps=film:round=near
    

32.101 framepack

将两个不同的视频流打包为立体视频,并在支持的编解码器上设置适当的元数据。 两个视图应具有相同的大小和帧速率,并且处理将在较短视频结束时停止。 请注意,您可以方便地使用scalefps滤镜调整视图属性。

接受以下参数:

format

所需的打包格式。支持的值为:

sbs

视图彼此相邻(默认值)。

tab

视图堆叠在一起。

lines

视图按行打包。

columns

视图按列打包。

frameseq

视图按时间交错。

一些示例:

# Convert left and right views into a frame-sequential video
ffmpeg -i LEFT -i RIGHT -filter_complex framepack=frameseq OUTPUT

# Convert views into a side-by-side video with the same output resolution as the input
ffmpeg -i LEFT -i RIGHT -filter_complex [0:v]scale=w=iw/2[left],[1:v]scale=w=iw/2[right],[left][right]framepack=sbs OUTPUT

32.102 framerate

通过从源帧插值新的视频输出帧来改变帧速率。

此滤镜设计不适用于隔行媒体。如果您希望更改隔行媒体的帧速率,则需要在此滤镜之前进行去隔行处理,并在此滤镜之后重新隔行处理。

接受选项的描述如下。

fps

指定输出帧每秒数。 此选项还可以指定为单独的数值。 默认值为50.

interp_start

指定一个范围的开始部分,输出帧将在线性插值的两帧之间创建。 范围为[0-255],默认为15.

interp_end

指定一个范围的结束部分,输出帧将在线性插值的两帧之间创建。 范围为[0-255],默认为240.

scene

指定检测场景更改的级别,值在0到100之间;值越低表示当前帧引入新场景的可能性越低,值越高表示当前帧更可能是一个新场景。 默认值为8.2.

flags

指定影响滤镜过程的标志。

可用的标志为:

scene_change_detect, scd

使用选项场景的值启用场景变化检测。 此标志默认启用。

32.103 framestep

选择每第N帧的一帧。

此滤镜接受以下选项:

step

选择每step帧之后的帧。 允许的值为大于0的正整数。 默认值为1.

32.104 freezedetect

检测冻结视频。

当检测到输入视频的内容在指定持续时间内没有显著变化时, 此滤镜记录一条消息并设置帧元数据。 视频冻结检测计算所有视频帧分量的平均绝对差值并与噪声底值进行比较。

打印的时间和持续时间以秒为单位。lavfi.freezedetect.freeze_start元数据键设置在第一个时间戳等于或超过检测持续时间的帧,它包含了冻结的第一个帧的时间戳。lavfi.freezedetect.freeze_durationlavfi.freezedetect.freeze_end元数据键设置在冻结后的第一个帧上。

过滤器接受以下选项:

noise, n

设置噪声容忍度。可以指定为dB(如果指定值后面附加了“dB”)或者作为0到1之间的差异比率。默认值是-60dB或0.001。

duration, d

设置冻结通知的持续时间(默认是2秒)。

32.105 冻结帧

冻结视频帧。

此过滤器使用第二个输入的帧来冻结视频帧。

过滤器接受以下选项:

first

设置开始冻结的第一帧号。

last

设置结束冻结的最后帧号。

replace

设置用于替换帧的第二个输入的帧号。

32.106 frei0r

对输入视频应用frei0r效果。

要启用此过滤器的编译,您需要安装frei0r头文件并使用以下命令配置FFmpeg:--enable-frei0r.

它接受以下参数:

filter_name

要加载的frei0r效果的名称。如果环境变量FREI0R_PATH已定义,则frei0r效果将在FREI0R_PATH中指定的目录列表中进行搜索(用冒号分隔)。 否则,将按以下顺序搜索标准frei0r路径:HOME/.frei0r-1/lib/, /usr/local/lib/frei0r-1/, /usr/lib/frei0r-1/.

filter_params

一个以‘|’分隔的参数列表,用于传递给frei0r效果。

frei0r效果参数可以是布尔值(其值要么为“y”要么为“n”)、双精度数、颜色(指定为R/G/B,其中R, GB是0.0到1.0之间(含)的浮点数)或指定的颜色描述如ffmpeg-utils手册的“颜色”部分, 位置(指定为X/Y,其中XY是浮点数)和/或一个字符串。

参数的数量和类型取决于加载的效果。如果未指定效果参数,将设置默认值。

32.106.1 示例

  • 应用distort0r效果,并设置前两个双精度参数:
    frei0r=filter_name=distort0r:filter_params=0.5|0.01
    
  • 应用colordistance效果,将颜色作为第一个参数:
    frei0r=colordistance:0.2/0.3/0.4
    frei0r=colordistance:violet
    frei0r=colordistance:0x112233
    
  • 应用perspective效果,指定图像的左上和右上位置:
    frei0r=perspective:0.2/0.2|0.8/0.2
    

欲了解更多信息,请参阅http://frei0r.dyne.org

32.106.2 命令

此过滤器支持filter_params选项作为命令.

32.107 fspp

应用快速简单的后处理。这是spp.

的更快版本。它将(I)DCT分为水平/垂直通道处理。与简单后处理滤镜不同,其中一个通道每次每块进行一次处理,而不是每像素处理。这允许更高的速度。

过滤器接受以下选项:

quality

设置质量。此选项定义平均的级别数量。它接受范围为4-5的整数。默认值是4.

qp

强制使用恒定的量化参数。它接受范围为0-63的整数。如果未设置,过滤器将使用视频流中的QP(如果可用)。

strength

设置滤镜强度。它接受范围为-15到32的整数。较低的值意味着更多细节但也更多伪影,而较高的值使图像更平滑但更模糊。默认值是0− PSNR最佳。

use_bframe_qp

如果设置为1启用从B帧中使用的QP。使用此选项可能会导致闪烁,因为B帧通常具有较大的QP。默认是0(未启用)。

32.108 fsync

与文件的外部映射同步视频帧。

对于地图文件中给定的每个输入PTS,它要么丢弃,要么创建必要数量的帧,以重新创建地图文件中给定的输出帧序列。

此过滤器有助于通过fps过滤器进行帧速率转换,记录到地图文件中使用ffmpeg选项-stats_mux_pre,并对相应帧进行进一步处理,例如质量比较。

地图文件每行必须包含三个项目,每个输入帧的输入PTS(十进制)、输出PTS(十进制)和输出时间基(十进制/十进制),用空格分隔。此文件格式对应于-stats_mux_pre_fmt="{ptsi} {pts} {tb}".

的输出。

过滤器假定地图文件按输入PTS升序排序。

file, f

要使用的地图文件的文件名。

示例:

# Convert a video to 25 fps and record a MAP_FILE file with the default format of this filter
ffmpeg -i INPUT -vf fps=fps=25 -stats_mux_pre MAP_FILE -stats_mux_pre_fmt "{ptsi} {pts} {tb}" OUTPUT

# Sort MAP_FILE by increasing input PTS
sort -n MAP_FILE

# Use INPUT, OUTPUT and the MAP_FILE from above to compare the corresponding frames in INPUT and OUTPUT via SSIM
ffmpeg -i INPUT -i OUTPUT -filter_complex '[0:v]fsync=file=MAP_FILE[ref];[1:v][ref]ssim' -f null -

32.109 gblur

应用高斯模糊滤镜。

过滤器接受以下选项:

sigma

设置水平标准差(sigma),高斯模糊的标准差。默认值是0.5.

steps

设置高斯逼近的步骤数。默认值是1.

planes

设置要过滤的平面。默认情况下所有平面都被过滤。

sigmaV

设置垂直标准差(sigma),如果为负值,将与sigmaz相同。 默认值是-1.

32.109.1 命令

此过滤器支持与选项相同的命令。 命令接受与相应选项相同的语法。

如果指定的表达式无效,则保持其当前值。

32.110 geq

对每个像素应用通用方程。

过滤器接受以下选项:

lum_expr, lum

设置亮度表达式。

cb_expr, cb

设置蓝色色度表达式。

cr_expr, cr

设置红色色度表达式。

alpha_expr, a

设置透明度表达式。

red_expr, r

设置红色表达式。

green_expr, g

设置绿色表达式。

blue_expr, b

设置蓝色表达式。

根据指定的选项选择色彩空间。如果指定了lum_expr, cb_expr, 或者cr_expr选项,则过滤器将自动选择YCbCr色彩空间。如果指定了red_expr, green_expr, 或者blue_expr选项,则过滤器将选择RGB颜色空间。

如果未定义其中一个色度表达式,它将回退到另一个表达式。如果未指定透明度表达式,它将评估为不透明值。如果未指定任何色度表达式,它们将评估为亮度表达式。

表达式可以使用以下变量和函数:

N

过滤帧的顺序号,从0.

X
Y

当前样本的坐标。

W
H

图像的宽度和高度。

SW
SH

根据滤镜的当前平面缩放的宽度和高度。它是与当前平面像素数对应的亮度平面像素数之间的比例。例如,对于YUV4:2:0,这些值为1,1对于亮度平面,和0.5,0.5对于色度平面。

T

当前帧的时间,以秒表示。

p(x, y)

返回当前平面位置(x,y)像素的值。

lum(x, y)

返回亮度平面位置(x,y)像素的值。

cb(x, y)

返回蓝色差色度平面位置(x,y)像素的值。如果没有这样的平面,则返回0。

cr(x, y)

返回红色差色度平面位置(x,y)像素的值。如果没有这样的平面,则返回0。

r(x, y)
g(x, y)
b(x, y)

返回红色/绿色/蓝色组件位置(x,y)像素的值。如果没有这样的组件,则返回0。

alpha(x, y)

返回透明度平面位置(x,y)像素的值。如果没有这样的平面,则返回0。

psum(x,y), lumsum(x, y), cbsum(x,y), crsum(x,y), rsum(x,y), gsum(x,y), bsum(x,y), alphasum(x,y)

从(0,0)到(x,y)矩形范围内的样本值总和,这使得可以获得矩形范围内样本的总和。请参阅未带sum后缀的函数。

interpolation

设置一种插值方法:

nearest, n
bilinear, b

默认是双线性。

对于函数,如果xy超出区域范围,值将自动调整到最近的边缘。

请注意,此过滤器可以使用多线程,在这种情况下,每个切片将有自己的表达式状态。如果表达式取决于之前状态并希望使用单个表达式状态,则应将过滤器线程数量限制为1。

32.110.1 示例

  • 水平翻转图像:
    geq=p(W-X\,Y)
    
  • 生成二维正弦波,波角为PI/3,波长为100像素:
    geq=128 + 100*sin(2*(PI/100)*(cos(PI/3)*(X-50*T) + sin(PI/3)*Y)):128:128
    
  • 生成一个奇特而神秘的移动光:
    nullsrc=s=256x256,geq=random(1)/hypot(X-cos(N*0.07)*W/2-W/2\,Y-sin(N*0.09)*H/2-H/2)^2*1000000*sin(N*0.02):128:128
    
  • 快速生成浮雕效果:
    format=gray,geq=lum_expr='(p(X,Y)+(256-p(X-4,Y-4)))/2'
    
  • 根据像素位置修改RGB组件:
    geq=r='X/W*r(X,Y)':g='(1-X/W)*g(X,Y)':b='(H-Y)/H*b(X,Y)'
    
  • 创建与输入大小相同的径向渐变(另见vignette滤镜):
    geq=lum=255*gauss((X/W-0.5)*3)*gauss((Y/H-0.5)*3)/gauss(0)/gauss(0),format=gray
    

32.111 gradfun

修复通过截断到8位颜色深度有时会引入到接近平坦区域的条纹伪影。 插入应该位于条纹处的渐变,并对这些部分进行抖动处理。

它仅设计用于播放。不要在有损压缩之前使用它,因为压缩往往会丢失抖动并恢复条纹。

它接受以下参数:

strength

滤镜可以改变任何像素的最大值。这也是检测接近平坦区域的阈值。可接受值范围是.51到64;默认值是1.2。超出范围的值将被剪裁到有效范围。

radius

用于拟合渐变的邻域。较大的半径可以创建更平滑的渐变,但也会防止滤镜修改邻近详细区域的像素。可接受值范围是8到32;默认值是16。超出范围的值将被剪裁到有效范围。

或者,可以以平面字符串指定选项:强度[:半径]

32.111.1 示例

  • 应用滤镜,设置3.5强度和半径为8:
    gradfun=3.5:8
    
  • 指定半径,忽略强度(将回退到默认值):
    gradfun=radius=8
    

32.112 graphmonitor

显示各种过滤图表统计数据。

借助此过滤器可以调试完整的过滤图。 尤其是在链接填充队列帧时的问题。

过滤器接受以下选项:

size, s

设置视频输出大小。默认是hd720.

opacity, o

设置视频不透明度。默认是0.9允许范围是从01.

mode, m

设置输出模式标志。

标志的可选值为:

full

没有任何过滤。默认值。

compact

仅显示带有队列帧的过滤器。

nozero

仅显示具有非零统计数据的过滤器。

noeof

仅显示具有非EOF状态的过滤器。

nodisabled

仅显示时间轴中启用的过滤器。

flags, f

设置用于启用视频中显示哪些统计数据的标志。

标志的可选值为:

none

关闭所有标志。

all

打开所有标志。

queue

显示每个链接队列帧的数量。

frame_count_in

显示从过滤器中提取的帧数量。

frame_count_out

显示由过滤器输出的帧数量。

frame_count_delta

显示上述两个值之间的帧增量数量。

pts

显示当前过滤的帧的PTS。

pts_delta

显示当前帧与上一帧之间的PTS差值。

time

显示当前过滤的帧时间。

time_delta

显示当前帧与上一帧之间的时间差。

timebase

显示过滤器链接的时间基。

format

显示过滤器链接使用的格式。

size

在使用音频过滤器链接时显示视频大小或音频通道数。

rate

在使用音频过滤器链接时显示视频帧速率或采样率。

eof

显示链接输出状态。

sample_count_in

显示从过滤器中提取的样本数量。

sample_count_out

显示由过滤器输出的样本数量。

sample_count_delta

显示上述两个值之间的样本增量数量。

disabled

显示时间线过滤器状态。

rate, r

设置输出流视频速率的上限值。默认值是25。 这可确保输出视频帧速率不会高于此值。

32.113 grayworld

一种基于灰世界假设的颜色常量滤镜,用于颜色校正。

参见:https://www.researchgate.net/publication/275213614_A_New_Color_Correction_Method_for_Underwater_Imaging

该算法使用线性光,因此输入数据应提前线性化(并可能正确标记)。

ffmpeg -i INPUT -vf zscale=transfer=linear,grayworld,zscale=transfer=bt709,format=yuv420p OUTPUT

32.114 灰边缘

一种颜色恒定变化滤波器,它通过灰边缘算法估算场景照明并相应地校正场景颜色。

请参见:https://staff.science.uva.nl/th.gevers/pub/GeversTIP07.pdf

该滤镜接受以下选项:

difford

在场景上应用的微分级数。必须选择范围[0,2],默认值为1。

minknorm

用于计算明可夫斯基距离的明可夫斯基参数。必须选择范围[0,20],默认值为1。设置为0以获取最大值而不是计算明可夫斯基距离。

sigma

在场景上应用的高斯模糊的标准差。必须选择范围[0,1024.0],默认值=1。floor(sigma* break_off_sigma(3) )不能等于0,如果difford大于0。

32.114.1 示例

  • 灰边缘:
    greyedge=difford=1:minknorm=5:sigma=2
    
  • 最大边缘:
    greyedge=difford=1:minknorm=0:sigma=2
    

32.115 引导

应用引导滤波器进行边缘保留平滑、去雾等操作。

该滤镜接受以下选项:

radius

设置盒子半径(以像素为单位)。允许范围为1到20。默认值为3。

eps

设置正则化参数(平方方式)。允许范围为0到1。默认值为0.01。

mode

设置滤波器模式。可以是basicfast。默认是basic.

sub

设置采样比例用于fast模式。范围为2到64。默认值为4。在basic模式下不发生子采样。

guidance

设置引导模式。可以是offon。默认是off。如果off,需要单一输入。 如果on,需要两个具有相同分辨率和像素格式的输入。第二个输入作为引导。

planes

设置要滤波的平面。默认值是仅第一个。

32.115.1 命令

该滤镜支持以上选项作为命令.

32.115.2 示例

  • 使用引导滤波器进行边缘保留平滑:
    ffmpeg -i in.png -vf guided out.png
    
  • 使用引导滤波器进行去雾、结构转换滤波、细节增强。关于生成引导图像,请参阅论文《引导图像过滤》。详见:http://kaiminghe.com/publications/pami12guidedfilter.pdf.
    ffmpeg -i in.png -i guidance.png -filter_complex guided=guidance=on out.png
    

32.116 Hald CLUT

将 Hald CLUT 应用于视频流。

第一个输入是要处理的视频流,第二个输入是 Hald CLUT。Hald CLUT 输入可以是简单的图片或完整的视频流。

该滤镜接受以下选项:

clut

设置将处理第二输入流中的哪帧 CLUT 视频,可以是firstall。默认值是all.

shortest

强制最短输入结束时终止。默认值为0.

repeatlast

继续在流结束后应用最后的 CLUT。值为0在到达 CLUT 的最后一帧后禁用滤镜。默认值为1.

haldclut还具有与lut3d相同的插值选项(两个滤镜共享相同的内部逻辑)。

该滤镜还支持framesync选项。

更多关于 Hald CLUT 的信息可以在 Eskil Steenberg 的网站上找到(Hald CLUT 作者):http://www.quelsolaar.com/technology/clut.html.

32.116.1 命令

该滤镜支持interp选项作为命令.

32.116.2 工作流程示例

32.116.2.1 Hald CLUT 视频流

生成一个通过各种效果修改的身份 Hald CLUT 流:

ffmpeg -f lavfi -i haldclutsrc=8 -vf "hue=H=2*PI*t:s=sin(2*PI*t)+1, curves=cross_process" -t 10 -c:v ffv1 clut.nut

注意:确保您使用无损编解码器。

然后使用haldclut将其应用于随机流:

ffmpeg -f lavfi -i mandelbrot -i clut.nut -filter_complex '[0][1] haldclut' -t 20 mandelclut.mkv

Hald CLUT 将应用于前10秒(clut.nut的持续时间),之后 CLUT 流的最后一个图片将应用于mandelbrot流的剩余帧。

32.116.2.2 带预览的 Hald CLUT

Hald CLUT 应为Level*Level*LevelLevel*Level*Level像素的正方形图片。对于给定的 Hald CLUT,FFmpeg 将选择从图片左上角开始的最大可能正方形区域。剩余的填充像素(底部或右侧)将被忽略。此区域可以用于添加 Hald CLUT 的预览。

通常,以下生成的 Hald CLUT 将受到haldclut滤镜支持:

ffmpeg -f lavfi -i haldclutsrc=8 -vf "
   pad=iw+320 [padded_clut];
   smptebars=s=320x256, split [a][b];
   [padded_clut][a] overlay=W-320:h, curves=color_negative [main];
   [main][b] overlay=W-320" -frames:v 1 clut.png

它包含原始效果预览的 Hald CLUT:SMPTE 彩色条显示在右上角,下面是颜色变更处理后的相同彩色条。

然后,可以通过以下方式可视化此 Hald CLUT 的效果:

ffplay input.mkv -vf "movie=clut.png, [in] haldclut"

32.117 hflip

水平翻转输入视频。

例如,使用以下命令水平翻转输入视频:ffmpeg:

ffmpeg -i in.avi -vf "hflip" out.avi

32.118 histeq

此滤镜对每帧应用全局颜色直方图均衡化。

它可以用于校正像素强度范围压缩的视频。滤镜重新分配像素强度以均衡其在强度范围内的分布。可以将其视为“自动调节对比度滤镜”。此滤镜仅适用于校正质量较低或捕捉较差的源视频。

滤镜接受以下选项:

strength

确定要应用的均衡化量。随着强度减弱,像素强度的分布越来越接近输入帧。取值须在范围 [0,1] 内且默认值为 0.200。

intensity

设置最大生成强度并适当缩放输出值。应根据需要设置强度,然后如果需要避免过度曝光,可以有限制地设置强度。取值须在范围 [0,1] 内且默认值为 0.210。

antibanding

设置防条纹级别。如果启用,滤镜将随机略微变动输出像素的亮度,以避免直方图的条纹。可能的值为none, weakstrong。默认值为none.

32.119 histogram

计算并绘制输入视频的颜色分布直方图。

计算的直方图是图像中颜色分量分布的表示。

标准直方图显示了图像中颜色分量的分布。显示每个颜色分量的颜色图。显示了 Y、U、V、A 或 R、G、B 分量(取决于输入格式)在当前帧中的分布。在每个图表下面显示颜色分量刻度计。

该滤镜接受以下选项:

level_height

设置水平高度。默认值为200。 允许范围为 [50, 2048]。

scale_height

设置颜色刻度的高度。默认值为12。 允许范围为 [0, 40]。

display_mode

设置显示模式。 可接受以下值:

stack

每个颜色分量图表排列在彼此下面。

parade

每个颜色分量图表排列在彼此旁边。

overlay

呈现与parade模式相同的信息,除了代表颜色分量的图表直接叠加在彼此上。

默认值为stack.

levels_mode

设置模式。可以是linearlogarithmic。 默认值为linear.

components

设置显示的颜色分量。 默认值为7.

fgopacity

设置前景透明度。默认值为0.7.

bgopacity

设置背景透明度。默认值为0.5.

colors_mode

设置颜色模式。 接受以下值:

whiteonblack
blackonwhite
whiteongray
blackongray
coloronblack
coloronwhite
colorongray
blackoncolor
whiteoncolor
grayoncolor

默认值为whiteonblack.

32.119.1 示例

  • 计算并绘制直方图:
    ffplay -i input -vf histogram
    

32.120 hqdn3d

这是一个高精度/高质量的3D去噪滤镜。其目的是减少图像噪声,生成平滑图像并使静态图像真正静止。应该提高压缩性。

它接受以下可选参数:

luma_spatial

规格化亮度强度的一个非负浮点数。默认值为4.0。

chroma_spatial

规格化色度强度的一个非负浮点数。默认值为3.0倍于亮度空间强度。/4.0.

luma_tmp

规格化亮度时间强度的一个浮点数。默认值为6.0倍于亮度空间强度。/4.0.

chroma_tmp

规格化色度时间强度的一个浮点数。默认值为亮度时间强度乘以*色度空间强度乘以/亮度空间强度。.

32.120.1 命令

此滤镜支持与选项相同的命令。该命令接受对应选项的相同语法。

如果指定的表达式无效,则保持其当前值。

32.121 hwdownload

下载硬件帧到系统内存。

输入必须是硬件帧,输出则为非硬件格式。并非所有格式都支持输出 - 可能需要在图中紧随其后插入一个额外的format滤镜以使输出为受支持格式。

32.122 hwmap

将硬件帧映射到系统内存或其他设备。

该滤镜有几种不同的操作模式;使用哪一种取决于输入和输出格式:

  • 硬件帧输入,正常帧输出

    将输入帧映射到系统内存并传递给输出。如果稍后需要原始硬件帧(例如,在其上叠加其他内容之后),可以再次使用hwmap滤镜以另一个模式检索。

  • 正常帧输入,硬件帧输出

    如果输入实际上是软件映射了硬件帧,则解除映射 - 即返回原始硬件帧。

    否则,必须提供设备。在该设备上为输出创建新的硬件表面,然后将其映射回输入的格式并将这些帧提供给前一个滤镜。然后其行为将类似于hwupload滤镜,但可能在输入已经是兼容格式的情况下避免额外的拷贝。

  • 硬件帧输入和输出

    输出必须直接或使用derive_device选项提供设备。输入和输出设备必须是不同类型且兼容 - 这在具体意义上依赖于系统,但通常意味着它们必须指向同一底层硬件上下文(例如,同一图形卡)。

    如果输入帧最初是在输出设备上创建,则解除映射以检索原始帧。

    否则,将帧映射到输出设备 - 在输出端创建新的硬件帧以对应于输入端的帧。

接受以下附加参数:

mode

设置帧映射模式。某些组合包括:

读取

映射帧应可读取。

写入

映射帧应可写。

覆盖

映射将始终覆盖整个帧。

这在某些情况下可能改善性能,因为不需要加载帧的原始内容。

直接

映射不能涉及任何拷贝。

在某些情况下创建间接映射以复制帧不是直接映射可能或可能具有意外属性时发生。设置此标志确保映射是直接的,如果不可能,则失败。

如果未指定,则默认为读取+写入。 if not specified.

derive_device 类型

不是使用初始化时提供的设备,而是从输入帧所在设备派生新设备类型类型

reverse

在硬件到硬件映射中,以反向方式映射 - 在sink中创建帧并将其映射回source。这在某些情况下是必要的,其中需要一个方向的映射,但设备只支持相对方向。

此选项很危险 - 如果之前的滤镜输出有任何额外限制,可能会以未定义方式破坏之前滤镜。不完全理解使用影响时请勿使用此选项。

32.123 硬件上传

将系统内存帧上传到硬件表面。

初始化时必须提供要上传到的设备。如果使用 ffmpeg,请通过以下选项选择合适的设备-filter_hw_device选项或通过derive_device选项。输入和输出设备必须是不同类型并兼容 - 具体含义依赖于系统,但通常意味着它们必须引用相同的底层硬件环境(例如,引用相同的显卡)。

接受以下附加参数:

derive_device 类型

而不是使用初始化时提供的设备,而是从输入帧存在的设备派生一个新的类型类型的设备。

32.124 硬件上传到 CUDA

将系统内存帧上传到 CUDA 设备。

接受以下可选参数:

device

要使用的 CUDA 设备编号

32.125 HQX

应用专为像素艺术设计的高质量放大滤镜。此滤镜最初由 Maxim Stepin 创建。

接受以下选项:

n

设置缩放维度:2用于hq2x, 3用于hq3x4用于hq4x。 默认为3.

32.126 水平堆叠

水平堆叠输入视频。

所有流的像素格式和高度必须相同。

请注意,此滤镜比使用叠加填充滤镜创建相同输出更快。

滤镜接受以下选项:

inputs

设置输入流的数量。默认为 2。

shortest

如果设置为 1,则当最短输入终止时强制输出终止。默认值为 0。

32.127 HSV 范围保持

将特定的 HSV 范围转换为灰度值。

此滤镜根据选项中设置的 HSV 颜色与视频流中测量的颜色之间的色差进行测量。根据选项,可以将输出颜色变为灰色或不变。

滤镜接受以下选项:

hue

设置将用于色差计算的色调值。 允许的范围是 -360 到 360。默认值为 0。

sat

设置将用于色差计算的饱和度值。 允许范围是 -1 到 1。默认值为 0。

val

设置将用于色差计算的值。 允许范围是 -1 到 1。默认值为 0。

similarity

设置与关键颜色的相似百分比。 允许范围是 0 到 1。默认值为 0.01。

0.00001 仅匹配确切的关键颜色,而 1.0 匹配所有颜色。

blend

混合百分比。 允许范围是 0 到 1。默认值为 0。

0.0 将像素完全变为灰色或完全不变。

更高的值会导致更多的灰色像素,且颜色越接近关键颜色的像素越灰色。

32.128 HSV 关键透明

将特定的 HSV 范围转换为透明色。

此滤镜根据选项中设置的 HSV 颜色与视频流中测量的颜色之间的色差进行测量。根据选项,可以通过添加 alpha 通道将输出颜色变为透明。

滤镜接受以下选项:

hue

设置将用于色差计算的色调值。 允许的范围是 -360 到 360。默认值为 0。

sat

设置将用于色差计算的饱和度值。 允许范围是 -1 到 1。默认值为 0。

val

设置将用于色差计算的值。 允许范围是 -1 到 1。默认值为 0。

similarity

设置与关键颜色的相似百分比。 允许范围是 0 到 1。默认值为 0.01。

0.00001 仅匹配确切的关键颜色,而 1.0 匹配所有颜色。

blend

混合百分比。 允许范围是 0 到 1。默认值为 0。

0.0 使像素变得完全透明或完全不透明。

更高的值会导致半透明像素,颜色越接近关键颜色,透明度越高。

32.129 色调

修改输入的色调和/或饱和度。

接受以下参数:

h

以度为单位指定色调角度。接受一个表达式,默认为 "0"。

s

在 [-10,10] 范围内指定饱和度。接受一个表达式默认为 "1"。

H

以弧度为单位指定色调角度。接受一个表达式,默认为 "0"。

b

在 [-10,10] 范围内指定亮度。接受一个表达式,默认为 "0"。

hH是互斥的,不能同时指定。

选项值是包含以下常量的表达式:b, h, H and s option values are expressions containing the following constants:

n

从 0 开始的输入帧计数

pts

以时间基单位表示的输入帧的展示时间戳

r

输入视频的帧率,如果未知输入帧率为 NAN

t

以秒为单位表示的时间戳,如果未知时间戳为 NAN

tb

输入视频的时间基

32.129.1 示例

  • 将色调设置为 90 度,饱和度设置为 1.0:
    hue=h=90:s=1
    
  • 使用弧度表示色调的相同命令:
    hue=H=PI/2:s=1
    
  • 旋转色调并使饱和度在 1 秒内在 0 和 2 之间摆动:
    hue="H=2*PI*t: s=sin(2*PI*t)+1"
    
  • 从 0 开始应用 3 秒的饱和度渐入效果:
    hue="s=min(t/3\,1)"
    

    渐入效果的一般表达式可以写成:

    hue="s=min(0\, max((t-START)/DURATION\, 1))"
    
  • 从第 5 秒开始应用 3 秒的饱和度渐出效果:
    hue="s=max(0\, min(1\, (8-t)/3))"
    

    渐出效果的一般表达式可以写成:

    hue="s=max(0\, min(1\, (START+DURATION-t)/DURATION))"
    

32.129.2 命令

支持以下命令:

b
s
h
H

修改输入视频的色调和/或饱和度和/或亮度。 命令接受与对应选项相同的语法。

如果指定的表达式无效,则保持其当前值。

32.130 色调和饱和度

对输入视频流应用色调-饱和度-强度调整。

此滤镜在 RGB 色彩空间中操作。

滤镜接受以下选项:

hue

设置要应用的色调偏移(以度为单位)。默认为 0。 允许范围是 -180 到 180。

saturation

设置饱和度偏移。默认为 0。 允许范围是 -1 到 1。

intensity

设置强度偏移。默认为 0。 允许范围是 -1 到 1。

colors

设置要调整的主要和互补颜色。 通过提供一个或多个值来设置选项。 可以一次选择多种颜色。默认选择所有颜色。

r

调整红色。

y

调整黄色。

g

调整绿色。

c

调整青色。

b

调整蓝色。

m

调整洋红色。

a

调整所有颜色。

strength

设置过滤强度。允许范围是 0 到 100。 默认值为 1。

rw, gw, bw

为每个 RGB 分量设置权重。允许范围是 0 到 1。 默认设置为 0.333,0.334,0.333。 这些选项用于饱和度和亮度处理。

lightness

设置保持亮度,默认为禁用。 调整色调可能会更改原始 RGB 三元组的亮度, 启用此选项亮度保持不变。

32.131 滞后

通过连接组件将第一个流扩展到第二个流。 这使得构建更稳定的边缘蒙版成为可能。

滤镜接受以下选项:

planes

设置将被处理为位图的平面,未处理的平面将 从第一个流复制。 默认值为 0xf,所有平面都会被处理。

threshold

设置过滤中使用的阈值。如果像素组件值高于 该值,则激活用于连接组件的过滤算法。 默认值为 0。

滤镜还支持hysteresisframesyncframesync选项。

32.132 ICC 检测

从嵌入的 ICC 配置文件(如果存在)中检测颜色空间,并更新帧的标签。

滤镜接受以下选项:

force

如果为 true,帧的现有颜色空间标签将始终被 ICC 配置文件中检测到的值覆盖。否则,只有当它们包含unknown时才会被分配。默认启用。

32.133 ICC 生成

生成 ICC 配置文件并将其附加到帧。

滤镜接受以下选项:

color_primaries
color_trc

配置将为其生成 ICC 配置文件的颜色空间。 默认值auto从输入帧的元数据中推断值, 默认值为 BT.709/sRGB。

参见setparams滤镜以获得可能值的列表,但请注意,unknown不是此滤镜的有效值。

force

如果为 true,即使会覆盖现有的 ICC 配置文件, 也会生成一个新的 ICC 配置文件。默认禁用。

32.134 身份

获得两个输入视频之间的身份分数。

此滤镜接受两个输入视频。

两个输入视频必须具有相同的分辨率和像素格式, 以确保此滤镜能够正确工作。 还假定两个输入具有相同数量的帧,逐帧进行比较。

获得的每个组件的平均值、最小值和最大值身份分数通过日志系统输出。

滤镜将每帧计算得到的身份分数存储在帧元数据中。

此滤镜也支持framesync选项。

在下面的示例中,输入文件main.mpg被处理并与参考文件ref.mpg.

ffmpeg -i main.mpg -i ref.mpg -lavfi identity -f null -

进行比较。

检测视频交织类型。

此滤镜试图检测输入帧是交织的、渐进的、顶部或底部字段优先。 它还会尝试检测在相邻帧之间重复的字段(电影转视频的信号)。

单帧检测仅考虑相邻帧来分类每一帧。 多帧检测结合了先前帧的分类历史。

滤镜将记录以下元数据值:

single.current_frame

使用单帧检测检测到的当前帧类型之一: “tff”(顶部字段优先)、“bff”(底部字段优先)、 “progressive”(渐进)、或“undetermined”(未确定)

single.tff

使用单帧检测检测到的顶部字段优先帧的累计数。

multiple.tff

使用多帧检测检测到的顶部字段优先帧的累计数。

single.bff

使用单帧检测检测到的底部字段优先帧的累计数。

multiple.current_frame

使用多帧检测检测到的当前帧类型之一: “tff”(顶部字段优先)、“bff”(底部字段优先)、 “progressive”(渐进)、或“undetermined”(未确定)

multiple.bff

使用多帧检测检测到的底部字段优先帧的累计数。

single.progressive

使用单帧检测检测到的渐进帧的累计数。

multiple.progressive

使用多帧检测检测到的渐进帧的累计数。

single.undetermined

使用单帧检测无法分类的帧的累计数。

multiple.undetermined

使用多帧检测无法分类的帧的累计数。

repeated.current_frame

当前帧中从上一帧重复的字段之一:“neither”(无)、“top”(顶部)、或“bottom”(底部)。

repeated.neither

无重复字段帧的累计数。

repeated.top

从前一帧顶部字段重复顶部字段帧的累计数。

repeated.bottom

从前一帧底部字段重复底部字段帧的累计数。

滤镜接受以下选项:

intl_thres

设置交错门限。

prog_thres

设置渐进门限。

rep_thres

重复场检测的门限。

half_life

设置在多少帧后当前帧对统计数据的贡献减半(即它的分类贡献减少为0.5)。默认值为0,表示所有已查看的帧始终完全权重为1.0。

analyze_interlaced_flag

当值不为0时,idet将使用指定数量的帧来判断交错标志是否准确,不计入未确定帧。如果标志被判定为准确,则将在没有任何进一步计算的情况下使用它;如果被判定为不准确,则将在没有任何进一步计算的情况下被清除。这允许将idet滤镜作为一种低计算成本的方法,用于清理交错标志。

32.135.1 示例

详细检查前360帧视频的场序:

ffmpeg -i INPUT -filter:v idet,metadata=mode=print -frames:v 360 -an -f null -

idet滤镜会将分析元数据添加到每一帧,然后该元数据会被丢弃。最后,过滤器会打印带有统计数据的最终报告。

32.136 il

解交错或交错字段。

该滤镜允许处理交错图像字段,而无需对其进行解交错操作。解交错将输入帧分成两个字段(称为半幅画面)。奇数行移动到输出图像的上半部分,偶数行移动到底部。可以分别对其进行处理(过滤),然后重新交错。

此滤镜接受以下选项:

luma_mode, l
chroma_mode, c
alpha_mode, a

可用值luma_mode, chroma_modealpha_mode分别是:

none

不执行任何操作。

deinterleave, d

解交错字段,将一个字段放在另一个字段上。

interleave, i

交错字段。颠倒解交错效果。

默认值是none.

luma_swap, ls
chroma_swap, cs
alpha_swap, as

交换明度/色度/透明度字段。交换奇数和偶数行。默认值是0.

32.136.1 命令

此滤镜支持以上所有选项作为命令.

32.137 inflate

对视频应用膨胀效果。

该滤镜通过仅考虑比当前像素值高的值来用局部(3x3)平均值替代像素。

可接受的选项包括:

threshold0
threshold1
threshold2
threshold3

限制每个位面的最大变化,默认值为65535。如果为0,则平面保持不变。

32.137.1 命令

此滤镜支持以上所有选项作为命令.

32.138 interlace

从渐进内容中生成简单交错视频。这会将奇帧的上半部分(或下半部分)与偶帧的下半部分(或上半部分)交错,减半帧率但保留图像高度。

   Original        Original             New Frame
   Frame 'j'      Frame 'j+1'             (tff)
  ==========      ===========       ==================
    Line 0  -------------------->    Frame 'j' Line 0
    Line 1          Line 1  ---->   Frame 'j+1' Line 1
    Line 2 --------------------->    Frame 'j' Line 2
    Line 3          Line 3  ---->   Frame 'j+1' Line 3
     ...             ...                   ...
New Frame + 1 will be generated by Frame 'j+2' and Frame 'j+3' and so on

接收以下可选参数:

scan

此参数决定交错帧是从渐进帧的偶数行(默认tff)还是奇数行(bff)生成。

lowpass

纵向低通滤波器以避免闪烁交错并减少摩尔纹。

0, off

禁用纵向低通滤波器

1, linear

启用线性滤波器(默认值)

2, complex

启用复杂滤波器。这会稍微减少闪烁和摩尔纹,但更好地保留细节和主观清晰感。

32.139 kerndeint

通过应用Donald Graft的自适应核交错法对输入视频进行去交错。作用于视频中的交错部分以生成渐进框架。

以下是可接受参数的描述。

thresh

设置门限值,该值影响滤镜在判断像素行是否需要处理时的容忍度。必须为[0,255]范围内的整数,默认值为10。值为0将导致对每一个像素进行处理。

map

如果设置为1,则将超过门限值的像素涂成白色。默认值为0。

order

设置字段顺序。如果设置为1,则交换字段;如果为0,则保留字段不变。默认值为0。

sharp

如果设置为1,则启用额外锐化。默认值为0。

twoway

如果设置为1,则启用双向锐化。默认值为0。

32.139.1 示例

  • 应用默认值:
    kerndeint=thresh=10:map=0:order=0:sharp=0:twoway=0
    
  • 启用额外锐化:
    kerndeint=sharp=1
    
  • 将处理的像素涂白:
    kerndeint=map=1
    

32.140 kirsch

对输入视频流应用kirsch算子。

滤镜接受以下选项:

planes

设置要处理的平面,未处理的平面将被复制。默认值为0xf,表示处理所有平面。

scale

设置与过滤结果相乘的值。

delta

设置添加到过滤结果的值。

32.140.1 命令

此滤镜支持以上所有选项作为命令.

32.141 lagfun

缓慢更新较暗的像素。

该滤镜使短暂的光闪现时间延长。接受以下选项:

decay

设置衰减的因子。默认值为0.95。允许范围是0到1。

planes

设置要过滤的平面。默认是所有平面。允许范围是0到15。

32.141.1 命令

此滤镜支持以上所有选项作为命令.

32.142 lenscorrection

校正径向镜头畸变。

该滤镜可用于校正因使用广角镜头而造成的径向畸变,从而重新调整图像。寻找正确参数可以使用例如OpenCV提供的工具,也可以通过试错法找到合适的值。在使用OpenCV时,可通过OpenCV源码中的校准例程(samples/cpp)提取结果矩阵中的k1和k2系数。

注意,该滤镜在KDE项目的开源工具Krita和Digikam中也提供了类似的功能。

vignette滤镜不同,尽管其也用于补偿镜头误差,该滤镜是校正图像的几何畸变,而vignette滤镜是校正亮度分布,因此在某些情况下可能需要同时使用这两个滤镜,不过需要注意顺序,即先应用镜头校正还是光晕校正。

32.142.1 选项

滤镜接受以下选项:

cx

图像焦点的相对x坐标,同时也是畸变中心。范围为[0,1],以图像宽度的比例表示。默认值为0.5。

cy

图像焦点的相对y坐标,同时也是畸变中心。范围为[0,1],以图像高度的比例表示。默认值为0.5。

k1

二次校正项的系数。范围为[-1,1],值为0表示不进行校正。默认值为0。

k2

双二次校正项的系数。范围为[-1,1],值为0表示不进行校正。默认值为0。

i

设置插值类型。可以为nearestbilinear。默认是nearest.

fc

指定未映射像素的颜色。有关此选项的语法,请参考(ffmpeg-utils)"颜色"章节。默认颜色是black@0.

生成校正的公式为:

r_src = r_tgt * (1 + k1 * (r_tgt / r_0)^2 + k2 * (r_tgt / r_0)^4)

其中r_0是图像对角线的一半,而r_srcr_tgt分别是源图像和目标图像中焦点的距离。

32.142.2 命令

此滤镜支持以上所有选项作为命令.

32.143 lensfun

通过lensfun库(http://lensfun.sourceforge.net/)应用镜头校正。).

滤镜需要提供相机品牌、机型和镜头型号,以应用镜头校正。滤镜将加载lensfun数据库并查询其中是否存在符合选项的相机和镜头条目。只要能够根据给定选项找到对应条目,滤镜即可对帧进行校正。注意,不完整的字符串将导致滤镜从所提供的选项中选择最佳匹配项,并输出所选的相机和镜头型号(以"info"级别记录)。必须提供品牌、机型和镜头型号,因为它们是必需的。lensfun filter requires the camera make, camera model, and lens model to apply the lens correction. The filter will load the lensfun database and query it to find the corresponding camera and lens entries in the database. As long as these entries can be found with the given options, the filter can perform corrections on frames. Note that incomplete strings will result in the filter choosing the best match with the given options, and the filter will output the chosen camera and lens models (logged with level "info"). You must provide the make, camera model, and lens model as they are required.

为了获得可用品牌和型号的列表,可以省略其中一个或两个makemodel选项。滤镜会将完整列表发送到日志中,级别为INFO。 第一列为品牌,第二列为型号。 要获取可用镜头的列表,请为品牌和型号设定任意值,然后省略lens_model选项。滤镜将完整输出镜头列表到日志中,级别为INFO。ffmpeg工具将在打印列表后退出。

此滤镜接受以下选项:

make

相机品牌(例如,“Canon”)。此选项为必需项。

model

相机型号(例如,“Canon EOS 100D”)。此选项为必需项。

lens_model

镜头型号(例如,“Canon EF-S 18-55mm f/3.5-5.6 IS STM”)。此选项为必需项。

db_path

镜头数据库文件夹的完整路径。如果未设置,滤镜将在构建库时尝试从安装路径加载数据库。默认值未设置。

mode

需要应用的校正类型。以下值为有效选项:

vignetting

启用修正镜头渐晕。

geometry

启用修正镜头几何失真。这是默认值。

subpixel

启用修正色差。

vig_geo

启用修正镜头渐晕和几何失真。

vig_subpixel

启用修正镜头渐晕和色差。

distortion

启用同时修正几何失真和色差。

all

启用所有可能的校正。

focal_length

设置图像/视频的焦距(变焦;视频预期为恒定)。例如,18–55mm镜头的焦距范围为[18–55],因此在使用该镜头时,应选择该范围内的值。默认值为18。

aperture

设置图像/视频的光圈(预期为恒定值)。注意,光圈仅用于渐晕校正。默认值为3.5。

focus_distance

设置图像/视频的焦距(预期为恒定值)。注意,焦距仅用于渐晕,并且仅对渐晕校正过程略有影响。如果未知,则保持为默认值(即1000)。

scale

在转换后应用的缩放比例。校正后的视频不一定是矩形。此参数控制结果图像的可见程度。值为0表示会自动选择一个值,以确保输出图像中几乎没有未映射区域;1.0表示不进行额外缩放。较小的值可能会显示更多的校正图像,而较高的值可以避免输出中的未映射区域。

target_geometry

输出图像/视频的目标几何形状。以下值为有效选项:

rectilinear (default)
fisheye
panoramic
equirectangular
fisheye_orthographic
fisheye_stereographic
fisheye_equisolid
fisheye_thoby
reverse

应用图像校正的反向效果(与修正畸变相反,应用畸变)。

interpolation

校正畸变时使用的插值方式。以下值为有效选项:

nearest
linear (default)
lanczos

32.143.1 示例

  • 通过镜头校正应用品牌为“Canon”、相机型号为“Canon EOS 100D”、镜头型号为“Canon EF-S 18-55mm f/3.5-5.6 IS STM”,焦距为“18”、光圈为“8.0”。
    ffmpeg -i input.mov -vf lensfun=make=Canon:model="Canon EOS 100D":lens_model="Canon EF-S 18-55mm f/3.5-5.6 IS STM":focal_length=18:aperture=8 -c:v h264 -b:v 8000k output.mov
    
  • 与之前一样,但仅应用于前5秒的视频。
    ffmpeg -i input.mov -vf lensfun=make=Canon:model="Canon EOS 100D":lens_model="Canon EF-S 18-55mm f/3.5-5.6 IS STM":focal_length=18:aperture=8:enable='lte(t\,5)' -c:v h264 -b:v 8000k output.mov
    

32.144 libplacebo

基于libplacebo的灵活GPU加速处理滤镜https://code.videolan.org/videolan/libplacebo).

32.144.1 选项

该过滤器的选项分为以下几个部分:

32.144.1.1 输出模式

这些选项控制总体输出模式。默认情况下,libplacebo将尽可能保留源颜色空间和大小,但会应用源帧中嵌入的胶片颗粒、杜比视界元数据或变形SAR。

inputs

设置输入数量。这可以与idx变量一起使用,以允许在输出帧中放置/混合多个输入。这实际上启用类似于水平堆叠, 覆盖等功能。

w
h

设置输出视频尺寸表达式。默认值为iwih.

允许使用与缩放过滤器相同的表达式。

crop_x
crop_y

设置输入裁剪的 x/y 表达式,默认值为(iw-cw)/2(ih-ch)/2.

crop_w
crop_h

设置输入裁剪宽度/高度表达式,默认值为iwih.

pos_x
pos_y

设置输出放置的 x/y 表达式,默认值为(ow-pw)/2(oh-ph)/2.

pos_w
pos_h

设置输出放置宽度/高度表达式,默认值为owoh.

fps

设置输出帧率。可以是有理数,例如60000/1001。如果设置为特殊字符串none(默认),输入时间戳将直接传递到未修改的输出。否则,输入视频帧将根据需要插值,以按frame_mixer选项确定的方式调整到指定的目标帧率。

format

设置输出格式覆盖。如果未设置(默认),帧将以与相应输入帧相同的格式输出。否则,将执行格式转换。

force_original_aspect_ratio
force_divisible_by

与完全相同的缩放过滤器选项的效果相同。

normalize_sar

如果启用,输出帧将始终具有1:1的像素宽高比。这将在必要时引入额外的内边距/裁剪。如果禁用(默认),任何宽高比不匹配,包括例如源自变形视频源的比例,将转发到输出像素宽高比。

pad_crop_ratio

指定输入宽高比与输出宽高比不匹配时的填充与裁剪比率(介于0.01.0之间)并且normalize_sar已生效。默认值为0.0总是用黑色边框填充内容,而值为1.0总是裁剪掉部分内容。可以使用中间值,从而导致两种方法的混合。

fillcolor

设置用于填充未被输出图像覆盖的输出区域的颜色,例如由normalize_sar导致的。有关此选项的一般语法,请检查(ffmpeg-utils) 在 ffmpeg-utils 文档中的“颜色”部分。默认值为black.

corner_rounding

以圆角渲染帧。该值是一个浮点数,范围从0.01.0,表示圆角的相对程度,从完全方形到完全圆形。换句话说,它提供半径除以较小边长的一半。默认值为0.0.

extra_opts

传递额外的 libplacebo 内部配置选项。这些选项可以指定为由冒号分隔的=对列表。以下示例演示如何配置自定义过滤器内核(“EWA LanczosSharp”)并使用它将输入图像分辨率加倍:

-vf "libplacebo=w=iw*2:h=ih*2:extra_opts='upscaler=custom\:upscaler_preset=ewa_lanczos\:upscaler_blur=0.9812505644269356'"
colorspace
color_primaries
color_trc
range

配置输出帧将使用的颜色空间。默认值为auto输出与输入帧相同格式的帧,从而无变化。对于任何其他值,将执行转换。

参见setparams过滤器以获取可能值的列表。

apply_filmgrain

如果源帧中存在电影颗粒(例如 AV1 或 H.274),则应用并从输出中剥离。默认启用。

apply_dolbyvision

如果源帧中存在杜比视界 RPU 元数据,则应用并从输出中剥离。默认启用。需要注意的是,杜比视界将始终输出 BT.2020+PQ,覆盖通常的输入帧元数据。这些也将被选为auto用于相应帧输出选项的值。

除了文档中为缩放过滤器记录的表达式常量之外,crop_w, crop_h, crop_x, crop_y, pos_w, pos_h, pos_xpos_y选项还可以包含以下常量:

in_idx, idx

当前活动输入流的(从0开始)数字索引。

crop_w, cw
crop_h, ch

计算出的crop_wcrop_h.

pos_w, pw
pos_h, ph

计算出的pos_wpos_h.

in_t, t

输入帧时间戳,以秒为单位。如果输入时间戳未知,则为 NAN。

out_t, ot

输入帧时间戳,以秒为单位。如果输入时间戳未知,则为 NAN。

n

输入帧号,从0开始。

32.144.1.2 缩放

本节中的选项控制 libplacebo 在进行放大(必要时还包括缩小)时的操作方式。注意,libplacebo 始终在内部处理 4:4:4 内容,因此任何子采样色度格式(如yuv420p)在渲染过程中都必然会被放大和缩小。这意味着,即使源和目标分辨率相同,也可能会启用缩放。

upscaler
downscaler

配置用于放大和缩小的过滤器内核。各自的默认值分别为spline36mitchell。要查看可能值的完整列表,请传递help到这些选项。最重要的值包括:

none

强制使用内置的 GPU 纹理采样(通常是双线性)。速度极快但质量差,尤其是在缩小时。

bilinear

双线性插值。通常可以免费在 GPU 上完成,除了会导致混叠的情况外。速度快但质量差。

nearest

最近邻插值。锐利但高度混叠。

oversample

一种看起来与最近邻插值视觉上类似但试图保留像素比例的算法。对于像素艺术效果很好,因为它会尽可能减少对艺术外观的扭曲。

lanczos

标准的 sinc-sinc 插值内核。

spline36

Lanczos 的立方样条近似值。性能没有差异,但略微减少了振铃。

ewa_lanczos

基于 jinc-sinc 内核的 Lanczos 的椭圆加权平均版本。这也被流行称为“Jinc 缩放”。速度慢但质量非常高。

gaussian

高斯内核。具有某些理想的数学特性,但主观上非常模糊。

mitchell

米切尔和奈特拉瓦力推荐的带参数的立方 BC 样条。几乎没有振铃。

frame_mixer

控制用于在时间上混合帧的内核。默认值为none,禁用帧混合。查看可能值的完整列表,请传递help到此选项。最重要的值包括:

none

禁用帧混合,生成与“最近邻”语义等效的结果。

oversample

对输入视频进行超采样以创建“平滑运动”类型效果:如果输出帧恰好出现在两个视频帧之间的过渡处,则根据相对重叠进行混合。无论何时需要保留原始主观外观,这都是推荐的选项。

mitchell_clamp

较大的过滤器内核,以平滑插值多个帧的方式设计,从而尽可能消除振铃和其他伪影。这是在任何地方追求最大视觉平滑度的推荐选项。

linear

在帧之间进行线性混合/淡出。特别适合构建例如幻灯片。

lut_entries

配置 scaler LUT 的大小,范围从1256。默认值0将选择 libplacebo 的内部默认值,通常为64.

antiringing

启用抗振铃(对于非EWA过滤器)。值范围(介于0.01.0之间)配置抗振铃算法的强度。如果设置过高可能会增加混叠。默认禁用。

sigmoid

在放大期间启用 S 字形压缩。稍微减少振铃。默认启用。

32.144.1.3 去色带

Libplacebo 带有一个内置的去色带过滤器,可以很好地抵消许多常见的色带和块效应。如果追求质量,强烈建议将其打开。

deband

启用(快速)去色带算法。默认禁用。

deband_iterations

去色带算法的迭代次数。每次迭代都会以逐步增加的半径(和减弱的阈值)进行。推荐值范围在14之间。默认值为1.

deband_threshold

去色带滤波器强度。更高的数字会导致更激进的去色带处理。默认值为4.0.

deband_radius

去色带滤波器半径。半径较高更适合缓慢渐变,而半径较低适合陡峭渐变。默认值为16.0.

deband_grain

要添加的额外输出颗粒量。帮助隐藏瑕疵。默认值为6.0.

32.144.1.4 颜色调整

一组主观色彩控制。不太严格,因此具体效果会因输入主色和色彩空间而有所不同。

brightness

亮度提升,范围介于-1.01.0之间。默认值为0.0.

contrast

对比度增益,范围介于0.016.0之间。默认值为1.0.

saturation

饱和度增益,范围介于0.016.0之间。默认值为1.0.

hue

色调偏移,以弧度为单位,范围介于-3.143.14之间。默认值为0.0。这将旋转 UV 子向量,RGB 输入默认使用 BT.709 系数。

gamma

伽马调整,范围介于0.016.0之间。默认值为1.0.

cones

用于色盲模拟的锥体模式。接受l, ms的任意组合。以下是一些示例:

m

绿色弱视 / 绿色盲(影响3%-4%人口)

l

红绿色弱视 / 红绿色盲(影响1%-2%人口)

l+m

全色盲(非常罕见)

l+m+s

全色盲(完全丧失白天视觉,极为罕见)

cone-strength

指定由cones定义的锥体的增益因子,范围介于0.010.0之间。值为1.0不会改变色觉。值为0.0(默认)模拟完全丧失这些锥体的情况。超过1.0的值会增加锥体之间的差异,这可能有助于补偿色觉减弱。

32.144.1.5 峰值检测

为了帮助处理仅具有静态 HDR10 元数据(或根本没有标记)的源,libplacebo 使用其自己的内部帧分析计算着色器来分析源帧并实时调整色调映射功能。如果这太慢,或者需要完全可复制的帧级完美结果,建议关闭此功能。

peak_detect

启用 HDR 峰值检测。忽略静态 MaxCLL/MaxFALL 值,优先从输入中动态检测。注意,检测到的值不会写回到输出帧,它们只是引导内部色调映射过程。默认启用。

smoothing_period

峰值检测平滑周期,范围介于0.01000.0之间。更高的值会导致峰值检测对输入变化的响应变慢。默认值为100.0.

minimum_peak

检测到的峰值的下限(相对于 SDR 白色),范围介于0.0100.0之间。默认值为1.0.

scene_threshold_low
scene_threshold_high

场景变更检测的上下阈值。在0.0100.0范围内以对数刻度表示。默认值为5.510.0。若将任一设置为负值可禁用此功能。

percentile

用作色调映射源峰值的帧亮度直方图分位数。默认值为99.995,相当保守的值。将其设置为100.0禁用帧直方图测量,改为使用真实峰值亮度进行色调映射。

32.144.1.6 色调映射

本节中的选项控制 libplacebo 在处理宽色域或 HDR 内容之间的失配时进行色调映射和色域映射的方式。总的来说,libplacebo 依赖于准确的源标签和母版显示色域信息,以产生最佳效果。

gamut_mode

如何处理由于色度色域映射而可能发生的颜色超出范围的情况。

clip

什么都不做,只是将超范围的颜色剪裁到RGB范围内。质量低但速度非常快。

perceptual

以感知方式将颜色柔和剪裁到色域范围内。这是默认设置。

relative

相对的色度硬剪裁。类似于perceptual但没有柔和过渡。

saturation

饱和度映射,在RGB空间中直接将原色映射到原色。不推荐使用,除非用于人工计算机图形中希望明亮饱和的显示。

absolute

绝对色度硬剪裁。不进行对白点的调整。

desaturate

将超范围颜色硬性去饱和,向白色靠近,同时保留亮度。容易导致明亮物体的视觉外观失真。

darken

线性降低内容亮度以保留饱和细节,然后剪裁剩余的超范围颜色。

warn

突出显示超范围像素(通过反转/标记它们)。

linear

线性减小整个图像的色度以适应目标色彩范围。使用此设置处理没有正确母版元数据的BT.2020源时请十分小心,因为这样会导致过度去饱和。

tonemapping

使用的色调映射算法。可用值为:

auto

基于内部启发式的自动选择。这是默认设置。

clip

不执行色调映射,只剪裁超范围颜色。对范围内的颜色保留完全准确,但完全丢失超范围信息。未执行任何黑点调整。不可配置。

st2094-40

从SMPTE ST 2094-40附录B的EETF,使用HDR10+动态元数据的贝塞尔曲线进行色调映射。根据目标与实际显示峰值亮度之间的比例调整OOTF。

st2094-10

从SMPTE ST 2094-10附录B.2的EETF,考虑输入信号的平均亮度以及最大/最小。可配置的对比度参数影响线性输出段的斜率,默认值为1.0,表示对比度没有增加或减少。请注意,目前尚未包括附录B.3中定义的主观增益/偏移/伽玛控制。

bt.2390

ITU-R报告BT.2390的EETF,含线性段的赫米特样条过渡。膝点偏移量可配置。请注意,此参数默认为1.0,而不是ITU-R规范中的值0.5

bt.2446a

ITU-R报告BT.2446方法A的EETF。专为制作精良的HDR源设计,可用于前向和反向色调映射。不可配置。

spline

由两个多项式组成的简单样条,连接处有一个单一的枢点。参数指定枢点(在PQ空间中),默认值为0.30。可用于前向和反向色调映射。

reinhard

简单非线性全球色调映射算法。参数指定显示峰值的局部对比度系数。基本上,参数为0.5意味着参考白点的亮度大约为剪裁情况下的一半。默认值为0.5,这使得该函数的表达式最简单。

mobius

雷哈德色调映射算法的推广,支持接近黑色的附加线性斜率。色调映射参数表示线性部分与非线性部分之间的权衡。基本上,对于给定参数x,每个颜色值低于x的部分都将被线性映射,而较高的值则进行非线性色调映射。接近1.0的值使此曲线表现类似于clip,而接近0.0的值使此曲线表现类似于reinhard。默认值为0.3,在保留超范围细节和色度准确性之间提供了一个良好的平衡。

hable

约翰·哈布尔开发的分段电影色调映射算法,用于《神秘海域2》。受柯达用于类似色调映射算法的启发。因其在具有HDR渲染的视频游戏中的应用而普及。能够非常好地保留暗部和亮部细节,但其缺点是会显著改变平均亮度。这有点类似于reinhard参数为0.24.

gamma

拟合伽马(幂)函数以在源和目标颜色空间之间转换,有效结果是感知硬性过渡连接两个近似线性部分。这能较准确地保留所有尺度的细节,但可能导致图像显得黯淡或沉闷。参数用于作为截止点,默认值为0.5.

linear

在PQ空间中线性拉伸输入范围到输出范围。这将准确地保留所有细节,但会显著改变平均亮度。除了常规色调映射,还可用于反向色调映射。此参数可用作附加线性增益系数(默认值为1.0).

tonemapping_param

对于可调色调映射函数,此参数可用于微调曲线行为。请参见tonemapping的文档。默认值0.0由曲线的首选默认设置替代。

inverse_tonemapping

如果启用,此滤镜还将尝试将SDR信号拉伸以填充HDR输出色彩范围。默认情况下禁用。

tonemapping_lut_size

色调映射LUT的大小范围在21024之间。默认值为256。注意,当与peak_detect.

contrast_recovery

对比度恢复强度。设置为高于0.0的值时,源图像将被分为高频和低频分量,并在色调映射输出中添加一部分高频图像。这可能会导致某些HDR源出现过度振铃伪影,但可以改善色调映射后图像的主观清晰度和细节剩余。默认值为0.30.

contrast_smoothness

对比度恢复低通核大小。默认值为3.5。增加或减少它将显著影响视觉效果。当禁用contrast_recovery时,则不会产生影响。

32.144.1.7 抖动

默认情况下,libplacebo会在必要时进行抖动,这包括渲染到任何低于16位精度的整数格式。建议始终保持启用状态,否则可能在输出中出现明显的色带效应,即使启用了debanding滤镜,为了达到最大性能,可以使用ordered_fixed代替禁用抖动。

dithering

使用的抖动方法。接受以下值:

none

完全禁用抖动。可能会出现明显的色带。

blue

使用伪蓝噪声进行抖动。这是默认设置。

ordered

可调的有序抖动模式。

ordered_fixed

更快的固定大小抖动,大小为6。无纹理。

white

使用白噪声进行抖动。无纹理。

dither_lut_size

抖动LUT大小,以对数基准2表示范围为18。默认值为6,对应于64x64.

dither_temporal

启用时间抖动。默认情况下禁用。

32.144.1.8 自定义着色器

libplacebo支持基于mpv .hook GLSL语法的多个自定义着色器。此类着色器的集合可以在这里找到:https://github.com/mpv-player/mpv/wiki/User-Scripts#user-shaders

对mpv着色器格式的完整描述超出了本节范围,但摘要可以在这里找到:https://mpv.io/manual/master/#options-glsl-shader

custom_shader_path

指定运行时加载的自定义着色器文件路径。

custom_shader_bin

指定完整的自定义着色器作为原始字符串。

32.144.1.9 调试/性能

本节中所有选项默认关闭。它们可能在试图以质量为代价达到最高性能时有帮助。

skip_aa

下采样时禁用抗锯齿。

polar_cutoff

将极性(EWA)缩放器核截掉低于绝对振幅的值,范围在0.01.0.

disable_linear

禁用线性光缩放。

disable_builtin

禁用内置GPU采样(强制使用LUT)。

disable_fbos

强制禁用FBO,导致几乎所有功能丧失,但提供最大的速度。

32.144.2 命令

此滤镜支持几乎所有上述选项作为命令.

32.144.3 示例

  • 将输入色调映射到标准色域BT.709输出:
    libplacebo=colorspace=bt709:color_primaries=bt709:color_trc=bt709:range=tv
    
  • 将输入重新缩放以适应标准1080p,采用高质量缩放:
    libplacebo=w=1920:h=1080:force_original_aspect_ratio=decrease:normalize_sar=true:upscaler=ewa_lanczos:downscaler=ewa_lanczos
    
  • 将低FPS/VFR输入插值为平滑的恒定60 FPS输出:
    libplacebo=fps=60:frame_mixer=mitchell_clamp
    
  • 将输入转换为标准的sRGB JPEG:
    libplacebo=format=yuv420p:colorspace=bt470bg:color_primaries=bt709:color_trc=iec61966-2-1:range=pc
    
  • 使用更高质量的去条带设置:
    libplacebo=deband=true:deband_iterations=3:deband_radius=8:deband_threshold=6
    
  • 在安装Mesa的系统上运行此滤镜,使用CPU(并禁用最昂贵的选项):
    ffmpeg ... -init_hw_device vulkan:llvmpipe ... -vf libplacebo=upscaler=none:downscaler=none:peak_detect=false
    
  • 在解码器中抑制CPU基础的AV1/H.274电影颗粒应用,而使用此滤镜来处理。请注意,只有在帧已经位于GPU上或者您正在将libplacebo用于其他目的时,这是有效的,因为否则VRAM往返将超过任何预期的速度加快。
    ffmpeg -export_side_data +film_grain ... -vf libplacebo=apply_filmgrain=true
    
  • 与VAAPI硬解码的互操作,避免通过RAM来回传输:
    ffmpeg -init_hw_device vulkan -hwaccel vaapi -hwaccel_output_format vaapi ... -vf libplacebo
    

32.145 libvmaf

计算参考/失真视频对的VMAF(视频多方法评估融合)分数。

第一个输入是失真视频,第二个输入是参考视频。

获得的VMAF分数通过日志系统打印。

它需要Netflix的vmaf库(libvmaf)作为前提条件。安装库后可以通过以下方式启用:./configure --enable-libvmaf.

此滤镜有以下选项:

model

由多个用‘|’分隔的vmaf模型组成的列表。每个模型可以通过一些参数进行配置。默认值:"version=vmaf_v0.6.1"

feature

由多个用‘|’分隔的特征组成的列表。每个特征可以通过一些参数进行配置。

log_path

设置用于存储日志文件的文件路径。

log_fmt

设置日志文件的格式(xml, json, csv或sub)。

pool

设置用于计算vmaf的池方法。选项为min, harmonic_meanmean(默认)。

n_threads

设置初始化libvmaf时使用的线程数。默认值:0,无线程。

n_subsample

设置使用的帧子采样间隔。

此滤镜还支持framesync选项。

32.145.1 示例

  • 在以下示例中,一个失真视频distorted.mpg与参考文件进行比对reference.mpg.
  • 基本使用:
    ffmpeg -i distorted.mpg -i reference.mpg -lavfi libvmaf=log_path=output.xml -f null -
    
  • 使用多模型的示例:
    ffmpeg -i distorted.mpg -i reference.mpg -lavfi libvmaf='model=version=vmaf_v0.6.1\\:name=vmaf|version=vmaf_v0.6.1neg\\:name=vmaf_neg' -f null -
    
  • 使用多个附加特征的示例:
    ffmpeg -i distorted.mpg -i reference.mpg -lavfi libvmaf='feature=name=psnr|name=ciede' -f null -
    
  • 使用选项和不同容器的示例:
    ffmpeg -i distorted.mpg -i reference.mkv -lavfi "[0:v]settb=AVTB,setpts=PTS-STARTPTS[main];[1:v]settb=AVTB,setpts=PTS-STARTPTS[ref];[main][ref]libvmaf=log_fmt=json:log_path=output.json" -f null -
    

32.146 libvmaf_cuda

这是libvmaf滤镜的CUDA变体,仅接受CUDA帧。

它需要Netflix的vmaf库(libvmaf)作为前提条件。安装库后可以通过以下方式启用:./configure --enable-nonfree --enable-ffnvcodec --enable-libvmaf.

32.146.1 示例

  • 展示CUVID硬件解码和使用scale_cuda:
    ffmpeg \
        -hwaccel cuda -hwaccel_output_format cuda -codec:v av1_cuvid -i dis.obu \
        -hwaccel cuda -hwaccel_output_format cuda -codec:v av1_cuvid -i ref.obu \
        -filter_complex "
            [0:v]scale_cuda=format=yuv420p[dis]; \
            [1:v]scale_cuda=format=yuv420p[ref]; \
            [dis][ref]libvmaf_cuda=log_fmt=json:log_path=output.json
        " \
        -f null -
    

进行CUDA缩放的基本使用。

使用第二个视频流(可选第三个视频流)应用有限差异滤镜。

滤镜接受以下选项:

threshold

设置用于允许视频流之间差异的阈值。任意小于或等于此阈值的绝对差值将从第一个视频流中选取像素分量。

elasticity

设置处理视频流时软阈值弹性。将此值与第一个值相乘即设置第二个阈值。任意大于或等于第二个阈值的绝对差值将从第二个视频流选取像素分量。对于介于这两个阈值之间的值,将在线性插值第一个和第二个视频流之间选择。

reference

启用参考(第三个)视频流处理。默认情况下禁用。如果设置,此视频流将用于计算与第一个视频流的绝对差值。

planes

指定将处理哪些平面。默认为所有可用的。

32.147.1 命令

此滤镜支持以上所有选项作为命令除了选项'reference’.

32.148 限幅器

将像素分量的值限制在指定的范围[min, max]内。

该滤镜接受以下选项:

min

下限。默认为输入的最低允许值。

max

上限。默认为输入的最高允许值。

planes

指定将处理哪些平面。默认为所有可用的。

32.148.1 命令

此滤镜支持以上所有选项作为命令.

32.149 循环

循环视频帧。

该滤镜接受以下选项:

loop

设置循环次数。将此值设置为 -1 将导致无限循环。默认值为 0。

size

设置最大帧数。默认值为 0。

start

设置循环的第一帧。默认值为 0。

time

设置循环开始的时间(秒)。仅在命名为start的选项被设置时使用。-1.

32.149.1 示例

  • 无限循环单个第一帧:
    loop=loop=-1:size=1:start=0
    
  • 循环单个第一帧 10 次:
    loop=loop=10:size=1:start=0
    
  • 循环前 10 帧 5 次:
    loop=loop=5:size=10:start=0
    

32.150 lut1d

对输入视频应用 1D LUT。

该滤镜接受以下选项:

file

设置 1D LUT 文件名。

当前支持的格式:

cube

Iridas

csp

cineSpace

interp

选择插值模式。

可用值为:

nearest

使用最近定义点的值。

linear

使用线性插值值。

cosine

使用余弦插值值。

cubic

使用立方插值值。

spline

使用样条插值值。

32.150.1 命令

此滤镜支持以上所有选项作为命令.

32.151 lut3d

对输入视频应用 3D LUT。

该滤镜接受以下选项:

file

设置 3D LUT 文件名。

当前支持的格式:

3dl

AfterEffects

cube

Iridas

dat

DaVinci

m3d

Pandora

csp

cineSpace

interp

选择插值模式。

可用值为:

nearest

使用最近定义点的值。

trilinear

使用定义立方体的 8 个点进行插值。

tetrahedral

使用四面体插值。

pyramid

使用金字塔插值。

prism

使用棱柱插值。

32.151.1 命令

此滤镜支持interp选项作为命令.

32.152 lumakey

将某些亮度值转为透明。

该滤镜接受以下选项:

threshold

设置用于透明度基础的亮度。默认值为0.

tolerance

设置要剔除的亮度值范围。默认值为0.01.

softness

设置柔和度范围。默认值为0。用此来控制从零到完全透明的渐变过渡。

32.152.1 命令

此滤镜支持相同命令作为选项。命令接受与相应选项相同的语法。

如果指定的表达式无效,则保持当前值。

32.153 lut, lutrgb, lutyuv

计算一个查找表来将每个像素分量的输入值绑定到输出值,并将其应用于输入视频。

lutyuv应用查找表到 YUV 输入视频,lutrgb应用于 RGB 输入视频。

这些滤镜接受以下参数:

c0

设置第一个像素分量的表达式

c1

设置第二个像素分量的表达式

c2

设置第三个像素分量的表达式

c3

设置第四个像素分量的表达式,对应于 alpha 分量

r

设置红色分量表达式

g

设置绿色分量表达式

b

设置蓝色分量表达式

a

alpha 分量表达式

y

设置 Y/亮度分量表达式

u

设置 U/Cb 分量表达式

v

设置 V/Cr 分量表达式

每个都指定用于计算相应像素分量值查找表的表达式。

与每个c*选项关联的确切分量取决于输入的格式。

lut滤镜需要输入为 YUV 或 RGB 像素格式,lutrgb需要输入为 RGB 像素格式,而lutyuv需要 YUV。

表达式可以包含以下常量和函数:

w
h

输入的宽度和高度。

val

像素分量的输入值。

clipval

输入值,裁剪到minval-maxval范围。

maxval

像素分量的最大值。

minval

像素分量的最小值。

negval

像素分量值的取反值,裁剪到minval-maxval范围;其等于表达式“maxval-clipval+minval”。

clip(val)

计算值val,裁剪到minval-maxval范围。

gammaval(gamma)

像素分量值的计算伽马校正值,裁剪到minval-maxval范围。其等于表达式“pow((clipval-minval)/(maxval-minval),gamma)*(maxval-minval)+minval”。

所有表达式默认值为“clipval”。

32.153.1 命令

此滤镜支持相同命令作为选项。

32.153.2 示例

  • 反转输入视频:
    lutrgb="r=maxval+minval-val:g=maxval+minval-val:b=maxval+minval-val"
    lutyuv="y=maxval+minval-val:u=maxval+minval-val:v=maxval+minval-val"
    

    上述等同于:

    lutrgb="r=negval:g=negval:b=negval"
    lutyuv="y=negval:u=negval:v=negval"
    
  • 反转亮度:
    lutyuv=y=negval
    
  • 移除色度分量,将视频变成灰度图像:
    lutyuv="u=128:v=128"
    
  • 应用亮度燃烧效果:
    lutyuv="y=2*val"
    
  • 移除绿色和蓝色分量:
    lutrgb="g=0:b=0"
    
  • 在输入上设置固定的 alpha 通道值:
    format=rgba,lutrgb=a="maxval-minval/2"
    
  • 通过因子 0.5 校正亮度伽玛:
    lutyuv=y=gammaval(0.5)
    
  • 丢弃亮度的最低有效位:
    lutyuv=y='bitand(val, 128+64+32)'
    
  • Technicolor 类似效果:
    lutyuv=u='(val-maxval/2)*2+maxval/2':v='(val-maxval/2)*2+maxval/2'
    

32.154 lut2, tlut2

lut2滤镜接受两个输入流并输出一个流。

tlut2(时间 lut2) 滤镜从单个流中接受两个连续帧。

此滤镜接受以下参数:

c0

设置第一个像素分量表达式

c1

设置第二个像素分量表达式

c2

设置第三个像素分量表达式

c3

设置第四个像素分量表达式,对应于 alpha 分量

d

设置输出位深,仅适用于lut2滤镜。默认值为 0,表示位深从第一个输入格式自动选择。

lut2滤镜也支持framesync选项。

每个都指定用于计算相应像素分量值查找表的表达式。

与每个c*选项关联的确切分量取决于输入的格式。

表达式可以包含以下常量:

w
h

输入的宽度和高度。

x

像素分量的第一个输入值。

y

像素分量的第二个输入值。

bdx

第一输入视频的位深。

bdy

第二输入视频的位深。

所有表达式的默认值是“x”。

32.154.1 命令

此滤镜支持以上所有选项作为命令除了选项d.

32.154.2 示例

  • 突出显示两个 RGB 视频流之间的差异:
    lut2='ifnot(x-y,0,pow(2,bdx)-1):ifnot(x-y,0,pow(2,bdx)-1):ifnot(x-y,0,pow(2,bdx)-1)'
    
  • 突出显示两个 YUV 视频流直接的差异:
    lut2='ifnot(x-y,0,pow(2,bdx)-1):ifnot(x-y,pow(2,bdx-1),pow(2,bdx)-1):ifnot(x-y,pow(2,bdx-1),pow(2,bdx)-1)'
    
  • 显示两个视频流之间的最大差异:
    lut2='if(lt(x,y),0,if(gt(x,y),pow(2,bdx)-1,pow(2,bdx-1))):if(lt(x,y),0,if(gt(x,y),pow(2,bdx)-1,pow(2,bdx-1))):if(lt(x,y),0,if(gt(x,y),pow(2,bdx)-1,pow(2,bdx-1)))'
    

32.155 maskedclamp

使用第二输入流与第三输入流对第一个输入流进行限定。

将第一个流的值限定在第二输入流的范围内-undershoot和第三输入流的范围+overshoot.

此滤镜接受以下选项:

undershoot

默认值为0.

overshoot

默认值为0.

planes

设置哪些平面将作为位图进行处理,未处理的平面将从第一个流中复制。默认值为 0xf,所有平面都将被处理。

32.155.1 命令

此滤镜支持以上所有选项作为命令.

32.156 maskedmax

将第二个输入流和第三个输入流合并到输出流中,使用第二个输入流与第一个输入流之间的绝对差异和第三个输入流与第一个输入流之间的绝对差异。如果第二个绝对差异大于第一个绝对差异,则选取第二个输入流的值,否则选取第三个输入流的值。

此滤镜接受以下选项:

planes

设置哪些平面将作为位图进行处理,未处理的平面将从第一个流中复制。默认值为 0xf,所有平面都将被处理。

32.156.1 命令

此滤镜支持以上所有选项作为命令.

32.157 maskedmerge

以像素为单位的权重使用第三输入流将第一个输入流与第二输入流合并。

在第三输入流像素分量中的值为 0 时,将返回第一个输入流的像素分量未修改;而最大值(例如 8-bit 视频的 255)表示返回未修改的第二输入流像素分量。介于两者间的值定义了输入流像素分量之间的合并量。

此滤镜接受以下选项:

planes

设置哪些平面将作为位图进行处理,未处理的平面将从第一个流中复制。默认值为 0xf,所有平面都将被处理。

32.157.1 命令

此滤镜支持以上所有选项作为命令.

32.158 maskedmin

将第二个输入流和第三个输入流合并到输出流中,使用第二个输入流与第一个输入流之间的绝对差异和第三个输入流与第一个输入流之间的绝对差异。如果第二个绝对差异小于第一个绝对差异,则选取第二个输入流的值,否则选取第三个输入流的值。

此滤镜接受以下选项:

planes

设置哪些平面将作为位图进行处理,未处理的平面将从第一个流中复制。默认值为 0xf,所有平面都将被处理。

32.158.1 命令

此滤镜支持以上所有选项作为命令.

32.159 maskedthreshold

通过比较两个视频流的绝对差异和固定的阈值选择像素。

如果第一个和第二个视频流像素分量之间的绝对差异小于或等于用户提供的阈值,则选取第一个视频流的像素分量,否则选取第二个视频流的像素分量。

此滤镜接受以下选项:

threshold

设置用于从两个输入视频流的绝对差异中选择像素的阈值。

planes

设置哪些平面将作为位图进行处理,未处理的平面将从第二个流中复制。默认值为 0xf,所有平面都将被处理。

mode

设置滤镜操作模式。可以为absdiff。默认值为abs.

32.159.1 命令

此滤镜支持以上所有选项作为命令.

32.160 maskfun

从输入视频创建掩码。

例如,它在过滤器之后创建运动掩码非常有用。tblend过滤器。

此滤镜接受以下选项:

low

设置低阈值。任何像素分量小于或等于此值的都将设置为 0。

high

设置高阈值。任何像素分量大于此值的都将设置为当前像素格式允许的最大值。

planes

设置要过滤的平面,默认情况下所有可用平面都会被过滤。

fill

用此值填充所有帧像素。

sum

设置帧的最大平均像素值。如果所有像素分量的总和高于此平均值,输出帧将完全用fill选项设置的值填充。通常,这与tblend过滤器结合使用时对于场景切换很有用。

32.160.1 命令

此滤镜支持以上所有选项作为命令.

32.161 mcdeint

应用运动补偿的去隔行处理。

它需要每帧一个场作为输入,因此必须与 yadif=1/3 或同等方式一起使用。

此滤镜接受以下选项:

mode

设置去隔行模式。

它接受以下值之一:

fast
medium
slow

使用迭代运动估计

extra_slow

类似于‘slow’,但使用多个参考帧。

默认值为‘fast’.

parity

设置输入视频的图像场顺序假设。它必须是以下值之一:

0, tff

假设顶部场优先

1, bff

假设底部场优先

默认值为‘bff’.

qp

设置内部编码器使用的按块量化参数(QP)。

较高的值会导致更平滑的运动向量场,但个别向量可能会较低效。默认值为1。

32.162中值

从由半径定义的某个矩形中选择中值像素。

此滤镜接受以下选项:

radius

设置水平半径大小。默认值为1。 允许范围是 1 到 127 的整数。

planes

设置要处理的平面。默认值为15,即所有可用的平面。

radiusV

设置垂直半径大小。默认值为0。 允许范围是 0 到 127 的整数。 如果为0,将从水平radius选项中取值。

percentile

设置中值百分位。默认值为0.5。 默认值0.5将始终选择中值,0选择最小值,1选择最大值。

32.162.1命令

此滤镜支持与选项相同的命令。 命令接受与相应选项相同的语法。

如果指定的表达式无效,则保持其当前值。

32.163合并平面

从多个视频流中合并颜色通道组件。

此滤镜最多接受4个输入流,并将选定的输入平面合并到输出视频中。

此滤镜接受以下选项:

mapping

设置输入到输出平面映射方式。默认值为0.

映射方法被定义为一个位图。它应以十六进制数的形式指定,如 0xAa[Bb[Cc[Dd]]]。‘Aa’描述了第一输出流平面的映射。‘A’设置使用的输入流编号(从0到3),‘a’设置使用的对应输入的平面编号(从0到3)。剩余映射类似,‘Bb’描述了第二输出流平面的映射,‘Cc’描述了第三输出流平面的映射,‘Dd’描述了第四输出流平面的映射。

format

设置输出像素格式。默认值为yuva444p.

map0s
map1s
map2s
map3s

设置输出第N个平面的输入与输出流映射方式。默认值为0.

map0p
map1p
map2p
map3p

设置输出第N个平面的输入与输出平面映射方式。默认值为0.

32.163.1示例

  • 将三个具有相同宽度和高度的灰度视频流合并为一个视频流:
    [a0][a1][a2]mergeplanes=0x001020:yuv444p
    
  • 将第一个yuv444p流和第二个灰度视频流合并为yuva444p视频流:
    [a0][a1]mergeplanes=0x00010210:yuva444p
    
  • 在yuva444p流中交换Y和A平面:
    format=yuva444p,mergeplanes=0x03010200:yuva444p
    
  • 在yuv420p流中交换U和V平面:
    format=yuv420p,mergeplanes=0x000201:yuv420p
    
  • 将rgb24剪辑转换为yuv444p:
    format=rgb24,mergeplanes=0x000102:yuv444p
    

32.164运动估计

使用块匹配算法估计并导出运动向量。运动向量存储在帧侧数据中,以供其他滤镜使用。

此滤镜接受以下选项:

method

指定运动估计方法。接受以下值之一:

esa

穷举搜索算法。

tss

三步搜索算法。

tdls

二维对数搜索算法。

ntss

新的三步搜索算法。

fss

四步搜索算法。

ds

菱形搜索算法。

hexbs

基于六边形的搜索算法。

epzs

增强预测区域搜索算法。

umh

不均匀多六边形搜索算法。

默认值为‘esa’.

mb_size

宏块大小。默认值为16.

search_param

搜索参数。默认值为7.

32.165中值均衡器

使用两个视频流应用中值图像均衡效果。

中值图像均衡可调整一对图像使它们具有相同的直方图,同时尽可能保持它们的动态效果。这在例如调整一对立体摄像机的曝光时非常有用。

此滤镜有两个输入和一个输出,必须具有相同的像素格式,但可以具有不同的尺寸。滤镜的输出是通过两个输入的中值直方图调整后的第一个输入。

此滤镜接受以下选项:

planes

设置要处理的平面。默认值为15,即所有可用平面。

32.166运动插值

使用运动插值将视频转换为指定的帧率。

此滤镜接受以下选项:

fps

指定输出帧率。这可以是有理数,例如60000/1001。如果fps低于源帧率,则会丢帧。默认值为60.

mi_mode

运动插值模式。接受以下值:

dup

用前一帧或后一帧重复来插值新帧。

blend

混合源帧。插值帧是前一帧和下一帧的平均值。

mci

运动补偿插值。当选择此模式时,以下选项有效:

mc_mode

运动补偿模式。接受以下值:

obmc

重叠块运动补偿。

aobmc

自适应重叠块运动补偿。窗口加权系数根据邻近运动矢量的可靠性自适应控制,以减少过度平滑。

默认模式为‘obmc’.

me_mode

运动估计模式。接受以下值:

bidir

双向运动估计。对每个源帧分别进行前后两个方向的运动矢量估计。

bilat

双边运动估计。直接对插值帧进行运动矢量估计。

默认模式为‘bilat’.

me

用于运动估计的算法。接受以下值:

esa

穷举搜索算法。

tss

三步搜索算法。

tdls

二维对数搜索算法。

ntss

新的三步搜索算法。

fss

四步搜索算法。

ds

菱形搜索算法。

hexbs

基于六边形的搜索算法。

epzs

增强预测区域搜索算法。

umh

不均匀多六边形搜索算法。

默认算法为‘epzs’.

mb_size

宏块大小。默认值为16.

search_param

运动估计搜索参数。默认值为32.

vsbmc

启用可变大小块运动补偿。运动估计在对象边界处采用更小的块大小,以减少模糊效果。默认值为0(禁用)。

scd

场景变化检测方法。场景变化会导致运动矢量随机变化。场景变化检测会用重复的帧替换插值帧。其他模式可能不需要此功能。接受以下值:

none

禁用场景变化检测。

fdiff

帧差异。比较对应像素值,如果满足scd_threshold条件,则检测到场景变化。

默认方法为‘fdiff’.

scd_threshold

场景变化检测阈值。默认值为10..

32.167混合

将多个视频输入流混合为一个视频流。

以下是接受的选项描述。

inputs

输入数量。如果未明确指定,则默认为2。

weights

指定每个输入视频流的权重序列。 每个权重以空格分隔。如果权重数量少于的数量,最后指定的权重将用于所有剩余未设置的权重。

scale

指定缩放,如果设置,将和每个权重的总和及像素值相乘来计算最终目标像素值。默认情况下scale会自动缩放到权重的总和。

planes

设置要过滤的平面。默认是全部。允许范围是从0到15。

duration

指定如何确定流的结束。

longest

最长输入的持续时间。(默认)

shortest

最短输入的持续时间。

first

第一个输入的持续时间。

32.167.1命令

此滤镜支持以下命令:

weights
scale
planes

语法与具有相同名称的选项相同。

32.168单色

使用自定义颜色滤镜将视频转换为灰度。

以下是接受的选项描述。

cb

设置蓝色色度点。允许范围是 -1 到 1。 默认值为0。

cr

设置红色色度点。允许范围是 -1 到 1。 默认值为0。

size

设置颜色滤镜的大小。允许的范围是 0.1 到 10。 默认值为1。

high

设置高光强度。允许范围是 0 到 1。 默认值为0。

32.168.1命令

此滤镜支持上述所有选项作为命令.

32.169形态学

此滤镜允许应用主要的灰度形态学变换,比如用第二个输入流的任意结构进行腐蚀和膨胀。

与在腐蚀膨胀滤镜中的原始实现和速度慢的性能不同,当速度很重要时应使用morpho滤镜。

以下是接受的选项描述。

mode

设置要应用的形态学变换,可以是:

erode
dilate
open
close
gradient
tophat
blackhat

默认值为erode.

planes

设置要过滤的平面,默认情况下除alpha以外的所有平面被过滤。

structure

设置第二输入流中结构视频帧的处理方式,可以是第一个所有。默认值为所有.

morpho滤镜还支持framesync选项。

32.169.1命令

此滤镜支持与选项相同的命令

32.170降帧

丢弃与上一帧相比变化不大的帧,以降低帧率。

此滤镜的主要用途是用于非常低比特率的编码(例如通过拨号调制解调器的流媒体),但理论上可以用于修复错误逆向扫描的电影。

以下是接受的选项描述。

max

设置可丢弃的连续帧的最大数量(如果为正值),或丢弃帧之间的最小间隔(如果为负值)。如果值为0,无视先前已连续丢弃帧的数量直接丢弃当前帧。

默认值为0。

keep

设置在开始丢弃前要忽略的连续相似帧的最大数量。 如果值为0,无视先前已连续相似的帧的数量直接丢弃当前帧。

默认值为0。

hi
lo
frac

设置丢弃阈值。

的值hilo是8x8像素块的值,表示实际像素值差异,所以阈值64表示每个像素有1个单位差异,或者差异不同地分布在块内。

如果没有任何8x8块的像素差超过hi阈值,并且超过阈值的块数不超过frac(1表示整个图像),则该帧是丢弃的候选。lo.

的默认值为64*12,hi的默认值为64*5,lo的默认值为0.33。frac的值

32.171MSAD

获取两个输入视频的MSAD(绝对差异均值之和)。

此滤镜需要两个输入视频。

两个输入视频必须具有相同的分辨率和像素格式,才能正确地工作。此外,它假设两个输入具有相同数量的帧,它们一一比较。

每个组件、平均值、最小值和最大值的MSAD值通过日志系统打印出来。

滤镜将每帧的计算MSAD存储在帧元数据中。

此滤镜还支持framesync选项。

在下面的示例中,输入文件main.mpg正在处理,与参考文件ref.mpg.

ffmpeg -i main.mpg -i ref.mpg -lavfi msad -f null -

32.172乘法

将第一个视频流的像素值与第二个视频流的像素值相乘。

此滤镜接受以下选项:

scale

设置应用于第二视频流的缩放比例。默认值是1。 允许的范围是从09.

offset

设置应用于第二视频流的偏移量。默认值是0.5。 允许的范围是从-11.

planes

指定输入视频流中将被处理的平面。 默认情况下,所有平面都会被处理。

32.172.1 命令

此滤镜支持与选项相同的命令。

32.173 反转

反转(取反)输入视频。

它接受以下选项:

components

设置要反转的组件。

可用的组件值有:

y
u
v
a
r
g
b
negate_alpha

值为1时,反转存在的alpha组件。默认值为0。

32.173.1 命令

此滤镜支持与选项相同的命令。

32.174 nlmeans

使用非局部均值算法对帧进行去噪。

通过查找具有相似上下文的其他像素来调整每个像素。 这种上下文相似性是通过比较周围的补丁大小pxp定义的。补丁在rxr的区域内进行搜索。

注意,研究区域定义了补丁的中心,这意味着有些补丁将由研究区域外的像素组成。

该滤镜接受以下选项。

s

设置去噪强度。默认值为1.0。必须在范围[1.0, 30.0]内。

p

设置补丁大小。默认值为7,必须是范围[0, 99]内的奇数。

pc

p相同,但针对色度平面。

默认值是0,表示自动。

r

设置研究大小。默认值为15,必须是范围[0, 99]内的奇数。

rc

r相同,但针对色度平面。

默认值是0,表示自动。

32.175 nnedi

使用神经网络边缘导向插值对视频进行反交错。

该滤镜接受以下选项:

weights

强制性选项,缺少二进制文件时滤镜将无法工作。 目前可在此处找到文件: https://github.com/dubhater/vapoursynth-nnedi3/blob/master/src/nnedi3_weights.bin

deint

设置要反交错的帧,默认值是all。 可以是allinterlaced.

field

设置操作模式。

可以是以下之一:

af

使用帧标志,两个场。

a

使用帧标志,单个场。

t

仅使用顶场。

b

仅使用底场。

tf

使用两个场,先顶场。

bf

使用两个场,先底场。

planes

设置要处理的平面,默认情况下滤镜处理所有帧。

nsize

设置周围每个像素的局部邻域大小,由预测神经网络使用。

可以是以下之一:

s8x6
s16x6
s32x6
s48x6
s8x4
s16x4
s32x4
nns

设置预测神经网络中的神经元数量。 可以是以下之一:

n16
n32
n64
n128
n256
qual

控制用于计算最终输出值的不同神经网络预测的混合数量。 可以是fast,默认或slow.

etype

设置要在预测器中使用的权重集。 可以是以下之一:

a, abs

权重经过训练以最小化绝对误差

s, mse

权重经过训练以最小化平方误差

pscrn

控制是否使用预筛选神经网络来决定 哪些像素应由预测器神经网络处理,哪些可以通过简单的三次插值处理。 预筛选器经过训练判断三次插值是否足够处理像素,或者是否需要预测器处理。 预筛选器的计算复杂度远低于预测器。由于大多数像素可以通过三次插值处理, 使用预筛选器通常会显著提高处理速度。 预筛选器非常精确,因此使用与不使用之间的差异几乎总是察觉不到的。

可以是以下之一:

none
original
new
new2
new3

默认值是new.

32.175.1 命令

此滤镜支持与选项相同的命令,除权重选项外。

32.176 noformat

强制libavfilter不使用指定的像素格式作为下一个滤镜的输入。

它接受以下参数:

pix_fmts

以'|'分隔的像素格式名称列表,例如 pix_fmts=yuv420p|monow|rgb24"。

32.176.1 示例

  • 强制libavfilter使用与yuv420p不同的格式作为 vflip滤镜的输入:
    noformat=pix_fmts=yuv420p,vflip
    
  • 将输入视频转换为不包含在列表中的任何格式:
    noformat=yuv420p|yuv444p|yuv410p
    

32.177 噪声

在视频输入帧中添加噪声。

该滤镜接受以下选项:

all_seed
c0_seed
c1_seed
c2_seed
c3_seed

设置特定像素组件或所有像素组件的噪声种子, 对于all_seed。默认值是123457.

all_strength, alls
c0_strength, c0s
c1_strength, c1s
c2_strength, c2s
c3_strength, c3s

设置特定像素组件或所有像素组件的噪声强度, 对于all_strength。默认值是0。允许范围为[0, 100]。

all_flags, allf
c0_flags, c0f
c1_flags, c1f
c2_flags, c2f
c3_flags, c3f

设置像素组件标志或为所有组件设置标志, 如果all_flags。 组件标志的可用值为:

a

平均时间噪声(更平滑)

p

将随机噪声与(半)规则图案混合

t

时间噪声(噪声图案在帧之间变化)

u

均匀噪声(否则为高斯噪声)

32.177.1 示例

向输入视频添加时间和均匀噪声:

noise=alls=20:allf=t+u

32.178 归一化

归一化RGB视频(即直方图拉伸,对比度拉伸)。 参见:https://en.wikipedia.org/wiki/Normalization_(image_processing)

对于每帧的每个通道,滤镜计算输入范围并将其线性映射至用户指定的输出范围。 输出范围默认为从纯黑到纯白的全动态范围。

可以对输入范围使用时间平滑,以减少小黑点或亮点 进入或离开场景时造成的闪烁(亮度的快速变化)。 这类似于摄像机上的自动曝光(自动增益控制),并且如同视频摄像机一样, 可能会导致视频的过度或不足曝光。

可以对R、G、B通道独立进行归一化,这可能会导致颜色偏移, 或者链接为单个通道以防止颜色偏移。链接归一化保留色相。 独立归一化不会保留色相,因此可用于移除一些颜色偏差。 独立和链接归一化可以以任何比例组合。

归一化滤镜接受以下选项:

blackpt
whitept

定义输出范围的颜色。最小输入值被映射到blackpt。 最大输入值映射到whitept。 默认值分别是黑色和白色。指定为blackpt的白色和为whitept的黑色将生成颜色反转的归一化视频。 使用灰色可以减少动态范围(对比度)。 在此处指定饱和的颜色可以创建一些有趣的效果。

smoothing

前一帧用于时间平滑的数量。每通道的输入范围使用当前帧和smoothing前一帧的滚动平均值平滑。 默认值为0(没有时间平滑)。

independence

控制独立(颜色偏移)通道归一化与链接(颜色保留)归一化的比例。 0.0是完全链接,1.0是完全独立。默认为1.0(完全独立)。

strength

滤镜的总体强度。1.0是最大强度。0.0是较昂贵的无操作。 默认为1.0(最大强度)。

32.178.1 命令

此滤镜支持与选项相同的命令,除时间平滑(smoothing)选项外。 该命令接受与相应选项相同的语法。

如果指定的表达式无效,则保持其当前值。

32.178.2 示例

将视频对比度拉伸到使用全动态范围,没有时间平滑;是否闪烁取决于源内容:

normalize=blackpt=black:whitept=white:smoothing=0

与上面相同,但具有50帧时间平滑;闪烁应减少,视源内容而定:

normalize=blackpt=black:whitept=white:smoothing=50

与上面相同,但具有保色相的链接通道归一化:

normalize=blackpt=black:whitept=white:smoothing=50:independence=0

与上面相同,但只施加一半强度:

normalize=blackpt=black:whitept=white:smoothing=50:independence=0:strength=0.5

将最暗的输入颜色映射到红色,将最亮的输入颜色映射到青色:

normalize=blackpt=red:whitept=cyan

32.179 空操作

将视频源未更改地传递到输出。

32.180 光学字符识别

光学字符识别

此滤镜使用Tesseract进行光学字符识别。要启用此滤镜的编译, 需要通过以下配置与FFmpeg一起安装:--enable-libtesseract.

它接受以下选项:

datapath

设置tesseract数据的路径。默认使用安装时设置的路径。

language

设置语言,默认是"eng"。

whitelist

设置字符白名单。

blacklist

设置字符黑名单。

滤镜将识别的文本作为帧元数据导出lavfi.ocr.text。 滤镜将识别的单词的置信度作为帧元数据导出lavfi.ocr.confidence.

32.181 OpenCV

使用libopencv应用视频变换。

要启用此滤镜,请安装libopencv库和头文件, 并通过以下方式配置FFmpeg:--enable-libopencv.

它接受以下参数:

filter_name

要应用的libopencv滤镜的名称。

filter_params

传递给libopencv滤镜的参数。如果未指定,则假定默认值。

有关更精确的信息,请参考官方libopencv文档:http://docs.opencv.org/master/modules/imgproc/doc/filtering.html

支持多种libopencv滤镜;请参阅以下子章节。

32.181.1 膨胀

通过使用特定结构元素对图像进行膨胀。 它对应于libopencv函数cvDilate.

它接受以下参数:结构元素|迭代次数.

结构元素表示结构元素,并具有以下语法:x+锚点Xx锚点Y/形状

表示结构元素的列和行数量,锚点X锚点Y为锚点,形状为结构元素的形状。形状必须是"矩形"、"交叉"、"椭圆"或"自定义"。

如果形状的值为"自行定义",后面必须跟一个 形式为"=文件名"的字符串。名称为文件名的文件假定代表一个二进制图像,每个 可打印字符对应一个亮像素。当使用自定义形状时,将被忽略,而假定使用读入文件的列和行数量。

结构元素的默认值为"3x3+0x0/矩形"。 is "3x3+0x0/rect".

迭代次数指定对图像应用变换的次数,默认为1。

一些示例:

# Use the default values
ocv=dilate

# Dilate using a structuring element with a 5x5 cross, iterating two times
ocv=filter_name=dilate:filter_params=5x5+2x2/cross|2

# Read the shape from the file diamond.shape, iterating two times.
# The file diamond.shape may contain a pattern of characters like this
#   *
#  ***
# *****
#  ***
#   *
# The specified columns and rows are ignored
# but the anchor point coordinates are not
ocv=dilate:0x0+2x2/custom=diamond.shape|2

32.181.2 腐蚀

通过使用特定结构元素对图像进行腐蚀。 它对应于libopencv函数cvErode.

它接受以下参数:结构元素:迭代次数, 与膨胀滤镜具有相同的语法和语义。

32.181.3 平滑

平滑输入视频。

该滤镜接受以下参数:类型|参数1|参数2|参数3|参数4.

类型是要应用的平滑滤镜类型,必须是以下值之一:"模糊"、"不缩放模糊"、"中值"、"高斯", 或"双边"。默认值是"高斯"。

参数参数1, 参数2, 参数3参数4的意义因平滑类型而异。参数1参数2接受正整数或0。参数3参数4接受浮点值。

参数1的默认值为3。 其他参数的默认值为0。 is 3. The default value for the other parameters is 0.

这些参数对应于libopencv函数的参数cvSmooth.

32.182 示波器

2D 视频示波器。

适用于测量空间冲击、阶跃响应、色度延迟等。

它接受以下参数:

x

设置瞄准中心的x位置。

y

设置瞄准中心的y位置。

s

设置瞄准尺寸,相对于框架对角线。

t

设置瞄准的倾斜/旋转。

o

设置轨迹的不透明度。

tx

设置轨迹中心的x位置。

ty

设置轨迹中心的y位置。

tw

设置轨迹宽度,相对于框架宽度。

th

设置轨迹高度,相对于框架高度。

c

设置要追踪的组件。默认情况下它追踪前三个组件。

g

绘制轨迹网格。默认情况下是启用的。

st

绘制一些统计信息。默认情况下是启用的。

sc

绘制瞄准器。默认情况下是启用的。

32.182.1 命令

此过滤器支持与选项相同的命令。该命令接受与相应选项相同的语法。

如果指定的表达式无效,它将保持当前值。

32.182.2 示例

  • 检查视频帧的整行第一行。
    oscilloscope=x=0.5:y=0:s=1
    
  • 检查视频帧的整行最后一行。
    oscilloscope=x=0.5:y=1:s=1
    
  • 检查高度为1080的视频帧的完整第五行。
    oscilloscope=x=0.5:y=5/1080:s=1
    
  • 检查视频帧的整列最后一列。
    oscilloscope=x=1:y=0.5:s=1:t=1
    

32.183 叠加

将一个视频叠加到另一个视频之上。

它需要两个输入并生成一个输出。第一个输入被称为“主”视频,第二个输入叠加在其上。

它接受以下参数:

以下是支持的选项说明。

x
y

设置叠加视频在主视频上x和y坐标的表达式。默认值是“0”对于两个表达式。如果表达式无效,则设置为一个巨大的值(表示叠加不会显示在输出可见区域内)。

eof_action

参见framesync.

eval

设置xy表达式的计算时间。

它接受以下值:

init

仅在过滤器初始化或处理命令时评估表达式。

frame

为每个输入帧评估表达式。

默认值是‘frame’.

shortest

参见framesync.

format

设置输出视频的格式。

它接受以下值:

yuv420

强制使用YUV 4:2:0 8位平面输出。

yuv420p10

强制使用YUV 4:2:0 10位平面输出。

yuv422

强制使用YUV 4:2:2 8位平面输出。

yuv422p10

强制使用YUV 4:2:2 10位平面输出。

yuv444

强制使用YUV 4:4:4 8位平面输出。

yuv444p10

强制使用YUV 4:4:4 10位平面输出。

rgb

强制使用RGB 8位打包输出。

gbrp

强制使用RGB 8位平面输出。

auto

自动选择格式。

默认值是‘yuv420’.

repeatlast

参见framesync.

alpha

设置叠加视频透明的格式,可以是直接预乘。默认值是直接.

The xy表达式可以包含以下参数。

main_w, W
main_h, H

主输入的宽度和高度。

overlay_w, w
overlay_h, h

叠加输入的宽度和高度。

x
y

计算的xy值。它们是针对每个新帧计算的。

hsub
vsub

输出格式的水平和垂直色度子采样值。例如,对于像素格式“yuv422p”hsub是2,vsub是1。

n

输入帧的序号,从0开始。

pos

输入帧在文件中的位置,未知则为NAN。

t

时间戳,以秒为单位。如果输入时间戳未知,则为NAN。

此过滤器还支持framesync选项。

请注意,n, t变量仅在评估时可用每帧,并且在eval设置为‘init’.

时将评估为NAN。setpts=PTS-STARTPTS filter to have them begin in the same zero timestamp, as the example for the movie filter does.

您可以将多个叠加连接在一起,但应该测试此方法的效率。

32.183.1 命令

此过滤器支持以下命令:

x
y

修改叠加输入的x和y值。命令接受与相应选项相同的语法。

如果指定的表达式无效,它将保持当前值。

32.183.2 示例

  • 在主视频的右下角10像素处绘制叠加:
    overlay=main_w-overlay_w-10:main_h-overlay_h-10
    

    使用命名选项,上例变为:

    overlay=x=main_w-overlay_w-10:y=main_h-overlay_h-10
    
  • 在输入的左下角插入一个透明的PNG徽标,使用ffmpeg工具及其-filter_complex选项:
    ffmpeg -i input -i logo -filter_complex 'overlay=10:main_h-overlay_h-10' output
    
  • 使用ffmpeg工具插入2个不同的透明PNG徽标(第二个徽标放在右下角):
    ffmpeg -i input -i logo1 -i logo2 -filter_complex 'overlay=x=10:y=H-h-10,overlay=x=W-w-10:y=H-h-10' output
    
  • 在主视频顶部添加一个透明的彩色层;WxH必须指定叠加过滤器的主输入的尺寸:
    color=color=red@.3:size=WxH [over]; [in][over] overlay [out]
    
  • 并排播放一个原始视频和一个过滤版视频(这里使用稳定过滤器):ffplay工具:
    ffplay input.avi -vf 'split[a][b]; [a]pad=iw*2:ih[src]; [b]deshake[filt]; [src][filt]overlay=w'
    

    上述命令的另一个表达方式是:

    ffplay input.avi -vf 'split[b], pad=iw*2[src], [b]deshake, [src]overlay=w'
    
  • 制作一个滑动叠加,从屏幕顶部的左侧到右侧出现,从第2秒开始:
    overlay=x='if(gte(t,2), -w+(t-2)*20, NAN)':y=0
    
  • 通过将两个输入视频并排放置来合成输出:
    ffmpeg -i left.avi -i right.avi -filter_complex "
    nullsrc=size=200x100 [background];
    [0:v] setpts=PTS-STARTPTS, scale=100x100 [left];
    [1:v] setpts=PTS-STARTPTS, scale=100x100 [right];
    [background][left]       overlay=shortest=1       [background+left];
    [background+left][right] overlay=shortest=1:x=100 [left+right]
    "
    
  • 通过将去徽标过滤器应用于一个部分来遮罩视频的10-20秒部分。
    ffmpeg -i test.avi -codec:v:0 wmv2 -ar 11025 -b:v 9000k
    -vf '[in]split[split_main][split_delogo];[split_delogo]trim=start=360:end=371,delogo=0:0:640:480[delogoed];[split_main][delogoed]overlay=eof_action=pass[out]'
    masked.avi
    
  • 链式多个叠加:
    nullsrc=s=200x200 [bg];
    testsrc=s=100x100, split=4 [in0][in1][in2][in3];
    [in0] lutrgb=r=0, [bg]   overlay=0:0     [mid0];
    [in1] lutrgb=g=0, [mid0] overlay=100:0   [mid1];
    [in2] lutrgb=b=0, [mid1] overlay=0:100   [mid2];
    [in3] null,       [mid2] overlay=100:100 [out0]
    

32.184 overlay_cuda

将一个视频叠加到另一个视频之上。

这是叠加过滤器的CUDA版本。它仅接受CUDA帧。两个输入的底层像素格式必须一致。

它需要两个输入并生成一个输出。第一个输入被称为“主”视频,第二个输入叠加在其上。

它接受以下参数:

x
y

设置叠加视频在主视频上的x和y坐标的表达式。

它们可以包含以下参数:

main_w, W
main_h, H

主输入的宽度和高度。

overlay_w, w
overlay_h, h

叠加输入的宽度和高度。

x
y

计算的xy值。它们是针对每个新帧计算的。

n

主输入帧的序号,从0开始。

pos

主输入帧在文件中的字节偏移位置,未知则为NAN。已弃用,请勿使用。

t

主输入帧的时间戳,以秒为单位,未知则为NAN。

两个表达式的默认值为“0”。

eval

设置xy表达式的评估时间。

它接受以下值:

init

在过滤器初始化或处理命令时评估表达式。

frame

为每个输入帧评估表达式。

默认值为frame.

eof_action

参见framesync.

shortest

参见framesync.

repeatlast

参见framesync.

此过滤器还支持framesync选项。

32.185 owdenoise

应用过完备小波降噪。

滤波器接受以下选项:

depth

设置深度。

更大的深度值将更多地降噪低频分量,但会减慢过滤速度。

必须是范围8-16中的int值,默认值为8.

luma_strength, ls

设置亮度强度。

必须是范围0-1000中的double值,默认值为1.0.

chroma_strength, cs

设置色度强度。

必须是范围0-1000中的double值,默认值为1.0.

32.186 pad

向输入图像添加填充,并在提供的x, y坐标处定位原始输入。

它接受以下参数:

width, w
height, h

指定带有填充的输出图像尺寸的表达式。如果宽度高度的值为0,则使用输入尺寸作为输出尺寸。

The 宽度表达式可以引用由高度表达式设置的值,反之亦然。

The default value of 宽度高度的默认值为0。

x
y

指定偏移量以在填充区域内定位输入图像,相对于输出图像的顶部/左侧边界。

The x表达式可以引用由y表达式设置的值,反之亦然。

The default value of xy的默认值为0。

如果xy评估为负数,它们将被更改,使输入图像居于填充区域的中心。

color

指定填充区域的颜色。有关此选项的语法,请参考ffmpeg-utils手册中"颜色"部分.

The default value of 颜色的默认值是"黑色"。

eval

指定何时评估宽度, 高度, xy表达式。

它接受以下值:

init

仅在过滤器初始化或处理命令时评估表达式。

frame

为每个输入帧评估表达式。

默认值是‘init’.

aspect

以比例填充而非分辨率填充。

The value for the 宽度, 高度, xy选项值是包含以下常量的表达式:

in_w
in_h

输入视频的宽度和高度。

iw
ih

这些与in_win_h.

out_w
out_h

输出的宽度和高度(填充区域的大小),由宽度高度表达式指定。

ow
oh

这些与out_wout_h.

x
y

xy表达式指定的x和y偏移量,或者还未指定为NAN。

a

等于iw / ih

sar

输入的样本宽高比。

dar

输入的显示宽高比,与(iw / ih) * sar

hsub
vsub

水平和垂直色度子采样值。例如对于像素格式“yuv422p”,hsub是2,vsub是1。

32.186.1 示例

  • 为输入视频添加颜色为“紫罗兰色”的填充。输出视频的大小为640x480,输入视频的左上角位于第0列、第40行。
    pad=640:480:0:40:violet
    

    以上示例相当于以下命令:

    pad=width=640:height=480:x=0:y=40:color=violet
    
  • 为输入视频添加填充,以使输出的尺寸增加到原来的3/2,并将输入视频放在填充区域的中心。
    pad="3/2*iw:3/2*ih:(ow-iw)/2:(oh-ih)/2"
    
  • 为输入视频添加填充,以获得一个边长为输入宽度和高度最大值的方形输出,并将输入视频放在填充区域的中心。
    pad="max(iw\,ih):ow:(ow-iw)/2:(oh-ih)/2"
    
  • 为输入视频添加填充,以获得最终的宽高比为16:9的输出:
    pad="ih*16/9:ih:(ow-iw)/2:(oh-ih)/2"
    
  • 在处理宽高比异常的视频时,为了正确设置输出显示宽高比,需要在表达式中使用sar,根据以下关系:
    (ih * X / ih) * sar = output_dar
    X = output_dar / sar
    

    因此需要修改前面的示例为:

    pad="ih*16/9/sar:ih:(ow-iw)/2:(oh-ih)/2"
    
  • 将输出尺寸加倍,并将输入视频放在输出填充区域的右下角。
    pad="2*iw:2*ih:ow-iw:oh-ih"
    

32.187 palettegen

为整个视频流生成一个调色板。

它接受以下选项:

max_colors

设置调色板中需量化的最大颜色数。 注意:调色板仍然包含256种颜色;未使用的条目将是黑色。

reserve_transparent

生成最多255种颜色的调色板,并保留最后一种颜色用于透明度。保留透明度颜色对GIF优化很有用。如果未设置,调色板中的最大颜色数将为256。对于独立图像,您可能希望禁用此选项。 默认已设置。

transparency_color

设置将用于透明背景的颜色。

stats_mode

设置统计模式。

它接受以下值:

full

计算完整帧的直方图。

diff

仅计算与上一帧不同部分的直方图。如果背景是静态的,这可能有助于给输入的动态部分更高的重要性。

single

为每帧计算新的直方图。

默认值是完整.

过滤器还会导出帧元数据lavfi.color_quant_ratio (nb_color_in / nb_color_out),您可以用来评估调色板的颜色量化程度。此信息也在信息日志级别中可见。

32.187.1 示例

  • 使用ffmpeg:
    ffmpeg -i input.mkv -vf palettegen palette.png
    

32.188 paletteuse

使用调色板对输入视频流进行下采样。

过滤器需要两个输入:一个视频流和一个调色板。调色板必须是256像素图像。

它接受以下选项:

dither

选择抖动模式。可用算法包括:

bayer

有序8x8拜耳抖动(确定性)。

heckbert

由Paul Heckbert在1982年定义的抖动(简单误差扩散)。 注意:这种抖动有时被认为是“错误的”,被作为参考包含在内。

floyd_steinberg

Floyd和Steingberg抖动(误差扩散)

sierra2

Frankie Sierra v2抖动(误差扩散)

sierra2_4a

Frankie Sierra v2抖动“Lite”版(误差扩散)

sierra3

Frankie Sierra v3抖动(误差扩散)

burkes

Burkes抖动(误差扩散)

atkinson

由Apple公司的Bill Atkinson提出的Atkinson抖动(误差扩散)

none

禁用抖动。

默认值为sierra2_4a.

bayer_scale

bayer抖动被选中时,此选项定义了图案的比例(交叉网纹图案的可见度)。较低的值意味着图案更可见以减少条带效应,而较高的值则减少图案的可见性但可能增加条带效应。

选项必须是范围[0,5]内的整数值。默认值为2.

diff_mode

如果设置,定义需要处理的区域

rectangle

只有变化的矩形部分会被重新处理。这类似于GIF裁剪/偏移压缩机制。如果仅图像的一部分发生变化,此选项对于提速非常有用,并且在限制误差扩散范围的用例中,例如对移动场景的边界矩形进行限制,这会使输出更具确定性,如果场景变化不大,则能减少移动噪点并获得更好的GIF压缩。dither

默认值为none.

new

为每个输出帧采用新的调色板。

alpha_threshold

设置用于透明度的alpha阈值。高于此阈值的alpha值将被视为完全不透明,低于此阈值的alpha值将被视为完全透明。

选项必须是范围[0,255]内的整数值。默认值为128.

32.188.1 示例

  • 使用调色板(例如通过palettegen生成)来编码GIFffmpeg:
    ffmpeg -i input.mkv -i palette.png -lavfi paletteuse output.gif
    

32.189 视角

校正未以屏幕垂直方向录制的视频的视角。

以下是接受的参数描述。

x0
y0
x1
y1
x2
y2
x3
y3

设置左上、右上、左下和右下角的坐标表达式。默认值为0:0:W:0:0:H:W:H视角保持不变。如果sense选项被设置为source,则指定的点将被发送到目标的角点。如果sense选项被设置为destination,则源的角点将被发送到指定的坐标。

表达式可以使用以下变量:

W
H

视频帧的宽度和高度。

in

输入帧计数。

on

输出帧计数。

interpolation

设置视角校正的插值。

它接受以下值:

linear
cubic

默认值为“linear’.

sense

设置坐标选项的解释方式。

它接受以下值:

0, source

发送源中给定坐标的点到目标的角点。

1, destination

将源的角点发送到目标中指定坐标点。

默认值为“source’.

eval

设置何时计算坐标表达式x0,y0,...x3,y3

它接受以下值:

init

仅在滤镜初始化或处理命令时计算表达式一次

frame

为每个传入帧计算表达式

默认值为“init’.

32.190 相位

延迟隔行视频的一个字段时间,以改变字段顺序。

目的用于修复以与电影到视频传输相反的字段顺序捕获的PAL电影。

以下是接受的参数描述。

mode

设置相位模式。

它接受以下值:

t

捕获字段顺序为顶部优先,传输底部优先。 滤镜将延迟底部字段。

b

捕获字段顺序为底部优先,传输顶部优先。 滤镜将延迟顶部字段。

p

捕获和传输具有相同字段顺序。此模式仅用于参考其他选项的文档,但如果实际选择它,滤镜将忠实执行“无操作”。

a

捕获字段顺序由字段标志自动确定,传输相反。 滤镜在逐帧的基础上使用字段标志从‘t’和‘b’模式中选择。如果没有字段信息可用,则它只是以‘u’.

u

捕获未知或变化,传输相反。 滤镜在逐帧的基础上通过分析图像选择‘t’和‘b’中产生字段最佳匹配的替代方案。

T

捕获顶部优先,传输未知或变化。 滤镜通过图像分析选择‘t’和‘p’。

B

捕获底部优先,传输未知或变化。 滤镜通过图像分析选择‘b’和‘p’。

A

捕获由字段标志确定,传输未知或变化。 滤镜使用字段标志和图像分析选择‘t’, ‘b’和‘p’。如果没有字段信息可用,则以‘U’方式工作。这是默认模式。

U

捕获和传输均未知或变化。 滤镜仅通过图像分析选择‘t’, ‘b’和‘p’。

32.190.1 命令

此滤镜支持所有上述选项作为命令.

32.191 光感减少

减少视频中的各种闪光,以帮助癫痫患者。

它接受以下选项:

frames, f

设置过滤时使用的帧数。默认值为30。

threshold, t

设置检测阈值因子。默认值为1。 值越低越严格。

skip

设置采样帧时跳过的像素数。默认值为1。 允许范围为1到1024。

bypass

保持帧不变。默认是禁用。

32.192 pixdesctest

像素格式描述符测试滤镜,主要用于内部测试。输出视频应该等于输入视频。

例如:

format=monow, pixdesctest

可用于测试monowhite像素格式描述符定义。

32.193 像素化

对视频流应用像素化。

滤镜接受以下选项:

width, w
height, h

设置用于像素化的块尺寸。 默认值为16.

mode, m

设置使用的像素化模式。

可能的值为:

avg
min
max

默认值为avg.

planes, p

设置要过滤的平面。默认是过滤所有平面。

32.193.1 命令

此滤镜支持所有选项作为命令.

32.194 pixscope

显示颜色通道的采样值。主要用于检查颜色和水平。最低支持分辨率为640x480。

滤镜接受以下选项:

x

设置示波器X位置,相对于X轴的偏移。

y

设置示波器Y位置,相对于Y轴的偏移。

w

设置示波器宽度。

h

设置示波器高度。

o

设置窗口不透明度。此窗口还包含像素区域的统计信息。

wx

设置窗口X位置,相对于X轴的偏移。

wy

设置窗口Y位置,相对于Y轴的偏移。

32.194.1 命令

此滤镜支持与选项相同的命令

32.195 pp

启用指定的后处理子滤镜链,使用libpostproc库。 如果是GPL构建(--enable-gpl),库会自动选择。 子滤镜必须用“/”分隔,并可通过前置“-”禁用。 每个子滤镜和一些选项都有短名称和长名称,可以互换使用,例如dr/dering是相同的。

滤镜接受以下选项:

subfilters

设置后处理子滤镜字符串。

所有子滤镜共享常见选项,以确定其范围:

a/autoq

为此子滤镜遵守质量命令。

c/chrom

同时进行色度过滤(默认)。

y/nochrom

仅进行亮度过滤(不含色度)。

n/noluma

仅进行色度过滤(不含亮度)。

这些选项可在子滤镜名称后附加,用“|”分隔。

可用的子滤镜包括:

hb/hdeblock[|difference[|flatness]]

水平去块滤镜

difference

差异因子,值越高表示更强的去块效果(默认:32).

flatness

平坦度阈值,值越低表示更强的去块效果(默认:39).

vb/vdeblock[|difference[|flatness]]

垂直去块滤镜

difference

差异因子,值越高表示更强的去块效果(默认:32).

flatness

平坦度阈值,值越低表示更强的去块效果(默认:39).

ha/hadeblock[|difference[|flatness]]

精确的水平去块滤镜

difference

差异因子,值越高表示更强的去块效果(默认:32).

flatness

平坦度阈值,值越低表示更强的去块效果(默认:39).

va/vadeblock[|difference[|flatness]]

精确的垂直去块滤镜

difference

差异因子,值越高表示更强的去块效果(默认:32).

flatness

平坦度阈值,值越低表示更强的去块效果(默认:39).

水平和垂直去块滤镜共享差异和平坦值,因此无法设置不同的水平和垂直阈值。

h1/x1hdeblock

实验性水平去块滤镜

v1/x1vdeblock

实验性垂直去块滤镜

dr/dering

去环滤镜

tn/tmpnoise[|threshold1[|threshold2[|threshold3]]], temporal noise reducer
threshold1

值越大->滤波越强

threshold2

值越大->滤波越强

threshold3

值越大->滤波越强

al/autolevels[:f/fullyrange], automatic brightness / contrast correction
f/fullyrange

将亮度拉伸到0-255.

lb/linblenddeint

线性混合隔行扫描滤镜,通过过滤所有行以(1 2 1)滤波方式去隔行扫描指定的块。

li/linipoldeint

线性插值隔行扫描滤镜,通过线性插值每隔一行去隔行扫描指定的块。

ci/cubicipoldeint

三次插值隔行扫描滤镜,通过立方插值去隔行扫描指定的块。

md/mediandeint

中值隔行扫描滤镜,通过对每隔一行应用中值滤波去隔行扫描指定的块。

fd/ffmpegdeint

FFmpeg隔行扫描滤镜,通过对每隔一行应用(-1 4 2 4 -1)滤波方式去隔行扫描指定的块。

l5/lowpass5

按照垂直方向应用FIR低通滤波器,通过对所有行应用(-1 2 6 2 -1)滤波方式去隔行扫描指定的块。

fq/forceQuant[|quantizer]

用您指定的常量量化器覆盖输入中的量化器表。

quantizer

要使用的量化器

de/default

默认后处理滤镜组合(hb|a,vb|a,dr|a)

fa/fast

快速后处理滤镜组合(h1|a,v1|a,dr|a)

ac

高质量后处理滤镜组合(ha|a|128|7,va|a,dr|a)

32.195.1 示例

  • 应用水平和垂直去块、去环和自动亮度/对比度:
    pp=hb/vb/dr/al
    
  • 应用默认滤镜但不进行亮度/对比度校正:
    pp=de/-al
    
  • 应用默认滤镜和时间降噪器:
    pp=default/tmpnoise|1|2|3
    
  • 仅在亮度上进行去块,并根据可用的CPU时间自动打开或关闭垂直去块:
    pp=hb|y/vb|a
    

32.196 pp7

应用后处理滤镜7。这是spp滤镜的变体,类似于spp = 6的7点DCT,其中仅使用IDCT后的中心样本。

滤镜接受以下选项:

qp

强制使用常量量化参数。可接受范围为0到63的整数。如果未设置,滤镜将使用视频流中的QP(如果可用)。

mode

设置阈值模式。可用模式为:

hard

设置硬阈值。

soft

设置软阈值(更好的去环效果,但可能会更模糊)。

medium

设置中等阈值(效果良好,默认)。

32.197 预乘

对输入视频流应用alpha预乘效果,使用第二个流的第一平面作为alpha。

两个流必须具有相同的尺寸和像素格式。

滤镜接受以下选项:

planes

设置将处理哪些平面,未处理的平面将被直接复制。 默认值为0xf,所有平面都会被处理。

inplace

无需使用第二个输入进行处理,而是直接使用输入流的alpha平面。

32.198 prewitt

对输入视频流应用Prewitt算子。

滤镜接受以下选项:

planes

设置将处理哪些平面,未处理的平面将被直接复制。 默认值为0xf,所有平面都会被处理。

scale

设置将与过滤结果相乘的值。

delta

设置将添加到筛选结果的值。

32.198.1 命令

此过滤器支持上述所有选项,如下所示命令.

32.199 伪彩色

使用伪彩色修改视频帧颜色。

此过滤器接受以下选项:

c0

设置像素第一分量表达式

c1

设置像素第二分量表达式

c2

设置像素第三分量表达式

c3

设置像素第四分量表达式,对应于 alpha 分量

index, i

设置用于更改颜色的基准分量

preset, p

选择内置的查找表 (LUT) 之一。默认设置为无。

可用的 LUTs:

magma
inferno
plasma
viridis
turbo
cividis
range1
range2
shadows
highlights
solar
nominal
preferred
total
spectral
cool
heat
fiery
blues
green
helix
opacity

设置输出颜色的不透明度。允许范围为 0 到 1。 默认值为 1。

每个表达式选项指定用于计算对应像素分量值的查找表的表达式。

表达式可以包含以下常量和函数:

w
h

输入的宽度和高度。

val

像素分量的输入值。

ymin, umin, vmin, amin

允许的最小分量值。

ymax, umax, vmax, amax

允许的最大分量值。

所有表达式的默认值为 "val"。

32.199.1 命令

此过滤器支持上述所有选项,如下所示命令.

32.199.2 示例

  • 将亮度值过高部分更改为渐变:
    pseudocolor="'if(between(val,ymax,amax),lerp(ymin,ymax,(val-ymax)/(amax-ymax)),-1):if(between(val,ymax,amax),lerp(umax,umin,(val-ymax)/(amax-ymax)),-1):if(between(val,ymax,amax),lerp(vmin,vmax,(val-ymax)/(amax-ymax)),-1):-1'"
    

32.200 PSNR

获取两个输入视频之间的平均、最大和最小 PSNR(峰值信噪比)。

此过滤器接受两个输入视频,第一个输入被视为"主"源并未经改变地传递到输出。第二个输入被用作计算PSNR的"参考"视频。

两个视频输入必须具有相同的分辨率和像素格式,此过滤器才能正常工作。此外,假设两个输入具有相同的帧数,逐帧进行比较。

获得的平均 PSNR 将通过日志系统打印输出。

过滤器会存储每帧的累计 MSE(均方误差),在处理结束时将其均匀地平均处理所有帧,应用以下公式以获得 PSNR:

PSNR = 10*log10(MAX^2/MSE)

其中,MAX 是图像每个分量的最大值的平均值。

以下为接受的参数描述。

stats_file, f

如果指定了文件名,过滤器将使用命名的文件保存每帧的 PSNR。当文件名为 "-" 时,数据将发送至标准输出。

stats_version

指定要使用的统计文件格式版本。每种格式的详细信息如下。 默认值为 1。

stats_add_max

确定最大值是否输出到统计日志。 默认值为 0。 要求 stats_version >= 2。如果设置此值且 stats_version < 2,过滤器将返回错误。

此过滤器还支持framesync选项。

如果选择了stats_file,则输出的文件包含一系列 键/值对,格式为:,每对帧比较一次。

如果stats_version大于 1,则在每帧比较统计列表之前,会有一行头部信息,按帧格式显示键值对,包含以下参数:

psnr_log_version

日志文件格式的版本,将匹配stats_version.

fields

逗号分隔的每对帧参数在日志中显示。

以下是每对帧参数的描述:

n

输入帧的连续编号,从1开始

mse_avg

逐像素均方误差,表示比较帧的平均差异值,取所有图像分量的平均值。

mse_y, mse_u, mse_v, mse_r, mse_g, mse_b, mse_a

逐像素均方误差,表示比较帧中指定分量(由后缀指定)的平均差异值。

psnr_y, psnr_u, psnr_v, psnr_r, psnr_g, psnr_b, psnr_a

指定分量(由后缀指定)的比较帧的峰值信噪比。

max_avg, max_y, max_u, max_v

每个通道的最大允许值,以及所有通道的平均值。

32.200.1 示例

  • 例如:
    movie=ref_movie.mpg, setpts=PTS-STARTPTS [main];
    [main][ref] psnr="stats_file=stats.log" [out]
    

    在此示例中,待处理的输入文件与参考文件ref_movie.mpg对比。每帧的PSNR存储在stats.log.

  • 另一个不同容器的示例:
    ffmpeg -i main.mpg -i ref.mkv -lavfi  "[0:v]settb=AVTB,setpts=PTS-STARTPTS[main];[1:v]settb=AVTB,setpts=PTS-STARTPTS[ref];[main][ref]psnr" -f null -
    

32.201 pullup

反向转换(逆变换)过滤器,可处理混合硬电信变频器、24000/1001 fps 进度和30000/1001 fps进度的内容。

pullup 过滤器设计为利用未来的上下文来做出判断。此滤镜是无状态的,它不会锁定到某一模式,而是向前查看后续字段,尝试找到匹配项并重建进度帧。

为生成具有恒定帧速率的内容,请在 pullup 之后插入 fps 滤镜,当输入帧速率为29.97fps时,请使用fps=24000/1001,当输入帧速率为30fps或罕见的电信变25fps时,使用fps=24

此过滤器接受以下选项:

jl
jr
jt
jb

这些选项分别设置图像左、右、顶部和底部要忽略的 "无意义" 范围量。左和右以8像素为单位,顶部和底部以2行为单位。 默认每一侧忽略8个像素。

sb

设置严格断点。将此选项设置为1将减少过滤器生成偶尔失配帧的概率,但在高运动场景下也可能导致大量帧丢弃。 相反,设置为-1将使过滤器更容易匹配字段。这可能有助于处理轻微模糊的字段间的视频,但也可能导致输出中出现交错帧。 默认值为0.

mp

设置要使用的度量平面。接受以下值:

l

使用亮度(luma)平面。

u

使用蓝色(chroma blue)平面。

v

使用红色(chroma red)平面。

此选项可以设置使用色度平面代替默认的亮度平面进行过滤计算。 这可能在非常干净的源素材上提高精度,但更可能降低精度,特别是如果有色度噪声(如彩虹效应)或任何灰度视频。 设置mp为色度平面的主要目的是降低CPU负载,使pullup在慢速机器上可实时使用。

为了获得最佳结果(输出文件中没有重复帧),有必要更改输出帧速率。例如,要逆转换NTSC输入:

ffmpeg -i input -vf pullup -r 24000/1001 ...

32.202 qp

更改视频量化参数(QP)。

此过滤器接受以下选项:

qp

为量化参数设置表达式。

表达式通过 eval API 进行计算,并可包含(但不限于)以下常量:

known

如果索引不是129,则值为1,否则为0。

qp

从-129到128的序列索引。

32.202.1 示例

  • 类似于以下的方程式:
    qp=2+2*sin(PI*qp)
    

32.203 qrencode

使用 libqrencode 库生成二维码(参见https://fukuchi.org/works/qrencode/),并将其叠加在当前帧上。

要启用此滤镜的编译,需使用以下方式配置 FFmpeg--enable-libqrencode.

二维码是根据所提供的文本或文本模式生成的。 生成的二维码经过缩放后被根据指定选项叠加到视频输出中。

如果没有指定文本,则不会叠加二维码。

此过滤器接受以下选项:

qrcode_width, q
padded_qrcode_width, Q

为渲染二维码的宽度(有无填充)指定表达式。qrcode_width表达式可以引用由padded_qrcode_width表达式设置的值,反之亦然。 默认情况下,padded_qrcode_width设置为qrcode_width,即没有填充。

这些表达式会针对每帧新帧进行计算。

请参阅qrencode 表达式一节了解详细内容。

x
y

为填充二维码左上角的位置指定表达式。x表达式可以引用由y表达式设置的值,反之亦然。

默认情况下,xy设置为0,这意味着二维码放置在输入的左上角。

这些表达式会针对每帧新帧进行计算。

请参阅qrencode 表达式一节了解详细内容。

case_sensitive, cs

指示 libqrencode 使用区分大小写的编码。这默认启用。可以禁用此选项以减小二维码的编码大小。

level, l

指定二维码的错误纠正级别。较高的纠错级别会增加编码大小,但代码将更耐破坏。 最低级别为L.

它接受以下值:

L
M
Q
H
expansion

选择输入文本如何扩展。可以是none,或normal(默认值)。请参阅qrencode 文本扩展部分了解详情。

text
textfile

定义要渲染的文本。如果未指定任何内容,则不编码二维码(仅显示一个空白的彩色帧)。

如果启用扩展,文本将被视为文本模板,使用 qrencode 的扩展机制处理。参见qrencode 文本扩展部分了解详情。

background_color, bc
foreground_color, fc

设置二维码和背景色。默认foreground_color为"黑色",默认background_color为"白色"。

有关颜色选项的语法,请检查(ffmpeg-utils)"颜色" 部分,位于 ffmpeg-utils 手册中.

32.203.1 qrencode 表达式

选项设置的表达式中包含以下常量和函数。

dar

输入显示宽高比,即等于 (w / h) * sar

duration

当前帧的持续时间,以秒为单位

hsub
vsub

水平和垂直色度子采样值。例如,对于像素格式"yuv422p"hsub为2,而vsub为1。

main_h, H

输入高度

main_w, W

输入宽度

n

输入帧数,从0开始

pict_type

表示图片类型的编号

qr_w, w

编码二维码的宽度

rendered_qr_w, q
rendered_padded_qr_w, Q

渲染二维码的宽度(有无填充)。

这些参数允许qQ表达式互相引用,所以您可以例如指定q=3/4*Q.

rand(min, max)

返回一个介于minmax

sar

输入采样比例

t

以秒表示的时间戳,如果输入时间戳未知,则为 NAN

x
y

绘制文字的 x 和 y 偏移坐标。

这些参数允许xy表达式互相引用,因此您可以例如指定y=x/dar.

32.203.2 qrencode 文本扩展

如果expansion设置为none,文本将被逐字显示。

如果expansion设置为normal(默认值), 以下扩展机制将被使用。

反斜杠字符‘\’,后跟任何字符,总是扩展为第二个字符。

形式为%{...}的序列将被扩展。花括号中的文本为函数名,可能后跟用重复号 ’:’分隔的参数。 如果参数包含特殊字符或分隔符(’:’或 ’}’),需要进行转义。

注意它们可能还必须在text选项作为参数字符串值时、在过滤器图描述的过滤器参数中、以及可能在 shell 中进行四层转义;使用包含textfile选项的文本文件可避免这些问题。

提供以下函数:

n, frame_num

返回帧编号

pts

返回当前帧的显示时间戳

它可以最多接受两个参数。

第一个参数是时间戳的格式;默认为flt表示以秒为单位的小数格式,具有微秒精度;hms表示格式化[-]HH:MM:SS.mmm带有毫秒精度的时间戳。gmtime表示帧的时间戳格式化为UTC时间;localtime表示帧的时间戳格式化为本地时区时间。如果格式设置为hms24hh,时间将以24小时制(00-23)格式化。

第二个参数是添加到时间戳的偏移量。

如果格式设置为localtimegmtime,可以提供第三个参数:一个strftimeC函数格式字符串。默认情况下,YYYY-MM-DD HH:MM:SS格式将被使用。

expr, e

对表达式的值求值并以双精度格式输出。

它必须接收一个参数,指定要求值的表达式,并接受qrencode_expressions.

expr_formatted, ef

对表达式的值求值并以格式化字符串形式输出。

第一个参数是要求值的表达式,与expr函数相同。 第二个参数指定输出的格式。允许的值是‘x’, ‘X’, ‘d’和‘u’。它们的处理方式与printf函数完全一样。 第三个参数是可选的,设置输出占据的字符数。 可以用于从左侧用零填充。

gmtime

表达过滤器运行的时间,以UTC表示。 它可以接收一个参数:一个strftimeC函数格式字符串。 格式字符串扩展支持变量%[1-6]N,可以打印以指定数字位数表示的秒内小数部分。

localtime

表达过滤器运行的时间,以本地时区表示。 它可以接收一个参数:一个strftimeC函数格式字符串。 格式字符串扩展支持变量%[1-6]N,可以打印以指定数字位数表示的秒内小数部分。

metadata

帧元数据。需要一个或两个参数。

第一个参数是必须的,指定元数据键值。

第二个参数是可选的,指定默认值,在找不到或为空时使用。

可用元数据可以通过检查带有 `TAG` 前缀的条目来识别,它们包含在运行时打印的每个帧段中。ffprobe -show_frames.

在滤镜操作过程中生成的字符串元数据也可用。

rand(min, max)

返回一个在minmax

之间的随机数。

  • 生成一个QR码,编码指定的文本,默认大小,叠加在输入视频的左上角,默认大小:
    qrencode=text=www.ffmpeg.org
    
  • 同下,但选择蓝色和粉红色的颜色:
    qrencode=text=www.ffmpeg.org:bc=pink@0.5:fc=blue
    
  • 将QR码放置在输入视频的右下角:
    qrencode=text=www.ffmpeg.org:x=W-Q:y=H-Q
    
  • 生成一个宽度为200像素并带有边距的QR码,使填充后的宽度为QR码宽度的4/3:
    qrencode=text=www.ffmpeg.org:q=200:Q=4/3*q
    
  • 生成一个填充宽度为200像素并带有边距的QR码,使QR码宽度为填充宽度的3/4:
    qrencode=text=www.ffmpeg.org:Q=200:q=3/4*Q
    
  • 使QR码成为输入视频宽度的一部分:
    qrencode=text=www.ffmpeg.org:q=W/5
    
  • 生成一个编码帧号的QR码:
    qrencode=text=%{n}
    
  • 生成一个编码GMT时间戳的QR码:
    qrencode=text=%{gmtime}
    
  • 生成一个以浮点数表示的时间戳编码的QR码:
    qrencode=text=%{pts}
    

32.204 quirc

使用 libquirc 库识别并解码QR码(参见https://github.com/dlbeer/quirc/),并将识别的QR码位置和内容作为元数据打印。

要启用此滤镜的编译,您需要配置FFmpeg--enable-libquirc.

对于输入视频中找到的每个QR码,会添加一些带有前缀lavfi.quirc.N的元数据条目,其中N是与QR码关联的索引,从0开始。

以下是每个元数据值的说明:

lavfi.quirc.count

找到的QR码数量;如果未找到,则不会设置。

lavfi.quirc.N.corner.M.x
lavfi.quirc.N.coreer.M.y

包含QR码的方形四个角的X/Y坐标,其中M是角索引,从0开始。

lavfi.quirc.N.payload

QR码的内容。

32.205 random

将内部缓存的帧以随机顺序输出。 没有帧会被丢弃。 灵感来自frei0rnervous 滤镜。

frames

设置内部缓存的大小(帧数),范围从2512。默认值是30.

seed

为随机数生成器设置种子值,必须是介于0UINT32_MAX之间的整数。如果未指定,或者明确设置为小于0, 滤镜将尽最大努力使用一个好的随机种子。

32.206 readeia608

从视频帧的顶行读取闭字字幕(EIA-608)信息。

此滤镜为lavfi.readeia608.X.cclavfi.readeia608.X.line添加帧元数据,其中X是标识EIA-608数据的行号(从0开始)。以下是每个元数据值的描述:

lavfi.readeia608.X.cc

存储为EIA-608数据的两个字节(以十六进制打印)。

lavfi.readeia608.X.line

标识并读取EIA-608数据的行号。

此滤镜接受以下选项:

scan_min

设置开始扫描EIA-608数据的行,默认值是0.

scan_max

设置结束扫描EIA-608数据的行,默认值是29.

spw

设置用于同步码检测的宽度比例。 默认值是0.27。允许的范围是[0.1 - 0.7].

chp

启用奇偶校验位检查。如果发生奇偶校验错误,滤镜将输出0x00作为字符的替代。默认值为false。

lp

在进一步处理之前对行进行低通滤波。默认已启用。

32.206.1 Commands

此滤镜支持以上所有选项作为命令.

32.206.2 Examples

  • 输出带有显示时间和已识别的首两行EIA-608字幕数据的CSV文件。
    ffprobe -f lavfi -i movie=captioned_video.mov,readeia608 -show_entries frame=pts_time:frame_tags=lavfi.readeia608.0.cc,lavfi.readeia608.1.cc -of csv
    

32.207 readvitc

从视频帧的顶行读取垂直间隔时间码(VITC)信息。

如果检测到有效的时间码,滤镜会添加帧元数据键lavfi.readvitc.tc_str,表示时间码价值;此外,元数据键lavfi.readvitc.found将根据是否检测到时间码数据设置为0或1。

此滤镜接受以下选项:

scan_max

设置扫描VITC数据的最大行数。如果设置为-1将扫描整个视频帧。默认值是45.

thr_b

设置黑色的亮度阈值。接受范围为[0.0,1.0]的浮点数,默认值是0.2。该值必须小于或等于thr_w.

thr_w

设置白色的亮度阈值。接受范围为[0.0,1.0]的浮点数,默认值是0.6。该值必须大于或等于thr_b.

32.207.1 Examples

  • 检测并在视频帧上绘制VITC数据;如果未检测到有效的VITC,则绘制--:--:--:--作为占位符:
    ffmpeg -i input.avi -filter:v 'readvitc,drawtext=fontfile=FreeMono.ttf:text=%{metadata\\:lavfi.readvitc.tc_str\\:--\\\\\\:--\\\\\\:--\\\\\\:--}:x=(w-tw)/2:y=400-ascent'
    

32.208 remap

使用第二个输入视频流(Xmap)和第三个输入视频流(Ymap)重新映射像素。

目标像素的(X, Y)位置将由源的(x, y)位置获取,其中 x = Xmap(X, Y),y = Ymap(X, Y)。如果映射值超出范围,将为目标像素使用零值。

Xmap和Ymap输入视频流必须具有相同的尺寸。输出视频流将具有与Xmap/Ymap视频流相同的尺寸。 Xmap和Ymap输入视频流为16位深度,单通道。

format

指定此滤镜输出的像素格式。可以是colorgray。 默认值是color.

fill

指定未映射像素的颜色。有关此选项的语法,请查看(ffmpeg-utils)“颜色”章节中的说明。默认颜色是black.

32.209 removegrain

removegrain滤镜是用于逐行视频的空间去噪器。

m0

设置第一个颜色平面的模式。

m1

设置第二个颜色平面的模式。

m2

设置第三个颜色平面的模式。

m3

设置第四个颜色平面的模式。

模式的范围为0到24。以下是每种模式的描述:

0

保持输入平面不变。默认。

1

用8个邻近像素的最小值和最大值剪裁像素。

2

用8个邻近像素的次低和次高值剪裁像素。

3

用8个邻近像素的第三低和第三高值剪裁像素。

4

用8个邻近像素的第四低和第四高值剪裁像素。 这相当于一个中值滤波器。

5

行敏感剪裁,最小化变化。

6

行敏感剪裁,中等设置。

7

行敏感剪裁,中等设置。

8

行敏感剪裁,中等设置。

9

在一行上进行行敏感剪裁,其中邻近像素之间的距离最小。

10

用最近的邻近像素替换目标像素。

11

[1 2 1]水平和垂直核模糊。

12

与模式11相同。

13

隔行扫描模式,从包含邻近像素最近的一行插值顶部场。

14

隔行扫描模式,从包含邻近像素最近的一行插值底部场。

15

隔行扫描模式,插值顶部场。与模式13相同,但使用更复杂的插值公式。

16

隔行扫描模式,插值底部场。与模式14相同,但使用更复杂的插值公式。

17

用分别为每一对相对邻近像素最大和最小值的最小值和最大值剪裁像素。

18

对使用相对邻近像素的剪裁,其中这些邻近像素到当前像素的最大距离是最小的。

19

用8个邻近像素的平均值替换当前像素。

20

对9个像素求平均值([1 1 1]水平和垂直模糊)。

21

使用相对邻近像素的平均值裁剪像素。

22

模式21的简化且更快版本。

23

小的边缘和光晕移除,但声称无用。

24

与模式23相似。

32.210 removelogo

使用图像文件来确定哪些像素属于电视台台标,并抑制台标。它通过用相邻像素填充构成台标的像素来工作。

此滤镜接受以下选项:

filename, f

设置滤镜位图文件,可以是libavformat支持的任意图像格式。图像文件的宽度和高度必须与所处理的视频流匹配。

提供的位图图像中值为零的像素将不被视为台标的一部分,非零像素将被视为台标的一部分。如果使用白色(255)表示台标,黑色(0)表示其余部分,则会比较安全。建议使用带有可见台标的黑帧捕获屏幕,再进行阈值滤波和一到两次腐蚀滤波以制作滤镜位图。

如有需要,可以手动修复小斑点。请记住,如果台标像素未覆盖,滤镜质量会大大降低。将过多像素标记为台标的一部分影响较小,但会增加覆盖图像所需的模糊量,并破坏更多不必要的信息,额外的像素会在大型台标上减慢处理速度。

32.211 repeatfields

此滤镜使用视频数据流头文件中的 `repeat_field` 标志,并根据其值执行硬重复字段。

32.212 reverse

倒放视频片段。

警告:此滤镜需要内存缓冲整个片段,因此建议进行剪辑。

32.212.1 Examples

  • 截取片段的前5秒,并倒放。
    trim=end=5,reverse
    

32.213 rgbashift

水平和/或垂直移动R/G/B/A像素。

此滤镜接受以下选项:

rh

设置红色水平偏移的量。

rv

设置红色垂直偏移的量。

gh

设置绿色水平偏移的量。

gv

设置绿色垂直偏移的量。

bh

设置蓝色水平偏移的量。

bv

设置蓝色垂直偏移的量。

ah

设置透明度水平偏移的量。

av

设置透明度垂直偏移的量。

edge

设置边缘模式,可为涂抹,默认值或扭曲.

32.213.1 命令

该滤镜支持以上所有选项作为命令.

32.214 roberts

对输入视频流应用Roberts交叉操作符。

该滤镜接受以下选项:

planes

设置要处理的平面,未处理的平面将被复制。 默认值为0xf,所有平面将被处理。

scale

设置乘以过滤结果的值。

delta

设置加到过滤结果的值。

32.214.1 命令

该滤镜支持以上所有选项作为命令.

32.215 旋转

通过弧度值旋转视频。

该滤镜接受以下选项:

下面是可选参数的说明。

angle, a

为旋转输入视频的角度设置表达式,顺时针旋转,以弧度表示。 负值将导致逆时针旋转。默认设置为"0"。

此表达式会对每帧进行评估。

out_w, ow

设置输出宽度表达式,默认值为"iw"。 此表达式仅在配置期间评估一次。

out_h, oh

设置输出高度表达式,默认值为"ih"。 此表达式仅在配置期间评估一次。

bilinear

启用双线性插值时设置为1,设置为0则禁用。 默认值为1。

fillcolor, c

设置用于填充旋转后图像未覆盖的输出区域的颜色。 有关此选项的常规语法,请参阅(ffmpeg-utils)"颜色"部分的ffmpeg-utils手册。 如果选择特殊值"无",则不会打印背景(例如背景永远不会显示时很有用)。

默认值为"黑色"。

角度和输出尺寸的表达式可以包含以下常量和函数:

n

输入帧的顺序号,从0开始。在过滤第一个帧之前始终是NAN。

t

输入帧的时间(以秒为单位),在滤镜配置时设置为0。 在过滤第一个帧之前始终是NAN。

hsub
vsub

水平和垂直色度子采样值。例如对于像素格式"yuv422p"hsub为2,vsub为1。

in_w, iw
in_h, ih

输入视频的宽度和高度

out_w, ow
out_h, oh

输出宽度和高度,即配置时通过指定的填充区域的大小宽度高度表达式

rotw(a)
roth(a)

完全包含旋转输入视频所需的最小宽度/高度,旋转弧度为a弧度。

这些仅在计算out_w高度out_h表达时可用。

32.215.1 示例

  • 顺时针旋转输入视频PI/6弧度:
    rotate=PI/6
    
  • 逆时针旋转输入视频PI/6弧度:
    rotate=-PI/6
    
  • 顺时针旋转输入视频45度:
    rotate=45*PI/180
    
  • 应用从PI/3的角度开始,周期为T的恒定旋转:
    rotate=PI/3+2*PI*t/T
    
  • 使输入视频以周期T秒振荡旋转,幅度为A弧度:
    rotate=A*sin(2*PI/T*t)
    
  • 旋转视频,选择输出尺寸以确保始终完全包含旋转输入视频:
    rotate='2*PI*t:ow=hypot(iw,ih):oh=ow'
    
  • 旋转视频,减小输出尺寸以确保背景永远不会显示:
    rotate=2*PI*t:ow='min(iw,ih)/sqrt(2)':oh=ow:c=none
    

32.215.2 命令

该滤镜支持以下命令:

a, angle

设置角度表达式。 该命令接受与相应选项相同的语法。

如果指定的表达式无效,则保持当前值。

32.216 sab

应用形状自适应模糊。

该滤镜接受以下选项:

luma_radius, lr

设置亮度模糊滤镜的强度,必须介于0.1-4.0之间,默认值为1.0。 更大的值会产生更模糊的图像,并且处理速度较慢。

luma_pre_filter_radius, lpfr

设置亮度预滤镜半径,必须在0.1-2.0范围内,默认值为1.0。

luma_strength, ls

设置像素之间仍被考虑的亮度最大差异值,必须在0.1-100.0范围内,默认值为1.0。

chroma_radius, cr

设置色度模糊滤镜的强度,必须介于-0.9-4.0之间。 更大的值会产生更模糊的图像,并且处理速度较慢。

chroma_pre_filter_radius, cpfr

设置色度预滤镜半径,必须在-0.9-2.0范围内。

chroma_strength, cs

设置像素之间仍被考虑的色度最大差异值,必须在-0.9-100.0范围内。

如果未明确指定,每个色度选项值将设置为对应亮度选项值。

32.217 缩放

使用libswscale库对输入视频进行缩放(调整大小)。

缩放滤镜通过更改输出样本纵横比强制输出显示纵横比与输入相同。

如果输入图像格式与下一个滤镜请求的格式不同,缩放滤镜将把输入转换为请求的格式。

32.217.1 选项

该滤镜接受以下选项,包括libswscale缩放器支持的任何选项,以及任何framesync选项。

参见(ffmpeg-scaler)ffmpeg-scaler手册以获取所有缩放器选项的完整列表。

width, w
height, h

设置输出视频尺寸表达式。默认值为输入尺寸。

如果宽度w值为0,则使用输入宽度作为输出宽度。如果高度h值为0,则使用输入高度作为输出高度。

如果仅有一个值为-n且n >= 1,则缩放滤镜将使用一个值,以保持输入图像的纵横比, 从其他指定尺寸计算得出。之后,它会确保计算的维度可以被n整除,并在必要时调整值。

如果两个值都为-n且n >= 1,则行为与两者都设置为0完全相同,如上所述。

参见下方可用于尺寸表达式的常量列表。

eval

指定何时评估宽度高度表达式。可接受以下值:

init

仅在滤镜初始化或处理命令时评估表达式一次。

frame

对每个输入帧评估表达式。

默认值为‘init’.

interl

设置交错模式。可接受以下值:

1

强制交错感知缩放。

0

不应用交错缩放。

-1

根据源帧是否标记为交错来选择交错感知缩放。

默认值为‘0’.

flags

设置libswscale缩放标志。参见(ffmpeg-scaler)ffmpeg-scaler手册以获取值的完整列表。如果未明确指定,滤镜将应用默认标志。

param0, param1

设置libswscale输入参数,对于需要这些参数的缩放算法。参见(ffmpeg-scaler)ffmpeg-scaler手册以获取完整文档。如果未明确指定,滤镜将应用空参数。

size, s

设置视频尺寸。有关此选项的语法,请参阅(ffmpeg-utils)ffmpeg-utils手册中的"视频尺寸"部分.

in_color_matrix
out_color_matrix

设置输入/输出YCbCr颜色空间类型。

这允许覆盖自动检测到的值,也可以强制使用用于输出和编码的特定值。

如果未指定,颜色空间类型依赖于像素格式。

可能的值:

auto

自动选择。

bt709

符合国际电信联盟(ITU)BT.709推荐的格式。

fcc

设置符合美国联邦通讯委员会(FCC)《联邦法规汇编》(CFR)标题47(2003)第73.682(a)条的颜色空间。

bt601
bt470
smpte170m

设置符合以下标准的颜色空间:

  • ITU-R BT.601推荐标准
  • ITU-R Rec. BT.470-6(1998)系统B、B1和G
  • 美国电影和电视工程师协会(SMPTE)ST 170:2004标准
smpte240m

设置符合SMPTE ST 240:1999标准的颜色空间。

bt2020

设置符合ITU-R BT.2020非恒定亮度系统的颜色空间。

in_range
out_range

设置输入/输出YCbCr样本范围。

这允许覆盖自动检测到的值,也可以强制使用用于输出和编码的特定值。如果未指定,范围依赖于像素格式。可能的值:

auto/unknown

自动选择。

jpeg/full/pc

设置全范围(在8位亮度情况下为0-255)。

mpeg/limited/tv

设置"MPEG"范围(在8位亮度情况下为16-235)。

in_chroma_loc
out_chroma_loc

设置输入/输出色度样本位置。如果未指定,默认使用中心位置。可能的值:

auto, unknown
left
center
topleft
top
bottomleft
bottom
force_original_aspect_ratio

在必要时启用减少或增加输出视频宽度或高度,以保持原始纵横比。可能的值:

disable

按指定的视频尺寸进行缩放,并禁用此功能。

decrease

如果需要,输出视频宽度自动减小。

increase

如果需要,输出视频宽度自动增加。

此选项的一个有用实例是,当您知道某个设备支持的最大允许分辨率时, 可以使用此选项限制输出视频,同时保留纵横比。例如,设备A允许1280x720播放,且您的视频为1920x800。 使用此选项(设置为减少)并在命令行中指定1280x720,输出视频变为1280x533。

请注意,这与指定-1给wh不同,您仍需要指定输出分辨率才能使此选项生效。

force_divisible_by

确保在与force_original_aspect_ratio一起使用时,输出尺寸(宽度和高度)可以被给定整数整除。 这与-nwh选项中使用类似。

此选项尊重force_original_aspect_ratio指定的值,根据需要增加或减少分辨率。 视频的纵横比可能会稍微修改。

此选项对于视频需要使用force_original_aspect_ratio调整以符合或超过定义的分辨率,并且编码器对宽度或高度可整除性有要求时非常有帮助。

选项的值是包含以下常量的表达式:w and h options are expressions containing the following constants:

in_w
in_h

输入宽度和高度

iw
ih

in_win_h.

相同。
out_h

out_w

out_h
ow

ohout_w and out_h

a

iw / ih

sar

输入样本纵横比

dar

输入显示纵横比。从(iw / ih) * sar.

hsub
vsub

输入色度的水平和垂直子采样值。例如对于像素格式"yuv422p"hsub为2,vsub为1。

ohsub
ovsub

输出色度的水平和垂直子采样值。例如对于像素格式"yuv422p"hsub为2,vsub为1。

n

输入帧的顺序号,从0开始。 仅与eval=frame.

一起可用。

输入帧的展示时间戳,以秒为单位。 仅与eval=frame.

pos

输入流中帧的位置(字节偏移量),或为NaN(如果该信息不可用和/或无意义,例如对于合成视频)。 仅与eval=frame一起可用。 已弃用,请勿使用。

参考宽度,rw
参考高度,rh
参考长宽比
参考显示长宽比,rdar
参考帧数
参考时间戳
参考位置

与上述等效,但用于第二个参考输入。如果这些变量中的任何一个存在,此过滤器将接受两个输入。

32.217.2 示例

  • 将输入视频缩放到大小为200x100
    scale=w=200:h=100
    

    这等效于:

    scale=200:100
    

    或:

    scale=200x100
    
  • 为输出大小指定尺寸缩写:
    scale=qcif
    

    也可以写成:

    scale=size=qcif
    
  • 将输入缩放到2倍:
    scale=w=2*iw:h=2*ih
    
  • 上述等同于:
    scale=2*in_w:2*in_h
    
  • 将输入缩放到2倍并强制使用交错缩放:
    scale=2*iw:2*ih:interl=1
    
  • 将输入缩放到一半大小:
    scale=w=iw/2:h=ih/2
    
  • 增加宽度,并将高度设置为相同的大小:
    scale=3/2*iw:ow
    
  • 追求希腊式和谐:
    scale=iw:1/PHI*iw
    scale=ih*PHI:ih
    
  • 增加高度,将宽度设为高度的3/2:
    scale=w=3/2*oh:h=3/5*ih
    
  • 增加尺寸,使尺寸为色度抽样值的倍数:
    scale="trunc(3/2*iw/hsub)*hsub:trunc(3/2*ih/vsub)*vsub"
    
  • 将宽度增加到最多500像素,同时保持输入的长宽比:
    scale=w='min(500\, iw*3/2):h=-1'
    
  • 通过结合缩放和设置SAR使像素为正方形:
    scale='trunc(ih*dar):ih',setsar=1/1
    
  • 通过结合缩放和设置SAR,使像素为正方形,同时确保生成分辨率为偶数(某些编解码器需要):
    scale='trunc(ih*dar/2)*2:trunc(ih/2)*2',setsar=1/1
    
  • 在叠加前,将字幕流(sub)缩放以匹配主视频(main)的大小。("scale2ref")
    '[main]split[a][b]; [ref][a]scale=rw:rh[c]; [b][c]overlay'
    
  • 将标志缩放为视频高度的1/10,同时保留其显示长宽比。
    [logo-in][video-in]scale=w=oh*dar:h=rh/10[logo-out]
    

32.217.3 命令

此过滤器支持以下命令:

width, w
height, h

设置输出视频尺寸表达式。命令接受与对应选项相同的语法。

如果指定的表达式无效,则保持当前值不变。

32.218 scale_cuda

使用加速的CUDA内核缩放(调整大小)和转换(像素格式)输入视频。 设置输出宽度和高度的方式与scale过滤器的方式相同。

该过滤器接受以下选项:

w
h

设置输出视频尺寸表达式。默认值为输入尺寸。

允许使用与scale过滤器相同的表达式。

interp_algo

设置用于缩放的算法:

最近邻

最邻近算法

如果输入参数与所需输出匹配,则默认使用。

双线性

双线性插值

双三次

双三次插值

这是默认值。

兰佐斯

兰佐斯算法

format

控制输出像素格式。默认情况下,如果未指定,则使用输入像素格式。

该过滤器不支持在YUV和RGB像素格式之间的转换。

passthrough

如果设置为0,则每帧都处理,即使没有必要的转换。这种模式在用于作为一个下游帧消费者缓冲区时可能有用,避免耗尽有限的解码器帧池。

如果设置为1,在帧与所需输出参数匹配时将按原样传递帧。这是默认行为。

param

算法特定参数。

影响双三次算法的曲线。

force_original_aspect_ratio
force_divisible_by

scale过滤器选项的工作方式相同。

32.218.1 示例

  • 将输入缩放到720p,保持长宽比,并确保输出为yuv420p。
    scale_cuda=-2:720:format=yuv420p
    
  • 使用最近邻算法放大到4K。
    scale_cuda=4096:2160:interp_algo=nearest
    
  • 不进行任何转换或缩放,但将所有输入帧复制到新分配的帧中。这在处理否则会耗尽解码器帧池的过滤器和编码链时可能有用。
    scale_cuda=passthrough=0
    

32.219 scale_npp

使用NVIDIA性能原语(libnpp)对CUDA视频帧进行缩放和/或像素格式转换。 设置输出宽度和高度的方式与scale过滤器方式相同。

接受以下附加选项:

format

输出CUDA帧的像素格式。如果设置为字符串"same"(默认),则保持输入格式。 请注意,目前尚不支持硬件帧的自动格式协商和转换。

interp_algo

用于调整大小的插值算法之一:

nn

最近邻。

linear
cubic
cubic2p_bspline

2参数双三次(B=1, C=0)

cubic2p_catmullrom

2参数双三次(B=0, C=1/2)

cubic2p_b05c03

2参数双三次(B=1/2, C=3/10)

super

超采样

lanczos
force_original_aspect_ratio

启用或禁用根据需要调整输出视频宽度或高度以保持原始长宽比的功能。可能的值:

disable

按指定的方式缩放视频,并禁用此功能。

decrease

如果需要,输出视频的尺寸将自动减小。

increase

如果需要,输出视频的尺寸将自动增加。

此选项的一个有用实例是,当您知道特定设备的最大允许分辨率时,可以使用它限制输出视频以适应该分辨率,同时保持长宽比。例如,设备A允许1280x720的播放,而您的视频是1920x800。使用此选项(设置为减少),并在命令行中指定1280x720,将输出为1280x533。

请注意,这与为wh指定-1不同,您仍需指定输出分辨率以使此选项工作。

force_divisible_by

确保输出尺寸,宽度和高度,都能被指定的整数整除,当与force_original_aspect_ratio一起使用时。-nwh选项中类似使用。

该选项尊重为force_original_aspect_ratio设置的值,相应地增加或减小分辨率。视频的长宽比可能会略有修改。

如果您需要视频适应或超出force_original_aspect_ratio定义的分辨率,但编码器在宽度或高度的可整除性上有限制,这个选项可能会很方便。

eval

指定何时评估宽度高度表达式。它接受以下值:

init

仅在过滤器初始化期间或处理命令时评估表达式。

frame

对每个传入帧评估表达式。

wh选项是包含以下常量的表达式:

in_w
in_h

输入宽度和高度

iw
ih

它们与in_win_h.

out_w
out_h

输出(缩放后)的宽度和高度

ow
oh

它们与out_wout_h

a

等同于iw / ih

sar

输入的采样长宽比

dar

输入的显示长宽比。由(iw / ih) * sar.

n

从0开始输入帧的(连续)编号。仅当使用eval=frame.

t

输入帧的显示时间戳,以秒为单位表示。仅当使用eval=frame.

pos

帧在输入流中的位置(字节偏移量),如果此信息不可用和/或无意义(例如在合成视频的情况下),则为NaN。仅当使用eval=frame。 已弃用,请勿使用。

32.220 scale2ref_npp

使用NVIDIA性能原语(libnpp)根据参考视频缩放(调整尺寸)输入视频。

请参阅scale_npp过滤器以获取可用选项,scale2ref_npp支持相同的选项,但使用参考视频而不是主输入作为基础。scale2ref_npp还支持以下附加的常量用于wh选项:

main_w
main_h

主输入视频的宽度和高度

main_a

等同于main_w / main_h

main_sar

主输入视频的采样长宽比

main_dar, mdar

主输入视频的显示长宽比。由(main_w / main_h) * main_sar.

main_n

从0开始主输入帧的(连续)编号。仅当使用eval=frame.

main_t

主输入帧的显示时间戳,以秒为单位表示。仅当使用eval=frame.

main_pos

帧在主输入流中的位置(字节偏移量),如果此信息不可用和/或无意义(例如在合成视频的情况下),则为NaN。仅当使用eval=frame.

32.220.1 示例

  • 将字幕流(b)缩放以匹配主视频(a)的大小,然后叠加。
    'scale2ref_npp[b][a];[a][b]overlay_cuda'
    
  • 将标志缩放为视频高度的1/10,同时保留其显示长宽比。
    [logo-in][video-in]scale2ref_npp=w=oh*mdar:h=ih/10[logo-out][video-out]
    

32.221 scale_vt

使用VTPixelTransferSession进行缩放和颜色参数转换。

过滤器接受以下选项:

w
h

设置输出视频尺寸表达式。默认值为输入尺寸。

color_matrix

设置输出颜色空间矩阵。

color_primaries

设置输出颜色原色。

color_transfer

设置输出传输特性。

32.222 scharr

对输入视频流应用Scharr算子。

过滤器接受以下选项:

planes

设置将处理哪些平面,未处理的平面将被复制。默认值为0xf,所有平面将被处理。

scale

设置将与过滤结果相乘的值。

delta

设置将添加到过滤结果的值。

32.222.1 命令

此过滤器支持所有上述选项作为命令.

32.223 scroll

以恒定速度水平和/或垂直滚动输入视频。

过滤器支持以下选项:

horizontal, h

设置水平滚动速度。默认值为0。允许范围是-1到1。负值更改滚动方向。

vertical, v

设置垂直滚动速度。默认值为0。允许范围是-1到1。负值更改滚动方向。

hpos

设置初始水平滚动位置。默认值为0。允许范围是0到1。

vpos

设置初始垂直滚动位置。默认值为0。允许范围是0到1。

32.223.1 命令

此过滤器支持以下命令:

horizontal, h

设置水平滚动速度。

vertical, v

设置垂直滚动速度。

32.224 scdet

检测视频场景变化。

该过滤器设置帧元数据与帧之间的MAFD、场景分数,并将帧转发到下一个过滤器,以便它们可以使用这些元数据检测场景变化或其他。

此外,当检测到场景变化时,该过滤器记录一条消息并设置帧元数据threshold.

lavfi.scd.mafd每一帧的MAFD设置为元数据键。

lavfi.scd.score每帧的场景分数设置为元数据键以检测场景变化。

lavfi.scd.time通过threshold.

检测到场景变化时,当前过滤帧时间设置为元数据键。

threshold, t

将场景变化检测阈值设置为最大变化的百分比。好的值在[8.0, 14.0]范围内。threshold范围是[0., 100.].

默认值是10..

sc_pass, s

设置标志以将场景变化帧传递到下一个过滤器。默认值是0如果您希望仅获取场景变化帧的快照,可以启用它。

32.225 selectivecolor

将青色、品红、黄色和黑色(CMYK)调整到某些颜色范围(例如"红色"、"黄色"、"绿色"、"青色"等)。调整范围由颜色的"纯度"定义(即其已经饱和的程度)。

此过滤器类似于Adobe Photoshop的选择性调色工具。

过滤器接受以下选项:

correction_method

选择颜色校正方法。

可用的值是:

absolute

指定的调整"按原样"应用(添加/减去到原始像素分量值)。

relative

指定的调整相对于原始分量值。

默认是absolute.

reds

红色像素的调整(像素的红色分量为最大值时)

yellows

黄色像素的调整(像素的蓝色分量为最小值时)

greens

绿色像素的调整(像素的绿色分量为最大值时)

cyans

青色像素的调整(像素的红色分量为最小值时)

blues

蓝色像素的调整(像素的蓝色分量为最大值时)

magentas

调整品红像素(绿色分量为最小值的像素)的设置

whites

调整白色像素(所有分量大于128的像素)的设置

neutrals

调整除纯黑色和纯白色之外的所有像素的设置

blacks

调整黑色像素(所有分量小于128的像素)的设置

psfile

指定一个Photoshop选择性颜色文件(.asv)以导入设置。

所有调整设置(reds, yellows, ...)最多接受4个以空格分隔的浮点调整值,范围为[-1,1],依次调整其范围内像素的青色、品红、黄色和黑色的量。

32.225.1 示例

  • 在所有绿色区域增加50%的青色量并减少33%的黄色量,同时在蓝色区域增加27%的品红量:
    selectivecolor=greens=.5 0 -.33 0:blues=0 .27
    
  • 使用Photoshop的选择性颜色预设:
    selectivecolor=psfile=MySelectiveColorPresets/Misty.asv
    

32.226 separatefields

separatefields接受基于帧的视频输入,并将每帧分割为其组成字段,生成一个高度减半的剪辑,同时将帧速率和帧数加倍。

此滤镜使用帧中的场优先级信息来决定输出中的每对字段中哪个字段先出现。如果它出错,请使用setfield滤镜在separatefields滤镜之前。

32.227 setdar, setsar

setdar滤镜为滤镜输出视频设置显示长宽比。

这是通过根据以下公式更改指定的样本(又称像素)长宽比来完成的:

DAR = 水平分辨率 / 垂直分辨率 * SAR

请注意,该setdar滤镜不会修改视频帧的像素尺寸。此外,该滤镜设置的显示长宽比可能会被滤镜链中的后续滤镜更改,例如在缩放的情况下,或者如果应用了另一个"setdar"或"setsar"滤镜。

setsar滤镜为滤镜输出视频设置样本(又称像素)长宽比。

请注意,由于应用此滤镜的结果,输出显示长宽比将根据上述公式发生变化。

请记住,由setsar滤镜设置的样本长宽比可能会被滤镜链中的后续滤镜更改,例如如果应用了另一个"setsar"或"setdar"滤镜。

接受以下参数:

r, ratio, dar (setdar only), sar (setsar only)

设置滤镜使用的长宽比。

参数可以是浮点数字符串或表达式。如果未指定参数,则假设值为"0",意味着使用相同的输入值。

max

设置在将表达的长宽比缩小到有理数时,用于表达分子和分母的最大整数值。默认值是100.

参数sar是一个包含以下常量的表达式:

w, h

输入宽度和高度。

a

w / h.

sar

输入样本长宽比。

dar

输入显示长宽比,它与(w / h) * sar.

hsub, vsub

水平和垂直色度子采样值。例如,对于像素格式"yuv422p"hsub为2,vsub为1。

32.227.1 示例

  • 要将显示长宽比更改为16:9,请指定以下选项之一:
    setdar=dar=1.77777
    setdar=dar=16/9
    
  • 要将样本长宽比更改为10:11,请指定:
    setsar=sar=10/11
    
  • 要设置显示长宽比为16:9,并在长宽比缩减时指定最大整数值为1000,请使用以下命令:
    setdar=ratio=16/9:max=1000
    

32.228 setfield

强制输出视频帧的字段。

setfield滤镜标记输出帧的隔行扫描类型字段。它不会更改输入帧,而只是设置相关属性,这会影响后续滤镜如何处理帧(例如fieldorderyadif).

)。

mode

可用值为:

auto

保持字段属性不变。

bff

将帧标记为底场优先。

tff

将帧标记为顶场优先。

prog

将帧标记为渐进式。

32.229 setparams

强制输出视频帧的帧参数。

setparams滤镜标记输出帧的隔行扫描和色彩范围。它不会更改输入帧,而只是设置相关属性,这会影响滤镜/编码器如何处理帧。

field_mode

可用值为:

auto

保持字段属性不变(默认)。

bff

将帧标记为底场优先。

tff

将帧标记为顶场优先。

prog

将帧标记为渐进式。

range

可用值为:

auto

保持色彩范围属性不变(默认)。

unspecified, unknown

将帧标记为未指定的色彩范围。

limited, tv, mpeg

将帧标记为受限范围。

full, pc, jpeg

将帧标记为全范围。

color_primaries

设置颜色基准。 可用值为:

auto

保持颜色基准属性不变(默认)。

bt709
unknown
bt470m
bt470bg
smpte170m
smpte240m
film
bt2020
smpte428
smpte431
smpte432
jedec-p22
color_trc

设置颜色传递。 可用值为:

auto

保持颜色TRC属性不变(默认)。

bt709
unknown
bt470m
bt470bg
smpte170m
smpte240m
linear
log100
log316
iec61966-2-4
bt1361e
iec61966-2-1
bt2020-10
bt2020-12
smpte2084
smpte428
arib-std-b67
colorspace

设置色彩空间。 可用值为:

auto

保持色彩空间属性不变(默认)。

gbr
bt709
unknown
fcc
bt470bg
smpte170m
smpte240m
ycgco
bt2020nc
bt2020c
smpte2085
chroma-derived-nc
chroma-derived-c
ictcp
chroma_location

设置色度样本位置。 可用值为:

auto

保持色度位置不变(默认)。

unspecified, unknown
left
center
topleft
top
bottomleft
bottom

32.230 sharpen_npp

使用NVIDIA性能原语(libnpp)进行边界控制和图像锐化。

接受以下额外选项:

border_type

在帧边界使用的采样类型。以下选项之一:

replicate

复制像素值。

32.231 shear

对输入视频应用剪切变换。

此滤镜支持以下选项:

shx

X方向的剪切因子。默认值是0。 允许范围是-2到2。

shy

Y方向的剪切因子。默认值是0。 允许范围是-2到2。

fillcolor, c

设置用于填充未被变换视频覆盖的输出区域的颜色。有关此选项的通用语法,请查看(ffmpeg-utils)"颜色"部分中的ffmpeg-utils手册。 如果选择特殊值"none",则不会绘制背景(例如,如果背景从未显示出来,这很有用)。

默认值是"black"。

interp

设置插值类型。可以是bilinearnearest。默认值是bilinear.

32.231.1 命令

此滤镜支持上述所有选项作为命令.

32.232 showinfo

显示每个输入视频帧的各种信息。输入视频未被修改。

此滤镜支持以下选项:

checksum

计算每个平面的校验和。默认启用。

udu_sei_as_ascii

如果可能,尝试以ASCII字符打印用户数据非注册SEI;否则以十六进制格式显示。

显示的行包含一系列键值对,格式为key:value.

输出中显示以下值:

n

输入帧的(顺序)编号,从0开始。

pts

输入帧的表示时间戳,以时间基单位表示。时间基单位取决于滤镜的输入端。

pts_time

输入帧的表示时间戳,以秒数表示。

fmt

像素格式名称。

sar

输入帧的样本长宽比,以num/den.

s

输入帧的大小。有关此选项的语法,请查看(ffmpeg-utils)"视频大小"部分中的ffmpeg-utils手册.

i

隔行扫描模式的类型("P"表示"渐进式","T"表示"顶场优先","B"表示"底场优先")。

iskey

如果帧是关键帧,则为1,否则为0。

type

输入帧的图片类型("I"表示I帧,"P"表示P帧,"B"表示B帧,"?"表示未知类型)。 另请参阅文档AVPictureTypeenum和av_get_picture_type_char函数定义在libavutil/avutil.h.

checksum

输入帧所有平面的Adler-32校验和(以十六进制打印)。

plane_checksum

输入帧每个平面的Adler-32校验和(以十六进制打印),格式为"[c0 c1 c2 c3]".

mean

输入帧每个平面的平均像素值,格式为"[mean0 mean1 mean2 mean3]".

stdev

输入帧每个平面的像素值标准差,格式为"[stdev0 stdev1 stdev2 stdev3]".

32.233 showpalette

显示每帧的256色调色板。此滤镜仅适用于pal8像素格式帧。

接受以下选项:

s

设置用于表示调色板颜色条目的框的大小。默认是30(用于30x30像素框)。

32.234 shuffleframes

重新排序和/或重复和/或丢弃视频帧。

接受以下参数:

mapping

设置输入帧的目标索引。这是一个空间或"|"分隔的索引列表,将输入帧映射到输出帧。索引的数量也设置每个索引可能具有的最大值。索引"-1"具有特殊意义,表示丢帧。

第一帧的索引是0。默认情况下保持输入不变。

32.234.1 示例

  • 在输入的每三个帧中交换第二帧和第三帧:
    ffmpeg -i INPUT -vf "shuffleframes=0 2 1" OUTPUT
    
  • 在输入的每十帧中交换第10帧和第1帧:
    ffmpeg -i INPUT -vf "shuffleframes=9 1 2 3 4 5 6 7 8 0" OUTPUT
    

32.235 shufflepixels

重新排列视频帧中的像素。

接受以下选项:

direction, d

设置随机方向。可以是正向或反向方向。默认方向是正向。

mode, m

设置随机模式。可以是水平、垂直或块模式。

width, w
height, h

设置随机块大小。在水平随机模式下,只有宽度部分用于大小,而在垂直随机模式下,只有高度部分用于大小。

seed, s

设置随机种子,用于随机排列像素。主要用于可以设置以反转过滤过程以获得原始输入。例如,要反转正向随机排列,您需要使用相同的参数和完全相同的种子,并设置方向为反向。

32.236 shuffleplanes

重新排序和/或重复视频平面。

接受以下参数:

map0

要用作第一个输出平面的输入平面的索引。

map1

要用作第二个输出平面的输入平面的索引。

map2

要用作第三个输出平面的输入平面的索引。

map3

要用作第四个输出平面的输入平面的索引。

第一个平面的索引是0。默认情况下保持输入不变。

32.236.1 示例

  • 交换输入的第二个和第三个平面:
    ffmpeg -i INPUT -vf shuffleplanes=0:2:1:3 OUTPUT
    

32.237 signalstats

评估协助确定与模拟视频媒体数字化相关的问题的各种视觉指标。

默认情况下,滤镜将记录以下元数据值:

YMIN

显示输入帧内包含的最小Y值。范围为[0-255]。

YLOW

显示输入帧内10%百分位数的Y值。范围为[0-255]。

YAVG

显示输入帧内平均Y值。范围为[0-255]。

YHIGH

显示输入帧内90%百分位数的Y值。范围为[0-255]。

YMAX

显示输入帧内包含的最大Y值。范围为[0-255]。

UMIN

显示输入帧内包含的最小U值。范围为[0-255]。

ULOW

显示输入帧内10%百分位数的U值。范围为[0-255]。

UAVG

显示输入帧内平均U值。范围为[0-255]。

UHIGH

显示输入帧内90%百分位数的U值。范围为[0-255]。

UMAX

显示输入帧内包含的最大U值。范围为[0-255]。

VMIN

显示输入帧中包含的最小V值。范围为[0-255]。

VLOW

显示输入帧中10%分位的V值。范围为[0-255]。

VAVG

显示输入帧中的平均V值。范围为[0-255]。

VHIGH

显示输入帧中90%分位的V值。范围为[0-255]。

VMAX

显示输入帧中包含的最大V值。范围为[0-255]。

SATMIN

显示输入帧中包含的最小饱和度值。范围为[0-~181.02]。

SATLOW

显示输入帧中10%分位的饱和度值。范围为[0-~181.02]。

SATAVG

显示输入帧中的平均饱和度值。范围为[0-~181.02]。

SATHIGH

显示输入帧中90%分位的饱和度值。范围为[0-~181.02]。

SATMAX

显示输入帧中包含的最大饱和度值。范围为[0-~181.02]。

HUEMED

显示输入帧中色调的中位值。范围为[0-360]。

HUEAVG

显示输入帧中色调的平均值。范围为[0-360]。

YDIF

显示当前帧中Y平面所有值与前一输入帧对应值之间的差值的平均值。范围为[0-255]。

UDIF

显示当前帧中U平面所有值与前一输入帧对应值之间的差值的平均值。范围为[0-255]。

VDIF

显示当前帧中V平面所有值与前一输入帧对应值之间的差值的平均值。范围为[0-255]。

YBITDEPTH

显示当前帧中Y平面的位深。范围为[0-16]。

UBITDEPTH

显示当前帧中U平面的位深。范围为[0-16]。

VBITDEPTH

显示当前帧中V平面的位深。范围为[0-16]。

该滤镜接受以下选项:

stat
out

stat指定额外的图像分析形式。out以指定的类型高亮输出视频中的像素。

两个选项接受以下值:

tout

识别时间异常像素。像素。时间异常像素是与同场邻近像素不相似的像素。时间异常像素的例子包括视频信号丢失、磁头堵塞或磁带跟踪问题的结果。

vrep

识别垂直线重复。垂直线重复包括帧内相似的像素行。在生成数字视频时通常会出现垂直线重复,但在从模拟源数字化的视频中这种模式不常见。如果这种情况发生在数字化的模拟源视频中,可能指示从信号丢失补偿器隐藏问题。

brng

识别落在合法广播范围之外的像素。

color, c

设置用于out选项的高亮颜色。默认颜色是黄色。

32.237.1 示例

  • 输出各种视频指标的数据:
    ffprobe -f lavfi movie=example.mov,signalstats="stat=tout+vrep+brng" -show_frames
    
  • 输出每帧的Y平面的最小值和最大值的特定数据:
    ffprobe -f lavfi movie=example.mov,signalstats -show_entries frame_tags=lavfi.signalstats.YMAX,lavfi.signalstats.YMIN
    
  • 以红色高亮显示落在广播范围之外的像素来播放视频。
    ffplay example.mov -vf signalstats="out=brng:color=red"
    
  • 播放视频并在帧上绘制信号统计元数据。
    ffplay example.mov -vf signalstats=stat=brng+vrep+tout,drawtext=fontfile=FreeSerif.ttf:textfile=signalstat_drawtext.txt
    

    用于命令的signalstat_drawtext.txt的内容是:

    time %{pts:hms}
    Y (%{metadata:lavfi.signalstats.YMIN}-%{metadata:lavfi.signalstats.YMAX})
    U (%{metadata:lavfi.signalstats.UMIN}-%{metadata:lavfi.signalstats.UMAX})
    V (%{metadata:lavfi.signalstats.VMIN}-%{metadata:lavfi.signalstats.VMAX})
    saturation maximum: %{metadata:lavfi.signalstats.SATMAX}
    
    

32.238 签名

计算MPEG-7视频签名。滤镜可以处理多个输入。在这种情况下,还可以计算输入之间的匹配。滤镜总是通过第一个输入,通过的每个流的签名可以写入文件。

它接受以下选项:

detectmode

启用或禁用匹配过程。

可用值是:

off

禁用匹配计算(默认)。

full

计算整个视频的匹配并输出整个视频是否匹配或仅部分匹配。

fast

仅计算直到找到匹配或视频结束。在某些情况下可能更快。

nb_inputs

设置输入数量。选项值必须是非负整数。默认值为1。

filename

设置输出文件路径。如果有多个输入,路径必须是一个原型,即必须包含%d或%0nd(其中n是一个正整数),将替换为输入编号。如果未指定文件名,则不会写入输出。这是默认值。

format

选择输出格式。

可用值是:

binary

使用指定的二进制表示(默认)。

xml

使用指定的XML表示。

th_d

设置检测一个词组类似性的阈值。选项值必须是大于零的整数。默认值为9000。

th_dc

设置检测所有词组类似性的阈值。选项值必须是大于零的整数。默认值为60000。

th_xh

设置检测帧类似性的阈值。选项值必须是大于零的整数。默认值为116。

th_di

设置识别为匹配序列的最小帧长度。选项值必须是非负整数值。默认值为0。

th_it

设置匹配帧与所有帧的比例必须达到的最低值。选项值必须是0到1之间的双精度值。默认值为0.5。

32.238.1 示例

  • 计算输入视频的签名并将其存储在signature.bin中:
    ffmpeg -i input.mkv -vf signature=filename=signature.bin -map 0:v -f null -
    
  • 检测两个视频是否匹配并将签名以XML格式存储在signature0.xml和signature1.xml中:
    ffmpeg -i input1.mkv -i input2.mkv -filter_complex "[0:v][1:v] signature=nb_inputs=2:detectmode=full:format=xml:filename=signature%d.xml" -map :v -f null -
    

32.239 siti

计算视频的空间信息(SI)和时间信息(TI)分数,如ITU-T Rec. P.910 (11/21)定义:适用于多媒体应用的主观视频质量评估方法。可用PDF下载地址https://www.itu.int/rec/T-REC-P.910-202111-S/en。请注意,这是一个对应于已被取代推荐的遗留实现。请参考ITU-T Rec. P.910 (07/22)的最新版本:https://www.itu.int/rec/T-REC-P.910-202207-I/en

它接受以下选项:

print_summary

如果设置为1,将会在控制台输出汇总统计信息。默认值为0。

32.239.1 示例

  • 计算SI/TI指标并打印汇总:
    ffmpeg -i input.mp4 -vf siti=print_summary=1 -f null -
    

32.240 smartblur

模糊输入视频但不影响轮廓。

它接受以下选项:

luma_radius, lr

设置亮度半径。选项值必须是范围为[0.1,5.0]的浮点数,该值指定用于模糊图像的高斯滤波器的方差(越大越慢)。默认值为1.0。

luma_strength, ls

设置亮度强度。选项值必须是范围为[-1.0,1.0]的浮点数,该值配置模糊程度。在[0.0,1.0]间的值将模糊图像,在[-1.0,0.0]间的值将锐化图像。默认值为1.0。

luma_threshold, lt

设置用于决定是否模糊像素的亮度阈值系数。选项值必须是范围为[-30,30]的整数。值为0将过滤整个图像,值在[0,30]间将过滤平坦区域,值在[-30,0]间将过滤边缘。默认值为0。

chroma_radius, cr

设置色度半径。选项值必须是范围为[0.1,5.0]的浮点数,该值指定用于模糊图像的高斯滤波器的方差(越大越慢)。默认值为luma_radius.

chroma_strength, cs

设置色度强度。选项值必须是范围为[-1.0,1.0]的浮点数,该值配置模糊程度。在[0.0,1.0]间的值将模糊图像,在[-1.0,0.0]间的值将锐化图像。默认值为luma_strength.

chroma_threshold, ct

设置用于决定是否模糊像素的色度阈值系数。选项值必须是范围为[-30,30]的整数。值为0将过滤整个图像,值在[0,30]间将过滤平坦区域,值在[-30,0]间将过滤边缘。默认值为luma_threshold.

alpha_radius, ar

设置Alpha半径。选项值必须是范围为[0.1,5.0]的浮点数,该值指定用于模糊图像的高斯滤波器的方差(越大越慢)。默认值为luma_radius.

alpha_strength, as

设置Alpha强度。选项值必须是范围为[-1.0,1.0]的浮点数,该值配置模糊程度。在[0.0,1.0]间的值将模糊图像,在[-1.0,0.0]间的值将锐化图像。默认值为luma_strength.

alpha_threshold, at

设置用于决定是否模糊像素的Alpha阈值系数。选项值必须是范围为[-30,30]的整数。值为0将过滤整个图像,值在[0,30]间将过滤平坦区域,值在[-30,0]间将过滤边缘。默认值为luma_threshold.

如果未显式设置色度或Alpha选项,则对应的亮度值将被设置。

32.241 sobel

对输入视频流应用Sobel算子。

过滤接受以下选项:

planes

设置将被处理的平面,未处理的平面将被复制。默认值为0xf,所有平面将被处理。

scale

设置乘以滤波结果的值。

delta

设置添加到滤波结果上的值。

32.241.1 命令

该过滤器支持以上所有选项作为命令.

32.242 spp

应用一个简单的后处理滤镜,通过在多个(或在quality级别6-所有)位移处压缩和解压缩图像并平均结果。

过滤接受以下选项:

quality

设置质量。此选项定义平均的级别数量。它接受范围0-6的整数。如果设置为0,过滤器将没有效果。值为6表示更高的质量。该值的每次递增速度大约会降低一个因子为2。默认值是3.

qp

强制使用恒定的量化参数。如果未设置,过滤器将使用视频流中的QP(如果可用)。

mode

设置阈值模式。可用模式是:

hard

设置硬阈值(默认)。

soft

设置软阈值(效果更好的去环效应,但可能更模糊)。

use_bframe_qp

启用来自B帧的QP的使用,如果设置为1。使用此选项可能会引起闪烁,因为B帧通常具有较大的QP。默认不启用。0(未启用)。

32.242.1 命令

此过滤器支持以下命令:

quality, level

设置质量级别。值max可用于设置最高级别,目前6.

32.243 sr

通过应用基于卷积神经网络的超分辨率方法对输入进行缩放。支持的模型:

可在以下位置找到训练脚本以及用于保存模型文件 (.pb) 的脚本https://github.com/XueweiMeng/sr/tree/sr_dnn_native。原始存储库位于https://github.com/HighVoltageRocknRoll/sr.git.

过滤器接受以下选项:

dnn_backend

指定使用哪个 DNN 后端加载和执行模型。此选项接受以下值:

tensorflow

TensorFlow 后端。启用此后端需要安装 TensorFlow for C 库(参见https://www.tensorflow.org/install/lang_c)并使用以下配置 FFmpeg--enable-libtensorflow

model

设置到指定网络架构及其参数的模型文件路径。请注意,不同的后端使用不同的文件格式。TensorFlow、OpenVINO 后端只能加载其格式的文件。

scale_factor

为 SRCNN 模型设置缩放因子。允许的值为2, 34。 默认值为2。缩放因子是 SRCNN 模型所必需的,因为其需要输入使用正确缩放因子的双三次上采样进行了放大的数据。

要获得全部功能(如异步执行),请使用dnn_processing过滤器。

32.244 ssim

获取两个输入视频之间的 SSIM(结构相似度指标)。

此过滤器接受两个输入视频,第一个输入被视为“主”源并不进行改变地传递到输出。第二个输入被用作计算 SSIM 的“参考”视频。

两个视频输入必须具有相同的分辨率和像素格式,以使此过滤器正常工作。此外,它假设两个输入具有相同的帧数,并逐帧进行比较。

过滤器存储每帧计算出的 SSIM。

以下是接受的参数描述。

stats_file, f

如果指定,过滤器将使用指定的文件保存每帧的 SSIM。当文件名为"-"时,数据将被发送到标准输出。

选择时打印的文件stats_file包含一对对格式为:的键值对,用于每一对比较的帧。

以下是每个显示参数的描述:

n

输入帧的顺序编号,从 1 开始

Y, U, V, R, G, B

指定后缀组件的比较帧的 SSIM。

All

整个帧的比较帧的 SSIM。

dB

与上述相同,但以 dB 表示。

此过滤器还支持framesync选项。

32.244.1 实例

  • 例如:
    movie=ref_movie.mpg, setpts=PTS-STARTPTS [main];
    [main][ref] ssim="stats_file=stats.log" [out]
    

    在此示例中,正在处理的输入文件与参考文件ref_movie.mpg进行比较。 每帧的 SSIM 存储在stats.log.

  • 另一个同时使用 psnr 和 ssim 的示例:
    ffmpeg -i main.mpg -i ref.mpg -lavfi  "ssim;[0:v][1:v]psnr" -f null -
    
  • 另一个使用不同容器的示例:
    ffmpeg -i main.mpg -i ref.mkv -lavfi  "[0:v]settb=AVTB,setpts=PTS-STARTPTS[main];[1:v]settb=AVTB,setpts=PTS-STARTPTS[ref];[main][ref]ssim" -f null -
    

32.245 stereo3d

在不同的立体图像格式之间进行转换。

过滤器接受以下选项:

in

设置输入的立体图像格式。

输入图像格式的可用值包括:

sbsl

并排平行(左眼为左,右眼为右)

sbsr

并排交叉眼(右眼为左,左眼为右)

sbs2l

并排平行,分辨率减半(左眼为左,右眼为右)

sbs2r

并排交叉眼,分辨率减半(右眼为左,左眼为右)

abl
tbl

上下(左眼在上,右眼在下)

abr
tbr

上下(右眼在上,左眼在下)

ab2l
tb2l

上下,分辨率减半(左眼在上,右眼在下)

ab2r
tb2r

上下,分辨率减半(右眼在上,左眼在下)

al

交替帧(左眼在第一帧,右眼在第二帧)

ar

交替帧(右眼在第一帧,左眼在第二帧)

irl

交错行(左眼从顶行开始,右眼从下一行开始)

irr

交错行(右眼从顶行开始,左眼从下一行开始)

icl

交错列,左眼优先

icr

交错列,右眼优先

默认值是 'sbsl’.

out

设置输出的立体图像格式。

sbsl

并排平行(左眼为左,右眼为右)

sbsr

并排交叉眼(右眼为左,左眼为右)

sbs2l

并排平行,分辨率减半(左眼为左,右眼为右)

sbs2r

并排交叉眼,分辨率减半(右眼为左,左眼为右)

abl
tbl

上下(左眼在上,右眼在下)

abr
tbr

上下(右眼在上,左眼在下)

ab2l
tb2l

上下,分辨率减半(左眼在上,右眼在下)

ab2r
tb2r

上下,分辨率减半(右眼在上,左眼在下)

al

交替帧(左眼在第一帧,右眼在第二帧)

ar

交替帧(右眼在第一帧,左眼在第二帧)

irl

交错行(左眼从顶行开始,右眼从下一行开始)

irr

交错行(右眼从顶行开始,左眼从下一行开始)

arbg

红蓝灰色立体(左眼使用红色滤镜,右眼使用蓝色滤镜)

argg

红绿灰色立体(左眼使用红色滤镜,右眼使用绿色滤镜)

arcg

红青灰色立体(左眼使用红色滤镜,右眼使用青色滤镜)

arch

红青半彩色立体(左眼使用红色滤镜,右眼使用青色滤镜)

arcc

红青彩色立体(左眼使用红色滤镜,右眼使用青色滤镜)

arcd

红青彩色立体,经过 Dubois 最小二乘投影优化(左眼使用红色滤镜,右眼使用青色滤镜)

agmg

绿洋红灰色立体(左眼使用绿色滤镜,右眼使用洋红色滤镜)

agmh

绿洋红半彩色立体(左眼使用绿色滤镜,右眼使用洋红色滤镜)

agmc

绿洋红彩色立体(左眼使用绿色滤镜,右眼使用洋红色滤镜)

agmd

绿洋红彩色立体,经过 Dubois 最小二乘投影优化(左眼使用绿色滤镜,右眼使用洋红色滤镜)

aybg

黄蓝灰色立体(左眼使用黄色滤镜,右眼使用蓝色滤镜)

aybh

黄蓝半彩色立体(左眼使用黄色滤镜,右眼使用蓝色滤镜)

aybc

黄蓝彩色立体(左眼使用黄色滤镜,右眼使用蓝色滤镜)

aybd

黄蓝彩色立体,经过 Dubois 最小二乘投影优化(左眼使用黄色滤镜,右眼使用蓝色滤镜)

ml

单眼输出(左眼)

mr

单眼输出(右眼)

chl

棋盘格,左眼优先

chr

棋盘格,右眼优先

icl

交错列,左眼优先

icr

交错列,右眼优先

hdmi

HDMI 帧包

默认值是 'arcd’.

32.245.1 示例

  • 将输入视频从并排平行转换为黄色/蓝色 Dubois 立体格式:
    stereo3d=sbsl:aybd
    
  • 将输入视频从上下(左眼在上,右眼在下)转换为并排交叉眼。
    stereo3d=abl:sbsr
    

32.246 streamselect, astreamselect

选择视频或音频流。

过滤器接受以下选项:

inputs

设置输入数量。默认值为 2。

map

设置输入索引以重新映射到输出。

32.246.1 命令

streamselectastreamselect过滤器支持以下命令:

map

设置输入索引以重新映射到输出。

32.246.2 示例

  • 选择前 5 秒的第一个流,其余时间选择第二个流:
    sendcmd='5.0 streamselect map 1',streamselect=inputs=2:map=0
    
  • 与上面的相同,但用于音频:
    asendcmd='5.0 astreamselect map 1',astreamselect=inputs=2:map=0
    

32.247 subtitles

使用 libass 库在输入视频顶部绘制字幕。

要启用此过滤器的编译功能,您需要使用以下方式配置 FFmpeg--enable-libass。此过滤器还需要包含 libavcodec 和 libavformat 的构建,用于将传递的字幕文件转换为 ASS(高级子站 Alpha)字幕格式。

过滤器接受以下选项:

filename, f

设置字幕文件的文件名以供读取。必须指定。

original_size

指定原始视频的大小,即 ASS 文件的内容所用视频的大小。有关此选项的语法,请检查(ffmpeg-utils)"视频大小"章节,在 ffmpeg-utils 手册中的。 由于 ASS 比例计算存在设计问题,如果长宽比发生了更改,则必须进行此调整以正确缩放字体。

fontsdir

设置一个包含可由过滤器使用的字体的目录路径。除了字体提供程序所使用的字体外,这些字体还会被使用。

alpha

处理 alpha 通道,默认情况下 alpha 通道将保持不变。

charenc

设置字幕输入字符编码。subtitles过滤器仅适用。仅在不是 UTF-8 时有用。

stream_index, si

设置字幕流索引。subtitles过滤器仅适用。

force_style

覆盖字幕的默认样式或脚本信息参数。它接受一个包含 ASS 样式格式的字符串KEY=VALUE键值对,用", "分隔。

wrap_unicode

根据 Unicode 换行算法换行。可用性要求至少为 libass 0.17.0 版本(或 LIBASS_VERSION 0x01600010),libass 必须用 libunibreak 构建。

默认情况下启用此选项,除非是内置 ASS 格式。

如果没有指定初始键,则假设第一个值指定filename.

例如,要将文件sub.srt渲染到输入视频顶部,请使用命令:

subtitles=sub.srt

这相当于:

subtitles=filename=sub.srt

要从文件渲染默认的字幕流video.mkv,请使用:

subtitles=video.mkv

要渲染文件中的第二个字幕流

subtitles=video.mkv:si=1

请使用:sub.srt使文件中的字幕流DejaVu Serif以 80% 透明的蓝色显示

subtitles=sub.srt:force_style='Fontname=DejaVu Serif,PrimaryColour=&HCCFF0000'

32.248 super2xsai

通过 Super2xSaI(Scale and Interpolate)像素艺术放大算法,以 2x 缩放并平滑输入内容。

用于放大像素艺术图像而不会降低清晰度。

32.249 swaprect

交换视频中的两个矩形对象。

过滤器接受以下选项:

w

设置对象宽度。

h

设置对象高度。

x1

设置第一个矩形的 x 坐标。

y1

设置第一个矩形的 y 坐标。

x2

设置第二个矩形的 x 坐标。

y2

设置第二个矩形的 y 坐标。

所有表达式会为每帧评估一次。

所有选项都为包含以下常量的表达式:

w
h

输入宽度和高度。

a

w / h

sar

输入样本宽高比。

dar

输入显示宽高比,与 (w / h) * sar

n

输入帧的编号,从 0 开始。

t

时间戳,以秒为单位表示。如果输入时间戳未知,则为 NAN。

pos

文件中的输入帧位置,如果未知则为 NAN;已废弃,不推荐使用

32.249.1 命令

此过滤器支持所有上述选项作为命令.

32.250 swapuv

交换 U 和 V 平面。

32.251 tblend

混合连续的视频帧。

参见blend

32.252 telecine

对视频应用电影化处理。

过滤器接受以下选项:

first_field
top, t

顶字段优先

bottom, b

底字段优先 默认值是top.

pattern

表示所要应用的抽帧模式的一串数字。 默认值是23.

Some typical patterns:

NTSC output (30i):
27.5p: 32222
24p: 23 (classic)
24p: 2332 (preferred)
20p: 33
18p: 334
16p: 3444

PAL output (25i):
27.5p: 12222
24p: 222222222223 ("Euro pulldown")
16.67p: 33
16p: 33333334

32.253 thistogram

计算并绘制输入视频的颜色分布随时间变化的直方图。

histogram视频滤镜仅显示某些时间点的单帧直方图 不同,此滤镜还会显示定义的帧数量的过去历史直方图由width选项。

计算出的直方图是图像中颜色分量分布的表示。

过滤器接受以下选项:

width, w

设置单个颜色分量输出的宽度。默认值为0。 值0意味着宽度将从输入视频中选取。 这也设置经过的直方图数量。 允许范围是 [0, 8192]。

display_mode, d

设置显示模式。 它接受以下值:

stack

每个颜色分量的图表放置在彼此之下。

parade

每个颜色分量的图像并排放置。

overlay

显示与下文内容相同的信息parade,除了代表颜色分量的图表直接叠加在彼此之上。

默认值为stack.

levels_mode, m

设置模式。可以是linear,或logarithmic。 默认值为linear.

components, c

设置要显示的颜色分量。 默认值为7.

bgopacity, b

设置背景透明度。默认值为0.9.

envelope, e

显示包络线。默认情况下未启用。

ecolor, ec

设置包络线颜色。默认值为gold.

slide

设置幻灯片模式。

幻灯片可用值为:

frame

当到达右边界时绘制新帧。

replace

用新列替换旧列。

scroll

从右向左滚动。

rscroll

从左向右滚动。

picture

绘制单个图像。

默认值为replace.

32.254 阈值

对视频流应用阈值效果。

此滤镜需要四个视频流进行阈值处理。 第一个流是我们正在过滤的流。 第二个流是持有阈值的流,第三个流持有最小值,最后,第四个流持有最大值。

滤镜接受以下选项:

planes

设置要处理的平面,未处理的平面将被复制。 默认值为0xf,所有平面都将被处理。

例如,如果第一个流像素的分量值小于第二个阈值流的像素分量阈值,则使用第三个流的值, 否则使用第四个流像素分量值。

使用颜色源滤镜可以执行各种类型的阈值处理:

32.254.1 命令

此滤镜支持与命令相同的所有选项.

32.254.2 示例

  • 二进制阈值,使用灰色作为阈值:
    ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=black -f lavfi -i color=white -lavfi threshold output.avi
    
  • 反转二进制阈值,使用灰色作为阈值:
    ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=white -f lavfi -i color=black -lavfi threshold output.avi
    
  • 截断二进制阈值,使用灰色作为阈值:
    ffmpeg -i 320x240.avi -f lavfi -i color=gray -i 320x240.avi -f lavfi -i color=gray -lavfi threshold output.avi
    
  • 阈值为零,使用灰色作为阈值:
    ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=white -i 320x240.avi -lavfi threshold output.avi
    
  • 反转阈值为零,使用灰色作为阈值:
    ffmpeg -i 320x240.avi -f lavfi -i color=gray -i 320x240.avi -f lavfi -i color=white -lavfi threshold output.avi
    

32.255 缩略图

在给定的一系列连续帧中选择最具代表性的帧。

滤镜接受以下选项:

n

设置要分析的帧批处理大小;在一个n帧集,滤镜 将从中选择其中一帧,然后处理接下来的n帧直到结束。 默认值为100.

log

设置日志级别以显示挑选的帧统计信息。 默认值为info.

由于滤镜会跟踪整个帧序列,较大的n值将导致更高的内存使用,因此不建议使用较高值。

32.255.1 示例

  • 每50帧提取一张图片:
    thumbnail=50
    
  • 使用完整的缩略图创建示例ffmpeg:
    ffmpeg -i in.avi -vf thumbnail,scale=300:200 -frames:v 1 out.png
    

32.256 拼图

将多张连续帧拼到一起。

滤镜untile可以反向操作。

滤镜接受以下选项:

layout

以以下形式设置网格大小COLUMNSxROWS。范围最高为UINT_MAX单元格。 默认值为6x5.

nb_frames

设置要在给定区域中渲染的最大帧数。必须小于等于wxh。 默认值为0,表示整个区域将被使用。

margin

设置外边框边距(以像素为单位)。范围为0到1024。 默认值为0.

padding

设置内边框厚度(即帧之间的像素数)。 对于更高级的填充选项(例如边缘具有不同值), 请参考pad视频滤镜。 范围为0到1024。 默认值为0.

color

指定未使用区域的颜色。有关此选项的语法,请检查在ffmpeg-utils手册中的“颜色”部分。 默认值为color为“黑色”。

overlap

设置多个连续帧拼图时的重叠帧数。 值必须介于0nb_frames - 1之间。 默认值为0.

init_padding

设置开始显示第一个输出帧之前最初为空的帧数。 这可控制获得第一个输出帧的时间。 值必须介于0nb_frames - 1之间。 默认值为0.

32.256.1 示例

  • 以8x8 PNG图块显示电影中的所有关键帧(-skip_frame nokey):
    ffmpeg -skip_frame nokey -i file.avi -vf 'scale=128:72,tile=8x8' -an -vsync 0 keyframes%03d.png
    

    必要时使用-vsync 0避免ffmpeg重复每个输出帧以适应原始检测帧率。

  • 显示5图片在一个帧区域中3x2frames, 之间有7像素的间距, 初始边距为2像素,使用混合的直接和命名选项:
    tile=3x2:nb_frames=5:padding=7:margin=2
    

32.257 倾斜与迁移

应用倾斜与移效果。

当你反转时间和空间会发生什么?

通常视频由几个帧组成,这些帧表示时间的不同瞬间, 并显示由帧捕获的空间演变场景。 此滤镜是这种概念的反面,灵感源于倾斜和移摄影。

过滤框架包含了组成序列事件的整个时间线, 这是通过将每个帧中的像素切片放入单个框架中获得的。然而, 由于没有无限宽度的框架,这个过程截至输入框架宽度,视频通过在每个后续帧中 滑动一个列而重新构成。为了将空间映射到时间,滤镜还对每个输入帧进行倾斜, 以保持运动。这是通过逐步地从每个输入帧中选择一个不同列来实现的。

最终结果是一种反转视差,因此远处的物体移动速度比前方的物体快。 这种视频效果的理想条件是运动非常少且背景静止, 或者运动非常快并且景深非常宽(例如乘坐火车时的宽泛的全景)。

滤镜接受以下参数:

tilt

在视频移动时进行倾斜(默认)。如果未设置,视频将根据每帧的第一列组成一个静态图像。

start

过滤开始时的处理方式(见下文)。

end

过滤结束时的处理方式(见下文)。

hold

在开始过滤之前应通过的列数。

pad

在过滤结束之前应插入的列数。

通常情况下,滤镜从第一帧开始进行移位和倾斜,并在收到最后一帧时结束。 然而,过滤开始之前,可以保留正常的视频。 以便效果逐渐被取代。同样,最后的视频帧也可以在结束时重建。 或者,也可以选择开始和结束时都只显示黑色。

none

过滤从收到第一帧立即开始,并在收到最后一帧时结束。

frame

第一帧或最后一帧在处理期间保持完整。

black

过滤开始或结束时用黑色填充。

32.258 时序交织

执行各种类型的时间场交织。

帧从1开始计数,因此第一个输入帧被视为奇数。

滤镜接受以下选项:

mode

指定交织模式。 此选项也可以仅作为一个值指定。 请参阅下方此选项的值列表。

可用值为:

merge, 0

将奇数帧移动到上场,将偶数帧移动到下场,生成一个双倍高度的帧,帧速率减半。

 ------> time
Input:
Frame 1         Frame 2         Frame 3         Frame 4

11111           22222           33333           44444
11111           22222           33333           44444
11111           22222           33333           44444
11111           22222           33333           44444

Output:
11111                           33333
22222                           44444
11111                           33333
22222                           44444
11111                           33333
22222                           44444
11111                           33333
22222                           44444
drop_even, 1

仅输出奇数帧,丢弃偶数帧,生成一个保持高度不变帧,帧速率减半。

 ------> time
Input:
Frame 1         Frame 2         Frame 3         Frame 4

11111           22222           33333           44444
11111           22222           33333           44444
11111           22222           33333           44444
11111           22222           33333           44444

Output:
11111                           33333
11111                           33333
11111                           33333
11111                           33333
drop_odd, 2

仅输出偶帧,丢弃奇数帧,生成一个保持高度不变帧,帧速率减半。

 ------> time
Input:
Frame 1         Frame 2         Frame 3         Frame 4

11111           22222           33333           44444
11111           22222           33333           44444
11111           22222           33333           44444
11111           22222           33333           44444

Output:
                22222                           44444
                22222                           44444
                22222                           44444
                22222                           44444
pad, 3

扩展每帧至全高度,但用黑色填充交替行,生成一个双倍高度帧,帧速率与输入帧率一致。

 ------> time
Input:
Frame 1         Frame 2         Frame 3         Frame 4

11111           22222           33333           44444
11111           22222           33333           44444
11111           22222           33333           44444
11111           22222           33333           44444

Output:
11111           .....           33333           .....
.....           22222           .....           44444
11111           .....           33333           .....
.....           22222           .....           44444
11111           .....           33333           .....
.....           22222           .....           44444
11111           .....           33333           .....
.....           22222           .....           44444
interleave_top, 4

交织奇数帧的上场与偶数帧的下场,生成一个保持高度不变帧,帧速率减半。

 ------> time
Input:
Frame 1         Frame 2         Frame 3         Frame 4

11111<-         22222           33333<-         44444
11111           22222<-         33333           44444<-
11111<-         22222           33333<-         44444
11111           22222<-         33333           44444<-

Output:
11111                           33333
22222                           44444
11111                           33333
22222                           44444
interleave_bottom, 5

交织奇数帧的下场与偶数帧的上场,生成一个保持高度不变帧,帧速率减半。

 ------> time
Input:
Frame 1         Frame 2         Frame 3         Frame 4

11111           22222<-         33333           44444<-
11111<-         22222           33333<-         44444
11111           22222<-         33333           44444<-
11111<-         22222           33333<-         44444

Output:
22222                           44444
11111                           33333
22222                           44444
11111                           33333
interlacex2, 6

保持高度不变的双倍帧速率。插入的帧包括 从先前输入帧的第二个时间字段和从下一输入帧的第一个时间字段。 此模式依赖于top_field_first标志。 适用于无场同步的交织视频显示。

 ------> time
Input:
Frame 1         Frame 2         Frame 3         Frame 4

11111           22222           33333           44444
 11111           22222           33333           44444
11111           22222           33333           44444
 11111           22222           33333           44444

Output:
11111   22222   22222   33333   33333   44444   44444
 11111   11111   22222   22222   33333   33333   44444
11111   22222   22222   33333   33333   44444   44444
 11111   11111   22222   22222   33333   33333   44444
mergex2, 7

将奇数帧移动到上场,将偶数帧移动到下场, 生成一个双倍高度帧,相同的帧速率。

 ------> time
Input:
Frame 1         Frame 2         Frame 3         Frame 4

11111           22222           33333           44444
11111           22222           33333           44444
11111           22222           33333           44444
11111           22222           33333           44444

Output:
11111           33333           33333           55555
22222           22222           44444           44444
11111           33333           33333           55555
22222           22222           44444           44444
11111           33333           33333           55555
22222           22222           44444           44444
11111           33333           33333           55555
22222           22222           44444           44444

数值值已弃用,但可接受以与以前版本兼容。

默认模式为merge.

flags

指定影响滤镜处理过程的标志。

可用值为flags

low_pass_filter, vlpf

在滤镜中启用线性垂直低通滤波。 当从包含高频垂直细节的进步源中创建交织目的地时, 垂直低通滤波是必需的。 滤波会减少交织‘闪烁’和产生莫奈图案。

complex_filter, cvlpf

启用复杂垂直低通滤波。 这会略微减少交织‘闪烁’和莫奈图案,但更好地保留细节和主观清晰度印象。

bypass_il

绕过已交织的帧,仅调整帧速率。

垂直低通滤波和绕过已交织帧只能mode 允许应用于interleave_top.

interleave_bottom

32.259 时序中值

从多个连续输入视频帧中取中值像素。

radius

设置中值滤镜的半径。 默认值为1。 允许范围为1到127。

planes

设置要滤镜的平面。 默认值为15,将处理所有平面。

percentile

设置中值百分位。 默认值为0.5。 默认值0.5总是取中值,而0将取最小值,1将取最大值。

32.259.1 命令

此滤镜支持上述所有选项作为命令,除选项之外radius.

32.260 中间均衡器

应用时序视频中间均衡效果。

中间视频均衡器调整一系列视频帧具有相同的直方图, 同时尽可能保持其动态性。 例如,这用于匹配一系列视频帧的曝光。

此滤镜接受以下选项:

radius

设置过滤半径。 默认值为5。 允许范围从1到127。

sigma

设置过滤精度。 默认值为0.5。 这将控制过滤的强度。 将此选项设置为0实际上不会产生影响。

planes

设置要处理的平面。 默认值为15,即所有可用平面。

32.261 混音

混合连续视频帧。

以下是接受的选项描述。

frames

要混合的连续帧的数量。 如果未指定,则默认为3。

weights

指定每个输入视频帧的权重。 每个权重用空格分隔。 如果指定的权重数小于帧数最后指定的权重将用于所有剩下未设置的权重。

scale

指定缩放值,若设置,它将与每个权重乘以像素值之和相乘, 以达到最终的目标像素值。 默认情况下缩放会根据权重的总和自动进行缩放。

planes

设置要滤镜的平面。 默认值是所有平面。 范围允许从0到15。

32.261.1 示例

  • 对7个连续帧进行平均:
    tmix=frames=7:weights="1 1 1 1 1 1 1"
    
  • 应用简单时序卷积:
    tmix=frames=3:weights="-1 3 -1"
    
  • 类似上例,但仅显示时序差异:
    tmix=frames=3:weights="-1 2 -1":scale=1
    

32.261.2 命令

此滤镜支持以下命令:

weights
scale
planes

语法与具有相同名称的选项相同。

32.262 色调映射

对来自不同动态范围的颜色进行色调映射。

此滤镜需要使用单精度浮点数据,因为它需要操作(并且可以输出)超出范围的值。需要另一个滤镜,例如zscale,将结果帧转换为可用格式。

实施的色调映射算法仅适用于线性光,因此输入数据应事先线性化(并可能正确标记)。

ffmpeg -i INPUT -vf zscale=transfer=linear,tonemap=clip,zscale=transfer=bt709,format=yuv420p OUTPUT

32.262.1 选项

滤镜接受以下选项。

tonemap

设置要使用的色调映射算法。

可能的值为:

不应用任何色调映射,仅对过亮像素进行去饱和处理。

剪辑

硬剪辑任何超出范围的值。用于提供范围内值的完美颜色准确性,同时扭曲超出范围的值。

线性

将整个参考色域拉伸到显示器的线性倍数。

伽马

在色调曲线间拟合对数传递。

Reinhard

通过简单曲线保持整体图像亮度,使用非线性对比度,导致细节扁平化和颜色准确性下降。

Hable

Reinhard更好地保留暗部和亮部细节,但会略微使整体变暗。当细节保留比颜色和亮度准确性更重要时使用。

Mobius

平滑地映射超范围值,同时尽可能保留范围内材质的对比度和颜色。当颜色准确性比细节保留更重要时使用。

默认值为无。

param

调整色调映射算法。

这会影响以下算法:

忽略。

线性

指定拉伸时使用的比例因子。默认值为 1.0。

伽马

指定函数的指数。默认值为 1.8。

剪辑

指定在剪辑前信号上乘以的额外线性系数。默认值为 1.0。

Reinhard

指定显示峰值时的局部对比度系数。默认值为 0.5,这意味着在色域值将在剪辑时约亮度的一半。

Hable

忽略。

Mobius

指定从线性到 Mobius 变换的过渡点。低于此点的所有值均确保映射为 1:1。值越高,结果越准确,但代价是失去亮部细节。默认值为 0.3,由于初始坡度陡峭,仍可以相当准确地保留色域内颜色。

desat

对超过此亮度水平的高光应用去饱和处理。参数越高,保留的颜色信息越多。此设置有助于防止超级高光的非自然泛白,将其(平滑地)变为白色。这使图像更自然,但代价是减少超范围颜色的信息。

默认值为 2.0,相对保守,主要适用于天空或直接日光照射的表面。设置为 0.0 禁用此选项。

此选项仅在输入帧具有受支持的颜色标签时有效。

peak

使用此值覆盖信号/标称/参考峰值。当显示元数据中嵌入的峰值信息不可靠或从较低范围到较高范围进行色调映射时很有用。

32.263 tpad

临时填充视频帧。

滤镜接受以下选项:

start

指定输入视频流之前的延迟帧数。默认值为 0。

stop

指定输入视频流之后的填充帧数。设置为 -1 表示无限填充。默认值为 0。

start_mode

设置添加到流开始时的帧类型。可以是添加克隆。使用添加时添加实色帧。使用克隆时添加第一帧的克隆帧。默认值为添加.

stop_mode

设置添加到流末尾的帧类型。可以是添加克隆。使用添加时添加实色帧。使用克隆时添加最后帧的克隆帧。默认值为添加.

start_duration, stop_duration

指定开始/停止延迟的持续时间。参见(ffmpeg-utils)ffmpeg-utils(1)手册中的“时间持续时间”部分以获取接受的语法。这些选项覆盖开始停止。默认值为 0。

color

指定填充区域的颜色。有关此选项的语法,请查看(ffmpeg-utils)ffmpeg-utils 手册中的“颜色”部分.

默认值为颜色是"黑色"。

32.264 转置

在输入视频中将行与列进行转置,并可选进行翻转。

它接受以下参数:

dir

指定转置方向。

可以假设以下值:

0, 4, cclock_flip

逆时针旋转 90 度并垂直翻转(默认值),即:

L.R     L.l
. . ->  . .
l.r     R.r
1, 5, clock

顺时针旋转 90 度,即:

L.R     l.L
. . ->  . .
l.r     r.R
2, 6, cclock

逆时针旋转 90 度,即:

L.R     R.r
. . ->  . .
l.r     L.l
3, 7, clock_flip

顺时针旋转 90 度并垂直翻转,即:

L.R     r.R
. . ->  . .
l.r     l.L

值在 4-7 之间时,仅在输入视频几何为纵向而非横向时才进行转置。这些值已弃用,应改用passthrough选项。

数值已弃用,应该改用符号常量。

passthrough

如果输入几何与指定值匹配,则不进行转置。它接受以下值:

none

始终进行转置。

portrait

保留纵向几何(当高度 >= 宽度).

landscape

保留横向几何(当宽度 >= 高度).

默认值为none.

例如,顺时针旋转 90 度并保留纵向布局:

transpose=dir=1:passthrough=portrait

上述命令也可以指定为:

transpose=1:portrait

32.265 transpose_npp

在输入视频中将行与列进行转置,并可选进行翻转。有关更详细的示例,请参阅transpose视频滤镜,它与此滤镜的选项基本相同。

它接受以下参数:

dir

指定转置方向。

可以假设以下值:

cclock_flip

逆时针旋转 90 度并垂直翻转。(默认值)

clock

顺时针旋转 90 度。

cclock

逆时针旋转 90 度。

clock_flip

顺时针旋转 90 度并垂直翻转。

passthrough

如果输入几何与指定值匹配,则不进行转置。它接受以下值:

none

始终进行转置。(默认值)

portrait

保留纵向几何(当高度 >= 宽度).

landscape

保留横向几何(当宽度 >= 高度).

32.266 修剪

对输入进行修剪,以便输出包含输入的一个连续子部分。

它接受以下参数:

start

指定保留部分的起始时间点,即时间戳为开始的帧将是输出中的第一帧。

end

指定将被丢弃的第一帧的时间点,即时间戳为结束的帧的前一帧将是输出中的最后一帧。

start_pts

这与开始相同,只有这个选项以时间基单位而不是秒设置起始时间戳。

end_pts

这与结束相同,只有这个选项以时间基单位而不是秒设置结束时间戳。

duration

输出的最大持续时间(以秒表示)。

start_frame

应该传递到输出的第一帧的编号。

end_frame

应该丢弃的第一帧的编号。

start, end、和duration以时长规格表示;请参阅(ffmpeg-utils)ffmpeg-utils(1)手册中的“时间持续时间”部分以获取接受的语法。

注意,前两组开始/结束选项和duration选项会查看帧时间戳,而_frame 变体则只是计数过滤器通过的帧。此外,请注意,此滤镜不会修改时间戳。如果希望输出时间戳从零开始,请在修剪滤镜之后插入 setpts 滤镜。

如果设置了多个开始或结束选项,此滤镜会尝试贪婪地保留与至少一个指定约束匹配的所有帧。要只保留同时匹配所有约束的部分,请链接多个修剪滤镜。

默认值是保留所有输入。因此,可以仅设置例如结束值,以保留指定时间之前的所有内容。

示例:

  • 删除除输入的第二分钟外的所有内容:
    ffmpeg -i INPUT -vf trim=60:120
    
  • 仅保留前一秒:
    ffmpeg -i INPUT -vf trim=duration=1
    

32.267 去预乘

使用第二流的第一平面作为 alpha 对输入视频流应用 alpha 去预乘效果。

两个流必须具有相同的维度和像素格式。

滤镜接受以下选项:

planes

设置将处理哪些平面,未处理的平面将被复制。默认值为 0xf,所有平面都将被处理。

如果格式有 1 或 2 个组件,则亮度为第 0 位。如果格式有 3 或 4 个组件:对于 RGB 格式,第 0 位是绿色,第 1 位是蓝色,第 2 位是红色;对于 YUV 格式,第 0 位是亮度,第 1 位是色度-U,第 2 位是色度-V。如果存在 alpha 通道,则始终为最后一位。

inplace

处理不需要第二个输入,而是使用输入流中的 alpha 平面。

32.268 非锐化

对输入视频进行锐化或模糊处理。

它接受以下参数:

luma_msize_x, lx

设置亮度矩阵的水平大小。它必须是介于 3 到 23 之间的奇整数。默认值为 5。

luma_msize_y, ly

设置亮度矩阵的垂直大小。它必须是介于 3 到 23 之间的奇整数。默认值为 5。

luma_amount, la

设置亮度效果强度。它必须是浮点数,合理值范围在 -1.5 到 1.5 之间。

负值会模糊输入视频,而正值会使其锐化,值为零将禁用该效果。

默认值为 1.0。

chroma_msize_x, cx

设置色度矩阵的水平大小。它必须是介于 3 到 23 之间的奇整数。默认值为 5。

chroma_msize_y, cy

设置色度矩阵的垂直大小。它必须是介于 3 到 23 之间的奇整数。默认值为 5。

chroma_amount, ca

设置色度效果强度。它必须是浮点数,合理值范围在 -1.5 到 1.5 之间。

负值会模糊输入视频,而正值会使其锐化,值为零将禁用该效果。

默认值为 0.0。

alpha_msize_x, ax

设置 alpha 矩阵的水平大小。它必须是介于 3 到 23 之间的奇整数。默认值为 5。

alpha_msize_y, ay

设置 alpha 矩阵的垂直大小。它必须是介于 3 到 23 之间的奇整数。默认值为 5。

alpha_amount, aa

设置 alpha 效果强度。它必须是浮点数,合理值范围在 -1.5 到 1.5 之间。

负值会模糊输入视频,而正值会使其锐化,值为零将禁用该效果。

默认值为 0.0。

所有参数均为可选,且默认为等价于字符串 '5:5:1.0:5:5:0.0' 的值。

32.268.1 示例

  • 应用强烈的亮度锐化效果:
    unsharp=luma_msize_x=7:luma_msize_y=7:luma_amount=2.5
    
  • 对亮度和色度参数应用强烈模糊效果:
    unsharp=7:7:-2:7:7:-2
    

32.269 去拼贴

将由拼贴图像组成的视频分解为单个图像。

输出视频的帧率是输入视频的帧率乘以图块的数量。

此过滤器与其相反平铺.

该过滤器接受以下选项:

layout

设置网格大小(即线和列的数量)。有关此选项的语法,请查阅(ffmpeg-utils)"视频尺寸"部分在ffmpeg-utils手册中.

32.269.1 示例

  • 从由25帧纵向叠加组成的静态图像文件生成1秒的视频,类似于模拟电影胶片:
    ffmpeg -r 1 -i image.jpg -vf untile=1x25 movie.mkv
    

32.270 uspp

应用超慢/简单后处理滤镜,它在几个(或 - 在quality级别8- 全部) 移位时进行图像压缩和解压缩,并对结果进行平均。

与spp的行为不同,uspp实际上使用libavcodec Snow对每种情况进行编码和解码,而spp使用类似于MJPEG的简化的仅内部8x8 DCT。

此过滤器在5.0到6.0之间的ffmpeg版本中不可用。

该过滤器接受以下选项:

quality

设置质量。此选项定义平均化的级别数量。接受范围为0-8的整数。如果设置为0,过滤器将无效果。值为8表示较高质量。每增加一个该值,速度下降约为2倍。默认值为3.

qp

强制使用固定量化参数。如果未设置,过滤器将使用视频流中的QP(如果可用)。

codec

使用指定的编解码器而不是snow。

32.271 v360

在各种格式之间转换360视频。

该过滤器接受以下选项:

input
output

设置输入/输出视频的格式。

可用格式:

e
equirect

等距圆柱投影。

c3x2
c6x1
c1x6

3x2/6x1/1x6布局的立方图。

格式特定选项:

in_pad
out_pad

为输入/输出立方图设置填充比例,值为小数。

示例值:

0

无填充。

0.01

面填充比例为1%。例如,对于1920x1280分辨率,面尺寸为640x640,填充为每侧3像素。(640 * 0.01 = 6像素)

默认值为0。 最大值为0.1.

fin_pad
fout_pad

为输入/输出立方图设置固定填充,值为像素。

默认值为0。如果大于零,它将覆盖其他填充选项。

in_forder
out_forder

设置输入/输出立方图的面排列顺序。为每个位置选择一个方向。

方向的指定:

r

l

u

d

f

b

默认值为rludfb.

in_frot
out_frot

为输入/输出立方图设置面旋转。为每个位置选择一个角度。

角度的指定:

0

顺时针0度

1

顺时针90度

2

顺时针180度

3

顺时针270度

默认值为000000.

eac

等角立方图(Equi-Angular Cubemap)。

flat
gnomonic
rectilinear

普通视频。

格式特定选项:

h_fov
v_fov
d_fov

设置输出的水平/垂直/对角视场。值为度。

如果设置了对角视场,它将覆盖水平和垂直视场。

ih_fov
iv_fov
id_fov

设置输入的水平/垂直/对角视场。值为度。

如果设置了对角视场,它将覆盖水平和垂直视场。

dfisheye

双鱼眼。

格式特定选项:

h_fov
v_fov
d_fov

设置输出的水平/垂直/对角视场。值为度。

如果设置了对角视场,它将覆盖水平和垂直视场。

ih_fov
iv_fov
id_fov

设置输入的水平/垂直/对角视场。值为度。

如果设置了对角视场,它将覆盖水平和垂直视场。

barrel
fb
barrelsplit

Facebook的360格式。

sg

正交格式。

格式特性选项:

h_fov
v_fov
d_fov

设置输出的水平/垂直/对角视场。值为度。

如果设置了对角视场,它将覆盖水平和垂直视场。

ih_fov
iv_fov
id_fov

设置输入的水平/垂直/对角视场。值为度。

如果设置了对角视场,它将覆盖水平和垂直视场。

mercator

墨卡托格式。

ball

球体格式,在后面方向产生显著失真作用。

hammer

Hammer-Aitoff地图投影格式。

sinusoidal

正弦地图投影格式。

fisheye

鱼眼投影。

格式特定选项:

h_fov
v_fov
d_fov

设置输出的水平/垂直/对角视场。值为度。

如果设置了对角视场,它将覆盖水平和垂直视场。

ih_fov
iv_fov
id_fov

设置输入的水平/垂直/对角视场。值为度。

如果设置了对角视场,它将覆盖水平和垂直视场。

pannini

Pannini投影。

格式特定选项:

h_fov

设置输出pannini参数。

ih_fov

设置输入pannini参数。

cylindrical

圆柱投影。

格式特定选项:

h_fov
v_fov
d_fov

设置输出的水平/垂直/对角视场。值为度。

如果设置了对角视场,它将覆盖水平和垂直视场。

ih_fov
iv_fov
id_fov

设置输入的水平/垂直/对角视场。值为度。

如果设置了对角视场,它将覆盖水平和垂直视场。

perspective

透视投影。(仅用于输出)

格式特定选项:

v_fov

设置透视参数。

tetrahedron

四面体投影。

tsp

截短方形金字塔投影。

he
hequirect

一半等距圆柱投影。

equisolid

等实心格式。

格式特定选项:

h_fov
v_fov
d_fov

设置输出的水平/垂直/对角视场。值为度。

如果设置了对角视场,它将覆盖水平和垂直视场。

ih_fov
iv_fov
id_fov

设置输入的水平/垂直/对角视场。值为度。

如果设置了对角视场,它将覆盖水平和垂直视场。

og

正交格式。

格式特定选项:

h_fov
v_fov
d_fov

设置输出的水平/垂直/对角视场。值为度。

如果设置了对角视场,它将覆盖水平和垂直视场。

ih_fov
iv_fov
id_fov

设置输入的水平/垂直/对角视场。值为度。

如果设置了对角视场,它将覆盖水平和垂直视场。

octahedron

八面体投影。

cylindricalea

圆柱等面积投影。

interp

设置插值方法。
注意:更复杂的插值方法需要更多的内存运行。

可用的方法:

near
nearest

最近邻法。

line
linear

双线性插值。

lagrange9

拉格朗日9次插值。

cube
cubic

双三次插值。

lanc
lanczos

Lanczos插值。

sp16
spline16

Spline16插值。

gauss
gaussian

高斯插值。

mitchell

Mitchell插值。

默认值为line.

w
h

设置输出视频的分辨率。

默认分辨率取决于格式。

in_stereo
out_stereo

设置输入/输出立体格式。

2d

2D单通道

sbs

并排显示

tb

上下显示

默认值为2d用于输入和输出格式。

yaw
pitch
roll

为输出视频设置旋转。值为度。

rorder

为输出视频设置旋转顺序。为每个位置选择一个项目。

y, Y

航向角(yaw)

p, P

俯仰角(pitch)

r, R

翻滚角(roll)

默认值为ypr.

h_flip
v_flip
d_flip

水平(交换左右)/垂直(交换上下)/深度(交换前后)翻转输出视频。布尔值。

ih_flip
iv_flip

设置输入视频是否水平/垂直翻转。布尔值。

in_trans

设置输入视频是否被转置。布尔值,默认禁用。

out_trans

设置输出视频是否需要转置。布尔值,默认禁用。

h_offset
v_offset

设置输出水平/垂直偏移量。默认为0。 允许范围为-1到1。

alpha_mask

在alpha平面中为所有未映射像素构建遮罩,并将它们标记为完全透明。布尔值,默认禁用。

reset_rot

重置输出视频的旋转。布尔值,默认禁用。

32.271.1 示例

  • 使用双三次插值将等距圆柱视频转换为具有3x2布局和1%填充的立方图:
    ffmpeg -i input.mkv -vf v360=e:c3x2:cubic:out_pad=0.01 output.mkv
    
  • 提取等角立方体(Equi-Angular Cubemap)后视图:
    ffmpeg -i input.mkv -vf v360=eac:flat:yaw=180 output.mkv
    
  • 将转置和水平翻转的等角立方体(Equi-Angular Cubemap)以并排立体格式转换为等距圆柱顶部底部立体格式:
    v360=eac:equirect:in_stereo=sbs:in_trans=1:ih_flip=1:out_stereo=tb
    

32.271.2 命令

此过滤器支持部分上述选项作为命令.

32.272 vaguedenoiser

应用基于小波的去噪器。

它将视频输入的每一帧转换为小波域, 使用Cohen-Daubechies-Feauveau 9/7。然后将一些过滤应用于 得到的系数。之后进行反小波变换。 由于小波属性,它可以产生平滑的结果, 减少图像噪声,而不模糊图像特征。

此过滤器接受以下选项:

threshold

过滤强度。数值越高,视频过滤效果越强。 硬阈值可以使用更高的阈值比软阈值 而不会导致视频显得过度过滤。默认值为2。

method

过滤器将使用的过滤方法。

它接受以下值:

hard

所有小于阈值的值将被归零。

soft

所有小于阈值的值将被归零。所有大于阈值的值将 减少阈值值。

garrote

缩放或归零系数——在(更多)软和(较少)硬阈值之间的中间项。

默认值为garrote。

nsteps

图像的分解次数。图像无法超越某个点进行分解(通常为,640x480 视频帧为8 - 由于2^9 = 512 > 480)。有效值为1到32之间的整数。默认值为6。

percent

部分或完全去噪(限制系数缩减),从0到100。默认值为85。

planes

要处理的平面列表。默认情况下处理所有平面。

type

滤镜将使用的阈值类型。

它接受以下值:

universal

用于所有分解相同的阈值。

bayes

使用的阈值也依赖于每种分解系数。

默认值是universal。

32.273 varblur

通过使用第二视频流设置模糊半径应用变量模糊滤镜。 第二流必须具备相同的尺寸。

此过滤器接受以下选项:

min_r

设置允许的最小半径。允许范围为0到254。默认值为0。

max_r

设置允许的最大半径。允许范围为1到255。默认值为8。

planes

设置要处理的平面。默认情况下使用所有平面。

varblur过滤器还支持帧同步(frame sync)选项。

32.273.1 命令

此过滤器支持所有上述选项作为命令.

32.274 vectorscope

在二维图表(称为向量示波器)中显示2个颜色分量值。

此过滤器接受以下选项:

mode, m

设置向量示波器模式。

它接受以下值:

gray
tint

图表上的灰色值显示,亮度越高,具有相同 颜色分量值的像素在图中位置更频繁。这是默认模式。

color

图表上的灰色值显示。未出现在视频帧中的周围像素值 以由选项设置的两个颜色分量渐变形式绘制。xy。第三个颜色分量是静态的。

color2

实际颜色分量值在视频帧中显示在图中。

color3

类似于color2,但是同一值的频率越高,xy在图中的值会增加另一个颜色分量,默认情况下是亮度,值取决于xy.

color4

实际视频帧中的颜色会显示在图中。如果两个不同颜色映射到相同图中位置,则选择不在图组件中的更大值的颜色。

color5

图表上的灰色值显示。类似于color但是从径向渐变中选取第三个颜色分量。

x

设置将由X轴表示的颜色分量。默认值为1.

y

设置将在Y轴上表示的颜色分量。默认值为2.

intensity, i

设置强度,用于模式:灰色、彩色、color3和color5,以增加图形中(X,Y)位置频率所代表的颜色分量的亮度。

envelope, e
none

无包络,这是默认设置。

instant

即时包络,即使最暗的单像素也将被清楚地突出显示。

peak

随时间保持图中呈现的最大和最小值。这样可以在不不断查看矢量范围的情况下仍发现超出范围的值。

peak+instant

峰值和即时包络相结合。

graticule, g

设置要绘制的参考框类型。

none
green
color
invert
opacity, o

设置参考框的透明度。

flags, f

设置参考框标志。

white

为白点绘制参考框。

black

为黑点绘制参考框。

name

绘制颜色点简短名称。

bgopacity, b

设置背景透明度。

lthreshold, l

为未在X轴或Y轴上表示的颜色分量设置低阈值。低于此值的值将被忽略。默认值为0。 注意,该值与实际每个像素分量可能具有的最大值相乘。因此,对于8位输入和低阈值为0.1的情况,实际阈值为0.1 * 255 = 25。

hthreshold, h

为未在X轴或Y轴上表示的颜色分量设置高阈值。高于此值的值将被忽略。默认值为1。 注意,该值与实际每个像素分量可能具有的最大值相乘。因此,对于8位输入和高阈值为0.9的情况,实际阈值为0.9 * 255 = 230。

colorspace, c

设置绘制参考框时使用的色彩空间类型。

auto
601
709

默认值为自动。

tint0, t0
tint1, t1

设置灰色/色彩矢量模式的颜色染色。默认情况下两个选项均为零。 这意味着没有染色,输出将保持灰色。

32.275 vidstabdetect

分析视频稳定性/防抖动。执行第1步(共2步),详见vidstabtransform第2步。

此滤镜生成一个文件,其中包含有关后续帧的相对平移和旋转变换信息,然后由vidstabtransform滤镜使用。

要启用此滤镜的编译,需要使用以下方式配置FFmpeg:--enable-libvidstab.

该滤镜接受以下选项:

result

设置用于写入变换信息的文件路径。默认值为transforms.trf.

shakiness

设置视频的抖动和摄像机的快慢程度。接受范围为1-10的整数,值为1表示轻微抖动,值为10表示强烈抖动。默认值为5。

accuracy

设置检测过程的准确性。必须是范围1-15的值。值为1表示低准确性,值为15表示高准确性。默认值为15。

stepsize

设置搜索过程的步长。最低点附近的区域以1像素分辨率扫描。默认值为6。

mincontrast

设置最小对比度。低于该值的局部测量字段将被舍弃。必须是0-1范围内的浮点值。默认值为0.3。

tripod

设置三脚架模式的参考帧编号。

如果启用,则对过滤流中的指定帧号进行比较。其目的是在几乎静止的场景中补偿所有运动并保持相机视野绝对静止。

如果设置为0,则禁用。帧的计数从1开始。

show

在结果帧中显示字段和变换。接受范围是0-2的整数。默认值为0,即禁用任何可视化。

fileformat

写入变换数据文件的格式。 可接受值为

ascii

可读的纯文本格式

binary

二进制格式,大约比ascii. (默认)

小40%。

  • 使用默认值:
    vidstabdetect
    
  • 分析非常抖动的电影,并将结果存放到文件中mytransforms.trf:
    vidstabdetect=shakiness=10:accuracy=15:result="mytransforms.trf"
    
  • 在结果视频中可视化内部变换的结果:
    vidstabdetect=show=1
    
  • 使用中等抖动性分析一个视频,使用ffmpeg:
    ffmpeg -i input -vf vidstabdetect=shakiness=5:show=1 dummy.avi
    

32.276 vidstabtransform

视频稳定性/防抖:第2步(共2步), 详见vidstabdetect第1步。

读取每帧的变换信息文件并应用/补偿。配合vidstabdetect滤镜使用,可以用于视频防抖。详见http://public.hronopik.de/vid.stab。重要的是还要使用unsharp滤镜,下文详解。

要启用此滤镜的编译,需要使用以下方式配置FFmpeg:--enable-libvidstab.

32.276.1 Options

input

设置用于读取变换的文件路径。默认值为transforms.trf.

smoothing

设置用于对相机运动进行低通滤波的帧数(值*2 + 1)。默认值为10。

例如,值为10意味着使用21帧(过去10帧和未来10帧)来使视频运动更加平稳。值越大视频越平滑,但会限制相机加速(平移/倾斜运动)。值为0是一个特殊情况,其中模拟静态相机。

optalgo

设置相机路径优化算法。

可接受的值为:

gauss

基于高斯核的低通滤波器应用于相机运动(默认)

avg

对变换进行平均计算

maxshift

设置帧平移的最大像素数。默认值为-1,表示无限制。

maxangle

设置帧旋转的最大角度(弧度,度数*PI/180)。默认值为-1,表示无限制。

crop

指定如何处理由于运动补偿可能可见的边框。

可用值为:

keep

保留上一帧的图像信息(默认)

black

将边框填充为黑色

invert

如果设置为1,则反转变换。默认值为0。

relative

按上一帧的相对值处理变换(如果设置为1),按绝对值处理变换(如果设置为0)。默认值为0。

zoom

设置百分比缩放。正值会导致缩放效果为放大,负值会导致缩小效果。默认值为0(无缩放)。

optzoom

设置为避免边框的最佳缩放。

可接受值为:

0

禁用

1

确定最佳静态缩放值(只有非常强的运动会导致边框可见)(默认)

2

确定最佳自适应缩放值(没有边框会可见),详见zoomspeed

注意,缩放处给定的值会加到此处计算出的值。

zoomspeed

设置每帧的最大百分比分缩(在optzoom设置为2时启用)。范围为0到5,默认值为0.25。

interpol

指定插值类型。

可用值为:

no

无插值

linear

仅横向线性插值

bilinear

双向线性插值(默认)

bicubic

双向三次插值(较慢)

tripod

如果设置为1,则启用虚拟三脚架模式,相当于relative=0:smoothing=0。默认值为0。

还可以使用tripod选项在vidstabdetect.

debug

如果设置为1,则增加日志详细等级。还会将检测到的全局运动写入临时文件global_motions.trf。默认值为0。

32.276.2 Examples

  • 使用ffmpeg进行典型稳定性处理,使用默认值:
    ffmpeg -i inp.mpeg -vf vidstabtransform,unsharp=5:5:0.8:3:3:0.4 inp_stabilized.mpeg
    

    注意使用unsharp滤镜,始终推荐使用。

  • 略微放大并从指定文件加载变换数据:
    vidstabtransform=zoom=5:input="mytransforms.trf"
    
  • 使视频更加平稳:
    vidstabtransform=smoothing=30
    

32.277 vflip

垂直翻转输入视频。

例如,用以下方式垂直翻转一个视频ffmpeg:

ffmpeg -i in.avi -vf "vflip" out.avi

32.278 vfrdet

检测是否为可变帧率视频。

此滤镜尝试检测输入是否为可变或恒定帧率。

最后将输出检测到的具有可变delta pts的帧数和具有恒定delta pts的帧数。 如果存在具有可变delta的帧,则还会显示遇到的最小值、最大值和平均delta值。

32.279 vibrance

增强或调节饱和度。

该滤镜接受以下选项:

intensity

设置增强强度(正值)或调节强度(负值)。默认值为0。允许范围为-2到2。

rbal

设置红色平衡。默认值为1。允许范围为-10到10。

gbal

设置绿色平衡。默认值为1。允许范围为-10到10。

bbal

设置蓝色平衡。默认值为1。允许范围为-10到10。

rlum

设置红色亮度系数。

glum

设置绿色亮度系数。

blum

设置蓝色亮度系数。

alternate

如果intensity为负并且此值设置为1,则颜色将更改, 否则,颜色将变得不那么饱和,更趋向于灰色。

32.279.1 Commands

此滤镜支持以上所有选项作为命令.

32.280 vif

获取两个输入视频之间的平均视觉信息保真度(VIF)。

此滤镜需要两个输入视频。

两个输入视频必须具有相同的分辨率和像素格式,才能使此滤镜正常工作。此外,它假定两个输入具有相同数量的帧,并逐帧进行比较。

获得的平均VIF分数通过日志系统打印出来。

滤镜存储每一帧的计算VIF分数。

此滤镜还支持framesync选项。

在下面的示例中,处理的输入文件main.mpg与参考文件进行对比。ref.mpg.

ffmpeg -i main.mpg -i ref.mpg -lavfi vif -f null -

32.281 vignette

创建或反转自然渐晕效果。

该滤镜接受以下选项:

angle, a

设置镜头角度表达式为弧度数。

该值在[0,PI/2]范围内裁剪。

默认值:"PI/5"

x0
y0

设置中心坐标表达式。分别是"w/2""h/2"默认值。

mode

设置前进/后退模式。

可用模式为:

forward

距离中心点越远,图像变得越暗。

backward

距离中心点越远,图像变得越亮。 这可以用来反转渐晕效果,尽管没有自动检测来提取镜头angle和其他设置(尚未实现)。也可以用来创建燃烧效果。

默认值为‘forward’.

eval

设置表达式评估模式(angle, x0, y0).

接受以下值:

init

在滤镜初始化时仅评估表达式一次。

frame

为每个输入帧评估表达式。这比‘init’模式慢得多,因为需要重新计算所有缩放器,但允许高级动态表达式。

默认值为‘init’.

dither

设置抖动以减少圆形条纹效果。默认值为1(启用)。

aspect

设置渐晕效果的纵横比。此设置允许调整渐晕效果的形状。 将此值设置为输入的SAR会使渐晕效果呈矩形,并遵循视频的尺寸。

默认值为1/1.

32.281.1 Expressions

表达式可以使用以下参数:alpha, x0y0分别。

w
h

输入宽度和高度

n

输入的帧数,从0开始

pts

过滤后的视频帧的PTS(显示时间戳),以TB单位表示,如果未定义则为NAN。

r

输入视频的帧率,如果未知则为NAN。

t

过滤后的视频帧的PTS(显示时间戳),以秒为单位表示,如果未定义则为NAN。

tb

输入视频的时间基数

32.281.2 Examples

  • 应用简单强烈的渐晕效果:
    vignette=PI/4
    
  • 制作闪烁的渐晕效果:
    vignette='PI/4+random(1)*PI/50':eval=frame
    

32.282 vmafmotion

获取视频的平均VMAF运动分数。 它是VMAF的组件指标之一。

获得的平均运动分数通过日志系统打印。

该滤镜接受以下选项:

stats_file

如果指定,滤镜将使用指定文件保存每一帧与上一帧的运动分数。 当文件名称为"-"时,数据发送到标准输出。

示例:

ffmpeg -i ref.mpg -vf vmafmotion -f null -

32.283 竖向堆叠

将输入视频竖直堆叠。

所有流必须具有相同的像素格式和相同的宽度。

请注意,使用此滤镜比使用叠加填充滤镜创建相同输出的速度更快。

此滤镜接受以下选项:

inputs

设置输入流的数量,默认值为2。

shortest

如果设置为1,则当最短输入终止时强制输出终止。默认值为0。

32.284 w3fdif

对输入视频进行去隔行处理(“w3fdif”代表“Weston三区域去隔行滤镜”)。

基于Martin Weston为BBC研发描述的过程,并根据Jim Easterbrook为BBC研发编写的去隔行算法实现,Weston三区域去隔行滤镜使用BBC研发计算的滤镜系数。

此滤镜使用帧中的场优势信息来决定每对场中的哪个场要在输出中放置在前。如果结果错误,请使用setfield滤镜在w3fdif滤镜之前。

有两套滤镜系数,分别称为“简单”和“复杂”。可以通过传递可选参数设置使用哪一套滤镜系数:

filter

设置隔行滤镜系数。接受以下值之一:

simple

简单滤镜系数集。

complex

更复杂的滤镜系数集。

默认值为‘complex’.

mode

要采用的隔行模式。它接受以下值之一:

frame

每帧输出一个帧。

field

每个场输出一个帧。

默认值为field.

parity

假设输入隔行视频的画面场奇偶性。它接受以下值之一:

tff

假设顶场为第一个。

bff

假设底场为第一个。

auto

启用自动检测场奇偶性。

默认值为auto。 如果隔行信息未知或解码器未导出此信息,则假定顶场为第一个。

deint

指定要去隔行处理的帧。接受以下值之一:

all

去隔行处理所有帧,

interlaced

仅去隔行处理标记为隔行的帧。

默认值为‘all’.

32.284.1 命令

此滤镜支持与选项相同的命令

32.285 波形

视频波形监视器。

波形监视器绘制颜色成分强度。默认情况下仅绘制亮度。波形的每一列对应于源视频中的像素列。

它接受以下选项:

mode, m

可以是row,或column。默认是column。 在行模式下,左侧的图表示颜色成分值为0,右侧表示为255。在列模式下,上侧表示颜色成分值为0,下侧表示为255。

intensity, i

设置强度。较小的值有助于了解具有相同亮度的值如何分布在输入的行/列中。 默认值为0.04。允许范围是[0, 1]。

mirror, r

设置镜像模式。0表示未镜像,1表示镜像。 在镜像模式下,更高的值将在row模式中显示在左侧,在column模式中显示在顶部。默认是1(镜像)。

display, d

设置显示模式。 它接受以下值:

overlay

显示的信息与parade中的信息相同, 只不过代表颜色成分的图直接叠加在一起。

这种显示模式使得更容易发现颜色成分在重叠区域相对于彼此的差异或相似之处, 例如中性色白、灰色或黑色。

stack

row模式中,颜色成分的单独图形分别并列显示或在column模式中上下显示。

parade

column模式中,颜色成分的单独图形分别并列显示或在row模式中上下显示。

使用此显示模式可以通过比较每个波形顶部和底部图的轮廓轻松识别图像高光和阴影中的颜色偏移。 由于白色、灰色和黑色的特点是红色、绿色和蓝色的量完全相等,图像的中性色区域应该显示三个波形大致宽度/高度相等。 如果不是这样,可以通过调整三个波形的水平轻松进行修正。

默认是stack.

components, c

设置显示哪些颜色成分。默认值为1,这意味着仅显示亮度或红色成分(如果输入为RGB颜色空间)。如果例如设置为7, 它将显示所有3个(如果存在)可用颜色成分。

envelope, e
none

没有包络,这是默认值。

instant

瞬时包络,图中显示的最小和最大值即使step值较小也会清楚可见。

peak

跨时间保持图中显示的最小和最大值。这样您可以在无需不断查看波形的情况下仍然发现超出范围的值。

peak+instant

峰值和瞬时包络结合在一起。

filter, f
lowpass

无过滤,这是默认值。

flat

亮度和色度组合在一起。

aflat

与上面类似,但显示蓝色与红色色度之间的差异。

xflat

与上面类似,但使用不同的颜色。

yflat

与上面类似,但再次使用不同的颜色。

chroma

仅显示色度。

color

在波形上显示实际颜色值。

acolor

与上面类似,但亮度显示色度值的频率。

graticule, g

设置显示哪些标线。

none

不显示标线。

green

显示绿色标线以显示合法广播范围。

orange

显示橙色标线以显示合法广播范围。

invert

显示反转标线以显示合法广播范围。

opacity, o

设置标线透明度。

flags, fl

设置标线标记。

numbers

在标线上方绘制数字。默认启用。

dots

使用点而不是线进行绘制。

scale, s

设置用于显示标线的缩放比例。

digital
millivolts
ire

默认是数字。

bgopacity, b

设置背景透明度。

tint0, t0
tint1, t1

设置输出的色调。 仅在使用低通滤波器且显示非叠加并且输入像素格式不是RGB时使用。

fitmode, fm

设置视频输出帧的采样宽高比。 可以用来配置波形,以避免在某一方向上拉伸过多。

none

将采样宽高比设置为1/1。

size

将采样宽高比设置为匹配视频的输入尺寸。

默认值是‘none’.

input

设置供滤镜选择的输入格式。 可以是‘all’,代表从所有可用格式中进行选择, 或‘first’,代表选择第一个可用格式。 默认值是‘first’.

32.286 编织,双编织

‘编织’滤镜接受基于场的视频输入,将每两个连续的场合并为单一帧,生成一个新的双高度剪辑,帧率和帧数减半。weave takes a field-based video input and join each two sequential fields into single frame, producing a new double height clip with half the frame rate and half the frame count.

‘双编织’滤镜的工作方式与‘编织’相同,但没有减半帧率和帧数。doubleweave works same as weave but without halving frame rate and frame count.

它接受以下选项:

first_field

设置首个场。可用值为:

top, t

将帧设置为顶场优先。

bottom, b

将帧设置为底场优先。

32.286.1 示例

  • 使用选择分场滤镜进行视频隔行处理:
    separatefields,select=eq(mod(n,4),0)+eq(mod(n,4),3),weave
    

32.287 xbr

应用xBR高质量放大滤镜,它专为像素艺术设计。它遵循一组边缘检测规则,参见https://forums.libretro.com/t/xbr-algorithm-tutorial/123.

它接受以下选项:

n

设置缩放维度:22xBR, 33xBR44xBR。 默认值是3.

32.288 xcorrelate

应用归一化交叉相关性滤镜到第一和第二视频流。

第二视频流的尺寸必须比第一视频流的尺寸小。

此滤镜接受以下选项:

planes

设置要处理的平面。

secondary

设置从第二输入视频流处理中要处理的次级视频帧,可以是首个全部。默认值是全部.

‘xcorrelate’滤镜也支持xcorrelate帧同步framesync选项。

32.289 淡入淡出

应用淡入淡出效果,从一个输入视频流到另一个输入视频流。效果将在指定持续时间内完成。

两个输入必须是恒定帧率,并具有相同的分辨率、像素格式、帧率和时间基。

此滤镜接受以下选项:

transition

设置可用的过渡效果之一:

custom
fade
wipeleft
wiperight
wipeup
wipedown
slideleft
slideright
slideup
slidedown
circlecrop
rectcrop
distance
fadeblack
fadewhite
radial
smoothleft
smoothright
smoothup
smoothdown
circleopen
circleclose
vertopen
vertclose
horzopen
horzclose
dissolve
pixelize
diagtl
diagtr
diagbl
diagbr
hlslice
hrslice
vuslice
vdslice
hblur
fadegrays
wipetl
wipetr
wipebl
wipebr
squeezeh
squeezev
zoomin
fadefast
fadeslow
hlwind
hrwind
vuwind
vdwind
coverleft
coverright
coverup
coverdown
revealleft
revealright
revealup
revealdown

默认过渡效果是淡化。

duration

设置淡入淡出的持续时间,以秒为单位。 范围是0到60秒。 默认持续时间为1秒。

offset

设置淡入淡出的开始时间,相对于第一个输入流,以秒为单位。 默认偏移量为0。

expr

为定制的过渡效果设置表达式。

表达式可以使用以下变量和函数:

X
Y

当前样本的坐标。

W
H

图像的宽度和高度。

P

过渡效果的进度。

PLANE

当前处理的平面。

A

返回当前位置和平面的第一个输入值。

B

返回当前位置和平面的第二个输入值。

a0(x, y)
a1(x, y)
a2(x, y)
a3(x, y)

返回像素值(位置x,y)的第 一/第二/第三/第四个成分的第一个输入。

b0(x, y)
b1(x, y)
b2(x, y)
b3(x, y)

返回像素值(位置x,y)的第 一/第二/第三/第四个成分的第二个输入。

32.289.1 示例

  • 从一个视频输入到另一个视频输入进行交叉淡化,使用淡化过渡效果,持续时间为2秒,起始时间偏移为5秒:
    ffmpeg -i first.mp4 -i second.mp4 -filter_complex xfade=transition=fade:duration=2:offset=5 output.mp4
    

32.290 xmedian

从多个输入视频中挑选中值像素。

此滤镜接受以下选项:

inputs

设置输入数量。 默认值为3。允许范围是从3到255。 如果输入数量为偶数,则结果将是两个中值之间的平均值。

planes

设置要过滤的平面。默认值为15,表示所有平面均处理。

percentile

设置中值百分位值。默认值为0.5。 默认值为0.5总是选择中值值,而0选择最小值,1选择最大值。

32.290.1 命令

此滤镜支持以上所有选项作为命令,不包括选项inputs.

32.291 xpsnr

获取两输入视频之间的平均(跨所有输入帧)和最小(跨所有颜色平面平均值)的扩展感知加权峰值信噪比(XPSNR)。

XPSNR是一种低复杂度、心理视觉导向的失真测量算法,用于评估两个视频流或图像之间的差异。 这对于客观量化视频和图像编解码器造成的失真非常有用,是正式主观测试的替代方案。 对数XPSNR输出值范围与传统的PSNR评估值相似,但更反映视觉编码质量的人类印象。 关于XPSNR测量的详细信息,可以在以下公开可用的文章中找到:

  • C. R. Helmrich, M. Siekmann, S. Becker, S. Bosse, D. Marpe, 和 T. Wiegand, "XPSNR: 高分辨率视频质量评估的扩展感知加权峰值信噪比",ICIEEEProc Int. Conf. Acoustics, Speech, Sig. Process. (ICASSP), virt./online, May 2020.www.ecodis.de/xpsnr.htm
  • C. R. Helmrich, S. Bosse, H. Schwarz, D. Marpe, 和 T. Wiegand, "关于扩展感知加权峰值信噪比(XPSNR)的视频压缩研究",具有不同的分辨率和比特深度,ITU 期刊: ICT Discoveries, 第3卷,第1期,第65 - 72页,2020年5月。http://handle.itu.int/11.1002/pub/8153d78b-en

当发布使用该FFmpeg过滤器获得的XPSNR评估结果时,强烈建议参考上述论文作为文档说明。该过滤器需要两个输入视频。第一个输入被视为通常未失真的参考源,并不经任何改变地传递到输出,而第二个输入为(失真)测试信号。除了位深度外,这两个视频输入必须具有相同的像素格式。此外,为了获得最佳性能,比较的两个输入视频应该采用YCbCr颜色格式。

上述提到的整体XPSNR值通过日志系统打印出来。如果输入有多个颜色平面,我们建议报告最低的XPSNR平均值。

以下参数与psnr过滤器类似,可以接受:

stats_file, f

如果指定了文件名,过滤器将使用指定的文件名保存每个独立帧和色彩平面的XPSNR值。当文件名为“-”时,该数据将发送到标准输出。

此过滤器还支持framesync选项。

32.291.1 示例

  • 对两个1080p高清视频ref_source.yuv和test_video.yuv进行XPSNR分析,均为4:2:0颜色格式,位深度为8,每秒24帧,生成日志文件“xpsnr.log”:
    ffmpeg -s 1920x1080 -framerate 24 -pix_fmt yuv420p -i ref_source.yuv -s 1920x1080 -framerate
    24 -pix_fmt yuv420p -i test_video.yuv -lavfi xpsnr="stats_file=xpsnr.log" -f null -
    
  • 对两个2160p超高清视频ref_source.yuv(位深度为8)和test_video.yuv(位深度为10)进行XPSNR分析,均为4:2:0颜色格式,每秒60帧,不生成日志文件:
    ffmpeg -s 3840x2160 -framerate 60 -pix_fmt yuv420p -i ref_source.yuv -s 3840x2160 -framerate
    60 -pix_fmt yuv420p10le -i test_video.yuv -lavfi xpsnr="stats_file=-" -f null -
    

32.292 xstack

将视频输入堆叠到自定义布局中。

所有流必须具有相同的像素格式。

过滤器接受以下选项:

inputs

设置输入流数量。默认值为2。

layout

指定输入布局。该选项要求用户显式设置所需的布局配置。这将设置输出中每个视频输入的位置。每个输入由‘|’分隔。第一个数字代表列,第二个数字代表行。数字从0开始,由‘_’分隔。您可以选择使用wX和hX,其中X表示从视频输入中取宽度或高度。当用‘+’分隔时,可以使用多个值。在这种情况下,值将进行求和。

注意,如果输入的大小不同,可能会出现间隙,因为不会填满整个输出视频帧。同样,如果其位置不足以容纳邻近视频的完整帧,则视频可能会相互重叠。

对于两个输入,默认布局为0_0|w0_0(与grid=2x1等效)。在所有其他情况下,用户必须设置布局或网格。只能同时指定gridlayout之一。如果同时指定两者,则会导致错误。

grid

指定输入的固定大小网格。此选项用于创建输入流的固定大小网格。以形式设置网格大小COLUMNSxROWS。必须有ROWS * COLUMNS输入流,它们将被排列为具有ROWS行和COLUMNS列的网格。在使用此选项时,行内的每个输入流必须具有相同的高度,并且所有行必须具有相同的宽度。

如果设置grid,则inputs选项将被忽略,并且隐式设置为ROWS * COLUMNS.

对于两个输入,默认网格为2x1(与layout=0_0|w0_0等效)。在所有其他情况下,用户必须设置布局或网格。只能同时指定gridlayout之一。如果同时指定两者,则会导致错误。

shortest

如果设置为1,则在最短输入终止时强制输出终止。默认值为0。

fill

如果设置为有效颜色,所有未使用的像素将被填充为该颜色。默认填充设置为无,因此禁用该功能。

32.292.1 示例

  • 将4个输入显示为2x2网格。

    布局:

    input1(0, 0)  | input3(w0, 0)
    input2(0, h0) | input4(w0, h0)
    
    xstack=inputs=4:layout=0_0|0_h0|w0_0|w0_h0
    

    注意,如果输入大小不同,可能会出现间隙或重叠。

  • 将4个输入显示为1x4网格。

    布局:

    input1(0, 0)
    input2(0, h0)
    input3(0, h0+h1)
    input4(0, h0+h1+h2)
    
    xstack=inputs=4:layout=0_0|0_h0|0_h0+h1|0_h0+h1+h2
    

    注意,如果输入宽度不同,将会出现未使用的空间。

  • 将9个输入显示为3x3网格。

    布局:

    input1(0, 0)       | input4(w0, 0)      | input7(w0+w3, 0)
    input2(0, h0)      | input5(w0, h0)     | input8(w0+w3, h0)
    input3(0, h0+h1)   | input6(w0, h0+h1)  | input9(w0+w3, h0+h1)
    
    xstack=inputs=9:layout=0_0|0_h0|0_h0+h1|w0_0|w0_h0|w0_h0+h1|w0+w3_0|w0+w3_h0|w0+w3_h0+h1
    

    注意,如果输入大小不同,可能会出现间隙或重叠。

  • 将16个输入显示为4x4网格。

    布局:

    input1(0, 0)       | input5(w0, 0)       | input9 (w0+w4, 0)       | input13(w0+w4+w8, 0)
    input2(0, h0)      | input6(w0, h0)      | input10(w0+w4, h0)      | input14(w0+w4+w8, h0)
    input3(0, h0+h1)   | input7(w0, h0+h1)   | input11(w0+w4, h0+h1)   | input15(w0+w4+w8, h0+h1)
    input4(0, h0+h1+h2)| input8(w0, h0+h1+h2)| input12(w0+w4, h0+h1+h2)| input16(w0+w4+w8, h0+h1+h2)
    
    xstack=inputs=16:layout=0_0|0_h0|0_h0+h1|0_h0+h1+h2|w0_0|w0_h0|w0_h0+h1|w0_h0+h1+h2|w0+w4_0|
    w0+w4_h0|w0+w4_h0+h1|w0+w4_h0+h1+h2|w0+w4+w8_0|w0+w4+w8_h0|w0+w4+w8_h0+h1|w0+w4+w8_h0+h1+h2
    

    注意,如果输入大小不同,可能会出现间隙或重叠。

32.293 yadif

对输入视频进行去隔行处理("yadif"指的是"另外一种去隔行过滤器")。

它可以接受以下参数:

mode

采用的去隔行模式。可以接受以下值之一:

0, send_frame

每帧输出一帧。

1, send_field

每个场输出一帧。

2, send_frame_nospatial

send_frame相同,但跳过空间隔行检查。

3, send_field_nospatial

send_field相同,但跳过空间隔行检查。

默认值为send_frame.

parity

为输入隔行视频假定的图像场优先级。可以接受以下值之一:

0, tff

假定上场为第一场。

1, bff

假定下场为第一场。

-1, auto

启用自动检测场优先级。

默认值为auto。如果隔行状态未知或解码器不导出此信息,则默认假定上场优先。

deint

指定要去隔行的帧。接受以下值之一:

0, all

去隔行处理所有帧。

1, interlaced

仅去隔行处理标记为隔行的帧。

默认值为all.

32.294 yadif_cuda

使用yadif算法对输入视频去隔行处理,但通过CUDA来实现,因此可以作为与nvdec和/或nvenc的GPU加速管道的一部分工作。

它可以接受以下参数:

mode

采用的去隔行模式。可以接受以下值之一:

0, send_frame

每帧输出一帧。

1, send_field

每个场输出一帧。

2, send_frame_nospatial

send_frame相同,但跳过空间隔行检查。

3, send_field_nospatial

send_field相同,但跳过空间隔行检查。

默认值为send_frame.

parity

为输入隔行视频假定的图像场优先级。可以接受以下值之一:

0, tff

假定上场为第一场。

1, bff

假定下场为第一场。

-1, auto

启用自动检测场优先级。

默认值为auto。如果隔行状态未知或解码器不导出此信息,则默认假定上场优先。

deint

指定要去隔行的帧。接受以下值之一:

0, all

去隔行处理所有帧。

1, interlaced

仅去隔行处理标记为隔行的帧。

默认值为all.

32.295 yaepblur

应用模糊滤镜,同时保留边缘("yaepblur"指的是"另外一种边缘保留模糊滤镜")。算法描述如下: "J. S. Lee,使用局部统计的数字图像增强与噪声过滤,IEEE Trans. Pattern Anal. Mach. Intell. PAMI-2,1980."

它接受以下参数:

radius, r

设置窗口半径。默认值为3。

planes, p

设置过滤哪些平面。默认仅过滤第一平面。

sigma, s

设置模糊强度。默认值为128。

32.295.1 命令

此过滤器支持与选项相同的命令

32.296 zoompan

应用缩放与平移效果。

此过滤器接受以下选项:

zoom, z

设置缩放表达式。范围为1-10。默认值为1。

x
y

设置x和y表达式。默认值为0。

d

以帧数设置持续时间表达式。此选项设置效果在单个输入图像上持续的帧数。默认值为90。

s

设置输出图像大小,默认值为 'hd720'。

fps

设置输出帧率,默认值为 '25'。

每个表达式可以包含以下常量:

in_w, iw

输入宽度。

in_h, ih

输入高度。

out_w, ow

输出宽度。

out_h, oh

输出高度。

in

输入帧计数。

on

输出帧计数。

in_time, it

以秒为单位表达的输入时间戳。如果输入时间戳未知,则为NAN。

out_time, time, ot

以秒为单位表达的输出时间戳。

x
y

对当前输入帧计算的最后一个 'x' 和 'y' 位置。

px
py

上一输入帧的最后一个输出帧的 'x' 和 'y' 或0(对于第一输入帧)。

zoom

对当前输入帧计算的最后一个缩放。

pzoom

上一输入帧最后一个输出帧的最后一个计算缩放。

duration

当前输入帧的输出帧数。从每个输入帧的 'd' 表达式计算。

pduration

为上一输入帧创建的输出帧数量。

a

有理数:输入宽度 / 输入高度。

sar

采样纵横比。

dar

显示纵横比。

32.296.1 示例

  • 放大至1.5倍,同时平移到图片中心附近某个位置:
    zoompan=z='min(zoom+0.0015,1.5)':d=700:x='if(gte(zoom,1.5),x,x+1/a)':y='if(gte(zoom,1.5),y,y+1)':s=640x360
    
  • 放大至1.5倍,同时始终平移到图片中心:
    zoompan=z='min(zoom+0.0015,1.5)':d=700:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)'
    
  • 与上述相同,但不暂停:
    zoompan=z='min(max(zoom,pzoom)+0.0015,1.5)':d=1:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)'
    
  • 仅对输入视频的第一秒放大至图片中央2倍:
    zoompan=z='if(between(in_time,0,1),2,1)':d=1:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)'
    

32.297 zscale

使用z.lib库缩放(调整大小)输入视频:https://github.com/sekrit-twc/zimg。要启用此过滤器的编译,需要将FFmpeg配置为--enable-libzimg.

zscale过滤器强制输出显示纵横比与输入一致,通过更改输出采样纵横比。

如果输入图像格式与下一个过滤器请求的格式不同,zscale过滤器会将输入转换为请求的格式。

32.297.1 选项

过滤器接受以下选项。

width, w
height, h

设置输出视频尺寸表达式。默认值为输入尺寸。

如果宽度w值为0,则使用输入宽度作为输出。如果高度h值为0,则使用输入高度作为输出。

如果仅有一个值是-n且n >= 1,zscale过滤器将使用维持输入图像纵横比的值,从其他指定维度计算。之后,它将确保计算的维度可以被n整除,并必要时调整该值。

如果两个值都是-n且n >= 1,行为将与两个值设置为0时相同,如上所述。

以下是可用于尺寸表达式的常量列表。

size, s

设置视频大小。关于此选项的语法,请查看(ffmpeg-utils)"视频大小" 部分。.

dither, d

设置抖动类型。

可能的值为:

有序
随机
误差扩散

默认值为无。

filter, f

设置调整大小过滤器的类型。

可能的值为:

双线性
三次插值
样条16
样条36
Lanczos

默认值为双线性。

range, r

设置颜色范围。

可能的值为:

输入
有限
完全

默认值与输入相同。

primaries, p

设置颜色原点。

可能的值为:

输入
709
未指定
170m
240m
2020

默认值与输入相同。

transfer, t

设置传输特性。

可能的值为:

输入
709
未指定
601
线性
2020_10
2020_12
smpte2084
iec61966-2-1
arib-std-b67

默认值与输入相同。

matrix, m

设置色彩空间矩阵。

可能的值为:

输入
709
未指定
470bg
170m
2020_ncl
2020_cl

默认值与输入相同。

rangein, rin

设置输入颜色范围。

可能的值为:

输入
有限
完全

默认值与输入相同。

primariesin, pin

设置输入颜色原点。

可能的值为:

输入
709
未指定
170m
240m
2020

默认值与输入相同。

transferin, tin

设置输入传输特性。

可能的值为:

输入
709
未指定
601
线性
2020_10
2020_12

默认值与输入相同。

matrixin, min

设置输入色彩空间矩阵。

可能的值为:

输入
709
未指定
470bg
170m
2020_ncl
2020_cl
chromal, c

设置输出颜色位置。

可能的值是:

输入
中心
左上
顶部
左下
底部
chromalin, cin

设置输入颜色位置。

可能的值是:

输入
中心
左上
顶部
左下
底部
npl

设置标称峰值亮度。

param_a

缩放过滤器的参数A。对于双三次为“b”参数,对于Lanczos为滤波器抽头数量。

param_b

缩放过滤器的参数B。对于双三次为“c”参数。

这些值wh选项是包含以下常量的表达式:

in_w
in_h

输入的宽度和高度

iw
ih

这些与in_win_h.

out_w
out_h

输出(缩放后)的宽度和高度

ow
oh

这些与out_wout_h

a

iw / ih

sar

输入样本纵横比

dar

输入显示纵横比。从计算得出(iw / ih) * sar.

hsub
vsub

输入颜色水平和垂直抽样值。例如,对于像素格式"yuv422p"hsub是2,vsub是1。

ohsub
ovsub

输出颜色水平和垂直抽样值。例如,对于像素格式"yuv422p"hsub是2,vsub是1。

32.297.2 命令

此过滤器支持以下命令:

width, w
height, h

设置输出视频维度表达式。 命令接受与对应选项相同的语法。

如果指定的表达式无效,则保持当前值。

33 OpenCL视频过滤器

以下是当前可用的OpenCL视频过滤器的描述。

若要启用这些过滤器的编译,您需要通过以下方式配置FFmpeg--enable-opencl.

运行OpenCL过滤器需要您初始化硬件设备并将该设备传递给任何过滤图中的所有过滤器。

-init_hw_device opencl[=名称][:设备[,键=值...]]

初始化类型为opencl的新的硬件设备,称为名称, 使用给定的设备参数。

-filter_hw_device 名称

将名为名称的硬件设备传递给任何过滤图中的所有过滤器。

有关更详细信息,请参阅https://www.ffmpeg.org/ffmpeg.html#Advanced-Video-options

  • 选择第二个平台上的第一个设备,并使用默认参数运行avgblur_opencl滤波器的示例。
    -init_hw_device opencl=gpu:1.0 -filter_hw_device gpu -i INPUT -vf "hwupload, avgblur_opencl, hwdownload" OUTPUT
    

由于OpenCL过滤器无法访问普通内存中的帧数据,因此所有帧数据都需要上传(hwupload)到连接到合适设备的硬件表面,然后下载(hwdownload)回普通内存。注意hwupload将上传到与软件帧相同布局的表面,因此可能需要在之前立即添加一个format过滤器以使输入进入正确的格式,并且hwdownload不支持所有格式输出——可能需要在图中随后插入一个额外的format过滤器以使输出处于支持的格式中。

33.1 avgblur_opencl

应用平均模糊过滤器。

过滤器接受以下选项:

sizeX

设置水平半径大小。 范围为[1, 1024]默认值为1.

planes

设置要过滤的平面。默认值为0xf,表示对所有平面进行处理。

sizeY

设置垂直半径大小。范围为[1, 1024]默认值为0。如果为零,sizeX值将被使用。

33.1.1 示例

  • 应用平均模糊过滤器,水平和垂直尺寸均为3,将输出的每个像素设置为输入中以该像素为中心的7x7区域的平均值。对于图像边缘上的像素,该区域不会超出图像边界,因此不使用超范围的坐标进行计算。
    -i INPUT -vf "hwupload, avgblur_opencl=3, hwdownload" OUTPUT
    

33.2 boxblur_opencl

对输入视频应用箱模糊算法。

它接受以下参数:

luma_radius, lr
luma_power, lp
chroma_radius, cr
chroma_power, cp
alpha_radius, ar
alpha_power, ap

以下是接受选项的说明。

luma_radius, lr
chroma_radius, cr
alpha_radius, ar

设置用于模糊对应输入平面的框半径的表达式。

半径值必须是非负数,且不得大于表达式的值min(w,h)/2对应于亮度和透明度平面,并且对于色度平面的值不得超过min(cw,ch)/2表达式的值。

默认值为luma_radius“2”。如果未指定,则chroma_radiusalpha_radius默认值为为对应于设置的值。luma_radius.

表达式可以包含以下常量:

w
h

以像素为单位的输入宽度和高度。

cw
ch

以像素为单位的输入色度图像宽度和高度。

hsub
vsub

水平和垂直色度抽样值。例如,对于像素格式“yuv422p”,hsub为2,vsub为1。

luma_power, lp
chroma_power, cp
alpha_power, ap

指定箱模糊过滤器应用于对应平面的次数。

的默认值为2。如果未指定,则luma_power is 2. If not specified, chroma_poweralpha_power默认值为为对应于设置的值。luma_power.

值为0将关闭该效果。

33.2.1 示例

应用箱模糊过滤器,将输出的每个像素设置为每个平面对应的箱半径的平均值luma_radius, chroma_radius, alpha_radius。过滤器将对对应的平面应用luma_power, chroma_power, alpha_power次。对于图像边缘上的像素,箱半径不会超出图像边界,因此不使用超范围的坐标进行计算。

  • 应用箱模糊过滤器,亮度、色度和透明度半径设置为2,亮度、色度和透明度功率设置为3。过滤器将运行3次,每次的箱半径为2,应用于图像的所有平面。
    -i INPUT -vf "hwupload, boxblur_opencl=luma_radius=2:luma_power=3, hwdownload" OUTPUT
    -i INPUT -vf "hwupload, boxblur_opencl=2:3, hwdownload" OUTPUT
    
  • 应用箱模糊过滤器,亮度半径设置为2,亮度功率设置为1,色度半径设置为4,色度功率设置为5,透明度半径设置为3,透明度功率设置为7。

    对于亮度平面,将运行一次2x2箱半径。

    对于色度平面,将运行5次4x4箱半径。

    对于透明度平面,将运行7次3x3箱半径。

    -i INPUT -vf "hwupload, boxblur_opencl=2:1:4:5:3:7, hwdownload" OUTPUT
    

33.3 colorkey_opencl

RGB颜色空间色键操作。

过滤器接受以下选项:

color

将被替换为透明的颜色。

similarity

与键颜色的相似度百分比。

0.01仅匹配确切键颜色,而1.0匹配所有颜色。

blend

混合百分比。

0.0使像素完全透明或完全不透明。

更高的值会导致半透明像素,像素颜色与键颜色越相似,透明度越高。

33.3.1 示例

  • 将输入中每个接近绿色的像素设置为透明,并稍微进行混合:
    -i INPUT -vf "hwupload, colorkey_opencl=green:0.3:0.1, hwdownload" OUTPUT
    

33.4 convolution_opencl

应用3x3,5x5,7x7矩阵的卷积。

过滤器接受以下选项:

0m
1m
2m
3m

设置每个平面的矩阵。 矩阵是9, 25 或 49 个有符号数字的序列。 每个平面的默认值是0 0 0 0 1 0 0 0 0.

0rdiv
1rdiv
2rdiv
3rdiv

设置每个平面的计算值的乘数。 如果未设置或为0,将使用所有矩阵元素的和。 选项值必须是大于或等于的浮点数0.0。默认值是1.0.

0bias
1bias
2bias
3bias

设置每个平面的偏移值。此值将加到乘积结果上。 对于使整个图像更亮或更暗很有用。 选项值必须是大于或等于的浮点数0.0。默认值是0.0.

33.4.1 示例

  • 应用锐化:
    -i INPUT -vf "hwupload, convolution_opencl=0 -1 0 -1 5 -1 0 -1 0:0 -1 0 -1 5 -1 0 -1 0:0 -1 0 -1 5 -1 0 -1 0:0 -1 0 -1 5 -1 0 -1 0, hwdownload" OUTPUT
    
  • 应用模糊:
    -i INPUT -vf "hwupload, convolution_opencl=1 1 1 1 1 1 1 1 1:1 1 1 1 1 1 1 1 1:1 1 1 1 1 1 1 1 1:1 1 1 1 1 1 1 1 1:1/9:1/9:1/9:1/9, hwdownload" OUTPUT
    
  • 应用边缘增强:
    -i INPUT -vf "hwupload, convolution_opencl=0 0 0 -1 1 0 0 0 0:0 0 0 -1 1 0 0 0 0:0 0 0 -1 1 0 0 0 0:0 0 0 -1 1 0 0 0 0:5:1:1:1:0:128:128:128, hwdownload" OUTPUT
    
  • 应用边缘检测:
    -i INPUT -vf "hwupload, convolution_opencl=0 1 0 1 -4 1 0 1 0:0 1 0 1 -4 1 0 1 0:0 1 0 1 -4 1 0 1 0:0 1 0 1 -4 1 0 1 0:5:5:5:1:0:128:128:128, hwdownload" OUTPUT
    
  • 应用包含对角线的拉普拉斯边缘检测:
    -i INPUT -vf "hwupload, convolution_opencl=1 1 1 1 -8 1 1 1 1:1 1 1 1 -8 1 1 1 1:1 1 1 1 -8 1 1 1 1:1 1 1 1 -8 1 1 1 1:5:5:5:1:0:128:128:0, hwdownload" OUTPUT
    
  • 应用浮雕效果:
    -i INPUT -vf "hwupload, convolution_opencl=-2 -1 0 -1 1 1 0 1 2:-2 -1 0 -1 1 1 0 1 2:-2 -1 0 -1 1 1 0 1 2:-2 -1 0 -1 1 1 0 1 2, hwdownload" OUTPUT
    

33.5 erosion_opencl

对视频应用侵蚀效果。

此过滤器将像素替换为局部(3x3)最小值。

它接受以下选项:

threshold0
threshold1
threshold2
threshold3

每个平面的最大改变限制。范围是[0, 65535]默认值是65535。 如果0,平面将保持不变。

coordinates

指定参考像素的标志。 范围是[0, 255]默认值是255,即使用所有八个像素。

标志对以为中心的局部3x3坐标区域x:

1 2 3

4 x 5

6 7 8

33.5.1 示例

  • 应用侵蚀过滤器,threshold0设置为30,threshold1设置为40,threshold2设置为50,坐标设置为231,将输出的每个像素设置为输入中以该像素为中心的3x3区域像素(1,2,3,6,7,8)的局部最小值。 如果输入像素和局部最小值之间的差异超过对应平面的阈值,输出像素将设置为输入像素减去对应平面的阈值。
    -i INPUT -vf "hwupload, erosion_opencl=30:40:50:coordinates=231, hwdownload" OUTPUT
    

33.6 deshake_opencl

基于特征点的视频稳定过滤器。

过滤器接受以下选项:

tripod

通过防止原始帧的任何相机移动来模拟三脚架。默认值是0.

debug

是否显示额外的调试信息,无论是在处理后的输出中还是在控制台中。

注意,要查看控制台调试输出,还需要传递-v verbose给ffmpeg。

在输出视频中查看点匹配仅支持RGB输入。

默认值是0.

adaptive_crop

是否在边界处进行一点裁剪以减少镜像像素的数量。

默认值是1.

refine_features

是否在亚像素级别上精细化特征点。

可以关闭此选项以稍微提高性能,但会降低精度。

默认值是1.

smooth_strength

从中应用平滑路径强度0.01.0.

1.0是最大平滑强度,而小于该值的值则减少平滑强度。

0.0导致过滤器基于每帧自适应选择平滑强度。

默认值是0.0.

smooth_window_multiplier

控制平滑窗口的大小(缓冲以确定运动信息的帧数)。

平滑窗口的大小通过将视频帧率乘以此数字来确定。

可接受的范围为0.110.0.

更大的值增加了可用于确定如何平滑相机路径的运动数据,使其可能改善平滑性,但也增加了延迟和内存使用。

默认值是2.0.

33.6.1 示例

  • 以固定的中等平滑强度稳定视频:
    -i INPUT -vf "hwupload, deshake_opencl=smooth_strength=0.5, hwdownload" OUTPUT
    
  • 使用调试(无论是在控制台还是渲染视频中)稳定视频:
    -i INPUT -filter_complex "[0:v]format=rgba, hwupload, deshake_opencl=debug=1, hwdownload, format=rgba, format=yuv420p" -v verbose OUTPUT
    

33.7 dilation_opencl

对视频应用膨胀效果。

此过滤器将像素替换为局部(3x3)最大值。

它接受以下选项:

threshold0
threshold1
threshold2
threshold3

每个平面的最大改变限制。范围是[0, 65535]默认值是65535。 如果0,平面将保持不变。

coordinates

指定参考像素的标志。 范围是[0, 255]默认值是255,即使用所有八个像素。

标志对以为中心的局部3x3坐标区域x:

1 2 3

4 x 5

6 7 8

33.7.1 示例

  • 应用膨胀过滤器,threshold0设置为30,threshold1设置为40,threshold2设置为50,坐标设置为231,将输出的每个像素设置为输入中以该像素为中心的3x3区域像素(1,2,3,6,7,8)的局部最大值。如果输入像素和局部最大值之间的差异超过对应平面的阈值,输出像素将设置为输入像素加上对应平面的阈值。
    -i INPUT -vf "hwupload, dilation_opencl=30:40:50:coordinates=231, hwdownload" OUTPUT
    

33.8 nlmeans_opencl

通过OpenCL实现的非局部均值去噪过滤器,此过滤器接受与nlmeans.

33.9 overlay_opencl

将一个视频覆盖在另一个视频之上。

它接收两个输入并生成一个输出。第一个输入是“主体”视频,第二个输入覆盖在第一输入之上。 此过滤器要求所有输入具有相同的内存布局。因此,可能需要进行格式转换。

过滤器接受以下选项:

x

设置叠加视频在主视频上的 x 坐标。 默认值是0.

y

设置叠加视频在主视频上的 y 坐标。 默认值是0.

33.9.1 示例

  • 将图片 LOGO 覆盖在输入视频的左上角。两个输入都是 yuv420p 格式。
    -i INPUT -i LOGO -filter_complex "[0:v]hwupload[a], [1:v]format=yuv420p, hwupload[b], [a][b]overlay_opencl, hwdownload" OUTPUT
    
  • 输入的颜色通道具有相同的内存布局,但覆盖层有额外的 Alpha 平面,例如 INPUT 是 yuv420p,而 LOGO 是 yuva420p。
    -i INPUT -i LOGO -filter_complex "[0:v]hwupload[a], [1:v]format=yuva420p, hwupload[b], [a][b]overlay_opencl, hwdownload" OUTPUT
    

33.10 pad_opencl

为输入图像添加填充,并将原始输入放置在指定的x, y坐标。

它接受以下选项:

width, w
height, h

指定添加填充后的输出图像大小的表达式。如果widthheight的值为 0,则输出使用相应的输入大小。

width表达式可以引用 expression can reference the value set by the height表达式设置的值,反之亦然。

默认值为widthheight为 0。

x
y

指定在填充区域内放置输入图像的偏移量,以相对于输出图像顶部/左侧边框进行计算。

x表达式可以引用 expression can reference the value set by the y表达式设置的值,反之亦然。

默认值为xy为 0。

如果xy的值为负数,它们会被更改为使输入图像居中于填充区域。

color

指定填充区域的颜色。关于该选项的语法,请检查(ffmpeg-utils)“颜色”部分在 ffmpeg-utils 手册中.

aspect

与其填充到分辨率,不如按比例填充。

对于width, height, xy选项,它们的值是包含以下常量的表达式:

in_w
in_h

输入视频的宽度和高度。

iw
ih

这些与in_win_h.

out_w
out_h

输出宽度和高度(填充区域大小),即由widthheight表达式指定的值。

ow
oh

这些与out_wout_h.

x
y

x 和 y 偏移量,由xy表达式指定,或者是 NAN(如果尚未指定)。

a

iw / ih

sar

输入采样宽高比

dar

输入显示宽高比,与 (iw / ih) * sar

33.11 prewitt_opencl

对输入视频流应用 Prewitt 算子(https://en.wikipedia.org/wiki/Prewitt_operator)。

此滤镜接受以下选项:

planes

设置要过滤的平面。默认值是0xf,表示处理所有平面。

scale

设置与过滤结果相乘的值。 取值范围为[0.0, 65535],默认值为1.0.

delta

设置与过滤结果相加的值。 取值范围为[-65535, 65535],默认值为0.0.

33.11.1 示例

  • 应用 Prewitt 算子,比例设置为 2,偏移量设置为 10。
    -i INPUT -vf "hwupload, prewitt_opencl=scale=2:delta=10, hwdownload" OUTPUT
    

33.12 program_opencl

使用 OpenCL 程序过滤视频。

source

OpenCL 程序源文件。

kernel

程序中的内核名称。

inputs

滤镜的输入数量。默认为 1。

size, s

输出帧的尺寸。默认为与第一个输入相同。

program_opencl滤镜还支持framesync选项。

程序源文件必须包含带有提供名称的内核函数,该函数将对每个输出平面运行一次。每个平面上的运行都将在一个单独的二维全局 NDRange 中排队,每个要生成的像素都有一个工作项。每个工作项的全局 ID 偏移因此是目标图像中像素的坐标。

内核函数需要提供以下参数:

  • 目标图像,__write_only image2d_t.

    此图像将成为输出;内核应写入所有内容。

  • 帧索引,unsigned int.

    这是从零开始的计数器,每帧递增 1。

  • 源图像,__read_only image2d_t.

    这些是每个输入的最新图像。内核可以从中读取以生成输出,但不能写入它们。

示例程序:

  • 将输入复制到输出(输出必须与输入大小相同)。
    __kernel void copy(__write_only image2d_t destination,
                       unsigned int index,
                       __read_only  image2d_t source)
    {
        const sampler_t sampler = CLK_NORMALIZED_COORDS_FALSE;
    
        int2 location = (int2)(get_global_id(0), get_global_id(1));
    
        float4 value = read_imagef(source, sampler, location);
    
        write_imagef(destination, location, value);
    }
    
  • 应用一个简单的转换,通过增加索引计数器来旋转输入。像素值通过采样器线性插值,输出不需要与输入具有相同的尺寸。
    __kernel void rotate_image(__write_only image2d_t dst,
                               unsigned int index,
                               __read_only  image2d_t src)
    {
        const sampler_t sampler = (CLK_NORMALIZED_COORDS_FALSE |
                                   CLK_FILTER_LINEAR);
    
        float angle = (float)index / 100.0f;
    
        float2 dst_dim = convert_float2(get_image_dim(dst));
        float2 src_dim = convert_float2(get_image_dim(src));
    
        float2 dst_cen = dst_dim / 2.0f;
        float2 src_cen = src_dim / 2.0f;
    
        int2   dst_loc = (int2)(get_global_id(0), get_global_id(1));
    
        float2 dst_pos = convert_float2(dst_loc) - dst_cen;
        float2 src_pos = {
            cos(angle) * dst_pos.x - sin(angle) * dst_pos.y,
            sin(angle) * dst_pos.x + cos(angle) * dst_pos.y
        };
        src_pos = src_pos * src_dim / dst_dim;
    
        float2 src_loc = src_pos + src_cen;
    
        if (src_loc.x < 0.0f      || src_loc.y < 0.0f ||
            src_loc.x > src_dim.x || src_loc.y > src_dim.y)
            write_imagef(dst, dst_loc, 0.5f);
        else
            write_imagef(dst, dst_loc, read_imagef(src, sampler, src_loc));
    }
    
  • 将两个输入混合,使用的每个输入的量随着索引计数器而变化。
    __kernel void blend_images(__write_only image2d_t dst,
                               unsigned int index,
                               __read_only  image2d_t src1,
                               __read_only  image2d_t src2)
    {
        const sampler_t sampler = (CLK_NORMALIZED_COORDS_FALSE |
                                   CLK_FILTER_LINEAR);
    
        float blend = (cos((float)index / 50.0f) + 1.0f) / 2.0f;
    
        int2  dst_loc = (int2)(get_global_id(0), get_global_id(1));
        int2 src1_loc = dst_loc * get_image_dim(src1) / get_image_dim(dst);
        int2 src2_loc = dst_loc * get_image_dim(src2) / get_image_dim(dst);
    
        float4 val1 = read_imagef(src1, sampler, src1_loc);
        float4 val2 = read_imagef(src2, sampler, src2_loc);
    
        write_imagef(dst, dst_loc, val1 * blend + val2 * (1.0f - blend));
    }
    

33.13 remap_opencl

使用第二个:Xmap 和第三个:Ymap 输入视频流重新映射像素。

目标像素在位置 (X, Y) 的值将从源位置 (x, y) 提取,其中 x = Xmap(X, Y),y = Ymap(X, Y)。如果映射值超出范围,则目标像素使用零值。

Xmap 和 Ymap 输入视频流的尺寸必须相同。输出视频流将具有与 Xmap/Ymap 视频流相同的尺寸。 Xmap 和 Ymap 输入视频流为 32 位浮点像素格式,单通道。

interp

指定用于像素重新映射的插值方法。 允许的值为nearlinear。 默认值为linear.

fill

指定未映射像素的颜色。关于此选项的语法,请检查(ffmpeg-utils)“颜色”部分在 ffmpeg-utils 手册中。默认颜色为black.

33.14 roberts_opencl

对输入视频流应用 Roberts 交叉算子(https://en.wikipedia.org/wiki/Roberts_cross)。

此滤镜接受以下选项:

planes

设置要过滤的平面。默认值是0xf,表示处理所有平面。

scale

设置与过滤结果相乘的值。 取值范围为[0.0, 65535],默认值为1.0.

delta

设置与过滤结果相加的值。 取值范围为[-65535, 65535],默认值为0.0.

33.14.1 示例

  • 应用 Roberts 交叉算子,比例设置为 2,偏移量设置为 10。
    -i INPUT -vf "hwupload, roberts_opencl=scale=2:delta=10, hwdownload" OUTPUT
    

33.15 sobel_opencl

对输入视频流应用 Sobel 算子(https://en.wikipedia.org/wiki/Sobel_operator)。

此滤镜接受以下选项:

planes

设置要过滤的平面。默认值是0xf,表示处理所有平面。

scale

设置与过滤结果相乘的值。 取值范围为[0.0, 65535],默认值为1.0.

delta

设置与过滤结果相加的值。 取值范围为[-65535, 65535],默认值为0.0.

33.15.1 示例

  • 应用 Sobel 算子,比例设置为 2,偏移量设置为 10。
    -i INPUT -vf "hwupload, sobel_opencl=scale=2:delta=10, hwdownload" OUTPUT
    

33.16 tonemap_opencl

通过色调映射进行 HDR(PQ/HLG)到 SDR 的转换。

它接受以下参数:

tonemap

指定要使用的色调映射算子。与tonemap.

param

中色调映射选项相同。tonemap.

desat

针对超出此亮度级别的高光应用去饱和处理。参数越高,将保留越多的颜色信息。此设置可以防止超高亮高光的颜色失真,从而(平滑地)转变为白色。这使得图像更加自然,但代价是降低了超出范围颜色的信息。

默认值为 0.5,此算法与目前的 CPU 版本 tonemap 略有不同。设置为 0.0 将禁用此选项。

threshold

色调映射算法参数会针对每个场景进行优化。使用一个阈值来检测场景是否发生变化。如果当前帧平均亮度与当前运行平均值之间的距离超过阈值,则会重新计算场景平均和峰值亮度。 默认值为 0.2。

format

指定输出像素格式。

当前支持的格式有:

p010
nv12
range, r

设置输出颜色范围。

可能的值是:

tv/mpeg
pc/jpeg

默认与输入相同。

primaries, p

设置输出颜色主色调。

可能的值是:

bt709
bt2020

默认与输入相同。

transfer, t

设置输出传输特性。

可能的值是:

bt709
bt2020

默认值为 bt709。

matrix, m

设置输出颜色空间矩阵。

可能的值是:

bt709
bt2020

默认与输入相同。

33.16.1 示例

  • 使用线性算子将 HDR(PQ/HLG) 视频转换为 bt2020 传输特性 p010 格式。
    -i INPUT -vf "format=p010,hwupload,tonemap_opencl=t=bt2020:tonemap=linear:format=p010,hwdownload,format=p010" OUTPUT
    

33.17 unsharp_opencl

锐化或模糊输入视频。

它接受以下参数:

luma_msize_x, lx

设置亮度矩阵的水平大小。 取值范围是[1, 23],默认值是5.

luma_msize_y, ly

设置亮度矩阵的垂直大小。 取值范围是[1, 23],默认值是5.

luma_amount, la

设置亮度效果的强度。 取值范围是[-10, 10],默认值是1.0.

负值会模糊输入视频,正值会锐化视频,值为零则禁用效果。

chroma_msize_x, cx

设置色度矩阵的水平大小。 取值范围是[1, 23],默认值是5.

chroma_msize_y, cy

设置色度矩阵的垂直大小。 取值范围是[1, 23],默认值是5.

chroma_amount, ca

设置色度效果的强度。 取值范围是[-10, 10],默认值是0.0.

负值会模糊输入视频,正值会锐化视频,值为零则禁用效果。

所有参数都是可选的,默认值为字符串 '5:5:1.0:5:5:0.0' 的等效值。

33.17.1 示例

  • 应用强烈的亮度锐化效果:
    -i INPUT -vf "hwupload, unsharp_opencl=luma_msize_x=7:luma_msize_y=7:luma_amount=2.5, hwdownload" OUTPUT
    
  • 同时对亮度和色度进行强烈的模糊处理:
    -i INPUT -vf "hwupload, unsharp_opencl=7:7:-2:7:7:-2, hwdownload" OUTPUT
    

33.18 xfade_opencl

通过使用 OpenCL 跨帧融合两个视频,实现自定义过渡效果。

它接受以下选项:

transition

设置一个可能的过渡效果。

custom

选择自定义过渡效果,实际的过渡描述会从源和内核选项中获取。

fade
wipeleft
wiperight
wipeup
wipedown
slideleft
slideright
slideup
slidedown

默认过渡效果是 fade。

source

自定义过渡的 OpenCL 程序源文件。

kernel

设置要从程序源文件中使用的内核名称。

duration

设置视频过渡的持续时间。

offset

相对于第一个视频设置过渡开始的时间。

程序源文件必须包含带有提供名称的内核函数,该函数将对每个输出平面运行一次。每个平面上的运行都将在一个单独的二维全局 NDRange 中排队,每个要生成的像素都有一个工作项。每个工作项的全局 ID 偏移因此是目标图像中像素的坐标。

内核函数需要提供以下参数:

  • 目标图像,__write_only image2d_t.

    此图像将成为输出;内核应写入所有内容。

  • 第一个源图像,__read_only image2d_t。 第二个源图像,__read_only image2d_t.

    这些是每个输入的最新图像。内核可以从中读取以生成输出,但不能写入它们。

  • 过渡进度值,float。此值总是在 0 和 1 之间(含)。

示例程序:

  • 应用网点帷幕过渡效果:
    __kernel void blend_images(__write_only image2d_t dst,
                               __read_only  image2d_t src1,
                               __read_only  image2d_t src2,
                               float progress)
    {
        const sampler_t sampler = (CLK_NORMALIZED_COORDS_FALSE |
                                   CLK_FILTER_LINEAR);
        int2  p = (int2)(get_global_id(0), get_global_id(1));
        float2 rp = (float2)(get_global_id(0), get_global_id(1));
        float2 dim = (float2)(get_image_dim(src1).x, get_image_dim(src1).y);
        rp = rp / dim;
    
        float2 dots = (float2)(20.0, 20.0);
        float2 center = (float2)(0,0);
        float2 unused;
    
        float4 val1 = read_imagef(src1, sampler, p);
        float4 val2 = read_imagef(src2, sampler, p);
        bool next = distance(fract(rp * dots, &unused), (float2)(0.5, 0.5)) < (progress / distance(rp, center));
    
        write_imagef(dst, p, next ? val1 : val2);
    }
    

34 VAAPI 视频滤镜

VAAPI 视频滤镜通常与 VAAPI 解码器和 VAAPI 编码器一起使用。以下是 VAAPI 视频滤镜的说明。

要启用这些滤镜的编译,您需要将 FFmpeg 配置为--enable-vaapi.

要使用 vaapi 滤镜,您需要正确设置 vaapi 设备。有关更多信息,请阅读https://trac.ffmpeg.org/wiki/Hardware/VAAPI

34.1 overlay_vaapi

将一个视频覆盖在另一个视频的顶部。

它需要两个输入,并有一个输出。第一个输入是“主”视频,第二个输入被叠加。

该滤镜接受以下选项:

x
y

设置覆盖视频在主视频上的 x 和 y 坐标表达式。

默认值是 "0"。

w
h

设置表达式来指定主视频上覆盖视频的宽度和高度。

默认值是'w'使用'overlay_iw',而'h'使用'overlay_ih*w/overlay_iw'。

表达式可以包含以下参数:

main_w, W
main_h, H

主输入视频的宽度和高度。

overlay_iw
overlay_ih

覆盖输入视频的宽度和高度。

overlay_w, w
overlay_h, h

覆盖输出视频的宽度和高度。

overlay_x, x
overlay_y, y

覆盖层在主视频中的位置。

alpha

设置覆盖视频的透明度。允许范围是0.0到1.0。 值越大,透明度越低。 默认值是1.0.

eof_action

参见framesync.

shortest

参见framesync.

repeatlast

参见framesync.

此滤镜还支持framesync选项。

34.1.1 示例

  • 在INPUT视频的左上角覆盖LOGO图像。此滤镜的两个输入均为yuv420p格式。
    -i INPUT -i LOGO -filter_complex "[0:v]hwupload[a], [1:v]format=yuv420p, hwupload[b], [a][b]overlay_vaapi" OUTPUT
    
  • 在INPUT视频左上角的偏移位置(200, 100)覆盖LOGO图像。 输入的颜色通道布局相同,LOGO有额外的alpha平面,例如INPUT为yuv420p,LOGO为yuva420p。
    -i INPUT -i LOGO -filter_complex "[0:v]hwupload[a], [1:v]format=yuva420p, hwupload[b], [a][b]overlay_vaapi=x=200:y=100:w=400:h=300:alpha=1.0, hwdownload, format=nv12" OUTPUT
    

34.2 tonemap_vaapi

执行HDR到SDR或HDR到HDR的色调映射。 它当前仅接受HDR10作为输入。

它接受以下参数:

format

指定输出像素格式。

HDR到SDR色调映射的默认值是nv12,HDR到HDR色调映射的默认值是p010。

primaries, p

设置输出颜色基准。

HDR到SDR色调映射的默认值是bt709,HDR到HDR色调映射的默认值与输入相同。

transfer, t

设置输出传输特性。

HDR到SDR色调映射的默认值是bt709,HDR到HDR色调映射的默认值与输入相同。

matrix, m

设置输出色彩空间矩阵。

HDR到SDR色调映射的默认值是bt709,HDR到HDR色调映射的默认值与输入相同。

display

设置输出主显示颜色卷。使用'|'分隔的 两组值列表。这些值分别设置显示主色x和y按照G、B、R的顺序,然后设置白点x和y,以及名义的显示亮度的最小和最大值。

当设置此选项时,将执行HDR到HDR色调映射。

light

设置输出内容亮度信息。接受2个以空格分隔的值,第一个值是最大亮度,第二个值是最大平均亮度。

对于HDR到SDR色调映射将忽略,对于HDR到HDR色调映射是可选的。

34.2.1 示例

  • 转换HDR(HDR10)视频为bt2020转移特性p010格式。
    tonemap_vaapi=format=p010:t=bt2020-10
    
  • 转换HDR视频为HDR视频。
    tonemap_vaapi=display=7500\ 3000|34000\ 16000|13250\ 34500|15635\ 16450|500\ 10000000
    

34.3 hstack_vaapi

水平堆叠输入视频。

这是hstack滤镜的VA-API变体,每个输入流可能有不同的高度,此滤镜将缩小/放大每个输入流,同时保持原始比例。

它接受以下选项:

inputs

参见hstack.

shortest

参见hstack.

height

设置输出的高度。如果设置为0,此滤镜将设置输出高度为第一个输入流的高度。默认值为0。

34.4 vstack_vaapi

垂直堆叠输入视频。

这是vstack滤镜的VA-API变体,每个输入流可能有不同的宽度,此滤镜将缩小/放大每个输入流,同时保持原始比例。

它接受以下选项:

inputs

参见vstack.

shortest

参见vstack.

width

设置输出的宽度。如果设置为0,此滤镜将设置输出宽度为第一个输入流的宽度。默认值为0。

34.5 xstack_vaapi

以自定义布局堆叠视频输入。

这是xstack滤镜的VA-API变体,每个输入流可能有不同的大小,此滤镜将缩小/放大每个输入流到给定的输出大小或第一个输入流的大小。

它接受以下选项:

inputs

参见xstack.

shortest

参见xstack.

layout

参见xstack同时,允许用户为每个输入流提供输出大小。

xstack_vaapi=inputs=4:layout=0_0_1920x1080|0_h0_1920x1080|w0_0_1920x1080|w0_h0_1920x1080
grid

参见xstack.

grid_tile_size

为每个输入流设置输出大小,当grid被设置时。如果未设置此选项,此滤镜默认将输出大小设置为第一个输入流的大小。有关此选项的语法,请检查(ffmpeg-utils)"视频大小"部分ffmpeg-utils文档。.

fill

参见xstack.

34.6 pad_vaapi

向输入图像添加填充,并将原始输入放置在提供的x, y坐标。

它接受以下选项:

width, w
height, h

为添加填充后的输出图像大小指定表达式。如果宽度高度的值是0,则使用相应的输入大小作为输出。

The 宽度表达式可以引用由高度表达式设置的值,反之亦然。

The default value of 宽度高度的默认值是0。

x
y

指定将输入图像放置在填充区域内的位置偏移值, 相对于输出图像的顶部/左边框。

The x表达式可以引用由y表达式设置的值,反之亦然。

The default value of xy的默认值是0。

如果xy计算为负数,它们会被更改为使输入图像居中于填充区域。

color

指定填充区域的颜色。有关选项语法,请检查(ffmpeg-utils)"颜色"部分ffmpeg-utils文档。.

aspect

填充到宽高比而不是分辨率。

对于宽度, 高度, x, 和y选项的值是包含以下常量的表达式:

in_w
in_h

输入视频的宽度和高度。

iw
ih

它们与in_win_h.

out_w
out_h

输出的宽度和高度(填充区域的大小),如宽度高度表达式中指定。

ow
oh

它们与out_wout_h.

x
y

x和y偏移值,如xy表达式中指定,或者未指定时为NAN。

a

iw / ih

sar

输入样本宽高比。

dar

输入显示宽高比,它与iw / ih) * sar

34.7 drawbox_vaapi

在输入图像上绘制一个彩色框。

它接受以下参数:

x
y

指定框的左上角坐标的表达式。默认值为0。

width, w
height, h

指定框的宽度和高度的表达式;如果为0,则解释为输入宽度和高度。默认值为0。

color, c

指定要绘制框的颜色。有关此选项的一般语法,请检查(ffmpeg-utils)"颜色"部分ffmpeg-utils文档。.

thickness, t

设置框边缘厚度的表达式。 为fill将创建填充框。默认值为3.

请参阅以下接受的常量列表。

replace

使用1值绘制的框的像素将覆盖视频的颜色和alpha像素。 默认值为0它将框与输入视频组合。

参数x, y, wht是包含以下常量的表达式:

in_h, ih
in_w, iw

输入宽度和高度。

x
y

绘制框的x和y偏移坐标。

w
h

绘制框的宽度和高度。

t

绘制框的厚度。

34.7.1 示例

  • 在输入图像周围绘制一个黑色框:
    drawbox
    
  • 用红色绘制一个框并设置50%不透明度:
    drawbox=10:20:200:60:red@0.5
    

    前面的示例可以指定为:

    drawbox=x=10:y=20:w=200:h=60:color=red@0.5
    
  • 使用粉红色填充框:
    drawbox=x=10:y=10:w=100:h=100:color=pink@0.5:t=fill
    
  • 绘制一个2像素红色的2.40:1遮罩:
    drawbox=x=-t:y=0.5*(ih-iw/2.4)-t:w=iw+t*2:h=iw/2.4+t*2:t=2:c=red
    

35 Vulkan 视频滤镜

以下是当前可用Vulkan视频滤镜的描述。

要启用这些滤镜的编译,您需要使用以下配置FFmpeg--enable-vulkan--enable-libglslang--enable-libshaderc.

运行Vulkan滤镜需要您初始化硬件设备并将该设备传递给任何滤镜图中的所有滤镜。

-init_hw_device vulkan[=名称][:设备[,键=值...]]

初始化一个名为vulkan的新硬件设备,使用名称键=值中给定的设备参数和选项。支持以下选项:

debug

如果设置为1,则启用验证层。

linear_images

分配线性图像。不适用于解码。

disable_multiplane

禁用多平面图像。不适用于解码。

-filter_hw_device 名称

将名为名称的硬件设备传递给任何滤镜图中的所有滤镜。

有关更详细的信息,请参见https://www.ffmpeg.org/ffmpeg.html#Advanced-Video-options

  • 选择第一个设备并在其上运行nlmeans_vulkan滤镜的默认参数的示例。
    -init_hw_device vulkan=vk:0 -filter_hw_device vk -i INPUT -vf "hwupload,nlmeans_vulkan,hwdownload" OUTPUT
    

由于Vulkan滤镜无法访问普通内存中的帧数据,所有帧数据在使用之前都需要上传到连接到相应设备的硬件表面(hwupload),然后下载回普通内存(hwdownload)。请注意,hwupload将上传到与软件帧相同布局的帧,因此可能需要在前面添加一个format滤镜以使输入进入正确的格式,而hwdownload不支持输出的所有格式——通常需要在图中紧接其后添加一个额外的format滤镜以将输出设为支持的格式。

35.1 avgblur_vulkan

应用一个由Vulkan在GPU上实现的平均模糊滤镜。

滤镜接受以下选项:

sizeX

设置水平半径尺寸。 范围为[1, 32]默认值为3.

sizeY

设置垂直半径尺寸。范围为[1, 32]默认值为3.

planes

设置要过滤的平面。默认值为0xf,处理所有平面。

35.2 blend_vulkan

将两个Vulkan帧混合在一起。

The blend滤镜接受两个输入流并输出一个 流,第一个输入是"顶部"层,第二个输入是"底部"层。 默认情况下,输出在最长输入终止时终止。

以下是接受的选项描述。

c0_mode
c1_mode
c2_mode
c3_mode
all_mode

为特定像素组件或所有像素组件设置混合模式,如果是all_mode。默认值为normal.

组件模式的可用值有:

normal
multiply

35.3 bwdif_vulkan

使用bwdif,即"Bob Weaver解交错滤镜"算法,由Vulkan在GPU上实现的解交错器。

它接受以下参数:

mode

要采用的交错模式。它接受以下值之一:

0, send_frame

为每帧输出一个帧。

1, send_field

为每个场输出一个帧。

默认值为send_field.

parity

输入交错视频的画面场奇偶性假定。它接受以下值之一:

0, tff

假定顶部场是第一。

1, bff

假定底部场是第一。

-1, auto

启用自动检测场奇偶性。

默认值为auto。 如果交错模式未知或解码器未导出此信息,则将假定顶部场是第一。

deint

指定要解交错的帧。接受以下值之一:

0, all

解交错所有帧。

1, interlaced

仅解交错标记为交错的帧。

默认值为all.

35.4 chromaber_vulkan

应用一种模拟色差的效果。在RGB输入上效果最佳,但对YCbCr输入也提供类似效果。

dist_x

水平位移倍率。每个色度像素的位置将从图像中心开始乘以此值。默认值是0.

dist_y

类似地,设置垂直位移倍率。默认值是0.

35.5 color_vulkan

生成一个实色的Vulkan帧的视频源。 用于基准测试或叠加。

它接受以下参数:

color

使用的颜色。可以是名称,也可以是十六进制值。 默认值是black.

size

输出帧的大小。默认值是1920x1080.

rate

输出的帧率。默认值为60每秒帧数。

duration

视频时长。默认值为-0.000001.

sar

视频信号的宽高比。默认值为1/1.

format

输出 Vulkan 帧的像素格式。默认值为yuv444p.

out_range

设置输出的 YCbCr 样本范围。

这允许覆盖自动检测的值,并允许强制使用特定的输出和编码器值。如果未指定,范围取决于像素格式。可能的值:

auto/unknown

自动选择。

jpeg/full/pc

设置全范围(在 8 位亮度的情况下为 0-255)。

mpeg/limited/tv

设置“MPEG”范围(在 8 位亮度的情况下为 16-235)。

35.6 vflip_vulkan

垂直翻转图像。

35.7 hflip_vulkan

水平翻转图像。

35.8 flip_vulkan

同时沿垂直轴和水平轴翻转图像。

35.9 gblur_vulkan

对 Vulkan 帧应用高斯模糊滤镜。

滤镜接受以下选项:

sigma

设置水平标准差(sigma),即高斯模糊的标准偏差。默认值为0.5.

sigmaV

设置垂直标准差,如果为负值,则与sigma相同。 默认值为-1.

planes

设置要过滤的图像平面。默认情况下,所有平面都将被过滤。

size

设置水平轴上的核大小。默认值为19.

sizeV

设置垂直轴上的核大小。默认值为0,与相同的值。.

35.10 nlmeans_vulkan

使用非局部均值算法对帧进行去噪,算法在 GPU 上使用 Vulkan 实现。 支持比nlmeansnlmeans_opencl更多的像素格式,并支持透明通道。

滤镜接受以下选项。

s

为所有分量设置去噪强度。默认值为 1.0。必须在 [1.0, 100.0] 范围内。

p

设置所有平面的补丁大小。默认值为 7。必须为 [0, 99] 范围内的奇数。

r

设置搜索大小。默认值为 15。必须为 [0, 99] 范围内的奇数。

t

设置并行度。默认值为 36。必须在 [1, 168] 范围内。 更大的值可能加快处理速度,但会占用更多 VRAM; 较小的值会减慢速度,但减少 VRAM 使用。 仅支持具有原子浮点操作的 GPU(如 RDNA3+, Ampere+)。

s0
s1
s2
s3

为特定分量设置去噪强度。默认值为1,等于s。 必须为 [1, 100] 范围内的奇数。

p0
p1
p2
p3

为特定分量设置补丁大小。默认值为7,等于p。 必须为 [0, 99] 范围内的奇数。

35.11 overlay_vulkan

将一个视频叠加在另一个视频上。

它接受两个输入并生成一个输出。第一个输入为“主”视频,第二个输入叠加在其上。 此滤镜要求所有输入使用相同的像素格式,因此可能需要格式转换。

滤镜接受以下选项:

x

设置叠加视频在主视频上的 x 坐标。 默认值为0.

y

设置叠加视频在主视频上的 y 坐标。 默认值为0.

35.12 transpose_vt

转置输入视频的行和列,并可选择翻转。 有关更深入的示例,请参阅transpose视频滤镜,具有大多数相同的选项。

它接受以下参数:

dir

指定转置方向。

可能的值为:

cclock_flip

逆时针旋转 90 度并垂直翻转。(默认)

clock

顺时针旋转 90 度。

cclock

逆时针旋转 90 度。

clock_flip

顺时针旋转 90 度并垂直翻转。

hflip

水平翻转输入视频。

vflip

垂直翻转输入视频。

passthrough

如果输入几何形状与指定值匹配,则不应用转置。接受以下值:

none

始终应用转置。(默认)

portrait

保持纵向几何形状(当高度 >= 宽度).

landscape

保持横向几何形状(当宽度 >= 高度).

35.13 transpose_vulkan

转置输入视频的行和列,并可选择翻转。 有关更深入的示例,请参阅transpose视频滤镜,具有大多数相同的选项。

它接受以下参数:

dir

指定转置方向。

可能的值为:

cclock_flip

逆时针旋转 90 度并垂直翻转。(默认)

clock

顺时针旋转 90 度。

cclock

逆时针旋转 90 度。

clock_flip

顺时针旋转 90 度并垂直翻转。

passthrough

如果输入几何形状与指定值匹配,则不应用转置。接受以下值:

none

始终应用转置。(默认)

portrait

保持纵向几何形状(当高度 >= 宽度).

landscape

保持横向几何形状(当宽度 >= 高度).

36 QSV 视频滤镜

以下是当前可用的 QSV 视频滤镜的描述。

要启用这些滤镜的编译,你需要使用--enable-libmfx--enable-libvpl.

正确配置 QSV 设备以使用 QSV 滤镜。有关更多信息,请阅读https://trac.ffmpeg.org/wiki/Hardware/QuickSync

36.1 hstack_qsv

水平堆叠输入视频。

这是hstack滤镜的 QSV 变体,每个输入流可以有不同的高度,该滤镜将在保持原始纵横比的情况下向下/向上缩放每个输入流。

它接受以下选项:

inputs

参见hstack.

shortest

参见hstack.

height

设置输出高度。如果设置为 0,此滤镜将设置输出高度为第一个输入流的高度。默认值为 0。

36.2 vstack_qsv

垂直堆叠输入视频。

这是vstack滤镜的 QSV 变体,每个输入流可以有不同的宽度,该滤镜将在保持原始纵横比的情况下向下/向上缩放每个输入流。

它接受以下选项:

inputs

参见vstack.

shortest

参见vstack.

width

设置输出宽度。如果设置为 0,此滤镜将设置输出宽度为第一个输入流的宽度。默认值为 0。

36.3 xstack_qsv

将视频输入堆叠到自定义布局中。

这是xstack滤镜的 QSV 变体。

它接受以下选项:

inputs

参见xstack.

shortest

参见xstack.

layout

参见xstack。 此外,这允许用户为每个输入流提供输出大小。

xstack_qsv=inputs=4:layout=0_0_1920x1080|0_h0_1920x1080|w0_0_1920x1080|w0_h0_1920x1080
grid

参见xstack.

grid_tile_size

设置每个输入流的输出大小当grid被设置。如果未设置此选项,此滤镜将默认将输出大小设置为第一个输入流的大小。有关此选项的语法,请查看(ffmpeg-utils)"视频大小" 部分,在 ffmpeg-utils 手册中.

fill

参见xstack.

37 视频源

以下是目前可用的视频源的描述。

37.1 buffer

缓冲视频帧,并使其可用于滤镜链。

此源主要用于编程方式使用,特别是通过libavfilter/buffersrc.h.

中定义的接口。

video_size

指定缓冲视频帧的大小(宽度和高度)。有关此选项的语法,请查看(ffmpeg-utils)"视频大小" 部分,在 ffmpeg-utils 手册中.

width

输入视频宽度。

height

输入视频高度。

pix_fmt

表示缓冲视频帧的像素格式的字符串。 它可以是不对应像素格式的数字,也可以是像素格式的名称。

time_base

指定缓冲帧时间戳的时间基。

frame_rate

指定期望的视频流帧率。

colorspace

表示缓冲视频帧色彩空间的字符串。 它可以是不对应色彩空间的数字,也可以是色彩空间的名称。

range

表示缓冲视频帧色彩范围的字符串。 它可以是不对应色彩范围的数字,也可以是色彩范围的名称。

pixel_aspect, sar

输入视频的像素(样本)宽高比。

hw_frames_ctx

使用硬件像素格式时,这应是描述输入帧的 AVHWFramesContext 的引用。

例如:

buffer=width=320:height=240:pix_fmt=yuv410p:time_base=1/24:sar=1

将指示源接受尺寸为 320x240 的视频帧,格式为 "yuv410p",时间戳时间基为 1/24 并且是正方形像素(1:1 的样本宽高比)。 由于名称为 "yuv410p" 的像素格式对应编号 6 (请查看libavutil/pixfmt.h中的 AVPixelFormat 枚举定义) 此示例等价于:

buffer=size=320x240:pixfmt=6:time_base=1/24:pixel_aspect=1/1

或者,可以指定为简单字符串,但此语法已弃用:

宽度:高度:pix_fmt:time_base.num:time_base.den:pixel_aspect.num:pixel_aspect.den

37.2 cellauto

创建由基本细胞自动机生成的模式。

可以通过以下选项定义细胞自动机的初始状态:filenamepattern选项。如果没有指定这些,初始状态将随机创建。

每生成一个新帧,视频中的一行将被填充为细胞自动机下一代的结果。当整个帧被填满时,行为由scroll选项定义。

此源接受以下选项:

filename, f

从指定的文件中读取细胞自动机的初始状态(即开始行)。 在文件中,每个非空白字符都被视为活单元格,新行会终止该行,文件中的其他字符将会被忽略。

pattern, p

从指定的字符串中读取细胞自动机的初始状态,即开始行。

字符串中的每个非空白字符都被视为活单元格,新行会终止该行,字符串中的其他字符将会被忽略。

rate, r

设置视频速率,即每秒生成的帧数。默认值为 25。

random_fill_ratio, ratio

设置初始细胞自动机行的随机填充比率。取值范围是 0 到 1 的浮点值,默认值是 1/PHI。

当指定文件或模式时,此选项将被忽略。

random_seed, seed

设置随机填充初始行的种子,必须是 0 到 UINT32_MAX 范围内的整数。如果未指定,或显式设置为 -1,滤镜将尽力使用一个良好的随机种子。

rule

设置细胞自动机的规则,范围为 0 到 255 的数字。默认值为 110。

size, s

设置输出视频的大小。有关此选项语法,请查看(ffmpeg-utils)"视频大小" 部分,在 ffmpeg-utils 手册中.

filenamepattern被指定,默认情况下大小将设置为指定的初始状态行的宽度,并且高度为宽度* PHI。

如果size被设置,它必须包含指定模式字符串的宽度,并且指定的模式将居中于较大的行中。

如果未指定文件名或模式字符串,大小值默认为 "320x518"(用于随机生成的初始状态)。

scroll

如果设置为 1,当输出中的所有行已填满时,滚动输出向上。如果设置为 0,在底部行填满后,新生成的行将写入顶部行。默认值为 1。

start_full, full

如果设置为 1,在输出第一帧之前完全用生成的行填满输出。这是默认行为,若禁用可将值设置为 0。

stitch

如果设置为 1,将左侧和右侧行边缘缝合在一起。这是默认行为,若禁用可将值设置为 0。

37.2.1 示例

  • 从初始状态读取pattern并指定输出大小为200x400。
    cellauto=f=pattern:s=200x400
    
  • 生成一个宽度为200个单元格的随机初始行,填充比例为2/3:
    cellauto=ratio=2/3:s=200x200
    
  • 创建一个由规则18生成的图案,以一个居中的单个活跃细胞为初始行,宽度为100:
    cellauto=p=@:s=100x400:full=0:rule=18
    
  • 指定一个更复杂的初始图案:
    cellauto=p='@@ @ @@':s=100x400:full=0:rule=18
    

37.3 coreimagesrc

使用Apple的CoreImage API在OSX上的GPU生成的视频来源。

此视频来源是coreimage视频滤镜的一个特定版本。 在应用的滤镜链开始时使用核心图像生成器来生成内容。

coreimagesrc视频来源接受以下选项:

list_generators

列出所有可用的生成器及其各自的选项,以及可能的最小值和最大值以及默认值。

list_generators=true
size, s

指定视频来源的大小。有关此选项的语法,请查看(ffmpeg-utils)"视频大小"部分中的ffmpeg-utils手册。 默认值为320x240.

rate, r

指定视频来源的帧率,即每秒生成的帧数。格式必须为帧率分子/帧率分母,一个整数,一个浮点数或一个有效的视频帧率缩写。默认值为"25"。

sar

设置视频来源的样本宽高比。

duration, d

设置视频来源的持续时间。参见(ffmpeg-utils)ffmpeg-utils(1)手册中的时间持续时间部分以了解可接受的语法。

如果未指定或持续时间为负值,视频应无限生成。

此外,还接受coreimage视频滤镜的所有选项。 可以使用完整的滤镜链对生成的输入进行进一步处理,而无需CPU-HOST传输。参见coreimage文档和示例以了解详细信息。

37.3.1 示例

  • 使用CIQRCodeGenerator为FFmpeg主页创建QR码,给出Apple标准bash外壳的完整转义命令行:
    ffmpeg -f lavfi -i coreimagesrc=s=100x100:filter=CIQRCodeGenerator@inputMessage=https\\\\\://FFmpeg.org/@inputCorrectionLevel=H -frames:v 1 QRCode.png
    

    此示例与coreimageQRCode示例等同,无需使用nullsrc视频来源。

37.4 ddagrab

通过桌面复制API捕获Windows桌面。

滤镜仅返回D3D11硬件帧,用于GPU编码或处理。 因此需要显式hwdownload进行任何类型的软件处理。

它接受以下选项:

output_idx

捕获的DXGI输出索引。

通常对应Windows给屏幕的索引减去1,从0开始。

默认为输出0。

draw_mouse

是否绘制鼠标光标。

默认为true。

仅影响硬件光标。如果游戏或应用程序渲染了自己的光标,它将始终被捕获。

framerate

桌面捕获的最大帧速率——连续帧之间的间隔不会小于帧速率的倒数。当dup_frames为true(默认值)且桌面没有足够频繁更新时,滤镜将复制之前的帧。请注意,没有后台缓冲区,因此当滤镜没有足够频繁轮询时,实际的帧间间隔可能会显著增大。

默认为30 FPS。

video_size

指定捕获视频的大小。

默认值为完整屏幕大小。

如果小于屏幕大小,则从底部/右侧裁剪。

offset_x

捕获视频的水平偏移。

offset_y

捕获视频的垂直偏移。

output_fmt

期望的滤镜输出格式。 默认为8位BGRA。

它接受以下值:

auto

将所有支持的输出格式传递给DDA并返回DDA决定使用的格式。

8bit
bgra

8位格式始终有效,DDA如果必要会将其转换为8位格式。

10bit
x2bgr10

如果请求了10位格式但不可用,则滤镜初始化将失败。

dup_frames

当此选项设置为true(默认值)时,滤镜将在桌面未更新时复制帧,以保持大约恒定的目标帧速率。当此选项设置为false时,滤镜将等待桌面更新(帧间间隔在这种情况下可能显著变化)。

37.4.1 示例

捕获主屏幕并使用nvenc进行编码:

ffmpeg -f lavfi -i ddagrab -c:v h264_nvenc -cq 18 output.mp4

您也可以跳过lavfi设备并直接使用滤镜。 还展示了下载帧并使用libx264进行编码。 在这种情况下需要显式的输出格式指定:

ffmpeg -filter_complex ddagrab=output_idx=1:framerate=60,hwdownload,format=bgra -c:v libx264 -crf 18 output.mp4

如果您只想捕获桌面的一个子部分,可以通过指定较小的大小及其屏幕偏移来实现:

ddagrab=video_size=800x600:offset_x=100:offset_y=100

37.5 gradients

生成多个渐变。

size, s

设置帧大小。有关此选项的语法,请查看(ffmpeg-utils)"视频大小"部分中的ffmpeg-utils手册。 默认值为"640x480"。

rate, r

设置帧速率,以每秒的帧数表示。 默认值为"25"。

c0, c1, c2, c3, c4, c5, c6, c7

设置8种颜色。颜色的默认值是随机选择。

x0, y0, y0, y1

设置渐变线源和目标点。如果为负值或超出范围,则会随机选择。

nb_colors, n

设置同时使用的颜色数量。允许范围为2到8。默认值为2。

seed

设置用于选择渐变线点的种子。

duration, d

设置视频来源的持续时间。参见(ffmpeg-utils)ffmpeg-utils(1)手册中的时间持续时间部分以了解可接受的语法。

如果未指定或持续时间为负值,则视频应无限生成。

speed

设置渐变旋转的速度。

type, t

设置渐变类型。 可用值为:

linear
radial
circular
spiral
square

默认类型为线性.

37.5.1 命令

此来源支持以下选项作为命令.

37.6 mandelbrot

生成曼德布罗特集分形,并逐步缩放到用start_xstart_y.

指定的点。

end_pts

设置终端pts值。默认值为400。

end_scale

设置终端缩放值。 必须为浮点值。默认值为0.3。

inner

设置内部着色模式,即用于绘制曼德布罗特分形内部区域的算法。

它应采用以下值之一:

black

设置黑色模式。

convergence

显示收敛所需的时间。

mincol

根据距离原点最近的点设置颜色。

period

设置周期模式。

默认值为mincol.

bailout

设置截断值。默认值为10.0。

maxiter

设置渲染算法执行的最大迭代次数。默认值为7189。

outer

设置外部着色模式。 它应采用以下值之一:

iteration_count

设置迭代计数模式。

normalized_iteration_count

设置标准化迭代计数模式。

默认值为normalized_iteration_count.

rate, r

设置帧率,以每秒的帧数表示。默认值为"25"。

size, s

设置帧大小。有关此选项的语法,请查看(ffmpeg-utils)"视频大小"部分中的ffmpeg-utils手册。 默认值为"640x480"。

start_scale

设置初始缩放值。默认值为3.0。

start_x

设置初始x坐标。必须为-100到100之间的浮点值。默认值为-0.743643887037158704752191506114774。

start_y

设置初始y坐标。必须为-100到100之间的浮点值。默认值为-0.131825904205311970493132056385139。

37.7 mptestsrc

生成MPlayer测试滤镜生成的各种测试图案。

生成的视频大小是固定的,为256x256。 此来源特别适用于测试编码功能。

此来源接受以下选项:

rate, r

指定视频来源的帧率,即每秒生成的帧数。格式必须为帧率分子/帧率分母,一个整数,一个浮点数或一个有效的视频帧率缩写。默认值为"25"。

duration, d

设置视频来源的持续时间。参见(ffmpeg-utils)ffmpeg-utils(1)手册中的时间持续时间部分以了解可接受的语法。

如果未指定或持续时间为负值,则视频应无限生成。

test, t

设置要执行的测试的编号或名称。支持的测试包括:

dc_luma
dc_chroma
freq_luma
freq_chroma
amp_luma
amp_chroma
cbp
mv
ring1
ring2
all
max_frames, m

设置每次测试生成的最大帧数,默认值为30。

默认值为"所有",将循环列出所有测试。

一些示例:

mptestsrc=t=dc_luma

将生成一个"dc_luma"测试图案。

37.8 frei0r_src

提供一个frei0r来源。

要启用此滤镜的编译,您需要安装frei0r头文件并使用以下配置FFmpeg:--enable-frei0r.

此来源接受以下参数:

size

要生成的视频大小。有关此选项的语法,请查看(ffmpeg-utils)"视频大小"部分中的ffmpeg-utils手册.

framerate

生成视频的帧速率。它可以是"形分子/分母或帧速率缩写的字符串。

filter_name

要加载的frei0r来源的名称。有关frei0r及如何设置参数的更多信息,请参阅frei0r视频滤镜文档中的部分。

filter_params

用于传递给frei0r来源的参数的'|'分隔列表。

例如,要生成一个自由0r partik0l来源,其大小为200x200,帧速率为10,并且覆盖在overlay滤镜主输入上:

frei0r_src=size=200x200:framerate=10:filter_name=partik0l:filter_params=1234 [overlay]; [in][overlay] overlay

37.9 life

生成一个life图案。

此来源基于约翰·康威的生命游戏的推广。

来源的输入表示一个生命网格,每个像素表示一个单元格, 单元格可以处于两种可能状态之一,活着或死去。 每个单元格与其八个邻居交互,这些是 横向、纵向或斜对角相邻的单元格。

在每次交互时,网格将根据选定的规则演化, 规则定义了有多少个邻居活细胞会使单元格保持活跃或出生。 选项允许指定采用的规则。rule option allows one to specify the rule to adopt.

此来源接受以下选项:

filename, f

设置要从中读取初始网格状态的文件。在文件中, 每个非空字符都被视为一个活细胞,新行被用来分隔每个行的结束。

如果未指定此选项,则初始网格将随机生成。

rate, r

设置视频速率,即每秒生成的帧数。 默认值为25。

random_fill_ratio, ratio

设置初始随机网格的随机填充比。它是一个 从0到1的浮点数值,默认值为1/PHI。 当指定了文件时将被忽略。

random_seed, seed

设置填充初始随机网格的种子,必须为0到UINT32_MAX之间的整数。 如果未指定或明确设置为-1,滤镜将尝试在最佳努力基础上使用良好的随机种子。

rule

设置生命规则。

可以使用"SNS/BNB"类型的代码来指定规则,NSNB是范围0-8的数字序列。NS指定活细胞邻居的数量,使活细胞保持活跃。NB邻居细胞的存活数量 决定死细胞是否会复活(即被“生成”)。 可以用"s"和"b"代替"S"和"B"。

或者,可以通过一个18位整数指定规则。高9位用于编码如果细胞存活时的状态,低9位用于"生成"新细胞的规则。高位编码代表更高邻居细胞数量。 例如数字6153 =(12<<9)+9指定存活规则为12,生成规则为9,对应于"S23/B03"。

默认值为"S23/B3",这是原始康威生命游戏规则规则,将保持细胞存活,如果有2或3个存活的邻居细胞,以及在死细胞周围有3个存活细胞时生成新的细胞。

size, s

设置输出视频的大小。有关此选项的语法,请检查(ffmpeg-utils)ffmpeg-utils手册中的"视频大小"部分.

如果filename指定,则输出视频大小默认为输入文件的大小。如果size设置,则其必须包含在输入文件中指定的大小,输入文件定义的初始网格将在更大的结果区域中居中。

如果未指定文件名,大小值默认为"320x240"(用于随机生成初始网格)。

stitch

如果设置为1,则将左边和右边的网格边缘缝合在一起,同时也缝合顶部和底部边缘。默认值为1。

mold

设置细胞腐坏速度。如果设置,死细胞将从death_color变为mold_color,步长为mold. mold可以有0到255的值。

life_color

设置存活(或新生)细胞的颜色。

death_color

设置死细胞的颜色。如果mold设置,这是用于表示死细胞的第一种颜色。

mold_color

设置腐坏颜色,用于永久死亡和腐坏的细胞。

有关这三个颜色选项的语法,请检查(ffmpeg-utils)ffmpeg-utils手册中的"颜色"部分.

37.9.1 示例

  • pattern读取网格,并将其居中在大小为300x300像素的网格上:
    life=f=pattern:s=300x300
    
  • 生成大小为200x200,填充比例为2/3的随机网格:
    life=ratio=2/3:s=200x200
    
  • 为随机生成的网格指定自定义规则:
    life=rule=S14/B34
    
  • 使用慢速死亡效果(腐坏)的完整示例ffplay:
    ffplay -f lavfi life=s=300x200:mold=10:r=60:ratio=0.1:death_color=#C83232:life_color=#00ff00,scale=1200:800:flags=16
    

37.10 perlin

生成柏林噪声。

柏林噪声是一种空间连续性的噪声。这可用于生成具有空间和时间连续性模式,例如模拟烟雾、液体或地形。

如果通过octaves选项指定了多个倍频,柏林噪声将作为组件的和生成,每个组件具有两倍的频率。在这种情况下,persistence选项指定相对于之前组件振幅的比率。更多倍频组件允许生成噪声中更高频的细节(例如生成地形时小尺寸变化)。

37.10.1 选项

size, s

指定缓冲视频帧的大小(宽度和高度)。有关此选项的语法,请检查(ffmpeg-utils)ffmpeg-utils手册中的"视频大小"部分。 默认值为320x240.

rate, r

指定视频流的期望帧率,以每秒帧数表示。默认值为25.

octaves

指定组成噪声的总组件数,每个组件具有两倍的频率。默认值为1.

persistence

设置用于计算下一倍频组件振幅相对于上一组件振幅比例的比率。默认值为1.

xscale
yscale

定义用于乘以x,y坐标的比例。这可以用于定义沿x或y轴拉伸模式效果。默认值为1.

tscale

定义用于乘以时间坐标的比例。这可以用于更改时间变化的速度。默认值为1.

random_mode

设置随机模式,用于计算初始模式。

支持的值有:

random

计算并使用随机种子。

ken

使用Ken Perlin在原始文章中定义的预定义初始模式,可用于与其他来源比较输出。

seed

使用由random_seed选项指定的值。

默认值为random.

random_seed, seed

random_mode设置为随机种子时,使用此值计算初始模式。默认值为0.

37.10.2 示例

  • 生成单一组件:
    perlin
    
  • 使用柏林噪声生成7个组件,每个组件的总振幅贡献减半:
    perlin=octaves=7:persistence=0.5
    
  • 将柏林噪声与lutyuv链接以生成黑白效果:
    perlin=octaves=3:tscale=0.3,lutyuv=y='if(lt(val\,128)\,255\,0)'
    
  • 沿y轴拉伸噪声,并将灰度级转换为仅红色信号:
    perlin=octaves=7:tscale=0.4:yscale=0.3,lutrgb=r=val:b=0:g=0
    

37.11 qrencodesrc

使用libqrencode库生成二维码(参见https://fukuchi.org/works/qrencode/).

要启用此源的编译,需要配置FFmpeg系统--enable-libqrencode.

二维码是根据提供的文本或文本模式生成的。根据指定的输出大小选项,二维码会被缩放并放置在视频输出中。

如果未指定文本,则不会生成二维码,而是返回一个空的彩色输出。

此源接受以下选项:

qrcode_width, q
padded_qrcode_width, Q

为二维码的宽度(带或不带填充)指定表达式。二维码宽度表达式可以引用由带填充宽度表达式设置的值,反之亦然。 默认情况下带填充宽度设置为二维码宽度,即没有填充。

这些表达式仅在初始化源时评估一次。 详细信息请参见qrencode表达式部分。

请注意,有些常量在源中丢失(例如xtn),因为它们只在每帧评估表达式时有意义,而不是在初始化时。

rate, r

指定源视频帧率,以生成的每秒帧数表示。它必须是格式帧率分子/帧率分母的字符串,可以是整数、浮点数或有效的视频帧率缩写。默认值是"25"。

case_sensitive, cs

指示libqrencode使用区分大小写编码。默认启用。可以禁用以减少二维码编码大小。

level, l

指定二维码编码的纠错级别。更高的纠错级别增加编码大小但使代码更耐损坏。低级别为L.

其接受以下值:

L
M
Q
H
expansion

选择如何展开输入文本。可以是none,或者normal(默认)。详见qrencode文本展开部分。

text
textfile

定义要呈现的文本。如果没有定义,则不会生成二维码(仅生成一个空的彩色框)。

如果启用了展开,文本将被视为文本模板,使用qrencode展开机制。详见qrencode 文本展开部分。

background_color, bc
foreground_color, fc

设置二维码和背景颜色。前景色默认值为"黑色",背景色默认值为"白色"。

有关颜色选项的语法,请检查(ffmpeg-utils)ffmpeg-utils手册中的"颜色"部分.

37.11.1 示例

  • 通过指定的文本生成二维码,使用默认大小:
    qrencodesrc=text=www.ffmpeg.org
    
  • 与上述类似,但选择蓝色和粉色颜色:
    qrencodesrc=text=www.ffmpeg.org:bc=pink:fc=blue
    
  • 生成宽度为200像素的二维码并添加填充,使填充后的宽度为二维码宽度的4/3:
    qrencodesrc=text=www.ffmpeg.org:q=200:Q=4/3*q
    
  • 生成填充后宽度为200像素并添加填充,使二维码宽度为填充后宽度的3/4:
    qrencodesrc=text=www.ffmpeg.org:Q=200:q=3/4*Q
    
  • 生成编码帧号的二维码:
    qrencodesrc=text=%{n}
    
  • 生成编码GMT时间戳的二维码:
    qrencodesrc=text=%{gmtime}
    
  • 生成编码为浮点数表达的时间戳的二维码:
    qrencodesrc=text=%{pts}
    

37.12 allrgb, allyuv, color, colorchart, colorspectrum, haldclutsrc, nullsrc, pal75bars, pal100bars, rgbtestsrc, smptebars, smptehdbars, testsrc, testsrc2, yuvtestsrc

来源返回大小为4096x4096的所有RGB颜色帧。allrgb source returns frames of size 4096x4096 of all rgb colors.

来源返回大小为4096x4096的所有YUV颜色帧。allyuv source returns frames of size 4096x4096 of all yuv colors.

提供统一颜色的输入。color source provides an uniformly colored input.

来源提供颜色检查表。colorchart source provides a colors checker chart.

来源提供颜色频谱输入。colorspectrum source provides a color spectrum input.

来源提供身份Hald CLUT。参见haldclutsrc source provides an identity Hald CLUT. See also haldclut滤镜。

来源返回未处理的视频帧。其主要用途是在分析/调试工具中使用或作为忽略输入数据的滤镜来源。nullsrc source returns unprocessed video frames. It is mainly useful to be employed in analysis / debugging tools, or as the source for filters which ignore the input data.

来源生成颜色条图案,基于EBU PAL建议,颜色水平为75%。pal75bars source generates a color bars pattern, based on EBU PAL recommendations with 75% color levels.

来源生成颜色条图案,基于EBU PAL建议,颜色水平为100%。pal100bars source generates a color bars pattern, based on EBU PAL recommendations with 100% color levels.

来源生成一个RGB测试图案,用于检测RGB与BGR问题。你应该看到从上到下的红色、绿色和蓝色条纹。rgbtestsrc source generates an RGB test pattern useful for detecting RGB vs BGR issues. You should see a red, green and blue stripe from top to bottom.

来源生成颜色条图案,基于SMPTE工程指南EG 1-1990。smptebars source generates a color bars pattern, based on the SMPTE Engineering Guideline EG 1-1990.

来源生成颜色条图案,基于SMPTE RP 219-2002。smptehdbars source generates a color bars pattern, based on the SMPTE RP 219-2002.

来源生成测试视频图案,显示颜色图案、滚动渐变和时间戳。这主要用于测试目的。testsrc source generates a test video pattern, showing a color pattern, a scrolling gradient and a timestamp. This is mainly intended for testing purposes.

来源类似于testsrc,但支持更多像素格式,而不仅仅是testsrc2 source is similar to testsrc, but supports more pixel formats instead of just rgb24。这允许使用它作为其他测试的输入而无需格式转换。

来源生成YUV测试图案。你应该看到从上到下的Y, CB和CR条纹。yuvtestsrc source generates an YUV test pattern. You should see a y, cb and cr stripe from top to bottom.

来源接受以下参数:

level

指定Hald CLUT的级别,仅可用在haldclutsrc来源。级别N生成一个大小为N*N*NxN*N*N像素的图片,用作3D查找表的身份矩阵。每个组件以1/(N*N)标度编码。

color, c

指定来源的颜色,仅可用在color来源。有关此选项的语法,请检查(ffmpeg-utils)ffmpeg-utils手册中的"颜色"部分.

size, s

指定来源视频的大小。有关此选项的语法,请检查(ffmpeg-utils)ffmpeg-utils手册中的"视频大小"部分。 默认值为320x240.

此选项不可用于allrgb, allyuv,和haldclutsrc滤镜。

rate, r

指定来源视频帧率,以生成的每秒帧数表示。它必须是格式帧率分子/帧率分母的字符串,可以是整数、浮点数或有效的视频帧率缩写。默认值是"25"。

duration, d

设置来源视频的持续时间。参见(ffmpeg-utils)ffmpeg-utils(1)手册中时间持续部分了解可接受的语法。

如果未指定,或者表达的持续时间为负,则视频应永远生成。

由于帧率用作时间基准,包括最后一帧的所有帧都会有其完整的持续时间。如果指定的持续时间不是帧持续时间的倍数,它将被向上舍入。

sar

设置来源视频的样本纵横比。

alpha

指定背景的透明度,仅可用在testsrc2来源。值必须在0(完全透明)到255(完全不透明,默认值)之间。

decimals, n

设置时间戳显示的小数位数,仅可用在testsrc来源。

显示的时间戳值将对应于原始时间戳值乘以指定值的10的幂。默认值为0。

type

设置色谱类型,仅在colorspectrum来源。可以是以下之一:

black
white
all
patch_size

设置单色块的块大小,仅在colorchart来源中。默认值为64x64.

preset

设置色卡颜色预置,仅在colorchart来源。

可用的值是:

reference
skintones

默认值为reference.

37.12.1 示例

  • 生成持续时间为5.3秒的视频,大小为176x144,帧率为每秒10帧:
    testsrc=duration=5.3:size=qcif:rate=10
    
  • 以下图形描述将生成一个红色来源,透明度为0.2,大小为"qcif",帧率为每秒10帧:
    color=c=red@0.2:s=qcif:r=10
    
  • 如果要忽略输入内容,nullsrc可以使用。 以下命令通过使用geq滤镜在亮度平面生成噪声:
    nullsrc=s=256x256, geq=random(1)*255:128:128
    

37.12.2 命令

color来源支持以下命令:

c, color

设置创建图像的颜色。接受对应的color选项的相同语法。

37.13 openclsrc

使用OpenCL程序生成视频。

source

OpenCL程序源文件。

kernel

程序中的内核名称。

size, s

要生成的帧的大小。必须设置。

format

用于生成帧的像素格式。必须设置。

rate, r

每秒生成的帧数。默认值为'25'。

有关程序加载如何工作的详细信息,请参见program_opencl滤镜。

示例程序:

  • 通过从输出图像中像素的位置设置像素值生成颜色渐变。(请注意,这将适用于所有像素格式,但生成的输出将不同。)
    __kernel void ramp(__write_only image2d_t dst,
                       unsigned int index)
    {
        int2 loc = (int2)(get_global_id(0), get_global_id(1));
    
        float4 val;
        val.xy = val.zw = convert_float2(loc) / convert_float2(get_image_dim(dst));
    
        write_imagef(dst, loc, val);
    }
    
  • 生成Sierpinski地毯图案,每帧平移一个像素。
    __kernel void sierpinski_carpet(__write_only image2d_t dst,
                                    unsigned int index)
    {
        int2 loc = (int2)(get_global_id(0), get_global_id(1));
    
        float4 value = 0.0f;
        int x = loc.x + index;
        int y = loc.y + index;
        while (x > 0 || y > 0) {
            if (x % 3 == 1 && y % 3 == 1) {
                value = 1.0f;
                break;
            }
            x /= 3;
            y /= 3;
        }
    
        write_imagef(dst, loc, value);
    }
    

37.14 sierpinski

生成Sierpinski地毯/三角形分形,并随机平移。

该来源接受以下选项:

size, s

设置帧尺寸。有关此选项的语法,请检查(ffmpeg-utils)“视频尺寸”部分,位于ffmpeg-utils手册中。默认值是“640x480”。

rate, r

设置帧率,以每秒的帧数表示。默认值是“25”。

seed

设置用于随机平移的种子。

jump

设置单次平移目标的最大跳跃值。允许范围是1到10000。

type

设置分形类型,可以是默认carpet或者triangle.

37.15 zoneplate

生成一个zoneplate测试视频模式。

该来源接受以下选项:

size, s

设置帧尺寸。有关此选项的语法,请查看(ffmpeg-utils)“视频尺寸”部分,位于ffmpeg-utils手册中。默认值是“320x240”。

rate, r

设置帧率,以每秒的帧数表示。默认值是“25”。

duration, d

设置生成视频的时长。参见(ffmpeg-utils)ffmpeg-utils(1)手册中的时间持续时间部分以获取接受的语法。

如果未指定,或表达的时长为负,则假定视频将无限生成。

sar

设置生成视频的样本宽高比。

precision

设置用于正弦计算的查找表精度,以位为单位。默认值为10。允许范围是4到16。

xo

设置输出信号的水平轴偏移量。默认值是0。

yo

设置输出信号的垂直轴偏移量。默认值是0。

to

设置输出信号的时间轴偏移量。默认值是0。

k0

设置零阶常量,用于添加到信号相位。默认值是0。

kx

设置一级相位因子,用于乘以水平轴。默认值是0。

ky

设置一级相位因子,用于乘以垂直轴。默认值是0。

kt

设置一级相位因子,用于乘以时间轴。默认值是0。

kxt, kyt, kxy

为空间和时间轴的组合设置相位因子倍数。默认值是0。

kx2

设置二阶相位因子,用于乘以水平轴。默认值是0。

ky2

设置二阶相位因子,用于乘以垂直轴。默认值是0。

kt2

设置二阶相位因子,用于乘以时间轴。默认值是0。

ku

设置常量以生成信号的蓝色色度分量的最终相位。默认值是0。

kv

设置常量以生成信号的红色色度分量的最终相位。默认值是0。

37.15.1 命令

该来源支持部分上述选项作为命令.

37.15.2 示例

  • 生成水平颜色正弦波:
    zoneplate=ku=512:kv=0:kt2=0:kx2=256:s=wvga:xo=-426:kt=11
    
  • 生成垂直颜色正弦波:
    zoneplate=ku=512:kv=0:kt2=0:ky2=156:s=wvga:yo=-240:kt=11
    
  • 生成圆形zoneplate:
    zoneplate=ku=512:kv=100:kt2=0:ky2=256:kx2=556:s=wvga:yo=0:kt=11
    

38 视频接收器

以下是当前可用的视频接收器的说明。

38.1 buffersink

缓冲视频帧,并使其在滤镜图的末尾可用。

此接收器主要用于编程用途,特别是通过接口定义libavfilter/buffersink.h或选项系统。

它接受AVBufferSinkContext结构的指针,该结构定义了传入缓冲区的格式,用作传递给avfilter_init_filter的opaque参数以进行初始化。

38.2 nullsink

空视频接收器:对输入视频绝对不做任何处理。它主要用作模板以及分析/调试工具中的使用。

39 多媒体滤镜

以下是当前可用的多媒体滤镜的说明。

39.1 a3dscope

将输入音频转换为3d示波视频输出。

滤镜接受以下选项:

rate, r

设置帧率,以每秒的帧数表示。默认值是“25”。

size, s

指定输出的视频尺寸。有关此选项的语法,请检查(ffmpeg-utils)“视频尺寸”部分,位于ffmpeg-utils手册中。 默认值是hd720.

fov

设置摄像机视场角度。默认是90度。 允许范围是40到150。

roll

设置摄像机滚动。

pitch

设置摄像机俯仰。

yaw

设置摄像机偏转。

xzoom

设置摄像机在X轴的变焦。

yzoom

设置摄像机在Y轴的变焦。

zzoom

设置摄像机在Z轴的变焦。

xpos

设置摄像机在X轴上的位置。

ypos

设置摄像机在Y轴上的位置。

zpos

设置摄像机在Z轴上的位置。

length

设置显示音频波形的长度,以帧数表示。

39.1.1 命令

滤镜支持部分上述选项为命令.

39.2 abitscope

将输入音频转换为视频输出,显示音频位示波器。

滤镜接受以下选项:

rate, r

设置帧率,以每帧每秒的数量表示。默认值是“25”。

size, s

指定输出的视频尺寸。有关此选项的语法,请检查(ffmpeg-utils)“视频尺寸”部分,位于ffmpeg-utils手册中。 默认值是1024x256.

colors

指定由空格或“|”分隔的颜色列表,这些颜色将用于绘制通道。无法识别或缺少的颜色将替换为白色。

mode, m

设置输出模式。可以是barstrace。默认是bars.

39.3 adrawgraph

使用输入音频元数据绘制图表。

参见drawgraph

39.4 agraphmonitor

参见graphmonitor.

39.5 ahistogram

将输入音频转换为视频输出,显示音量直方图。

滤镜接受以下选项:

dmode

指定直方图的计算方式。

它接受以下值:

single

对所有通道使用单一直方图。

separate

对每个通道使用单独的直方图。

默认是single.

rate, r

设置帧率,以每帧每秒的数量表示。默认值是“25”。

size, s

指定输出的视频尺寸。有关此选项的语法,请检查(ffmpeg-utils)“视频尺寸”部分,位于ffmpeg-utils手册中。 默认值是hd720.

scale

设置显示比例。

它接受以下值:

log

对数

sqrt

平方根

cbrt

立方根

lin

线性

rlog

反对数

默认是log.

ascale

设置振幅比例。

它接受以下值:

log

对数

lin

线性

默认是log.

acount

设置在直方图中累积的帧量。默认是1。将此设置为-1会累积所有帧。

rheight

设置直方图窗口高度的比例。

slide

设置声谱滑动。

它接受以下值:

replace

将旧行替换为新行。

scroll

从顶部滚动到底部。

默认是replace.

hmode

设置直方图模式。

它接受以下值:

abs

使用样本的绝对值。

sign

使用未处理的样本值。

默认是abs.

39.6 aphasemeter

测量输入音频的相位,并将其导出为元数据lavfi.aphasemeter.phase,表示当前音频帧的平均相位值。视频输出也可以生成,并且默认启用。音频作为第一输出通过。

如果音频具有不同的通道布局,则会重新混合为立体声。相位值范围为[-1, 1]其中-1表示左右声道完全反相,而1表示声道同相。

滤镜接受与其视频输出相关的以下选项:

rate, r

设置输出帧率。默认值是25.

size, s

为输出设置视频尺寸。有关该选项语法的信息,请检查(ffmpeg-utils)“视频尺寸”部分,位于ffmpeg-utils手册中。 默认值是800x400.

rc
gc
bc

指定红、绿、蓝对比度。默认值是2, 71。 允许范围是[0, 255].

mpc

设置用于绘制中值相位的颜色。如果颜色为none,这是默认值,则不会绘制中值相位值。

video

启用视频输出。默认是启用。

39.6.1 相位检测

滤镜还检测立体声流中的失相和单声道序列。 当序列持续时间超过或等于设定最小值时,它会记录序列的开始、结束和持续时间。

此检测的滤镜接受以下选项:

phasing

启用单声道和失相检测。默认是禁用。

tolerance, t

设置单声道检测的相位容差,单位为振幅比率。默认值是0。 允许范围是[0, 1].

angle, a

设置失相检测的角度阈值,单位为度数。默认值是170。 允许范围是[90, 180].

duration, d

设置单声道或失相通知的持续时间,以秒为单位。默认值是2.

39.6.2 示例

  • 使用完整示例ffmpeg检测具有0.001相位容差的1秒单声道:
    ffmpeg -i stereo.wav -af aphasemeter=video=0:phasing=1:duration=1:tolerance=0.001 -f null -
    

39.7 avectorscope

将输入音频转换为视频输出,表示音频矢量示波器。

该滤镜用于测量立体声音频流通道之间的差异。单声道信号,由相同的左右信号组成,会产生垂直的直线。 任何立体声分离可见为偏离此直线,形成Lissajous图形。 如果显示直线(或与其的偏离),但水平线出现,则表示左右声道是失相的。

滤镜接受以下选项:

mode, m

设置矢量示波模式。

可用值是:

lissajous

Lissajous旋转45度。

lissajous_xy

与上述相同,但未旋转。

polar

形状类似于半个圆。

默认值是‘lissajous’.

size, s

为输出设置视频尺寸。有关选项语法的信息,请检查(ffmpeg-utils)“视频尺寸”部分,在ffmpeg-utils手册中。 默认值是400x400.

rate, r

设置输出帧率。默认值是25.

rc
gc
bc
ac

指定红、绿、蓝和alpha对比度。默认值是40, 160, 80255。 允许范围是[0, 255].

rf
gf
bf
af

指定红、绿、蓝和alpha渐变。默认值是15, 10, 55。 允许范围是[0, 255].

zoom

设置缩放因子。默认值是1。允许范围是[0, 10]。 值低于1将自动调整到最大可能的缩放因子。

draw

设置矢量示波绘图模式。

可用值为:

dot

为每个样本绘制点。

line

在前一个样本和当前样本之间绘制线条。

aaline

在前一个样本和当前样本之间绘制抗锯齿线条。

默认值是 'dot’.

scale

指定音频样本的振幅比例。

可用值为:

lin

线性。

sqrt

平方根。

cbrt

立方根。

log

对数。

swap

交换左声道轴和右声道轴。

mirror

镜像轴。

none

无镜像。

x

仅镜像 x 轴。

y

仅镜像 y 轴。

xy

同时镜像两个轴。

39.7.1 示例

  • 使用完整示例ffplay:
    ffplay -f lavfi 'amovie=input.mp3, asplit [a][out1];
                 [a] avectorscope=zoom=1.3:rc=2:gc=200:bc=10:rf=1:gf=8:bf=7 [out0]'
    

39.7.2 命令

此滤镜支持除选项sizerate.

39.8 bench, abench

过滤图的基准测试部分。

过滤器接受以下选项:

action

启动或停止计时器。

可用值为:

start

获取当前时间,将其设置为帧元数据 (使用键lavfi.bench.start_time),并将帧转发到下一个过滤器。

stop

获取当前时间并从输入帧元数据中提取lavfi.bench.start_time元数据以获得时间差。时间差值、平均值、最大值 和最小值(分别为t, avg, maxmin)然后打印。时间戳以秒为单位表示。

39.8.1 示例

  • 基准测试选择性颜色过滤器:
    bench=start,selectivecolor=reds=-.2 .12 -.49,bench=stop
    

39.9 合并

连接音频和视频流,将它们一个接一个地连接在一起。

过滤器处理同步的视频和音频流片段。所有片段必须具有相同数量的每种类型的流,并且输出的流数量将保持不变。

过滤器接受以下选项:

n

设置片段数量。默认值为 2。

v

设置输出视频流的数量,也就是每个片段中的视频流数量。默认值为 1。

a

设置输出音频流的数量,也就是每个片段中的音频流数量。默认值为 0。

unsafe

激活不安全模式:如果片段具有不同的格式,则不要失败。

过滤器有v+a输出:首先是v视频输出,然后是a音频输出。

nx(v+a) 输入:首先是第一个片段的输入,以与输出相同的顺序,然后是第二个片段的输入,依此类推。

相关流并不总是有完全相同的持续时间,原因包括编解码器帧大小或松散的创作。因此,相关的同步流(例如,视频及其音轨)应该一次连接起来。合并过滤器将在每个片段中使用最长流的持续时间(除最后一个片段外),如果需要,会用静音填充较短的音频流。

要使此过滤器正常工作,所有片段必须从时间戳 0 开始。

所有对应的流在所有片段中的参数必须相同;过滤系统将自动为视频流选择一种通用的像素格式,为音频流选择一种通用的样本格式、采样率和通道布局,但其他设置(例如分辨率)必须由用户显式转换。

不同的帧速率是可以接受的,但会导致输出的帧速率变化;请确保配置输出文件以处理该情况。

39.9.1 示例

  • 连接一个开场,一个剧集和一个结尾,全部为双语版本(视频为流 0,音频为流 1 和流 2):
    ffmpeg -i opening.mkv -i episode.mkv -i ending.mkv -filter_complex \
      '[0:0] [0:1] [0:2] [1:0] [1:1] [1:2] [2:0] [2:1] [2:2]
       concat=n=3:v=1:a=2 [v] [a1] [a2]' \
      -map '[v]' -map '[a1]' -map '[a2]' output.mkv
    
  • 连接两个部分,分别处理音频和视频,使用 (a)movie 源,并调整分辨率:
    movie=part1.mp4, scale=512:288 [v1] ; amovie=part1.mp4 [a1] ;
    movie=part2.mp4, scale=512:288 [v2] ; amovie=part2.mp4 [a2] ;
    [v1] [v2] concat [outv] ; [a1] [a2] concat=v=0:a=1 [outa]
    

    请注意,如果音频和视频流在第一个文件中没有完全相同的持续时间,则在连接处可能会发生不同步。

39.9.2 命令

此滤镜支持以下命令:

next

关闭当前片段并移动到下一个片段

39.10 ebur128

EBU R128 扫描过滤器。此过滤器处理音频流并分析其响度水平。默认情况下,它会以 10Hz 的频率记录一条消息,其中包含瞬时响度(由M标识)、短时响度(S)、集成响度(I)和响度范围(LRA).

该过滤器只能分析样本格式为双精度浮点的流。输入流会根据需要转换为此规格。用户可能需要在此过滤器之后插入 aformat 和/或 aresample 过滤器以获得原始参数。

此过滤器还有视频输出(参见video选项),带有实时图表以观察响度变化。图表包含上述已记录的消息,因此当设置此选项时不会再打印消息,除非启用详细日志记录。主图表区域包含短时响度(3 秒分析结果),右边的量表用于瞬时响度(400 毫秒),但可以选择配置为显示短时响度(参见量表).

绿色区域标记为目标响度(默认为 -23LUFS,除非通过目标).

更多关于响度建议 EBU R128 的信息请见http://tech.ebu.ch/loudness.

该过滤器接受以下选项:

video

激活视频输出。无论是否设置此选项,音频流都会保持不变。激活时视频流将成为第一个输出流。默认值为0.

size

设置视频大小。此选项仅适用于视频。关于该选项的语法,请查看(ffmpeg-utils) "视频大小" 部分在 ffmpeg-utils 手册中。。默认和最小分辨率为640x480.

meter

设置 EBU 音量计量尺度。默认值为9。常用值是918,分别适用于 EBU 音量计量尺度 +9 和 EBU 音量计量尺度 +18。在这个范围之间的任意其他整数值都是允许的。

metadata

设置元数据注入。如果设置为1,音频输入将被分割为 100ms 的输出帧,每个帧中包含各种响度信息的元数据。所有元数据键均以lavfi.r128..

作为前缀。默认值0.

framelog

强制帧日志记录级别。

可用值为:

quiet

禁用日志记录

info

信息日志记录级别

verbose

详细日志记录级别

默认情况下,日志记录级别设置为信息。如果videometadata选项已设置,则会切换到详细.

peak

设置峰值模式。

可用的模式可以累积(该选项是flag类型)。可能的值是:

none

禁用任何峰值模式(默认)。

sample

启用样例峰值模式。

简单的峰值模式用于查找最高的样本值。它会记录一个样例峰值的消息(由SPK).

true

启用真实峰值模式。

如果启用,峰值查找将在输入流的超采样版本上进行以提高峰值精度。它会记录一个真实峰值的消息(由TPK标识)和每帧的真实峰值(由FTPK标识)。这种模式需要使用libswresample.

dualmono

将单声道输入文件视为“双声道单声”。如果单声道文件用于立体声系统播放,它的 EBU R128 测量在感知上将是不正确的。如果设置为true,此选项将补偿这种影响。多声道输入文件不受此选项影响。

panlaw

设置用于“双声道单声”文件测量的特定平移律。此参数是可选的,默认值为 -3.01dB。

target

设置用于可视化的特定目标电平(以 LUFS 为单位)。此参数是可选的,默认值为 -23LUFS,如 EBU R128 所指定。然而,在线发布的材料可能更喜欢 -16LUFS 的电平(例如,用于播客或视频平台)。

gauge

设置量表显示的值。有效值为momentarymomentaryshortterm和短时

scale

设置响度的显示比例。有效参数为absolute(以 LUFS 为单位) 或relative(LU) 相对于目标。这仅影响视频输出,不影响摘要或连续日志输出。

integrated

导出的只读值,用于测量集成响度,以 LUFS 为单位。

range

导出的只读值,用于测量响度范围,以 LU 为单位。

lra_low

导出的只读值,用于测量 LRA 低值,以 LUFS 为单位。

lra_high

导出的只读值,用于测量 LRA 高值,以 LUFS 为单位。

sample_peak

导出的只读值,用于测量样例峰值,以 dBFS 为单位。

true_peak

导出的只读值,用于测量真实峰值,以 dBFS 为单位。

39.10.1 示例

  • 实时图表使用ffplay,带有 EBU 音量计量尺度 +18:
    ffplay -f lavfi -i "amovie=input.mp3,ebur128=video=1:meter=18 [out0][out1]"
    
  • 运行分析使用ffmpeg:
    ffmpeg -nostats -i input.mp3 -filter_complex ebur128 -f null -
    

39.11 interleave, ainterleave

临时交织来自多个输入的帧。

interleave适用于视频输入,ainterleave适用于音频。

这些过滤器从多个输入读取帧并将最早的排队帧发送到输出。

输入流必须具有明确的、单调递增的帧时间戳值。

为了向输出提交一个帧,这些过滤器需要至少为每个输入排队一个帧,因此它们无法处理一个输入未完成且不会接收输入帧的情况。

例如,考虑一个输入是select过滤器,它始终丢弃输入帧。这个interleave过滤器将继续从该输入读取,但直到该输入发送一个流结束信号之前,它永远无法发送新帧到输出。

此外,根据输入之间的同步,过滤器将丢弃帧,如果一个输入接收到的帧多于其他输入,并且队列已满。

这些过滤器接受以下选项:

nb_inputs, n

设置不同输入的数量,默认值是 2。

duration

如何确定流结束。

longest

最长输入的持续时间。(默认)

shortest

最短输入的持续时间。

first

第一个输入的持续时间。

39.11.1 示例

  • 交织属于不同流的帧使用ffmpeg:
    ffmpeg -i bambi.avi -i pr0n.mkv -filter_complex "[0:v][1:v] interleave" out.avi
    
  • 添加闪烁模糊效果:
    select='if(gt(random(0), 0.2), 1, 2)':n=2 [tmp], boxblur=2:2, [tmp] interleave
    

39.12 latency, alatency

测量过滤延迟。

报告之前过滤器的过滤延迟,对于音频过滤器来说是音频样例的数量,对于视频过滤器来说是视频帧的数量。

在输入流结束时,过滤器将报告过滤图中之前运行过滤器的最小和最大测量延迟。

39.13 metadata, ametadata

操作帧元数据。

该过滤器接受以下选项:

mode

设置过滤器的操作模式。

可以是以下之一:

select

如果同时设置valuekey,选择具有此类元数据的帧。如果只设置key,选择每帧中包含此键的帧。

add

添加新元数据keyvalue如果键已存在则不执行操作。

modify

修改已存在键的值。

delete

如果value被设置,只删除具有此值的键。否则删除键。如果key未设置,则删除帧中的所有元数据值。

print

打印键及其值,如果找到元数据。 如果未设置key则打印帧中可用的所有元数据值。

key

设置用于所有模式的键。对于所有模式必须设置,除了printdelete.

value

设置将使用的元数据值。此选项是modifyadd模式的必需。

function

用于比较元数据值与value.

的功能可以是以下之一:

same_str

值被解释为字符串,如果元数据值与value.

starts_with

开始则返回 true。value选项字符串。

less

将值解释为浮点数,如果元数据值小于,则返回true。value.

equal

将值解释为浮点数,如果...value与元数据值相等。

greater

将值解释为浮点数,如果元数据值大于,则返回true。value.

expr

将值解释为浮点数,如果选项中的表达式expr求值为true,则返回true。

ends_with

将值解释为字符串,如果元数据值以选项字符串结尾,则返回true。value选项字符串。

expr

设置表达式,当...function设置为...expr时使用。 该表达式通过eval API进行评估,可包含以下常量:

VALUE1, FRAMEVAL

元数据键的浮点表示。value用户在选项中提供的浮点表示。

VALUE2, USERVAL

Float representation of value作为用户提供的值。value option.

file

在模式中指定时,输出内容会写入指定的名称文件。除普通文件名外,任何可写URL都可以指定。文件名“-”是标准输出的简写。如果选项未设置,输出内容会以AV_LOG_INFO日志级别输出到日志中。print mode, output is written to the named file. Instead of plain filename any writable url can be specified. Filename “-” is a shorthand for standard output. If file如果未设置选项,输出内容会以AV_LOG_INFO日志级别输出到日志中。

direct

在打印模式下,当使用文件时通过减少缓冲区写入URL可以加快速度。文件.

39.13.1 示例

  • 打印所有帧对应键值在0到1间的元数据值。lavfi.signalstats.YDIF
    signalstats,metadata=print:key=lavfi.signalstats.YDIF:value=0:function=expr:expr='between(VALUE1,0,1)'
    
  • 将检测到的静音输出打印到文件内。metadata.txt.
    silencedetect,ametadata=mode=print:file=metadata.txt
    
  • 将所有元数据定向到文件描述符为4的管道中。
    metadata=mode=print:file='pipe\:4'
    

39.14 perms,aperms

为输出帧设置读写权限。

这些滤镜主要用于开发者测试滤镜图中路径直接性。

滤镜接受以下选项:

mode

选择权限模式。

接受以下值:

none

不执行任何操作。这是默认设置。

ro

将所有输出帧设为只读。

rw

将所有输出帧设为可写。

toggle

如果帧为可写则将其设为只读,如果帧为只读则将其设为可写。

random

随机设定每个输出帧为只读或可写。

seed

为随机模式设置种子,必须是介于...随机模式的种子必须为介于0UINT32_MAX之间的整数。如果未指定,或显式设置为...-1"-1"...

注意:在权限滤镜与后续滤镜之间自动插入滤镜的情况下,权限可能未能如预期传递到后续滤镜。插入格式化(format)或音频格式化(aformat)滤镜可以避免此问题。format or aformat filter before the perms/aperms filter can avoid this problem.

39.15 realtime,arealtime

减慢过滤速度以大致匹配实时。

这些滤镜将会暂停一定时间以使输入时间戳与输出速率匹配。re类似于选项ffmpeg.

这些滤镜接受以下选项:

limit

暂停时间的限制。任何超过此限制的暂停将被视为时间戳不连续并重置计时器。默认为2秒。

speed

处理的速度因子。该值必须大于零。例如值大于1.0时处理速度会比实时更快,值小于1.0时处理速度会减慢。限值将根据情况自动调整。

不能通过这些滤镜实现比它们处理能力所允许的更快速度。

39.15.1 命令

这些滤镜支持所有上述选项作为命令命令.

39.16 segment,asegment

将单个输入流分割成多个流。

此滤镜是连接(concat)滤镜的反向操作。

segment视频帧上的操作。asegment音频样本上的操作。

此滤镜接受以下选项:

timestamps

输出片段的时间戳,用‘|’间隔开。第一个片段将从输入流开始,而最后一个片段将持续至输入流结束。

frames, samples

精确的帧数/样本数以分割片段。

在所有情况下以’+’前缀每个片段可使其相对于上个片段。

39.16.1 示例

  • 将输入音频流分为三个输出音频流,从输入开始,把第一部分保存在第一个输出流,从第60秒开始为第二部分保存在第二个输出流,从输入流的第150秒开始保存至第三个输出流:
    asegment=timestamps="60|150"
    

39.17 select,aselect

选择帧以供输出。

此滤镜接受以下选项:

expr, e

设置表达式,该表达式会对每个输入帧进行评估。

如果表达式评估结果为零,则该帧将被丢弃。

如果评估结果为负值或NaN,则该帧会发送到第一个输出;否则,它将发送到索引为...ceil(val)-1的输出。

例如一个值...1.2对应索引为...ceil(1.2)-1 = 2-1 = 1的输出,即第二个输出。

outputs, n

设置输出数量。选定帧要发送到的目标输出基于评估结果。默认值为1。

该表达式可包含以下常量:

n

过滤后的帧的顺序编号,从0开始。

selected_n

选定帧的顺序编号,从0开始。

prev_selected_n

上一个选定帧的顺序编号。如果未定义,则为NaN。

TB

输入时间戳的时间基准。

pts

过滤帧的PTS(显示时间戳),以时间基准...TB单位表示。如果未定义,则为NaN。

t

过滤帧的PTS,以秒表示。如果未定义,则为NaN。

prev_pts

上一个过滤帧的PTS。如果未定义,则为NaN。

prev_selected_pts

最后一个过滤帧的PTS。如果未定义,则为NaN。

prev_selected_t

最后一个选定帧的PTS,以秒表示。如果未定义,则为NaN。

start_pts

流中的第一个PTS值不是NaN。如果未找到,则仍为NaN。

start_t

流中的第一个PTS值,以秒表示,不是NaN。如果未找到,则仍为NaN。

pict_type (仅适用于视频)

过滤帧的类型。可能值为:

I
P
B
S
SI
SP
BI
interlace_type (仅适用于视频)

帧隔行类型。可能值为:

PROGRESSIVE

此帧是渐进的(非隔行)。

TOPFIRST

此帧是顶场优先。

BOTTOMFIRST

此帧是底场优先。

consumed_sample_n (仅适用于音频)

当前帧之前选择的样本数量。

samples_n (仅适用于音频)

当前帧中的样本数量。

sample_rate (仅适用于音频)

输入的样本速率。

key

如果过滤帧是关键帧,则值为1,否则为0。

pos

过滤帧在文件中的位置,如果信息不可用(例如对于合成视频),则为-1;已弃用,不要使用。

scene (仅适用于视频)

值介于0到1之间,用于表示新场景。较低值反映当前帧引入新场景的可能性较低,而较高值表示可能性较高(参见示例)。

concatdec_select

Concat复合解复用器可以通过设置起点和终点来选择Concat输入文件的一部分,但输出数据包可能并不完全包含在选定的时间间隔中。通过使用此变量,可以跳过某些由Concat复合解复用器生成但未完全包含在所选时间间隔中的帧。

此工作的实现方式是比较帧的pts与lavf.concat.start_timelavf.concat.duration的元数据值,这些值也出现在解码的帧中。

变量concatdec_select为-1,表示帧pts至少大于等于start_time,并且duration元数据缺失或帧pts小于start_time + duration,若不符合此条件则为0,如果start_time元数据缺失则为NaN。

这基本意味着如果帧的pts在Concat复合解复用器设定的区间内,该帧就会被选中。

iw (仅适用于视频)

表示输入视频帧的宽度。

ih (仅适用于视频)

表示输入视频帧的高度。

view (仅适用于视频)

多视图视频的视图ID。

select表达式的默认值是"1"。

39.17.1 示例

  • 选择所有输入帧:
    select
    

    以上示例与以下示例相同:

    select=1
    
  • 跳过所有帧:
    select=0
    
  • 仅选择I帧:
    select='eq(pict_type\,I)'
    
  • 每100帧选择一个:
    select='not(mod(n\,100))'
    
  • 仅选择包含在10到20秒时间间隔内的帧:
    select=between(t\,10\,20)
    
  • 仅选择包含在10到20秒时间间隔内的I帧:
    select=between(t\,10\,20)*eq(pict_type\,I)
    
  • 选择帧与帧间至少相隔10秒:
    select='isnan(prev_selected_t)+gte(t-prev_selected_t\,10)'
    
  • 使用aselect选择样本数 > 100的音频帧:
    aselect='gt(samples_n\,100)'
    
  • 创建第一个场景的拼图:
    ffmpeg -i video.avi -vf select='gt(scene\,0.4)',scale=160:120,tile -frames:v 1 preview.png
    

    比较场景与0.3和0.5之间的值通常是合理的选择。

  • 将偶数帧和奇数帧分别发送到不同输出,并合成这两组帧:
    select=n=2:e='mod(n, 2)+1' [odd][even]; [odd] pad=h=2*ih [tmp]; [tmp][even] overlay=y=h
    
  • 从一个ffconcat文件中选择有用的帧,该文件正在使用启始点和终止点,但其中的源文件不是仅关键帧的。
    ffmpeg -copyts -vsync 0 -segment_time_metadata 1 -i input.ffconcat -vf select=concatdec_select -af aselect=concatdec_select output.avi
    

39.18 sendcmd,asendcmd

向滤镜图中的滤镜发送命令。

这些滤镜读取命令并将其发送到滤镜图中的其他滤镜。

sendcmd必须插入到两个视频滤镜之间,asendcmd必须插入到两个音频滤镜之间,但除此之外两者行为相同。

命令的规范可通过过滤器参数命令选项提供,或通过指定文件名...选项。 option.

这些滤镜接受以下选项:

commands, c

设置要读取并发送到其他滤镜的命令。

filename, f

设置文件名,以从中读取并发送到其他滤镜的命令。

39.18.1 命令语法

一个命令描述由一系列间隔规范组成,包括一系列在事件发生时特定间隔内应该执行的命令。这些发生事件通常是当前帧时间进入或离开一个给定时间间隔。

一个间隔通过以下语法指定:

起点[-终点] 命令;

时间间隔由起点和...起点终点...终点时间设定。终点是可选的,默认值为最大时间。

当前帧时间被认为包含在指定时间间隔中,如果它在区间[起点...起点, 终点)之内的时间,即时间大于或等于起点且小于终点。起点和终点...终点.

命令由一个或多个命令的定义组成,按逗号间隔,与该间隔相关联。 命令定义的语法如下:

[标志] 目标 命令 参数

标志是可选的,指定与时间间隔相关的事件类型并决定发送该命令。必须是一个非空的标志序列,用+或|间隔开并用方括号括起。

以下标志是被识别的:

enter

在当前帧时间戳进入指定间隔时发送命令。换句话说,当上一次帧时间戳不在指定间隔内,而当前帧时间戳在间隔内时发送命令。

leave

在当前帧时间戳离开指定间隔时发送命令。换句话说,当上一次帧时间戳在指定间隔内,而当前帧时间戳不在间隔内时发送命令。

expr

命令参数被解释为表达式,表达式结果将作为参数传递。参数.

表达式通过eval API评估,表达式可以包含以下常量:

POS

帧在文件中的原始位置,如果当前帧未定义,则为未定义;已弃用,请勿使用。

PTS

输入中的显示时间戳。

N

视频或音频输入帧的计数,从0开始。

T

当前帧的秒数。

TS

当前命令区间的开始时间(秒)。

TE

当前命令区间的结束时间(秒)。

TI

当前命令区间的插值时间,TI = (T - TS) / (TE - TS)。

W

视频帧宽度。

H

视频帧高度。

如果FLAGS未指定,则默认值为[enter]假定。

TARGET指定命令的目标,通常是滤镜类的名称或特定滤镜实例名称。

COMMAND指定目标滤镜的命令名称。

ARG是可选的,用于指定给定COMMAND.

的参数列表。#在一个区间规范和另一个之间,空格或以

命令规范语法的简化BNF描述如下:

COMMAND_FLAG  ::= "enter" | "leave"
COMMAND_FLAGS ::= COMMAND_FLAG [(+|"|")COMMAND_FLAG]
COMMAND       ::= ["[" COMMAND_FLAGS "]"] TARGET COMMAND [ARG]
COMMANDS      ::= COMMAND [,COMMANDS]
INTERVAL      ::= START[-END] COMMANDS
INTERVALS     ::= INTERVAL[;INTERVALS]

39.18.2 示例

  • 在第4秒指定音频节奏变化:
    asendcmd=c='4.0 atempo tempo 1.5',atempo
    
  • 定位到特定的滤镜实例:
    asendcmd=c='4.0 atempo@my tempo 1.5',atempo@my
    
  • 在文件中指定drawtext和hue命令列表。
    # show text in the interval 5-10
    5.0-10.0 [enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=hello world',
             [leave] drawtext reinit 'fontfile=FreeSerif.ttf:text=';
    
    # desaturate the image in the interval 15-20
    15.0-20.0 [enter] hue s 0,
              [enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=nocolor',
              [leave] hue s 1,
              [leave] drawtext reinit 'fontfile=FreeSerif.ttf:text=color';
    
    # apply an exponential saturation fade-out effect, starting from time 25
    25 [enter] hue s exp(25-t)
    

    一个允许读取并处理上述命令列表的滤镜图可以通过以下方式指定:test.cmd存储在文件

    sendcmd=f=test.cmd,drawtext=fontfile=FreeSerif.ttf:text='',hue
    

39.19 setpts, asetpts

更改输入帧的PTS(呈现时间戳)。

setpts适用于视频帧,asetpts适用于音频帧。

此滤镜接受以下选项:

expr

为每帧评估的表达式以构建其时间戳。

通过eval API评估表达式,可以包含以下常量:

FRAME_RATE, FR

帧率,仅为恒定帧率视频定义。

PTS

输入中的显示时间戳

N

输入视频帧计数或消耗的音频样本数(不包括当前帧),从0开始。

NB_CONSUMED_SAMPLES

消耗的样本数,不包括当前帧(仅音频)。

NB_SAMPLES, S

当前帧的样本数(仅音频)。

SAMPLE_RATE, SR

音频采样率。

STARTPTS

第一帧的PTS。

STARTT

第一帧的时间(秒)。

INTERLACED

声明当前帧是否隔行扫描。

T

当前帧的时间(秒)。

POS

帧在文件中的原始位置,若未定义则未定义;已废弃,请勿使用。

PREV_INPTS

先前的输入PTS。

PREV_INT

先前的输入时间(秒)。

PREV_OUTPTS

先前的输出PTS。

PREV_OUTT

先前的输出时间(秒)。

RTCTIME

墙钟(RTC)时间(微秒)。此项已废弃,请改用time(0)。

RTCSTART

电影开始时的墙钟(RTC)时间(微秒)。

TB

输入时间戳的时间基。

T_CHANGE

命令应用后的第一帧时间或没有命令时的第一帧时间。

39.19.1 示例

  • 从零开始计算PTS
    setpts=PTS-STARTPTS
    
  • 应用快速动作效果:
    setpts=0.5*PTS
    
  • 应用慢动作效果:
    setpts=2.0*PTS
    
  • 设置固定的每秒25帧速率:
    setpts=N/(25*TB)
    
  • 应用+/-100 TB单位的随机抖动效果:
    setpts=PTS+randomi(0, -100\,100)
    
  • 设定固定25 fps速率并带有一些抖动:
    setpts='1/(25*TB) * (N + 0.05 * sin(N*2*PI/25))'
    
  • 将输入PTS偏移10秒:
    setpts=PTS+10/TB
    
  • 从“实时源”生成时间戳并重新基于当前时间基:
    setpts='(RTCTIME - RTCSTART) / (TB * 1000000)'
    
  • 通过计数样本生成时间戳:
    asetpts=N/SR/TB
    

39.19.2 命令

两种滤镜均支持前述所有选项作为命令。.

39.20 setrange

为输出视频帧强制设置色彩范围。

setrange滤镜标记输出帧的色彩范围属性。它不会更改输入帧,但仅设置相关属性,影响后续滤镜如何处理该帧。

滤镜接受以下选项:

range

可用值包括:

auto

保持相同的色彩范围属性。

unspecified, unknown

将色彩范围设置为不确定。

limited, tv, mpeg

将色彩范围设置为受限。

full, pc, jpeg

将色彩范围设置为全范围。

39.21 settb, asettb

设置用于输出帧时间戳的时间基。 主要用于测试时间基配置。

它接受以下参数:

expr, tb

评估为输出时间基的表达式。

值为tb的算术表达式,表示一个有理数。表达式可以包含常量"AVTB"(默认时间基)、"intb"(输入时间基)和"sr"(采样率,仅音频)。默认值为"intb"。

39.21.1 示例

  • 将时间基设置为1/25:
    settb=expr=1/25
    
  • 将时间基设置为1/10:
    settb=expr=0.1
    
  • 将时间基设置为1001/1000:
    settb=1+0.001
    
  • 将时间基设置为2*intb:
    settb=2*intb
    
  • 设置默认时间基值:
    settb=AVTB
    

39.22 showcqt

使用Brown-Puckette常Q变换算法将输入音频转换为表示频谱(对数式)的视频输出。

The filter accepts the following options:

size, s

Specify the video size for the output. It must be even. For the syntax of this option, check the (ffmpeg-utils)"Video size" section in the ffmpeg-utils manual. Default value is 1920x1080.

fps, rate, r

Set the output frame rate. Default value is 25.

bar_h

Set the bargraph height. It must be even. Default value is -1 which computes the bargraph height automatically.

axis_h

Set the axis height. It must be even. Default value is -1 which computes the axis height automatically.

sono_h

Set the sonogram height. It must be even. Default value is -1 which computes the sonogram height automatically.

fullhd

Set the fullhd resolution. This option is deprecated, use size, s instead. Default value is 1.

sono_v, volume

Specify the sonogram volume expression. It can contain variables:

bar_v

the bar_v evaluated expression

frequency, freq, f

the frequency where it is evaluated

timeclamp, tc

the value of timeclamp option

and functions:

a_weighting(f)

A-weighting of equal loudness

b_weighting(f)

B-weighting of equal loudness

c_weighting(f)

C-weighting of equal loudness.

Default value is 16.

bar_v, volume2

Specify the bargraph volume expression. It can contain variables:

sono_v

the sono_v evaluated expression

frequency, freq, f

the frequency where it is evaluated

timeclamp, tc

the value of timeclamp option

and functions:

a_weighting(f)

A-weighting of equal loudness

b_weighting(f)

B-weighting of equal loudness

c_weighting(f)

C-weighting of equal loudness.

Default value is sono_v.

sono_g, gamma

Specify the sonogram gamma. Lower gamma makes the spectrum more contrast, higher gamma makes the spectrum having more range. Default value is 3. Acceptable range is [1, 7].

bar_g, gamma2

Specify the bargraph gamma. Default value is 1. Acceptable range is [1, 7].

bar_t

Specify the bargraph transparency level. Lower value makes the bargraph sharper. Default value is 1. Acceptable range is [0, 1].

timeclamp, tc

Specify the transform timeclamp. At low frequency, there is trade-off between accuracy in time domain and frequency domain. If timeclamp is lower, event in time domain is represented more accurately (such as fast bass drum), otherwise event in frequency domain is represented more accurately (such as bass guitar). Acceptable range is [0.002, 1]. Default value is 0.17.

attack

Set attack time in seconds. The default is 0 (disabled). Otherwise, it limits future samples by applying asymmetric windowing in time domain, useful when low latency is required. Accepted range is [0, 1].

basefreq

Specify the transform base frequency. Default value is 20.01523126408007475, which is frequency 50 cents below E0. Acceptable range is [10, 100000].

endfreq

Specify the transform end frequency. Default value is 20495.59681441799654, which is frequency 50 cents above D#10. Acceptable range is [10, 100000].

coeffclamp

This option is deprecated and ignored.

tlength

Specify the transform length in time domain. Use this option to control accuracy trade-off between time domain and frequency domain at every frequency sample. It can contain variables:

frequency, freq, f

the frequency where it is evaluated

timeclamp, tc

the value of timeclamp option.

Default value is 384*tc/(384+tc*f).

count

Specify the transform count for every video frame. Default value is 6. Acceptable range is [1, 30].

fcount

Specify the transform count for every single pixel. Default value is 0, which makes it computed automatically. Acceptable range is [0, 10].

fontfile

Specify font file for use with freetype to draw the axis. If not specified, use embedded font. Note that drawing with font file or embedded font is not implemented with custom basefreq and endfreq, use axisfile option instead.

font

Specify fontconfig pattern. This has lower priority than fontfile. The : in the pattern may be replaced by | to avoid unnecessary escaping.

fontcolor

Specify font color expression. This is arithmetic expression that should return integer value 0xRRGGBB. It can contain variables:

frequency, freq, f

the frequency where it is evaluated

timeclamp, tc

the value of timeclamp option

and functions:

midi(f)

midi number of frequency f, some midi numbers: E0(16), C1(24), C2(36), A4(69)

r(x), g(x), b(x)

red, green, and blue value of intensity x.

Default value is st(0, (midi(f)-59.5)/12); st(1, if(between(ld(0),0,1), 0.5-0.5*cos(2*PI*ld(0)), 0)); r(1-ld(1)) + b(ld(1)).

axisfile

Specify image file to draw the axis. This option override fontfile and fontcolor option.

axis, text

Enable/disable drawing text to the axis. If it is set to 0, drawing to the axis is disabled, ignoring fontfile and axisfile option. Default value is 1.

csp

Set colorspace. The accepted values are:

unspecified

Unspecified (default)

bt709

BT.709

fcc

FCC

bt470bg

BT.470BG or BT.601-6 625

smpte170m

SMPTE-170M or BT.601-6 525

smpte240m

SMPTE-240M

bt2020ncl

BT.2020 with non-constant luminance

cscheme

Set spectrogram color scheme. This is list of floating point values with format left_r|left_g|left_b|right_r|right_g|right_b. The default is 1|0.5|0|0|0.5|1.

39.22.1 Examples

  • Playing audio while showing the spectrum:
    ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt [out0]'
    
  • Same as above, but with frame rate 30 fps:
    ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt=fps=30:count=5 [out0]'
    
  • Playing at 1280x720:
    ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt=s=1280x720:count=4 [out0]'
    
  • Disable sonogram display:
    sono_h=0
    
  • A1 and its harmonics: A1, A2, (near)E3, A3:
    ffplay -f lavfi 'aevalsrc=0.1*sin(2*PI*55*t)+0.1*sin(4*PI*55*t)+0.1*sin(6*PI*55*t)+0.1*sin(8*PI*55*t),
                     asplit[a][out1]; [a] showcqt [out0]'
    
  • Same as above, but with more accuracy in frequency domain:
    ffplay -f lavfi 'aevalsrc=0.1*sin(2*PI*55*t)+0.1*sin(4*PI*55*t)+0.1*sin(6*PI*55*t)+0.1*sin(8*PI*55*t),
                     asplit[a][out1]; [a] showcqt=timeclamp=0.5 [out0]'
    
  • Custom volume:
    bar_v=10:sono_v=bar_v*a_weighting(f)
    
  • Custom gamma, now spectrum is linear to the amplitude.
    bar_g=2:sono_g=2
    
  • Custom tlength equation:
    tc=0.33:tlength='st(0,0.17); 384*tc / (384 / ld(0) + tc*f /(1-ld(0))) + 384*tc / (tc*f / ld(0) + 384 /(1-ld(0)))'
    
  • Custom fontcolor and fontfile, C-note is colored green, others are colored blue:
    fontcolor='if(mod(floor(midi(f)+0.5),12), 0x0000FF, g(1))':fontfile=myfont.ttf
    
  • Custom font using fontconfig:
    font='Courier New,Monospace,mono|bold'
    
  • Custom frequency range with custom axis using image file:
    axisfile=myaxis.png:basefreq=40:endfreq=10000
    

39.23 showcwt

Convert input audio to video output representing frequency spectrum using Continuous Wavelet Transform and Morlet wavelet.

The filter accepts the following options:

size, s

Specify the video size for the output. For the syntax of this option, check the (ffmpeg-utils)"Video size" section in the ffmpeg-utils manual. Default value is 640x512.

rate, r

Set the output frame rate. Default value is 25.

scale

Set the frequency scale used. Allowed values are:

linear
log
bark
mel
erbs
sqrt
cbrt
qdrt
fm

Default value is linear.

iscale

Set the intensity scale used. Allowed values are:

linear
log
sqrt
cbrt
qdrt

Default value is log.

min

Set the minimum frequency that will be used in output. Default is 20 Hz.

max

Set the maximum frequency that will be used in output. Default is 20000 Hz. The real frequency upper limit depends on input audio’s sample rate and such will be enforced on this value when it is set to value greater than Nyquist frequency.

imin

Set the minimum intensity that will be used in output.

imax

Set the maximum intensity that will be used in output.

logb

Set the logarithmic basis for brightness strength when mapping calculated magnitude values to pixel values. Allowed range is from 0 to 1. 默认值是0.0001.

deviation

设置频率偏差。 小于1的值更注重频率, 而大于1的值更注重时间。 允许范围是从010。 默认值是1.

pps

设置每行每秒输出的像素数量。 允许范围是从11024。 默认值是64.

mode

设置输出可视模式。允许的值是:

magnitude

显示幅度。

phase

仅显示相位。

magphase

显示幅度和相位的组合。 幅度映射为亮度,相位映射为颜色。

channel

显示每个通道幅度的独特颜色。

stereo

显示立体声差异的独特颜色。

默认值是magnitude.

slide

设置输出滑动方法。允许的值是:

replace
scroll
frame
direction

设置输出滑动方法的方向。允许的值是:

lr

从左到右的方向。

rl

从右到左的方向。

ud

从上到下的方向。

du

从下到上的方向。

bar

设置条形图显示与显示尺寸的比例。默认值是 0。

rotation

设置颜色旋转,必须在 [-1.0, 1.0] 范围内。 默认值是0.

39.24 显示频率

将输入音频转换为表示音频功率谱的视频输出。 音频振幅在 Y 轴上,频率在 X 轴上。

该滤镜接受以下选项:

size, s

指定视频大小。有关该选项的语法,请参阅(ffmpeg-utils)ffmpeg-utils 手册中的“视频大小”部分。 默认值是1024x512.

rate, r

设置视频帧率。默认值是25.

mode

设置显示模式。 这将设置每个频率条的表示方式。

它接受以下值:

line
bar
dot

默认值是bar.

ascale

设置振幅刻度。

它接受以下值:

lin

线性刻度。

sqrt

平方根刻度。

cbrt

立方根刻度。

log

对数刻度。

默认值是log.

fscale

设置频率刻度。

它接受以下值:

lin

线性刻度。

log

对数刻度。

rlog

反对数刻度。

默认值是lin.

win_size

设置窗口大小。允许范围是从 16 到 65536。

默认值是2048

win_func

设置窗口函数。

它接受以下值:

rect
bartlett
hanning
hamming
blackman
welch
flattop
bharris
bnuttall
bhann
sine
nuttall
lanczos
gauss
tukey
dolph
cauchy
parzen
poisson
bohman
kaiser

默认值是hanning.

overlap

设置窗口重叠。范围为[0, 1]。默认值是1, 这意味着将选择为所选窗口函数最佳的重叠。

averaging

设置时间平均值。将其设为 0 将显示当前最大峰值。 默认值是1,这意味着时间平均值已禁用。

colors

指定由空格或‘|’分隔的颜色列表,这些颜色将用于 绘制通道频率。无法识别或缺失的颜色将替换为 白色。

cmode

设置通道显示模式。

它接受以下值:

combined
separate

默认值是combined.

minamp

设置在log振幅缩放器中使用的最小振幅。

data

设置数据的显示模式。

它接受以下值:

magnitude
phase
delay

默认值是magnitude.

channels

设置处理音频时要使用的通道。默认情况下处理所有通道。

39.25 显示空间

将立体声音频输入转换为视频输出,表示两个通道之间的空间关系。

该滤镜接受以下选项:

size, s

指定输出的视频大小。有关该选项的语法,请参阅(ffmpeg-utils)ffmpeg-utils 手册中的“视频大小”部分。 默认值是512x512.

win_size

设置窗口大小。允许范围是从102465536。默认大小是4096.

win_func

设置窗口函数。

它接受以下值:

rect
bartlett
hann
hanning
hamming
blackman
welch
flattop
bharris
bnuttall
bhann
sine
nuttall
lanczos
gauss
tukey
dolph
cauchy
parzen
poisson
bohman
kaiser

默认值是hann.

rate, r

设置输出帧率。

39.26 显示频谱

将输入音频转换为视频输出,表示音频频率谱。

该滤镜接受以下选项:

size, s

指定输出的视频大小。有关该选项的语法,请参阅(ffmpeg-utils)ffmpeg-utils 手册中的“视频大小”部分。 默认值是640x512.

slide

指定频谱在窗口中的滑动方式。

它接受以下值:

replace

当样本到达右侧时重新从左侧开始

scroll

样本从右向左滚动

fullframe

仅当样本到达右侧时制作帧

rscroll

样本从左向右滚动

lreplace

当样本到达左侧时重新从右侧开始

默认值是replace.

mode

指定显示模式。

它接受以下值:

combined

所有通道显示在同一行中

separate

所有通道显示在单独的行中

默认值是‘combined’.

color

指定显示颜色模式。

它接受以下值:

channel

每个通道以单独的颜色显示

intensity

每个通道使用相同的颜色方案显示

rainbow

每个通道使用彩虹颜色方案显示

moreland

每个通道使用莫尔兰颜色方案显示

nebulae

每个通道使用星云颜色方案显示

fire

每个通道使用火焰颜色方案显示

fiery

每个通道使用炽热颜色方案显示

fruit

每个通道使用水果颜色方案显示

cool

每个通道使用冷色颜色方案显示

magma

每个通道使用岩浆颜色方案显示

green

每个通道使用绿色颜色方案显示

viridis

每个通道使用维里迪斯颜色方案显示

plasma

每个通道使用等离子颜色方案显示

cividis

每个通道使用色盲友好颜色方案显示

terrain

每个通道使用地形颜色方案显示

默认值是‘channel’.

scale

指定用于计算强度颜色值的刻度。

它接受以下值:

lin

线性

sqrt

平方根,默认

cbrt

立方根

log

对数

4thrt

四次根

5thrt

五次根

默认值是‘sqrt’.

fscale

指定频率刻度。

它接受以下值:

lin

线性

log

对数

默认值是‘lin’.

saturation

设置显示颜色的饱和度修饰符。负值提供 替代颜色方案。0没有饱和度。 饱和度必须在 [-10.0, 10.0] 范围内。 默认值是1.

win_func

设置窗口函数。

它接受以下值:

rect
bartlett
hann
hanning
hamming
blackman
welch
flattop
bharris
bnuttall
bhann
sine
nuttall
lanczos
gauss
tukey
dolph
cauchy
parzen
poisson
bohman
kaiser

默认值是hann.

orientation

设置时间轴与频率轴的方向。可以是verticalhorizontal。默认是vertical.

overlap

设置窗口重叠比例。默认值是0。 当值为1时,重叠设置为目前使用的特定 窗口函数的推荐大小。

gain

设置用于计算强度颜色值的刻度增益。 默认值是1.

data

设置显示哪些数据。可以是magnitude,默认或phase, 或者展开的相位:uphase.

rotation

设置颜色旋转,必须在 [-1.0, 1.0] 范围内。 默认值是0.

start

设置显示频谱图的起始频率。默认是0.

stop

设置显示频谱图的结束频率。默认是0.

fps

设置帧速率上限。默认是auto,无限制。

legend

绘制时间和频率轴及图例。默认是未启用。

drange

设置用于计算强度颜色值的动态范围。默认是 120 dBFS。 允许范围是从 10 到 200。

limit

设置输入音频样本音量的上限 (dBFS)。默认是 0 dBFS。 允许范围是从 -100 到 100。

opacity

在使用带有 alpha 分量的像素格式输出时设置不透明度强度。

用法与 showwaves 滤镜非常相似;请参阅该章节中的示例。

39.26.1 示例

  • 使用对数颜色刻度的大窗口示例:
    showspectrum=s=1280x480:scale=log
    
  • 为每个通道使用彩色和滑动频谱的完整示例ffplay:
    ffplay -f lavfi 'amovie=input.mp3, asplit [a][out1];
                 [a] showspectrum=mode=separate:color=intensity:slide=1:scale=cbrt [out0]'
    

39.27 显示频谱图

将输入音频转换为包含音频频谱的单帧视频。

该滤镜接受以下选项:

size, s

指定输出的视频大小。有关该选项的语法,请参阅(ffmpeg-utils)ffmpeg-utils 手册中的“视频大小”部分。 默认值是4096x2048.

mode

指定显示模式。

它接受以下值:

combined

所有通道显示在同一行中

separate

所有通道显示在不同的行中

默认值是‘combined’.

color

指定显示颜色模式。

它接受以下值:

channel

每个通道使用单独的颜色显示

intensity

每个通道使用相同的颜色方案显示

rainbow

每个通道使用彩虹颜色方案显示

moreland

每个通道使用莫尔兰颜色方案显示

nebulae

每个通道使用星云颜色方案显示

fire

每个通道使用火焰颜色方案显示

fiery

每个通道使用炽热颜色方案显示

fruit

每个通道使用水果颜色方案显示

cool

每个通道使用冷色颜色方案显示

magma

每个通道使用岩浆颜色方案显示

green

每个通道使用绿色颜色方案显示

viridis

每个通道使用维里迪斯颜色方案显示

plasma

每个通道使用等离子颜色方案显示

cividis

每个通道使用色盲友好颜色方案显示

terrain

每个通道使用地形颜色方案显示

默认值是‘intensity’.

scale

指定用于计算强度颜色值的刻度。

它接受以下值:

lin

线性

sqrt

平方根,默认

cbrt

立方根

log

对数

4thrt

四次根

5thrt

五次根

默认值是‘log’.

fscale

指定频率刻度。

它接受以下值:

lin

线性

log

对数

默认值是‘lin’.

saturation

设置显示颜色的饱和度修饰符。负值提供 替代颜色方案。0没有饱和度。 饱和度必须在 [-10.0, 10.0] 范围内。 默认值是1.

win_func

设置窗口函数。

它接受以下值:

rect
bartlett
hann
hanning
hamming
blackman
welch
flattop
bharris
bnuttall
bhann
sine
nuttall
lanczos
gauss
tukey
dolph
cauchy
parzen
poisson
bohman
kaiser

默认值是hann.

orientation

设置时间轴与频率轴的方向。可以是verticalhorizontal。默认是vertical.

gain

设置用于计算强度颜色值的刻度增益。 默认值是1.

legend

绘制时间和频率轴及图例。默认是已启用。

rotation

设置颜色旋转,必须在 [-1.0, 1.0] 范围内。 默认值是0.

start

设置显示频谱图的起始频率。默认是0.

stop

设置显示频谱图的结束频率。默认是0.

drange

设置用于计算强度颜色值的动态范围。默认是 120 dBFS。 允许范围是从 10 到 200。

limit

设置输入音频样本音量的上限 (dBFS)。默认是 0 dBFS。 允许范围是从 -100 到 100。

opacity

在使用带有 alpha 分量的像素格式输出时设置不透明度强度。

39.27.1 示例

  • 提取整个音频曲目的音频频谱 到 1024x1024 图片中ffmpeg:
    ffmpeg -i audio.flac -lavfi showspectrumpic=s=1024x1024 spectrogram.png
    

39.28 显示音量

将输入音频的音量转换为视频输出。

该滤镜接受以下选项:

rate, r

设置视频帧率。

b

设置边框宽度,允许范围是 [0, 5]。默认值是 1。

w

设置通道宽度,允许范围是 [80, 8192]。默认值是 400。

h

设置通道高度,允许范围是 [1, 900]。默认值是 20。

f

设置渐隐效果,允许范围是 [0, 1]。默认值是 0.95。

c

设置音量颜色表达式。

表达式可以使用以下变量:

VOLUME

当前通道的最大音量 (dB)。

PEAK

当前峰值。

CHANNEL

当前通道号,从 0 开始。

t

如果设置,则显示通道名称。默认启用。

v

如果设置,则显示音量值。默认启用。

o

设置方向,可以是水平:h或垂直:v, 默认是h.

s

设置步长大小,允许范围是 [0, 5]。默认值是 0,这意味着 步长被禁用。

p

设置背景不透明度,允许范围是 [0, 1]。默认值是 0。

m

设置测量模式,可以是峰值:p或均方根:r, 默认是p.

ds

设置显示刻度,可以是线性:lin或对数:log, 默认是lin.

dm

以秒为单位。 如果设置为 > 0,则显示前几秒内的最大音量线。 默认是禁用。0.

dmc

最大线的颜色。使用时dm选项设置为 > 0。 默认是:orange

39.29 显示波形

将输入音频转换为代表音频波形的视频输出。

该滤镜接受以下选项:

size, s

指定输出视频的尺寸。有关此选项的语法,请查看(ffmpeg-utils)"视频尺寸"部分,在ffmpeg-utils手册中。 默认值为600x240.

mode

设置显示模式。

可用值有:

point

为每个样本绘制一个点。

line

为每个样本绘制一条垂直线。

p2p

为每个样本绘制一个点,并在它们之间绘制线。

cline

为每个样本绘制一条居中的垂直线。

默认值为point.

n

设置打印在同一列上的样本数量。较大的值会降低帧率。必须为正整数。只有当rate未明确指定时才能设置此选项。

rate, r

设置(大约的)输出帧率。这是通过设置选项n来完成的。默认值为"25"。

split_channels

设置是否单独绘制通道或重叠绘制通道。默认值为0。

colors

设置用’|’分隔的颜色,将用于绘制每个通道。

scale

设置振幅比例。

可用值有:

lin

线性。

log

对数。

sqrt

平方根。

cbrt

立方根。

默认值为线性。

draw

设置绘图模式。这主要用于高n.

时设置。

scale

为每个绘制的样本缩放像素值。

full

直接绘制每个样本。

默认值为scale.

39.29.1 示例

  • 同时输出输入文件音频及对应的视频表示:
    amovie=a.mp3,asplit[out0],showwaves[out1]
    
  • 创建合成信号并用showwaves显示,强制以每秒30帧的帧率:
    aevalsrc=sin(1*2*PI*t)*sin(880*2*PI*t):cos(2*PI*200*t),asplit[out0],showwaves=r=30[out1]
    

39.30 showwavespic

将输入音频转换为单个视频帧,表示样本波形。

滤镜接受以下选项:

size, s

指定输出视频的尺寸。有关此选项的语法,请查看(ffmpeg-utils)"视频尺寸"部分,在ffmpeg-utils手册中。 默认值为600x240.

split_channels

设置是否单独绘制通道或重叠绘制通道。默认值为0。

colors

设置用’|’分隔的颜色,将用于绘制每个通道。

scale

设置振幅比例。

可用值有:

lin

线性。

log

对数。

sqrt

平方根。

cbrt

立方根。

默认值为线性。

draw

设置绘图模式。

可用值有:

scale

为每个绘制的样本缩放像素值。

full

直接绘制每个样本。

默认值为scale.

filter

设置过滤模式。

可用值有:

average

对每个绘制样本使用平均样本值。

peak

对每个绘制样本使用峰值样本值。

默认值为average.

39.30.1 示例

  • 从整个音轨提取频道分裂表示的波形到一个1024x800的图片中ffmpeg:
    ffmpeg -i audio.flac -lavfi showwavespic=split_channels=1:s=1024x800 waveform.png
    

39.31 sidedata, asidedata

删除帧副数据,或基于副数据选择帧。

此滤镜接受以下选项:

mode

设置滤镜的操作模式。

可以是以下之一:

select

选择每一帧具有type.

delete

删除type的副数据。如果type未设置,则删除帧中的所有副数据。

type

设置所有模式使用的副数据类型。必须为select模式设置。有关帧副数据类型的列表,请参阅AVFrameSideDataType枚举 在libavutil/frame.h中。例如,要选择AV_FRAME_DATA_PANSCAN副数据,您必须指定PANSCAN.

39.32 spectrumsynth

从两个输入视频频谱中合成音频,第一个输入流表示跨时间的幅值,第二个表示跨时间的相位。 滤镜将从视频中展示的频域转换回音频输出展示的时间域。

该滤镜主要用于反向处理showspectrum滤镜输出,但也可以从其他频谱图合成声音。 但在这种情况下,如果没有可用的相位数据,结果会很差,因为没有相位数据时需要重新生成相位,通常只是从随机噪声中重新生成。 要获得最佳结果,请仅使用灰度输出(channel颜色模式在showspectrum滤镜中)和log幅值视频的比例,以及lin相位视频的比例。要生成相位,对于第二个视频,使用data选项。输入视频通常应该使用fullframe幻灯片模式,因为这样可以节省解码视频所需的资源。

此滤镜接受以下选项:

sample_rate

指定输出音频的采样率,生成频谱所用音频的采样率可能不同。

channels

设置在输入视频频谱中表示的通道数量。

scale

设置生成幅值输入频谱时使用的比例。 可以是linlog。默认值为log.

slide

设置生成输入频谱时使用的幻灯片。 可以是replace, scroll, fullframerscroll。 默认值为fullframe.

win_func

设置用于重新合成的窗口函数。

overlap

设置窗口重叠。在范围内[0, 1]。默认值为1,这意味着将选择适合所选窗口函数的最佳重叠。

orientation

设置输入视频的方向。可以是verticalhorizontal。 默认值为vertical.

39.32.1 示例

  • 首先从音频创建幅值和相位视频,假设音频为立体声,采样率为44100,然后用spectrumsynth将视频重新合成回音频:
    ffmpeg -i input.flac -lavfi showspectrum=mode=separate:scale=log:overlap=0.875:color=channel:slide=fullframe:data=magnitude -an -c:v rawvideo magnitude.nut
    ffmpeg -i input.flac -lavfi showspectrum=mode=separate:scale=lin:overlap=0.875:color=channel:slide=fullframe:data=phase -an -c:v rawvideo phase.nut
    ffmpeg -i magnitude.nut -i phase.nut -lavfi spectrumsynth=channels=2:sample_rate=44100:win_func=hann:overlap=0.875:slide=fullframe output.flac
    

39.33 split, asplit

将输入分割成多个相同的输出。

asplit用于音频输入,split用于视频。

滤镜接受一个参数,该参数指定输出的数量。如果未指定,则默认为2。

39.33.1 示例

  • 从同一输入创建两个单独输出:
    [in] split [out0][out1]
    
  • 要创建3个或更多输出,您需要指定输出的数量,例如:
    [in] asplit=3 [out0][out1][out2]
    
  • 从同一输入创建两个单独输出,一个裁剪,一个填充:
    [in] split [splitout1][splitout2];
    [splitout1] crop=100:100:0:0    [cropout];
    [splitout2] pad=200:200:100:100 [padout];
    
  • ffmpeg:
    ffmpeg -i INPUT -filter_complex asplit=5 OUTPUT
    

创建输入音频的5份副本。

通过libzmq客户端接收发送的命令,并将其转发到过滤器图中的过滤器。

zmqazmq作为穿透式滤镜工作。zmq必须插入两个视频滤镜之间,azmq插入两个音频滤镜之间。两者都能够向任何类型的滤镜发送消息。

要启用这些滤镜,您需要安装libzmq库和头文件,并用--enable-libzmq.

配置FFmpeg。有关libzmq的更多信息,请参阅:

The zmqazmq滤镜充当libzmq服务器,通过定义的网络接口接收消息bind_address(或缩写为"b")选项。 此选项的默认值为tcp://localhost:5555。您可能需要根据需要更改此值,但请不要忘了转义任何 ’:`符号(参见过滤器图转义).

接收到的消息必须采用以下形式:

目标 命令 [参数]

目标指定命令的目标,通常是过滤器类的名称或特定过滤器实例名称。默认 过滤器实例名称使用模式‘Parsed_<filter_name>_<index>’, 但您可以通过使用‘filter_name@id’语法来覆盖此模式(参见过滤器图语法).

命令指定目标过滤器的命令名称。

参数是可选的,用于指定给定命令.

的可选参数列表。

错误代码 错误原因
消息

消息是可选的。

39.34.1 示例

请参阅tools/zmqsend以获取zmq客户端示例,此客户端可用于发送这些滤镜处理的命令。

考虑以下由ffplay生成的过滤器图。 在此示例中,最后的叠加过滤器具有实例名称。所有其他过滤器将具有默认实例名称。

ffplay -dumpgraph 1 -f lavfi "
color=s=100x100:c=red  [l];
color=s=100x100:c=blue [r];
nullsrc=s=200x100, zmq [bg];
[bg][l]   overlay     [bg+l];
[bg+l][r] overlay@my=x=100 "

要更改视频左侧的颜色,可以使用以下命令:

echo Parsed_color_0 c yellow | tools/zmqsend

要更改右侧的内容:

echo Parsed_color_1 c pink | tools/zmqsend

要更改右侧的位置:

echo overlay@my x 150 | tools/zmqsend

40 多媒体来源

以下是当前可用的多媒体来源的描述。

40.1 amovie

这与movie来源相同,只是它默认选择音频流。

40.2 avsynctest

生成音频/视频同步测试。

生成的流会周期性显示闪烁的视频帧,并在音频中发出哔哔声。 用于检查音频/视频不同步问题。

它接受以下选项:

size, s

设置输出视频尺寸。默认值为hd720.

framerate, fr

设置输出视频帧率。默认值为30.

samplerate, sr

设置输出音频采样率。默认值为44100.

amplitude, a

设置输出音频哔哔声的振幅。默认值为0.7.

period, p

设置输出音频哔哔声的周期(以秒计)。默认值为3.

delay, dl

设置输出视频闪烁延迟(以帧数计)。默认值为0.

cycle, c

启用视频延迟循环,默认情况下禁用。

duration, d

设置流输出持续时间。默认为无限制。

fg, bg, ag

设置前景色/背景色/附加色。

40.2.1 命令

此来源支持一些上述选项作为命令.

40.3 movie

从电影容器读取音频和/或视频流。

它接受以下参数:

filename

要读取的资源名称(不一定是文件;它也可以是通过某种协议访问的设备或流)。

format_name, f

指定假定的电影格式,可以是容器的名称或输入设备名称。如果未指定, 则格式将从movie_name推断或通过探测来确定。

seek_point, sp

指定以秒为单位的查找点。从此查找点开始输出帧。此参数使用av_strtod评估,因此数值可以后缀加上IS后缀。默认值是"0"。

streams, s

指定要读取的流。可以用’+’分隔指定多个流。源 将有许多输出,顺序相同。语法在(ffmpeg)"流说明" 部分,并在ffmpeg手册中解释。两个特别的名称"dv"和"da"分别指定默认(最适合的) 视频和音频流。默认是"dv",如果过滤器称为"amovie",则为"da"。

stream_index, si

指定要读取的视频流的索引。如果值为-1, 将会自动选择最适合的视频流。默认值为"-1"。 已弃用。如果过滤器名为"amovie",它将选择音频而非视频。

loop

指定按顺序读取流的次数。 如果值为0,则无限循环读取流。 默认值是"1"。

请注意,当电影循环播放时,源时间戳不会 更改,因此将生成非单调递增时间戳。

discontinuity

指定帧之间的时间差,以确定是否为时间戳不连续, 通过调整后续时间戳来删除。

dec_threads

指定解码时的线程数。

format_opts

为打开的文件指定格式选项。格式选项可以用冒号分隔的=对的列表指定。以下示例显示了如何添加协议白名单和协议黑名单选项:

ffplay -f lavfi
"movie=filename='1.sdp':format_opts='protocol_whitelist=file,rtp,udp\:protocol_blacklist=http'"

它允许在滤镜图主输入之外覆盖第二个视频,如此图所示:

input -----------> deltapts0 --> overlay --> output
                                    ^
                                    |
movie --> scale--> deltapts1 -------+

40.3.1 示例

  • 跳过in.avi文件开头的3.2秒,并将其叠加到名为"in"的输入之上:
    movie=in.avi:seek_point=3.2, scale=180:-1, setpts=PTS-STARTPTS [over];
    [in] setpts=PTS-STARTPTS [main];
    [main][over] overlay=16:16 [out]
    
  • 从video4linux2设备读取,并将其叠加在名为"in"的输入之上:
    movie=/dev/video0:f=video4linux2, scale=180:-1, setpts=PTS-STARTPTS [over];
    [in] setpts=PTS-STARTPTS [main];
    [main][over] overlay=16:16 [out]
    
  • 从dvd.vob读取第一个视频流以及ID为0x81的音频流;视频连接到名为"video"的pad,音频连接到名为"audio"的pad:
    movie=dvd.vob:s=v:0+#0x81 [video] [audio]
    

40.3.2 命令

电影和amovie都支持以下命令:

seek

使用"av_seek_frame"进行搜索。 语法是:seek流索引|时间戳|标志

  • 流索引: 如果流索引是 -1,将选择默认流,并且时间戳会自动从 AV_TIME_BASE 单位转换为流特定的 time_base。
  • 时间戳: 时间戳以 AVStream.time_base 单位表示,或者在没有指定流的情况下,以 AV_TIME_BASE 单位表示。
  • 标志: 选择方向和搜索模式的标志。
get_duration

获取电影时长,以 AV_TIME_BASE 单位表示。

41 外部库

FFmpeg 可以与多种外部库结合使用,以增加对更多格式的支持。这些库默认不使用,必须通过传递适当的标志显式请求使用。./configure.

41.1 Alliance for Open Media (AOM)

FFmpeg 可以使用 AOM 库进行 AV1 的解码与编码。

访问http://aomedia.org/并按照指示安装库。然后传递--enable-libaom到 configure 启用它。

41.2 AMD AMF/VCE

FFmpeg 可以使用 AMD 高级多媒体框架库,利用视频编码引擎 (VCE) 加速 H.264 和 HEVC(仅限 Windows)编码。

要启用支持,您必须从https://github.com/GPUOpen-LibrariesAndSDKs/AMF.git.

创建一个AMF/目录在系统 include 路径中。将AMF/amf/public/include/的内容复制到该目录。然后用以下命令配置 FFmpeg:--enable-amf.

amf 编码器初始化顺序如下: 1) 尝试通过 dx11 初始化(仅限 Windows) 2) 尝试通过 dx9 初始化(仅限 Windows) 3) 尝试通过 vulkan 初始化

在 Linux 上使用 h.264 (AMD VCE) 编码器需要 amdgru-pro版本 19.20+ 和 amf-amdgpu-pro 包(amdgru-pro 包含但不会自动安装)。

此驱动程序可以通过官方 AMD 驱动程序档案中的 amdgpu-pro-install 脚本安装。

41.3 AviSynth

FFmpeg 可以将 AviSynth 脚本作为输入读取。要启用支持,在安装--enable-avisynthAviSynth+ 提供的头文件后,传递来配置。AviSynth+ 可以配置为仅安装头文件,通过正常的基于 CMake 的构建系统传递-DHEADERS_ONLY:bool=on,或使用提供的GNUmakefile.

对于 Windows,支持的 AviSynth 变体是AviSynth 2.6 RC1 或更高版本适用于 32 位构建,以及AviSynth+ r1718 或更高版本适用于 32 位和 64 位构建。

对于 Linux、macOS 和 BSD,唯一支持的 AviSynth 变体是AviSynth+,从 3.5 版本开始。

2016 年,AviSynth+ 添加了对使用 GCC 构建的支持。但是,由于 Windows 调用约定的特殊性,32 位 GCC 构建的 AviSynth+ 与典型 32 位 FFmpeg 构建不兼容。

默认情况下,FFmpeg 假定与 32 位 MSVC 构建的 AviSynth+ 兼容,因为这是最广泛使用和根深蒂固的构建配置。用户可以通过传递-DAVSC_WIN32_GCC32来覆盖此行为--extra-cflags在配置 FFmpeg 时。

64 位构建的 FFmpeg 不受影响,可以使用 MSVC 或 GCC 构建的 AviSynth+,无需任何特殊标志。

AviSynth(+) 是动态加载的。分发者可以通过设置--enable-avisynth构建 FFmpeg,这样即使最终用户未安装 AviSynth,二进制文件也能正常工作。如果/当最终用户希望使用 AviSynth 脚本时,他们可以安装 AviSynth(+) 并让 FFmpeg 找到并使用它以打开脚本。

41.4 Chromaprint

FFmpeg 可以使用 Chromaprint 库生成音频指纹。 传递--enable-chromaprint到 configure 启用它。参见https://acoustid.org/chromaprint.

41.5 codec2

FFmpeg 可以使用 codec2 库进行 codec2 的解码与编码。 目前还没有原生解码器,因此解码必须使用 libcodec2。

访问http://freedv.org/,下载“Codec 2 源代码档案”。 使用 CMake 构建并安装。Debian 用户可以改为安装 libcodec2-dev 软件包。 安装完 libcodec2 后,可以传递--enable-libcodec2到 configure 来启用它。

使用 codec2 最简单的方法是使用 .c2 文件,因为它们包含解码所需的模式信息。 要编码这样的文件,请使用 .c2 文件扩展名并向 libcodec2 编码器提供 -mode 选项:ffmpeg -i input.wav -mode 700C output.c2。 播放非常简单,例如ffplay output.c2。 有关支持模式的列表,运行ffmpeg -h encoder=libcodec2。 也支持原始 codec2 文件。 为了理解它们,使用的模式需要作为格式选项指定:ffmpeg -f codec2raw -mode 1300 -i input.raw output.wav.

41.6 dav1d

FFmpeg 可以使用 dav1d 库进行 AV1 视频解码。

访问https://code.videolan.org/videolan/dav1d并按照指示安装库。然后传递--enable-libdav1d到 configure 来启用它。

41.7 davs2

FFmpeg 可以使用 davs2 库进行 AVS2-P2/IEEE1857.4 视频解码。

访问https://github.com/pkuvcl/davs2并按照指示安装库。然后传递--enable-libdavs2到 configure 来启用它。

libdavs2 遵循 GNU 公共许可证第 2 版或更高版本 (参见http://www.gnu.org/licenses/old-licenses/gpl-2.0.html了解详情),因此您必须将 FFmpeg 的许可证升级到 GPL 才能使用它。

41.8 uavs3d

FFmpeg 可以使用 uavs3d 库进行 AVS3-P2/IEEE1857.10 视频解码。

访问https://github.com/uavs3/uavs3d并按照指示安装库。然后传递--enable-libuavs3d到 configure 来启用它。

41.9 游戏音乐仿真

FFmpeg 可以使用 Game Music Emu 库读取受支持的视频游戏音乐文件格式中的音频。 传递--enable-libgme到 configure 来启用它。更多信息见https://bitbucket.org/mpyne/game-music-emu/overview.

41.10 英特尔 QuickSync 视频

FFmpeg 可以使用英特尔 QuickSync 视频 (QSV) 进行多个编解码器的加速解码和编码。 要使用 QSV,需将 FFmpeg 链接到libmfx分发程序,它加载实际的解码库。

分发程序是开源的,可从https://github.com/lu-zero/mfx_dispatch.git下载。FFmpeg 需要配置为启用--enable-libmfx选项,同时pkg-config需要能够定位分发程序的.pc文件。

41.11 Kvazaar

FFmpeg 可以使用 Kvazaar 库进行 HEVC 编码。

访问https://github.com/ultravideo/kvazaar并按照安装库的指示进行操作。然后传递--enable-libkvazaar到 configure 来启用它。

41.12 LAME

FFmpeg 可以使用 LAME 库进行 MP3 编码。

访问http://lame.sourceforge.net/并按照安装库的指示进行操作。 然后传递--enable-libmp3lame到 configure 来启用它。

41.13 LCEVCdec

FFmpeg 可以使用 liblcevc_dec 库对支持的比特流进行 LCEVC 增强层解码。

访问https://github.com/v-novaltd/LCEVCdec并按照安装库的指示进行操作。然后传递--enable-liblcevc-dec到 configure 来启用它。

LCEVCdec 使用 BSD-3-Clause-Clear 许可证。

41.14 libilbc

iLBC 是一种窄带语音编解码器,由 Google 作为 WebRTC 项目的一部分免费提供。libilbc 是 iLBC 编解码器的一个便于打包的版本。FFmpeg 可以使用 libilbc 库进行 iLBC 的解码和编码。

访问https://github.com/TimothyGu/libilbc并按照安装库的指示工作。然后传递--enable-libilbc到 configure 来启用它。

41.15 libjxl

JPEG XL 是一种图像格式,旨在全面替代传统 JPEG 并延长其寿命。参见https://jpegxl.info/了解更多信息,并参见https://github.com/libjxl/libjxl了解库的源代码。您可以传递--enable-libjxl到 configure 来启用 libjxl 包装器。

41.16 libvpx

FFmpeg 可以使用 libvpx 库对 VP8/VP9 进行解码和编码。

访问http://www.webmproject.org/并按照安装库的要求工作。然后传递--enable-libvpx到 configure 来启用它。

41.17 ModPlug

FFmpeg 可以使用这个来自 Modplug-XMMS 的库读取从 MOD 类音乐文件。参见https://github.com/Konstanty/libmodplug。传递--enable-libmodplug到 configure 来启用它。

41.18 OpenCORE,VisualOn 和 Fraunhofer 库

从 Google Android 源代码中衍生,OpenCore、VisualOn 和 Fraunhofer 库为许多音频编解码器提供了编码器。

OpenCORE 和 VisualOn 库使用 Apache 许可证 2.0 (参见http://www.apache.org/licenses/LICENSE-2.0了解详情),它与 LGPL 版本 2.1 和 GPL 版本 2 不兼容。您必须通过传递--enable-version3到 configure 将 FFmpeg 的许可证升级至 LGPL 版本 3(或者如果启用了 GPL 组件,则升级至 GPL 版本 3)以使用它。

Fraunhofer AAC 库的许可证与 GPL 不兼容。 因此,对于 GPL 构建,您必须传递--enable-nonfree到 configure 才能使用它。据我们所知,它与 LGPL 兼容。

41.18.1 OpenCORE AMR

FFmpeg 可以使用 OpenCORE 库进行 AMR-NB 解码/编码和 AMR-WB 解码。

访问http://sourceforge.net/projects/opencore-amr/并按照安装库的说明操作。 然后传递--enable-libopencore-amrnb和/或--enable-libopencore-amrwb到 configure 来启用它们。

41.18.2 VisualOn AMR-WB 编码库

FFmpeg 可以使用 VisualOn AMR-WBenc 库进行 AMR-WB 编码。

访问http://sourceforge.net/projects/opencore-amr/并按照安装库的说明进行操作。 然后传递--enable-libvo-amrwbenc到 configure 来启用它。

41.18.3 Fraunhofer AAC 库

FFmpeg 可以使用 Fraunhofer AAC 库进行 AAC 解码和编码。

访问http://sourceforge.net/projects/opencore-amr/并按照安装库的指示操作。 然后传递--enable-libfdk-aac到 configure 来启用它。

41.18.4 LC3 库

FFmpeg 可以使用 Google LC3 库进行 LC3 解码和编码。

访问https://github.com/google/liblc3/并按照安装库的说明进行操作。 然后传递--enable-liblc3到 configure 来启用它。

41.19 OpenH264

FFmpeg 可以使用 OpenH264 库进行 H.264 解码和编码。

访问http://www.openh264.org/并按照安装库的说明进行操作。然后传递--enable-libopenh264到 configure 来启用它。

对于解码,与 libavcodec 的内置解码器相比,该库受到更多限制;目前,该库缺少 B 帧解码及某些主/高配置文件特性的支持。(它目前仅支持约束基线配置文件和 CABAC。)使用它主要适用于测试以及利用 Cisco 的专利组合许可证(http://www.openh264.org/BINARY_LICENSE.txt).

41.20 OpenJPEG

FFmpeg 可以使用 OpenJPEG 库进行 J2K 视频的解码/编码。访问http://www.openjpeg.org/获取这些库并按照安装说明操作。要在 FFmpeg 中启用使用 OpenJPEG,传递--enable-libopenjpeg./configure.

41.21 rav1e

FFmpeg 可以通过其 C 绑定使用 rav1e(Rust AV1 编码器)编码视频。 访问https://github.com/xiph/rav1e/并按照说明构建 C 库。要在 FFmpeg 中启用使用 rav1e,传递--enable-librav1e./configure.

41.22 SVT-AV1

FFmpeg 可以使用用于 AV1 编码的可扩展视频技术库。

转到https://gitlab.com/AOMediaCodec/SVT-AV1/并按照安装该库的说明进行操作。然后传递--enable-libsvtav1为配置启用它。

41.23 TwoLAME

FFmpeg 可以使用 TwoLAME 库进行 MP2 编码。

转到http://www.twolame.org/并按照安装该库的说明进行操作。然后传递--enable-libtwolame为配置启用它。

41.24 VapourSynth

FFmpeg 可以作为输入读 VapourSynth 脚本。若要启用支持,请传递--enable-vapoursynth为配置。通过检测 Vapoursynthpkg-config支持版本 42 或更高版本。参见http://www.vapoursynth.com/.

由于安全问题,Vapoursynth 脚本不会自动检测,因此需要强制指定输入格式。对于 ff* CLI 工具,添加-f vapoursynth在输入之前。-i yourscript.vpy.

41.25 x264

FFmpeg 可以使用 x264 库进行 H.264 编码。

转到http://www.videolan.org/developers/x264.html并按照安装该库的说明进行操作。然后传递--enable-libx264为配置启用它。

x264 属于 GNU 公共许可证版本 2 或更高版本(参见http://www.gnu.org/licenses/old-licenses/gpl-2.0.html了解详细信息),您必须升级 FFmpeg 许可证为 GPL 才能使用它。

41.26 x265

FFmpeg 可以使用 x265 库进行 HEVC 编码。

转到http://x265.org/developers.html并按照安装该库的说明进行操作。然后传递--enable-libx265为配置启用它。

x265 属于 GNU 公共许可证版本 2 或更高版本(参见http://www.gnu.org/licenses/old-licenses/gpl-2.0.html了解详细信息),您必须升级 FFmpeg 许可证为 GPL 才能使用它。

41.27 xavs

FFmpeg 可以使用 xavs 库进行 AVS 编码。

转到http://xavs.sf.net/并按照安装该库的说明进行操作。然后传递--enable-libxavs为配置启用它。

41.28 xavs2

FFmpeg 可以使用 xavs2 库进行 AVS2-P2/IEEE1857.4 视频编码。

转到https://github.com/pkuvcl/xavs2并按照安装该库的说明进行操作。然后传递--enable-libxavs2为配置启用它。

libxavs2 属于 GNU 公共许可证版本 2 或更高版本(参见http://www.gnu.org/licenses/old-licenses/gpl-2.0.html了解详细信息),您必须升级 FFmpeg 许可证为 GPL 才能使用它。

41.29 eXtra-fast Essential Video Encoder (XEVE)

FFmpeg 可以使用 XEVE 库进行 EVC 视频编码。

转到https://github.com/mpeg5/xeve并按照安装 XEVE 库的说明进行操作。然后传递--enable-libxeve为配置启用它。

41.30 eXtra-fast Essential Video Decoder (XEVD)

FFmpeg 可以使用 XEVD 库进行 EVC 视频解码。

转到https://github.com/mpeg5/xevd并按照安装 XEVD 库的说明进行操作。然后传递--enable-libxevd为配置启用它。

41.31 ZVBI

ZVBI 是一个 VBI 解码库,FFmpeg 可以用它解码 DVB 图文电视页面和 DVB 图文电视字幕。

转到http://sourceforge.net/projects/zapping/并按照安装该库的说明进行操作。然后传递--enable-libzvbi为配置启用它。

42 支持的文件格式、编解码器或功能

您可以使用-formats-codecs选项列出详细列表。

42.1 文件格式

FFmpeg 通过以下库支持的文件格式有:libavformat库:

名称编码解码备注
3dostrX
4xmX4X 技术格式,使用于一些游戏。
8088flex TMVX
AAXXAudible 增强音频格式,用于有声书。
AAXAudible 格式 2、3 和 4,用于有声书。
ACT VoiceX包含 G.729 音频
Adobe FilmstripXX
音频 IFF (AIFF)XX
American Laser Games MMXQuickTimeium,提高游戏性能。
3GPP AMRXX
Amazing Studio Packed Animation FileXMultimedia format used in game Heart Of Darkness.
Apple HTTP Live StreamingX
Artworx Data FormatX
Interplay ACMXAudio only format used in some Interplay games.
ADPXAudio format used on the Nintendo Gamecube.
AFCXAudio format used on the Nintendo Gamecube.
ADS/SS2XAudio format used on the PS2.
APNGXX
ASFXXAdvanced / Active Streaming Format.
ASTXXAudio format used on the Nintendo Wii.
AVIXX
AviSynthX
AVRXAudio format used on Mac.
AVSXMultimedia format used by the Creature Shock game.
Beam Software SIFFXAudio and video format used in some games by Beam Software.
Bethesda Softworks VIDXUsed in some games from Bethesda Softworks.
Binary textX
BinkXMultimedia format used by many games.
Bink AudioXAudio only multimedia format used by some games.
Bitmap Brothers JVXUsed in Z and Z95 games.
BRPXArgonaut Games format.
Brute Force & IgnoranceXUsed in the game Flash Traffic: City of Angels.
BFSTMXAudio format used on the Nintendo WiiU (based on BRSTM).
BRSTMXAudio format used on the Nintendo Wii.
BW64XBroadcast Wave 64bit.
BWFXX
codec2 (raw)XXMust be given -mode format option to decode correctly.
codec2 (.c2 files)XXContains header with version and mode info, simplifying playback.
CRI ADXXXAudio-only format used in console video games.
CRI AIXX
CRI HCAXAudio-only format used in console video games.
Discworld II BMVX
Interplay C93XUsed in the game Cyberia from Interplay.
Delphine Software International CINXMultimedia format used by Delphine Software games.
Digital Speech Standard (DSS)X
CD+GXVideo format used by CD+G karaoke disks
Phantom CineX
Commodore CDXLXAmiga CD video format
Core Audio FormatXXApple Core Audio Format
CRC testing formatX
Creative VoiceXXCreated for the Sound Blaster Pro.
CRYO APCXAudio format used in some games by CRYO Interactive Entertainment.
D-Cinema audioXX
Deluxe Paint AnimationX
DCSTRX
DFAXThis format is used in Chronomaster game
DirectDraw SurfaceX
DSD Stream File (DSF)X
DV videoXX
DXAXThis format is used in the non-Windows version of the Feeble Files game and different game cutscenes repacked for use with ScummVM.
Electronic Arts cdataX
Electronic Arts MultimediaXUsed in various EA games; files have extensions like WVE and UV2.
Ensoniq Paris Audio FileX
FFM (FFserver live feed)XX
Flash (SWF)XX
Flash 9 (AVM2)XXOnly embedded audio is decoded.
FLI/FLC/FLX animationX.fli/.flc files
Flash Video (FLV)XXMacromedia Flash video files
framecrc testing formatX
FunCom ISSXAudio format used in various games from FunCom like The Longest Journey.
G.723.1XX
G.726XBoth left- and right-justified.
G.729 BITXX
G.729 rawX
GENHXAudio format for various games.
GIF AnimationXX
GXFXXGeneral eXchange Format SMPTE 360M, used by Thomson Grass Valley playout servers.
HNMXOnly version 4 supported, used in some games from Cryo Interactive
iCEDraw FileX
ICOXXMicrosoft Windows ICO
id Quake II CIN videoX
id RoQXXUsed in Quake III, Jedi Knight 2 and other computer games.
IEC61937 encapsulationXX
IFFXInterchange File Format
IFVXA format used by some old CCTV DVRs.
iLBCXX
Interplay MVEXFormat used in various Interplay computer games.
Iterated Systems ClearVideoXI-frames only
IV8XA format generated by IndigoVision 8000 video server.
IVF (On2)XXA format used by libvpx
Internet Video RecordingX
IRCAMXX
LAFXLimitless Audio Format
LATMXX
LMLM4XUsed by Linux Media Labs MPEG-4 PCI boards
LOASXcontains LATM multiplexed AAC audio
LRCXX
LVFX
LXFXVR native stream format, used by Leitch/Harris’ video servers.
Magic Lantern Video (MLV)X
MatroskaXX
Matroska audioX
FFmpeg metadataXXMetadata in text format.
MAXIS XAXUsed in Sim City 3000; file extension .xa.
MCAXUsed in some games from Capcom; file extension .mca.
MD StudioX
Metal Gear Solid: The Twin SnakesX
Megalux FrameXUsed by Megalux Ultimate Paint
MobiClip MODSX
MobiClip MOFLEXX
Mobotix .mxgX
Monkey’s AudioX
Motion Pixels MVIX
MOV/QuickTime/MP4XX3GP, 3GP2, PSP, iPod variants supported
MP2XX
MP3XX
MPEG-1 SystemXXmuxed audio and video, VCD format supported
MPEG-PS (program stream)XXalso known as VOB file, SVCD and DVD format supported
MPEG-TS (transport stream)XXalso known as DVB Transport Stream
MPEG-4XXMPEG-4 is a variant of QuickTime.
MSFXAudio format used on the PS3.
Mirillis FIC videoXNo cursor rendering.
MIDI Sample Dump StandardX
MIME multipart JPEGX
MSN TCP webcamXUsed by MSN Messenger webcam streams.
MTVX
MusepackX
Musepack SV8X
Material eXchange Format (MXF)XXSMPTE 377M, used by D-Cinema, broadcast industry.
Material eXchange Format (MXF), D-10 MappingXXSMPTE 386M, D-10/IMX Mapping.
NC camera feedXNC (AVIP NC4600) camera streams
NIST SPeech HEader REsourcesX
Computerized Speech Lab NSPX
NTT TwinVQ (VQF)XNippon Telegraph and Telephone Corporation TwinVQ.
Nullsoft Streaming VideoX
NuppelVideoX
NUTXXNUT Open Container Format
OggXX
Playstation Portable PMPX
Portable Voice FormatX
RK Audio (RKA)X
TechnoTrend PVAXUsed by TechnoTrend DVB PCI boards.
QCPX
raw ADTS (AAC)XX
raw AC-3XX
raw AMR-NBX
raw AMR-WBX
raw APACX
raw aptXXX
raw aptX HDXX
raw BonkX
raw Chinese AVS videoXX
raw DFPWMXX
raw DiracXX
raw DNxHDXX
raw DTSXX
raw DTS-HDX
raw E-AC-3XX
raw EVCXX
raw FLACXX
raw GSMX
raw H.261XX
raw H.263XX
raw H.264XX
raw HEVCXX
raw Ingenient MJPEGX
raw MJPEGXX
raw MLPX
raw MPEGX
raw MPEG-1X
raw MPEG-2X
raw MPEG-4XX
raw NULLX
raw videoXX
raw id RoQX
raw OBUXX
raw OSQX
raw SBCXX
raw ShortenX
raw TAKX
raw TrueHDXX
raw VC-1XX
raw PCM A-lawXX
raw PCM mu-lawXX
raw PCM Archimedes VIDCXX
raw PCM signed 8 bitXX
raw PCM signed 16 bit big-endianXX
raw PCM signed 16 bit little-endianXX
raw PCM signed 24 bit big-endianXX
raw PCM signed 24 bit little-endianXX
raw PCM signed 32 bit big-endianXX
raw PCM signed 32 bit little-endianXX
raw PCM signed 64 bit big-endianXX
raw PCM signed 64 bit little-endianXX
raw PCM unsigned 8 bitXX
raw PCM unsigned 16 bit big-endianXX
raw PCM unsigned 16 bit little-endianXX
raw PCM unsigned 24 bit big-endianXX
raw PCM unsigned 24 bit little-endianXX
raw PCM unsigned 32 bit big-endianXX
raw PCM unsigned 32 bit little-endianXX
raw PCM 16.8 floating point little-endianX
raw PCM 24.0 floating point little-endianX
raw PCM floating-point 32 bit big-endianXX
raw PCM floating-point 32 bit little-endianXX
raw PCM floating-point 64 bit big-endianXX
raw PCM floating-point 64 bit little-endianXX
RDTX
REDCODE R3DXFile format used by RED Digital cameras, contains JPEG 2000 frames and PCM audio.
RealMediaXX
RedirectorX
RedSparkX
Renderware TeXture DictionaryX
Resolume DXVXXEncoding is only supported for the DXT1 (Normal Quality, No Alpha) texture format.
RF64X
RL2XAudio and video format used in some games by Entertainment Software Partners.
RPL/ARMovieX
Lego Mindstorms RSOXX
RSDX
RTMPXXOutput is performed by publishing stream to RTMP server
RTPXX
RTSPXX
Sample Dump eXchangeX
SAPXX
SBGX
SDNSX
SDPX
SERX
Digital Pictures SGAX
Sega FILM/CPKXX用于许多 Sega Saturn 主机游戏。
硅图电影X
Sierra SOLXSierra Online 游戏中使用的 .sol 文件。
Sierra VMDX用于 Sierra CD-ROM 游戏。
SmackerX许多游戏中使用的多媒体格式。
SMJPEGXX用于某些 Loki 游戏移植版。
SMPTE 337M 封装X
SmushX一些 LucasArts 游戏中使用的多媒体格式。
Sony OpenMG (OMA)XXSony Sonic Stage 和 Sony Vegas 中使用的音频格式。
Sony PlayStation STRX
Sony Wave64 (W64)XX
SoX 原生格式XX
SUN AU 格式XX
SUP 原始 PGS 字幕XX
SVAGX在 Konami PS2 游戏中使用的音频格式。
TDSCX
文本文件X
THPX用于任天堂 GameCube。
Tiertex Limited SEQXTiertex .seq 文件用于游戏 Flashback 的 DOS CD-ROM 版本。
True AudioXX
VAGX在许多 Sony PS2 游戏中使用的音频格式。
VC-1 测试比特流XX
Vidvox HapXX
VivoX
VPKXSony PS 游戏中使用的音频格式。
Marble WADYX
WAVXX
波形存档器X
WavPackXX
WebMXX
Windows 电视 (WTV)XX
Wing Commander III 电影X在 Origin 的 Wing Commander III 电脑游戏中使用的多媒体格式。
Westwood Studios 音频XX在 Westwood Studios 游戏中使用的多媒体格式。
Westwood Studios VQAX在 Westwood Studios 游戏中使用的多媒体格式。
宽带单比特数据(WSD)X
WVEX
Konami XMDX
XMVXXbox 游戏中使用的 Microsoft 视频容器。
XVAGX在 PS3 上使用的音频格式。
xWMAXMicrosoft 音频容器,用于 XAudio 2。
扩展二进制文本 (XBIN)X
YUV4MPEG 管道XX
Psygnosis YOPX

X表示该列(编码/解码)的功能受支持。

42.2 图像格式

FFmpeg 可以读取和写入视频序列每帧的图像。 支持以下图像格式:

名称编码解码说明
.Y.U.VXX每个分量一个原始文件
Alias PIXXXAlias/Wavefront PIX 图像格式
动画 GIFXX
APNGXX动画便携式网络图形
BMPXXMicrosoft BMP 图像
BRender PIXXArgonaut BRender 3D 引擎图像格式。
CRIXCintel RAW
DPXXX数字图片交换
EXRXOpenEXR
FITSXX灵活图像传输系统
HDRXXRadiance HDR RGBE 图像格式
IMGXGEM 光栅图像
JPEGXX不支持渐进式 JPEG。
JPEG 2000XX
JPEG-LSXX
LJPEGX无损 JPEG
Media 100X
MSPXMicrosoft Paint 图像
PAMXXPAM 是一个支持 Alpha 的 PNM 扩展。
PBMXX可移植位图图像
PCDXPhotoCD
PCXXXPC 画刷
PFMXX可移植浮点地图图像
PGMXX可移植灰度地图图像
PGMYUVXXPGM 与 YUV 4:2:0 中的 U 和 V 分量
PGXXPGX 文件解码器
PHMXX便携式半浮点地图图像
PICXPictor/PC 画
PNGXX可移式网络图形图像
PPMXX可移式像素图图像
PSDXPhotoshop
PTXXV.Flash PTX 格式
QOIXX相当好的图像格式
SGIXXSGI RGB 图像格式
Sun 光栅文件XXSun RAS 图像格式
TIFFXXYUV、JPEG 和某些扩展尚不支持。
Truevision TargaXXTarga (.TGA) 图像格式
VBNXXVizrt 二进制图像格式
WBMPXX无线应用协议位图图像格式
WebPEXWebP 图像格式,编码支持通过外部库 libwebp 实现
XBMXXX 位图图像格式
XFaceXXX-Face 图像格式
XPMXX PixMap 图像格式
XWDXXX 窗口转储图像格式

X means that the feature in that column (encoding / decoding) is supported.

E means that support is provided through an external library.

42.3 Video Codecs

NameEncodingDecodingComments
4X MovieXUsed in certain computer games.
8088flex TMVX
A64 multicolorXCreates video suitable to be played on a commodore 64 (multicolor mode).
Amazing Studio PAF VideoX
American Laser Games MMXUsed in games like Mad Dog McCree.
Amuse Graphics MovieX
AMV VideoXXUsed in Chinese MP3 players.
ANSI/ASCII artX
Apple Intermediate CodecX
Apple MJPEG-BX
Apple PixletX
Apple ProResXXfourcc: apch,apcn,apcs,apco,ap4h,ap4x
Apple QuickDrawXfourcc: qdrw
Argonaut VideoXUsed in some Argonaut games.
Asus v1XXfourcc: ASV1
Asus v2XXfourcc: ASV2
ATI VCR1Xfourcc: VCR1
ATI VCR2Xfourcc: VCR2
Auravision AuraX
Auravision Aura 2X
Autodesk Animator Flic videoX
Autodesk RLEXfourcc: AASC
AV1EESupported through external libraries libaom, libdav1d, librav1e and libsvtav1
Avid 1:1 10-bit RGB PackerXXfourcc: AVrp
AVS (Audio Video Standard) videoXVideo encoding used by the Creature Shock game.
AVS2-P2/IEEE1857.4EESupported through external libraries libxavs2 and libdavs2
AVS3-P2/IEEE1857.10ESupported through external library libuavs3d
AYUVXXMicrosoft uncompressed packed 4:4:4:4
Beam Software VBX
Bethesda VID videoXUsed in some games from Bethesda Softworks.
Bink VideoX
BitJazz SheerVideoX
Bitmap Brothers JV videoX
y41p Brooktree uncompressed 4:1:1 12-bitXX
Brooktree ProSumer VideoXfourcc: BT20
Brute Force & IgnoranceXUsed in the game Flash Traffic: City of Angels.
C93 videoXCodec used in Cyberia game.
CamStudioXfourcc: CSCD
CD+GXVideo codec for CD+G karaoke disks
CDXLXAmiga CD video codec
Chinese AVS videoEXAVS1-P2, JiZhun profile, encoding through external library libxavs
Delphine Software International CIN videoXCodec used in Delphine Software International games.
Discworld II BMV VideoX
CineForm HDXX
Canopus HQX
Canopus HQAX
Canopus HQXX
Canopus Lossless CodecX
CDToonsXCodec used in various Broderbund games.
CinepakX
Cirrus Logic AccuPakXXfourcc: CLJR
CPiA Video FormatX
Creative YUV (CYUV)X
DFAXCodec used in Chronomaster game.
DiracEXsupported though the native vc2 (Dirac Pro) encoder
Deluxe Paint AnimationX
DNxHDXXaka SMPTE VC3
Duck TrueMotion 1.0Xfourcc: DUCK
Duck TrueMotion 2.0Xfourcc: TM20
Duck TrueMotion 2.0 RTXfourcc: TR20
DV (Digital Video)XX
Dxtory capture formatX
Feeble Files/ScummVM DXAXCodec originally used in Feeble Files game.
Electronic Arts CMV videoXUsed in NHL 95 game.
Electronic Arts Madcow videoX
Electronic Arts TGV videoX
Electronic Arts TGQ videoX
Electronic Arts TQI videoX
Escape 124X
Escape 130X
EVC / MPEG-5 Part 1EEencoding and decoding supported through external libraries libxeve and libxevd
FFmpeg video codec #1XXlossless codec (fourcc: FFV1)
Flash Screen Video v1XXfourcc: FSV1
Flash Screen Video v2XX
Flash Video (FLV)XXSorenson H.263 used in Flash
FM Screen Capture CodecX
Forward UncompressedX
FrapsX
Go2MeetingXfourcc: G2M2, G2M3
Go2WebinarXfourcc: G2M4
Gremlin Digital VideoX
H.261XX
H.263 / H.263-1996XX
H.263+ / H.263-1998 / H.263 version 2XX
H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10EXencoding supported through external library libx264 and OpenH264
HEVCXXencoding supported through external library libx265 and libkvazaar
HNM version 4X
HuffYUVXX
HuffYUV FFmpeg variantXX
IBM UltimotionXfourcc: ULTI
id Cinematic videoXUsed in Quake II.
id RoQ videoXXUsed in Quake III, Jedi Knight 2, other computer games.
IFF ILBMXIFF interleaved bitmap
IFF ByteRun1XIFF run length encoded bitmap
Infinity IMM4X
Intel H.263X
Intel Indeo 2X
Intel Indeo 3X
Intel Indeo 4X
Intel Indeo 5X
Interplay C93XUsed in the game Cyberia from Interplay.
Interplay MVE videoXUsed in Interplay .MVE files.
J2KXX
Karl Morton’s video codecXCodec used in Worms games.
Kega Game Video (KGV1)XKega emulator screen capture codec.
LagarithX
LCEVC / MPEG-5 LCEVC / MPEG-5 Part 2Edecoding supported through external library liblcevc-dec
LCL (LossLess Codec Library) MSZHX
LCL (LossLess Codec Library) ZLIBEE
LEAD MCMPX
LOCOX
LucasArts SANM/SmushXUsed in LucasArts games / SMUSH animations.
lossless MJPEGXX
MagicYUV VideoXX
Mandsoft Screen Capture CodecX
Microsoft ATC ScreenXAlso known as Microsoft Screen 3.
Microsoft Expression Encoder ScreenXAlso known as Microsoft Titanium Screen 2.
Microsoft RLEXX
Microsoft Screen 1XAlso known as Windows Media Video V7 Screen.
Microsoft Screen 2XAlso known as Windows Media Video V9 Screen.
Microsoft Video 1X
MimicXUsed in MSN Messenger Webcam streams.
Miro VideoXLXfourcc: VIXL
MJPEG (Motion JPEG)XX
Mobotix MxPEG videoX
Motion Pixels videoX
MPEG-1 videoXX
MPEG-2 videoXX
MPEG-4 part 2XXlibxvidcore can be used alternatively for encoding.
MPEG-4 part 2 Microsoft variant version 1X
MPEG-4 part 2 Microsoft variant version 2XX
MPEG-4 part 2 Microsoft variant version 3XX
Newtek SpeedHQXX
Nintendo Gamecube THP videoX
NotchLCX
NuppelVideo/RTjpegXVideo encoding used in NuppelVideo files.
On2 VP3Xstill experimental
On2 VP4Xfourcc: VP40
On2 VP5Xfourcc: VP50
On2 VP6Xfourcc: VP60,VP61,VP62
On2 VP7Xfourcc: VP70,VP71
VP8EXfourcc: VP80, encoding supported through external library libvpx
VP9EXencoding supported through external library libvpx
Pinnacle TARGA CineWave YUV16Xfourcc: Y216
Q-team QPEGXfourccs: QPEG, Q1.0, Q1.1
QuickTime 8BPS videoX
QuickTime Animation (RLE) videoXXfourcc: ’rle ’
QuickTime Graphics (SMC)XXfourcc: ’smc ’
QuickTime video (RPZA)XXfourcc: rpza
R10K AJA Kona 10-bit RGB CodecXX
R210 Quicktime Uncompressed RGB 10-bitXX
Raw VideoXX
RealVideo 1.0XX
RealVideo 2.0XX
RealVideo 3.0Xstill far from ideal
RealVideo 4.0X
Renderware TXD (TeXture Dictionary)XTexture dictionaries used by the Renderware Engine.
RivaTuner VideoXfourcc: ’RTV1’
RL2 videoXused in some games by Entertainment Software Partners
ScreenPressorX
ScreenpressoX
Screen Recorder Gold CodecX
Sierra VMD videoXUsed in Sierra VMD files.
Silicon Graphics Motion Video Compressor 1 (MVC1)X
Silicon Graphics Motion Video Compressor 2 (MVC2)X
Silicon Graphics RLE 8-bit videoX
Smacker videoXVideo encoding used in Smacker.
SMPTE VC-1X
SnowXXexperimental wavelet codec (fourcc: SNOW)
Sony PlayStation MDEC (Motion DECoder)X
Sorenson Vector Quantizer 1XXfourcc: SVQ1
Sorenson Vector Quantizer 3Xfourcc: SVQ3
Sunplus JPEG (SP5X)Xfourcc: SP5X
TechSmith Screen Capture CodecXfourcc: TSCC
TechSmith Screen Capture Codec 2Xfourcc: TSC2
TheoraEXencoding supported through external library libtheora
Tiertex Limited SEQ videoXCodec used in DOS CD-ROM FlashBack game.
Ut VideoXX
v210 QuickTime uncompressed 4:2:2 10-bitXX
v308 QuickTime uncompressed 4:4:4XX
v408 QuickTime uncompressed 4:4:4:4XX
v410 QuickTime uncompressed 4:4:4 10-bitXX
VBLE Lossless CodecX
vMix VideoXfourcc: ’VMX1’
VMware Screen Codec / VMware VideoXCodec used in videos captured by VMware.
Westwood Studios VQA (Vector Quantized Animation) videoX
Windows Media ImageX
Windows Media Video 7XX
Windows Media Video 8XX
Windows Media Video 9Xnot completely working
Wing Commander III / XanXUsed in Wing Commander III .MVE files.
Wing Commander IV / XanXUsed in Wing Commander IV.
Winnov WNV1X
WMV7XX
YAMAHA SMAFXX
Psygnosis YOP VideoX
yuv4XXlibquicktime uncompressed packed 4:2:0
ZeroCodec Lossless VideoX
ZLIBXXpart of LCL, encoder experimental
Zip Motion Blocks VideoXXEncoder works only in PAL8.

X means that the feature in that column (encoding / decoding) is supported.

E means that support is provided through an external library.

42.4 音频编解码器

名称编码解码说明
8SVX 指数X
8SVX 斐波那契X
AACEXX通过内部编码器和外部库 libfdk-aac 支持编码
AAC+EIX通过外部库 libfdk-aac 支持编码
AC-3IXIX
ACELP.KELVINX
ADPCM 4X 电影X
ADPCM Yamaha AICAX
ADPCM AmuseGraphics 电影X
ADPCM Argonaut 游戏XX
ADPCM CDROM XAX
ADPCM 创意技术X16 -> 4, 8 -> 4, 8 -> 3, 8 -> 2
ADPCM 电子艺术X用于各种 EA 游戏。
ADPCM 电子艺术 Maxis CDROM XSX用于 Sim City 3000。
ADPCM 电子艺术 R1X
ADPCM 电子艺术 R2X
ADPCM 电子艺术 R3X
ADPCM 电子艺术 XASX
ADPCM G.722XX
ADPCM G.726XX
ADPCM IMA Acorn ReplayX
ADPCM IMA AMVXX用于 AMV 文件
ADPCM IMA Cunning DevelopmentsX
ADPCM IMA 电子艺术 EACSX
ADPCM IMA 电子艺术 SEADX
ADPCM IMA FuncomX
ADPCM IMA High Voltage Software ALPXX
ADPCM IMA Mobiclip MOFLEXX
ADPCM IMA QuickTimeXX
ADPCM IMA Simon & Schuster InteractiveXX
ADPCM IMA Ubisoft APMXX
ADPCM IMA Loki SDL MJPEGX
ADPCM IMA WAVXX
ADPCM IMA WestwoodX
ADPCM ISS IMAX用于 FunCom 游戏。
ADPCM IMA DialogicX
ADPCM IMA Duck DK3X用于部分世嘉 Saturn 游戏。
ADPCM IMA Duck DK4X用于部分世嘉 Saturn 游戏。
ADPCM IMA RadicalX
ADPCM MicrosoftXX
ADPCM MS IMAXX
ADPCM 任天堂 Gamecube AFCX
ADPCM 任天堂 Gamecube DTKX
ADPCM 任天堂 THPX
ADPCM PlaystationX
ADPCM QT IMAXX
ADPCM SEGA CRI ADXXX用于世嘉 Dreamcast 游戏。
ADPCM Shockwave FlashXX
ADPCM 声霸 2-bitX
ADPCM 声霸 2.6-bitX
ADPCM 声霸 4-bitX
ADPCM VIMAX用于 LucasArts SMUSH 动画。
ADPCM Konami XMDX
ADPCM Westwood Studios IMAXX用于 Westwood Studios 游戏比如命令与征服。
ADPCM YamahaXX
ADPCM ZorkX
AMR-NBEX通过外部库 libopencore-amrnb 支持编码
AMR-WBEX通过外部库 libvo-amrwbenc 支持编码
Amazing Studio PAF 音频X
苹果无损音频XXQuickTime FourCC 'alac'
aptXXX用于蓝牙 A2DP
aptX HDXX用于蓝牙 A2DP
ATRAC1X
ATRAC3X
ATRAC3+X
ATRAC9X
Bink 音频X用于许多游戏中的 Bink 和 Smacker 文件。
Bonk 音频X
CELTE通过外部库 libcelt 支持解码
codec2EE通过外部库 libcodec2 支持编码/解码
CRI HCAX
Delphine Software International CIN 音频X用于 Delphine Software International 游戏的编解码器。
DFPWMXX
数字语音标准 - 标准播放模式 (DSS SP)X
Discworld II BMV 音频X
COOKX所有版本除 5.1 外均支持。
DCA (DTS Coherent Acoustics)XX支持扩展: XCh, XXCH, X96, XBR, XLL, LBR (部分)
杜比 EX
DPCM Cuberoot-Delta-ExactX用于少数游戏。
DPCM GremlinX
DPCM id RoQXX用于 Quake III, Jedi Knight 2 及其他电脑游戏。
DPCM Marble WADYX
DPCM InterplayX用于各种 Interplay 电脑游戏。
DPCM Squareroot-Delta-ExactX用于各种游戏。
DPCM Sierra OnlineX用于 Sierra Online 游戏音频文件。
DPCM SolX
DPCM XanX用于 Origin 的 Wing Commander IV AVI 文件。
DPCM Xilam DERFX
DSD (Direct Stream Digital),最不重要位优先X
DSD (Direct Stream Digital),最重要位优先X
DSD (Direct Stream Digital),最不重要位优先,平面X
DSD (Direct Stream Digital),最重要位优先,平面X
DSP Group TrueSpeechX
DST (Direct Stream Transfer)X
DV 音频X
增强型 AC-3XX
EVRC (增强型可变速率编解码器)X
FLAC (自由无损音频编解码器)XIX
FTR 语音X
G.723.1XX
G.729X
GSMEX通过外部库 libgsm 支持编码
GSM Microsoft 变体EX通过外部库 libgsm 支持编码
IAC (Indeo 音频编解码器)X
iLBC (因特网低比特率编解码器)EEX通过外部库 libilbc 支持编码和解码
IMC (英特尔音乐编码器)X
Interplay ACMX
LC3EE通过外部库 liblc3 支持
MACE (Macintosh 音频压缩/扩展) 6:1X
Marian 的 A-pac 音频X
MI-SC4 (Micronas SC-4 音频)X
MLP (Meridian 无损打包)XX用于 DVD 音频光盘。
猴子音频X
MP1 (MPEG 音频层 1)IX
MP2 (MPEG 音频层 2)IXIX也通过外部库 TwoLAME 支持编码
MP3 (MPEG 音频层 3)EIX通过外部库 LAME 支持编码,也支持 ADU MP3 和 MP3onMP4
MPEG-4 音频无损编码 (ALS)X
MobiClip FastAudioX
Musepack SV7X
Musepack SV8X
Nellymoser AsaoXX
On2 AVC (视频音频编解码器)X
OpusEX通过外部库 libopus 支持编码
OSQ (原音质)X
PCM A-lawXX
PCM mu-lawXX
PCM Archimedes VIDCXX
PCM 有符号 8 位 平面XX
PCM 有符号 16 位 大端 平面XX
PCM 有符号 16 位 小端 平面XX
PCM 有符号 24 位 小端 平面XX
PCM 有符号 32 位 小端 平面XX
PCM 32 位 浮点 大端XX
PCM 32 位 浮点 小端XX
PCM 64 位 浮点 大端XX
PCM 64 位 浮点 小端XX
PCM D-Cinema 音频 有符号 24 位XX
PCM 有符号 8 位XX
PCM 有符号 16 位 大端XX
PCM 有符号 16 位 小端XX
PCM signed 24-bit big-endianXX
PCM signed 24-bit little-endianXX
PCM signed 32-bit big-endianXX
PCM signed 32-bit little-endianXX
PCM signed 16/20/24-bit big-endian in MPEG-TSX
PCM unsigned 8-bitXX
PCM unsigned 16-bit big-endianXX
PCM unsigned 16-bit little-endianXX
PCM unsigned 24-bit big-endianXX
PCM unsigned 24-bit little-endianXX
PCM unsigned 32-bit big-endianXX
PCM unsigned 32-bit little-endianXX
PCM SGAX
QCELP / PureVoiceX
QDesign Music Codec 1X
QDesign Music Codec 2XThere are still some distortions.
RealAudio 1.0 (14.4K)XXReal 14400 bit/s codec
RealAudio 2.0 (28.8K)XReal 28800 bit/s codec
RealAudio 3.0 (dnet)IXXReal low bitrate AC-3 codec
RealAudio LosslessX
RealAudio SIPR / ACELP.NETX
RK Audio (RKA)X
SBC (low-complexity subband codec)XXUsed in Bluetooth A2DP
ShortenX
Sierra VMD audioXUsed in Sierra VMD files.
Smacker audioX
SMPTE 302M AES3 audioXX
SonicXXexperimental codec
Sonic losslessXXexperimental codec
SpeexEEXsupported through external library libspeex
TAK (Tom’s lossless Audio Kompressor)X
True Audio (TTA)XX
TrueHDXXUsed in HD-DVD and Blu-Ray discs.
TwinVQ (VQF flavor)X
VIMAXUsed in LucasArts SMUSH animations.
ViewQuest VQCX
VorbisEXA native but very primitive encoder exists.
Voxware MetaSoundX
Waveform ArchiverX
WavPackXX
Westwood Audio (SND1)X
Windows Media Audio 1XX
Windows Media Audio 2XX
Windows Media Audio LosslessX
Windows Media Audio ProX
Windows Media Audio VoiceX
Xbox Media Audio 1X
Xbox Media Audio 2X

X means that the feature in that column (encoding / decoding) is supported.

E means that support is provided through an external library.

I means that an integer-only version is available, too (ensures high performance on systems without hardware floating point support).

42.5 Subtitle Formats

NameMuxingDemuxingEncodingDecoding
3GPP Timed TextXX
AQTitleXX
DVBXXXX
DVB teletextXE
DVDXXXX
JACOsubXXX
MicroDVDXXX
MPL2XX
MPsub (MPlayer)XX
PGSX
PJS (Phoenix)XX
RealTextXX
SAMIXX
Spruce format (STL)XX
SSA/ASSXXXX
SubRip (SRT)XXXX
SubViewer v1XX
SubViewerXX
TED Talks captionsXX
TTMLXX
VobSub (IDX+SUB)XX
VPlayerXX
WebVTTXXXX
XSUBXX

X means that the feature is supported.

E means that support is provided through an external library.

42.6 Network Protocols

NameSupport
AMQPE
fileX
FTPX
GopherX
GophersX
HLSX
HTTPX
HTTPSX
IcecastX
MMSHX
MMSTX
pipeX
Pro-MPEG FECX
RTMPX
RTMPEX
RTMPSX
RTMPTX
RTMPTEX
RTMPTSX
RTPX
SAMBAE
SCTPX
SFTPE
TCPX
TLSX
UDPX
ZMQE

X means that the protocol is supported.

E means that support is provided through an external library.

42.7 Input/Output Devices

NameInputOutput
ALSAXX
BKTRX
cacaX
DV1394X
Lavfi virtual deviceX
Linux framebufferXX
JACKX
LIBCDIOX
LIBDC1394X
OpenALX
OpenGLX
OSSXX
PulseAudioXX
SDLX
Video4Linux2XX
VfW captureX
X11 grabbingX
Win32 grabbingX

X means that input/output is supported.

42.8 Timecode

Codec/formatReadWrite
AVIXX
DVXX
GXFXX
MOVXX
MPEG1/2XX
MXFXX

43 See Also

ffprobe, ffmpeg, ffplay, ffmpeg-utils, ffmpeg-scaler, ffmpeg-resampler, ffmpeg-codecs, ffmpeg-bitstream-filters, ffmpeg-formats, ffmpeg-devices, ffmpeg-protocols, ffmpeg-filters

44 Authors

The FFmpeg developers.

For details about the authorship, see the Git history of the project (https://git.ffmpeg.org/ffmpeg), e.g. by typing the command git log in the FFmpeg source directory, or browsing the online repository at https://git.ffmpeg.org/ffmpeg.

Maintainers for the specific components are listed in the file MAINTAINERS in the source code tree.

This document was generated using makeinfo.

托管服务由telepoint.bg