网站翻译由林建有提供支持
目录
- 1 描述
- 2 滤镜介绍
- 3 graph2dot
- 4 滤镜图描述
- 5 时间轴编辑
- 6 使用命令在运行时更改选项
- 7 多输入滤镜的选项(帧同步)
- 8 音频滤镜
- 8.1 aap
- 8.2 acompressor
- 8.3 acontrast
- 8.4 acopy
- 8.5 acrossfade
- 8.6 acrossover
- 8.7 acrusher
- 8.8 acue
- 8.9 adeclick
- 8.10 adeclip
- 8.11 adecorrelate
- 8.12 adelay
- 8.13 adenorm
- 8.14 aderivative, aintegral
- 8.15 adrc
- 8.16 adynamicequalizer
- 8.17 adynamicsmooth
- 8.18 aecho
- 8.19 aemphasis
- 8.20 aeval
- 8.21 aexciter
- 8.22 afade
- 8.23 afftdn
- 8.24 afftfilt
- 8.25 afir
- 8.26 aformat
- 8.27 afreqshift
- 8.28 afwtdn
- 8.29 agate
- 8.30 aiir
- 8.31 alimiter
- 8.32 allpass
- 8.33 aloop
- 8.34 amerge
- 8.35 amix
- 8.36 amultiply
- 8.37 anequalizer
- 8.38 anlmdn
- 8.39 anlmf, anlms
- 8.40 anull
- 8.41 apad
- 8.42 aphaser
- 8.43 aphaseshift
- 8.44 apsnr
- 8.45 apsyclip
- 8.46 apulsator
- 8.47 aresample
- 8.48 areverse
- 8.49 arls
- 8.50 arnndn
- 8.51 asdr
- 8.52 asetnsamples
- 8.53 asetrate
- 8.54 ashowinfo
- 8.55 asisdr
- 8.56 asoftclip
- 8.57 aspectralstats
- 8.58 asr
- 8.59 astats
- 8.60 asubboost
- 8.61 asubcut
- 8.62 asupercut
- 8.63 asuperpass
- 8.64 asuperstop
- 8.65 atempo
- 8.66 atilt
- 8.67 atrim
- 8.68 axcorrelate
- 8.69 bandpass
- 8.70 bandreject
- 8.71 bass, lowshelf
- 8.72 biquad
- 8.73 bs2b
- 8.74 channelmap
- 8.75 channelsplit
- 8.76 chorus
- 8.77 compand
- 8.78 compensationdelay
- 8.79 crossfeed
- 8.80 crystalizer
- 8.81 dcshift
- 8.82 deesser
- 8.83 dialoguenhance
- 8.84 drmeter
- 8.85 dynaudnorm
- 8.86 earwax
- 8.87 equalizer
- 8.88 extrastereo
- 8.89 firequalizer
- 8.90 flanger
- 8.91 haas
- 8.92 hdcd
- 8.93 headphone
- 8.94 highpass
- 8.95 join
- 8.96 ladspa
- 8.97 loudnorm
- 8.98 lowpass
- 8.99 lv2
- 8.100 mcompand
- 8.101 pan
- 8.102 replaygain
- 8.103 resample
- 8.104 rubberband
- 8.105 sidechaincompress
- 8.106 sidechaingate
- 8.107 silencedetect
- 8.108 silenceremove
- 8.109 sofalizer
- 8.110 speechnorm
- 8.111 stereotools
- 8.112 stereowiden
- 8.113 superequalizer
- 8.114 surround
- 8.115 tiltshelf
- 8.116 treble, highshelf
- 8.117 tremolo
- 8.118 vibrato
- 8.119 virtualbass
- 8.120 volume
- 8.121 volumedetect
- 9 音频源
- 10 音频接收器
- 11 视频滤镜
- 11.1 addroi
- 11.2 alphaextract
- 11.3 alphamerge
- 11.4 amplify
- 11.5 ass
- 11.6 atadenoise
- 11.7 avgblur
- 11.8 backgroundkey
- 11.9 bbox
- 11.10 bilateral
- 11.11 bilateral_cuda
- 11.12 bitplanenoise
- 11.13 blackdetect
- 11.14 blackframe
- 11.15 blend
- 11.16 blockdetect
- 11.17 blurdetect
- 11.18 bm3d
- 11.19 boxblur
- 11.20 bwdif
- 11.21 bwdif_cuda
- 11.22 ccrepack
- 11.23 cas
- 11.24 chromahold
- 11.25 chromakey
- 11.26 chromakey_cuda
- 11.27 chromanr
- 11.28 chromashift
- 11.29 ciescope
- 11.30 codecview
- 11.31 colorbalance
- 11.32 colorcontrast
- 11.33 colorcorrect
- 11.34 colorchannelmixer
- 11.35 colorize
- 11.36 colorkey
- 11.37 colorhold
- 11.38 colorlevels
- 11.39 colormap
- 11.40 colormatrix
- 11.41 colorspace
- 11.42 colorspace_cuda
- 11.43 colortemperature
- 11.44 convolution
- 11.45 convolve
- 11.46 copy
- 11.47 coreimage
- 11.48 corr
- 11.49 cover_rect
- 11.50 crop
- 11.51 cropdetect
- 11.52 cue
- 11.53 curves
- 11.54 datascope
- 11.55 dblur
- 11.56 dctdnoiz
- 11.57 deband
- 11.58 deblock
- 11.59 decimate
- 11.60 deconvolve
- 11.61 dedot
- 11.62 deflate
- 11.63 deflicker
- 11.64 dejudder
- 11.65 delogo
- 11.66 derain
- 11.67 deshake
- 11.68 despill
- 11.69 detelecine
- 11.70 dilation
- 11.71 displace
- 11.72 dnn_classify
- 11.73 dnn_detect
- 11.74 dnn_processing
- 11.75 drawbox
- 11.76 drawgraph
- 11.77 drawgrid
- 11.78 drawtext
- 11.79 edgedetect
- 11.80 elbg
- 11.81 entropy
- 11.82 epx
- 11.83 eq
- 11.84 erosion
- 11.85 estdif
- 11.86 exposure
- 11.87 extractplanes
- 11.88 fade
- 11.89 feedback
- 11.90 fftdnoiz
- 11.91 fftfilt
- 11.92 field
- 11.93 fieldhint
- 11.94 fieldmatch
- 11.95 fieldorder
- 11.96 fillborders
- 11.97 find_rect
- 11.98 floodfill
- 11.99 format
- 11.100 fps
- 11.101 framepack
- 11.102 framerate
- 11.103 framestep
- 11.104 freezedetect
- 11.105 freezeframes
- 11.106 frei0r
- 11.107 fspp
- 11.108 fsync
- 11.109 gblur
- 11.110 geq
- 11.111 gradfun
- 11.112 graphmonitor
- 11.113 grayworld
- 11.114 greyedge
- 11.115 guided
- 11.116 haldclut
- 11.117 hflip
- 11.118 histeq
- 11.119 histogram
- 11.120 hqdn3d
- 11.121 hwdownload
- 11.122 hwmap
- 11.123 hwupload
- 11.124 hwupload_cuda
- 11.125 hqx
- 11.126 hstack
- 11.127 hsvhold
- 11.128 hsvkey
- 11.129 hue
- 11.130 huesaturation
- 11.131 hysteresis
- 11.132 iccdetect
- 11.133 iccgen
- 11.134 identity
- 11.135 idet
- 11.136 il
- 11.137 inflate
- 11.138 interlace
- 11.139 kerndeint
- 11.140 kirsch
- 11.141 lagfun
- 11.142 lenscorrection
- 11.143 lensfun
- 11.144 libplacebo
- 11.145 libvmaf
- 11.146 libvmaf_cuda
- 11.147 limitdiff
- 11.148 limiter
- 11.149 loop
- 11.150 lut1d
- 11.151 lut3d
- 11.152 lumakey
- 11.153 lut, lutrgb, lutyuv
- 11.154 lut2, tlut2
- 11.155 maskedclamp
- 11.156 maskedmax
- 11.157 maskedmerge
- 11.158 maskedmin
- 11.159 maskedthreshold
- 11.160 maskfun
- 11.161 mcdeint
- 11.162 median
- 11.163 mergeplanes
- 11.164 mestimate
- 11.165 midequalizer
- 11.166 minterpolate
- 11.167 mix
- 11.168 monochrome
- 11.169 morpho
- 11.170 mpdecimate
- 11.171 msad
- 11.172 multiply
- 11.173 negate
- 11.174 nlmeans
- 11.175 nnedi
- 11.176 noformat
- 11.177 noise
- 11.178 normalize
- 11.179 null
- 11.180 ocr
- 11.181 ocv
- 11.182 oscilloscope
- 11.183 overlay
- 11.184 overlay_cuda
- 11.185 owdenoise
- 11.186 pad
- 11.187 palettegen
- 11.188 paletteuse
- 11.189 perspective
- 11.190 phase
- 11.191 photosensitivity
- 11.192 pixdesctest
- 11.193 pixelize
- 11.194 pixscope
- 11.195 pp
- 11.196 pp7
- 11.197 premultiply
- 11.198 prewitt
- 11.199 pseudocolor
- 11.200 psnr
- 11.201 pullup
- 11.202 qp
- 11.203 qrencode
- 11.204 quirc
- 11.205 random
- 11.206 readeia608
- 11.207 readvitc
- 11.208 remap
- 11.209 removegrain
- 11.210 removelogo
- 11.211 repeatfields
- 11.212 reverse
- 11.213 rgbashift
- 11.214 罗伯茨
- 11.215 旋转
- 11.216 沙巴
- 11.217 缩放
- 11.218 CUDA缩放
- 11.219 NPP缩放
- 11.220 NPP参考缩放
- 11.221 VT缩放
- 11.222 沙尔滤波器
- 11.223 滚动
- 11.224 SC检测
- 11.225 选择性色彩
- 11.226 分离字段
- 11.227 设置DAR和SAR
- 11.228 设置字段
- 11.229 设置参数
- 11.230 NPP锐化
- 11.231 剪切
- 11.232 显示信息
- 11.233 显示调色板
- 11.234 打乱帧
- 11.235 打乱像素
- 11.236 打乱色彩平面
- 11.237 信号统计
- 11.238 签名
- 11.239 SIT指标
- 11.240 智能模糊
- 11.241 索贝尔滤波器
- 11.242 spp
- 11.243 SR超分辨率
- 11.244 SSIM指标
- 11.245 立体3D
- 11.246 流选择和音频流选择
- 11.247 字幕
- 11.248 超采样2xSai
- 11.249 交换矩形
- 11.250 交换UV
- 11.251 时间混合
- 11.252 电影画格
- 11.253 色调图
- 11.254 阈值
- 11.255 缩略图
- 11.256 瓦片
- 11.257 倾斜与移位
- 11.258 连线
- 11.259 中值滤波
- 11.260 调整中值均衡
- 11.261 时域混合
- 11.262 色调映射
- 11.263 帧填充
- 11.264 转置
- 11.265 NPP转置
- 11.266 截取
- 11.267 去预乘
- 11.268 非锐化
- 11.269 去瓦片
- 11.270 USPP
- 11.271 360度视频
- 11.272 模糊降噪
- 11.273 可变模糊
- 11.274 向量示波器
- 11.275 视频稳定检测
- 11.276 视频稳定变换
- 11.277 垂直翻转
- 11.278 可变帧率检测
- 11.279 生动化
- 11.280 VIF指标
- 11.281 暗角
- 11.282 VMAF运动指标
- 11.283 垂直堆叠
- 11.284 W3FDIF
- 11.285 波形
- 11.286 编织和双重编织
- 11.287 XBR
- 11.288 交互相关
- 11.289 淡入淡出
- 11.290 中值滤波器
- 11.291 XPSNR
- 11.292 叠加图层
- 11.293 去隔行
- 11.294 CUDA去隔行
- 11.295 Yaep模糊
- 11.296 缩放平移
- 11.297 Z缩放
- 12 OpenCL视频滤镜
- 13 VAAPI视频滤镜
- 14 Vulkan视频滤镜
- 15 QSV视频滤镜
- 16 视频源
- 17 视频接收端
- 18 多媒体过滤器
- 18.1 3D示波器
- 18.2 位范围示波器
- 18.3 绘制图形
- 18.4 图形监视器
- 18.5 直方图
- 18.6 相位计
- 18.7 向量示波器
- 18.8 性能基准
- 18.9 合并
- 18.10 EBUR128
- 18.11 交替排列
- 18.12 延迟
- 18.13 元数据
- 18.14 权限
- 18.15 实时性
- 18.16 分段
- 18.17 选择
- 18.18 命令发送
- 18.19 设置PTS
- 18.20 设置范围
- 18.21 SETTB
- 18.22 显示CQT
- 18.23 显示CWT
- 18.24 显示频率
- 18.25 显示空间
- 18.26 显示频谱
- 18.27 显示频谱图
- 18.28 显示音量
- 18.29 显示波形
- 18.30 显示波形图片
- 18.31 边数据
- 18.32 频谱合成
- 18.33 分割
- 18.34 ZMQ
- 19 多媒体视频源
- 20 参见
- 21 作者
1 描述
本文档描述了libavfilter库提供的过滤器、视频源和接收
2 过滤简介
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 are in one linear chain, split and overlay are separately in another. The points where the linear chains join are labelled by names enclosed in square brackets. In the example, the split filter generates two outputs that are associated to the labels [main] and [tmp].
The stream sent to the second output of split, labelled as [tmp], is processed through the crop filter, which crops away the lower half part of the video, and then vertically flipped. The overlay数效果和合并效果[main]), and overlay on its lower half the output generated by the crop,vflip filterchain.
Some filters take in input a list of parameters: they are specified after the filter name and an equal sign, and are separated from each other by a colon.
There exist so-called source filters that do not have an audio/video input, and sink filters that will not have audio/video output.
3 graph2dot
过滤图graph2dot program included in the FFmpeg tools用于解析展示
Invoke the command:
graph2dot -h
to see how to use graph2dot.
You can then pass the dot description to the dot program (from the graphviz suite of programs) and obtain a graphical representation of the filtergraph.
For example the sequence of commands:
echo GRAPH_DESCRIPTION | \ tools/graph2dot -o graph.tmp && \ dot -Tpng graph.tmp -o graph.png && \ display graph.png
can be used to create and display an image representing the graph described by the GRAPH_DESCRIPTION string. Note that this string must be a complete self-contained graph, with its inputs and outputs explicitly defined. For example if your command line is of the form:
ffmpeg -i infile -vf scale=640:360 outfile
your GRAPH_DESCRIPTION string will need to be of the form:
nullsrc,scale=640:360,nullsink
you may also need to set the nullsrc parameters and add a format filter in order to simulate a specific input file.
图像展示
分解效果图展示
Each filter in a filtergraph is an instance of a filter class registered in the application, which defines the features and the number of input and output pads of the filter.
A filter with no input pads is called a "source", and a filter with no output pads is called a "sink".
4.1 Filtergraph syntax
A filtergraph has a textual representation, which is recognized by the
-filter/-vf/-af and
-filter_complex options in ffmpeg
and
-vf/-af in ffplay
, and by the
avfilter_graph_parse_ptr()
function defined in
libavfilter/avfilter.h.
A filterchain consists of a sequence of connected filters, each one connected to the previous one in the sequence. A filterchain is represented by a list of ","-separated filter descriptions.
A filtergraph consists of a sequence of filterchains. A sequence of filterchains is represented by a list of ";"-separated filterchain descriptions.
A filter is represented by a string of the form: [in_link_1]...[in_link_N]filter_name@id=arguments[out_link_1]...[out_link_M]
filter_name is the name of the filter class of which the described filter is an instance of, and has to be the name of one of the filter classes registered in the program optionally followed by "@id". The name of the filter class is optionally followed by a string "=arguments".
arguments is a string which contains the parameters used to initialize the filter instance. It may have one of two forms:
- A ’:’-separated list of key=value pairs.
- A ’:’-separated list of value. In this case, the keys are assumed to be
the option names in the order they are declared. E.g. the
fade
filter declares three options in this order – type, start_frame and nb_frames. Then the parameter list in:0:30 means that the value in is assigned to the option type, 0 to start_frame and 30 to nb_frames. - A ’:’-separated list of mixed direct value and long key=value pairs. The direct value must precede the key=value pairs, and follow the same constraints order of the previous point. The following key=value pairs can be set in any preferred order.
If the option value itself is a list of items (e.g. the format
filter
takes a list of pixel formats), the items in the list are usually separated by
‘|’.
The list of arguments can be quoted using the character ‘'’ as initial and ending mark, and the character ‘\使用’字符在引号中的文本内转义字符;否则,当遇到下一个特殊字符(属于集合‘)时,参数字符串被视为已终止。[]=;,遇到’字符。
在ffmpeg
命令行工具中实现了一种特殊语法,允许从文件加载选项值。方法是将斜杠‘/’添加到选项名称前,然后将提供的值解释为从中加载实际值的路径。例如
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
中,split滤镜实例有两个输出端口,而overlay滤镜实例有两个输入端口。split的第一个输出端口标记为“L1”,overlay的第一个输入端口标记为“L2”,并且split的第二个输出端口链接到overlay的第二个输入端口,后者都未标记。
在滤镜描述中,如果第一个滤镜的输入标签未指定,则默认为“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]
4.2 关于滤镜图转义的说明
滤镜图描述的组成包含多个层次的转义。请参阅(ffmpeg-utils)ffmpeg-utils(1)手册中的“引用与转义”部分了解有关使用的转义过程的更多信息。
第一级转义影响每个滤镜选项值的内容,这可能包含特殊字符:
用于分隔值,或其中一个转义字符\'
.
第二级转义影响整个滤镜描述,它可能包含转义字符\'
或由滤镜图描述使用的特殊字符[],;
最终,当您在shell命令行中指定滤镜图时,需要对其中包含的shell特殊字符执行第三级转义。
Finally, when you specify a filtergraph on a shell commandline, you need to perform a third level escaping for the shell special characters contained within it.
例如,考虑以下字符串嵌入在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的转义规则。例如,假设\
是特殊的,并需要用另一个\
进行转义,上一个字符串最终会变成:
-vf "drawtext=text=this is a \\\\\\'string\\\\\\'\\\\: may contain one\\, or more\\, special characters"
为了避免在使用接受滤镜规范作为输入的命令行工具时的繁琐转义,建议避免直接在shell中包含滤镜或选项规范。
例如,在使用drawtext滤镜时,您可能更愿意使用textfile选项代替text来指定要渲染的文本。
5 时间轴编辑
一些滤镜支持一个通用的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
查看哪些滤镜支持时间线功能。
6 通过命令在运行时更改选项
一些选项可在滤镜操作过程中使用命令更改。这些选项在ffmpeg
-h filter=<name of filter>的输出中标记为'T'。
命令的名称就是选项的名称,参数是新的值。
7 适用于多个输入滤镜的选项 (framesync)
一些拥有多个输入的滤镜支持一组通用选项。 这些选项只能通过名称设置,不能使用简写形式。
- eof_action
在辅助输入到达EOF时采取的行动;它接受以下值之一:
- repeat
重复最后一帧(默认值)。
- endall
同时结束两个流。
- pass
通过主输入。
- shortest
如果设置为1,则强制输出在最短输入终止时终止。默认值为0。
- repeatlast
如果设置为1,则强制滤镜将辅助流的最后一帧延长到主流结束的时间。值为0会禁用此行为。默认值为1。
- ts_sync_mode
根据辅助输入时间戳的严格度来同步流;它接受以下值之一:
- default
辅助输入中时间戳最接近主输入帧的较低或相等帧。
- nearest
辅助输入中时间戳绝对最接近主输入帧的帧。
8 音频滤镜
在配置FFmpeg构建时,可以使用--disable-filters
禁用任何现有的滤镜。
配置输出将显示当前构建中包括的音频滤镜。
以下是当前可用音频滤镜的描述。
8.1 aap
使用第二个音频流对第一个音频流应用仿射投影算法。
此自适应滤镜用于基于多个输入音频样本估算未知音频。 仿射投影算法可以在计算复杂性与收敛速度之间进行权衡。
以下是接受的选项的描述。
- order
设置滤镜阶数。
- projection
设置投影阶数。
- mu
设置滤镜mu值。
- delta
设置初始化内部协方差矩阵的系数。
- out_mode
设置滤镜输出样本。它接受以下值:
- i
传递第一个输入。
- d
传递第二个输入。
- o
传递期望值(第二个输入)和误差信号估计之差。
- n
传递输入(第一个输入)和误差信号估计之差。
- e
传递误差信号估计样本。
默认值是o.
- precision
设置处理样本时要使用的精度。
- auto
根据其他滤镜自动选择内部样本格式。
- float
始终使用单精度浮点格式处理。
- double
始终使用双精度浮点格式处理。
8.2 acompressor
压缩器主要用于减少信号的动态范围。 尤其是现代音乐通常以高比率压缩, 以提高整体响度。这是为了吸引听众注意,增加声音的“厚度”,并为音轨带来更多“力量”。 如果信号被过度压缩,可能会听起来暗淡或“死板”, 或者可能开始产生“泵动”的效果(这可能是一种强大的效果,但也可能完全破坏音轨)。 适当的压缩是实现专业声音的关键,这也是混音和母带制作的高级艺术。 由于其复杂的设置,可能需要较长时间来掌握这种效果的正确应用。
压缩通过检测超过所选级别的音量实现threshold
并按设置的因子进行划分ratio
。
因此,如果您将阀值设置为-12dB,而信号达到-6dB,2:1的比率将导致信号为-9dB。
由于信号的精确操作会导致波形失真,因此衰减可以在一定时间内平缓进行。
通过设置“Attack”(起音时间)和“Release”(释放时间)实现这一点。attack
确定信号上升到阈值以上需要多长时间才会出现任何衰减,而release
设置信号下降到阈值以下多长时间后衰减再次减弱。比起音时间短的信号将保持不变。
可以通过makeup
设置整体信号的衰减后补偿。knee
flatten
这个滤镜接受以下选项:
- level_in
设置输入增益。默认值为1。范围在0.015625至64之间。
- mode
设置压缩器操作模式。可以是
upward
或downward
。默认是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。
8.2.1 命令
此滤波器支持上述所有选项作为命令.
8.3 acontrast
简单的音频动态范围压缩/扩展滤波器。
该滤波器接受以下选项:
- contrast
设置对比度。默认为33。允许的范围是0到100。
8.4 acopy
将输入音频源原样复制到输出。这主要用于测试目的。
8.5 acrossfade
从一个输入音频流交叉渐入到另一个输入音频流。 交叉渐入效果应用于第一个音频流结束时的指定持续时间内。
该滤波器接受以下选项:
- nb_samples, ns
指定交叉渐入效果持续的采样数。 在交叉渐入效果结束时,第一个输入音频将完全静音。 默认值为44100。
- duration, d
指定交叉渐入效果的持续时间。参见(ffmpeg-utils)ffmpeg-utils(1)手册中的时间持续区段以了解被接受的语法。 默认情况下,持续时间由nb_samples确定。 如果设置了此选项,则将使用它代替nb_samples.
- overlap, o
设置第一个音频流结束是否与第二个音频流的开始重叠。 默认值为启用。
- curve1
为第一个音频流设置交叉渐入过渡曲线。
- curve2
为第二个音频流设置交叉渐入过渡曲线。
有关可用曲线类型的描述,请参见afade滤波器描述。
8.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
8.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
.
8.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
- 与上述相同,但也添加了一个中频段(频率在1500和8000之间):
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
8.7 acrusher
降低音频位分辨率。
此滤波器是具有增强功能的位粉碎器。位粉碎器用于显著降低音频信号的采样位数。 这并不会改变位深度,它只是产生一种效果。 减少位深的材料听起来更加刺耳且"数字化"。 此滤波器甚至可以舍入到连续值而非离散位深。 此外,它还有一个D/C偏移,导致信号的上半部分和下半部分被不同程度的粉碎。 去混叠设置可以产生"柔和"的粉碎声音。
此滤波器的另一个特性是对数模式。 此设置将位之间的线性距离切换为对数距离。 结果是一个更加"自然"的粉碎器,低信号不会被门控。 人耳有对数感知,因此这种粉碎更加宜人。 对数粉碎也可以去混叠。
该滤波器接受以下选项:
- level_in
设置输入电平。
- level_out
设置输出电平。
- bits
设置位深度降低。
- mix
设置混合比例。
- mode
可以是线性的:
lin
或者是对数的:log
.- dc
设置直流偏移。
- aa
设置抗混叠效果。
- samples
设置采样降低。
- lfo
启用低频振荡器(LFO)。默认为禁用。
- lforange
设置LFO范围。
- lforate
设置LFO速率。
8.7.1 命令
此滤波器支持上述所有选项作为命令.
8.8 acue
将音频滤波延迟到给定的时钟时间戳。参见cue滤波器。
8.9 adeclick
从输入音频中移除冲击噪声。
检测为冲击噪声的样本将被使用自回归建模的插值样本替换。
- window, w
设置窗口大小,以毫秒为单位。允许范围为
10
到100
毫秒。 默认值为55
。 设置每次处理的窗口大小。- overlap, o
设置窗口重叠比例,占窗口大小的百分比。允许范围为
50
到95
。默认值为75
百分比。 将其设置为非常高的值将增加冲击噪声的消除,但使整个过程变得更慢。- arorder, a
设置自回归阶数,占窗口大小的百分比。允许范围为
0
到25
。默认值为2
百分比。 此选项还控制使用邻近的优质样本插值样本的质量。- threshold, t
设置阈值值。允许范围为
1
到100
。 默认值为2
。 此项控制将要移除的冲击噪声的强度。 值越低,越多的样本会被检测为冲击噪声。- burst, b
设置突发融合,占窗口大小的百分比。允许范围为
0
到10
。默认值为2
。 如果检测为噪声的任何两个样本之间的间距小于此值,则其间的任何样本也会被检测为噪声。- method, m
设置重叠方法。
它接受以下值:
- add, a
选择重叠-加法方法。即使未插值的样本在该方法下也会略有改变。
- save, s
选择重叠-保存方法。未插值的样本保持不变。
默认值为
a
.
8.10 adeclip
从输入音频中移除失真样本。
检测为失真的样本将被使用自回归建模的插值样本替换。
- window, w
设置窗口大小,以毫秒为单位。允许范围为
10
到100
。 默认值为55
毫秒。 设置每次处理的窗口大小。- overlap, o
设置窗口重叠比例,占窗口大小的百分比。允许范围为
50
到95
。默认值为75
百分比。- arorder, a
设置自回归阶数,占窗口大小的百分比。允许范围为
0
到25
。默认值为8
百分比。 此选项还控制使用邻近优质样本插值样本的质量。- threshold, t
设置阈值值。允许范围为
1
到100
。 默认值为10
。值越高,失真检测越不激进。- hsize, n
设置用于检测失真的直方图大小。允许范围为
100
到9999
。 默认值为1000
。值越高,失真检测越不激进。- method, m
设置重叠方法。
它接受以下值:
- add, a
选择重叠-加法方法。即使未插值的样本在该方法下也会略有改变。
- save, s
选择重叠-保存方法。未插值的样本保持不变。
默认值为
a
.
8.11 adecorrelate
对输入音频流应用去相关处理。
该滤波器接受以下选项:
- stages
设置过滤的去相关阶段。 允许的范围是1到16。默认值为6。
- seed
设置用于跨通道设置延迟(以样本为单位)的随机种子。
8.12 adelay
对一个或多个音频通道进行延迟。
被延迟的通道中的样本将用静音填充。
该滤波器接受以下选项:
- delays
为每个通道设置延迟时间(以毫秒为单位),用‘|’分隔。 未使用的延迟将被默默忽略。 如果给定延迟的数量小于通道数量,所有剩余通道将不会延迟。 如果想精确延迟样本数,在数字后追加‘S’。 如果想以秒为单位延迟,在数字后追加‘s’。
- all
为所有剩余通道使用最后设置的延迟。 默认情况下这是禁用的。 如果启用,此选项会更改
delays
选项的解释方式。
8.12.1 示例
- 延迟第一个通道1.5秒,第三个通道0.5秒,其余通道(以及其他可能存在的通道)保持不变。
adelay=1500|0|500
- 延迟第二个通道500个样本,第三个通道700个样本,
第一个通道(以及其他可能存在的通道)保持不变。
adelay=0|500S|700S
- 对所有通道延迟相同数量的样本:
adelay=delays=64S:all=1
8.13 adenorm
通过添加极低电平噪声来补救音频中的低性能问题。
该滤波器应放置在任何可能产生低性能问题的滤波器之前。
以下是接受的参数说明。
- level
设置添加噪声的电平(以dB为单位)。默认值为
-351
。 允许范围为-451到-90。- type
设置添加噪声的类型。
- dc
添加直流信号。
- ac
添加交流信号。
- square
添加方波信号。
- pulse
添加脉冲信号。
默认值为
dc
.
8.13.1 命令
此滤波器支持上述所有选项作为命令.
8.14 aderivative, aintegral
计算音频流的导数/积分。
顺序应用这两个滤波器将生成原始音频。
8.15 adrc
对输入音频流应用频谱动态范围控制滤波器。
以下是接受的选项的说明。
- transfer
设置传递表达式。
表达式可以包含以下常量:
- ch
当前通道号
- sn
当前样本号
- nb_channels
通道数量
- t
以秒为单位的时间戳
- sr
采样率
- p
当前频率功率值(以dB为单位)
- f
当前频率(以Hz为单位)
默认值为
p
.- attack
设置攻击时间(以毫秒为单位)。默认值为
50
毫秒。 允许范围为1到1000毫秒。- release
设置释放时间(以毫秒为单位)。默认值为
100
毫秒。 允许范围为5到2000毫秒。- channels
设置要滤波的通道。默认情况下,
all
音频流中的通道被滤波。
8.15.1 命令
此滤波器支持上述所有选项作为命令.
8.15.2 示例
- 对所有频率应用频谱压缩,阈值为-50 dB,压缩比为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 dB,
并具有短的攻击时间和短的释放时间:
adrc=transfer='if(lte(p,-85),p-800,p)':attack=1:release=5
- 对所有频率应用频谱扩展,阈值为-10 dB,扩展比为1:2:
adrc=transfer='if(lt(p,-10),-10+(p-(-10))*2,p)':attack=50:release=100
- 对所有频率应用最大-60 dB限制器,
攻击时间为2毫秒,释放时间为10毫秒:
adrc=transfer='min(p,-60)':attack=2:release=10
8.16 adynamicequalizer
对输入音频流应用动态均衡。
以下是接受的选项的说明。
- threshold
设置用于触发均衡的检测阈值。 阈值检测使用检测滤波器。 默认值为0。允许范围为0到100。
- dfrequency
设置用于激励均衡的检测滤波器的检测频率,单位为赫兹。 默认值为1000 Hz。允许范围为2到1000000 Hz。
- dqfactor
设置用于激励均衡的检测滤波器的共振因子。 默认值为1。允许范围为0.001到1000。
- tfrequency
设置均衡滤波器的目标频率。 默认值为1000 Hz。允许范围为2到1000000 Hz。
- 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
始终使用双浮点精度采样格式。
8.16.1 控制命令
此滤波器支持所有上述选项作为命令.
8.17 动态平滑
对输入音频流应用动态平滑。
以下是接受的选项说明。
- sensitivity
设置对频率波动的敏感度。默认值为2。 允许范围为0到1e+06。
- basefreq
设置用于平滑的基频。默认值为22050。 允许范围为2到1e+06。
8.17.1 控制命令
此滤波器支持所有上述选项作为命令.
8.18 回声
对输入音频应用回声效果。
回声是反射的声音,自然情况下会出现在山间或大建筑物周围,数字回声效果模拟这种行为,通常用于增强单一乐器或人声的音响效果。
原始信号与反射声的时间差为delay
,而反射声的响度为decay
。
多个回声可以具有不同的延迟和衰减。
以下是接受的参数说明。
- in_gain
设置反射信号的输入增益。默认值为
0.6
.- out_gain
设置反射信号的输出增益。默认值为
0.3
.- delays
设置原始信号与反射之间的时间间隔列表,单位为毫秒,用‘|’分隔。 每个
delay
的允许范围为(0 - 90000.0]
。 默认值为1000
.- decays
设置反射信号响度的列表,用‘|’分隔。 每个
decay
的允许范围为(0 - 1.0]
。 默认值为0.5
.
8.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
8.19 音频强调
音频强调滤波器用于创建或还原从LP或强调CD直接获取的素材,并使用不同的滤波曲线。 例如,为存储在黑胶唱片上的音乐,信号必须先通过一个滤波器进行更改,以补偿这种录音介质的劣势。 播放素材时,需要应用逆滤波器以恢复频率响应的失真。
滤波器接受以下选项:
- level_in
设置输入增益。
- level_out
设置输出增益。
- mode
设置滤波模式。如果用于还原素材,请使用
reproduction
模式,否则使用production
模式。默认模式为reproduction
模式。- type
设置滤波器类型,以选择录音媒介类型。可为以下选项之一:
- col
选择 Columbia。
- 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)。
8.19.1 控制命令
此滤波器支持所有上述选项作为命令.
8.20 评估音频
根据指定的表达式修改音频信号。
此滤波器接受一个或多个表达式(每个通道一个), 这些表达式经过计算后用于修改对应的音频信号。
接受以下参数:
- exprs
设置每个独立通道的‘|’分隔表达式列表。如果 输入通道数量大于表达式数量,则对剩余的输出通道将 使用最后指定的表达式。
- channel_layout, c
设置输出通道布局。如果未指定,通道布局将按照 表达式的数量指定。如果设置为‘same’,它将默认 使用与输入相同的通道布局。
中的每个表达式exprs可包含以下常量和函数:
- ch
当前表达式的通道编号
- n
从0开始的样本序号
- s
采样率
- t
以秒表示的评估样本时间
- nb_in_channels
- nb_out_channels
输入和输出通道数
- val(CH)
含编号CH
的输入通道的值
8.20.1 示例
- 音量减半:
aeval=val(ch)/2:c=same
- 反转第二通道的相位:
aeval=val(0)|-val(1)
8.21 激励器
激励器用于产生原始信号中不存在的高音。 通过对信号产生受限范围的谐波失真并添加到原始信号中实现这一点。 激励器在不单纯提高高频的情况下增强音频信号的高端, 与均衡器的功能不同,它可制造更“清脆”或“明亮”的声音。
滤波器接受以下选项:
- 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
设置产生谐波的最低频率限制,单位为赫兹。 允许范围为2000到12000 Hz。 默认值为7500 Hz。
- ceil
设置产生谐波的最高频率限制。 允许范围为9999到20000 Hz。 如果值低于10000 Hz,则不应用限制。
- listen
静音原始信号,仅输出添加的谐波。 默认情况下该选项禁用。
8.21.1 控制命令
此滤波器支持所有上述选项作为命令.
8.22 淡入/淡出
对输入音频应用淡入淡出效果。
以下是接受的参数说明。
- 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
.
8.22.1 控制命令
此滤波器支持所有上述选项作为命令.
8.22.2 示例
- 对前15秒音频应用淡入效果:
afade=t=in:ss=0:d=15
- 对最后25秒的900秒长度的音频应用淡出效果:
afade=t=out:st=875:d=25
8.23 FFT降噪
使用快速傅里叶变换(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
仅输出噪声。
默认值是输出.
- adaptivity, ad
设置自适应因子,用于调整每个频率区间的增益变化速度。值0启用即时自适应,而较大的值则反应较慢。 允许范围是从0到1。默认值是0.5.
- floor_offset, fo
设置噪声底限偏移因子。此选项用来调整测量噪声底限时所应用的偏移量。仅当启用噪声底限跟踪时有效。 允许范围是从-2.0到2.0。默认值是1.0.
- noise_link, nl
设置用于多通道音频的噪声链接。
接受以下值:
- none
使用未更改的通道噪声底限。
- min
使用所有通道中测量的最小噪声底限。
- max
使用所有通道中测量的最大噪声底限。
- average
使用所有通道中测量的平均噪声底限。
默认值是min.
- band_multiplier, bm
设置频段乘数因子,用于区域间扩展频段。 允许范围是从0.2到5。默认值是1.25.
- sample_noise, sn
开启音频输入的噪声剖面捕捉和测量。
接受以下值:
- start, begin
开始采样噪声捕捉。
- stop, end
停止噪声采样捕捉并测量新的噪声频段剖面。
默认值是
none
.
- gain_smooth, gs
设置增益平滑空间半径,用于平滑应用于各个频率区间的增益。 有助于减少随机音乐噪声伪影。 较大的值增加了增益的平滑程度。 允许范围是从
0
到50
。 默认值是0
.
8.23.1 命令
此过滤器支持上述某些选项作为命令.
8.23.2 示例
- 减少白噪声10dB,并使用先前测量的噪声底限为-40dB:
afftdn=nr=10:nf=-40
- 减少白噪声10dB,同时设置初始噪声底限为-80dB并启用自动跟踪噪声底限,以使噪声底限在处理期间逐渐变化:
afftdn=nr=10:nf=-80:tn=1
- 通过命令采集输入音频前0.4秒的噪声剖面,使用噪声底限为-40dB的20dB噪声减少:
asendcmd=0.0 afftdn sn start,asendcmd=0.4 afftdn sn stop,afftdn=nr=20:nf=-40
8.24 afftfilt
在频域内对样本应用任意表达式。
- real
为各个独立通道设置频率域实数表达式,使用‘|’分隔。 默认值为"re"。 如果输入通道数多于表达式的数量,则会将最后指定的表达式用于其余的输出通道。
- imag
为各个独立通道设置频率域虚数表达式,使用‘|’分隔。 默认值为"im"。
每个表达式中实数和虚数可以包含以下常量和函数:
- sr
采样率
- b
当前频率区间编号
- nb
可用区间数
- ch
当前表达式的通道号
- chs
通道数
- pts
当前帧PTS
- re
当前通道中频率区间的实部
- im
当前通道中频率区间的虚部
- real(b, ch)
返回位于(位置区间,通道)
- imag(b, ch)
返回位于(位置区间,通道)
- 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
.
8.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)"
8.25 afir
应用任意有限脉冲响应滤波器。
此滤波器设计用于应用长FIR滤波器, 长达60秒。
它可以用作数字分频滤波器的组件, 房间均衡,串扰消除,波场合成,声像化, Ambiophonics,Ambisonics和空间化。
此滤波器使用第一条流之后的流作为FIR系数。 如果非第一条流只有一个通道,它将被用于第一条流中的所有输入通道, 否则非第一条流的通道数必须与第一条流的通道数相同。
接受以下参数:
- dry
设置干声音增益。设置输入增益。
- wet
设置湿声音增益。设置最终输出增益。
- length
设置脉冲响应滤波器长度。默认值为1,这代表整个IR会被处理。
- gtype
此选项已弃用,且无任何作用。
- irnorm
设置过滤前应用于IR系数的规范化。 允许范围是从-1到2。 IR系数使用此选项计算的向量规范化。 负值表示不进行规范化,IR系数保持未修改。 默认值是1.
- irlink
对于多通道IR,如果此选项设置为true,所有IR通道会被用它们所有IR通道系数的最大测量增益进行规范化,如通过
irnorm
选项设定。 禁用时,每个IR通道的所有IR系数会独立规范化。 默认值是true.- irgain
设置过滤前应用于IR系数的增益。 允许范围是从0到1。 此增益应用于任何由irnorm选项应用的增益之后。
- irfmt
设置IR流格式。可以为
mono
或input
。 默认值是input
.- maxir
设置允许的脉冲响应滤波器持续时间的最大值,以秒为单位。默认值是30秒。 允许范围是0.1到60秒。
- response
此选项已弃用,且无任何作用。
- channel
此选项已弃用,且无任何作用。
- size
此选项已弃用,且无任何作用。
- rate
此选项已弃用,且无任何作用。
- minp
设置用于卷积的最小分区大小。默认值是8192。 允许范围是从1到65536。 较低值会降低延迟,但会增加CPU使用率。
- maxp
设置用于卷积的最大分区大小。默认值是8192。 允许范围是从8到65536。 较低值可能增加CPU使用率。
- nbirs
设置输入脉冲响应流数量,可在运行时切换。 允许范围是从1到32。默认值是1.
- ir
设置用于卷积的IR流,起始于0,应始终小于
nbirs
选项提供的值。默认值是0。 此选项可通过命令.- precision
设置在处理样本时使用的精度。
- auto
根据其他过滤器自动选择内部样本格式。
- float
始终使用单浮点精度样本格式。
- double
始终使用双浮点精度样本格式。
默认值是auto。
- irload
设置IR流加载时间。可以为
init
或access
。 第一个选项在初始化时加载和准备所有IR,第二个选项在首次访问特定IR时加载。 默认值是init
.
8.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"
8.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
8.27 afreqshift
对输入音频样本进行频率偏移。
过滤器接受以下选项:
- shift
指定频率偏移。允许范围为-INT_MAX到INT_MAX。 默认值为0.0。
- level
设置应用于最终输出的输出增益。允许范围为0.0到1.0。 默认值是1.0。
- order
设置用于过滤的滤波器次数。允许范围为1到16。 默认值是8。
8.27.1 命令
此过滤器支持所有以上选项作为命令.
8.28 afwtdn
通过小波减少输入样本中的宽带噪声。
以下是接受的选项的描述。
- 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。
8.28.1 命令
此过滤器支持所有以上选项作为命令.
8.29 agate
门限主要用于减少信号的低部分。这种信号处理减少了有用信号之间的干扰噪声。
门限通过检测音量低于选定的阈值并将其除以比率设定的因子来完成。 噪音底限的底部通过范围设置。 因为对信号的精确处理会导致波形变形,减少可以随时间进行平衡。 通过设置攻击和释放.
攻击决定信号低于阈值需要的时间,才能开始任何减弱,而释放设置信号高于阈值需要的时间,以减少减弱。 短于设定攻击时间的信号将保持不变。
- level_in
设置过滤前的输入电平。 默认值为1。允许范围是0.015625到64。
- mode
设置操作模式。可以为
upward
或downward
。 默认值是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
.
8.29.1 命令
此滤镜支持如上述所有选项作为命令.
8.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
设置要显示频率响应的红外通道。默认情况下显示第一通道。 此选项仅在响应启用时使用。
- size
设置视频流大小。此选项仅在响应启用时使用。
用tf
和sf
格式的系数,用空格分隔,并按升序排列。
用zp
格式的系数,用空格分隔,系数顺序无关紧要。用zp
格式的系数是复数,用i表示虚数单位。
可以为每个通道提供不同的系数和增益,在这种情况下,使用'|'来分隔系数或增益。 最后提供的系数将适用于所有剩余通道。
8.30.1 示例
- 对48000Hz采样率应用约5000Hz的2极点椭圆凹槽滤波器:
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阶归一化Butterworth低通滤波器:
aiir=z=1.3057 0 0 0:p=1.3057 2.3892 2.1860 1:f=sf:r=d
8.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时,还会刷新预视缓冲区中有效的音频数据。
根据选择的设置推荐使用aresample在应用此滤波器之前将输入上采样2倍或4倍。
8.32 allpass
应用一个具有中心频率(以Hz为单位)的两极全通滤波器frequency,以及滤波宽度width。 全通滤波器会更改音频的频率到相位关系,而不会更改其频率到幅度关系。
该滤波器接受以下选项:
- frequency, f
设置频率(以赫兹为单位)。
- width_type, t
设置指定滤波器带宽的方法。
- h
赫兹
- q
Q因子
- o
倍频程
- s
斜率
- k
千赫
- width, w
指定滤波器带宽单位的宽度类型。
- mix, m
在输出中使用滤波信号的比例。默认值为1。 范围是在0与1之间。
- channels, c
指定要过滤的通道,默认情况下会过滤所有可用通道。
- normalize, n
标准化双二阶系数,默认未启用。 启用后将在DC处将幅度响应标准化到0dB。
- order, o
设置过滤器的阶数,可以是1或2。默认值为2。
- transform, a
设置无限冲激响应滤波器的变换类型。
- di
- dii
- tdi
- tdii
- latt
- svf
- zdf
- precision, r
设置过滤精度。
- auto
根据环绕滤波器选择自动样本格式。
- s16
始终使用16位有符号。
- s32
始终使用32位有符号。
- f32
始终使用32位浮点。
- f64
始终使用64位浮点。
8.32.1 命令
该滤镜支持以下命令:
- frequency, f
更改全通滤波频率。 命令语法为:"frequency"
- width_type, t
更改全通滤波宽度类型。 命令语法为:"width_type"
- width, w
更改全通滤波宽度。 命令语法为:"width"
- mix, m
更改全通滤波混合比。 命令语法为:"mix"
8.33 aloop
循环音频样本。
该滤波器接受以下选项:
- loop
设置循环次数。将此值设置为-1将导致无限循环。 默认值为0。
- size
设置最大样本数。默认值为0。
- start
设置循环的第一个样本。默认值为0。
- time
设置循环起点的时间(以秒为单位)。 仅当名为start的选项被设置时使用
-1
.
8.34 amerge
将两个或多个音频流合并为单一的多通道流。
该滤波器接受以下选项:
- inputs
设置输入数量。默认值为2。
如果输入的通道布局是分散的,因此是兼容的, 输出的通道布局将相应地设置,并将按需重新排列通道。 如果输入的通道布局不是分散的,输出将拥有所有第一个输入的通道, 然后是第二个输入的所有通道,按此顺序排列, 输出的通道布局将是对应于通道总数的默认值。
例如,如果第一个输入是2.1(FL+FR+LF),第二个输入 是FC+BL+BR,那么输出将为5.1,通道顺序如下:a1, a2, b1, a3, b2, b3 (a1是第一个输入的第一个通道,b1是第二个输入的第一个通道)。
另一方面,如果两个输入都是立体声,输出通道将为 默认顺序:a1, a2, b1, b2,输出通道布局将 任意设定为4.0,这可能或可能不是预期的值。
所有输入必须具有相同的采样率和格式。
如果输入时长不同,输出将以最短的为准停止。
8.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
8.35 amix
将多个音频输入混合为一个输出。
请注意,此滤波器仅支持浮点样本(amerge和pan音频滤波器支持多种格式)。如果amix输入为整数样本,则aresample将自动插入以将其转换为浮点样本。
它接受以下参数:
- inputs
输入数量。如未指定,默认为2。
- duration
如何确定流的结束。
- longest
最长输入的持续时间(默认)。
- shortest
最短输入的持续时间。
- first
第一个输入的持续时间。
- dropout_transition
在输入流结束时重新正静调整音量的过渡时间(以秒为单位)。 默认值为2秒。
- weights
指定每个输入音频流的权重,作为以空格分隔的数字序列。 如果指定的权重少于输入数量,最后的权重将分配给剩余的输入。 每个输入的默认权重为1。
- normalize
始终对输入进行缩放,而不是仅对样本进行求和。 如果输入在此过滤器应用之前或之后未被正常化, 且此选项未启用,请注意可能会发生严重的剪切。 默认情况下此选项启用。
8.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
8.35.2 命令
此滤波器支持以下命令:
- weights
- normalize
语法与同名选项相同。
8.36 amultiply
将第一个音频流与第二个音频流相乘,并存储结果至 输出音频流。乘法的操作是将第一个流中的每个 样本与第二个流中相同位置的样本相乘。
通过这种逐元素相乘,可以创建振幅淡入淡出和振幅调制。
8.37 anequalizer
为每个频道提供的高阶参数多频段均衡器。
它接受以下参数:
- params
-
此选项字符串格式为: "c通道f=中心频率w=宽度g=增益t=滤波器类型| ..." 每一个均衡器频段用’|’分隔。
- chn
设置要应用均衡的频道号码。 如果输入中没有此频道,则忽略该条目。
- f
为频段设置中心频率。 如果输入中没有该频率,则忽略该条目。
- w
以赫兹为单位设置频段宽度。
- g
以dB为单位设置频段增益。
- t
为频段设置滤波器类型(可选),可以是:
- ‘0’
巴特沃斯滤波器,这是默认值。
- ‘1’
切比雪夫1型。
- ‘2’
切比雪夫2型。
- curves
激活此选项后,将显示anequalizer的频率响应于视频流中。
- size
设置视频流大小。仅当激活曲线选项时有用。
- mgain
设置将要显示的最大增益值。仅当激活曲线选项时有用。 将此值设置为一个合理的值,可以展示由邻近频段彼此过近 而引起的更高增益。
- fscale
设置用于在视频输出中绘制频率响应的频率刻度。 可以是线性或对数。默认是对数。
- colors
为每条要在视频流中显示的通道曲线设置颜色。 这是用空格或’|’分隔的颜色名称列表。 未识别或缺失的颜色将被替换为白色。
8.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
8.37.2 命令
此滤波器支持以下命令:
- change
修改现有滤波器参数。 命令的语法是:"fN|f=频率|w=宽度|g=增益"
fN是现有滤波器编号,从0开始,如果没有这样的滤波器,则返回错误。频率设置新的频率参数。宽度以赫兹为单位设置新的宽度参数。增益以分贝为单位设置新的增益参数。
使用asendcmd进行完整滤波器调用可能看起来像这样: asendcmd=c=’4.0 anequalizer change 0|f=200|w=50|g=1’,anequalizer=...
8.38 anlmdn
使用非局部均值算法减少音频样本中的宽带噪声。
通过寻找具有相似上下文的其他样本来调整每个样本。上下文相似性通过比较其大小的周围块定义。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.允许范围是1到1000.
8.38.1 命令
此滤波器支持上述所有选项作为命令.
8.39 anlmf, anlms
对第一个音频流应用归一化最小均方(Squares|Fourth)算法,使用第二个音频流。
此自适应滤波器用于通过找到与产生误差信号(期望的第二输入音频流与实际信号第一输入音频流之间的差异)最小均方相关的滤波器系数来模拟预期滤波器。
以下是接受的选项说明。
- order
设置滤波器阶数。
- mu
设置滤波器mu。
- eps
设置滤波器eps。
- leakage
设置滤波器泄漏。
- out_mode
它接受以下值:
- i
传递第一个输入。
- d
传递第二个输入。
- o
传递期望的第二输入和误差信号估计之间的差异。
- n
传递输入的第一输入和误差信号估计之间的差异。
- e
传递误差信号估计样本。
默认值是o.
- precision
设置处理样本时使用的精度。
- auto
根据其他滤波器自动选择内部样本格式。
- float
始终使用单浮点精度样本格式。
- double
始终使用双浮点精度样本格式。
8.39.1 示例
- 此过滤器的众多用途中之一是降噪,输入音频根据延迟固定时间的相同样本进行过滤,例如对于立体声的一种情况是:
asplit[a][b],[a]adelay=32S|32S[a],[b][a]anlms=order=128:leakage=0.0005:mu=.5:out_mode=o
8.39.2 命令
此过滤器支持与选项相同的命令,除选项order
.
8.40 anull
将音频源未经改动传递给输出。
8.41 apad
用静音填充音频流的结尾。
这可以与ffmpeg
-shortest一起使用以扩展音频流至与视频流长度相同。
以下是接受的选项说明。
- packet_size
设置静音数据包大小。默认值为4096。
- pad_len
设置要添加到结尾的静音样本数量。在值达到后,流终止。此选项与 mutually 排他于whole_len.
- whole_len
设置输出音频流中的最小总样本数量。如果值比输入音频长度长,则会在结尾添加静音,直到达到值为止。此选项与 mutually 排他于pad_len.
- pad_dur
指定添加的静音样本持续时间。请参阅(ffmpeg-utils)ffmpeg-utils(1) 手册中的时间持续时间部分了解接受的语法。仅在设置为非负值时使用。
- whole_dur
指定输出音频流中的最小总持续时间。请参阅(ffmpeg-utils)ffmpeg-utils(1) 手册中的时间持续时间部分了解接受的语法。仅在设置为非负值时使用。如果值比输入音频长度长,则会在结尾添加静音,直到达到值为止。 此选项与 mutually 排他于pad_dur
如果未设置pad_len也未设置whole_len也未设置pad_dur也未设置whole_dur选项,则筛选器将无限期地在输入流的尾部添加静音。
请注意,对于ffmpeg 4.4及更早版本,零pad_dur或whole_dur也会导致筛选器无限期添加静音。
8.41.1 示例
- 在输入结尾添加1024个静音样本:
apad=pad_len=1024
- 确保音频输出将至少包含10000个样本,如果需要则用静音填充输入:
apad=whole_len=10000
- 使用
ffmpeg
来填充音频输入,使视频流始终最短并转换直至输出文件结尾时使用选项:shortest8.42 aphaserffmpeg -i VIDEO -i AUDIO -filter_complex "[1:0]apad" -shortest OUTPUT
在输入音频中添加相位效果。
Add a phasing effect to the input audio.
相位器过滤器在频谱中创建一系列峰值和谷值。峰值和谷值的位置被调制,使其随时间变化,从而产生扫动效果。
以下是接受的参数说明。
- in_gain
设置输入增益。默认是0.4。
- out_gain
设置输出增益。默认是0.74。
- delay
以毫秒为单位设置延迟。默认是3.0。
- decay
设置衰减。默认是0.4。
- speed
设置调制速度(以赫兹为单位)。默认是0.5。
- type
设置调制类型。默认是三角形。
它接受以下值:
- ‘triangular, t’
- ‘sinusoidal, s’
8.43 aphaseshift
对输入音频样本应用相位移。
过滤器接受以下选项:
- shift
指定相位移。允许范围是-1.0到1.0。 默认值是0.0。
- level
设置应用于最终输出的输出增益。允许范围是0.0到1.0。 默认值是1.0。
- order
设置用于过滤的滤波器阶数。允许范围是1到16。 默认值是8。
8.43.1 命令
过滤器支持上述所有选项作为命令.
8.44 apsnr
测量音频峰值信噪比。
此过滤器需要两个音频流作为输入,并输出第一个音频流。 结果以每个输入通道的分贝为单位输出。
8.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。
8.45.1 命令
过滤器支持上述所有选项作为命令.
8.46 apulsator
音频脉冲器介于自动声像调节器和颤动之间。 同时也可以产生有趣的立体声效果。脉冲器基于LFO(低频振荡器)改变左右声道的音量,具有不同波形和位移相位的特性。 此过滤器可以定义左右声道之间的偏移量。偏移量为0表示两个LFO形状匹配——常规颤动。 偏移量为50%表示右声道的形状正好在相位上移位(或向后移动大约半个频率)——脉冲器充当自动声像调节器。在偏移量为1时,两个曲线再次匹配。中间的每个设置都会无缝地移动相位移位,并使用正弦和三角形波形产生一些‘传播’声音。从偏移量0.5到1设置得越高(从0.5开始),信号从左扬声器到右扬声器传递得越快。
过滤器接受以下选项:
- 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, ms 或 hz。默认是hz。
- bpm
设置bpm。默认是120。允许范围是[30 - 300]。只有在定时设为bpm时使用。
- ms
设置ms。默认是500。允许范围是[10 - 2000]。只有在定时设为ms时使用。
- hz
设置频率(以赫兹为单位)。默认是2。允许范围是[0.01 - 100]。只有在定时设为hz时使用。
8.47 aresample
使用libswresample库将输入音频重新取样为指定参数。 如果未指定,则过滤器将自动在输入和输出之间进行转换。
此过滤器还可以拉伸/压缩音频数据以使其匹配时间戳或注入静音/剪除音频以使其匹配时间戳,也可以组合使用或两者皆不做。
过滤器接受语法 [采样率:]重采样器选项,其中采样率表示采样率,重采样器选项是一系列键=值对,以":"分隔。查看(ffmpeg-resampler)“重采样器选项”部分 在ffmpeg-resampler(1)手册中以了解完整支持选项列表。
8.47.1 示例
- 将输入音频重新采样为44100Hz:
aresample=44100
- 通过给定时间戳拉伸/压缩样本,每秒最多赔偿1000个样本:
aresample=async=1000
8.48 areverse
反转音频片段。
警告: 此过滤器需内存缓冲整个片段,因此建议修整片段。
8.48.1 示例
- 截取片段的前5秒并反转。
atrim=end=5,areverse
8.49 arls
对第一个音频流使用第二个音频流应用递归最小二乘算法。
通过递归找到与产生误差信号(期望的第二输入音频流与实际信号第一输入音频流之间的差异)最小加权线性最小二乘成本函数相关的滤波器系数来模拟当前滤波器。
以下是接受的选项说明。
- order
设置滤波器阶数。
- lambda
设置遗忘因子。
- delta
设置初始化内部协方差矩阵的系数。
- out_mode
设置滤波器输出样本。它接受以下值:
- i
传递第一个输入。
- d
传递第二个输入。
- o
传递期望的第二输入和误差信号估计之间的差异。
- n
传递输入的第一输入和误差信号估计之间的差异。
- e
传递误差信号估计样本。
默认值是o.
- precision
设置处理样本时使用的精度。
- auto
根据其他过滤器自动选择内部样本格式。
- float
始终使用单精度浮点样本格式。
- double
始终使用双精度浮点样本格式。
8.50 arnndn
使用循环神经网络减少语音噪声。
此过滤器接受以下选项:
- model, m
设置要加载的训练模型文件。此选项始终是必需的。
- mix
设置滤波样本混入最终输出的比例。 允许范围从 -1 到 1。默认值为 1。 负值为特殊值,它们设置过滤后的噪声在最终过滤输出中保留的比例。 将此选项设置为 -1 以聆听实际从输入信号中移除的噪声。
8.50.1 命令
此过滤器支持以上所有选项作为命令.
8.51 asdr
测量音频信号与失真比。
此过滤器需要两个音频流作为输入,并输出第一个音频流。 结果以每个输入的结束时的每个通道的分贝值表示。
8.52 asetnsamples
设置每个输出音频帧的样本数。
最后一个输出包可能包含不同数量的样本,因为当输入音频信号结束时过滤器会清除所有剩余样本。
过滤器接受以下选项:
- nb_out_samples, n
设置每个输出音频帧的帧数。数量指的是每个通道的样本数。每个通道。默认值是 1024。
- pad, p
如果设置为 1,过滤器将用零填充最后一个音频帧,以便最后一帧包含与前面的帧相同数量的样本。默认值为 1。
例如,要将每帧样本数设置为 1234,并禁用最后一帧的填充,请使用:
asetnsamples=n=1234:p=0
8.53 asetrate
在不改变 PCM 数据的情况下设置采样率。 这将导致速度和音调的变化。
过滤器接受以下选项:
- sample_rate, r
设置输出采样率。默认值为 44100 Hz。
8.54 ashowinfo
显示一行包含每个输入音频帧各种信息的行。 输入音频未被修改。
显示的行包含以下形式的键值对序列键:值.
输出中显示以下值:
- n
输入帧的(顺序)编号,从 0 开始。
- pts
输入帧的展示时间戳,以时间基单位表示;时间基 depends on the filter input pad, 通常是 1/采样率。.
- pts_time
输入帧的展示时间戳以秒为单位。
- fmt
样本格式。
- chlayout
通道布局。
- rate
音频帧的采样率。
- nb_samples
帧中每个通道的样本数。
- checksum
音频数据的 Adler-32 校验和(以十六进制打印)。 对于平面音频,数据被视为所有平面被连接。
- plane_checksums
每个数据平面的 Adler-32 校验和列表。
8.55 asisdr
测量音频缩放不变信号与失真比。
此过滤器需要两个音频流作为输入,并输出第一个音频流。 结果以每个输入的结束时的每个通道的分贝值表示。
8.56 asoftclip
应用音频软剪辑。
软剪辑是一种失真效果,其中信号的振幅沿着平滑曲线饱和,而不是硬剪辑的突然形状。
此过滤器接受以下选项:
- type
设置软剪辑类型。
它接受以下值:
- hard
- tanh
- atan
- cubic
- exp
- alg
- quintic
- sin
- erf
- threshold
设置开始剪辑的阈值。默认值为 0dB 或 1。
- output
设置应用于输出的增益。默认值为 0dB 或 1。
- param
设置控制 sigmoid 函数的额外参数。
- oversample
设置过采样因子。
8.56.1 命令
此过滤器支持以上所有选项作为命令.
8.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
设置窗口重叠。允许范围是
0
到1
。默认值是0.5
.- measure
选择被测量的参数。元数据键可以 作为标志使用,默认值是all测量所有内容。none禁用所有测量。
以下是每个元数据键的列表:
- mean
- variance
- centroid
- spread
- skewness
- kurtosis
- entropy
- flatness
- crest
- flux
- slope
- decrease
- rolloff
8.58 asr
自动语音识别
此过滤器使用 PocketSphinx 进行语音识别。为了启用
此过滤器的编译,需要使用以下配置 FFmpeg--enable-pocketsphinx
.
它接受以下选项:
- rate
设置输入音频的采样率。默认值是
16000
。 这需要与语音模型匹配,否则结果会很差。- hmm
设置包含声学模型文件的字典。
- dict
设置发音字典。
- lm
设置语言模型文件。
- lmctl
设置语言模型集。
- lmname
设置要使用的语言模型。
- logfn
设置日志消息的输出。
过滤器导出识别的语音作为帧元数据。lavfi.asr.text
.
8.59 astats
显示音频通道的时间域统计信息。 统计信息被计算并显示为每个音频通道的内容,并且 如果适用,还会给出整体数值。
它接受以下选项:
- length
用于峰值和谷值 RMS 测量的短窗口长度(秒)。默认值是
0.05
(50 毫秒)。允许范围是[0 - 10]
.- metadata
-
设置元数据注入。所有元数据键都以
lavfi.astats.X
前缀开头。 其中X
是从 1 开始的通道号或字符串Overall
。默认值是禁用。可用的每个通道键是:位深度 波峰因子 DC 偏移 动态范围 熵 平坦因子 最大差异 最大电平 平均差异 最小差异 最小电平 噪声底线 噪声底线计数 无限值的数量 非数字值的数量 非正规值的数量 峰值计数 绝对峰值计数 峰值电平 RMS 差异 RMS 峰值 RMS 谷值 零交叉次数 零交叉率
以及对于
Overall
: 位深度 DC 偏移 熵 平坦因子 最大差异 最大电平 平均差异 最小差异 最小电平 噪声底线 噪声底线计数 无限值的数量 非数字值的数量 非正规值的数量 样本总数 峰值计数 绝对峰值计数 峰值电平 RMS 差异 RMS 电平 RMS 峰值 RMS 谷值例如,一个完整的键可能是
lavfi.astats.1.DC_offset
或者lavfi.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
非数字值的样本数量
- 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
零交叉率及音频样本数量
8.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
设置要处理的通道。默认值是所有可用通道。
8.60.1 命令
此过滤器支持以上所有选项作为命令.
8.61 asubcut
切除低音扬声器(超低音)频率。
此过滤器允许设置自定义、更陡的滚降曲线,比高通滤波器更突出,因此在停止频带中能更有效地降低频率内容。
过滤器接受以下选项:
- cutoff
设置截止频率,以赫兹为单位。允许范围是 2 到 200。 默认值是 20。
- order
设置过滤器阶数。可用值范围是 3 到 20。 默认值是 10。
- level
设置输入增益水平。允许范围是 0 到 1。默认值是 1。
8.61.1 命令
此过滤器支持以上所有选项作为命令.
8.62 asupercut
切除高频率。
过滤器接受以下选项:
- cutoff
设置截止频率,以赫兹为单位。允许范围是 20000 到 192000。 默认值是 20000。
- order
设置过滤器阶数。可用值范围是 3 到 20。 默认值是 10。
- level
设置输入增益水平。允许范围是 0 到 1。默认值是 1。
8.62.1 命令
此过滤器支持以上所有选项作为命令.
8.63 asuperpass
应用高阶巴特沃斯带通滤波器。
过滤器接受以下选项:
- centerf
以赫兹为单位设置中心频率。允许范围是 2 到 999999。 默认值是 1000。
- order
设置过滤器阶数。可用值范围是 4 到 20。 默认值是 4。
- qfactor
设置 Q 因数。允许范围是 0.01 到 100。默认值是 1。
- level
设置输入增益水平。允许范围是 0 到 2。默认值是 1。
8.63.1 命令
此过滤器支持以上所有选项作为命令.
8.64 asuperstop
应用高阶巴特沃斯带阻滤波器。
过滤器接受以下选项:
- centerf
设置中心频率(以赫兹为单位)。允许范围为2到999999。 默认值为1000。
- order
设置滤波器阶数。可用值范围为4到20。 默认值为4。
- qfactor
设置Q值。允许范围为0.01到100。默认值为1。
- level
设置输入增益级别。允许范围为0到2。默认值为1。
8.64.1 命令
此滤波器支持上述所有选项作为命令.
8.65 atempo
调整音频节奏。
滤波器接受一个参数——音频节奏。如果未指定,则滤波器默认采用1.0节奏。节奏必须在[0.5, 100.0]范围内。
注意,节奏大于2时会跳过一些样本而不是将它们混合进来。如果对此有任何疑虑,可以通过连接多个atempo实例实现所需的节奏倍数。
8.65.1 示例
- 将音频减慢到80%的节奏:
atempo=0.8
- 将音频加速到300%的节奏:
atempo=3
- 通过连接两个atempo实例将音频加速到300%的节奏:
atempo=sqrt(3),atempo=sqrt(3)
8.65.2 命令
此滤波器支持以下命令:
- tempo
更改滤波器的节奏缩放因子。 命令的语法是:“tempo"
8.66 atilt
对音频流应用光谱倾斜滤波器。
此滤波器可在任何指定的频带上应用任何光谱滚降坡度。
滤波器接受以下选项:
- freq
设置倾斜的中心频率(单位:赫兹)。默认值为10000赫兹。
- slope
设置倾斜的斜率方向。默认值为0。允许范围为-1到1。
- width
设置倾斜的宽度。默认值为1000。允许范围为100到10000。
- order
设置倾斜滤波器的阶数。
- level
设置输入音量级别。允许范围为0到4。 默认值为1。
8.66.1 命令
此滤波器支持上述所有选项作为命令.
8.67 atrim
修剪输入,使输出包含输入的一个连续子部分。
它接受以下参数:
- start
要保留的部分开始时间戳(以秒为单位)。即带有时间戳start的音频样本将是输出中的第一个样本。
- end
指定将被移除的第一个音频样本的时间,即紧接带有时间戳end的样本之前的音频样本将是输出中的最后一个样本。
- start_pts
与start相同,但此选项以样本而不是秒设置开始时间戳。
- end_pts
与end相同,但此选项以样本而不是秒设置结束时间戳。
- duration
输出的最大持续时间(以秒为单位)。
- start_sample
输出的第一个样本号。
- end_sample
将被移除的第一个样本号。
start, end和duration表示为时间持续时间规格;见(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
8.68 axcorrelate
计算两个输入音频流之间的归一化窗口交叉相关性。
结果样本始终在-1到1之间(包括)。 如果结果为1,则表示两个输入样本在选定片段中高度相关。 结果为0表示完全不相关。 如果结果为-1,则表示两个输入样本相位相反,即它们互相抵消。
滤波器接受以下选项:
- size
设置计算交叉相关的片段大小。 默认值为256。允许范围为2到131072。
- algo
设置交叉相关的算法。可以是
slow
或fast
或best
。 默认值为best
。快速算法假设任意给定片段的平均值始终为零,因此需要进行较少的计算。 这通常不正确,但对于典型音频流是有效的。
8.68.1 示例
- 计算立体声音频流中各通道之间的相关性:
ffmpeg -i stereo.wav -af channelsplit,axcorrelate=size=1024:algo=fast correlation.wav
8.69 bandpass
应用具有中央频率frequency和(3dB点)带宽csg的二阶巴特沃斯带通滤波器。 该选项选择恒定裙摆增益(峰值增益=Q)而不是默认值:恒定0dB峰值增益。 滤波器以每倍频程6dB(每十倍频程20dB)的速率滚降。
滤波器接受以下选项:
- frequency, f
设置滤波器的中心频率。默认值为
3000
.- csg
如果设置为1,则恒定裙摆增益。默认值为0。
- width_type, t
设置滤波器的带宽指定方法。
- h
赫兹
- q
Q-factor
- o
倍频程
- s
斜率
- k
千赫兹
- width, w
以width_type单位指定滤波器的带宽。
- 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处理的块大小。如果将该值设置为足够大的值(高于当接近零值时截断的冲击响应长度)过滤将变为线性相位,否则如果不够大将产生不良伪影。
注意,当设置为非零值时,过滤器延迟将恰好为该样本数。
8.69.1 命令
此滤波器支持以下命令:
- frequency, f
更改带通频率。 命令的语法是:“frequency"
- width_type, t
更改带通width_type。 命令的语法是:“width_type"
- width, w
更改带通带宽。 命令的语法是:“width"
- mix, m
更改带通混合。 命令的语法是:“mix"
8.70 bandreject
应用具有中央频率frequency和(3dB点)带宽width的二阶巴特沃斯带阻滤波器。 滤波器以每倍频程6dB(每十倍频程20dB)的速率滚降。
滤波器接受以下选项:
- frequency, f
设置滤波器的中心频率。默认值为
3000
.- width_type, t
设置滤波器的带宽指定方法。
- h
赫兹
- q
Q-factor
- o
倍频程
- s
斜率
- k
千赫兹
- width, w
以width_type单位指定滤波器的带宽。
- 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处理的块大小。如果将该值设置为足够大的值(高于当接近零值时截断的冲击响应长度)过滤将变为线性相位,否则如果不够大将产生不良伪影。
注意,当设置为非零值时,过滤器延迟将恰好为该样本数。
8.70.1 命令
此滤波器支持以下命令:
- frequency, f
更改带阻频率。 命令的语法是:“frequency"
- width_type, t
更改带阻width_type。 命令的语法是:“width_type"
- width, w
更改带阻带宽。 命令的语法是:“width"
- mix, m
更改带阻混合。 命令的语法是:“mix"
8.71 bass, lowshelf
使用具有响应类似于标准高保真音调控制的二阶搁架滤波器提升或削减音频的低频(低音)。这也被称为搁架均衡(EQ)。
滤波器接受以下选项:
- gain, g
在0赫兹处给出增益。其有效范围约为-20 (用于大幅削减)到+20(用于大幅增强)。 使用正增益时需注意剪辑。
- frequency, f
设置滤波器的中心频率,因此可以用于扩展或减少要增强或削减的频率范围。 默认值为
100
赫兹。- width_type, t
设置滤波器的带宽指定方法。
- h
赫兹
- q
Q-factor
- o
倍频程
- s
斜率
- k
千赫兹
- width, w
确定滤波器搁架过渡的陡度。
- poles, p
设置极点数。默认值为2。
- 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处理的块大小。如果将该值设置为足够大的值(高于当接近零值时截断的冲击响应长度)过滤将变为线性相位,否则如果不够大将产生不良伪影。
注意,当设置为非零值时,过滤器延迟将恰好为该样本数。
8.71.1 命令
此滤波器支持以下命令:
- frequency, f
更改低频频率。 命令的语法是:“frequency"
- width_type, t
更改低频宽度类型。 命令的语法是:“width_type"
- width, w
更改低频宽度。 命令的语法是:“width"
- gain, g
更改低频增益。 命令的语法是:“gain"
- mix, m
更改低频混合。 命令的语法是:“mix"
8.72 biquad
应用具有给定系数的双二阶IIR滤波器。 其中b0, b1, b2和a0, a1, a2分别为分子和分母系数。 并且channels, c指定要过滤的通道,默认情况下过滤所有 可用通道。
8.72.1 命令
此滤波器支持以下命令:
- a0
- a1
- a2
- b0
- b1
- b2
更改双二阶参数。 命令的语法是:“value"
- 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处理的块大小。如果该值设置得足够高(高于当接近零值时截断的脉冲响应长度),滤波将变为线性相位;否则,如果设置得不够大,则只会产生讨厌的伪影。
请注意,当设置为非零值时,滤波延迟正好是这个样本数。
8.73 bs2b
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
截止频率(单位为Hz)。
- feed
馈入级别(单位为Hz)。
8.74 channelmap
将输入声道重新映射到新位置。
它接受以下参数:
- map
将输入声道映射到输出声道。参数是由'|'分隔的映射列表,每个映射为
输入声道-输出声道
或者输入声道
形式。输入声道可以是输入声道的名称(例如FL表示前左声道)或其在输入声道布局中的索引。输出声道是输出声道的名称或其在输出声道布局中的索引。如果输出声道未指定,则隐式为索引,从零开始,随后每个映射依次递增。不允许混合不同类型的映射,否则会导致解析错误。- channel_layout
输出流的声道布局。如果未指定,滤波器将根据输出声道名称或映射数量进行猜测。猜测出的布局不一定包含按映射顺序排列的声道。
如果没有映射存在,滤波器将隐式地将输入声道映射到输出声道,保留索引。
8.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
8.75 channelsplit
将输入音频流的每个声道拆分为单独的输出流。
它接受以下参数:
- channel_layout
输入流的声道布局。默认为"立体声"。
- channels
描述要提取为单独输出流的声道布局,或"all"表示将每个输入声道提取为单独的流。默认为"all"。
选择输入声道布局中不存在的声道会导致错误。
8.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文件中提取LFE声道:
ffmpeg -i in.wav -filter_complex 'channelsplit=channel_layout=5.1:channels=LFE[LFE]' -map '[LFE]' lfe.wav
8.76 chorus
为音频添加合唱效果。
可以让单人声听起来像合唱,亦可应用于乐器。
合唱效果类似于带有短延迟的回声效果,但回声的延迟是恒定的,而合唱的延迟是通过正弦或三角调制变化的。调制深度定义了延迟之前或之后播放的范围。因此,延迟的声音会听起来更慢或更快,即延迟的声音围绕原始声音微调,就像合唱中一些声乐略微跑调一样。
它接受以下参数:
- in_gain
设置输入增益。默认是0.4。
- out_gain
设置输出增益。默认是0.4。
- delays
设置延迟。典型延迟在40ms到60ms之间。
- decays
设置衰减。
- speeds
设置速度。
- depths
设置深度。
8.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
8.77 compand
压缩或扩展音频的动态范围。
它接受以下参数:
- attacks
- decays
一个按秒列出的时间列表,用于每个声道,在该时间内输入信号的瞬时电平被平均以确定其音量。上升指的是音量增加,而下降指的是音量减少。对于大多数情况,上升时间(音频变大时的响应)应该短于下降时间,因为人耳对突然的高音更敏感。典型的上升值为0.3秒,下降值为0.8秒。如果指定的上升和下降数量少于声道数量,最后设置的上升/下降将用于所有剩余的声道。
- points
用于传递函数的点列表,相对于最大信号幅度以dB表示。每个关键点列表必须使用以下语法定义:
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),当开始过滤时假定此值。这允许用户最初提供一个标称电平,从而防止在动态范围控制开始前对初始信号电平应用非常大的增益。对于初始较安静的音频,典型值为-90dB。默认为0。
- delay
设置延迟时间(单位秒)。输入音频会立即被分析,但是在传递到音量调节器前会被延迟。指定大约等于上升/下降时间的延迟可以使滤波器在预测模式下运行,而不是响应模式。默认为0。
8.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
- 从-6 dB开始的2:1压缩:
compand=points=-80/-80|-6/-6|0/-3.8|20/3.5
- 从-9 dB开始的2:1压缩:
compand=points=-80/-80|-9/-9|0/-5.3|20/2.9
- 从-12 dB开始的2:1压缩:
compand=points=-80/-80|-12/-12|0/-6.8|20/1.9
- 从-18 dB开始的2:1压缩:
compand=points=-80/-80|-18/-18|0/-9.8|20/0.7
- 从-15 dB开始的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
- 硬限制在-6 dB:
compand=attacks=0:points=-80/-80|-6/-6|20/-6
- 硬限制在-12 dB:
compand=attacks=0:points=-80/-80|-12/-12|20/-12
- 硬噪声门在-35 dB:
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
8.78 compensationdelay
补偿延迟线是一种基于度量的延迟,用于补偿麦克风或扬声器的位置差异。
例如,您录制了一把吉他,并在不同位置放置了两个麦克风。因为声波的传播速度在正常条件下是固定的,麦克风之间的相位可能会因它们的位置和相对位置而不同。最佳的声音混音可以在这些麦克风同步(相位一致)时实现。需要注意的是,麦克风之间约30厘米的距离会使一个麦克风捕获的信号与另一个麦克风的信号处于反相位。这样最终混音会听起来情绪低落。此滤波器通过为每个麦克风轨道添加不同的延迟来解决相位问题,使它们同步。
最佳效果可以通过选取一条轨道作为基准,并与它逐个同步其他轨道来实现。记住,同步/延迟容限也取决于采样率。更高的采样率将提供更多的容许度。
滤波器接受以下参数:
- mm
设置毫米距离。这是细调的补偿距离。默认值为0。
- cm
设置厘米距离。这是松调整距离的补偿距离。默认值为0。
- m
设置米距离。这是严格调整距离的补偿距离。默认值为0。
- dry
设置干信号量。即未处理信号的量。默认值为0。
- wet
设置湿信号量。即处理后信号的量。默认值为1。
- temp
设置温度(单位摄氏度)。这是环境的温度。默认值为20。
8.78.1 命令
此滤波器支持以上所有选项作为命令.
8.79 crossfeed
应用耳机交叉混合滤波器。
交叉混合是在立体声音频录音的左右声道之间进行混合的过程。 它主要用于减少低频的极端立体声分离。
目的是为听众产生更类似扬声器的声音。
滤波器接受以下选项:
- 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处理的块大小。如果该值设置为足够大的值(大于脉冲响应长度,当达到接近零值时被截断),滤波将成为线性相位,否则如果不足够大,只会产生讨厌的伪影。
请注意,当设置为非零值时,滤波延迟正好是此样本数量。
8.79.1 命令
此滤波器支持以上所有选项作为命令.
8.80 crystalizer
一种简单的音频噪声锐化算法。
此滤波器线性增加每个音频样本之间的差异。
滤波器接受以下选项:
- i
设置效果的强度(默认值:2.0)。必须在-10.0到0(未改变的声音)到10.0(最大效果)范围内。 要反向滤波使用负值。
- c
启用剪辑。默认情况下启用。
8.80.1 命令
此滤波器支持以上所有选项作为命令.
8.81 dcshift
对音频应用直流偏移。
这对于消除音频中的直流偏移(可能由录制链中的硬件问题引起)非常有用。直流偏移的影响是减小动态余量从而降低音量。可使用astats滤波器来确定信号是否存在直流偏移。
- shift
设置直流偏移,允许的范围是[-1, 1]。它表示音频的偏移量。
- limitergain
可选。值应该远小于1(例如0.05或0.02),用于防止音频剪辑。
8.82 deesser
对音频样本应用去齿音处理。
- i
设置触发去齿音的强度。允许范围是从0到1。 默认值是0。
- m
设置声音高音部分的压制量。允许范围是从0到1。 默认值是0.5。
- f
设置去齿音时要保留的原始频率内容的比例。允许范围是从0到1。 默认值是0.5。
- s
设置输出模式。
它接受以下值:
- i
不改变通过的输入。
- o
过滤掉齿音的通过。
- e
仅通过齿音。
默认值是o.
8.83 对话增强
增强立体声音频中的对话。
此滤镜接受立体声输入并生成环绕声(3.0 声道)输出。 新生成的前置中心声道包含经过增强的原始可用在两个立体声声道中的语音对话。 此滤镜输出的前置左声道和前置右声道与立体声输入相同。
滤镜接受以下选项:
- original
设置在前置中心声道输出中保留的原始中心因子。 允许范围是从0到1。默认值是1。
- enhance
设置在前置中心声道输出中放大的对话增强因子。 允许范围是从0到3。默认值是1。
- voice
设置语音检测因子。 允许范围是从2到32。默认值是2。
8.83.1 命令
此滤镜支持以上所有选项作为命令.
8.84 动态范围计
测量音频动态范围。
动态范围值(DR)为14及以上的是非常具有动态性的素材。DR为8到13的素材被认为是中度动态性。而低于8的素材动态性极差并高度压缩。
滤镜接受以下选项:
- length
设置用于将音频分割成长度相等的片段的窗口长度,以秒为单位。 默认是3秒。
8.85 动态音频归一化
动态音频归一化器。
此滤镜对输入音频应用一定的增益,以将其峰值幅度提升到目标电平(例如0 dBFS)。然而,与更“简单”的归一化算法相比,动态音频归一化器会*动态地*根据输入音频重新调整增益因子。 这使得能够对音频的“静音”部分应用额外的增益,同时避免失真或剪切“响亮”部分。换句话说:动态音频归一化器将“平衡”静音和响亮部分的音量,以使每个部分的音量达到相同的目标电平。然而,请注意,动态音频归一化器在达到这一目标时*不会*应用“动态范围压缩”,而是保持每个音频部分内的动态范围的100%。
- framelen, f
设置帧长度,单位为毫秒。范围是从10到8000毫秒。 默认是500毫秒。 动态音频归一化器以小块方式处理输入音频,这些小块称为帧。这是必要的,因为单个样本值的峰值幅度没有意义。相反,我们需要为连续的样本值序列确定峰值幅度。 虽然“标准”的归一化器通常会使用整个文件的峰值幅度,但动态音频归一化器会为每个帧单独确定峰值幅度。帧的长度以毫秒为单位指定。默认情况下,动态音频归一化器使用500毫秒的帧长度,这被发现对大多数文件效果良好。 请注意,帧的确切长度(以样本数表示)将根据个别输入音频文件的采样速率自动确定。
- gausssize, g
设置高斯滤波器窗口大小。范围是从3到301,必须是奇数。默认是31。 高斯平滑滤波器的窗口大小可能是动态音频归一化器最重要的参数。
window size
滤波器的窗口大小以帧为单位指定,中心位于当前帧。为便于操作,必须是奇数。因此,默认值31包括当前帧,以及前15帧和后15帧。更大的窗口会产生更强的平滑效果,从而导致增益变化较少,即增益适应较慢。相反,较小的窗口会产生较弱的平滑效果,从而导致增益变化更多,即增益适应更快。 换句话说,增加此值会使动态音频归一化器更像“传统”的归一化滤镜。相反,减少此值会使动态音频归一化器更像动态范围压缩器。- peak, p
设置目标峰值。这指定了归一化音频输入的最高允许幅度水平。此滤镜将尽可能接近目标峰值幅度,但同时确保归一化信号永远不会超过峰值幅度。 帧的最大局部增益因子直接由目标峰值幅度决定。默认值是0.95,因此保留了5%的裕量。 不建议超过此值。
- maxgain, m
设置最大增益因子。范围是从1.0到100.0。默认是10.0。 动态音频归一化器会为每个输入帧确定最大可能的(局部)增益因子,即不会导致剪切或失真的最大增益因子。最大增益因子由帧中幅度最高的样本决定。然而,动态音频归一化器还会通过预定的(全局)最大增益因子的值限制帧的最大增益因子。这是为了避免在“静音”或几乎静音帧中出现过高的增益因子。 默认情况下,最大增益因子是10.0,对于大多数输入,默认值应该足够,通常不建议增加此值。然而,对于总体音量极低的输入,可能需要允许更高的增益因子。然而,动态音频归一化器不会简单地应用“硬”阈值(即剪切阈值以上的值)。相反,将应用“Sigmoid”阈值函数,以确保增益因子逐渐接近阈值,但从不超过该值。
- targetrms, r
设置目标RMS。范围是从0.0到1.0。默认是0.0 - 禁用。 默认情况下,动态音频归一化器执行“峰值”归一化。这意味着每个帧的最大局部增益因子仅由该帧中幅度最高的样本定义。 这种方式会使样本得到尽可能多的放大,同时不会超过最大信号电平,即不会剪切。 然而,动态音频归一化器也可以选择考虑帧的均方根(RMS)。在电气工程中,RMS通常用于确定时变信号的功率。因此,RMS被认为是信号“感知响度”的更好近似,而不仅仅是观察信号的峰值幅度。因此,通过将所有帧调整为恒定的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且<1的值会使增益调整更不保守,例如当framelen选项设置为较小值时, 如果framelen选项值得到了非零重叠的补偿,那么相较于零重叠情况,增益调整 在时间轴上会更加平滑。
- curve, v
指定峰值映射曲线公式,用于计算应用于帧的增益。 帧增益的最大输出值仍受此前提到的其他选项限制。
表达式可以包含以下常量:
- ch
当前通道编号
- sn
当前采样编号
- nb_channels
通道数量
- t
以秒为单位的时间戳
- sr
采样率
- p
当前帧峰值
8.85.1 命令
此滤镜支持上述所有选项作为命令.
8.86 耳蜡滤镜
使通过耳机收听的音频更易于聆听。
此滤镜为44.1kHz立体声(即音频CD格式)音频添加“提示”, 使通过耳机收听时,立体声图像从听者内耳(耳机标准)移至外耳并位于听者面前 (扬声器标准)。
移植自SoX。
8.87 均衡器
应用双极峰值均衡(EQ)滤镜。使用此滤镜,可以增加或减少信号 在选定频率及其附近的水平,同时保留(与带通和带阻滤波器不同) 其他频率信号水平不变。
为了生成复杂的均衡曲线,可以多次用到此滤镜,每次 设置不同的中心频率。
滤镜接受以下选项:
- frequency, f
设置滤镜的中心频率(单位:Hz)。
- width_type, t
设置指定滤波器带宽的方法。
- h
Hz
- q
品质因数
- o
八度
- s
坡度
- k
千赫兹
- width, w
以width_type单位指定滤波器带宽。
- gain, g
设置所需的增益或衰减(单位:dB)。 使用正增益时需注意裁剪。
- 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处理的块大小。如果此值设置为较高值 (高于冲激响应长度,当达到接近零值时被截断)过滤会 变为线性相位,否则如果不够大则仅会产生难看的伪影。
注意,当设置为非零值时,滤镜延迟将正好是此样本数。
8.87.1 示例
- 在1000 Hz处衰减10 dB,带宽为200 Hz:
equalizer=f=1000:t=h:width=200:g=-10
- 在1000 Hz处应用2 dB增益,带宽Q值为1,
在100 Hz处衰减5 dB,带宽Q值为2:
equalizer=f=1000:t=q:w=1:g=2,equalizer=f=100:t=q:w=2:g=-5
8.87.2 命令
此滤镜支持以下命令:
- frequency, f
改变均衡器频率。 命令语法为:"频率"
- width_type, t
改变均衡器width_type。 命令语法为:"宽度类型"
- width, w
改变均衡器宽度。 命令语法为:"宽度"
- gain, g
改变均衡器增益。 命令语法为:"增益"
- mix, m
改变均衡器混合。 命令语法为:"混合"
8.88 附加立体声
线性增加左右通道之间的差异,从而为播放添加某种“现场”效果。
滤镜接受以下选项:
- m
设置差异系数(默认值:2.5)。 0.0表示单声道声音(左右通道平均值),1.0表示声音保持不变, -1.0时左右通道将交换。
- c
启用裁剪。默认情况下已启用。
8.88.1 命令
此滤镜支持上述所有选项作为命令.
8.89 firequalizer滤镜
通过任意频率响应应用FIR均衡。
滤镜接受以下选项:
- gain
设置增益曲线公式(单位:dB)。表达式可以包含变量:
- f
评估频率
- sr
采样率
- ch
通道编号,在禁用多通道评估时设置为0
- chid
通道ID,参见libavutil/channel_layout.h,在禁用多通道 评估时设置为第一通道ID
- 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
三项连续1阶导数努特尔窗口
- mnuttall3
最小三项不连续努特尔窗口
- nuttall
四项连续1阶导数努特尔窗口
- bnuttall
最小四项不连续努特尔(布莱克曼-努特尔)窗口
- bharris
布莱克曼-哈里斯窗口
- tukey
土基窗口
- fixed
如果启用,则使用固定数量的音频样本。这在使用大延迟过滤时能 显著提高速度。默认情况下禁用。
- multi
启用多通道增益评估。默认情况下禁用。
- zero_phase
通过减去时间戳以补偿延迟来启用零相位模式。 默认情况下禁用。
- scale
设置用于增益的比例。可接受的值为:
- linlin
线性频率,线性增益
- linlog
线性频率,对数增益(单位:dB)(默认值)
- loglin
对数频率(在20 Hz为0的八度比例),线性增益
- loglog
对数频率,对数增益
- dumpfile
设置用于导出的文件,适用于gnuplot。
- dumpscale
设置导出文件的比例。可接受值与比例选项相同。 默认值为linlog。
- fft2
启用使用复杂FFT的2通道卷积。这显著提高速度。 默认情况下禁用。
- min_phase
启用最小相位冲激响应。默认情况下禁用。
8.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
8.90 镶边效果滤镜
对音频应用镶边效果。
滤镜接受以下选项:
- delay
设置基本延迟(单位:毫秒)。范围从0到30。默认值为0。
- depth
设置附加扫描延迟(单位:毫秒)。范围从0到10。默认值为2。
- regen
设置再生百分比(延迟信号反馈)。范围从-95到95。 默认值为0。
- width
设置延迟信号与原始信号混合的百分比。范围从0到100。 默认值为71。
- speed
设置每秒扫频次数(单位:Hz)。范围从0.1到10。默认值为0.5。
- shape
设置扫波形,可以是三角形或正弦形。 默认值为正弦形.
- phase
设置扫波的多通道百分比偏移。范围从0到100。 默认值为25。
- interp
设置延迟线内插,可以是线性或二次。 默认值为线性.
8.91 Haas效应滤镜
在音频中应用Haas效应。
注意,这最适合应用于单声道信号。 对单声道信号应用此滤镜时,可以赋予某些方向性并延展其立体声图像。
滤镜接受以下选项:
- 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
改变右相位。默认情况下已启用。
8.92 HDCD滤镜
解码高定义兼容数字(HDCD)数据。一个嵌入HDCD代码的16位PCM流扩展为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
即使没有信号峰值扩展,也总是延伸超过-3dBFS的峰值。
- analyze_mode
用稳固的音调替换音频并调整音调以信号解码过程中某些特定方面。 可加载输出文件到音频编辑器中与原始音频一起帮助分析。
analyze_mode=pe:force_pe=true
可用于查看所有超过峰值扩展级别的样本。模式包括:
- ‘0, off’
禁用
- ‘1, lle’
每个样本的增益调整级别
- ‘2, pe’
发生峰值扩展的样本
- ‘3, cdt’
代码检测计时器激活的样本
- ‘4, tgm’
目标增益在通道之间不匹配的样本
8.93 耳机滤镜
通过耳机进行双耳聆听,应用头相关传输函数(HRTFs)创建用户周围的虚拟 扬声器。通过附加的流提供HRIR,每个通道需要一个立体声输入流。
滤镜接受以下选项:
- map
设置用于卷积的输入流映射。 参数是一个以’|’分隔的频道名称列表,以给定的附加流输入顺序。 这也指定了输入流数量。输入流数量必须不少于第一流中的频道数量加一。
- gain
设置应用于音频的增益。值以dB为单位。默认值为0。
- type
设置处理类型。可以为时间或频率. 时间为 在时域中处理音频,速度较慢。频率为在频域中处理音频,速度较快。 默认值为频率.
- lfe
自定义LFE通道的增益设置。值以dB为单位。默认为0。
- size
设置将在一次处理的帧大小(样本数)。默认值为102460,000。允许范围从1024到96000。
- hrir
设置HRIR流的格式。 默认值为立体声。可选值为多通道。 如果值设置为立体声, 额外流的数量应大于或等于第一个输入流中的输入通道数量。此外,每个额外流应具有立体声通道数量。如果将值设置为多通道, 额外流的数量应准确为一个。此外,额外流的输入通道数量应等于或大于第一个输入流的通道数量的两倍。
8.93.1 示例
- 使用带有 amovie 滤镜的 wav 文件作为 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
- 使用带有 amovie 滤镜的 wav 文件作为 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
8.94 高通
应用具有 3dB 转折点频率的高通滤波器。 滤波器可以是单极的,也可以是双极的(默认)。 滤波器以每极每倍频程 6dB(每极每十倍频程 20dB)的速度衰减。
过滤器接受以下选项:
- frequency, f
设置频率(以 Hz 为单位)。 默认为 3000。
- poles, p
设置极点数量。 默认为 2。
- width_type, t
设置方法以指定过滤器的带宽。
- h
赫兹
- q
品质因数
- o
倍频程
- s
斜率
- k
千赫兹
- width, w
以 width_type 单位指定滤波器的带宽。 仅适用于双极滤波器。 默认值为 0.707q 并提供 Butterworth 响应。
- 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 处理的块大小。如果此值设置得足够高(高于在接近零值时截断的脉冲响应长度),过滤将变为线性相位,否则如果不够大,它将仅产生讨厌的伪影。
请注意,当设置为非零值时,滤波延迟恰好为指定的采样数量。
8.94.1 命令
此过滤器支持以下命令:
- frequency, f
更改高通频率。命令的语法是:"频率"
- width_type, t
更改高通带宽类型。命令的语法是:"带宽类型"
- width, w
更改高通带宽。命令的语法是:"带宽"
- mix, m
更改高通混合。命令的语法是:"混合"
8.95 合并
将多个输入流连接到一个多通道流。
它接受以下参数:
- inputs
输入流的数量。 默认值为 2。
- channel_layout
期望的输出通道布局。 默认是立体声。
- map
从输入映射通道到输出。参数是一个用 "|" 分隔的映射列表,每个映射的格式为
输入索引.输入通道-输出通道
。输入索引是输入流的从零开始的索引。输入通道可以是输入通道的名称(例如 FL 表示前左)或其在指定输入流中的索引。输出通道是输出通道的名称。
当未明确指定映射时,过滤器将尝试猜测映射。首先尝试找到未使用的匹配输入通道,如果失败,则选择第一个未使用的输入通道。
合并 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
8.96 ladspa
加载一个 LADSPA (Linux 音频开发者简易插件 API) 插件。
要启用此过滤器的编译,需要用以下配置来构建 FFmpeg:--enable-ladspa
.
- file, f
指定要加载的 LADSPA 插件库的名称。如果环境变量
LADSPA_PATH
已定义,则会在这些目录中搜索 LADSPA 插件,这些目录由一个冒号分隔的列表指定LADSPA_PATH
,否则会在标准 LADSPA 路径中按此顺序搜索插件:HOME/.ladspa/lib/, /usr/local/lib/ladspa/, /usr/lib/ladspa/.- plugin, p
指定库中的插件。有些库只包含一个插件,而其他则包含许多插件。如果未设置此选项,过滤器将列出指定库中所有可用的插件。
- controls, c
设置由零个或多个浮点值组成的控制列表,这些值通过 '|' 分隔,用于确定加载的插件的行为(例如延迟、阈值或增益)。 控制需要使用以下语法定义:c0=值0|c1=值1|c2=值2|..., 其中值i是第 i-个控制设置的值。 或者,它们也可以使用以下语法定义:值0|值1|值2|..., 其中值i是第 i-个控制设置的值。 如果controls设置为
help
,则会打印所有可用控制及其有效范围。- sample_rate, s
指定采样率,默认为 44100。仅在插件没有输入时使用。
- nb_samples, n
设置每个输出帧中每通道的样本数量,默认为 1024。仅在插件没有输入时使用。
- duration, d
设置生成的音频的最小持续时间。参见(ffmpeg-utils) ffmpeg-utils(1) 手册中的时间持续时间部分了解可接受的语法。 请注意,生成的持续时间可能大于指定的持续时间,因为始终在完整帧的末尾裁剪生成的音频。 如果未指定或表示的持续时间为负值,则音频将被假定为无限生成。 仅在插件没有输入时使用。
- latency, l
启用延迟补偿,默认情况下禁用。 仅在插件有输入时使用。
8.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-plugins(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
SWH Plugins
集合中的快速前视限制器将音量增加 20dB: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
8.96.2 命令
此过滤器支持以下命令:
- cN
修改第 N个控制值。
如果指定的值无效,将被忽略并保留之前的值。
8.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。 如果任何这些条件未满足,归一化模式将回退到动态。 选项为true
或false
默认值为true
.- dual_mono
将单声道输入文件视为“双单声道”。 如果单声道文件是在立体声系统上播放的,其 EBU R128 测量将会在感知上不正确。 如果设置为
true
,此选项将补偿这一效果。 多通道输入文件不会受到此选项影响。 选项为 true 或 false。 默认值为 false。- print_format
设置统计信息的打印格式。选项为 summary、json 或 none。 默认为 none。
8.98 低通
应用具有 3dB 转折点频率的低通滤波器。 滤波器可以是单极,也可以是双极(默认)。 滤波器的衰减率为每极每倍频程 6dB(每极每十倍频程 20dB)。
过滤器接受以下选项:
- frequency, f
设置频率(以 Hz 为单位)。 默认为 500。
- poles, p
设置极点数量。 默认为 2。
- width_type, t
设置方法以指定过滤器的带宽。
- h
赫兹
- q
品质因数
- o
倍频程
- s
斜率
- k
千赫兹
- width, w
以 width_type 单位指定滤波器的带宽。 仅适用于双极滤波器。 默认值为 0.707q 并提供 Butterworth 响应。
- 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 处理的块大小。如果此值设置得足够高(高于在接近零值时截断的脉冲响应长度),过滤将变为线性相位,否则如果不够大,它将仅产生讨厌的伪影。
请注意,当设置为非零值时,滤波延迟恰好为指定的采样数量。
8.98.1 示例
- 仅对 LFE 通道进行低通处理,如果不存在 LFE,它将不执行任何操作:
lowpass=c=LFE
8.98.2 命令
此过滤器支持以下命令:
- frequency, f
更改低通频率。命令的语法是:"频率"
- width_type, t
更改低通带宽类型。命令的语法是:"带宽类型"
- width, w
更改低通带宽。命令的语法是:"带宽"
- mix, m
更改低通混合。命令的语法是:"混合"
8.99 lv2
加载一个 LV2 (LADSPA 版本 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) 手册中的时间持续部分有关接受的语法。 请注意,生成的持续时间可能会大于指定持续时间,因为生成的音频总是在完整帧的末尾被剪切。如果未指定或表达的持续时间为负数,则假定音频将永远生成。仅在插件没有输入时使用。
8.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
8.99.2 命令
此滤镜支持所有由插件作为命令导出的选项。
8.100 mcompand
多波段压缩或扩展音频的动态范围。
输入音频被分成多个频段,使用 4 阶 Linkwitz-Riley IIR。这类似于扬声器的分频器,并在没有压缩器动作时产生平坦的频率响应。
它接受以下参数:
- args
此选项语法为: attack,decay,[attack,decay..] soft-knee points crossover_frequency [delay [initial_volume [gain]]] | attack,decay ... 有关每个项目的解释,请参考 compand 滤镜文档。
8.101 pan
以特定增益级别混合通道。滤镜接受输出通道布局以及一组通道定义。
此滤镜也设计用于高效地重新映射音频流的通道。
滤镜接受以下形式的参数:l|outdef|outdef|..."
- l
输出通道布局或通道数
- outdef
输出通道规范,格式为:out_name=[gain*]in_name[(+-)[gain*]in_name...]"
- out_name
要定义的输出通道,可以是通道名称(FL、FR 等)或通道编号(c0、c1 等)
- gain
通道的乘法系数,1 表示音量未更改
- in_name
要使用的输入通道,详情请参阅 out_name;无法混合命名和编号输入通道
如果用‘<’替换通道规范中的‘=’,则该规范的增益将重新归一化,使总和为 1,从而避免剪辑噪音。
8.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”选项),除非您有非常具体的需求。
8.101.2 重新映射示例
通道重新映射的有效性取决于满足以下条件:
- 增益系数为零或一,
- 每个输出通道仅对应一个输入,
如果满足所有这些条件,滤镜将通知用户(“检测到纯通道映射”),并使用优化且无损的方法进行重新映射。
例如,如果您有一个 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"
8.102 replaygain
ReplayGain 扫描滤镜。此滤镜将音频流作为输入并原样输出。
在过滤结束时显示track_gain
和track_peak
.
滤镜接受以下导出的只读选项:
- track_gain
在流结束时导出的轨道增益,单位为 dB。
- track_peak
在流结束时导出的轨道峰值。
8.103 resample
转换音频样本格式、采样率和通道布局。并不针对直接使用设计。
8.104 rubberband
使用 librubberband 应用时间拉伸和音调移调。
要启用此滤镜的编译,您需要配置 FFmpeg,方法为--enable-librubberband
.
滤镜接受以下选项:
- tempo
设置节奏缩放因子。
- pitch
设置音高缩放因子。
- transients
设置瞬态检测器。 可能的值有:
- 清晰
- 混合
- 平滑
- detector
设置检测器。 可能的值有:
- 复合
- 打击乐
- 柔和
- phase
设置相位。 可能的值有:
- 层流
- 独立
- window
设置处理窗口大小。 可能的值有:
- 标准
- 短
- 长
- smoothing
设置平滑。 可能的值有:
- 关闭
- 开启
- formant
启用移调时的共振腔保留。 可能的值有:
- 移调
- 保留
- pitchq
设置音调质量。 可能的值有:
- 质量
- 速度
- 一致性
- channels
设置通道。 可能的值有:
- 分开
- 一起
8.104.1 命令
此滤镜支持以下命令:
- tempo
更改滤镜节奏缩放因子。 命令语法为:tempo"
- pitch
更改滤镜音高缩放因子。 命令语法为:pitch"
8.105 sidechaincompress
此滤镜类似于普通压缩器,但具有使用第二输入信号压缩检测信号的能力。 它需要两个输入流,并返回一个输出流。 第一个输入流将根据第二个流的信号进行处理。 然后,过滤后的信号可以在后续处理阶段通过其他滤镜进行过滤。参见pan和amerge滤镜。
该滤镜接受以下选项:
- level_in
设置输入增益。默认值为 1。范围是 0.015625 到 64。
- mode
设置压缩器操作模式。可以是
upward
或downward
。 默认值为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。
8.105.1 命令
此滤镜支持上述所有选项作为命令.
8.105.2 示例
- 完整 ffmpeg 示例,取 2 个音频输入,第一个输入根据第二个输入的信号被压缩,稍后压缩信号与第二输入合并:
ffmpeg -i main.flac -i sidechain.flac -filter_complex "[1:a]asplit=2[sc][mix];[0:a][sc]sidechaincompress[compr];[compr][mix]amerge"
8.106 sidechaingate
侧链门像普通的(宽带)门一样工作,但能够在将信号发送到增益减小阶段之前对其进行过滤。 通常,门使用全范围信号检测超过阈值的水平。例如:如果从侧链信号中切除所有低频,门只有在未出现足够的高音时才会降低音轨的音量。通过此技术,您可以减少自然鼓的共振或从重失真吉他中移除“隆隆声”的静音音符。
该滤镜接受以下选项:
- level_in
设置过滤前的输入电平。 默认值为 1。允许范围是 0.015625 到 64。
- mode
设置操作模式。可以是
upward
或downward
。 默认值是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
选择是否使用所有通道的平均电平或更响的通道影响减少。 默认值是平均值。 可以是平均或最大值。
- level_sc
设置侧链增益。 默认值是 1。 范围从 0.015625 到 64。
8.106.1 命令
此滤镜支持上述所有选项作为命令.
8.107 silencedetect
检测音频流中的静音。
当检测到输入音频音量小于或等于噪声容差值,并且持续时间大于或等于最低检测噪声持续时间时,此滤镜会记录一个消息。
打印的时间和持续时间以秒为单位。lavfi.silence_start
文lavfi.silence_start.X
件中的元数据键将设置在第一个时间戳等于或超过检测持续时间的帧上,并包含静音开始帧的时间戳。
文lavfi.silence_duration
元lavfi.silence_duration.X
和lavfi.silence_end
件lavfi.silence_end.X
数据键将在静音后的第一个帧上设置。如果mono启用,并且每个通道被单独评估,则使用后缀元数据键,而.X
对应于通道编号。X
通道编号。
滤镜接受以下选项:
- noise, n
设置噪声容差。可以以 dB 指定(如果在指定值后附加“dB”)或幅度比率。默认值为 -60dB 或 0.001。
- duration, d
设置静音持续时间以进行通知(默认值为 2 秒)。请参阅(ffmpeg-utils) ffmpeg-utils(1) 手册中的时间持续部分有关接受的语法。
- mono, m
单独处理每个通道,而不是组合的。默认值为禁用。
8.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 -
8.108 silenceremove
删除音频开头、中间或结尾的静音。
滤镜接受以下选项:
- start_periods
此值用于指示音频开头是否应被修剪。值为0表示不修剪开头的静音。当指定非零值时,将修剪音频,直到找到非静音部分。通常情况下,当修剪音频开头的静音时开始周期将是
1
但可以增加到更高的值以修剪到指定计数的非静音周期。默认值是0
.- start_duration
指定在停止修剪音频之前需要检测到非静音的时间量。通过增加持续时间,可以将短暂的噪音处理为静音并修剪掉。默认值是
0
.- start_threshold
表示应将什么样的样本值视为静音。对于数字音频,可以选择
0
但对于模拟录音,可能需要增加该值来处理背景噪音。可以用分贝(如果指定值后附有“dB”)或振幅比值来指示。默认值是0
.- start_silence
指定修剪后开头保留的静音的最大时间长度。默认值是0,即修剪掉所有检测到的静音样本。
- start_mode
指定多声道音频开头结束静音检测的模式。可以是任何或者所有。默认值是任何。 使用任何时,任何通道中被检测为非静音的样本将触发音频流开头的静音修剪结束。 使用所有时,仅当每个通道的每个样本都被检测为非静音时才会触发音频流开头的静音修剪结束,使用有限。
- stop_periods
设置从音频结尾修剪静音的计数值。当指定正值时,将修剪音频,直到找到指定的静音周期。 要从文件中间移除静音,请指定一个停止周期为负值。此值将被视为正值,并用于指示效果应根据停止周期重新开始处理,使其适用于移除音频中间的静音周期。 默认值是
0
.- stop_duration
指定必须存在的静音持续时间,以确保音频不再被复制。通过指定更长的持续时间,可以在音频中保留所需要的静音。 默认值是
0
.- stop_threshold
与start_threshold相同,但用于从音频结尾处修剪静音。 可以用分贝(如果指定值后附有“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
。允许范围是从0
到10
.- timestamp
设置每个音频帧输出时间戳的处理模式。
- write
完全重写时间戳,仅保留第一个输出帧的开始时间。
- copy
未丢弃的帧保持与输入音频帧相同的时间戳。
默认值是
write
.
8.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
8.108.2 命令
此滤镜支持一些上述选项作为命令.
8.109 sofalizer
SOFAlizer使用头相关传递函数(HRTFs)创建虚拟扬声器,为用户提供通过耳机进行双耳聆听的体验(支持最多9声道的音频格式)。HRTFs存储在SOFA文件中(参见http://www.sofacoustics.org/获取数据库)。SOFAlizer由奥地利科学院声学研究所开发。
要启用此滤镜的编译,您需要将FFmpeg配置为--enable-libmysofa
.
滤镜接受以下选项:
- sofa
设置用于渲染的SOFA文件。
- gain
设置应用于音频的增益。值以分贝为单位。默认值是0。
- rotation
设置虚拟扬声器的旋转角度,单位是度。默认值是0。
- elevation
设置虚拟扬声器的仰角,单位是度。默认值是0。
- radius
设置使用近场HRTFs时扬声器与听者之间的距离,单位是米。默认值是1。
- type
设置处理类型。可以是时间或者频率. 时间是在时域中处理音频,速度较慢。频率是在频域中处理音频,速度较快。默认值是频率.
- speakers
设置虚拟扬声器的自定义位置。此选项的语法为:<频道> <方位角> <仰角>[|<频道> <方位角> <仰角>|...]。 每个虚拟扬声器由简短的频道名称描述,后跟方位角和仰角(单位为度)。 每个虚拟扬声器描述用"|"分隔。例如,要覆盖前左和前右频道的位置,请使用: 'speakers=FL 45 15|FR 345 15'。 带有无法识别的频道名称的描述将被忽略。
- lfegain
设置LFE频道的自定义增益。值以分贝为单位。默认值是0。
- framesize
设置自定义帧大小,单位是样本数。默认值是1024。 允许范围从1024到96000。仅在选项‘type’ 设为频率.
- normalize
导入SOFA文件时是否规范化所有脉冲响应。 默认情况下启用。
- interpolate
如果确切位置不匹配,是否使用邻近脉冲响应插值最近的脉冲响应。 默认情况下禁用。
- minphase
加载SOFA文件时是否调整所有脉冲响应的最小相位。 默认情况下禁用。
- anglestep
设置邻居搜索角度步长。仅在选项插值启用时使用。
- radstep
设置邻居搜索半径步长。仅在选项插值启用时使用。
8.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"
8.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到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。
8.110.1 命令
此滤镜支持上述所有选项,如命令.
8.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
8.111 stereotools
此滤镜有一些实用工具来管理立体声信号,用于将中/侧立体声录音转换为左/右信号,同时可以控制参数,或扩展母轨的立体声图像。
该滤镜接受以下选项:
- level_in
设置两声道的过滤前输入音量。默认值为1。 允许范围是0.015625到64。
- level_out
设置两声道的过滤后输出音量。默认值为1。 允许范围是0.015625到64。
- balance_in
设置两声道之间的输入平衡。默认值为0。 允许范围是-1到1。
- balance_out
设置两声道之间的输出平衡。默认值为0。 允许范围是-1到1。
- softclip
启用软剪辑。将产生模拟失真而不是尖锐的数字0分贝剪辑。默认未启用。
- 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’
等功率分配,范围从-6分贝到+6分贝。
8.111.1 命令
此滤镜支持上述所有选项,如命令.
8.111.2 示例
- 应用类似卡拉OK的效果:
stereotools=mlev=0.015625
- 将中/侧信号转换为左/右:
"stereotools=mode=ms>lr"
8.112 stereowiden
此滤镜通过抑制两个声道共有的信号,并将左信号延迟到右声道,反之亦然,从而增强立体声效果,以扩大立体声宽度。
该滤镜接受以下选项:
- delay
左信号到右声道延迟的时间(毫秒),反之亦然。默认值为20毫秒。
- feedback
延迟信号进入右声道的增益量,反之亦然。这在右声道输出中为左信号赋予延迟效果,反之亦然,产生宽化效果。默认值为0.3。
- crossfeed
左信号交叉馈入右声道时的反向相位。这有助于抑制单声道。如果该值设为1,将取消两个声道共有的所有信号。默认值为0.3。
- drymix
设置原始声道人信号的音量。默认值为0.8。
8.112.1 命令
此滤镜支持除以下内容之外的所有选项delay
如命令.
8.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频段增益。
8.114 环绕
应用音频环绕上混滤镜。
此滤镜允许从音频流生成多声道输出。
该滤镜接受以下选项:
- chl_out
设置输出声道布局。默认值为5.1.
- chl_in
设置输入声道布局。默认值为立体声.
- level_in
设置输入音量级。默认值为1.
- level_out
设置输出音量级。默认值为1.
- lfe
如果输出声道布局具有低频效果声道,则启用低频效果声道输出。默认情况下启用。
- lfe_low
设置低频效果的低截止频率。默认值为128Hz。
- lfe_high
设置低频效果的高截止频率。默认值为256Hz。
- lfe_mode
设置低频效果模式,可以是加或减。默认值是加。 在加模式下,低频效果声道是由输入音频创建并添加到输出中。 在减模式下,低频效果声道是由输入音频创建添加到输出中,同时非低频效果输出声道会与低频效果声道相减。
- smooth
设置时间平滑强度,用于在转换立体声声音时逐步改变因子。允许范围是0.0至1.0。 当focus选项值大于0.0时,有助于改善输出质量。 默认值为0.0。仅范围内的非边界值有效。
- angle
设置立体声环绕转换的角度。允许范围是0至360。 默认值为90.
- focus
设置立体声环绕转换的焦点。允许范围是-1至1。 默认值为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
设置低频效果输入音量。默认值为1.
- lfe_out
设置低频效果输出音量。默认值为1.
- allx
设置所有声道在X轴上立体声图像扩展的使用情况。 允许范围是-1至15。 默认情况下该值为负-1,因此未使用。
- ally
设置所有声道在Y轴上立体声图像扩展的使用情况。 允许范围是-1至15。 默认情况下该值为负-1,因此未使用。
- fcx, flx, frx, blx, brx, slx, srx, bcx
设置每个声道在X轴上立体声图像扩展的使用情况。 允许范围是0.06至15。 默认值为0.5.
- fcy, fly, fry, bly, bry, sly, sry, bcy
设置每个声道在Y轴上立体声图像扩展的使用情况。 允许范围是0.06至15。 默认值为0.5.
- win_size
设置窗口大小。允许范围是1024至65536。默认值大小为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
.
8.115 tiltshelf
使用两极搁架滤波器增益或衰减音频的低频和高频,这种滤波器的响应类似于标准高保真的音调控制。 这也称为搁架均衡(EQ)。
此滤镜接受以下选项:
- gain, g
调整在0 Hz时的增益。其实用范围约为-20 (大幅削减)至+20(大幅增加)。 使用正增益时请注意剪辑。
- frequency, f
设置滤波器的中心频率,因此可用于扩展或减少待增益或削减的频率范围。 默认值为
3000
Hz。- width_type, t
设定指定滤波器带宽的方法。
- h
Hz
- q
Q因子
- o
倍频
- s
斜率
- k
kHz
- width, w
决定滤波器的搁架过渡有多陡。
- poles, p
设置极点数。默认值为2。
- mix, m
在输出中使用过滤信号的程度。默认值为1。 范围为0到1之间。
- channels, c
指定需要过滤的声道,默认为过滤所有可用声道。
- normalize, n
归一化双二阶滤波器系数,默认为禁用。 启用后将在直流处归一化幅度响应为0分贝。
- 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处理的块大小。如果该值设置为足够大的值 (高于当接近零值时截断的冲激响应长度),过滤 将成为线性相位,否则如果不足够大,将只产生讨厌的伪影。
请注意,当该值设置为非零时,滤波延迟将正好为设定的样本数。
8.115.1 命令
该滤镜支持某些选项,如命令.
8.116 高音,highshelf
使用两极搁架滤波器增益或衰减音频的高频(高音),其响应类似于标准高保真的音调控制。 这也称为搁架均衡(EQ)。
此滤镜接受以下选项:
- gain, g
提供约22 kHz的低频和奈奎斯特频率的增益。 其实用范围约为-20(大幅削减)至+20(大幅增加)。使用正增益时请注意剪辑。
- frequency, f
设置滤波器的中心频率,因此可用于扩展或减少待增益或削减的频率范围。 默认值为
3000
Hz。- width_type, t
设定指定滤波器带宽的方法。
- h
Hz
- q
Q因子
- o
倍频
- s
斜率
- k
kHz
- width, w
决定滤波器的搁架过渡有多陡。
- poles, p
设置极点数。默认值为2。
- mix, m
在输出中使用过滤信号的程度。默认值为1。 范围为0到1之间。
- channels, c
指定需要过滤的声道,默认为过滤所有可用声道。
- normalize, n
归一化双二阶滤波器系数,默认为禁用。 启用后将在直流处归一化幅度响应为0分贝。
- 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处理的块大小。如果该值设置为足够大的值 (高于当接近零值时截断的冲激响应长度),过滤 将成为线性相位,否则如果不足够大,将只产生讨厌的伪影。
请注意,当该值设置为非零时,滤波延迟将正好为设定的样本数。
8.116.1 命令
此滤镜支持以下命令:
- frequency, f
更改高音频率。 命令的语法是: "频率"
- width_type, t
更改高音宽度类型。 命令的语法是: "宽度类型"
- width, w
更改高音宽度。 命令的语法是: "宽度"
- gain, g
更改高音增益。 命令的语法是: "增益"
- mix, m
更改高音混合。 命令的语法是: "混合"
8.117 颤音(tremolo)
正弦幅度调制。
此滤镜接受以下选项:
- f
以赫兹为单位的调制频率。次谐波范围的调制频率(20 Hz 或更低)将产生颤音效果。 通过指定高于 20 Hz 的调制频率,此滤镜也可作为环形调制器使用。 范围是 0.1 - 20000.0。默认值为 5.0 Hz。
- d
调制深度作为百分比。范围是 0.0 - 1.0。 默认值为 0.5。
8.118 颤振(vibrato)
正弦相位调制。
此滤镜接受以下选项:
- f
以赫兹为单位的调制频率。 范围是 0.1 - 20000.0。默认值为 5.0 Hz。
- d
调制深度作为百分比。范围是 0.0 - 1.0。 默认值为 0.5。
8.119 虚拟低音(virtualbass)
应用音频虚拟低音滤镜。
此滤镜接受立体声输入并生成带低音增强(2.1)通道的立体声输出。 新生成的低频通道从原始立体声通道增强虚拟低音。 此滤镜输出前左和前右通道保持与原始立体声输入一致。
此滤镜接受以下选项:
- cutoff
设置虚拟低音的截止频率。默认值为 250 Hz。 允许范围为 100 到 500 Hz。
- strength
设置虚拟低音的强度。允许范围为 0.5 到 3。 默认值为 3。
8.120 音量(volume)
调整输入音频的音量。
它接受以下参数:
- 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
帧号(从零开始)
- nb_channels
通道数
- nb_consumed_samples
滤镜消耗的采样数
- nb_samples
当前帧中的采样数
- pos
文件中原始帧的位置;已废弃,请勿使用
- pts
帧 PTS
- sample_rate
采样率
- startpts
流开始时的 PTS
- startt
流开始时的时间
- t
帧时间
- tb
时间戳时间基
- volume
上次设置的音量值
注意,当eval被设置为 ‘once’ 时,只有采样率和时间基变量可用,所有其他变量将评估为 NAN。
8.120.1 命令
此滤镜支持以下命令:
- volume
修改音量表达式。 该命令接受与对应选项相同的语法。
如果指定的表达式无效,则保持其当前值。
8.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
8.121 音量检测(volumedetect)
检测输入视频的音量。
此滤镜没有参数。它仅支持 16 位有符号整数采样,因此在需要时输入将被转换。当输入流结束时,将在日志中打印音量统计信息。
具体来说,它将显示平均音量(均方根值)、最大音量(以每个采样为基础)以及从最大值到累计 1/1000 样本的所记录音量值的直方图开头。
所有音量以相对于最大 PCM 值的分贝表示。
8.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 个采样发生剪切,依此类推。
9 音频源
以下是当前可用音频源的描述。
9.1 abuffer
缓冲音频帧,并使其可用于筛选器链。
此源主要用于编程用途,特别是通过在libavfilter/buffersrc.h.
中定义的接口。
- time_base
时间基,将用于提交帧的时间戳。它必须是浮点数或以分子/分母形式。
- sample_rate
传入音频缓冲区的采样率。
- sample_fmt
传入音频缓冲区的采样格式。 可以是采样格式名称或其相应的整数表示形式,见libavutil/samplefmt.h
- channel_layout
传入音频缓冲区的通道布局。 可以是通道布局名称,见libavutil/channel_layout.c的 channel_layout_map 或其相应的libavutil/channel_layout.h
- channels
传入音频缓冲区的通道数量。 如果同时指定通道数量和通道布局,则它们必须一致。
9.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
9.2 aevalsrc
生成由表达式指定的音频信号。
此源接受一个或多个表达式(每个通道一个),这些表达式将被评估并用于生成相应的音频信号。
此源接受以下选项:
- exprs
设置每个独立通道的以 '|' 分隔的表达式列表。如果未指定channel_layout选项,则根据提供的表达式数量选择通道布局。否则,将对其余的输出通道应用最后指定的表达式。
- channel_layout, c
设置通道布局。指定布局中的通道数量必须与指定表达式的数量相等。
- duration, d
设置生成音频的最小持续时间。请参阅ffmpeg-utils 手册中的时间持续时间部分,了解接受的语法。 注意,生成的持续时间可能会大于指定的持续时间,因为生成的音频总是在完整帧的末尾被截断。
如果未指定,或者表达的持续时间为负数,则认为音频将永远生成。
- nb_samples, n
设置每个输出帧中每个通道的采样数,默认值为1024。
- sample_rate, s
指定采样率,默认值为 44100。
在表达式中,每个表达式可以包含以下常量: can contain the following constants:
- n
当前被评估的采样编号,从 0 开始
- t
当前被评估的采样时间(以秒为单位),从 0 开始
- s
采样率
9.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)"
9.3 afdelaysrc
生成分数延迟 FIR 系数。
生成的流可以与afir滤镜一起使用,用于过滤音频信号。
此滤镜接受以下选项:
- delay, d
设置分数延迟。默认为 0。
- sample_rate, r
设置采样率,默认为 44100。
- nb_samples, n
设置每一帧的采样数。默认值为 1024。
- taps, t
设置输出音频流中的滤镜系数数量。 默认值为 0。
- channel_layout, c
指定通道布局,可以是表示通道布局的字符串。 默认值为通道布局为 "立体声"。
9.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 等均衡器系数的插值方法。可以是
linear
或cubic
.- phase, h
设置 FIR 滤镜的相位类型。可以是
linear
或min
:最小相位。 默认值是最小相位滤镜。
9.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)。
9.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)手册中的时间持续时间章节了解接受的语法。
如果未指定或表达的持续时间为负,则假定音频将永久生成。
9.6.1 示例
- 将采样率设置为 48000 Hz,声道布局设置为 AV_CH_LAYOUT_MONO。
anullsrc=r=48000:cl=4
- 使用更明显的语法执行相同操作:
anullsrc=r=48000:cl=mono
需要显式定义所有参数。
9.7 flite
使用 libflite 库合成语音表达。
要启用此滤镜的编译,需要使用以下配置 FFmpeg:--enable-libflite
.
请注意,2.0 之前版本的 flite 库不是线程安全的。
此滤镜接受以下选项:
- list_voices
如果设置为 1,列出可用语音的名称并立即退出。默认值为 0。
- nb_samples, n
设置每帧的最大样本数量。默认值为 512。
- textfile
设置包含要朗读文本的文件名。
- text
设置要朗读的文本。
- voice, v
设置用于语音合成的语音。默认值为
kal
。另请参阅list_voices选项。
9.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朗读指定文本,使用
flite
和lavfi
设备:ffplay -f lavfi flite=text='No more be grieved for which that thou hast done.'
有关 libflite 的更多信息,请查看:http://www.festvox.org/flite/
9.8 anoisesrc
生成噪声音频信号。
此滤镜接受以下选项:
- sample_rate, r
指定采样率。默认值为 48000 Hz。
- amplitude, a
指定生成的音频流的振幅(0.0 - 1.0)。默认值为 1.0。
- duration, d
指定生成的音频流的持续时间。不指定此选项会导致生成无限长度的噪声。
- color, colour, c
指定噪声的颜色。可用的噪声颜色有白色、粉红色、棕色、蓝色、紫色和天鹅绒。默认颜色为白色。
- seed, s
指定用于种子伪随机数生成器的值。
- nb_samples, n
设置每个输出帧的采样数量,默认值为 1024。
- density
设置天鹅绒噪声生成器的密度(0.0 - 1.0),默认值为 0.05。
9.8.1 示例
- 生成 60 秒的粉红色噪声,采样率为 44.1 kHz,振幅为 0.5:
anoisesrc=d=60:c=pink:r=44100:a=0.5
9.9 hilbert
生成奇数抽头希尔伯特变换 FIR 系数。
生成的流可以用于afir滤镜将信号相移 90 度。
这在许多矩阵编码方案和解析信号生成中很常用。该过程通常表示为乘以虚数单位 i(或 j)。
此滤镜接受以下选项:
- sample_rate, s
设置采样率,默认值为 44100。
- taps, t
设置 FIR 滤镜的长度,默认值为 22051。
- nb_samples, n
设置每帧的样本数量。
- win_func, w
设置生成 FIR 系数时使用的窗口函数。
9.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
设置低通滤波器的抽头数。
9.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
.
9.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
- 生成符合
1602,1601,1602,1601,1602
NTSC 模式的 1 kHz 正弦波:sine=1000:samples_per_frame='st(0,mod(n,5)); 1602-not(not(eq(ld(0),1)+eq(ld(0),3)))'
10 音频接收器
以下是当前可用音频接收器的描述。
10.1 abuffersink
缓冲音频帧,并使其在滤镜链的末端可用。
此接收器主要用于程序化用途,特别是通过以下接口定义libavfilter/buffersink.h或选项系统。
它接受一个指向 AVABufferSinkContext 结构的指针,该结构定义了传入缓冲区的格式,并作为初始化的透明参数传递给avfilter_init_filter
。
10.2 anullsink
空音频接收器;对输入音频绝对不做任何操作。它主要用作模板以及用于分析/调试工具。
11 视频滤镜
配置 FFmpeg 构建时,可以使用--disable-filters
禁用现有的任何滤镜。
配置输出将显示构建中包含的视频滤镜。
以下是当前可用视频滤镜的描述。
11.1 addroi
在视频帧中标记感兴趣区域。
帧数据保持不变,但会在帧上附加元数据,指示可能影响后续编码行为的感兴趣区域。通过多次应用滤镜,可以标记多个区域。
- x
区域距离帧左边缘的像素数。
- y
区域距离帧顶部边缘的像素数。
- w
区域宽度,单位为像素。
- h
区域高度,单位为像素。
参数x, y, w和h是表达式,可以包含以下变量:
- iw
输入帧的宽度。
- ih
输入帧的高度。
- qoffset
应用于该区域的量化偏移。
这必须是范围为 -1 到 +1 的实际值。值为 0 表示质量无变化。负值表示要求更高质量(较少量化),而正值表示要求较差质量(更多量化)。
该范围经过校准,使得极端值表示最大可能偏移。如果帧的其余部分以最差质量编码,则偏移 -1 表示无论帧的其他部分如何处理,该区域都应以最佳质量编码。中间值则以某种编解码器相关的方式进行插值。
例如,在 10 位 H.264 中,量化参数在 -12 和 51 之间变化。因此,典型的 qoffset 值为 -1/10 表示该区域应以比帧其余部分好十分之一的范围的 QP 编码。
- clear
如果设置为 true,在添加新区域之前移除帧上标记的任何现有感兴趣区域。
11.1.1 示例
- 将帧的中心四分之一标记为有趣。
addroi=iw/4:ih/4:iw/2:ih/2:-1/10
- 将帧左边缘上 100 像素宽的区域标记为非常不有趣(以比帧的其余部分质量低得多的质量编码)。
addroi=0:0:100:ih:+1/5
11.2 alphaextract
从输入中提取 alpha 分量作为灰度视频。这在与alphamerge滤镜一起使用时特别有用。
11.3 alphamerge
用第二输入的灰度值添加或替换主输入的 alpha 分量。这用于alphaextract以便在不支持 alpha 通道的格式中传输或存储帧序列。
例如,要从普通 YUV 编码视频和使用alphaextract创建的单独视频重建完整帧,可以使用以下操作:
movie=in_alpha.mkv [alpha]; [in][alpha] alphamerge [out]
11.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。
11.4.1 命令
此滤镜支持以下命令与同名选项对应:
- factor
- threshold
- tolerance
- low
- high
- planes
11.5 ass
与subtitles滤镜相同,但它不需要 libavcodec 和 libavformat 工作。另一方面,它仅限于 ASS(高级副标题格式)字幕文件。
此滤镜除使用以下选项外,还可以使用subtitles滤镜的通用选项:
- shaping
设置成形引擎
可用值为:
- ‘auto’
默认的libass整形引擎,是目前最好的整形引擎。
- ‘simple’
快速无字体相关的整形器,仅能进行替换。
- ‘complex’
使用OpenType进行替换和定位的较慢整形器。
默认值为
auto
.
11.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
设置过滤器用于平均使用的算法变体。默认值为
p
并行。 还可以设置为s
串行。并行通常比串行更快,反之情况永远不成立。 并行处理时若首次变化超过阈值会提前终止,而串行处理时即使等于或低于阈值,仍会继续处理帧的另一侧。
- 0s
- 1s
- 2s
设置第一个、第二个或第三个平面的 sigma 值。默认值为32767。 有效范围从0到32767。 此选项控制半径内每个像素的权重。 默认值意味着每个像素的权重相同。 将此选项设置为0实际上会禁用过滤。
11.6.1 命令
此过滤器支持与选项相同的命令,除了选项s
。
该命令接受与相应选项相同的语法。
11.7 avgblur
应用平均模糊过滤器。
该过滤器接受以下选项:
- sizeX
设置水平半径大小。
- planes
设置需要过滤的平面。默认情况下过滤所有平面。
- sizeY
设置垂直半径大小,如果为零,则与
sizeX
相同。 默认值为0
.
11.7.1 命令
此过滤器支持与选项相同的命令。 该命令接受与相应选项相同的语法。
如果指定的表达式无效,则当前值保持不变。
11.8 backgroundkey
将静态背景转换为透明。
该过滤器接受以下选项:
- threshold
场景变换检测的阈值。
- similarity
与背景的相似度百分比。
- blend
设置不相似像素的混合量。
11.8.1 命令
此过滤器支持上述所有选项作为命令.
11.9 bbox
计算输入帧亮度平面中非黑色像素的边界框。
该过滤器计算包含所有亮度值大于最小允许值的像素的边界框。 描述边界框的参数将记录到过滤器日志中。
该过滤器接受以下选项:
- min_val
设置最小亮度值。默认值为
16
.
11.9.1 命令
此过滤器支持上述所有选项作为命令.
11.10 bilateral
应用双边过滤器,进行空间平滑同时保留边缘。
该过滤器接受以下选项:
- sigmaS
设置高斯函数用来计算空间权重的 sigma 值。 允许范围是0到512。默认值为0.1。
- sigmaR
设置高斯函数用来计算范围权重的 sigma 值。 允许范围是0到1。默认值为0.1。
- planes
设置需要过滤的平面。默认值为仅第一个平面。
11.10.1 命令
此过滤器支持上述所有选项作为命令.
11.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。
11.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
11.12 bitplanenoise
显示并测量位平面噪声。
该过滤器接受以下选项:
- bitplane
设置分析的平面。默认值为
1
.- filter
从
bitplane
上设置过滤掉噪声的像素。 默认禁用。
11.13 blackdetect
检测几乎完全黑的视频间隔。 可以用于检测章节转换、商业广告或无效录制。
该过滤器将检测分析结果输出到日志以及帧元数据中。
如果找到至少指定最短时长的黑色段,则会在日志中打印一行,
显示开始和结束时间戳以及时长,日志等级为info
。
此外,日志等级为debug
的日志行会按帧显示检测到的黑色量。
过滤器还会将元数据附加到黑色段的第一个帧,
键为lavfi.black_start
,以及黑色段结束后第一个帧,键为lavfi.black_end
。
值为帧的时间戳。
无论是否指定最短时长,都会添加这些元数据。
该过滤器接受以下选项:
- black_min_duration, d
设置检测到的黑色的最短时长(以秒为单位)。必须是非负浮点数。
默认值为2.0。
- picture_black_ratio_th, pic_th
设置考虑画面为黑色的阈值。 表达必须满足的最小值比例:
黑色像素数量 / 像素总数
认定画面为黑色。 默认值为0.98。
- pixel_black_th, pix_th
设置认定像素为黑色的阈值。
阈值表示最大像素亮度值。 为认定为“黑色”像素的最大值。 输入的值会按以下公式缩放:
绝对阈值 = 最小亮度值 + 像素黑色阈值 * 亮度范围大小
亮度范围大小与最小亮度值取决于输入视频格式。 对于YUV全范围格式范围是[0-255], 对于YUV非全范围格式范围是[16-235]。
默认值为0.10。
以下示例将最大像素阈值设置为最小值, 并仅检测2秒或更长的黑色间隔:
blackdetect=d=2:pix_th=0.00
11.14 blackframe
检测几乎完全黑的帧。 可以用于检测章节转换或商业广告。 输出行包括检测到的帧的帧号、黑色百分比、 文件中的位置(如果已知)或-1以及时间戳(以秒为单位)。
为显示输出行,需将日志等级至少设为AV_LOG_INFO。
此过滤器导出帧元数据lavfi.blackframe.pblack
。
值表示画面中低于阈值的像素百分比。
它接受以下参数:
- amount
画面中低于阈值的像素百分比。默认值为
98
.- threshold, thresh
低于此值时像素被认为是黑色的阈值;默认值为
32
.
11.15 blend
将两个视频帧混合在一起。
The blend
过滤器接收两个输入流并输出一个流,
第一个输入为“顶层”层,第二个输入为“底层”层。
默认情况下,输出在最长输入终止时终止。
过滤器接收同一流的两个连续帧,
并输出通过将新帧与旧帧混合获得的结果。tblend
(time blend) filter takes two consecutive frames
from one single stream, and outputs the result obtained by blending
the new frame on top of the old frame.
以下是接受选项的说明。
- c0_mode
- c1_mode
- c2_mode
- c3_mode
- all_mode
为特定像素组件或所有像素组件设置混合模式(针对all_mode)。默认值为
normal
.组件模式的可用值为:
- ‘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)。仅在像素组件混合模式中使用。
- c0_expr
- c1_expr
- c2_expr
- c3_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
过滤器还支持帧同步选项。
11.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
11.15.2 命令
此试用器支持与命令相同的选项。
11.16 blockdetect
确定帧的块状特征而不改变输入帧。
基于Remco Muijs 和 Ihor Kirenko 的 "适应性视频处理的无参考块伪影度量" 2005年 欧洲信号处理会议。
该过滤器接受以下选项:
- period_min
- period_max
设置用于确定像素网格(周期)的最小值和最大值。 默认值为[3,24]。
- planes
设置需要过滤的平面。默认值仅为第一个平面。
11.16.1 示例
- 确定第一个平面的块状特征,并搜索范围为[8,32]的周期:
blockdetect=period_min=8:period_max=32:planes=1
11.17 blurdetect
确定帧的模糊度而不改变输入帧。
基于Marziliano, Pina 等人的 "无参考感知模糊度量"。 支持基于块的缩写。
该过滤器接受以下选项:
- low
- high
设置由 Canny 阈值算法使用的低和高阈值。
高阈值选择“强”边缘像素, 然后通过8-连通性连接到由低阈值选择的“弱”边缘像素。
低和高阈值必须在[0,1]范围内选择,且低值应小于或等于高.
低阈值的默认值为,而
20/255
高阈值的默认值为。50/255
.- radius
定义半径以在边缘像素周围搜索局部最大值。
- block_pct
仅对最显著的块确定模糊度,以百分比表示。
- block_width
确定宽度块的模糊程度块宽度如果设置为小于1的值,则不使用块,并且无论如何整个图像都作为一个整体处理块高度.
- block_height
确定高度块的模糊程度块高度如果设置为小于1的值,则不使用块,并且无论如何整个图像都作为一个整体处理块宽度.
- planes
设置要过滤的平面。默认值仅为第一个平面。
11.17.1 示例
- 确定80%最显著的32x32块的模糊程度:
blurdetect=block_width=32:block_height=32:block_pct=80
11.18 bm3d
使用块匹配3D算法对帧进行去噪。
过滤器接受以下选项。
- sigma
设置去噪强度。默认值为1。 允许范围为0到999.9。 去噪算法对sigma非常敏感,因此根据源调整它。
- block
设置局部补丁大小。这设置二维的尺寸。
- bstep
设置用于处理块的滑动步长。默认值为4。 允许范围为1到64。 较小的值允许处理更多的参考块,但速度较慢。
- group
设置用于第三维度的最大相似块数量。默认值为1。 设置为1时,不进行块匹配。较大的值允许在单个组中包含更多块。 允许范围为1到256。
- range
设置搜索块匹配的半径。默认值为9。 允许范围为1到INT32_MAX。
- mstep
设置块匹配两个搜索位置之间的步长。默认值为1。 允许范围为1到64。较小的值速度较慢。
- thmse
设置块匹配的均方误差阈值。有效范围为0到 INT32_MAX。
- hdthr
设置三维变换域中的硬阈值的阈值参数。 较大的值会在频率域中产生更强的硬阈值过滤。
- estim
设置过滤估计模式。可以是
basic
或final
。 默认值为basic
.- ref
如果启用,过滤器将使用第二流进行块匹配。 默认情况下,对于
basic
的值estim选项,禁用, 如果estim的值始终启用final
.- planes
设置要过滤的平面。默认值为所有可用平面(除了alpha平面)。
11.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
11.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
对于色度平面。的默认值为 "2"。如果未指定,luma_radius is "2". If not specified, chroma_radius和alpha_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_power和alpha_power默认为为luma_power.
值为0将禁用该效果。
11.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
11.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
.
11.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
.
11.22 ccrepack
重新打包CEA-708隐藏字幕旁数据
此过滤器修复了与商业编码器相关的上游格式错误的CEA-708有效负载中常见问题,具体 包括元组数量错误(目标FPS的cc_count错误),以及元组排序错误 (即CEA-608元组不是有效负载中的第一个条目)。
11.23 cas
对视频流应用对比度自适应锐化过滤器。
过滤器接受以下选项:
- strength
设置锐化强度。默认值为0。
- planes
设置要过滤的平面。默认值为过滤所有平面(除了alpha平面)。
11.23.1 命令
此过滤器支持与选项相同的命令。
11.24 chromahold
移除所有颜色信息,除了特定的一种颜色。
过滤器接受以下选项:
- color
不会被替换为中性色度的颜色。
- similarity
与上述颜色的相似百分比。 0.01仅匹配确切的关键颜色,而1.0匹配所有颜色。
- blend
混合百分比。 0.0使像素要么完全灰色,要么完全不是灰色。 较高的值保留更多颜色。
- yuv
表明传递的颜色已经是YUV而不是RGB。
启用后,像"绿色"或"红色"这样明确的颜色就失去了意义。 这可以用于将确切的YUV值作为十六进制数字传递。
11.24.1 命令
此过滤器支持与选项相同的命令。 命令接受与相应选项相同的语法。
如果指定的表达式无效,则保持其当前值。
11.25 chromakey
YUV颜色空间的颜色/色度键控。
过滤器接受以下选项:
- color
将被替换为透明的颜色。
- similarity
与关键颜色的相似百分比。
0.01仅匹配确切的关键颜色,而1.0匹配所有颜色。
- blend
混合百分比。
0.0使像素要么完全透明,要么完全不透明。
较高的值会产生半透明像素,像素颜色越接近关键颜色,透明度越高。
- yuv
表明传递的颜色已经是YUV而不是RGB。
启用后,像"绿色"或"红色"这样明确的颜色就失去了意义。 这可以用于将确切的YUV值作为十六进制数字传递。
11.25.1 命令
此过滤器支持与选项相同的命令。 命令接受与相应选项相同的语法。
如果指定的表达式无效,则保持其当前值。
11.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
11.26 chromakey_cuda
使用CUDA加速的YUV颜色空间颜色/色度键控。
此过滤器工作方式与普通chromakey过滤器相同,但操作在CUDA帧上。 有关更多详细信息和参数,请参见chromakey.
11.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
11.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’
平方差值。
默认的距离类型是曼哈顿距离。
11.27.1 命令
此过滤器支持与选项相同的命令。 命令接受与相应选项相同的语法。
11.28 chromashift
水平和/或垂直移动色度像素。
过滤器接受以下选项:
- cbh
设置色度蓝水平移动量。
- cbv
设置色度蓝垂直移动量。
- crh
设置色度红水平移动量。
- crv
设置色度红垂直移动量。
- edge
设置边缘模式,可以是扩展,默认值或扭曲.
11.28.1 命令
此过滤器支持以上所有选项作为命令.
11.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
设置 CIE 范围大小,默认为 512。
- intensity, i
设置用于将输入像素值映射到 CIE 图表的强度。
- contrast
设置用于绘制超出活动颜色系统色域的舌头颜色的对比度。
- corrgamma
校正范围显示的伽马,默认启用。
- showwhite
在 CIE 图表上显示白点,默认禁用。
- gamma
设置输入伽马,仅在使用 XYZ 输入色彩空间时使用。
- fill
填充 CIE 颜色,默认启用。
11.30 编解码器视图
可视化某些编解码器导出的信息。
一些编解码器可以通过使用帧的附加数据或其他方式导出信息。 例如,一些基于 MPEG 的编解码器通过export_mvs编解码器中的标志flags2选项导出运动矢量。
该过滤器接受以下选项:
- block
使用亮度平面显示区块分区结构。
- mv
设置要可视化的运动矢量。
针对mv的可用标志为:
- ‘pf’
P 帧的前向预测运动矢量
- ‘bf’
B 帧的前向预测运动矢量
- ‘bb’
B 帧的后向预测运动矢量
- qp
使用色度平面显示量化参数。
- mv_type, mvt
设置要可视化的运动矢量类型。除非由frame_type选项指定,否则包括所有帧的运动矢量。
针对mv_type的可用标志为:
- ‘fp’
前向预测运动矢量
- ‘bp’
后向预测运动矢量
- frame_type, ft
设置要可视化运动矢量的帧类型。
针对frame_type的可用标志为:
- ‘if’
帧内编码帧 (I 帧)
- ‘pf’
预测帧 (P 帧)
- ‘bf’
双向预测帧 (B 帧)
11.30.1 示例
- 使用以下命令可视化所有帧的前向预测运动矢量:
ffplay
:ffplay -flags2 +export_mvs input.mp4 -vf codecview=mv_type=fp
- 使用以下命令可视化 P 和 B 帧的多方向运动矢量:
ffplay
:ffplay -flags2 +export_mvs input.mp4 -vf codecview=mv=pf+bf+bb
11.31 颜色平衡
修改输入帧的主色调(红、绿和蓝)的强度。
过滤器允许在红-青、绿-品红或蓝-黄平衡的阴影、中间调或高光区域调整输入帧。
正向调整值将平衡移向主颜色,负向调整值则移向补色。
该过滤器接受以下选项:
- rs
- gs
- bs
调整红色、绿色和蓝色阴影(最暗像素)。
- rm
- gm
- bm
调整红色、绿色和蓝色中间调(中等像素)。
- rh
- gh
- bh
调整红色、绿色和蓝色高光(最亮像素)。
选项的允许范围为
[-1.0, 1.0]
。默认值为0
.- pl
更改颜色平衡时保持亮度。默认为禁用。
11.31.1 示例
- 为阴影添加红色色调:
colorbalance=rs=.3
11.31.2 命令
该过滤器支持上述所有选项的命令.
11.32 颜色对比
调整 RGB 分量之间的颜色对比度。
该过滤器接受以下选项:
- rc
设置红-青对比度。默认值为 0.0,允许范围为 -1.0 至 1.0。
- gm
设置绿-品红对比度。默认值为 0.0,允许范围为 -1.0 至 1.0。
- by
设置蓝-黄对比度。默认值为 0.0,允许范围为 -1.0 至 1.0。
- rcw
- gmw
- byw
设置每个
rc
,gm
,by
选项值的权重。默认值为 0.0。 允许范围为 0.0 至 1.0。如果所有权重均为 0.0,则过滤禁用。- pl
设置保持亮度的比例。默认值为 0.0,允许范围为 0.0 至 1.0。
11.32.1 命令
该过滤器支持上述所有选项的命令.
11.33 颜色校正
选择性调整黑色和白色的白平衡。 此过滤器在 YUV 色彩空间中操作。
该过滤器接受以下选项:
- rl
设置红色阴影点。允许范围为 -1.0 至 1.0。 默认值为 0。
- bl
设置蓝色阴影点。允许范围为 -1.0 至 1.0。 默认值为 0。
- rh
设置红色高亮点。允许范围为 -1.0 至 1.0。 默认值为 0。
- bh
设置蓝色高亮点。允许范围为 -1.0 至 1.0。 默认值为 0。
- saturation
设置饱和度的量。允许范围为 -3.0 至 3.0。 默认值为 1。
- analyze
如果设置为除
manual
以外的任何值,它将分析每一帧并使用推导的参数来过滤输出帧。可能的值为:
- ‘manual’
- ‘average’
- ‘minmax’
- ‘median’
默认值为
manual
.
11.33.1 命令
该过滤器支持上述所有选项的命令.
11.34颜色通道混合
通过重新混合颜色通道调整视频输入帧。
此过滤器通过将每个像素的其他通道的值相加来修改一个颜色通道。例如,如果要修改的值是红色,输出值将是:
红色=红色*红对红 + 蓝色*红对蓝 + 绿色*红对绿 + 透明*红对透明
该过滤器接受以下选项:
- rr
- rg
- rb
- ra
调整输入红、绿、蓝和透明通道对输出红色通道的贡献。 默认值为
1
对于红对红和0
对于红对绿, 红对蓝和红对透明.- gr
- gg
- gb
- ga
调整输入红、绿、蓝和透明通道对输出绿色通道的贡献。 默认值为
1
对于绿对绿和0
对于绿对红, 绿对蓝和绿对透明.- br
- bg
- bb
- ba
调整输入红、绿、蓝和透明通道对输出蓝色通道的贡献。 默认值为
1
对于蓝对蓝和0
对于蓝对红, 蓝对绿和蓝对透明.- ar
- ag
- ab
- aa
调整输入红、绿、蓝和透明通道对输出透明通道的贡献。 默认值为
1
对于透明对透明和0
对于透明对红, 透明对绿和透明对蓝.选项的允许范围为
[-2.0, 2.0]
.- pc
设置保护颜色模式。接受值如下:
- ‘none’
禁用颜色保护,这是默认值。
- ‘lum’
保护亮度。
- ‘max’
保护 RGB 三元组的最大值。
- ‘avg’
保护 RGB 三元组的平均值。
- ‘sum’
保护 RGB 三元组的总和。
- ‘nrm’
保护 RGB 三元组的归一化值。
- ‘pwr’
保护 RGB 三元组的幂值。
- pa
设置更改颜色时保护颜色的比例。允许范围为
[0.0, 1.0]
。 默认值为0.0
,即禁用。
11.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
11.34.2 命令
该过滤器支持上述所有选项的命令.
11.35 着色
在视频流上叠加纯色。
该过滤器接受以下选项:
- hue
设置颜色的色调。允许范围为 0 至 360。 默认值为 0。
- saturation
设置颜色的饱和度。允许范围为 0 至 1。 默认值为 0.5。
- lightness
设置颜色的亮度。允许范围为 0 至 1。 默认值为 0.5。
- mix
设置源亮度的混合比例。默认值为 1.0。 允许范围为 0.0 至 1.0。
11.35.1 命令
该过滤器支持上述所有选项的命令.
11.36 彩色键
RGB 色彩空间关键色。 此过滤器在 8 位 RGB 格式帧上操作,通过设置某个颜色相似范围内的像素的 alpha 分量为 0。超出相似范围的像素的 alpha 值取决于 blend 选项的值。
该过滤器接受以下选项:
- color
设置 alpha 值为 0(完全透明)的颜色。 参见(ffmpeg-utils)"颜色" 关于 ffmpeg-utils 手册的章节。 默认值为
black
.- similarity
设置与关键颜色的相似半径范围内的其他颜色也具有完全透明度。 计算的距离与关键色的 RGB 值与像素颜色之间的单位分数距离相关。 范围是 0.01 到 1.0。0.01 在完全关键色周围匹配一个非常小的半径, 而 1.0 匹配所有内容。 默认值为
0.01
.- blend
设置如何计算落在相似半径范围外像素的 alpha 值。 0.0 使像素完全透明或完全不透明。 更高的值生成半透明像素,像素颜色与关键颜色越相似,透明度越高。 范围是 0.0 至 1.0。默认值为
0.0
.
11.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
11.36.2 命令
此过滤器支持相同的命令作为选项。 该命令接受与相应选项相同的语法。
如果指定的表达式无效,则保持其当前值。
11.37 颜色保持
对于除某种颜色外的所有 RGB 颜色,移除所有颜色信息。
该过滤器接受以下选项:
- color
不会被替换为中性灰的颜色。
- similarity
与上述颜色的相似百分比。 0.01 仅匹配精确的关键色,而 1.0 匹配所有内容。
- blend
混合百分比。0.0 使像素完全为灰色。 更高的值会保留更多的颜色。
11.37.1 命令
此过滤器支持相同的命令作为选项。 命令接受与相应选项相同的语法。
如果指定的表达式无效,则保持其当前值。
11.38 颜色级别
使用级别调整视频输入帧。
该过滤器接受以下选项:
- rimin
- gimin
- bimin
- aimin
调整红色、绿色、蓝色和透明通道的输入黑点。 允许范围为
[-1.0, 1.0]
。默认值为0
.- rimax
- gimax
- bimax
- aimax
调整红色、绿色、蓝色和透明通道的输入白点。 允许范围为
[-1.0, 1.0]
。默认值为1
.输入级别用于减淡高光(亮色调)、加深阴影(暗色调)、更改亮暗色调的平衡。
- romin
- gomin
- bomin
- aomin
调整红色、绿色、蓝色和透明通道的输出黑点。 允许范围为
[0, 1.0]
。默认值为0
.- romax
- gomax
- bomax
- aomax
调整红色、绿色、蓝色和透明通道的输出白点。 允许范围为
[0, 1.0]
。默认值为1
.输出级别允许手动选择约束的输出级别范围。
- preserve
设置保护色模式。接受值如下:
- ‘none’
禁用颜色保护,这是默认值。
- ‘lum’
保护亮度。
- ‘max’
保护 RGB 三元组的最大值。
- ‘avg’
保护 RGB 三元组的平均值。
- ‘sum’
保护 RGB 三元组的总和。
- ‘nrm’
保护 RGB 三元组的归一化值。
- ‘pwr’
保护 RGB 三元组的幂值。
11.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
11.38.2 命令
此过滤器支持上述所有选项的命令.
11.39 颜色映射
为视频流应用自定义颜色映射。
此过滤器需要三个输入视频流。 第一个流是将被过滤掉的视频流。 第二和第三个视频流指定了用于源色到目标色映射的颜色块。
该过滤器接受以下选项:
- patch_size
设置源和目标视频流块大小(以像素为单位)。
- nb_patches
设置源和目标视频流中可用块的最大数量。 默认值为额外视频流中可用块的数量。 最大允许块数为
64
.- type
设置目标颜色的调整方式。可以是
relative
或absolute
。 默认值为absolute
.- kernel
设置用于测量映射颜色间颜色差异的核。
接受的值为:
- ‘euclidean’
- ‘weuclidean’
默认值为
euclidean
.
11.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
11.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’
identity 白点适配(即无白点适配)
- iall
一次性覆盖所有输入属性。与all.
- ispace
覆盖输入色彩空间。同space.
- iprimaries
覆盖输入色彩原色。同primaries.
- itrc
覆盖输入转移特性。同trc.
- irange
覆盖输入色彩范围。同range.
过滤器将转移特性、色彩空间和色彩原色转换为指定的用户值。如果未指定输出值,则根据"all"属性的默认值设置。如果该属性也未指定,过滤器将记录错误。输出的色彩范围和格式默认为输入的色彩范围和格式。输入的转移特性、色彩空间、色彩原色和色彩范围应在输入数据中设置。如果这些值有缺失,过滤器将记录错误,并且不会进行转换。
例如,要将输入转换为 SMPTE-240M,请使用以下命令:
colorspace=smpte240m
11.42 colorspace_cuda
CUDA 加速实现的 colorspace 滤镜。
与软件 colorspace 滤镜相比,它绝不是功能齐全的,并且目前只支持 JPEG/全范围与 MPEG/受限范围之间的色彩范围转换。
滤镜接受以下选项:
- range
指定输出色彩范围。
可接受的值是:
- ‘tv’
电视(受限)范围
- ‘mpeg’
MPEG(受限)范围
- ‘pc’
PC(全范围)
- ‘jpeg’
JPEG(全范围)
11.43 colortemperature
调整视频中的色温以模拟环境色温的变化。
滤镜接受以下选项:
- temperature
设置以开尔文为单位的温度。允许范围为 1000 到 40000。默认值为 6500 K。
- mix
设置与过滤后输出的混合量。允许范围为 0 到 1。默认值为 1。
- pl
设置保持亮度的量。允许范围为 0 到 1。默认值为 0。
11.43.1 命令
此滤镜支持与选项相同的命令。 as options.
11.44 卷积
应用 3x3、5x5、7x7 卷积或水平/垂直最多 49 个元素。
滤镜接受以下选项:
- 0m
- 1m
- 2m
- 3m
为每个平面设置矩阵。 矩阵是9、25或49个有符号整数组成的序列。方形模式下,或者作为最大49个有符号整数数组行模式。
- 0rdiv
- 1rdiv
- 2rdiv
- 3rdiv
为每个平面计算的值设置乘数。 如果未设置值为0则设置为总矩阵元素的1的
- 0bias
- 1bias
- 2bias
- 3bias
为每个平面设置偏移量。 [...]
- 0mode
- 1mode
- 2mode
- 3mode
Set matrix mode for each plane. Can be square, row or column. Default is square.
11.44.1 Commands
This filter supports the all above options as commands.
11.44.2 Examples
- Apply sharpen:
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"
- Apply blur:
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"
- Apply edge enhance:
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"
- Apply edge detect:
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"
- Apply laplacian edge detector which includes diagonals:
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"
- Apply emboss:
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"
11.45 convolve
Apply 2D convolution of video stream in frequency domain using second stream as impulse.
The filter accepts the following options:
- planes
Set which planes to process.
- impulse
Set which impulse video frames will be processed, can be first or all. Default is all.
The convolve
filter also supports the framesync options.
11.46 copy
Copy the input video source unchanged to the output. This is mainly useful for testing purposes.
11.47 coreimage
Video filtering on GPU using Apple’s CoreImage API on OSX.
Hardware acceleration is based on an OpenGL context. Usually, this means it is processed by video hardware. However, software-based OpenGL implementations exist which means there is no guarantee for hardware processing. It depends on the respective OSX.
There are many filters and image generators provided by Apple that come with a large variety of options. The filter has to be referenced by its name along with its options.
The coreimage filter accepts the following options:
- list_filters
List all available filters and generators along with all their respective options as well as possible minimum and maximum values along with the default values.
list_filters=true
- filter
Specify all filters by their respective name and options. Use list_filters to determine all valid filter names and options. Numerical options are specified by a float value and are automatically clamped to their respective value range. Vector and color options have to be specified by a list of space separated float values. Character escaping has to be done. A special option name
default
is available to use default options for a filter.It is required to specify either
default
or at least one of the filter options. All omitted options are used with their default values. The syntax of the filter string is as follows:filter=<NAME>@<OPTION>=<VALUE>[@<OPTION>=<VALUE>][@...][#<NAME>@<OPTION>=<VALUE>[@<OPTION>=<VALUE>][@...]][#...]
- output_rect
Specify a rectangle where the output of the filter chain is copied into the input image. It is given by a list of space separated float values:
output_rect=x\ y\ width\ height
If not given, the output rectangle equals the dimensions of the input image. The output rectangle is automatically cropped at the borders of the input image. Negative values are valid for each component.
output_rect=25\ 25\ 100\ 100
Several filters can be chained for successive processing without GPU-HOST transfers allowing for fast processing of complex filter chains. Currently, only filters with zero (generators) or exactly one (filters) input image and one output image are supported. Also, transition filters are not yet usable as intended.
Some filters generate output images with additional padding depending on the respective filter kernel. The padding is automatically removed to ensure the filter output has the same size as the input image.
For image generators, the size of the output image is determined by the previous output image of the filter chain or the input image of the whole filterchain, respectively. The generators do not use the pixel information of this image to generate their output. However, the generated output is blended onto this image, resulting in partial or complete coverage of the output image.
The coreimagesrc video source can be used for generating input images which are directly fed into the filter chain. By using it, providing input images by another video source or an input video is not required.
11.47.1 Examples
- List all filters available:
coreimage=list_filters=true
- Use the CIBoxBlur filter with default options to blur an image:
coreimage=filter=CIBoxBlur@default
- Use a filter chain with CISepiaTone at default values and CIVignetteEffect with
its center at 100x100 and a radius of 50 pixels:
coreimage=filter=CIBoxBlur@default#CIVignetteEffect@inputCenter=100\ 100@inputRadius=50
- Use nullsrc and CIQRCodeGenerator to create a QR code for the FFmpeg homepage,
given as complete and escaped command-line for Apple’s standard bash shell:
ffmpeg -f lavfi -i nullsrc=s=100x100,coreimage=filter=CIQRCodeGenerator@inputMessage=https\\\\\://FFmpeg.org/@inputCorrectionLevel=H -frames:v 1 QRCode.png
11.48 corr
获取两个输入视频之间的相关性 [...]
This filter takes two input videos.
Both input videos must have the same resolution and pixel format for this filter to work correctly. Also it assumes that both inputs have the same number of frames, which are compared one by one.
The obtained per component, average, min and max correlation is printed through the logging system.
The filter stores the calculated correlation of each frame in frame metadata.
This filter also supports the framesync options.
In the below example the input file main.mpg being processed is compared with the reference file ref.mpg.
ffmpeg -i main.mpg -i ref.mpg -lavfi corr -f null -
11.49 cover_rect
Cover a rectangular object
It accepts the following options:
- cover
Filepath of the optional cover image, needs to be in yuv420.
- mode
Set covering mode.
It accepts the following values:
- ‘cover’
cover it by the supplied image
- ‘blur’
cover it by interpolating the surrounding pixels
Default value is blur.
11.49.1 Examples
- Cover a rectangular object by the supplied image of a given video using
ffmpeg
:ffmpeg -i file.ts -vf find_rect=newref.pgm,cover_rect=cover.jpg:mode=cover new.mkv
11.50 crop
Crop the input video to given dimensions.
It accepts the following parameters:
- w, out_w
The width of the output video. It defaults to
iw
. This expression is evaluated only once during the filter configuration, or when the ‘w’ or ‘out_w’ command is sent.- h, out_h
The height of the output video. It defaults to
ih
. This expression is evaluated only once during the filter configuration, or when the ‘h’ or ‘out_h’ command is sent.- x
The horizontal position, in the input video, of the left edge of the output video. It defaults to
(in_w-out_w)/2
. This expression is evaluated per-frame.- y
The vertical position, in the input video, of the top edge of the output video. It defaults to
(in_h-out_h)/2
. This expression is evaluated per-frame.- keep_aspect
If set to 1 will force the output display aspect ratio to be the same of the input, by changing the output sample aspect ratio. It defaults to 0.
- exact
Enable exact cropping. If enabled, subsampled videos will be cropped at exact width/height/x/y as specified and will not be rounded to nearest smaller value. It defaults to 0.
The out_w, out_h, x, y parameters are expressions containing the following constants:
- x
- y
The computed values for x and y. They are evaluated for each new frame.
- in_w
- in_h
The input width and height.
- iw
- ih
These are the same as in_w and in_h.
- out_w
- out_h
The output (cropped) width and height.
- ow
- oh
These are the same as out_w and out_h.
- a
same as iw / ih
- sar
input sample aspect ratio
- dar
input display aspect ratio, it is the same as (iw / ih) * sar
- hsub
- vsub
水平和垂直的色度二次采样值。例如,对于像素格式"yuv422p"水平采样值是2,且垂直采样值是1。
- n
输入帧的编号,从0开始。
- pos
输入帧在文件中的位置,如果未知则为NAN;已弃用,请勿使用
- t
用秒表示的时间戳。如果输入时间戳未知,则为NAN。
对于out_w的表达式可能依赖于out_h的值,而对于out_h的表达式可能依赖于out_w,但它们不能依赖于x和y,因为x和y是在out_w和out_h.
的计算之后才求值的。x和y参数指定了输出(未裁剪)区域左上角位置的表达式。它们会在每帧计算。如果求值结果无效,则会调整为最接近的有效值。
对于x的表达式可能依赖于y,而对于y的表达式可能依赖于x.
11.50.1 示例
- 在位置 (12,34) 裁剪一个大小为 100x100 的区域。
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)
- 根据 y 的值设置 x:
crop=in_w/2:in_h/2:y:10+10*sin(n/10)
11.50.2 命令
此滤镜支持以下命令:
- w, out_w
- h, out_h
- x
- y
设置输出视频的宽/高及其在输入视频中的水平/垂直位置。命令的语法与对应选项相同。
如果指定的表达式无效,将保持当前值。
11.51 cropdetect
自动检测裁剪尺寸。
计算所需的裁剪参数,并通过日志系统打印推荐的参数。检测到的尺寸与输入视频的非黑色区域或视频区域相对应模式.
它接受以下参数:
- mode
根据模式裁剪检测基于周围像素的纯黑值或运动矢量和边缘像素的组合。
- ‘black’
检测播放视频周围的黑色像素。为了精确控制,请使用选项限制值.
- ‘mvedges’
通过视频中的运动矢量并扫描形成播放视频边界的典型边缘像素来检测播放视频。
- limit
设置更高的黑色值阈值,可以选填一个范围从0到255(对于基于8位格式)。强度值大于设定值被视为非黑色。默认为 24。您也可以指定一个范围在 0.0 到 1.0 之间的值,具体取决于像素格式的位深度进行缩放。
- round
宽度/高度应可整除的值。默认为16。偏移会自动调整以使视频居中。使用2只获取偶数维度(用于4:2:2视频)。16最佳用于编码多数视频编解码器。
- skip
设置跳过评估的初始帧数。默认为2。范围为0到INT_MAX。
- reset_count, reset
设置计数器,以确定经过多少帧后cropdetect会重置先前检测的最大视频区域并重新开始以检测当前的最佳裁剪区域。默认值为0。
这在频道标识扭曲视频区域时可能很有用。 0表示“从不重置”,并返回播放期间遇到的最大区域。
- mv_threshold
设置像素单位运动作为运动检测的门限值。默认为8。
- low
- high
设置由Canny阈值算法使用的低阈值和高阈值。
高阈值选择“强”边缘像素,然后通过8连通性与通过低阈值选择的“弱”边缘像素连接。
低和高阈值必须选择范围[0,1]内,并且低应小于或等于高.
对于默认值低是
5/255
,而对于默认值高是15/255
.
11.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 -
11.51.2 命令
此滤镜支持以下命令:
- limit
命令的语法与对应选项相同。如果指定的表达式无效,将保持当前值。
11.52 cue
延迟视频滤镜直到达到指定的壁钟时间戳。滤镜首先传递preroll帧,接着最多缓冲buffer帧并等待提示。达到提示后,它会转发缓冲帧以及任何后续输入帧。
该滤镜可用于同步多个ffmpeg进程的输出,用于实时输出设备如decklink。通过在滤波链中添加延迟并预缓冲帧,进程可以在目标壁钟时间戳达到后立即将数据传递给输出。
无法保证框架的完美准确性,但结果足以满足某些使用案例。
- cue
提示时间戳,以微秒表示为UNIX时间戳。默认为0。
- preroll
以秒为单位表示的预卷内容持续时间。默认为0。
- buffer
以秒为单位表示的提示之前缓冲的内容的最大持续时间。默认为0。
11.53 曲线
使用曲线应用颜色调整。
此滤镜类似于Adobe Photoshop和GIMP的曲线工具。每个组件(红色、绿色和蓝色)通过N个关键点定义其值,这些点通过平滑曲线相互连接。x轴代表输入帧的像素值,y轴代表要设置为输出帧的新像素值。
默认情况下,一个组件曲线由两个点(0;0)和(1;1)定义。这就创建了一条直线,其中每个原始像素值被"调整"为其自身值,这意味着图像没有变化。
滤镜允许您重新定义这两个点并添加更多点。将定义一条新曲线以平滑地穿过这些新坐标。新定义的点需要在x轴上严格递增,其x和y值必须在[0;1]区间内。曲线是通过使用自然或单调的三次样条插值形成的,取决于插值选项(默认值: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, b或all一起使用,因为它像一个后期处理的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 ...
.
11.53.1 命令
此滤镜支持与选项相同的命令。
11.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
轮廓使用ffmpeg
和gnuplot
:ffmpeg -f lavfi -i color -vf curves=cross_process:plot=/tmp/curves.plt -frames:v 1 -f null - gnuplot -p /tmp/curves.plt
11.54 数据范围
视频数据分析滤镜。
此滤镜显示视频部分的十六进制像素值。
滤镜接受以下选项:
- size, s
设置输出视频尺寸。
- x
设置从何处选择像素的x偏移。
- y
设置从何处选择像素的y偏移。
- mode
设置范围模式,可以是以下之一:
- ‘mono’
用白色在黑色背景上绘制十六进制像素值。
- ‘color’
用输入视频像素颜色在黑色背景上绘制十六进制像素值。
- ‘color2’
在从输入视频选择的彩色背景上绘制十六进制像素值,文字颜色的选择始终可见。
- axis
在视频的左侧和顶部绘制行和列编号。
- opacity
设置背景透明度。
- format
设置显示数字格式。可以是
hex
或dec
。默认值为hex
.- components
设置显示的像素组件。默认情况下,显示所有像素组件。
11.54.1 命令
此滤镜支持与选项相同的命令,除了size
选项。
11.55 定向模糊
应用定向模糊滤镜。
滤镜接受以下选项:
- angle
设置定向模糊的角度。默认值为
45
.- radius
设置定向模糊半径。默认值为
5
.- planes
设置需要过滤的平面。默认情况下,所有平面都被过滤。
11.55.1 命令
此滤镜支持与选项相同的命令。命令的语法与对应选项相同。
如果指定的表达式无效,将保持当前值。
11.56 DCT去噪
使用二维DCT(频率域过滤)对帧进行去噪。
此滤镜不设计为实时使用。
滤镜接受以下选项:
- sigma, s
设置噪声标准差常量。
这个Sigma定义了一个严格的阈值
3 * sigma
;任何DCT系数(绝对值)低于此阈值的都会被丢弃。如果需要更高级的过滤,请参见expr.
默认值是
0
.- overlap
设置每个块的重叠像素数量。由于滤镜可能很慢,因此您可能希望减少此值,以换取较低效的滤镜和出现各种伪影的风险。
如果重叠值不允许处理整个输入宽度或高度,将显示警告,并且相应边界不会被去噪。
默认值是块大小-1,即最优设置。
- expr, e
设置系数因子表达式。
对于DCT区块的每个系数,此表达式将被评估为系数的乘数值。
如果启用此选项,则sigma选项将被忽略。
系数的绝对值可以通过c变量访问。
- n
设置块大小使用比特数。
1<<n
定义块大小,即处理区块的宽度和高度。默认值为3(8x8),可以提高到4以达到块大小16x16。注意,更改此设置对处理速度有巨大影响。此外,更大的块大小并不意味着更好的去噪效果。
11.56.1 示例
应用去噪,使用sigma值为4.5
:
dctdnoiz=4.5
使用表达式系统也可以实现相同操作:
dctdnoiz=e='gte(c, 4.5*3)'
使用16x16块大小进行强力去噪。16x16
:
dctdnoiz=15:n=4
11.57 去条带
从输入视频中移除条带伪影。它通过用参考像素的平均值替换条带像素来工作。
过滤器接受以下选项:
- 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
如果启用,只有当所有像素组件都满足条带检测阈值时,当前像素才会被修改,例如所有颜色组件触发阈值检测。 默认启用。
11.57.1 命令
此过滤器支持以上所有选项作为命令.
11.58 去区块
从输入视频中移除区块伪影。
过滤器接受以下选项:
- filter
设置过滤类型,可以是弱或强。默认值为强。 这控制了去区块的类型。
- block
设置区块大小,允许范围是4到512。默认值为8.
- alpha
- beta
- gamma
- delta
设置区块检测阈值。允许范围为0到1。 默认值为:0.098对于alpha和0.05对于其他项。 使用更高的阈值可以提高去区块的强度。 设置alpha控制区块边缘确切检测的阈值。 其余选项则控制接近边缘的检测阈值。 将任何选项设置为0将禁用去区块。
- planes
设置要过滤的平面。默认过滤所有可用平面。
11.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
11.58.2 命令
此过滤器支持以上所有选项作为命令.
11.59 降帧
在固定间隔内丢弃重复帧。
过滤器接受以下选项:
- cycle
设置每隔多少帧丢弃一个帧。 设置为N表示每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
。 如果启用,视频输出流将使用可变帧率。
11.60 去卷积
使用第二流作为冲击流,在频率域对视频流进行2D去卷积。
过滤器接受以下选项:
- planes
设置要处理的平面。
- impulse
设置哪些冲击视频帧将被处理,可以是第一个或全部。 默认值为全部.
- noise
进行分割时设置噪声。 默认值为0.0000001。当宽度和高度不相等且不是2的幂时或流在卷积前有噪声时非常有用。
该过滤器还支持deconvolve
帧同步选项。 options.
11.61 去点爬
减少视频中的交叉亮度(点爬现象)和交叉色彩(彩虹现象)。
它接受以下选项:
- m
设置操作模式。 可以是点爬用于减少交叉亮度,和/或彩虹用于减少交叉色彩。
- lt
设置空间亮度阈值。 较低的值增加交叉亮度减少效果。
- tl
设置时间亮度容差。 较高的值增加交叉亮度减少效果。
- tc
设置色彩时间变化容差。 较高的值增加交叉色彩减少效果。
- ct
设置时间色彩阈值。 较低的值增加交叉色彩减少效果。
11.62 收缩
对视频应用收缩特效。
此过滤器通过计算当前像素周围的较低值的局部(3x3)平均值替换像素。
它接受以下选项:
- threshold0
- threshold1
- threshold2
- threshold3
限制每个平面的最大变化值。 默认值为65535。 如果为0,平面将保持不变。
11.62.1 命令
此过滤器支持以上所有选项作为命令.
11.63 去闪烁
移除时间帧亮度变化。
它接受以下选项:
- size, s
设置移动平均滤波器的帧数。 默认值为5。 允许范围为2到129。
- mode, m
设置平均模式以平滑时间亮度变化。
可用值有:
- ‘am’
算术平均
- ‘gm’
几何平均
- ‘hm’
谐波平均
- ‘qm’
二次平均
- ‘cm’
立方平均
- ‘pm’
幂平均
- ‘median’
中值
- bypass
不实际修改帧。 仅用于获取元数据信息。
11.64 去颤动
移除由部分交织的转换内容引起的颤动。
颤动可以由某些操作导致,例如拉伸过滤器。如果原始来源为部分交织的转换内容,那么pullup,dejudder
的输出将会有可变帧率。这可能更改容器的记录帧率。
除了这一点变化,此过滤器不会影响固定帧率视频。
该过滤器可用的选项是:
- cycle
指定颤动重复的窗口长度。
接受任意大于1的整数。 有用的值包括:
- ‘4’
如果原始内容从24fps转换为30fps(电影转NTSC)。
- ‘5’
如果原始内容从25fps转换为30fps(PAL转NTSC)。
- ‘20’
如果两者混合的情况。
默认值为“4’.
11.65 去标志
通过简单插值周围像素来去除电视台标志。 只需设置覆盖标志的矩形区域即可看到标志消失(有时甚至出现更丑陋的结果——结果可能因操作不同)。
它接受以下参数:
- x
- y
指定标志的左上角坐标。 必须进行设置。
- w
- h
指定标志的宽度和高度以进行清除。 必须进行设置。
- show
如果设置为1,将在屏幕上绘制一个绿色矩形,以简化寻找正确的x, y, w和h参数。 默认值为0。
矩形在最外层像素上绘制,这些像素将被(部分)替换为插值值。 紧邻此矩形外部的像素将在各个方向上用于计算矩形内部的插值像素值。
11.65.1 示例
- 设置左上角坐标为0,0,大小为100x77的区域矩形覆盖标志区域:
delogo=x=0:y=0:w=100:h=77
11.66 去雨
通过应用基于卷积神经网络的去雨方法,从输入图像/视频中移除雨。 支持的模型:
- 循环挤压与扩展上下文聚合网络(RESCAN)。 详见http://openaccess.thecvf.com/content_ECCV_2018/papers/Xia_Li_Recurrent_Squeeze-and-Excitation_Context_ECCV_2018_paper.pdf.
训练以及模型生成脚本在以下存储库中提供:https://github.com/XueweiMeng/derain_filter.git.
过滤器接受以下选项:
- filter_type
指定使用的过滤器。 该选项接受以下值:
- ‘derain’
去雨过滤器。 进行去雨过滤,需要使用去雨模型。
- ‘dehaze’
去雾过滤器。 进行去雾过滤,需要使用去雾模型。
默认值为“derain’.
- dnn_backend
指定用于模型加载和执行的DNN后端。 该选项接受以下值:
- ‘tensorflow’
TensorFlow后端。 要启用此后端,需要安装TensorFlow for C库(详见https://www.tensorflow.org/install/lang_c),并使用以下命令配置FFmpeg:
--enable-libtensorflow
- model
设置到模型文件的路径,模型文件指定了网络架构及其参数。 注意,不同后端使用不同的文件格式。TensorFlow仅能加载其格式的文件。
为了获得完整功能(例如异步执行),请使用DNN图像处理过滤器。
11.67 去抖动
尝试修复水平和/或垂直方向的小变化。 此过滤器有助于消除手持相机拍摄的抖动、三脚架被碰撞、在车辆上移动等造成的抖动。
过滤器接受以下选项:
- x
- y
- w
- h
指定一个矩形区域来限制运动矢量搜索范围。 如果需要,可以限制运动矢量搜索到由其左上角、宽度和高度定义的矩形区域。 这些参数的意义与drawbox过滤器相同,可用于可视化边界框位置。
当画面内的物体的同时移动可能被运动矢量搜索误认为是摄像机运动时,这非常有用。
如果x, y, w和h中的任意一个或全部设置为-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
如果设置,将写入指定文件的详细运动搜索日志。
11.68 去色溢
去除由绿幕或蓝幕反射颜色引起的前景颜色的污染。
此滤镜接受以下选项:
- type
设置使用何种去色溢类型。
- mix
设置溢出的生成方式。
- expand
设置去除仍然存在的溢出程度。
- red
控制溢出区域的红色含量。
- green
控制溢出区域的绿色含量。 对于绿幕应设置为-1。
- blue
控制溢出区域的蓝色含量。 对于蓝幕应设置为-1。
- brightness
控制溢出区域的亮度,同时保留颜色。
- alpha
从生成的溢出图中修改alpha值。
11.68.1 命令
此滤镜支持上述所有选项作为命令.
11.69 去隔行处理
完全逆转隔行扫描操作。需要使用与传递给隔行扫描滤镜的预定义模式相同的模式。
此滤镜接受以下选项:
- first_field
- ‘top, t’
顶场优先
- ‘bottom, b’
底场优先 默认值是
top
.
- pattern
表示要应用的下拉模式的数字字符串。 默认值是
23
.- start_frame
表示第一个帧相对于隔行扫描模式的位置的数字。若流被剪辑,需使用此选项。默认值是
0
.
11.70 膨胀
对视频应用膨胀效果。
此滤镜通过局部(3x3)最大值替换像素。
它接受以下选项:
- threshold0
- threshold1
- threshold2
- threshold3
限制每个平面的最大变化量,默认值为65535。 如果为0,平面将保持不变。
- coordinates
指定参考像素的标志。默认值为255,即使用所有八个像素。
标志与局部3x3坐标的映射如下:
1 2 3 4 5 6 7 8
11.70.1 命令
此滤镜支持上述所有选项作为命令.
11.71 位移
根据第二和第三输入流指示来位移像素。
它接收三个输入流并输出一个流,第一个输入是源,第二和第三输入是位移图。
第二个输入指定沿x轴位移像素的量,第三个输入指定沿y轴位移像素的量。 如果其中一个位移图流终止,将使用该位移图的最后一帧。
请注意,一旦生成,位移图可以反复使用。
以下是接受的选项的描述。
- edge
为超出范围的像素设置位移行为。
可用值为:
- ‘blank’
缺失像素将被黑色像素取代。
- ‘smear’
相邻像素将展开以取代缺失的像素。
- ‘wrap’
超出范围的像素将被包裹,使其指向另一侧的像素。
- ‘mirror’
超出范围的像素将被镜像的像素取代。
默认值是smear’.
11.71.1 示例
- 为高清720尺寸的视频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
- 为高清720尺寸的视频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
11.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获取适合您系统的配置。
11.73 dnn_检测
使用深度神经网络进行目标检测。
该滤镜接受以下选项:
- dnn_backend
指定用于模型加载和执行的DNN后端。此选项目前仅支持openvino,稍后会添加tensorflow后端。
- model
设置描述网络架构及其参数的模型文件路径。 请注意,不同的后端使用不同的文件格式。
- input
设置DNN网络的输入名称。
- output
设置DNN网络的输出名称。
- confidence
设置置信度阈值(默认值:0.5)。
- labels
设置描述标签ID和名称之间映射的标签文件路径。 每一行记录一个标签名称,尾随空格和空行将被跳过。 第一行是标签ID 0的名称(通常是'background'),第二行是标签ID 1的名称,等等。 如果没有提供标签文件,将用标签ID作为名称。
- backend_configs
设置传递给后端的配置。要使用异步执行,请设置为异步(默认:设置)。如果后端不支持异步,将回滚到同步执行。
11.74 dnn_处理
使用深度神经网络进行图像处理。它与另一个滤镜配合使用,将帧的像素格式转换为DNN网络需要的格式。
该滤镜接受以下选项:
- dnn_backend
指定用于模型加载和执行的DNN后端。此选项接受以下值:
- ‘tensorflow’
TensorFlow后端。要启用此后端,您需要安装TensorFlow的C库(请参阅https://www.tensorflow.org/install/lang_c)并使用以下配置FFmpeg。
--enable-libtensorflow
- ‘openvino’
OpenVINO后端。要启用此后端,您需要构建和安装OpenVINO的C库(请参阅https://github.com/openvinotoolkit/openvino/blob/master/build-instruction.md)并使用以下配置FFmpeg。
--enable-libopenvino
(如果头文件和库没有安装到系统路径中,可能需要额外的编译标志--extra-cflags=-I... --extra-ldflags=-L...)- ‘torch’
Libtorch后端。要启用此后端,您需要构建和安装Libtorch的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
设置DNN网络的输入名称。
- output
设置DNN网络的输出名称。
- backend_configs
设置传递给后端的配置。要使用异步执行,请设置为异步(默认:设置)。如果后端不支持异步,将回滚到同步执行。
对于tensorflow后端,可以通过选项sess_config设置其配置,请使用tools/python/tf_sess_config.py获取适合您系统的TensorFlow后端配置。
11.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格式帧中的Y通道,使用srcnn.pb(请参阅超分辨率滤镜,支持平面YUV格式):
./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格式)的帧中的Y通道,使用espcn.pb(请参阅超分辨率滤镜),会更改帧大小,请使用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
11.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, w和h以及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, 宽度和高度将被忽略,并且仍然使用来自旁数据检测框的框数据。所以如果您不确定框源,请不要使用此参数。
- t
绘制框的厚度。
这些常量允许x, y, w, h和t的表达式相互引用,因此您可以例如指定
y=x/dar
或h=w/dar
.
11.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
11.75.2 命令
此滤镜支持与选项相同的命令。 命令采用与对应选项相同的语法。
如果指定的表达式无效,则保持其当前值。
11.76 绘制图表
使用输入视频的元数据绘制图表。
它接受以下参数:
- m1
设置用于绘制图表的一帧元数据键。
- fg1
设置第一个前景颜色表达式。
- m2
设置用于绘制图表的第二帧元数据键。
- fg2
设置第二个前景颜色表达式。
- m3
设置用于绘制图表的第三帧元数据键。
- fg3
设置第三个前景颜色表达式。
- m4
设置第4帧的元数据键,图表将使用该键的元数据值绘制。
- fg4
设置第4个前景色表达式。
- 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
11.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, w和h及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, h和t表达式可以互相引用,因此您可以例如指定
y=x/dar
或h=w/dar
.
11.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
11.77.2 命令
此过滤器支持与选项相同的命令。 命令接受与对应选项相同的语法。
如果指定的表达式无效,则保持当前值不变。
11.78 绘制文本
使用libfreetype库,在视频顶部绘制一个文本字符串或来自指定文件的文本。
若要启用此过滤器的编译,需使用以下配置指令配置FFmpeg--enable-libfreetype
以及--enable-libharfbuzz
。
若要启用默认字体回退和font选项,需要使用以下配置指令配置FFmpeg--enable-libfontconfig
。
若要启用text_shaping选项,需要使用以下配置指令配置FFmpeg--enable-libfribidi
.
11.78.1 语法
它接受以下参数:
- box
使用背景色在文本周围绘制一个框。 值必须为1(启用)或0(禁用)。 默认值为box是0。
- boxborderw
设定框周围边框的宽度,使用boxcolor。 该值必须使用以下格式之一指定:
-
boxborderw=10
将所有四个边框的宽度设置为10 -
boxborderw=10|20
将顶部和底部边框宽度设置为10,将左右边框宽度设置为20 -
boxborderw=10|20|30
设置顶部边框宽度为10,底部边框宽度为30,左右边框宽度为20 -
boxborderw=10|20|30|40
分别设置边框宽度为10(顶部),20(右),30(底部),40(左)
默认值为boxborderw是"0"。
-
- boxcolor
用于在文本周围绘制框的颜色。有关此选项的语法,请查看(ffmpeg-utils)"颜色"部分,在ffmpeg-utils手册中.
默认值为boxcolor是"白色"。
- line_spacing
设定线间距(以像素为单位)。默认值为line_spacing是0。
- text_align
设定文本相对于框边界的纵横对齐方式。 值是一个标志组合,一个用于垂直对齐(T=顶部,M=中部,B=底部), 一个用于水平对齐(L=左边,C=中间,R=右边)。 请注意,Tab字符仅支持左水平对齐。
- y_align
指定y值的参照点。可能的值有:
-
text
第一行文本的最高字形顶部与y -
baseline
第一行文本的基线与y -
font
第一行文本的基线与y加上字体度量中定义的上升(以像素为单位)对齐
默认值为y_align是"text",以确保向后兼容性。
-
- borderw
设置文本周围边框的宽度,使用bordercolor。 默认值为borderw是0。
- bordercolor
设置用于绘制文本周围边框的颜色。有关此选项的语法,请查看(ffmpeg-utils)"颜色"部分,在ffmpeg-utils手册中.
默认值为bordercolor是"黑色"。
- expansion
选择text扩展方式。可以是
none
,strftime
(已弃用)或normal
(默认)。详见文本扩展部分。- basetime
设置计数的起始时间。值以微秒为单位。仅在弃用的
strftime
扩展模式中应用。 如需在正常扩展模式模拟,请使用pts
函数,在第二个参数中提供起始时间(以秒为单位)。- fix_bounds
如果为真,检查并修正文本坐标以避免剪裁。
- fontcolor
用于绘制字体的颜色。有关此选项的语法,请查看(ffmpeg-utils)"颜色"部分,在ffmpeg-utils手册中.
默认值为fontcolor是"黑色"。
- fontcolor_expr
字符串,其扩展方式与text相同,用来动态获取fontcolor的值。默认此选项为空值,不被处理。 当此选项设置时,覆盖fontcolor选项。
- font
用于绘制文本的字体系列。默认是Sans。
- fontfile
用于绘制文本的字体文件。路径必须包括。 如果禁用了fontconfig支持,这个参数是必须的。
- alpha
绘制文本时应用Alpha混合。值可以是0.0到1.0之间的数字。 表达式也可以接受变量x,y。 默认值是1。 请参阅fontcolor_expr.
- fontsize
用于绘制文本的字体大小。 默认值为fontsize是16。
- text_shaping
如果设为1,则尝试在绘制文本之前对其进行整形(例如,逆转右到左的文本顺序,并连接阿拉伯字符)。 否则,仅按给定文本绘制。 默认值为1(如果受支持)。
- ft_load_flags
用于加载字体的标志。
这些标志映射到libfreetype支持的对应标志,是以下值的组合:
- 默认
- 不缩放
- 无提示
- 渲染
- 无位图
- 垂直布局
- 强制自动提示
- 裁剪位图
- 严格
- 忽略全局提前宽度
- 不递归
- 忽略变换
- 单色
- 线性设计
- 无自动提示
默认值是"默认"。
有关更多信息,请查阅libfreetype标志的FT_LOAD_*文档。
- shadowcolor
用于在绘制文本后绘制阴影的颜色。有关此选项的语法,请查看(ffmpeg-utils)"颜色"部分,在ffmpeg-utils手册中.
默认值为shadowcolor是"黑色"。
- boxw
设置文本周围框的宽度。 默认值为boxw是根据文本宽度自动计算的。
- boxh
设置文本周围框的高度。 默认值为boxh是根据文本高度自动计算的。
- shadowx
- shadowy
文本阴影位置相对于文本位置的x和y偏移量。 它们可以是正值或负值。 两个偏移量的默认值为"0"。
- start_number
用于n/frame_num变量的起始帧号。默认值是"0"。
- tabsize
渲染Tab的空格数大小。 默认值是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.
如果同时指定了text和textfile,会抛出错误。
- text_source
如果想将检测框的附加数据中的文本数据用于绘制,文本来源应设置为side_data_detection_bboxes。
如果设置了文本来源,text和textfile将被忽略,但仍然会使用检测框的附加数据中的文本数据。 因此,如果不确定文本来源,请不要使用此参数。
- reload
文件textfile将在指定的帧间隔重新加载。 请务必以原子方式更新textfile,否则可能会被部分读取,或甚至失败。 范围是0到INT_MAX。默认值是0。
- x
- y
指定表达式,用于在视频帧内绘制文本的偏移量。 它们是相对于输出图像的顶部和左边界的。
默认值为x和y是"0"。
参见下面接受的常量和函数的列表。
有关x和y的参数是包含以下常量和函数的表达式:
- dar
输入显示的宽高比例,与(w / h) * 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偏移坐标。
这些参数允许x和y表达式可以相互引用,因此例如可以指定
y=x/dar
.- pict_type
当前帧的画面类型的一个字符描述。
- pkt_pos
当前包在输入文件或流中的位置(以字节为单位,从输入起始位置算起)。值为-1表示这条信息不可用。
- duration
当前包的持续时间,以秒为单位。
- pkt_size
当前包的大小(以字节为单位)。
11.78.2 文本扩展
如果expansion设置为strftime
,滤镜会识别strftime
C函数接受的内容并在提供的文本中相应扩展它们。请查看的文档strftime
。此功能已弃用,建议使用normal
扩展以及gmtime
或localtime
扩展功能。
如果expansion设置为none
,文本将按原样打印。
如果expansion设置为normal
(默认值),将使用以下扩展机制。
反斜杠字符“\”,后接任意字符,总是扩展为第二个字符。
形式为%{...}
的序列会被扩展。大括号之间的文本是一个函数名,可能后接用 ’:’ 分隔的参数。如果参数包含特殊字符或分隔符(’:’ 或 ’}’),必须对其进行转义。
请注意,它们可能还需要作为过滤器参数字符串中的text值以及在滤波器图描述中也要转义,并且很可能还需要为shell转义,总共高达四级转义;使用带有textfile选项的文本文件可避免这些问题。
以下函数可用:
expr, e
表达式计算结果。
它必须采用一个参数以指定要评估的表达式,该表达式接受与x和y值相同的常量和函数。请注意,不应使用所有常量,例如在评估表达式时文本大小未知,因此常量text_w和text_h将具有未定义的值。
expr_int_format, eif
计算表达式的值并作为格式化整数输出。
第一个参数是要评估的表达式,与expr函数相同。第二个参数指定输出格式。允许的值为“x’, ‘X’, ‘d”和“u”。它们与
printf
函数中完全一样对待。第三个参数是可选的,用于设置输出占用的位置数。可以用来从左边添加填充零。gmtime
表示滤镜运行的时间,以UTC表示。可以接受一个参数:一个
strftime
C函数格式字符串。格式字符串扩展支持变量%[1-6]N,可打印秒的分数,位数可选。localtime
表示滤镜运行的时间,使用本地时区表示。可以接受一个参数:一个
strftime
C函数格式字符串。格式字符串扩展支持变量%[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)显示格式化时间戳的小时部分。如果格式设置为
localtime
或gmtime
,可以提供第三个参数strftime
C函数格式字符串。默认情况下,将使用YYYY-MM-DD HH:MM:SS格式。
11.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
- 字体大小
- 字体颜色
- 框颜色
- 边框颜色
- 阴影颜色
- 框
- 框宽
- 框高
- 框边框宽
- 行间距
- 文本对齐
- 阴影x位移
- 阴影y位移
- 边框宽度
11.78.4 示例
- 使用字体FreeSerif绘制"Test Text",可选参数使用默认值。
drawtext="fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text'"
- 在位置x=100和y=50绘制字体为FreeSerif、大小为24的"Test Text"(以屏幕左上角为起点计数),文字为黄色,周围有一个红色框。文字和框的透明度均为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'
- 绘制字体大小依赖于视频高度的"Test Text"。
drawtext="text='Test Text': fontsize=h/30: x=(w-text_w)/2: y=(h-text_h*2)"
- 打印实时编码的日期(请参阅
strftime
C函数的文档):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_a和fontsize值包含在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.
11.79 edgedetect
检测并绘制边缘。此滤镜使用Canny边缘检测算法。
该滤镜接受以下选项:
- low
- high
设置用于Canny阈值算法的低阈值和高阈值。
高阈值选择“强”边缘像素,然后通过8连通性连接到低阈值选择的“弱”边缘像素。
低和高阈值必须在范围[0,1]内选择,并且低应当小于或等于高.
默认值为低是
20/255
,高阈值默认值为 is50/255
.- mode
定义绘制模式。
- ‘wires’
在黑色背景上绘制白色/灰色线条。
- ‘colormix’
混合颜色以创建绘画/卡通效果。
- ‘canny’
对所有选定的平面应用Canny边缘检测器。
默认值为线条.
- planes
选择需要过滤的平面。默认情况下过滤所有可用平面。
11.79.1 示例
- 标准边缘检测,自定义值进行有滞后阈值处理:
edgedetect=low=0.1:high=0.4
- 无需阈值处理的绘画效果:
edgedetect=mode=colormix:high=0
11.80 elbg
使用增强LBG算法应用分色效果。
对于每个输入图像,滤镜会根据代码簿长度(即不同输出颜色的数量)计算从输入到输出的最佳映射。
该滤镜接受以下选项。
- codebook_length, l
设置代码簿长度。该值必须为正整数,表示不同输出颜色的数量。默认值为256。
- nb_steps, n
设置计算最佳映射的最大迭代次数。值越高,结果越好,计算时间也越高。默认值为1。
- seed, s
设置随机种子,必须是0到UINT32_MAX之间的整数。如果未指定或者显式地设置为-1,滤镜将尽力使用一个良好的随机种子。
- pal8
设置pal8输出像素格式。此选项不适用于代码簿长度大于256的情况。默认禁用。
- use_alpha
在量化计算中包含alpha值。这允许创建带有多种alpha平滑混合的调色板化输出图像(例如PNG8)。
11.81 entropy
测量视频帧的颜色通道直方图中的灰度熵。
接受以下参数:
- mode
可以是正常或差分。默认值为正常.
差分模式测量直方图差值的熵,即相邻直方图值之间的绝对差。
11.82 epx
应用专为像素艺术设计的EPX放大滤镜。
接受以下选项:
- n
设置缩放维度:
2
用于2xEPX
,3
用于3xEPX
。 默认值为3
.
11.83 eq
设置亮度、对比度、饱和度以及近似伽马调整。
此滤镜接受以下选项:
- contrast
设置对比度表达式。数值必须在范围
-1000.0
至1000.0
之间的浮点值。默认值为"1"。- brightness
设置亮度表达式。数值必须在范围
-1.0
至1.0
之间的浮点值。默认值为"0"。- saturation
设置饱和度表达式。数值必须在范围
0.0
至3.0
之间的浮点值。默认值为"1"。- gamma
设置伽马表达式。数值必须在范围
0.1
至10.0
之间的浮点值。默认值为"1"。- gamma_r
设置红色伽马表达式。数值必须在范围
0.1
至10.0
之间的浮点值。默认值为"1"。- gamma_g
设置绿色伽马表达式。数值必须在范围
0.1
至10.0
之间的浮点值。默认值为"1"。- gamma_b
设置蓝色伽马表达式。数值必须在范围
0.1
至10.0
. 默认值为 "1"。- gamma_weight
设置伽马权重表达式。可以用来减少高伽马值对亮图像区域的影响,例如防止它们被过度放大并变成纯白色。值必须是范围内的浮点数
0.0
到1.0
。值为0.0
将伽马校正完全降低,而值为1.0
保持校正的全强度。默认值为 "1"。- eval
设置评估亮度、对比度、饱和度以及伽马表达式的时间。
它接受以下值:
- ‘init’
仅在滤镜初始化或处理命令时评估表达式一次
- ‘frame’
为每帧输入评估表达式
默认值是init’.
表达式接受以下参数:
- n
输入帧的帧计数,从0开始
- pos
输入文件中对应数据包的字节位置,如果未指定则为 NAN;已弃用,不使用
- r
输入视频的帧率,如果输入帧率未知则为 NAN
- t
以秒为单位的时间戳,如果输入时间戳未知则为 NAN
11.83.1 命令
该滤镜支持以下命令:
- contrast
设置对比度表达式。
- brightness
设置亮度表达式。
- saturation
设置饱和度表达式。
- gamma
设置伽马表达式。
- gamma_r
设置 gamma_r 表达式。
- gamma_g
设置 gamma_g 表达式。
- gamma_b
设置 gamma_b 表达式。
- gamma_weight
设置 gamma_weight 表达式。
命令接受与对应选项相同的语法。
如果指定的表达式无效,则保持当前值。
11.84 腐蚀
对视频应用腐蚀效果。
该滤镜通过局部(3x3)最小值替换像素。
它接受以下选项:
- threshold0
- threshold1
- threshold2
- threshold3
限制 每个平面的最大变化量,默认为 65535。如果为0,平面将保持不变。
- coordinates
指定参考像素的标志。默认值为 255,即使用所有八个像素。
局部 3x3 坐标标志映射如下:
1 2 3 4 5 6 7 8
11.84.1 命令
此滤镜支持上述所有选项作为命令.
11.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
六点插值。
11.85.1 命令
此滤镜支持与选项相同的命令。
11.86 曝光
调整视频流的曝光。
该滤镜接受以下选项:
- exposure
设置曝光校正值(单位EV)。允许范围是 -3.0 到 3.0 EV。 默认值是 0 EV。
- black
设置黑电平校正。允许范围是 -1.0 到 1.0。 默认值是 0。
11.86.1 命令
此滤镜支持与选项相同的命令。
11.87 提取平面
从输入视频流中提取颜色通道组件到单独的灰度视频流。
该滤镜接受以下选项:
- planes
设置要提取的平面。
可用的平面值为:
- ‘y’
- ‘u’
- ‘v’
- ‘a’
- ‘r’
- ‘g’
- ‘b’
在输入中不可用的平面将会引发错误。 这意味着您不能同时选择
r
,g
,b
和y
,u
,v
平面。
11.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
11.88 淡入/淡出
对输入视频应用淡入/淡出效果。
它接受以下参数:
- type, t
效果类型可以是 "in" 表示淡入,或 "out" 表示淡出效果。 默认值为
in
.- start_frame, s
指定开始应用淡入/淡出效果的帧号。默认值为 0。
- nb_frames, n
淡入/淡出效果持续的帧数。在淡入效果结束时,输出视频将与输入视频具有相同的强度。 在淡出过渡结束时,输出视频将被所选颜色填充。color。 默认值为 25。
- alpha
如果设置为 1,仅淡化 alpha 通道(如果输入中存在)。 默认值为 0。
- start_time, st
指定开始应用淡入/淡出效果的帧的时间戳(以秒为单位)。如果同时指定了 start_frame 和 start_time,淡入/淡出的开始时间将是两者中较晚的。默认值为 0。
- duration, d
指定淡入/淡出效果需要持续的时间(单位:秒)。在淡入效果结束时,输出视频将与输入视频具有相同的强度; 在淡出过渡结束时,输出视频将被所选颜色填充。color。 如果同时指定了 duration 和 nb_frames,则使用 duration。默认值为 0(默认使用 nb_frames)。
- color, c
指定淡入/淡出的颜色。默认是 "黑色"。
11.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帧淡入 alpha:
fade=in:0:25:alpha=1
- 将前5.5秒设为黑色,然后淡入0.5秒:
fade=t=in:st=5.5:d=0.5
11.89 反馈
应用反馈视频滤镜。
该滤镜将裁剪的输入帧传递到第二个输出。 在此之后,它可以用其他视频滤镜进行过滤。 当滤镜从第二个输入接收到帧后,该帧 会与来自第一个输入的原始帧合并并传递到第一个输出。
典型用法是仅过滤帧的一部分。
该滤镜接受以下选项:
- x
- y
设置左上裁剪位置。
- w
- h
设置裁剪大小。
11.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]
11.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。
11.91 fftfilt
在频域中对样本应用任意表达式
- dc_Y
调整图像亮度平面的直流值(增益)。滤镜接受范围内的整数值
0
到1000
。默认值设置为0
.- dc_U
调整图像第一色度平面的直流值(增益)。滤镜接受范围内的整数值
0
到1000
。默认值设置为0
.- dc_V
调整图像第二色度平面的直流值(增益)。滤镜接受范围内的整数值
0
到1000
。默认值设置为0
.- weight_Y
设置亮度平面的频域权重表达式。
- weight_U
设置第一色度平面的频域权重表达式。
- weight_V
设置第二色度平面的频域权重表达式。
- eval
设置表达式的评估时间。
它接受以下值:
- ‘init’
仅在滤镜初始化时评估表达式一次。
- ‘frame’
为每个输入帧评估表达式。
默认值是init’.
滤镜接受以下变量:
- X
- Y
当前样本的坐标。
- W
- H
图像的宽度和高度。
- N
输入帧的编号,从0开始。
- WS
- HS
用于水平和垂直处理的FFT数组大小。
11.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)))'
11.92 场
使用步幅算法从隔行图像中提取单个场以避免浪费 CPU 时间。输出帧被标记为非隔行。
该滤镜接受以下选项:
- type
指定是提取顶部(如果值为
0
或top
)还是底部(如果值为1
或bottom
).
11.93 场提示
通过提示文件中列出的数字从周围的帧中复制顶部和底部场以创建新帧。
- hint
设置包含提示的文件:绝对/相对帧数。
剪辑中的每一帧必须有一行。每行必须包含两个用逗号分隔的数字,后面可以选择性地跟随
-
或+
。 文件中提供的每行数字不能超出 [N-1,N+1] 范围,其中 N 是当前帧编号(对于absolute
模式),或超出 [-1, 1] 范围 对于relative
模式。第一个数字指示从哪个帧拾取顶部场,第二个数字指示从哪个帧拾取底部场。如果后面选择性地跟随
+
输出帧将被标记为隔行,否则如果跟随-
输出帧将被标记为进程,否则其标记将保持与输入帧相同。 如果后面选择性地跟随t
输出帧将仅使用顶部场,或者在b
的情况下仅使用底部场。 如果行以#
或;
开头,则跳过该行。- mode
可以是项目
absolute
或relative
或pattern
。默认值是absolute
。pattern
模式与relative
模式相同,除了文件的最后一个条目处,如果仍有更多帧需要处理,则hint
文件会返回到开头。
示例hint
模式的提示文件的前几行:relative
mode:
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 -
11.94 场匹配
隔行逆变换的场匹配滤镜。旨在从隔行编码流中重建渐进帧。该滤镜不会删除重复帧,因此要实现完整的隔行逆变换fieldmatch
需要跟随一个降采样滤镜,例如消减在过滤图中。
将场匹配和消减分离的主要目的是可以在两者之间插入去隔行滤镜作为备选方案。如果源包含混合的电影音频内容和真正的隔行扫描内容,fieldmatch
将无法为隔行扫描部分匹配场。但这些剩余的交错帧将被标记为隔行扫描,因此可以由后续的滤镜(例如yadif)进行去隔行处理,在进行消减之前。
除了各种配置选项外,fieldmatch
还可以接受一个可选的第二流,通过ppsrc选项启用。启用时,帧重建将基于第二流的场和帧。这使得可以对第一个输入进行预处理,以帮助滤镜的各种算法,同时保持输出无损(假设场匹配正确)。通常,场感知去噪器或亮度/对比度调整可以提供帮助。
注意,这个滤镜使用的是与 TIVTC/TFM(AviSynth 项目)和 VIVTC/VFM(VapourSynth 项目)相同的算法。后者是 TFM 的一个轻量级克隆,fieldmatch
基于此。尽管语义和用法非常接近,但某些行为和选项名称可能有所不同。
当前消减滤镜仅适用于恒定帧率输入。如果您的输入包含混合的电影音频(30fps)和帧率较低(如 24fps)的渐进式内容,请使用以下过滤器链来生成所需的恒定帧率流:dejudder,fps=30000/1001,fieldmatch,decimate
.
该滤镜接受以下选项:
- order
指定输入流的假定场序列。可用值为:
- ‘auto’
自动检测场序(使用 FFmpeg 的内部场序值)。
- ‘bff’
假设底场优先。
- ‘tff’
假设顶场优先。
请注意,有时建议不要信任流所声明的场序。
默认值为auto.
- mode
设置要使用的匹配模式或策略。pc模式在尽可能避免由于重复帧而引起卡顿方面最为安全,但如果存在糟糕的编辑或混合场,它最终可能会输出交错帧,即使可能存在良好的匹配。另一方面,pcn_ub模式在引起卡顿方面风险最大,但几乎总能找到一个好帧(如果存在)。其他值在pc和pcn_ub之间的某个位置平衡了卡顿风险和重复帧的创建,与在有糟糕编辑、孤立场、混合场的情况下找到良好的匹配。
关于 p/c/n/u/b 的更多详细信息,请参见p/c/n/u/b 含义节。
可用值为:
- ‘pc’
2 路匹配 (p/c)
- ‘pc_n’
2 路匹配,如果仍然有交错则尝试第 3 次匹配 (p/c + n)
- ‘pc_u’
2 路匹配,如果仍然有交错则尝试第 3 次匹配(相同顺序)(p/c + u)
- ‘pc_n_ub’
2 路匹配,如果仍然有交错则尝试第 3 次匹配,然后尝试第 4/5 次匹配 (p/c + n + u/b)
- ‘pcn’
3 路匹配 (p/c/n)
- ‘pcn_ub’
3 路匹配,如果所有 3 次原始匹配都检测为交错则尝试第 4/5 次匹配 (p/c/n + u/b)
括号中的内容表明该模式将使用哪种匹配,假设order=tff(以及field根据auto或top).
就速度而言,pc模式远远是最快的,而pcn_ub是最慢的。
默认值为pc_n.
- ppsrc
将主输入流标记为预处理输入,并启用次要输入流作为干净源来选择场。有关更多详细信息,请参阅滤镜介绍。这类似于clip2VFM/TFM 的功能。
默认值为
0
(禁用)。- field
设置用于匹配的场。建议将其设置为与order相同的值,除非您在使用该设置时遇到匹配失败问题。在某些情况下,改变用于匹配的场可能对匹配性能有很大影响。可用值为:
- ‘auto’
自动(值与order).
- ‘bottom’
从底场匹配。
- ‘top’
从顶场匹配。
默认值为auto.
- mchroma
设置匹配比较时是否包含色度。在大多数情况下,建议启用此选项。只有当您的剪辑存在严重的色度问题(如明显的彩虹或其他伪影)时,才应将此选项设置为
0
。设置为0
也可以在牺牲一些准确性的情况下提高效率。默认值为
1
.- y0
- y1
这些定义了一个排除带,用于排除场匹配决策中y0和y1之间的行。排除带可以用于忽略字幕、徽标或可能干扰匹配的其他内容。y0设置起始扫描行,y1设置结束行;所有介于y0和y1之间(包括y0和y1)的行将被忽略。设置y0和y1为相同值将禁用此功能。y0和y1默认值为
0
.- scthresh
将场景更改检测阈值设置为亮度平面的最大更改百分比。推荐的值范围为
[8.0, 14.0]
。场景更改检测只有在combmatch=sc的情况下相关。scthresh范围是[0.0, 100.0]
.默认值为
12.0
.- combmatch
当combatch不是none,
fieldmatch
时,将考虑匹配的交错分数来决定最终匹配使用的匹配项。可用值为:- ‘none’
基于交错分数不进行最终匹配。
- ‘sc’
只有在检测到场景更改时才使用交错分数。
- ‘full’
始终使用交错分数。
默认是sc.
- combdbg
强制
fieldmatch
计算某些匹配的交错指标并打印。这一设置在 TFM/VFM 术语中被称为micout。可用值为:- ‘none’
无强制计算。
- ‘pcn’
强制计算 p/c/n。
- ‘pcnub’
强制计算 p/c/n/u/b。
默认值为none.
- cthresh
这是用于检测交错帧的区域交错阈值。这实际上控制了交错必须达到的“强度”或“可见性”以被检测到。较大的值意味着交错必须更加明显,较小的值意味着即使是较不明显或较弱的交错也能被检测到。有效设置范围为
-1
(每个像素都将被检测为交错)到255
(没有像素将被检测为交错)。这基本上是一个像素差值。推荐的范围是[8, 12]
.默认值为
9
.- chroma
设置在交错帧决策中是否考虑色度。只有在源出现色度问题(如彩虹效果等)并导致启用色度时交错帧检测出现问题时才禁用此功能。事实上,使用chroma=0通常更加可靠,除非出现只有色度交错的问题。
默认值为
0
.- blockx
- blocky
分别设置在交错帧检测期间使用的窗口的 x 轴和 y 轴大小。这与在任何combpel大小的区域内需要检测到的交错像素数有关,才能将整个帧判定为交错。有关更多信息,请参阅combpel参数描述。可能的值为从 4 开始的 2 的幂,一直到 512。
默认值为
16
.- combpel
在帧的任意blocky乘blockx大小的块内检测到的交错像素数,判断帧是否为交错帧。虽然cthresh控制交错必须达到的“可见性”,但此设置控制帧上任意局部区域(由blockx和blocky设置定义的窗口)中必须有的“交错数量”。最小值为
0
,最大值为blocky x blockx
(此时任何帧都不会被检测为交错)。这一设置在 TFM/VFM 术语中被称为MI。默认值为
80
.
11.94.1 p/c/n/u/b 的含义
11.94.1.1 p/c/n
我们假定以下电影音频流:
Top fields: 1 2 2 3 4 Bottom fields: 1 2 3 4 4
数字对应于场与渐进帧的关系。在这里,前两个帧为渐进帧,第 3 和第 4 为交错帧,以此类推。
当fieldmatch
配置为从底场进行匹配时 (field=bottom),输入流将转化如下:
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
伴随场匹配的结果,我们可以观察到某些帧被重复。为了完成完整的逆电影音频,需要依赖一个消减滤镜进行进一步操作。例如,参见消减滤镜。
现在使用顶部场匹配 (field=top) 时,相同的操作如下:
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, c和n的含义;它们基本上指代了相反场序的帧和场:
- p匹配前一帧中相反场序的场
- c匹配当前帧中相反场序的场
- n匹配下一帧中相反场序的场
11.94.1.2 u/b
u和b匹配有些特殊,因为它们是基于相反场序标志进行的匹配。在以下例子中,假定我们当前在匹配第 2 帧(顶部:2,底部:2)。根据匹配,每个匹配的场都会在其上方和下方放置一个‘x’。 matching are a bit special in the sense that they match from the opposite parity flag. In the following examples, we assume that we are currently matching the 2nd frame (Top:2, bottom:2). According to the match, a ’x’ is placed above and below each matched fields.
使用底部场匹配 (field=bottom):
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=top):
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
11.94.2 示例
简单的顶场优先电影音频流的逆转
fieldmatch=order=tff:combmatch=none, decimate
高级电影音频逆转,对仍然交错的帧使用yadif作为后备:
fieldmatch=order=tff:combmatch=full, yadif=deint=interlaced, decimate
11.95 fieldorder
转换输入视频的场顺序。
它接受以下参数:
- order
输出场顺序。有效值为tff顶场优先或bff底场优先。
默认值为tff’.
转换是通过将图像内容向上或向下移动一行来完成的,并用适当的图像内容填充剩余的行。这种方法与大多数广播场序转换器一致。
如果输入视频未标记为隔行扫描或已标记为所需的输出场顺序,则此滤镜不会更改输入视频。
它在转换为或从 PAL DV 材料转换时非常有用,PAL DV 是底场优先。
例如:
ffmpeg -i in.vob -vf "fieldorder=bff" out.dv
11.96 fillborders
填充输入视频的边界,而不改变视频尺寸。有时视频可以在四个边缘存在无用信息,而您可能不希望裁剪视频输入以保持尺寸是某个数的倍数。
此滤镜接受以下选项:
- left
从左边界开始填充的像素数量。
- right
从右边界开始填充的像素数量。
- top
从上边界开始填充的像素数量。
- bottom
从下边界开始填充的像素数量。
- mode
设置填充模式。
它接受以下值:
- ‘smear’
使用最外面的像素填充像素
- ‘mirror’
使用镜像(半样本对称)填充像素
- ‘fixed’
使用常数值填充像素
- ‘reflect’
使用反射(整样本对称)填充像素
- ‘wrap’
使用包裹模式填充像素
- ‘fade’
将像素渐变为常量值
- ‘margins’
使用靠近边界的像素的加权平均值填充顶部和底部的像素
默认值为smear.
- color
设置固定或渐变模式下的像素颜色。默认值为black.
11.96.1 命令
此滤镜支持与选项相同的命令。命令接受与相应选项相同的语法。
如果指定的表达式无效,则保持当前值。
11.97 find_rect
在输入视频中查找矩形对象。
要搜索的对象必须以灰度图像的形式指定,并通过object选项设定。
对每个可能的匹配项,都会计算一个分数。如果分数达到指定阈值,则认为找到了对象。
如果输入视频包含对象的多个实例,过滤器将只找到其中一个。
当找到一个对象时,会在匹配的帧中设置以下元数据条目:
- lavfi.rect.w
对象的宽度
- lavfi.rect.h
对象的高度
- lavfi.rect.x
对象的x位置
- lavfi.rect.y
对象的y位置
- lavfi.rect.score
找到对象的匹配分数
它接受以下选项:
- object
对象图像的文件路径,需要为gray8格式。
- threshold
检测阈值,以0-1范围内的小数表示。
阈值为0.01表示仅匹配精确对象,阈值为0.99表示几乎所有内容都匹配。
默认值为0.5。
- mipmaps
Mipmap的数量,默认是3。
- xmin, ymin, xmax, ymax
指定搜索的矩形区域。
- discard
丢弃未检测到对象的帧。默认是禁用。
11.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
11.98 填充
使用另一种值填充与相同像素分量的区域。
它接受以下选项:
- x
设置像素x坐标。
- y
设置像素y坐标。
- s0
设置源#0组件值。
- s1
设置源#1组件值。
- s2
设置源#2组件值。
- s3
设置源#3组件值。
- d0
设置目标#0组件值。
- d1
设置目标#1组件值。
- d2
设置目标#2组件值。
- d3
设置目标#3组件值。
11.99 格式
将输入视频转换为指定的像素格式之一。Libavfilter将尝试选取适合作为下一个滤镜输入的格式。
它接受以下参数:
- pix_fmts
用’|’分隔的像素格式名称列表,例如"pix_fmts=yuv420p|monow|rgb24"。
- color_spaces
用’|’分隔的颜色空间名称列表,例如"color_spaces=bt709|bt470bg|bt2020nc"。
- color_ranges
用’|’分隔的颜色范围名称列表,例如"color_spaces=tv|pc"。
11.99.1 示例
- 将输入视频转换为yuv420p格式
format=pix_fmts=yuv420p
将输入视频转换为列表中的任意格式
format=pix_fmts=yuv420p|yuv444p|yuv410p
11.100 币率
通过复制或删除必要的帧将视频转换为指定的固定帧率。
它接受以下参数:
- fps
所需的输出帧率。它接受包含以下常量的表达式:
- ‘source_fps’
输入的帧率
- ‘ntsc’
NTSC帧率
30000/1001
- ‘pal’
PAL帧率
25.0
- ‘film’
电影帧率
24.0
- ‘ntsc_film’
NTSC-电影帧率
24000/1001
默认是
25
.- start_time
假定第一个PTS应该是指定的值,以秒为单位。这允许在流的开头填充/修剪。默认情况下,不对第一个帧的预期PTS作任何假设,因此不会进行填充或修剪。例如,如果视频流在音频流之后开始,可以将其设置为0以用第一个帧的重复填充开头,或者修剪任何具有负PTS的帧。
- round
时间戳(PTS)舍入方法。
可能的值是:
- zero
向0方向舍入
- inf
远离0方向舍入
- down
向负无穷方向舍入
- up
向正无穷方向舍入
- near
舍入到最近的值
默认值是
near
.- eof_action
读取最后一帧时执行的操作。
可能的值是:
- round
使用与处理其他帧相同的时间戳舍入方法。
- pass
如果输入持续时间尚未达到,则通过传递最后帧。
默认值是
round
.
或者,可以将选项指定为一个简单的字符串形式:帧率[:开始时间[:舍入]].
另请参阅setpts过滤器。
11.100.1 示例
- 典型的用法是将帧率设置为25:
fps=fps=25
- 将帧率设置为24,使用缩写和舍入方法舍入到最近:
fps=fps=film:round=near
11.101 帧打包
将两个不同的视频流打包成一个立体视频,并在支持的编解码器上设置适当的元数据。这两个视图应具有相同的大小和帧速率,当较短的视频结束时处理将停止。请注意,您可以方便地使用缩放和帧速率滤镜调整视图属性。
它接受以下参数:
- 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
11.102 帧率
通过从源帧插值新的视频输出帧来更改帧率。
此滤镜不设计用于正确处理隔行扫描媒体。如果您希望更改隔行扫描媒体的帧率,则需要在使用此滤镜之前取消隔行扫描,并在使用之后重新隔行扫描。
以下是接受的选项的说明。
- fps
指定输出帧每秒数。此选项也可以单独指定值。默认是
50
.- interp_start
指定输出帧将作为两个帧线性插值的范围的起始点。范围为[
0
-255
],默认为15
.- interp_end
指定输出帧将作为两个帧线性插值的范围的结束点。范围为[
0
-255
],默认为240
.- scene
指定检测场景变化的级别,值介于0到100之间,用于指示新场景;较低的值表示当前帧引入新场景的可能性较低,而较高的值则表示当前帧更有可能是新的一个场景。 默认是
8.2
.- flags
指定影响滤镜处理的标志。
对于标志可用的值是:
- scene_change_detect, scd
使用选项值启用场景变化检测场景。 此标志默认启用。
11.103 帧步进
选择每N帧中的一个帧。
此滤镜接受以下选项:
- step
选择每
step
帧后的帧。 允许的值是大于0的正整数。默认值是1
.
11.104 冻结检测
检测冻结的视频。
当检测到输入视频在指定的持续时间内内容没有显著变化时,此滤镜记录一条消息并设置帧元数据。视频冻结检测计算视频帧所有分量的平均绝对差值并与噪声底线比较。
打印的时间和持续时间以秒表示。lavfi.freezedetect.freeze_start
元数据键在第一个时间戳等于或超过检测持续时间的帧上被设置,它包含冻结的第一帧的时间戳。lavfi.freezedetect.freeze_duration
和lavfi.freezedetect.freeze_end
元数据键被设置在冻结结束后的第一帧。
此滤镜接受以下选项:
- noise, n
设置噪声容差。可以指定为dB(如果指定值后有"dB")或者为0到1之间的差异比例。默认值为-60dB,或者0.001。
- duration, d
设置直到通知的冻结持续时间(默认是2秒)。
11.105 冻结帧
冻结视频帧。
此滤镜使用第二输入的帧来冻结视频帧。
滤镜接受以下选项:
- first
设置冻结开始的第一帧编号。
- last
设置冻结结束的最后一帧编号。
- replace
设置第二输入中的帧编号,该帧将代替被替换的帧。
11.106 frei0r
将frei0r效果应用于输入视频。
要启用此滤镜的编译,需要安装frei0r头文件并使用以下配置编译FFmpeg:--enable-frei0r
.
它接受以下参数:
- filter_name
要加载的frei0r效果的名称。如果环境变量
FREI0R_PATH
已定义,则会在FREI0R_PATH
中指定的由冒号分隔的目录列表中搜索frei0r效果。 否则,按照以下顺序搜索标准frei0r路径:HOME/.frei0r-1/lib/, /usr/local/lib/frei0r-1/, /usr/lib/frei0r-1/.- filter_params
以’|’分隔的参数列表传递给frei0r效果。
frei0r效果参数可以是布尔值(值为"y"或"n")、双精度值、颜色(指定为R/G/B,其中R, G和B是介于0.0和1.0(含)之间的浮点数)或颜色描述,如(ffmpeg-utils)"Color"部分中指定的颜色,位置(指定为X/Y,其中X和Y是浮点数)和/或字符串。
参数数量和类型取决于加载的效果。如果未指定效果参数,将设置默认值。
11.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
- 应用透视效果,指定左上角和右上角图像位置:
frei0r=perspective:0.2/0.2|0.8/0.2
有关更多信息,请参阅http://frei0r.dyne.org
11.106.2 命令
此滤镜支持filter_params选项作为命令.
11.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
(未启用)。
11.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 -
11.109 高斯模糊
应用高斯模糊滤镜。
滤镜接受以下选项:
- sigma
设置水平方向的sigma值,也就是高斯模糊的标准差。默认是
0.5
.- steps
设置高斯近似的步骤数。默认是
1
.- planes
设置要过滤的平面位。默认情况下将过滤所有平面。
- sigmaV
设置垂直方向的sigma值。如果为负值,它会和
sigma
相同。 默认值是-1
.
11.109.1 命令
此滤镜支持与选项相同的命令。 命令接受与相应选项相同的语法。
如果指定的表达式无效,则其保持当前值。
11.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) 矩形内样本值的总和,这允许获取矩形内样本的总和。请参阅没有后缀的函数。
- interpolation
设置插值方法之一:
- nearest, n
- bilinear, b
默认是双线性。
对于函数,如果x和y超出了范围,值将自动剪切到最近的边缘。
请注意,该过滤器可以使用多个线程,在这种情况下,每个切片将拥有自己的表达式状态。如果希望仅使用单个表达式状态,因为表达式依赖于之前的状态,则应将过滤器线程数限制为 1。
11.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)'
- 创建一个与输入大小相同的径向渐变(另请参阅渐晕过滤器):
geq=lum=255*gauss((X/W-0.5)*3)*gauss((Y/H-0.5)*3)/gauss(0)/gauss(0),format=gray
11.111 gradfun
修复因截断到 8 位色深而在近乎平坦区域中有时引入的条带伪影。 插值应该在条带所在的地方生成的渐变,并进行抖动。
它仅设计用于播放。不要在有损压缩之前使用它,因为压缩往往会丢失抖动并带回条带。
它接受以下参数:
- strength
该过滤器对任何一个像素的最大修改量,也是检测近乎平坦区域的阈值。可接受的值范围为 0.51 到 64;默认值为 1.2。超出范围的值将被剪切到有效范围内。
- radius
拟合渐变的邻域。较大的半径可以产生更平滑的渐变,但也会阻止过滤器修改详细区域附近的像素。可接受的值为 8-32;默认值为 16。超出范围的值将被剪切到有效范围内。
或者,可以将选项指定为一个简单字符串:强度[:半径]
11.111.1 示例
- 使用
3.5
强度和半径应用过滤器:8
:gradfun=3.5:8
- 指定半径,省略强度(将回退到默认值):
gradfun=radius=8
11.112 graphmonitor
显示各种过滤器图统计信息。
使用此过滤器可以调试完整的过滤器图。 特别是解决链接填满排队帧的问题。
该过滤器接受以下选项:
- size, s
设置视频输出尺寸。默认值为hd720.
- opacity, o
设置视频不透明度。默认值为0.9。允许的范围是从0到1.
- 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。 这保证输出视频帧率不会高于该值。
11.113 grayworld
一种基于灰世界假设的颜色恒定过滤器,用于进行颜色校正
该算法使用线性光,因此输入数据应事先线性化(并可能正确标记)。
ffmpeg -i INPUT -vf zscale=transfer=linear,grayworld,zscale=transfer=bt709,format=yuv420p OUTPUT
11.114 greyedge
一种色彩恒定过滤器变体,通过灰边缘算法估计场景照明并相应校正场景颜色。
参阅: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。
11.114.1 示例
- 灰边缘:
greyedge=difford=1:minknorm=5:sigma=2
- 最大边缘:
greyedge=difford=1:minknorm=0:sigma=2
11.115 guided
应用导向滤波进行保边平滑、去雾等处理。
该过滤器接受以下选项:
- radius
设置像素中的盒半径。 范围为 1 到 20。默认值为 3。
- eps
设置正则化参数(平方)。 范围为 0 到 1。默认值为 0.01。
- mode
设置过滤模式。可以为
basic
或fast
。 默认值为basic
.- sub
为
fast
模式设置子采样率。 范围为 2 到 64。默认值为 4。 在basic
模式中不发生子采样。- guidance
设置引导模式。可以为
off
或on
。默认值为off
。 如果off
,则需要单个输入。 如果on
,则需要两个分辨率和像素格式相同的输入。 第二个输入作为引导。- planes
设置要过滤的平面。默认值仅为第一平面。
11.115.1 命令
此过滤器支持上述所有选项作为命令。.
11.115.2 示例
- 用导向滤波进行保边平滑:
ffmpeg -i in.png -vf guided out.png
- 通过导向滤波进行去雾、结构转移过滤和细节增强。
有关生成引导图像的方法,请参阅论文 "Guided Image Filtering"。
参阅:http://kaiminghe.com/publications/pami12guidedfilter.pdf.
ffmpeg -i in.png -i guidance.png -filter_complex guided=guidance=on out.png
11.116 haldclut
将 Hald CLUT 应用于视频流。
第一个输入是要处理的视频流,第二个是 Hald CLUT。 Hald CLUT 输入可以是简单的图片或完整的视频流。
该过滤器接受以下选项:
- clut
设置将处理来自第二输入流中的 CLUT 视频帧,可以为first或all。默认值为all。.
- shortest
强制在最短输入终止时终止。默认值为
0
.- repeatlast
在流结束后继续应用最后一个 CLUT。值为
0
时,过滤器将在 CLUT 的最后一帧后失效。 默认值为1
.
haldclut
也有与lut3d相同的插值选项(两个过滤器共享相同的内部机制)。
此过滤器还支持framesync选项。
有关 Hald CLUT 的更多信息,请参阅 Eskil Steenberg 的网站(Hald CLUT 作者):http://www.quelsolaar.com/technology/clut.html.
11.116.1 命令
此过滤器支持interp
选项作为命令。.
11.116.2 工作流程示例
11.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
流的剩余帧。
11.116.2.2 带预览的 Hald CLUT
Hald CLUT 应该是一个具有Level*Level*Level
乘以Level*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
它包含了原始图片和 CLUT 效果的预览:右上角显示 SMPTE 彩条,底部显示了经过颜色变化处理的相同彩条。
然后,可以用以下方式可视化这个 Hald CLUT 的效果:
ffplay input.mkv -vf "movie=clut.png, [in] haldclut"
11.117 hflip
水平翻转输入视频。
例如,使用以下方法水平翻转输入视频ffmpeg
:
ffmpeg -i in.avi -vf "hflip" out.avi
11.118 histeq
此过滤器基于每帧应用全局颜色直方图均衡化。
它可以用于校正范围压缩的像素强度的视频。 过滤器重新分配像素强度,使其在强度范围内的分布均匀化。 可以将其视为“自动调整对比度的过滤器”。 此过滤器仅在校正退化或拍摄不佳的来源视频方面有用。
该过滤器接受以下选项:
- strength
确定要应用的均衡量。当强度降低时,像素强度的分布会逐渐接近输入帧的分布。该值必须是范围为[0,1]的浮点数,默认值为0.200。
- intensity
设置可生成的最大强度并适当缩放输出值。应根据需求设置强度,然后可以在需要时限制强度以避免过曝。该值必须是范围为[0,1]的浮点数,默认值为0.210。
- antibanding
设置抗条纹等级。如果启用,滤镜将随机将输出像素的亮度稍微变动,以避免直方图的条纹化。可能的值为
none
,weak
或strong
。默认值为none
.
11.119 直方图
计算并绘制输入视频的颜色分布直方图。
计算的直方图是图像中色彩分量分布的表示。
标准直方图显示图像中色彩分量的分布。显示每种颜色分量的颜色图。根据输入格式,显示当前帧的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
设置模式。可以是
linear
或logarithmic
。 默认值为linear
.- components
设置要显示的颜色分量。 默认值为
7
.- fgopacity
设置前景不透明度。默认值为
0.7
.- bgopacity
设置背景不透明度。默认值为
0.5
.- colors_mode
设置颜色模式。 它接受以下值:
- ‘whiteonblack’
- ‘blackonwhite’
- ‘whiteongray’
- ‘blackongray’
- ‘coloronblack’
- ‘coloronwhite’
- ‘colorongray’
- ‘blackoncolor’
- ‘whiteoncolor’
- ‘grayoncolor’
默认值为
whiteonblack
.
11.119.1 示例
- 计算并绘制直方图:
ffplay -i input -vf histogram
11.120 高精度3D去噪 (hqdn3d)
这是一种高精度/高质量的3D去噪滤镜。旨在减少图像噪点,生成平滑图像并让静止图像真正静止。它应增强可压缩性。
它接受以下可选参数:
- luma_spatial
一个非负的浮点数,指定空间亮度强度。默认值是4.0。
- chroma_spatial
一个非负的浮点数,指定空间色度强度。默认值是3.0*luma_spatial/4.0.
- luma_tmp
一个浮点数,指定亮度时间强度。默认值是6.0*luma_spatial/4.0.
- chroma_tmp
一个浮点数,指定色度时间强度。默认值为luma_tmp*chroma_spatial/luma_spatial.
11.120.1 命令
此滤镜支持与选项相同的命令。命令接受与相应选项相同的语法。
如果指定的表达式无效,则保持当前值。
11.121 下载硬件帧 (hwdownload)
将硬件帧下载到系统内存。
输入必须是硬件帧,输出为非硬件格式。并非所有格式都将在输出中受支持 - 可能需要在图形中紧随其后插入一个额外的format过滤器以获得支持的输出格式。
11.122 硬件映射 (hwmap)
将硬件帧映射到系统内存或其他设备。
此滤镜有几种不同的操作模式;使用哪种模式依赖于输入和输出格式:
- 硬件帧输入,普通帧输出
将输入帧映射到系统内存并传递到输出。如果稍后需要原始硬件帧(例如,在某些部分叠加其他内容之后),可以使用hwmap过滤器再次以下一种模式检索它。
- 普通帧输入,硬件帧输出
如果输入实际上是软件映射的硬件帧,则取消映射 - 即,返回原始硬件帧。
否则,必须提供一个设备。为输出设备创建新的硬件表面,然后将其映射回输入的软件格式,并将这些帧提供给前面的过滤器。这将像hwupload过滤器那样工作,但如果输入已经是兼容格式,则可以避免额外的复制。
- 硬件帧输入和输出
必须为输出提供设备,无论是直接提供还是通过derive_device选项。输入和输出设备必须是不同类型并且兼容 - 其确切含义取决于系统,但通常指的是它们必须引用相同的底层硬件上下文(例如,引用同一显卡)。
如果输入帧最初是在输出设备上创建的,则取消映射以检索原始帧。
否则,将帧映射到输出设备 - 在输出上创建对应于输入帧的新硬件帧。
接受以下附加参数:
- mode
设置帧映射模式。一些组合包括:
- 读取
映射的帧应是可读的。
- 写入
映射的帧应是可写的。
- 覆盖
映射将始终覆盖整个帧。
在某些情况下这可能会提高性能,因为不需要加载帧的原始内容。
- 直接
映射不得涉及任何复制。
在某些情况下,当无法进行直接映射或直接映射会产生意外效果时,会创建间接映射到帧的副本。设置此标志可确保映射是直接的,并且如果无法实现,将会失败。
默认值为read+write如果未指定。
- derive_device 类型
而不是使用初始化时提供的设备,而是从输入帧所在的设备派生一个新设备,其类型为类型。
- reverse
在硬件到硬件映射中,反向映射 - 在接收端创建帧并将其映射回源。这在某些情况下可能是必要的,例如一个方向的映射是所需的但设备仅支持相反方向的映射。
此选项是危险的 - 如果对前一种过滤器的输出有任何附加约束,它可能会以未定义的方式破坏前一种过滤器。请勿在不完全了解使用此选项含义的情况下使用它。
11.123 上传硬件帧 (hwupload)
将系统内存帧上传到硬件表面。
在初始化滤镜时必须提供要上传到的设备。如果使用 ffmpeg,请使用-filter_hw_device选项或derive_device选项选择适当的设备。输入和输出设备必须是不同类型并兼容 - 其确切含义取决于系统,但通常指它们必须引用同一底层硬件上下文(例如,同一显卡引用)。
接受以下附加参数:
- derive_device 类型
而不是使用初始化时提供的设备,而是从输入帧所在的设备派生一个新设备,其类型为类型。
11.124 使用CUDA上传 (hwupload_cuda)
将系统内存帧上传到CUDA设备。
它接受以下可选参数:
- device
用于CUDA设备的编号
11.125 高质量放大 (hqx)
应用为像素艺术设计的高质量放大滤镜。该滤镜最初由Maxim Stepin创建。
它接受以下选项:
- n
设置缩放维度:
2
对应hq2x
,3
对应hq3x
以及4
对应hq4x
。 默认值为3
.
11.126 横向堆叠 (hstack)
水平堆叠输入视频。
所有流必须具有相同的像素格式和相同的高度。
注意此滤镜比使用叠加 (overlay)和填充 (pad)生成相同输出更快。
该滤镜接受以下选项:
- inputs
设置输入流数量。默认值是2。
- shortest
如果设置为1,则在最短输入结束时强制输出结束。默认值是0。
11.127 HSV范围保留 (hsvhold)
将某一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使像素要么完全灰色,要么完全不是灰色。
较高的值会导致更多像素变灰,且像素的灰度越高,其颜色与关键颜色越相似。
11.128 HSV范围键控 (hsvkey)
将某一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使像素要么完全透明,要么完全不透明。
较高的值会导致部分透明像素,且像素透明度越高,其颜色与关键颜色越相似。
11.129 颜色调节 (hue)
修改输入的色调和/或饱和度。
它接受以下参数:
- h
指定色调角度为度数形式的数值。它接受一个表达式,默认值为"0"。
- s
指定饱和度范围[-10,10]。它接受一个表达式,默认值为"1"。
- H
指定色调角度为弧度形式的数值。它接受一个表达式,默认值为"0"。
- b
指定亮度范围[-10,10]。它接受一个表达式,默认值为"0"。
h和H是互斥的,不能同时指定。
该b, h, H和s选项值为包含以下常量的表达式:
- n
输入帧的帧数,从0开始
- pts
输入帧的演示时间戳,以时间基单位表示
- r
输入视频的帧率,如果输入帧率未知则为NAN
- t
以秒表示的时间戳,如果输入时间戳未知则为NAN
- tb
输入视频的时间基
11.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))"
11.129.2 命令
此过滤器支持以下命令:
- b
- s
- h
- H
修改输入视频的色调和/或饱和度和/或亮度。 命令接受与相应选项相同的语法。
如果指定的表达式无效,则保持其当前值。
11.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三元组的亮度, 启用此选项时亮度保持在相同值。
11.131 滞后效应
通过连接组件将第一流扩展到第二流。 这使得可以构建更稳健的边缘遮罩。
此过滤器接受以下选项:
- planes
设置哪些平面将作为位图进行处理,未处理的平面将 从第一流中复制。 默认值为0xf,即所有平面将被处理。
- threshold
设置过滤中使用的阈值。如果像素分量值高于 此值,则激活连接组件的过滤算法。 默认值为0。
该hysteresis
过滤器也支持帧同步选项。
11.132 ICC检测
从嵌入的ICC配置文件(如果存在)中检测颜色空间,并相应地更新帧的标签。
此过滤器接受以下选项:
- force
如果为真,帧的现有颜色空间标签将始终被 从ICC配置文件中检测到的值覆盖。否则,标签将仅在 它们包含
unknown
时分配。默认情况下启用。
11.133 ICC生成
生成ICC配置文件并将其附加到帧。
此过滤器接受以下选项:
- color_primaries
- color_trc
配置将为其生成ICC配置文件的颜色空间。 默认值
auto
根据输入帧的元数据推断值, 相应地默认为BT.709/sRGB。请参阅设置参数过滤器以查看可能值的列表,但请注意
unknown
不是此过滤器的有效值。- force
如果为真,即使要覆盖现有ICC配置文件,也会生成ICC配置文件。 默认情况下禁用。
11.134 身份
获取两个输入视频之间的身份评分。
此过滤器需要两个输入视频。
两个输入视频必须具有相同的分辨率和像素格式才能 此过滤器正常工作。此外,它假设两个输入 具有相同数量的帧,并且逐帧进行比较。
通过记录系统打印获得的每组件、平均值、最小值和最大值的身份评分。
过滤器将每帧计算的身份评分存储在帧元数据中。
此过滤器还支持帧同步选项。
在下面的示例中,输入文件main.mpg被处理,并与参考文件进行比较ref.mpg.
ffmpeg -i main.mpg -i ref.mpg -lavfi identity -f null -
11.135 idet
检测视频的隔行扫描类型。
此过滤器尝试检测输入帧是否为隔行扫描、渐进式、 上场优先或下场优先。它还会尝试检测相邻帧之间 重复的场(提示有胶片扫描)。
单帧检测仅考虑紧邻的帧在对每帧进行分类时。 多帧检测结合了先前帧的分类历史。
过滤器将记录以下元数据值:
- single.current_frame
使用单帧检测检测当前帧的类型之一: "tff"(上场优先)、"bff"(下场优先)、 "渐进式"或"未确定"。
- single.tff
累计使用单帧检测检测为上场优先的帧数。
- multiple.tff
累计使用多帧检测检测为上场优先的帧数。
- single.bff
累计使用单帧检测检测为下场优先的帧数。
- multiple.current_frame
使用多帧检测检测当前帧的类型之一: "tff"(上场优先)、"bff"(下场优先)、 "渐进式"或"未确定"。
- multiple.bff
累计使用多帧检测检测为下场优先的帧数。
- single.progressive
累计使用单帧检测检测为渐进式的帧数。
- multiple.progressive
累计使用多帧检测检测为渐进式的帧数。
- single.undetermined
无法使用单帧检测对其进行分类的帧的累计数。
- multiple.undetermined
无法使用多帧检测对其进行分类的帧的累计数。
- repeated.current_frame
当前帧的哪个场重复了上一个的场之一:"无"、"上场"或"下场"。
- 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过滤器作为清理隔行标志的低计算方法。
11.135.1 示例
详细检查视频中前360帧的场顺序:
ffmpeg -i INPUT -filter:v idet,metadata=mode=print -frames:v 360 -an -f null -
idet过滤器将为每帧添加分析元数据,然后将其丢弃。 最后,过滤器还将打印最终报告和统计数据。
11.136 il
解开或交织字段。
此过滤器允许在不对隔行图像进行去隔行处理的情况下处理其字段。 解开的过程将输入帧分成2个字段(所谓的半帧)。 奇数行移至输出图像的顶部,偶数行移至底部。 可以独立处理这些字段,然后重新交织它们。
过滤器接受以下选项:
- luma_mode, l
- chroma_mode, c
- alpha_mode, a
可用值为亮度模式, 色度模式和透明度模式有以下值:
- ‘none’
什么都不做。
- ‘deinterleave, d’
解开字段,将一个放在另一个之上。
- ‘interleave, i’
交织字段。逆转解开的效果。
默认值是
none
.- luma_swap, ls
- chroma_swap, cs
- alpha_swap, as
交换亮度/色度/透明度字段。交换偶数和奇数行。默认值是
0
.
11.136.1 命令
此过滤器支持上述所有选项作为命令.
11.137 膨胀
对视频应用膨胀效果。
此过滤器通过仅考虑高于像素的值来替换像素为局部(3x3)平均值。
它接受以下选项:
- threshold0
- threshold1
- threshold2
- threshold3
限制每个平面最多的变化值,默认是65535。 如果为0,平面将保持不变。
11.137.1 命令
此过滤器支持上述所有选项作为命令.
11.138 交织
从渐进内容中创建简单交织过滤器。将奇数帧的上(或下)行与偶数帧的下(或上)行交织, 使帧速率减半并保持图像高度。
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
这决定了交织帧是否来自渐进帧的偶数(上场优先,默认)或奇数(下场优先)行。
- lowpass
垂直低通滤波器以避免交织和减少摩尔纹图案。
- ‘0, off’
禁用垂直低通滤波器
- ‘1, linear’
启用线性滤波器(默认)
- ‘2, complex’
启用复杂滤波器。这将稍微减少交织和摩尔纹 但更好的保留细节和主观图像清晰度。
11.139 核心去隔行
通过应用Donald Graft的自适应核心去隔行处理来去隔行输入视频。 处理视频的隔行部分以生成渐进式帧。
以下是接受参数的描述。
- thresh
设置影响过滤器容忍度的阈值 判断像素线是否必须处理。必须是范围[0,255]内的整数,默认值为10。 值为0将导致对每个像素应用处理。
- map
如果设置为1,则将超出阈值的像素涂为白色。 默认值为0。
- order
设置字段顺序。如果设置为1,则交换字段;如果设置为0,则保持字段。 默认值为0。
- sharp
如果设置为1,则启用额外尖锐化。 默认值为0。
- twoway
如果设置为1,则启用双向锐化。 默认值为0。
11.139.1 示例
- 应用默认值:
kerndeint=thresh=10:map=0:order=0:sharp=0:twoway=0
- 启用额外尖锐化:
kerndeint=sharp=1
- 将处理的像素涂为白色:
kerndeint=map=1
11.140 辛奇
对输入视频流应用辛奇算子。
过滤器接受以下选项:
- planes
设置哪些平面将被处理,未处理的平面将被复制。 默认值为0xf,所有平面将被处理。
- scale
设置乘以过滤后的结果的值。
- delta
设置添加到过滤后的结果的值。
11.140.1 命令
此过滤器支持上述所有选项作为命令.
11.141 延迟效应
慢慢更新较暗的像素。
此过滤器使短暂的光闪烁持续时间更长。 此过滤器接受以下选项:
- decay
设置衰减的因子。默认值为.95。允许范围为0到1。
- planes
设置要过滤的平面。默认是全部。允许范围是从 0 到 15。
11.141.1 命令
此过滤器支持以上所有选项作为命令.
11.142 镜头校正
校正径向镜头畸变
该过滤器可用于校正由使用广角镜头引起的径向畸变,从而重新矫直图像。为了找到正确的参数,可以使用例如 OpenCV 的工具,或者采用试错法。要使用 OpenCV,请使用 OpenCV 源代码中的校准示例(位于 samples/cpp 下),并从所得矩阵中提取 k1 和 k2 系数。
注意,功能类似的过滤器也可在 KDE 项目下的开源工具 Krita 和 Digikam 中使用。
与渐晕过滤器相比,该过滤器可以校正图像畸变,而渐晕则校正亮度分布,因此在某些情况下,您可能希望组合使用两个过滤器,不过需要注意顺序,即渐晕应在镜头校正之前还是之后应用。
11.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
设置插值类型。可以为
nearest
或bilinear
。默认值是nearest
.- fc
指定未映射像素的颜色。有关此选项的语法,请查阅(ffmpeg-utils)"Color" 部分,在 ffmpeg-utils 手册中。默认颜色为
black@0
.
生成校正的公式是:
r_src = r_tgt * (1 + k1 * (r_tgt / r_0)^2 + k2 * (r_tgt / r_0)^4)
其中r_0是图像对角线的一半,r_src和r_tgt分别是源图像和目标图像中到焦点的距离。
11.142.2 命令
此过滤器支持以上所有选项作为命令.
11.143 lensfun
通过 lensfun 库应用镜头校正(http://lensfun.sourceforge.net/).
该lensfun
过滤器需要相机品牌、相机型号和镜头型号来应用镜头校正。该过滤器将加载 lensfun 数据库并查询数据库以找到相应的相机和镜头条目。只要这些条目可以通过给定选项找到,过滤器就可以对帧进行校正。注意,不完整的字符串将导致过滤器根据给定选项选择最佳匹配,过滤器将输出所选的相机和镜头型号(以 “info” 级别记录)。您必须提供品牌、相机型号和镜头型号,这是必需的。
要获取可用品牌和型号的列表,请省略一个或两个make
和model
选项。过滤器将以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’
11.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
11.144 libplacebo
基于 libplacebo 的灵活 GPU 加速处理过滤器 (https://code.videolan.org/videolan/libplacebo).
11.144.1 选项
此过滤器的选项分为以下几个部分:
11.144.1.1 输出模式
这些选项控制整体输出模式。默认情况下,libplacebo 将尽可能保留源色彩和大小,但它会应用源帧中嵌入的任何胶片颗粒、杜比视界元数据或非正方 SAR。
- inputs
设置输入数。这可以与
idx
变量一起使用,允许将多个输入放置/混合在输出帧内。这实际上启用了类似于水平堆叠, 叠加等的功能。- w
- h
设置输出视频尺寸表达式。默认值是
iw
和ih
.允许与缩放过滤器相同的表达式。
- crop_x
- crop_y
设置输入裁剪的 x/y 表达式,默认值是
(iw-cw)/2
和(ih-ch)/2
.- crop_w
- crop_h
设置输入裁剪宽度/高度表达式,默认值是
iw
和ih
.- pos_x
- pos_y
设置输出放置的 x/y 表达式,默认值是
(ow-pw)/2
和(oh-ph)/2
.- pos_w
- pos_h
设置输出放置宽度/高度表达式,默认值是
ow
和oh
.- fps
设置输出帧率。这可以是有理数,例如
60000/1001
。如果设置为特殊字符串none
(默认值),则输入时间戳将按原样传递到输出,否则输入视频帧将根据需要进行插值,以将视频重新缩放到指定的目标帧率,这种方式由frame_mixer选项决定。- format
设置输出格式覆盖。如果未设置(默认值),帧将以与各自输入帧相同的格式输出。否则,将进行格式转换。
- force_original_aspect_ratio
- force_divisible_by
与缩放过滤器选项完全相同地工作。
- normalize_sar
如果启用,输出帧将始终具有 1:1 的像素纵横比。这将根据需要引入额外的填充/裁剪。如果禁用(默认值),任何纵横比不匹配,包括例如非正方视频源的情况,都将转发到输出测试品纵横比。
- pad_crop_ratio
指定一个比例(介于
0.0
和1.0
之间)来在填充和裁剪之间进行权衡,当输入纵横比与输出纵横比不匹配且normalize_sar有效时。默认值为0.0
始终用黑色边框填充内容,而值为1.0
始终裁剪内容的一部分。允许使用中间值,从而在两种方法之间进行混合。- fillcolor
设置用于填充未被输出图像覆盖的输出区域的颜色,例如由于normalize_sar。有关此选项的一般语法,请参阅(ffmpeg-utils)"Color" 部分,在 ffmpeg-utils 手册中。默认为
black
.- corner_rounding
以圆角渲染帧。该值为一个介于
0.0
和1.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
以输入帧的相同格式输出帧,从而不改变格式。对于其他任何值,将执行转换。参见设定参数过滤器以获取可能值的列表。
- apply_filmgrain
如果源帧中存在颗粒(例如 AV1 或 H.274),应用颗粒,并将其从输出中剥离。默认启用。
- apply_dolbyvision
如果源帧中存在 Dolby Vision RPU 元数据,应用该元数据,并将其从输出中剥离。默认启用。注意,Dolby Vision 将始终以 BT.2020+PQ 输出,覆盖通常的输入帧元数据。这些也将作为值选用
auto
用于各个帧输出选项。
除了为缩放过滤器记录的表达式常量外,crop_w, crop_h, crop_x, crop_y, pos_w, pos_h, pos_x和pos_y选项也可以包含以下常量:
- in_idx, idx
当前活动输入流的(从 0 开始)数字索引。
- crop_w, cw
- crop_h, ch
计算的crop_w和crop_h.
- pos_w, pw
- pos_h, ph
计算的pos_w和pos_h.
- in_t, t
输入帧时间戳,单位为秒。如果输入时间戳未知,则为 NAN。
- out_t, ot
输入帧时间戳,单位为秒。如果输入时间戳未知,则为 NAN。
- n
输入帧号,从 0 开始。
11.144.1.2 缩放
本节中的选项控制 libplacebo 如何进行放大和(如必要)缩小。需要注意的是,libplacebo 始终内部操作 4:4:4 内容,因此任何子采样的色度格式,例如yuv420p
,在渲染过程中都将必然被放大和缩小。这意味着即使源和目标分辨率相同,缩放可能仍然生效。
- upscaler
- downscaler
配置用于放大和缩小的滤波器核。各自的默认值是
spline36
和mitchell
。有关可能值的完整列表,请传递help
给这些选项。最重要的值是:- ‘none’
强制使用内置的GPU纹理采样(通常是双线性)。速度非常快但质量较差,尤其是在缩小时。
- ‘bilinear’
双线性插值。通常在GPU上免费进行,除非这样会导致混叠。速度快,质量低。
- ‘nearest’
最近邻插值。清晰但混叠严重。
- ‘oversample’
一种算法,视觉上类似于最近邻插值,但试图保留像素纵横比。对像素艺术非常有用,因为它使艺术外观的失真最小化。
- ‘lanczos’
标准的sinc-sinc插值核。
- ‘spline36’
Lanczos的立方样条近似版本。性能无差异,但环绕稍微少一些。
- ‘ewa_lanczos’
基于jinc-sinc核的Lanczos的椭圆加权平均版本。这通常也被称为“Jinc缩放”。速度慢但质量非常高。
- ‘gaussian’
高斯核。具有某些理想的数学特性,但主观上非常模糊。
- ‘mitchell’
Mitchell和Netravali推荐参数的立方BC样条。几乎没有环绕。
- frame_mixer
控制用于时间帧混合的核。默认值是
none
,这禁用了帧混合。有可能值的完整列表,请传递help
给该选项。最重要的值是:- ‘none’
禁用帧混合,效果等同于“最近邻”语义。
- ‘oversample’
过采样输入视频以创建“平滑运动”效果:如果输出帧恰好位于两个视频帧之间的过渡点,则根据相对重叠进行混合。无论何时需要保留原始主观外观,都推荐此选项。
- ‘mitchell_clamp’
较大的滤波器核,以尽可能消除环绕和其他伪影的设计方式平滑插值多个帧。这是在任何时候都希望获得最大视觉流畅度的推荐选项。
- ‘linear’
帧之间的线性混合/渐隐。特别适用于构建例如幻灯片演示。
- lut_entries
配置缩放器查找表的大小,范围从
1
到256
。默认值为0
将选择libplacebo的内部默认值,通常为64
.- antiringing
启用抗环绕(针对非EWA滤波器)。值(介于
0.0
和1.0
之间)配置抗环绕算法的强度。如果设置过高可能会增加混叠。默认禁用。- sigmoid
在放大过程中启用S字形压缩。这稍微减少了环绕。默认启用。
11.144.1.3 去带化
Libplacebo附带了一个内置去带化滤波器,非常适合对抗许多常见的带状和块状问题。只要需要质量,强烈建议开启此功能。
- deband
启用(快速)去带化算法。默认禁用。
- deband_iterations
去带化算法的去带化迭代次数。每次迭代以逐步增加的半径(和减小的阈值)执行。推荐值范围为
1
到4
。默认为1
.- deband_threshold
去带化滤波器强度。较高的数值会导致更积极的去带化。默认为
4.0
.- deband_radius
去带化滤波器半径。较高的半径更适合缓慢的渐变,而较低的半径更适合陡峭的渐变。默认为
16.0
.- deband_grain
添加的额外输出颗粒量。可以帮助掩盖缺陷。默认为
6.0
.
11.144.1.4 颜色调整
一组主观颜色控制。不是非常严格,因此具体效果可能会根据输入主色调和颜色空间有所不同。
- brightness
亮度提升,介于
-1.0
和1.0
之间。默认为0.0
.- contrast
对比度增益,介于
0.0
和16.0
之间。默认为1.0
.- saturation
饱和度增益,介于
0.0
和16.0
之间。默认为1.0
.- hue
色调偏移,以弧度为单位,介于
-3.14
和3.14
之间。默认为0.0
。这将旋转UV子向量,RGB输入默认为BT.709系数。- gamma
伽马调整值,介于
0.0
和16.0
之间。默认为1.0
.- cones
用于色盲模拟的锥模型。接受任意组合的
l
,m
和s
。以下是一些示例:- ‘m’
红绿色盲/红绿色视差(影响3%-4%人口)
- ‘l’
红色盲/红色视差(影响1%-2%人口)
- ‘l+m’
全色盲(非常罕见)
- ‘l+m+s’
完全失踪的白天视力(极其罕见)
- cone-strength
由指定锥体的增益因子
cones
,介于0.0
和10.0
之间。值为1.0
表示对颜色视觉没有变化。值为0.0
(默认值)模拟这些锥体完全丧失的情况。超出1.0
的值会夸大锥体间的差异,这可能有助于弥补减少的颜色视觉。
11.144.1.5 峰值检测
为了帮助处理仅具有静态HDR10元数据(或完全没有标记)来源的情况,libplacebo使用其自己的内部帧分析计算着色器来分析源帧并实时调整色调映射函数。如果这太慢,或者需要完全可再现的帧级精确结果,建议关闭此功能。
- peak_detect
启用HDR峰值检测。忽略静态MaxCLL/MaxFALL值,而是根据输入进行动态检测。请注意,检测到的值不会写回输出帧,它们只是引导内部色调映射过程。默认启用。
- smoothing_period
峰值检测平滑周期,介于
0.0
和1000.0
之间。较高的值会使峰值检测对输入变化的响应性降低。默认为100.0
.- minimum_peak
检测到的峰值的下限(相对于SDR白色),介于
0.0
和100.0
之间。默认为1.0
.- scene_threshold_low
- scene_threshold_high
场景变换检测的上、下阈值。以对数刻度表示,范围介于
0.0
和100.0
之间。默认值为5.5
和10.0
。将任何一个值设置为负数则禁用此功能。- percentile
用于色调映射的帧亮度直方图的百分比值。默认为
99.995
,属于较为保守的数值。将此设置为100.0
将禁用帧直方图测量,而改为使用真实的峰值亮度进行色调映射。
11.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+动态元数据的Bezier曲线进行色调映射。根据目标与实际显示峰值亮度的比例调整OOTF。
- ‘st2094-10’
来源于SMPTE ST 2094-10附件B.2的EETF,考虑到输入信号的平均亮度以及最大/最小值。可配置的对比度参数影响线性输出段的斜率,默认为
1.0
不增加/减少对比度的情况下。请注意,目前尚未包括附件B.3中定义的主观增益/偏移/伽马控制。- ‘bt.2390’
来源于ITU-R报告BT.2390的EETF,一个带线性段的Hermite样条过渡。膝点偏移是可配置的。注意此参数默认值为
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’
Reinhard色调映射算法的推广,支持黑色附近的额外线性斜率。色调映射参数表示线性部分与非线性部分之间的权衡。基本上,对于给定参数x,每个颜色值低于x的部分将线性映射,而更高值将非线性色调映射。接近
1.0
的值使此曲线表现得像clip
,接近0.0
的值使此曲线表现得像reinhard
。默认值为0.3
,在色彩准确性与保留色域外细节之间提供了良好的平衡。- ‘hable’
由John 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的大小,在
2
和1024
之间。默认值为256
。需要注意的是,当与peak_detect
.- contrast_recovery
结合使用时,这个数字是平方的。
0.0
对比度恢复强度。如果设置为大于0.30
.- contrast_smoothness
的值,源图像将分为高频和低频分量,并将部分高频图像添加回色调映射后的输出中。对于某些HDR来源,这可能会造成过度振铃伪像,但能改善色调映射后图像体会的主观清晰度和保留的细节。默认值为
3.5
对比度恢复低通核大小。默认值为contrast_recovery
。增加或减少此值将对视觉效果产生显著影响。当
禁用时无效果。
11.144.1.7 抖动 默认情况下,libplacebo会在必要时执行抖动,包括渲染到低于16位精度的任何整数格式。建议始终开启此选项,因为关闭可能会导致输出中出现明显的色彩带,即使debanding
滤镜已启用。如果需要最大性能,请使用ordered_fixed
而不是禁用抖动。
- dithering
抖动方法。接受以下值:
- ‘none’
完全禁用抖动。可能会导致明显的色彩带。
- ‘blue’
使用伪蓝噪声抖动。这是默认设置。
- ‘ordered’
可调的有序抖动模式。
- ‘ordered_fixed’
使用固定大小为
6
的快速有序抖动。无纹理。- ‘white’
使用白噪声抖动。无纹理。
- dither_lut_size
抖动LUT大小,以2为底对数,在
1
和8
之间。默认值为6
,对应的LUT大小为64x64
.- dither_temporal
启用时间抖动。默认情况下禁用。
11.144.1.8 自定义着色器 libplacebo支持基于mpv的.hook GLSL语法的多种自定义着色器。此类着色器的集合可在此处找到:
libplacebo supports a number of custom shaders based on the mpv .hook GLSL syntax. A collection of such shaders can be found here: 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
将完整的自定义着色器指定为原始字符串。
11.144.1.9 调试 / 性能 本节中的所有选项默认关闭。当尝试以质量为代价挤压最大性能时,这些选项可能有所帮助。
All of the options in this section default off. They may be of assistance when attempting to squeeze the maximum performance at the cost of quality.
- skip_aa
禁用下缩时的抗锯齿功能。
- polar_cutoff
将极地(EWA)缩放器核内核的绝对幅度截断到
0.0
和1.0
.- disable_linear
之间。禁用线性光缩放。
- disable_builtin
禁用内置GPU采样(强制使用LUT)。
- disable_fbos
强制禁用FBO,导致几乎所有功能丧失,但提供最大可能速度。
11.144.2 命令 此过滤器支持几乎所有上述选项作为
This filter supports almost all of the above options as 命令.
11.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
- 将低帧率/VFR输入插值为平滑的60fps常量输出:
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的系统上运行此过滤器(并禁用最昂贵的选项):
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
11.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_mean
或mean
(默认)。- n_threads
设置初始化libvmaf时使用的线程数。默认值:
0
,无线程。- n_subsample
设置使用的帧子采样间隔。
该过滤器还支持framesync选项。
11.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 -
11.146 libvmaf_cuda
这是libvmaf过滤器的CUDA变体。它只接受CUDA帧。
它需要Netflix的vmaf库(libvmaf)作为前提条件。安装库后,可以启用以下功能:./configure --enable-nonfree --enable-ffnvcodec --enable-libvmaf
.
11.146.1 示例
- 显示CUVID硬件解码和CUDA缩放的基本用法,与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 -
11.147 limitdiff
使用第二个视频流和可选的第三个视频流应用有限差异过滤器。
该过滤器接受以下选项:
- threshold
设置允许视频流差异时使用的阈值。任何绝对差异值低于或等于此阈值的像素分量将从第一个视频流中选取。
- elasticity
设置处理视频流时软阈值的弹性。此值乘以第一个值设置第二个阈值。任何绝对差异值大于或等于第二个阈值的像素分量将从第二个视频流中选取。在这两个阈值之间的值将在线性插值第一个和第二个视频流之间使用。
- reference
启用参考(第三个)视频流处理。默认情况下禁用。如果设置,此视频流将用于计算第一个视频流的绝对差异。
- planes
指定要处理的平面。默认为所有可用平面。
11.147.1 命令
此过滤器支持上述所有选项作为命令除了选项‘reference’.
11.148 limiter
将像素分量值限制到指定范围[min, max]。
该过滤器接受以下选项:
- min
下限。默认为输入的最低允许值。
- max
上限。默认为输入的最高允许值。
- planes
指定要处理的平面。默认为所有可用平面。
11.148.1 命令
此过滤器支持上述所有选项作为命令.
11.149 loop
循环视频帧。
该过滤器接受以下选项:
- loop
设置循环次数。将此值设置为-1将导致无限循环。默认值为 0。
- size
设置最大帧数。默认值为 0。
- start
设置循环的第一帧。默认是0。
- time
设置循环开始的时间(以秒为单位)。仅在名为start的选项设置为时使用
-1
.
11.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
11.150 lut1d
对输入视频应用1D LUT。
该过滤器接受以下选项:
- file
设置1D LUT文件名称。
当前支持的格式:
- ‘cube’
Iridas
- ‘csp’
cineSpace
- interp
选择插值模式。
可用值为:
- ‘nearest’
使用最近定义点的值。
- ‘linear’
使用线性插值计算值。
- ‘cosine’
使用余弦插值计算值。
- ‘cubic’
使用立方体插值计算值。
- ‘spline’
使用样条插值计算值。
11.150.1 命令
此过滤器支持上述所有选项作为命令.
11.151 lut3d
对输入视频应用3D LUT。
该过滤器接受以下选项:
- file
设置3D LUT文件名称。
当前支持的格式:
- ‘3dl’
AfterEffects
- ‘cube’
Iridas
- ‘dat’
DaVinci
- ‘m3d’
Pandora
- ‘csp’
cineSpace
- interp
选择插值模式。
可用值为:
- ‘nearest’
使用最近定义点的值。
- ‘trilinear’
使用定义立方的8个点插值值。
- ‘tetrahedral’
使用四面体插值值。
- ‘pyramid’
使用金字塔插值值。
- ‘prism’
使用棱柱插值值。
11.151.1 命令
此过滤器支持interp
选项作为命令.
11.152 lumakey
将某些亮度值转换为透明度。
该过滤器接受以下选项:
- threshold
设置将用作透明度基准的亮度。默认值为
0
.- tolerance
设置将键出亮度的范围。默认值为
0.01
.- softness
设置柔化范围。默认值为
0
。使用此选项控制从零到完全透明的渐进过渡。
11.152.1 命令
此过滤器支持相同命令作为选项。命令接受与对应选项相同的语法。
如果指定的表达式无效,将保留其当前值。
11.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)",伽马)*(最大值-最小值)+最小值"
所有表达式默认值为"裁剪值"。
11.153.1 命令
此滤镜支持相同命令作为选项。
11.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'
11.154 lut2, tlut2
该lut2
滤镜接受两个输入流并输出一个
流。tlut2
(时间 lut2) 滤镜从一个单独的流中接受两个连续帧。
此滤镜接受以下参数:
- c0
设置第一个像素分量表达式
- c1
设置第二个像素分量表达式
- c2
设置第三个像素分量表达式
- c3
设置第四个像素分量表达式,对应于 Alpha 分量
- d
设置输出位深,仅适用于
lut2
滤镜。默认值为 0,表示位深自动从第一个输入格式中获取。
该lut2
滤镜还支持帧同步选项。
每个选项都指定用于为相应的像素分量值计算查找表的表达式。
与每个c*选项关联的确切分量取决于输入格式。
表达式可包含以下常量:
- w
- h
输入的宽度和高度。
- x
像素分量的第一个输入值。
- y
像素分量的第二个输入值。
- bdx
第一个输入视频的位深。
- bdy
第二个输入视频的位深。
所有表达式默认值为"x"。
11.154.1 命令
此滤镜支持以上所有选项作为命令除选项d
.
11.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)))'
11.155 maskedclamp
使用第二个输入流和第三个输入流夹紧第一个输入流。
返回的第一个流的值将在第二个输入流 -undershoot
和第三个输入流 +overshoot
.
此滤镜接受以下选项:
- undershoot
默认值为
0
.- overshoot
默认值为
0
.- planes
设置要处理为位图的平面,未处理的平面从第一个流复制。 默认值为 0xf,所有平面皆会处理。
11.155.1 命令
此滤镜支持以上所有选项作为命令.
11.156 maskedmax
使用第二个输入流和第一个输入流、第三个输入流和第一个输入流之间的绝对差异,将第二个和第三个输入流合并到输出流中。 选出的值来自第二个输入流(如果第二个绝对差异大于第一个差异)或来自第三个输入流。
此滤镜接受以下选项:
- planes
设置要处理为位图的平面,未处理的平面从第一个流复制。 默认值为 0xf,所有平面皆会处理。
11.156.1 命令
此滤镜支持以上所有选项作为命令.
11.157 maskedmerge
使用第三个输入流中每个像素权重将第一个输入流与第二个输入流合并。
第三个流像素分量中值为 0 的分量表示第一个输入流的分量保持不变,而最大值(例如 8 位视频的 255)表示第二个输入流的分量保持不变。中间值表示两个输入流的像素分量之间的合并量。
此滤镜接受以下选项:
- planes
设置要处理为位图的平面,未处理的平面从第一个流复制。 默认值为 0xf,所有平面皆会处理。
11.157.1 命令
此滤镜支持以上所有选项作为命令.
11.158 maskedmin
使用第二个输入流和第一个输入流之间的绝对差异、第三个输入流和第一个输入流之间的绝对差异,将第二个和第三个输入流合并到输出流中。选出的值来自第二个输入流(如果第二个绝对差异小于第一个差异)或来自第三个输入流。
此滤镜接受以下选项:
- planes
设置要处理为位图的平面,未处理的平面从第一个流复制。 默认值为 0xf,所有平面皆会处理。
11.158.1 命令
此滤镜支持以上所有选项作为命令.
11.159 maskedthreshold
根据两个视频流的绝对差异和固定阈值进行像素挑选。
如果第一和第二视频流的像素分量之间的绝对差异等于或低于用户提供的阈值,则选择第一视频流的像素分量,否则选择第二视频流的像素分量。
此滤镜接受以下选项:
- threshold
设置用于从两个输入视频流的绝对差异中挑选像素的阈值。
- planes
设置要处理为位图的平面,未处理的平面从第二个流复制。 默认值为 0xf,所有平面皆会处理。
- mode
设置滤镜操作模式。可以是
abs
或diff
。 默认值为abs
.
11.159.1 命令
此滤镜支持以上所有选项作为命令.
11.160 maskfun
从输入视频创建蒙版。
例如,与tblend
滤镜结合使用,它对于创建运动蒙版非常有用。
此滤镜接受以下选项:
- low
设置低阈值。任何像素分量低于或等于该值将被设置为 0。
- high
设置高阈值。任何超过该值的像素分量将被设置为当前像素格式允许的最大值。
- planes
设置要过滤的平面,默认情况下过滤所有可用平面。
- fill
用该值填充所有帧像素。
- sum
为帧设置最大平均像素值。如果所有像素分量的总和高于此平均值,则输出帧将完全用填充选项中设置的值。 通常与
tblend
滤镜结合使用时对场景转换很有用。
11.160.1 命令
此滤镜支持以上所有选项作为命令.
11.161 mcdeint
应用运动补偿去隔行。
它需要每帧一个场作为输入,因此必须与 yadif=1/3 或类似功能一起使用。
此滤镜接受以下选项:
- mode
设置去隔行模式。
接受以下值之一:
- ‘fast’
- ‘medium’
- ‘slow’
使用迭代运动估计
- ‘extra_slow’
类似‘slow’,但使用多个参考帧。
默认值为‘fast’.
- parity
设置输入视频中假设的图像场间隔。它必须是以下值之一:
- ‘0, tff’
假设为顶场优先
- ‘1, bff’
假设为底场优先
默认值为‘bff’.
- qp
设置内部编码器使用的每块量化参数 (QP)。
较高的值应该导致更平滑的运动向量场但较少的单独向量优化。默认值为 1。
11.162 median
从由半径定义的某些矩形中挑选中值像素。
此滤镜接受以下选项:
- radius
设置水平半径大小。默认值为
1
。 允许范围为 1 到 127 的整数。- planes
设置处理的平面。默认值为
15
,即所有可用平面。- radiusV
设置垂直半径大小。默认值为
0
。 允许范围为 0 到 127 的整数。 如果为 0,则值将从水平radius
选项中选取。- percentile
设置中值百分比。默认值为
0.5
。 默认值0.5
将始终选取中间值,而0
将选取最小值,1
选取最大值。
11.162.1 命令
此滤镜支持相同命令作为选项。 命令接受与对应选项相同的语法。
若指定的表达式无效,则将保持当前值。
11.163 mergeplanes
从多个视频流合并颜色通道分量。
该滤镜最多接受 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
.
11.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
11.164 mestimate
使用块匹配算法估计并导出运动向量。 运动向量存储在帧侧数据中以供其他滤镜使用。
此滤镜接受以下选项:
- method
指定运动估计方法。接受以下值之一:
- ‘esa’
穷举搜索算法。
- ‘tss’
三步搜索算法。
- ‘tdls’
二维对数搜索算法。
- ‘ntss’
新三步搜索算法。
- ‘fss’
四步搜索算法。
- ‘ds’
菱形搜索算法。
- ‘hexbs’
基于六边形的搜索算法。
- ‘epzs’
增强型预测区域搜索算法。
- ‘umh’
不均匀多六边形搜索算法。
默认值为‘esa’.
- mb_size
宏块大小。默认值
16
.- search_param
搜索参数。默认值
7
.
11.165 midequalizer
使用两个视频流应用 Midway 图像均衡化效果。
Midway 图像均衡化调整一对图像以具有相同的直方图,同时尽可能地保持它们的动态特性。它适用于例如匹配立体相机的一对图像曝光。
该滤镜有两个输入和一个输出,它们必须具有相同的像素格式,但可以有不同的大小。滤镜的输出是第一个输入使用两者的中间直方图调整的结果。
此滤镜接受以下选项:
- planes
设置要处理的平面。默认值为
15
,即所有可用平面。
11.166 minterpolate
使用运动插值将视频转换为指定帧率。
此滤镜接受以下选项:
- fps
指定输出帧率。可以是有理数,例如
60000/1001
。如果fps低于源 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.
.
11.167 混合
将几个视频输入流混合为一个视频流。
以下是可接受选项的描述。
- inputs
输入流的数量。如果未指定,默认值为 2。
- weights
指定每个输入视频流的权重,作为序列。 每个权重用空格分隔。如果权重数量少于帧最后指定的权重将用于所有剩余未设定的权重。
- scale
设置缩放比例,如果设置,则将其与权重乘以像素值的总和相乘以获得最终目的像素值。默认scale会自动缩放到权重的总和。
- planes
设置要滤波的平面。默认是全部。允许的范围是从 0 到 15。
- duration
指定如何确定流结束。
- ‘longest’
最长输入的持续时间。(默认)
- ‘shortest’
最短输入的持续时间。
- ‘first’
第一个输入的持续时间。
11.167.1 命令
此滤波器支持以下命令:
- weights
- scale
- planes
语法与具有相同名称的选项相同。
11.168 单色
使用自定义颜色滤镜将视频转换为灰色。
以下是可接受选项的描述。
- cb
设置色度蓝点。允许范围从 -1 到 1。 默认值是 0。
- cr
设置色度红点。允许范围从 -1 到 1。 默认值是 0。
- size
设置颜色滤镜大小。允许范围为 0.1 到 10。 默认值是 1。
- high
设置高光强度。允许范围从 0 到 1。 默认值是 0。
11.168.1 命令
此滤波器支持所有上述选项作为命令.
11.169 形态学
此滤波器允许应用主要形态学灰度变换,腐蚀和膨胀,结合在第二输入流中设置的任意结构。
与直观实现和性能较慢的腐蚀和膨胀滤波器,速度至关重要时morpho
滤波器应被使用。
以下是接受选项的描述,
- mode
设置要应用的形态学变换,可以是:
- ‘erode’
- ‘dilate’
- ‘open’
- ‘close’
- ‘gradient’
- ‘tophat’
- ‘blackhat’
默认是
erode
.- planes
设置要滤波的平面,默认情况下滤除了所有平面,除了 alpha。
- structure
设置视频帧结构视频将通过第二输入流处理,可以是第一个或全部。默认是全部.
该morpho
滤波器也支持framesync选项。
11.169.1 命令
此滤波器支持与选项相同的命令。
11.170 帧降频
删除与上一帧变化不大的帧以降低帧率。
此滤波器的主要用途是非常低比特率编码(例如以调制解调器进行流式传输),但理论上可以用于修复那些反向电视化的电影。
以下是接受选项的描述。
- max
设置可以删除的连续帧的最大数量(如果是正值),或删除帧之间的最小间隔(如果是负值)。如果值为 0,则忽略之前连续删除帧的数量,直接删除帧。
默认值是 0。
- keep
设置连续相似帧被忽略的最大数量,然后开始删除它们。 如果值为 0,则忽略之前连续类似帧的数量,直接删除帧。
默认值是 0。
- hi
- lo
- frac
设置删除阈值。
值为hi和lo是对 8x8 像素块的计算代表真实像素值差异,因此阈值 64 表示每个像素的区别的一个单位或在块上以不同方式分布的同样差异。
如果 8x8 块没有超过阈值hi的差异,并且没有超过frac块(1 表示整个图像)超过阈值lo.
则候选帧可被删除。hi的默认值为 64*12,lo的默认值为 64*5,并且frac的默认值为 0.33。
11.171 均方差
获取两个输入视频之间的均方绝对差 (MSAD)。
此滤波器接受两个输入视频。
两个输入视频必须具有相同的分辨率和像素格式以使滤波器正常工作。此外,假设两个输入具有相同数量的帧,这些帧会一一进行比较。
通过日志系统打印获得的每个组件的平均值、最小值和最大 MSAD。
滤波器将每帧计算的 MSAD 存储在帧元数据中。
此滤波器还支持framesync选项。
在下面的示例中正在处理的输入文件main.mpg与参考文件进行比较ref.mpg.
ffmpeg -i main.mpg -i ref.mpg -lavfi msad -f null -
11.172 像素乘法
将第二视频流的像素值与第一个视频流的像素值相乘。
滤波器接受以下选项:
- scale
设置应用于第二视频流的比例。默认是
1
。 允许的范围是从0
到9
.- offset
设置应用于第二视频流的偏移量。默认是
0.5
。 允许的范围是从-1
到1
.- planes
指定输入视频流中要处理的平面。 默认情况下处理所有平面。
11.172.1 命令
此滤波器支持与选项相同的命令。
11.173 反转
反转(取反)输入视频。
它接受以下选项:
- components
设置要反转的组件。
组件的可用值如下:
- ‘y’
- ‘u’
- ‘v’
- ‘a’
- ‘r’
- ‘g’
- ‘b’
- negate_alpha
值为 1 时,反转 alpha 分量(如果存在)。默认值为 0。
11.173.1 命令
此滤波器支持与选项相同的命令。
11.174 非局部均值
使用非局部均值算法对帧进行去噪。
每个像素通过寻找具有类似上下文的其他像素进行调整。这种上下文相似性是通过比较尺寸为pxp的周围补丁来定义的。补丁在像素周围的rxr区域中搜索。
请注意,研究区域定义了补丁的中心,这意味着某些补丁将由研究区域外的像素组成。
滤波器接受以下选项。
- s
设置去噪强度。默认值是 1.0。必须在 [1.0, 30.0] 范围内。
- p
设置补丁尺寸。默认值是 7。必须是范围 [0, 99] 内的奇数。
- pc
与p相同,但适用于色度平面。
默认值是0表示自动。
- r
设置研究尺寸。默认值是 15。必须是范围 [0, 99] 内的奇数。
- rc
与r相同,但适用于色度平面。
默认值是0表示自动。
11.175 神经网络边缘插值
使用神经网络边缘指向插值方法对视频进行去交织处理。
此滤波器接受以下选项:
- weights
必选选项,没有二进制文件滤镜无法工作。 目前文件可以在以下位置找到: https://github.com/dubhater/vapoursynth-nnedi3/blob/master/src/nnedi3_weights.bin
- deint
设置要去交织处理的帧,默认是
all
。 可以是all
或interlaced
.- 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
.
11.175.1 命令
此滤波器支持与选项相同的命令,不包括权重选项。
11.176 不使用格式
强制 libavfilter 不为下一个滤波器的输入使用任何指定的像素格式。
它接受以下参数:
- pix_fmts
一个由 '|' 分隔的像素格式名称列表,例如 pix_fmts=yuv420p|monow|rgb24"。
11.176.1 示例
- 强制 libavfilter 使用与yuv420p不同的格式作为 vflip 滤波器的输入:
noformat=pix_fmts=yuv420p,vflip
- 将输入视频转换为列表中未包含格式的任何格式:
noformat=yuv420p|yuv444p|yuv410p
11.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’
均匀噪声(否则为高斯噪声)
11.177.1 示例
在输入视频中添加时间噪声和均匀噪声:
noise=alls=20:allf=t+u
11.178 归一化
归一化RGB视频(即直方图拉伸,对比度拉伸)。 参见:https://en.wikipedia.org/wiki/Normalization_(image_processing)
对于每个帧的每个通道,滤镜计算输入范围并线性映射到用户指定的输出范围。输出范围默认为从纯黑到纯白的完全动态范围。
可以对输入范围进行时间平滑,以减少由于小暗或亮物体进入或离开场景而导致的闪烁(亮度快速变化)。这类似于视频摄像机上的自动曝光(自动增益控制),如视频摄像机一样,可能导致视频过度曝光或曝光不足一段时间。
红、绿、蓝通道可以独立归一化,这可能会导致一些颜色偏移,也可以链接在一起作为单个通道,以防止颜色偏移。链接归一化保留色调。而独立归一化不保留色调,因此可以用于去除一些颜色偏移。独立和链接归一化可以按照任意比例组合。
归一化滤镜接受以下选项:
- blackpt
- whitept
定义输出范围的颜色。最小输入值被映射到黑点。最大输入值被映射到白点。 默认值分别是黑色和白色。指定白色为黑点并指定黑色为白点将提供颜色反转的归一化视频。可以使用灰色调来减少动态范围(对比度)。在此处指定饱和颜色可以创建一些有趣的效果。
- smoothing
用于时间平滑的前几帧数。使用滚动平均数对当前帧和平滑前几帧进行时间范围平滑。默认值为0(无时间平滑)。
- independence
控制独立(颜色偏移)通道归一化与链接(色彩保护)归一化的比例。0.0为完全链接,1.0为完全独立。默认值为1.0(完全独立)。
- strength
滤镜的整体强度。1.0是完全强度。0.0是相当昂贵的无操作。默认值为1.0(完全强度)。
11.178.1 命令
该滤镜支持与选项相同的命令,不包括平滑选项。 命令接受与对应选项相同的语法。
如果指定的表达式无效,则保持当前值。
11.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
11.179 null
将视频源原样传送到输出。
11.180 ocr
光学字符识别
此滤镜使用Tesseract进行光学字符识别。要启用此滤镜的编译,需要使用以下配置:--enable-libtesseract
.
它接受以下选项:
- datapath
设置Tesseract数据路径。默认情况下使用安装时设置的路径。
- language
设置语言,默认值为"eng"。
- whitelist
设置字符白名单。
- blacklist
设置字符黑名单。
滤镜作为帧元数据导出识别的文本lavfi.ocr.text
。
滤镜作为帧元数据导出识别的单词的置信度lavfi.ocr.confidence
.
11.181 ocv
使用libopencv应用视频变换。
要启用此滤镜,请安装libopencv库和头文件,并使用以下配置来配置:--enable-libopencv
.
它接受以下参数:
- filter_name
要应用的libopencv滤镜名称。
- filter_params
传递给libopencv滤镜的参数。如果未指定,则使用默认值。
有关更详细的信息,请参阅官方libopencv文档:http://docs.opencv.org/master/modules/imgproc/doc/filtering.html
支持多个libopencv滤镜;请参阅以下小节。
11.181.1 膨胀
通过特定的结构元素对图像进行膨胀处理。
对应于libopencv函数cvDilate
.
它接受以下参数:结构元素|迭代次数.
结构元素表示一个结构元素,且具有以下语法:列x行+锚点横向x锚点纵向/形状
列与行表示结构元素的列数和行数,锚点横向与锚点纵向表示锚点,形状表示结构元素的形状。形状必须是"rect"、"cross"、"ellipse"或"custom"中的一种。
如果形状的值为"custom",它必须后接一个形如"=文件名"的字符串。名为文件名的文件假定代表一个二值图像,每个可打印字符对应一个亮点。使用自定义形状时,列与行值将被忽略,而是假定文件中的列数和行数。
默认值为结构元素"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
11.181.2 腐蚀
使用特定结构元素对图像进行腐蚀处理。
对应于libopencv函数cvErode
.
它接受以下参数:结构元素:迭代次数,其语法和语义与膨胀滤镜相同。
11.181.3 平滑
对输入视频进行平滑处理。
滤镜接受以下参数:类型|参数1|参数2|参数3|参数4.
类型是要应用的平滑滤镜类型,必须是以下值之一:"blur"、"blur_no_scale"、"median"、"gaussian"或"bilateral"。默认值为"gaussian"。
参数1, 参数, 2,4的含义取决于平滑类型。参数接受正整数值或0。及参数参数4及接受浮点值。
参数默认为3。其他参数的默认值为0。
这些参数对应于libopencv函数分配的参数cvSmooth
.
11.182 示波器
2D 视频示波器。
用于测量空间脉冲、阶跃响应、色度延迟等。
它接受以下参数:
- x
设置示波器中心x位置。
- y
设置示波器中心y位置。
- s
设置示波器大小,相对于帧对角线。
- t
设置示波器倾斜/旋转。
- o
设置跟踪透明度。
- tx
设置示波器中心x位置。
- ty
设置示波器中心y位置。
- tw
设置示波器宽度,相对于帧宽度。
- th
设置示波器高度,相对于帧高度。
- c
设置跟踪的组件。默认情况下它跟踪前三个组件。
- g
绘制跟踪网格。默认情况下启用。
- st
绘制一些统计数据。默认情况下启用。
- sc
绘制示波器。默认情况下启用。
11.182.1 命令
此滤镜支持相同的命令作为其选项。 命令接受与对应的选项相同的语法。
如果指定的表达式无效,则保持当前值。
11.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
11.183 叠加
在另一个视频上叠加一个视频。
它具有两个输入和一个输出。第一个输入是“主”视频,第二个输入叠加在此视频上。
它接受以下参数:
以下是接受选项的描述。
- x
- y
设置叠加视频在主视频上的x和y坐标的表达式。两个表达式的默认值均为“0”。如果表达式无效,则设置为一个巨大值(意思是叠加视频不会显示在输出可见区域内)。
- eof_action
参见帧同步.
- eval
设置表达式的x, 和y评估的时间。
它接受以下值:
- ‘init’
仅在过滤器初始化时或处理命令时评估表达式
- ‘frame’
为每个输入帧评估表达式
默认值为‘frame’.
- shortest
参见帧同步.
- 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
参见帧同步.
- alpha
设置叠加视频的alpha格式,可以是直接或预乘。默认值为直接.
这些x定位表达式可以包含以下参数。y expressions can contain the following parameters.
- main_w, W
- main_h, H
主输入的宽度和高度。
- overlay_w, w
- overlay_h, h
叠加输入的宽度和高度。
- x
- y
计算得出的x和y值。它们针对每个新帧进行评估。
- hsub
- vsub
输出格式的水平和彩色子抽样值。例如,对于像素格式"yuv422p"水平子抽样为2,垂直子抽样为1。
- n
输入帧的数量,从0开始
- pos
输入帧位置在文件中的位置,如果不知道则为NAN;废弃,请勿使用
- t
时间戳,以秒为单位。如果输入时间戳未知,则为NAN。
该滤镜还支持帧同步选项。
请注意,在每帧评估时提供的变量n, t只有在评估每帧时才可用,且当eval设置为‘init’.
请注意,帧从每个输入视频的时间戳顺序中提取,因此,如果它们的初始时间戳不同,建议通过setpts=PTS-STARTPTS滤镜将它们归零,作为例子电影滤镜所做。
您可以将多个叠加链接在一起,但应测试这种方法的效率。
11.183.1 命令
此过滤器支持以下命令:
- x
- y
修改叠加输入的x和y。 命令接受与对应选项相同的语法。
如果制定的表达式无效,则保持当前值。
11.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]
11.184 overlay_cuda
在一个视频上叠加另一个视频。
这是 CUDA 版本的叠加滤镜。 它仅接受 CUDA 帧。底层输入像素格式必须匹配。
它有两个输入和一个输出。第一个输入是“主”视频,第二个输入覆盖在其上。
它接受以下参数:
- x
- y
设置叠加视频在主视频上的 x 和 y 坐标的表达式。
它们可以包含以下参数:
- main_w, W
- main_h, H
主输入的宽度和高度。
- overlay_w, w
- overlay_h, h
叠加输入的宽度和高度。
- x
- y
计算后的值为x和y。它们会在每一新帧时进行评估。
- n
主输入帧的序号索引,从 0 开始。
- pos
主输入帧在文件中的字节偏移位置,未知时为 NAN。 已弃用,不建议使用。
- t
主输入帧的时间戳,以秒为单位,未知时为 NAN。
默认值是“0”,对于两个表达式。
- eval
设置评估表达式的时机x和y。
它接受以下值:
- init
在滤镜初始化或处理命令时仅评估一次表达式。
- frame
对每个传入帧评估表达式。
默认值为frame.
- eof_action
详见framesync.
- shortest
详见framesync.
- repeatlast
详见framesync.
此滤镜还支持framesync选项。
11.185 owdenoise
应用过度完整的小波去噪器。
此滤镜接受以下选项:
- depth
设置深度。
较大的深度值将对较低频率成分进行更多去噪,但 会减慢过滤速度。
必须是范围 8-16 内的整数,默认值为
8
.- luma_strength, ls
设置亮度强度。
必须是范围 0-1000 内的双精度值,默认值为
1.0
.- chroma_strength, cs
设置色度强度。
必须是范围 0-1000 内的双精度值,默认值为
1.0
.
11.186 pad
为输入图像添加填充,并将原始输入放置在 提供的x, y坐标上。
它接受以下参数:
- width, w
- height, h
为添加填充后的输出图像大小指定表达式。如果宽度或高度值为 0,则使用 对应的输入尺寸作为输出。
此宽度表达式可以引用由高度表达式设置的值,反之亦然。
默认值为宽度和高度为 0。
- x
- y
指定在填充区域内放置输入图像的偏移量, 相对于输出图像顶部/左侧边界。
此x表达式可以引用由y表达式设置的值,反之亦然。
默认值为x和y为 0。
如果x或y求值为负数,则会 将输入图像设置为居中于填充区域。
- color
指定填充值区域的颜色。有关此选项语法, 请查看(ffmpeg-utils)“颜色”部分 ffmpeg-utils 手册.
默认值为颜色为“黑色”。
- eval
指定评估的时间宽度, 高度, x和y表达式。
它接受以下值:
- ‘init’
仅在滤镜初始化或处理命令时评估一次表达式。
- ‘frame’
对每个传入帧评估表达式。
默认值是“init’.
- aspect
填充到长宽比而不是分辨率。
值用于宽度, 高度, x,和y选项是包含以下常量的表达式:
- in_w
- in_h
输入视频宽度和高度。
- iw
- ih
这些与in_w和in_h.
- out_w
- out_h
输出宽度和高度(填充区域大小),如下 由宽度和高度表达式指定。
- ow
- oh
这些与out_w和out_h.
- x
- y
由x和y表达式指定的偏移量,或如果尚未指定为 NAN。
- a
相同于iw / ih
- sar
输入样本长宽比
- dar
输入显示长宽比,与它相同iw / ih) * sar
- hsub
- vsub
水平和垂直色度下采样值。例如,对于 像素格式“yuv422p”hsub为 2 且vsub为 1。
11.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"
11.187 palettegen
为整个视频流生成一个调色板。
它接受以下选项:
- max_colors
设置调色板中的最大颜色数以量化。 注意:调色板仍将包含 256 种颜色;未使用的调色板条目 将为黑色。
- reserve_transparent
创建最多 255 种颜色的调色板,并将最后一种保留 为透明色。保留透明颜色对 GIF 优化有用。 如果未设置,调色板中的颜色最多为 256 种。你可能希望 为单个图像禁用此选项。 默认已设置。
- transparency_color
设置将用作背景的透明色。
- stats_mode
设置统计模式。
它接受以下值:
- ‘full’
计算整个帧的直方图。
- ‘diff’
仅计算与前一帧不同部分的直方图。这 可能对于输入背景静态时给出动态部分更大的权重是相关的。
- ‘single’
为每一帧计算新的直方图。
默认值为full.
滤镜还导出帧元数据lavfi.color_quant_ratio
(nb_color_in / nb_color_out
)可以用来评估调色板的颜色量化程度。
此信息也可见于info日志级别。
11.187.1 示例
- 使用生成的视频代表调色板
ffmpeg
:ffmpeg -i input.mkv -vf palettegen palette.png
11.188 paletteuse
使用调色板对输入视频流进行下采样。
滤镜有两个输入:一个视频流和一个调色板。调色板必须 是 256 像素图像。
它接受以下选项:
- dither
选择抖动模式。可用的算法有:
- ‘bayer’
有序 8x8 bayer 抖动(确定性)
- ‘heckbert’
由 Paul Heckbert 在 1982 年定义的抖动(简单错误扩散)。 注意:这种抖动有时被认为是“错误的”,包括作为参考。
- ‘floyd_steinberg’
Floyd 和 Steingberg 抖动(错误扩散)
- ‘sierra2’
Frankie Sierra 第 2 版抖动(错误扩散)
- ‘sierra2_4a’
Frankie Sierra 第 2 版“Lite”抖动(错误扩散)
- ‘sierra3’
Frankie Sierra 第 3 版抖动(错误扩散)
- ‘burkes’
Burkes 抖动(错误扩散)
- ‘atkinson’
Bill Atkinson 在 Apple Computer 开发的 Atkinson 抖动(错误扩散)
- ‘none’
禁用抖动。
默认值为sierra2_4a.
- bayer_scale
当bayer抖动被选中时,此选项定义 模式的比例(交叉阴影图案可见程度)。低值表示更 可见的图案以减少波纹,高值表示图案减少可见, 以波纹为代价。
该选项必须是范围 [0,5] 内的整数值。默认值为2.
- diff_mode
如果设置,定义处理区域
- ‘rectangle’
只有变化的矩形将被重新处理。这类似于 GIF 裁剪/偏移压缩机制。此选项对于速度可用,当图像的 一部分发生变化,可以用于限制错误扩散的范围dither到限制运动场景的 矩形(它导致更确定的输出,如果场景变化不大,结果 减少了运动噪声和更好的 GIF 压缩)。
默认值为none.
- new
为每个输出帧获取新的调色板。
- alpha_threshold
为透明度设置 alpha 阈值。高于此阈值的 alpha 值 将被视为完全不透明,低于此阈值的值将被视为完全透明。
该选项必须是范围 [0,255] 内的整数值。默认值为128.
11.188.1 示例
- 使用调色板(例如通过palettegen生成)编码 GIF
使用
ffmpeg
:ffmpeg -i input.mkv -i palette.png -lavfi paletteuse output.gif
11.189 perspective
修正不是垂直于屏幕记录的视频的透视图。
以下是接受的参数说明。
- 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’.
11.190 phase
使交错视频延迟一个场时间,从而改变场序。
其预期用途是修复 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’仅使用图像分析。
11.190.1 命令
此过滤器支持上述所有选项作为命令.
11.191 光敏性
减少视频中的各种闪光,从而帮助癫痫患者。
它接受以下选项:
- frames, f
设置过滤时使用的帧数。默认值为30。
- threshold, t
设置检测阈值因子。默认值为1。 较低值更严格。
- skip
设置采样帧时跳过的像素数。默认值为1。 允许范围为1到1024。
- bypass
保持帧不变。默认未启用。
11.192 pixdesctest
像素格式描述符测试过滤器,主要用于内部测试。输出视频应该与输入视频相同。
例如:
format=monow, pixdesctest
可以用于测试monowhite像素格式描述符定义。
11.193 pixelize
对视频流应用像素化处理。
过滤器接受以下选项:
- width, w
- height, h
设置用于像素化处理的块维度。 默认值是
16
.- mode, m
设置所使用的像素化模式。
可能的值是:
- ‘avg’
- ‘min’
- ‘max’
默认值是
avg
.- planes, p
设置要过滤的平面。默认是过滤所有平面。
11.193.1 命令
此过滤器支持所有选项作为命令.
11.194 pixscope
显示颜色通道的样本值。主要用于检查颜色和水平。最低支持分辨率为640x480。
过滤器接受以下选项:
- x
设置范围的X位置,相对于X轴的偏移量。
- y
设置范围的Y位置,相对于Y轴的偏移量。
- w
设置范围宽度。
- h
设置范围高度。
- o
设置窗口不透明度。此窗口还包含有关像素区域的统计数据。
- wx
设置窗口X位置,相对于X轴的偏移量。
- wy
设置窗口Y位置,相对于Y轴的偏移量。
11.194.1 命令
此过滤器支持与选项相同的命令。
11.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
默认的pp过滤器组合(
hb|a,vb|a,dr|a
)- fa/fast
快速pp过滤器组合(
h1|a,v1|a,dr|a
)- ac
高质量pp过滤器组合(
ha|a|128|7,va|a,dr|a
)
11.195.1 示例
- 应用水平和垂直去块、去振铃以及自动亮度/对比度:
pp=hb/vb/dr/al
- 在不进行亮度/对比度校正的情况下应用默认过滤器:
pp=de/-al
- 应用默认过滤器和时间去噪器:
pp=default/tmpnoise|1|2|3
- 仅对亮度进行去块,并根据可用的CPU时间自动打开或关闭垂直去块:
pp=hb|y/vb|a
11.196 pp7
应用后处理过滤器7。这是一个spp过滤器的变体,类似于spp = 6,但使用7点DCT,其中只有中心样本在IDCT之后使用。
过滤器接受以下选项:
- qp
强制使用常量量化参数。它接受范围为0到63的整数。如果未设置,过滤器将使用视频流中的QP(如果可用)。
- mode
设置阈值模式。可用的模式包括:
- ‘hard’
设置硬阈值。
- ‘soft’
设置软阈值(去振铃效果更好,但可能更加模糊)。
- ‘medium’
设置中等阈值(效果良好,默认设置)。
11.197 premultiply
使用第二流的第一个平面作为Alpha,对输入视频流应用Alpha预乘效应。
两个流必须具有相同的尺寸和相同的像素格式。
过滤器接受以下选项:
- planes
设置将被处理的平面,未处理的平面将被复制。 默认值为0xf,所有平面都将被处理。
- inplace
处理时不需要第二输入,而是使用输入流中的Alpha平面。
11.198 prewitt
对输入视频流应用prewitt算子。
过滤器接受以下选项:
- planes
设置将被处理的平面,未处理的平面将被复制。 默认值为0xf,所有平面都将被处理。
- scale
设置过滤结果的乘数值。
- delta
设置过滤结果的加法值。
11.198.1 命令
此过滤器支持上述所有选项作为命令.
11.199 pseudocolor
通过伪颜色改变视频中的帧颜色。
此过滤器接受以下选项:
- c0
设置像素的第一分量表达式
- c1
设置像素的第二分量表达式
- c2
设置像素的第三分量表达式
- c3
设置像素的第四分量表达式,对应于Alpha分量
- index, i
设置用于改变颜色的基准分量
- preset, p
选择内置的LUT。默认设置为none。
可用的LUT包括:
- ‘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"。
11.199.1 命令
此过滤器支持上述所有选项作为命令.
11.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'"
11.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大的版本,一个标题行将出现在每对帧的统计数据之前,包含每帧格式的键值对和以下参数:
- 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
每个通道的允许最大值,平均到所有通道上。
11.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 -
11.201 pullup
拉伸倒置(逆向逐帧提取)过滤器,能够处理混合硬逐帧提取、24000/1001fps的进阶内容和30000/1001fps的进阶内容。
pullup过滤器设计成能够利用未来的上下文进行决策。 此过滤器是无状态的,这意味着它不会锁定到一个模式中,而是会向前查看以下字段以识别匹配项并重建进阶帧。
为了生成具有稳定帧速率的内容,请在pullup之后插入fps过滤器,使用fps=24000/1001
如果输入帧率是29.97fps,fps=24
用于30fps和(罕见的)经过电影化处理的25fps输入。
该滤镜接受以下选项:
- jl
- jr
- jt
- jb
这些选项分别设置忽略图像左、右、上和下部分的“杂物”的金额。左和右以8像素为单位,而顶部和底部以2行像素为单位。默认值是每边8像素。
- sb
设置严格断点。将此选项设置为1将降低滤镜生成偶尔错配帧的可能性,但也可能在高速运动序列期间导致大量帧被丢弃。相反,将其设置为-1会使滤镜更容易匹配字段。这可能有助于处理中有轻微模糊的字段的视频内容,但也可能导致输出中出现隔行帧。默认值为
0
.- mp
设置用于计算的度量平面。它接受以下值:
- ‘l’
使用亮度平面。
- ‘u’
使用蓝色色度平面。
- ‘v’
使用红色色度平面。
此选项可以设置为使用色度平面而不是默认的亮度平面来进行滤镜计算。这可能会在非常干净的源材料上提高精度,但更可能会降低精度,尤其是如果存在色度噪声(彩虹效应)或任何灰度视频时。 设置mp为一个色度平面的主要目的是减少CPU负载,使其在性能较低的机器上实时使用。
为了获得最佳效果(输出文件中没有重复的帧),有必要更改输出帧率。例如,进行反向电影化NTSC输入:
ffmpeg -i input -vf pullup -r 24000/1001 ...
11.202 qp
更改视频量化参数(QP)。
该滤镜接受以下选项:
- qp
设置量化参数的表达式。
通过eval API评估表达式,并可以包含以下常量等:
- 已知
如果索引不是129,则为1,否则为0。
- qp
从-129到128的连续索引。
11.202.1 示例
- 一些类似的方程式:
qp=2+2*sin(PI*qp)
11.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表达式设置的值,反之亦然。
默认情况下,x和y设置为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手册中。.
11.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
渲染二维码的宽度,包括和不包括填充。
这些参数允许q和Q表达式相互引用,因此,您可以例如指定
q=3/4*Q
.- rand(min, max)
返回一个介于min和max
- sar
输入的样本宽高比。
- t
时间戳,以秒为单位。如果输入时间戳未知,则为NAN。
- x
- y
绘制文本时的x和y偏移坐标。
这些参数允许x和y表达式相互引用,因此,您可以例如指定
y=x/dar
.
11.203.2 qrencode 文本展开
如果expansion设置为none
,文本将按字面打印。
如果expansion设置为normal
(默认设置),则使用以下展开机制。
反斜杠字符“\”,后跟任何字符,总是扩展为第二个字符。
形如%{...}
的序列将被展开。括号之间的文本是函数名,可能后跟由‘:’分隔的参数。
如果参数包含特殊字符或分隔符(‘:’或‘}’),它们应该被转义。
注意,它们可能还必须在滤镜参数字符串的值中转义, 以及滤镜图描述中的滤镜参数,一次可能有多达四层转义;使用text选项中的文本文件避免了这些问题。textfile以下函数可用:
返回帧编号。
n, frame_num
返回当前帧的呈现时间戳。
pts
最多可以接受两个参数。
第一个参数是时间戳的格式;默认值为
表示以秒为单位的十进制数字,精确到微秒;
flt
表示以格式化的hms
[-]HH:MM:SS.mmm[-]HH:MM:SS.mmm时间戳,精确到毫秒。gmtime
表示帧的时间戳,以UTC时间格式显示;localtime
表示帧的时间戳,以本地时区时间格式显示。如果格式设置为hms24hh
,则时间以24小时格式(00-23)显示。第二个参数是添加到时间戳的偏移量。
如果格式设置为
localtime
或gmtime
,可以提供第三个参数:strftime
一个C函数格式字符串。默认值为YYYY-MM-DD HH:MM:SS格式。expr, e
评估表达式的值并输出为双精度数。
它必须接受一个指定要评估的表达式的参数,支持qrencode表达式.
expr_formatted, ef
评估表达式的值并作为格式化字符串输出。
第一个参数是要评估的表达式,与expr函数相同。 第二个参数指定输出格式。允许的值是‘x’, ‘X’, ‘d’和‘u’。与
printf
函数中的完全相同。 第三个参数是可选的,用于设置输出的占位数量。可用来从左侧填充0。gmtime
滤镜运行时间,表示为UTC。 它可以接受一个参数:一个
strftime
C函数格式字符串。 格式字符串扩展支持变量%[1-6]N,可指定数字位数打印秒的小数。localtime
滤镜运行时间,表示为本地时区。 它可以接受一个参数:一个
strftime
C函数格式字符串。 格式字符串扩展支持变量%[1-6]N,可指定数字位数打印秒的小数。metadata
帧元数据。接受一个或两个参数。
第一个参数是必需的,指定元数据键。
第二个参数是可选的,指定元数据键未找到或为空时的默认值。
可用的元数据可以通过检查由运行生成的每个帧部分中以TAG开头的条目识别。
ffprobe -show_frames
.由引导至qrencode滤镜的滤镜生成的字符串元数据也可用。
rand(min, max)
返回一个介于min和max
的随机数。
- 生成一个编码指定文本并覆盖到输入视频左上角的二维码,使用默认尺寸:
qrencode=text=www.ffmpeg.org
- 如上所述,但选择蓝色与粉色的颜色:
qrencode=text=www.ffmpeg.org:bc=pink@0.5:fc=blue
- 将二维码放置在输入视频的右下角:
qrencode=text=www.ffmpeg.org:x=W-Q:y=H-Q
- 生成一个宽度为200像素并带填充的二维码,使填充后的宽度为二维码宽度的4/3:
qrencode=text=www.ffmpeg.org:q=200:Q=4/3*q
- 生成一个填充后宽度为200像素的二维码,并带填充,使二维码宽度为填充宽度的3/4:
qrencode=text=www.ffmpeg.org:Q=200:q=3/4*Q
- 使二维码宽度为输入视频宽度的一部分:
qrencode=text=www.ffmpeg.org:q=W/5
- 生成一个编码帧编号的二维码:
qrencode=text=%{n}
- 生成一个编码GMT时间戳的二维码:
qrencode=text=%{gmtime}
- 生成一个编码为浮点数的时间戳的二维码:
qrencode=text=%{pts}
11.204 quirc
使用libquirc库识别并解码二维码(参见https://github.com/dlbeer/quirc/),并以元数据形式打印识别到的二维码位置和有效载荷。
要启用此滤镜的编译,您需要使用以下配置FFmpeg--enable-libquirc
.
对于输入视频中找到的每个二维码,添加一些具有前缀的元数据条目lavfi.quirc.N,其中N是与二维码关联的索引,从0开始。
以下是每个元数据值的说明:
- lavfi.quirc.count
找到的二维码数量。如果未找到二维码,则不设置。
- lavfi.quirc.N.corner.M.x
- lavfi.quirc.N.coreer.M.y
二维码所在方形的四个角的x/y位置,其中M是角的索引,从0开始
- lavfi.quirc.N.payload
二维码的有效载荷
11.205 random
将内存缓存中的视频帧以随机顺序输出。 不会丢弃任何帧。 灵感来源于frei0r紧张滤镜。
- frames
设置内部缓存的帧数量,范围从
2
到512
。默认值为30
.- seed
设置随机数生成器的种子,必须为一个整数,范围介于
0
和UINT32_MAX
之间。如果未指定,或明确设置为小于0
,滤镜将基于尽力策略尝试使用一个好的随机种子。
11.206 readeia608
从视频帧的顶行读取闭合字幕(EIA-608)信息。
此滤镜为lavfi.readeia608.X.cc
和lavfi.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
在进一步处理之前对行进行低通滤波。默认是启用的。
11.206.1 命令
此过滤器支持全部上述选项作为命令.
11.206.2 示例
- 生成一个包含展示时间和识别出的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
11.207 读取VITC
从视频帧顶部行读取垂直间隔时间码 (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
.
11.207.1 示例
- 检测并在视频帧上绘制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'
11.208 重映射
使用第2个输入视频流:Xmap 和第3个输入视频流:Ymap进行像素重映射。
目标像素位置(X, Y)将从源位置 (x, y) 提取,其中 x = Xmap(X, Y) 且 y = Ymap(X, Y)。如果映射值超出范围,则目标像素将使用零值。
Xmap和Ymap输入视频流必须具有相同的尺寸。输出视频流将具有Xmap/Ymap视频流的尺寸。 Xmap和Ymap输入视频流是16位深、单通道的。
- format
指定此过滤器输出的像素格式。可以是
color
或gray
。 默认值是color
.- fill
指定未映射像素的颜色。有关此选项的语法,请查阅(ffmpeg-utils)"Color" 部分在ffmpeg-utils手册中。默认颜色是
black
.
11.209 去除颗粒
去除颗粒过滤器是一个用于逐行视频的空间去噪器。
- 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
Bob模式,为位于邻域像素最近的一行插值出顶部场。
- 14
Bob模式,为位于邻域像素最近的一行插值出底部场。
- 15
Bob模式,为顶部场插值。与模式13相同,但使用更复杂的插值公式。
- 16
Bob模式,为底部场插值。与模式14相同,但使用更复杂的插值公式。
- 17
通过分别取每对相邻像素的最大值和最小值并剪裁像素。
- 18
使用对当前像素距离最小的对邻域像素进行对行敏感剪裁。
- 19
将像素替换为其8邻域的平均值。
- 20
计算9个像素的平均值 ([1 1 1] 水平和垂直模糊)。
- 21
使用对邻域像素的平均值进行剪裁。
- 22
与模式21相同但更简单更快。
- 23
用于去除小边缘和光晕,但被认为没有用。
- 24
与模式23相似。
11.210 去除标志
抑制电视台台标,使用图像文件确定哪些像素构成台标。它通过用邻近像素填充构成台标的像素来工作。
过滤器接受以下选项:
- filename, f
设置过滤器位图文件,可以是任何由libavformat支持的图像格式。图像文件的宽度和高度必须与正在处理的视频流相匹配。
提供的位图图像中值为零的像素不被视为台标的一部分,非零像素被视为台标的一部分。如果您使用白色(255)表示台标并使用黑色(0)表示其他部分,则会很安全。制作过滤器位图时,建议截取带有台标的黑色帧的屏幕截图,然后使用阈值过滤器,接着使用一次或两次的腐蚀过滤器。
如果需要,可以手动修复小斑点。请记住,如果台标像素没有完全覆盖,过滤器质量会大幅下降。标记太多像素为台标影响较小,但会增加覆盖图片所需的模糊量,并销毁更多不必要的信息,同时大标志上的额外像素会使处理速度变慢。
11.211 重复字段
此过滤器使用Video ES headers中的重复字段标志并基于其值硬性重复字段。
11.212 逆转
逆转视频剪辑。
警告:此过滤器需要内存缓冲整个剪辑,因此建议进行修剪。
11.212.1 示例
- 截取剪辑的前5秒,并把它逆转。
trim=end=5,reverse
11.213 RGB偏移
水平和/或垂直偏移红/绿/蓝/透明像素。
过滤器接受以下选项:
- rh
设置红色水平偏移量。
- rv
设置红色垂直偏移量。
- gh
设置绿色水平偏移量。
- gv
设置绿色垂直偏移量。
- bh
设置蓝色水平偏移量。
- bv
设置蓝色垂直偏移量。
- ah
设置透明色水平偏移量。
- av
设置透明色垂直偏移量。
- edge
设置边缘模式,可以是涂抹,默认值,或扭曲.
11.213.1 命令
此过滤器支持全部上述选项作为命令.
11.214 罗伯茨
对输入视频流应用罗伯茨交叉运算符。
过滤器接受以下选项:
- planes
设置要处理的平面,未处理的平面将被复制。 默认值为 0xf,所有平面都将被处理。
- scale
设置将与过滤结果相乘的值。
- delta
设置将添加到过滤结果的值。
11.214.1 命令
此过滤器支持全部上述选项作为命令.
11.215 旋转
以弧度为单位按任意角度旋转视频。
过滤器接受以下选项:
以下是可选参数的描述。
- angle, a
为顺时针旋转输入视频角度设置表达式,单位是弧度。负值将导致逆时针旋转。默认值为 "0"。
该表达式针对每帧进行评估。
- out_w, ow
设置输出宽度表达式,默认值为 "iw"。 此表达式在配置时仅评估一次。
- out_h, oh
设置输出高度表达式,默认值为 "ih"。 此表达式在配置时仅评估一次。
- bilinear
如果设置为1,则启用双线性插值,设置为0则禁用。默认值为1。
- fillcolor, c
设置用于填充旋转图像未覆盖的输出区域的颜色。有关此选项的一般语法,请查阅(ffmpeg-utils)"Color" 部分在ffmpeg-utils手册中。 如果选择特殊值 "none" 则不会打印任何背景(例如背景从不显示时很有用)。
默认值为 "black"。
角度和输出大小的表达式可以包含以下常量和函数:
- 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)
完全包含输入视频旋转后的所需最小宽度/高度由一个弧度表示。
这些仅在计算out_w和out_h表达式时可用。
11.215.1 示例
- 顺时针旋转输入 PI/6 弧度:
rotate=PI/6
- 逆时针旋转输入 PI/6 弧度:
rotate=-PI/6
- 顺时针旋转输入45度:
rotate=45*PI/180
- 应用周期为 T 的恒定旋转,从 PI/3 角度开始:
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
11.215.2 命令
过滤器支持以下命令:
- a, angle
设置角度表达式。 命令接受与对应选项相同的语法。
如果指定的表达式无效,则保持其当前值。
11.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 的值。
每个色度选项值,如果没有明确指定,则设置为对应的亮度选项值。
11.217 缩放
使用 libswscale 库缩放(调整大小)输入视频。
scale 滤镜通过改变输出样本宽高比强制输出显示宽高比与输入相同。
如果输入图像格式与下一个滤镜请求的格式不同,scale 滤镜将把输入转换为请求的格式。
11.217.1 选项
滤镜接受以下选项,包括 libswscale 缩放器支持的任何选项,以及framesync选项。
参见ffmpeg-scaler 手册以获取缩放器选项的完整列表。
- width, w
- height, h
设置输出视频尺寸表达式。默认值为输入尺寸。
如果width或w值为 0,则输出使用输入宽度。如果height或h值为 0,则输出使用输入高度。
如果只有一个值为 -n 且 n >= 1,scale 滤镜将使用维持输入图像宽高比的值,从其他指定维度计算而来。之后,它会确保计算出来的维度可被 n 整除,并在必要时调整该值。
如果两个值均为 -n 且 n >= 1,则行为与上述两个值设为 0 的情况相同。
下面列出了可用于尺寸表达式的常量。
- eval
指定何时评估width和height表达式。接受以下值:
- ‘init’
仅在滤镜初始化期间或处理命令时评估表达式一次。
- ‘frame’
为每个输入帧评估表达式。
默认值为 ‘init’.
- interl
设置隔行模式。接受以下值:
- ‘1’
强制隔行缩放。
- ‘0’
不适用隔行缩放。
- ‘-1’
根据源帧是否标记为隔行,选择是否进行隔行缩放。
默认值为 ‘0’.
- flags
设置 libswscale 缩放标志。参见ffmpeg-scaler 手册获取完整的值列表。如果没有明确指定,滤镜将应用默认标志。
- param0, param1
为需要这些参数的缩放算法设置 libswscale 输入参数。参见ffmpeg-scaler 手册获取完整的文档。如果没有明确指定,滤镜将应用空参数。
- size, s
设置视频尺寸。关于此选项的语法,请查看ffmpeg-utils 手册中的“视频尺寸”部分.
- in_color_matrix
- out_color_matrix
设置输入/输出 YCbCr 色彩空间类型。
这允许覆盖自动检测值以及强制使用一个特定的值用于输出和编码器。
如果未指定,色彩空间类型取决于像素格式。
可能的值:
- ‘auto’
自动选择。
- ‘bt709’
符合国际电信联盟(ITU)推荐 BT.709 的格式。
- ‘fcc’
设置符合美国联邦通信委员会(FCC)法规 Title 47 (2003) 73.682 (a) 的色彩空间。
- ‘bt601’
- ‘bt470’
- ‘smpte170m’
设置符合以下标准的色彩空间:
- ITU Radiocommunication Sector (ITU-R) 推荐 BT.601
- ITU-R 推荐 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。
请注意,这与为w或h指定 -1 是不同的,您仍然需要为此选项指定输出分辨率才能工作。
- force_divisible_by
确保输出尺寸宽度和高度均可被给定整数整除,需与force_original_aspect_ratio一起使用。这类似于使用
-n
在w和h选项中。此选项遵循为force_original_aspect_ratio设置的值,相应地增加或减少分辨率。视频的宽高比可能会稍有修改。
如果需要视频适合或超过使用force_original_aspect_ratio定义的分辨率,并且编码器对宽度或高度可整除性有限制,此选项可以很方便。
选项的值w和h为包含以下常量的表达式:
- in_w
- in_h
输入宽度和高度
- iw
- ih
与in_w及in_h.
- out_w
- out_h
输出(缩放后)宽度和高度
- ow
- oh
与out_w及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
.- t
输入帧的展示时间戳,以秒为单位表示。仅在
eval=frame
.- pos
帧在输入流中的位置(字节偏移),或 NaN(如果此信息不可用和/或无意义,例如对于合成视频)。仅在
eval=frame
中可用。已弃用,请勿使用。- ref_w, rw
- ref_h, rh
- ref_a
- ref_dar, rdar
- ref_n
- ref_t
- ref_pos
与上述变量等价,但用于第二个参考输入。如果存在任何这些变量,则此滤镜接受两个输入。
11.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'
- 通过组合 scale 和 setsar 使像素正方形:
scale='trunc(ih*dar):ih',setsar=1/1
- 通过组合 scale 和 setsar,使像素正方形,确保分辨率为偶数(某些编解码器要求):
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]
11.217.3 命令
此滤镜支持以下命令:
- width, w
- height, h
设置输出视频尺寸表达式。命令接受与对应选项相同的语法。
如果指定的表达式无效,则保持当前值。
11.218 scale_cuda
使用加速的 CUDA 内核缩放(调整大小)和转换(像素格式)输入视频。设置输出宽度和高度的工作方式与scale滤镜相同。
滤镜接受以下选项:
- w
- h
设置输出视频尺寸表达式。默认值为输入尺寸。
允许与scale滤镜相同的表达式。
- interp_algo
设置用于缩放的算法:
- nearest
最近邻
如果输入参数与期望输出匹配,则默认使用。
- bilinear
双线性
- bicubic
双三次
这是默认值。
- lanczos
Lanczos
- format
控制输出像素格式。默认情况下或未指定时,使用输入像素格式。
滤镜不支持在 YUV 和 RGB 像素格式之间进行转换。
- passthrough
如果设置为 0,则即使不需要转换,每帧都将被处理。此模式可用于作为下游帧消费者缓冲区的滤镜,避免耗尽有限的解码器帧池。
如果设置为 1,则帧将在与期望输出参数匹配时按原样传递。这是默认行为。
- param
算法特定参数。
影响双三次算法的曲线。
- force_original_aspect_ratio
- force_divisible_by
与相同的scale滤镜选项效果相同。
11.218.1 示例
- 将输入缩放到 720p,保持宽高比并确保输出是 yuv420p。
scale_cuda=-2:720:format=yuv420p
- 使用最近邻算法向上缩放到 4K。
scale_cuda=4096:2160:interp_algo=nearest
- 不进行任何转换或缩放,而是将所有输入帧复制到新分配的帧中。这对于处理滤镜和编码链可能耗尽解码器帧池的情况非常有用。
scale_cuda=passthrough=0
11.219 scale_npp
使用 NVIDIA 性能原语(libnpp)对 CUDA 视频帧进行缩放和/或像素格式转换。设置输出宽度和高度的方式与scale滤镜相同。
接受以下额外选项:
- format
输出 CUDA 帧的像素格式。如果设置为字符串“same”(默认值),则保持输入格式。请注意,对于硬件帧,还不支持自动格式协商和转换。
- interp_algo
用于调整大小的插值算法。以下之一:
- nn
最近邻。
- linear
- cubic
- cubic2p_bspline
双参数立方(B=1, C=0)
- cubic2p_catmullrom
双参数立方(B=0, C=1/2)
- cubic2p_b05c03
双参数立方(B=1/2, C=3/10)
- super
超级采样
- lanczos
- force_original_aspect_ratio
启用必要时调整输出视频宽度或高度以保持原始宽高比。可能的值:
- ‘disable’
按指定方式缩放视频并禁用此功能。
- ‘decrease’
如果需要,输出视频的尺寸将自动减少。
- ‘increase’
如果需要,输出视频的尺寸将自动增加。
此选项的一种有用实例是,当您知道特定设备的最大允许分辨率时,可以使用此选项将输出视频限制为该分辨率,同时保留宽高比。例如,设备 A 支持 1280x720 播放,而您的视频是 1920x800。使用此选项(设置为减少)并在命令行中指定 1280x720,使输出为 1280x533。
请注意,这与为 -1 指定的情况不同。w或者h,您仍然需要指定输出分辨率以使此选项生效。
- force_divisible_by
确保输出宽度和高度同时被给定的整数整除,当与force_original_aspect_ratio一起使用时效果类似。
-n
在w和h选项中。此选项遵循设置的值force_original_aspect_ratio,相应提高或降低分辨率。视频的宽高比可能会有轻微修改。
如果您需要使用force_original_aspect_ratio将视频适配到限定分辨率内或超出限定分辨率但还需要编码器对宽度或高度的整除要求,这个选项会比较方便。
- eval
指定何时评估宽度和高度表达式。它接受以下值:
- ‘init’
仅在过滤器初始化时或处理命令时评估表达式。
- ‘frame’
对每个输入帧评估表达式。
参数w和h的值是包含以下常量的表达式:
- in_w
- in_h
输入宽度和高度
- iw
- ih
与in_w和in_h.
- out_w
- out_h
输出(缩放后)宽度和高度
- ow
- oh
与out_w和out_h
- a
与iw / ih
- sar
输入样本宽高比
- dar
输入显示宽高比。由以下计算所得
(iw / ih) * sar
.- n
输入帧的序号,从0开始计数,仅在启用时可用。
eval=frame
.- t
输入帧的显示时间戳,以秒为单位,仅在启用时可用。
eval=frame
.- pos
帧在输入流中的位置(字节偏移),当此信息不可用或无意义时为NaN(例如在合成视频的情况下)。仅在启用时可用。
eval=frame
。 已弃用,请勿使用。
11.220 scale2ref_npp
使用NVIDIA性能原语(libnpp)根据参考视频调整(缩放)输入视频。
参考scale_npp滤镜的可用选项,scale2ref_npp支持相同选项,但使用参考视频而不是主输入作为基础。同时它也支持以下附加常量:w和h选项:
- 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
.
11.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]
11.221 scale_vt
使用VTPixelTransferSession进行缩放并转换颜色参数。
滤镜支持以下选项:
- w
- h
设置输出视频的尺寸表达式。默认值为输入尺寸。
- color_matrix
设置输出颜色空间矩阵。
- color_primaries
设置输出颜色主色彩。
- color_transfer
设置输出转换特性。
11.222 scharr
对输入视频流应用Scharr运算符。
滤镜支持以下选项:
- planes
设置将处理的平面。未处理的平面将被复制。默认值为0xf,即所有平面都将被处理。
- scale
设置与过滤结果相乘的值。
- delta
设置添加到过滤结果的值。
11.222.1 命令
此滤镜支持以上所有选项以命令.
11.223 scroll
通过恒定速度水平或垂直滚动输入视频。
滤镜支持以下选项:
- horizontal, h
设置水平滚动速度。默认值为0,范围从-1到1。负值改变滚动方向。
- vertical, v
设置垂直滚动速度。默认值为0,范围从-1到1。负值改变滚动方向。
- hpos
设置初始水平滚动位置。默认值为0,范围从0到1。
- vpos
设置初始垂直滚动位置。默认值为0,范围从0到1。
11.223.1 命令
此滤镜支持以下命令:
- horizontal, h
设置水平滚动速度。
- vertical, v
设置垂直滚动速度。
11.224 scdet
检测视频场景切换。
此滤镜为带有场景得分的帧设置元数据,并将帧转发到下一个滤镜,后续滤镜可以使用这些元数据检测场景切换或进行其他处理。
此外,当检测到场景切换时,此滤镜会记录信息并设置帧元数据。threshold.
lavfi.scd.mafd
每帧的元数据键被设置为场景差分度。
lavfi.scd.score
每帧的元数据键被设置为场景切换得分,用于检测场景切换。
lavfi.scd.time
每帧的元数据键被设置为当前过滤帧的时间,这些时间用于使用threshold.
检测场景切换。
- threshold, t
设置场景切换的检测阈值,表示最大变化的百分比。适当的值范围是
[8.0, 14.0]
范围。范围为threshold默认值为[0., 100.]
.Default value is
10.
.- sc_pass, s
设置标志以将场景切换帧传递给下一个滤镜。默认值为
0
如果您只需场景切换帧的快照,可以启用此选项。
11.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],分别调整其范围内像素的青色、洋红色、黄色和黑色的量。
11.225.1 示例
- 在绿色区域中将青色增加50%,黄色减少33%,并在蓝色区域中将洋红色增加27%:
selectivecolor=greens=.5 0 -.33 0:blues=0 .27
- 使用一个Photoshop选择性颜色预设:
selectivecolor=psfile=MySelectiveColorPresets/Misty.asv
11.226 separatefields
将separatefields
滤镜接受基于帧的视频输入并将每一帧分割为其组成字段,生成一个新的半高度剪辑,其中帧率和帧数增加一倍。
此滤镜使用帧的字段优先信息决定输出时每对字段中哪一个放在前面。如果输出有误,可在使用setfield滤镜。separatefields
filter.
11.227 setdar, setsar
使用setdar
滤镜设置滤镜输出视频的显示宽高比。
这是通过更改指定的样本(像素)宽高比来完成的,公式如下:
显示宽高比 = 水平分辨率 / 垂直分辨率 * 样本宽高比
请注意,setdar
滤镜不会修改视频帧的像素尺寸。此外,此滤镜设置的显示宽高比可能会被滤镜链中的后续滤镜更改,例如,缩放时或者应用另一个"setdar"或"setsar"滤镜时。
使用setsar
滤镜设置滤镜输出视频的样本(像素)宽高比。
请注意,应用此滤镜后,输出显示宽高比将根据上述公式更改。
请注意,使用setsar
设置的样本宽高比可能会被滤镜链中的后续滤镜更改,例如,应用另一个"setsar"或"setdar"滤镜时。
它接受以下参数:
- r, ratio, dar (
setdar
only), sar (setsar
only) 设置滤镜使用的宽高比。
参数可以是一个浮点数字符串或表达式。如果未指定参数,则假定值为"0",即使用与输入相同的值。
- max
设置当表达宽高比为一个有理数时用于表达分子和分母的最大整数值。 默认值为
100
.
参数sar是一个包含以下常量的表达式:
- w, h
输入宽度和高度。
- a
与宽度 / 高度.
- sar
输入样本宽高比。
- dar
输入显示宽高比。与以下相同 (宽度 / 高度) * 样本宽高比.
- hsub, vsub
水平和垂直色度子采样值。例如,对于像素格式"yuv422p"hsub为2,vsub为1。
11.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
11.228 setfield
强制为输出视频帧设置字段属性。
使用setfield
滤镜为输出帧标记隔行扫描类型字段。它不会改变输入帧,输入帧只能设置相应属性,这会影响帧如何被后续滤镜处理(例如fieldorder
或者yadif
).
滤镜接受以下选项:
- mode
可用值为:
- ‘auto’
保持字段属性不变。
- ‘bff’
标记帧为底字段优先。
- ‘tff’
标记帧为顶字段优先。
- ‘prog’
标记帧为逐行扫描。
11.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’
保持颜色传递属性不变(默认)。
- ‘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’
11.230 使用NVIDIA Performance Primitives进行图像锐化
使用NVIDIA Performance Primitives(libnpp)执行带边界控制的图像锐化。
以下附加选项可以使用:
- border_type
用于帧边界的采样类型。以下之一:
- replicate
复制像素值。
11.231 剪切变换
对输入视频应用剪切变换。
此滤镜支持以下选项:
- shx
X方向上的剪切因子。默认值为0。允许的范围是-2到2。
- shy
Y方向上的剪切因子。默认值为0。允许的范围是-2到2。
- fillcolor, c
设置用于填充未被变换视频覆盖的输出区域的颜色。有关此选项的一般语法,请查看(ffmpeg-utils)ffmpeg-utils手册中的"颜色"部分。 如果选择了特殊值"none",则不打印背景(例如,如果背景从未显示出来,这种设置很有用)。
默认值为"黑色"。
- interp
设置插值类型。可以是
bilinear
或nearest
。默认是bilinear
.
11.231.1 命令
此滤镜支持以上所有选项作为命令.
11.232 显示信息
显示每个输入视频帧的各种信息的行。输入视频不被修改。
此滤镜支持以下选项:
- checksum
计算每个平面的校验和。默认开启。
- udu_sei_as_ascii
尝试以ASCII字符显示未注册的SEI用户数据(如果可能),否则以十六进制格式显示。
显示的行包含一系列形式为键/值对的键值:键:值.
输出中展示以下值:
- n
输入帧的(连续)编号,从0开始。
- pts
输入帧的显示时间戳,以时间基单位表示。时间基单位取决于滤镜输入插口。
- pts_time
输入帧的显示时间戳,以秒为单位表示。
- fmt
像素格式名。
- sar
输入帧的采样纵横比,以以下形式表达分子/分母.
- s
输入帧的大小。有关此选项的语法,请查看(ffmpeg-utils)ffmpeg-utils手册中的"视频大小"部分.
- i
交织模式的类型("P"表示"渐进式","T"表示顶部字段优先,"B" 表示底部字段优先)。
- iskey
如果帧是关键帧则为1,否则为0。
- type
输入帧的图片类型("I"表示I帧,"P"表示 P帧,"B"表示B帧,或"?"表示未知类型)。 另请参阅文档
AVPictureType
枚举以及av_get_picture_type_char
定义的函数在libavutil/avutil.h.- checksum
所有输入帧平面的Adler-32校验和(以十六进制打印)。
- plane_checksum
每个输入帧平面的Adler-32校验和(以十六进制打印), 表达形式为"[c0 c1 c2 c3]".
- mean
每个输入帧平面的像素平均值,表达形式为 "[平均值0 平均值1 平均值2 平均值3]".
- stdev
每个输入帧平面的像素值标准偏差,表达形式 "[标准差0 标准差1 标准差2 标准差3]".
11.233 显示调色板
显示每帧256色调色板。此滤镜仅与pal8像素格式帧相关。
接收以下选项:
- s
设置用于表示单调色板颜色条目框的大小。默认是
30
(针对30x30
像素框大小)。
11.234 混合帧
重新排序和/或重复和/或丢弃视频帧。
接收以下参数:
- mapping
设置输入帧的目标索引。 这是一个空格或’|’分隔的索引列表,用于将输入帧映射到输出帧。索引数量也设置了每个索引可能的最大值。 ’-1’索引具有特别意义,即丢弃帧。
第一帧的索引为0。默认是保持输入不变。
11.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
11.235 混合像素
重新排序视频帧中的像素。
此滤镜接收以下选项:
- direction, d
设置像素混合方向。可以是正向或反向方向。 默认方向是正向。
- mode, m
设置像素混合模式。可以是水平、垂直或块混合模式。
- width, w
- height, h
设置像素混合块大小。如果是水平混合模式,仅使用尺寸的宽度部分; 如果是垂直混合模式,仅使用尺寸的高度部分。
- seed, s
设置混合像素时使用的随机种子。主要用于设置以便于反转过滤过程以恢复原始输入。 例如,要反转正向混合,需要使用相同的参数和完全相同的种子,并将方向设置为反向。
11.236 混合平面
重新排序和/或重复视频平面。
接收以下参数:
- map0
用作第一个输出平面的输入平面的索引。
- map1
用作第二个输出平面的输入平面的索引。
- map2
用作第三个输出平面的输入平面的索引。
- map3
用作第四个输出平面的输入平面的索引。
第一个平面的索引为0。默认是保持输入不变。
11.236.1 示例
- 交换输入的第二个和第三个平面:
ffmpeg -i INPUT -vf shuffleplanes=0:2:1:3 OUTPUT
11.237 信号统计
评估各种视觉指标,协助确定与模拟视频媒体数字化相关的问题。
默认情况下,滤镜将记录以下元数据值:
- 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选项设置突出显示颜色。默认颜色是黄色。
11.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"
- 播放视频,在帧上绘制signalstats元数据。
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}
11.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。
11.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 -
11.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。
11.239.1 示例
- 计算SI/TI指标并打印摘要:
ffmpeg -i input.mp4 -vf siti=print_summary=1 -f null -
11.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
设置透明度半径。选项值必须是在[0.1,5.0]范围内的浮点数,指定高斯滤波器的方差,用于模糊图像(越大越慢)。默认值为luma_radius.
- alpha_strength, as
设置透明度强度。选项值必须是在[-1.0,1.0]范围内的浮点数,用于配置模糊效果。值在[0.0,1.0]范围内会模糊图像,而值在[-1.0,0.0]范围内会锐化图像。默认值为luma_strength.
- alpha_threshold, at
设置用于确定是否应该模糊像素的透明度阈值系数。选项值必须是在[-30,30]范围内的整数。值为0会过滤整个图像,值在[0,30]范围内会过滤平坦区域,值在[-30,0]范围内会过滤边缘。默认值为luma_threshold.
如果未显式设置色度或透明度选项,则相应的亮度值被设置。
11.241 sobel
对输入视频流应用索贝尔运算。
筛选器接受以下选项:
- planes
设置要处理的图层,未处理的图层将被复制。默认值为0xf,所有图层将被处理。
- scale
设置乘以过滤结果的值。
- delta
设置加到过滤结果的值。
11.241.1 命令
此筛选器支持上述所有选项作为命令.
11.242 spp
应用简单后处理滤镜,以多个(或在quality级别6
- 所有)偏移处压缩和解压图像,并平均结果。
筛选器接受以下选项:
- quality
设置质量。此选项定义用于平均的级别数量。它接受一个在范围0-6内的整数。如果设置为
0
,筛选器将不起作用。值为6
表示更高的质量。每增加该值一次,速度约下降2倍。默认值为3
.- qp
强制使用固定量化参数。如果未设置,滤镜将使用视频流中的QP(如果有)。
- mode
设置阈值模式。可用模式有:
- ‘hard’
设置硬阈值(默认)。
- ‘soft’
设置软阈值(去环效果更好,但可能更模糊)。
- use_bframe_qp
如果设置为
1
,启用使用B帧中的QP。使用此选项可能导致闪烁,因为B帧通常具有更大的QP。默认值为0
(未启用)。
11.242.1 命令
此筛选器支持以下命令:
- quality, level
设置质量级别。值
max
可以用来设置最大级别,目前6
.
11.243 sr
通过应用一种基于卷积神经网络的超分辨率方法对输入进行缩放。支持的模型:
- 超分辨率卷积神经网络模型(SRCNN)。参见https://arxiv.org/abs/1501.00092.
- 高效子像素卷积神经网络模型(ESPCN)。参见https://arxiv.org/abs/1609.05158.
可在以下位置找到训练脚本以及模型文件(.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
,3
和4
。 默认值为2
。缩放因子对于SRCNN模型是必要的,因为它接受使用正确缩放因子进行双三次上采样的输入。
要获得完整功能(如异步执行),请使用dnn_processing滤镜。
11.244 ssim
获取两个输入视频之间的SSIM(结构相似度指标)。
此筛选器接受两个输入视频,第一个输入被认为是“主要”来源并未被更改直接输出。 第二个输入被用作用于计算SSIM的“参考”视频。
两个视频输入必须具有相同的分辨率和像素格式才能让此筛选器正确工作。此外,它假定两个输入具有相同数量的帧,并逐帧进行比较。
筛选器存储计算的每帧的SSIM值。
以下是接受的参数的描述。
- stats_file, f
如果指定,筛选器将使用命名文件保存每帧的SSIM值。当文件名等于“-”时,数据将发送到标准输出。
如果选择了stats_file选项,打印的文件包含一系列键值对,格式为key:value用于每一对比较的帧。
以下是每个显示参数的描述:
- n
输入帧的连续编号,从1开始。
- Y, U, V, R, G, B
对比帧的SSIM值,使用组件名称作为后缀。
- All
对比帧的整个帧的SSIM值。
- dB
与上面相同,但以分贝表示。
此筛选器也支持framesync选项。
11.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 -
11.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’
经过杜波依斯最小二乘投影优化的立体红/青彩色 (左眼的红色滤镜,右眼的青色滤镜)
- ‘agmg’
立体绿/洋红灰色 (左眼的绿色滤镜,右眼的洋红滤镜)
- ‘agmh’
立体绿/洋红半彩色 (左眼的绿色滤镜,右眼的洋红滤镜)
- ‘agmc’
立体绿/洋红彩色 (左眼的绿色滤镜,右眼的洋红滤镜)
- ‘agmd’
经过杜波依斯最小二乘投影优化的立体绿/洋红彩色 (左眼的绿色滤镜,右眼的洋红滤镜)
- ‘aybg’
立体黄/蓝灰色 (左眼的黄色滤镜,右眼的蓝色滤镜)
- ‘aybh’
立体黄/蓝半彩色 (左眼的黄色滤镜,右眼的蓝色滤镜)
- ‘aybc’
立体黄/蓝彩色 (左眼的黄色滤镜,右眼的蓝色滤镜)
- ‘aybd’
经过杜波依斯最小二乘投影优化的立体黄/蓝彩色 (左眼的黄色滤镜,右眼的蓝色滤镜)
- ‘ml’
单眼输出(仅左眼)
- ‘mr’
单眼输出(仅右眼)
- ‘chl’
棋盘式,左眼优先
- ‘chr’
棋盘式,右眼优先
- ‘icl’
交错列,左眼优先
- ‘icr’
交错列,右眼优先
- ‘hdmi’
HDMI框架打包
默认值为‘arcd’.
11.245.1 示例
- 将输入视频从平行左右模式转换为杜波依斯黄/蓝立体模式:
stereo3d=sbsl:aybd
- 将输入视频从上下模式(左眼在上,右眼在下)转换为交叉眼左右模式。
stereo3d=abl:sbsr
11.246 streamselect,astreamselect
选择视频或音频流。
过滤器接受以下选项:
- inputs
设置输入数量。默认是2。
- map
设置重新映射到输出的输入索引。
11.246.1 命令
该streamselect
和astreamselect
过滤器支持以下命令:
- map
设置重新映射到输出的输入索引。
11.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
11.247 字幕
使用libass库在输入视频顶部绘制字幕。
要启用此过滤器的编译,需要使用以下配置FFmpeg--enable-libass
。此过滤器还需要一个包含libavcodec和
libavformat的构建,以将提供的字幕文件转换为ASS(高级副标题)格式。
过滤器接受以下选项:
- 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显示为80%的透明蓝色DejaVu Serif
,请使用:
subtitles=sub.srt:force_style='Fontname=DejaVu Serif,PrimaryColour=&HCCFF0000'
11.248 super2xsai
使用Super2xSaI(缩放和插值)像素艺术缩放算法将输入放大2倍并平滑。
适合放大像素艺术图像而不降低清晰度。
11.249 swaprect
交换视频中的两个矩形对象。
此过滤器接受以下选项:
- w
设置对象宽度。
- h
设置对象高度。
- x1
设置第一个矩形的x坐标。
- y1
设置第一个矩形的y坐标。
- x2
设置第二个矩形的x坐标。
- y2
设置第二个矩形的y坐标。
所有表达式每帧评估一次。
所有选项是包含以下常量的表达式:
- w
- h
输入的宽度和高度。
- a
同输入宽度 / 输入高度
- sar
输入采样长宽比
- dar
输入显示长宽比,与以下相同宽度 / 高度) * 采样长宽比
- n
从0开始的输入帧编号。
- t
以秒为单位表示的时间戳。如果输入时间戳未知,则为NAN。
- pos
输入帧文件中的位置,如果未知,则为NAN;不推荐使用, 不要使用
11.249.1 命令
此过滤器支持上述所有选项作为命令。.
11.250 swapuv
交换U和V平面。
11.251 tblend
混合连续的视频帧。
请参阅blend
11.252 telecine
对视频进行隔行扫描处理。
此过滤器接受以下选项:
- first_field
- ‘top, t’
顶字段优先
- ‘bottom, b’
底字段优先 默认值为
top
.
- pattern
表示希望应用的pulldown模式的数字字符串。 默认值为
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
11.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
.
11.254 threshold
对视频流应用阈值效果。
此过滤器需要四个视频流以执行阈值操作。 第一个流是我们正在过滤的流。 第二个流保存阈值值,第三个流保存最小值, 最后第四个流保存最大值。
过滤器接受以下选项:
- planes
设置要处理的平面,未处理的平面将被复制。 默认值为0xf,所有平面都将被处理。
例如,如果第一个流像素的分量值小于第二阈值流中像素分量的阈值,则选择第三流的值, 否则选择第四流像素分量的值。
使用颜色源过滤器,可以执行各种类型的阈值操作:
11.254.1 命令
此过滤器支持所有选项作为命令。.
11.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
11.255 thumbnail
从一系列连续帧中选择最具代表性的一帧。
此过滤器接受以下选项:
- n
设置要分析的帧批量大小;在n帧中,过滤器 将选择其中一帧,然后处理下一批n帧,直到 结束。默认值为
100
.- log
设置显示选定帧统计信息的日志级别。 默认值为
info
.
由于过滤器会跟踪完整帧序列,因此更大的n值将带来更高的内存占用,因此不推荐使用高值。
11.255.1 示例
- 每50帧提取一张图片:
thumbnail=50
- 带有完整缩略图创建示例
ffmpeg
:ffmpeg -i in.avi -vf thumbnail,scale=300:200 -frames:v 1 out.png
11.256 tile
将多个连续帧拼接在一起。
过滤器untile可以进行逆操作。
过滤器接受以下选项:
- layout
以
COLUMNSxROWS
形式设置网格大小。范围最多为UINT_MAX单元。 默认值为6x5
.- nb_frames
设置在给定区域中要渲染的最大帧数。它必须小于或等于宽x高。默认值为
0
,表示将使用整个区域。- margin
以像素为单位设置外边界边距。范围是0到1024。默认值为
0
.- padding
设置内部边界厚度(即帧之间的像素数)。 有关高级填充选项(例如为边缘设置不同值),请参阅pad视频过滤器。 范围是0到1024。默认值为
0
.- color
指定未使用区域的颜色。有关此选项语法,请检查(ffmpeg-utils)"颜色"部分在ffmpeg-utils手册中。 默认值为颜色“黑色”。
- overlap
设置在拼接多个连续帧时要重叠的帧数。 值必须介于
0
和nb_frames - 1之间。默认值为0
.- init_padding
设置在显示第一个输出帧之前最初为空的帧数。 这控制了显示第一个输出帧的时间。 值必须介于
0
和nb_frames - 1之间。默认值为0
.
11.256.1 示例
- 为电影中的所有关键帧(-skip_frame nokey) 生成8x8的PNG图块:
ffmpeg -skip_frame nokey -i file.avi -vf 'scale=128:72,tile=8x8' -an -vsync 0 keyframes%03d.png
该-vsync 0是为了防止
ffmpeg
复制每个输出帧以适应原始检测的帧率。 - 显示
5
图片占据3x2
帧的区域, 帧之间有7
像素,初始边距为2
像素, 使用混合简单和命名选项:tile=3x2:nb_frames=5:padding=7:margin=2
11.257 tiltandshift
应用移轴效果。
当你逆转时间和空间时会发生什么?
通常,视频由多个帧组成,每帧代表不同的时间点,显示场景在捕获帧的空间内演变。 这个过滤器正好相反,灵感来源于移轴摄影。
过滤的帧包含组成序列的事件的整个时间线,这是通过将每帧中的 一个像素切片放入单个帧中获得的。但由于没有无限宽的帧,这只能沿着输入帧的宽度完成, 并通过在每个后续帧中依次向外移动列来重新构建视频。此外 ,为了将空间映射到时间,过滤器也倾斜了每个输入帧, 因此保留了运动。这是通过逐步从每个输入帧中选择不同的列实现的。
最终结果是一种反向视差效果,因此远处的物体移动速度比前面的物体快。 该视频效果的理想条件为:背景静止且运动较少,或有很多运动以及 非常宽的景深(例如,乘坐火车移动时的广泛全景)。
过滤器接受以下参数:
- tilt
倾斜视频并移动(默认值)。如果未设置,视频将滑动一个静态图像,该图像由每帧的第一列组成。
- start
在过滤开始时的操作(见下文)。
- end
在过滤结束时的操作(见下文)。
- hold
过滤开始前需通过的列数。
- pad
过滤结束前需插入的列数。
通常过滤器从第一帧开始移位和倾斜,并在接收到最后一帧时停止。然而,在过滤开始前可能会保留正常视频,使效果逐渐进入。同样,最后的视频帧可以在结束时重构。或者,可以选择从黑色开始和结束。
- ‘none’
过滤立即开始并在接收到最后一帧时结束。
- ‘frame’
在处理期间会保持前几帧或最后一帧完好无损。
- ‘black’
过滤开始或结束时填充黑色。
11.258 tinterlace
执行各种类型的时间场交错。
帧从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.
11.259 tmedian
从一系列输入视频帧中选择中值像素点。
过滤器接受以下选项:
- radius
设置中值过滤器的半径。默认值是 1。允许范围是 1 到 127。
- planes
设置过滤的平面。默认值是
15
,即处理所有平面。- percentile
设置中值百分位数。默认值是
0.5
。 默认值0.5
始终选择中值值,而0
选择最小值,而1
选择最大值。
11.259.1 命令
此过滤器支持所有上述选项作为命令,不包括选项radius
.
11.260 tmidequalizer
应用时间中间视频均衡效果。
中间视频均衡调整视频帧序列以具有相同的直方图,同时尽量保持它们的动态性。这在例如匹配视频帧序列中的曝光效果时非常有用。
此过滤器接受以下选项:
- radius
设置过滤半径。默认值是
5
。允许范围是 1 到 127。- sigma
设置过滤 sigma。默认值是
0.5
。控制过滤强度。 将此选项设置为 0 基本上没有任何作用。- planes
设置处理的平面。默认值是
15
,即所有可用的平面。
11.261 tmix
混合连续的视频帧。
接受选项的描述如下。
- frames
混合的连续帧数量。如果未指定,默认为 3。
- weights
指定每个输入视频帧的权重。 每个权重之间用空格分隔。如果权重的数目少于帧最后指定的权重将用于所有剩余未设置的权重。
- scale
指定比例,如果设置,将其与每个权重与像素值相乘的总和相乘以获得最终目标像素值。默认情况下scale被自动缩放到权重的总和。
- planes
设置过滤的平面。默认值是全部。允许范围是 0 到 15。
11.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
11.261.2 命令
此过滤器支持以下命令:
- weights
- scale
- planes
语法与同名选项相同。
11.262 tonemap
映射来自不同动态范围的颜色。
此过滤器需要以单精度浮点格式输入数据,因为它需要对超出范围的值进行操作(并可以输出此类值)。需要使用另一个过滤器,例如zscale,将生成的帧转换为可用格式。
实现的色调映射算法仅适用于线性光,因此输入数据应事先线性化(并可能正确标记)。
ffmpeg -i INPUT -vf zscale=transfer=linear,tonemap=clip,zscale=transfer=bt709,format=yuv420p OUTPUT
11.262.1 选项
过滤器接受以下选项。
- tonemap
设置要使用的色调映射算法。
可能的值有:
- none
不应用任何色调映射,仅减少过亮像素。
- clip
硬剪裁任何超出范围的值。用于范围内值的完美颜色准确性,同时扭曲超出范围的值。
- linear
将整个参考色域拉伸为显示色域的线性倍数。
- gamma
在色调曲线之间拟合一个对数转换。
- reinhard
保持整体图像亮度,通过简单曲线使用非线性对比度,这会导致细节平坦化并降低颜色准确性。
- hable
更好地保留暗部和亮部细节,但代价是所有内容稍微变暗。用于细节保留比色彩和亮度准确性更重要时。reinhard, at the cost of slightly darkening everything. Use it when detail preservation is more important than color and brightness accuracy.
- mobius
平滑映射超出范围的值,同时尽可能保留范围内材料的对比度和颜色。用于色彩准确性比细节保留更重要时。
默认值是 none。
- param
调整色调映射算法。
这会影响以下算法:
- none
忽略。
- linear
指定拉伸时使用的比例因子。 默认值是 1.0。
- gamma
指定函数的指数。 默认值是 1.8。
- clip
在剪裁之前指定要乘入信号的额外线性系数。 默认值是 1.0。
- reinhard
指定在显示峰值时的局部对比度系数。 默认值是 0.5,这意味着在色域内的值大约比剪裁时亮度减半。
- hable
忽略。
- mobius
指定线性到 mobius 转换的过渡点。低于此点的值保证以 1:1 映射。值越高,结果越准确,但代价是失去亮部细节。 默认值是 0.3,由于初始斜率陡峭,仍然相当准确地保留了范围内的颜色。
- desat
对超过此亮度水平的高亮部分应用去饱和。参数越高,保留的颜色信息越多。 此设置通过(平滑地)转换为白色来防止超高光部分显得不自然,这使得图像更加自然,代价是减少超出范围颜色的信息。
默认值是 2.0,相当保守,主要仅应用于天空或直接阳光照射的表面。设置为 0.0 则禁用此选项。
此选项仅在输入帧有支持的颜色标签时有效。
- peak
用此值覆盖信号/标称/参考峰值。当显示元数据中嵌入峰值信息不可靠或从较低范围映射到较高范围时很有用。
11.263 tpad
临时填充视频帧。
过滤器接受以下选项:
- start
指定在输入视频流之前的延迟帧数量。默认是 0。
- stop
指定在输入视频流之后的填充帧数量。 设置为 -1 可无限填充。默认是 0。
- start_mode
设置添加到流开始的帧类型。 可以是add或者clone。 使用add添加的是纯色帧。 使用clone添加的是第一帧的克隆。 默认值是add.
- stop_mode
设置添加到流结束的帧类型。 可以是add或者clone。 使用add添加的是纯色帧。 使用clone添加的是最后一帧的克隆。 默认值是add.
- start_duration, stop_duration
指定开始/结束延迟的持续时间。请参考(ffmpeg-utils)ffmpeg-utils(1) 手册中的时间持续时间部分获取接受的语法。 这些选项会覆盖start和stop。默认是 0。
- color
指定填充区域的颜色。有关此选项的语法,请参考(ffmpeg-utils)"颜色" 部分在 ffmpeg-utils 手册中.
默认值color是 "黑色"。
11.264 transpose
转置输入视频中的行与列并可选翻转。
接受以下参数:
- 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
11.265 逐步转置_npp
将视频输入中的行与列转置并可选地翻转它。有关更深入的示例,请参见转置视频滤镜,主要共享相同的选项。
它接受以下参数:
- dir
指定转置方向。
可以假设以下值:
- ‘cclock_flip’
逆时针旋转90度并垂直翻转。(默认)
- ‘clock’
顺时针旋转90度。
- ‘cclock’
逆时针旋转90度。
- ‘clock_flip’
顺时针旋转90度并垂直翻转。
- passthrough
如果输入几何结构与指定值匹配,则不应用转置。它接受以下值:
- ‘none’
始终应用转置。(默认)
- ‘portrait’
保持纵向几何结构(当高度 >= 宽度).
- ‘landscape’
保持横向几何结构(当宽度 >= 高度).
11.266 修剪
修剪输入,使输出仅包含输入的一段连续部分。
它接受以下参数:
- start
指定保留部分开始的时间,即时间戳为start的帧将成为输出中的第一帧。
- end
指定将被丢弃的第一帧的时间,即紧接时间戳为end的帧之前的帧将成为输出中的最后一帧。
- start_pts
这与start相同,不同的是该选项以时间基单位而不是秒设置开始时间戳。
- end_pts
这与end相同,不同的是该选项以时间基单位而不是秒设置结束时间戳。
- duration
输出的最大持续时间,单位为秒。
- start_frame
应传递到输出的第一帧编号。
- end_frame
应丢弃的第一帧编号。
start, end, 和duration表示为时间长度规格;请参阅(ffmpeg-utils) ffmpeg-utils(1) 手册中的“时间长度”部分了解可接受的语法。
请注意,前两组start和end选项以及duration选项查看帧时间戳,而_frame变体仅计算通过滤镜的帧数。此外,滤镜不会修改时间戳。如果希望输出时间戳从零开始,请在修剪滤镜后插入setpts滤镜。
如果设置了多个开始或结束选项,该滤镜会尝试贪婪地保留至少匹配一个指定条件的所有帧。要仅保留同时匹配所有条件的部分,请链接多个修剪滤镜。
默认设置是保留所有输入。因此可以仅设置例如结束值以保留指定时间之前的所有内容。
示例:
- 丢弃除输入的第二分钟之外的所有内容:
ffmpeg -i INPUT -vf trim=60:120
- 仅保留第一秒:
ffmpeg -i INPUT -vf trim=duration=1
11.267 去预乘
使用第二流的第一平面作为alpha,对输入视频流应用alpha去预乘效果。
两个流必须具有相同的尺寸和像素格式。
滤镜接受以下选项:
- planes
设置将处理哪些平面,未处理的平面将被复制。默认值为0xf,所有平面都将被处理。
如果格式有1或2个组件,那么亮度是第0位。如果格式有3或4个组件:对于RGB格式,第0位是绿色,第1位是蓝色,第2位是红色;对于YUV格式,第0位是亮度,第1位是色度U,第2位是色度V。如果存在,alpha通道始终是最后一位。
- inplace
处理时不需要第二个输入,而使用输入流的alpha平面。
11.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
设置透明度矩阵的水平尺寸。必须是3到23之间的奇整数。默认值为5。
- alpha_msize_y, ay
设置透明度矩阵的垂直尺寸。必须是3到23之间的奇整数。默认值为5。
- alpha_amount, aa
设置透明度效果强度。必须是浮点数,合理值介于-1.5和1.5之间。
负值会模糊输入视频,正值会锐化视频,值为零会禁用效果。
默认值为0.0。
所有参数都是可选的,默认值等于字符串‘5:5:1.0:5:5:0.0’。
11.268.1 示例
- 应用强效果的亮度锐化:
unsharp=luma_msize_x=7:luma_msize_y=7:luma_amount=2.5
- 对亮度和色度参数应用强的模糊效果:
unsharp=7:7:-2:7:7:-2
11.269 未拼接
将由拼接图像制成的视频分解为单个图像。
输出视频的帧率是输入视频的帧率乘以图块数量。
此滤镜的作用与tile.
相反。
- layout
设置网格大小(即行和列的数量)。要查看选项的语法,请参阅(ffmpeg-utils) ffmpeg-utils 手册中的“视频大小”部分.
11.269.1 示例
- 从一个包含垂直堆叠的25帧静止图像文件制作1秒视频,就像模拟电影卷轴:
ffmpeg -r 1 -i image.jpg -vf untile=1x25 movie.mkv
11.270 uspp
应用超慢/简单后处理滤镜,使用多个(或 - 在qualitylevel8
- 全部)位移值对图像进行压缩和解压,并对结果进行平均。
与spp的行为不同之处在于,uspp实际上使用libavcodec Snow 对每种情况进行编码和解码,而spp使用类似MJPEG的简化仅帧内的8x8 DCT。
此滤镜在ffmpeg的5.0到6.0版本之间不可用。
滤镜接受以下选项:
- quality
设置质量。此选项定义了平均的级别数量。它接受0-8范围内的整数。如果设置为
0
,则滤镜将没有效果。值为8
表示更高质量。该值每增加1,速度下降约2倍。默认值为3
.- qp
强制使用恒定量化参数。如果未设置,滤镜将使用视频流的QP(如果可用)。
- codec
使用指定的编解码器代替雪。
11.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’
等角立方体图。
- ‘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’
偏航
- ‘p, P’
俯仰
- ‘r, R’
滚转
默认值是‘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
重置输出视频旋转。布尔值,默认禁用。
11.271.1 示例
- 使用双三次插值将等角矩形视频转换为3x2布局的立方体映射,设置1%的填充:
ffmpeg -i input.mkv -vf v360=e:c3x2:cubic:out_pad=0.01 output.mkv
- 提取等角立方体映射的后视图:
ffmpeg -i input.mkv -vf v360=eac:flat:yaw=180 output.mkv
- 将转置且水平翻转的等角立方体映射侧边立体格式转换为上下排列等角矩形立体格式:
v360=eac:equirect:in_stereo=sbs:in_trans=1:ih_flip=1:out_stereo=tb
11.271.2 命令
此滤镜支持上述选项的子集作为命令.
11.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。
11.273 varblur
通过使用第二个视频流设置模糊半径应用可变模糊滤镜。 第二个流必须具有相同的尺寸。
此滤镜接受以下选项:
- min_r
设置允许的最小半径。允许范围是0到254。默认值是0。
- max_r
设置允许的最大半径。允许范围是1到255。默认值是8。
- planes
设置要处理的平面。默认情况下,使用所有平面。
此varblur
滤镜还支持帧同步选项。
11.273.1 命令
此滤镜支持上述所有选项作为命令.
11.274 vectorscope
在二维图上显示两个颜色分量值(称为矢量示波器)。
此滤镜接受以下选项:
- mode, m
设置矢量示波器模式。
它接受以下值:
- ‘gray’
- ‘tint’
灰度值显示在图中,更高的亮度表示较多像素在图中同一位置上具有相同的颜色值。这是默认模式。
- ‘color’
灰度值显示在图中。不在视频帧中出现的周围像素值以设置的两个颜色分量的渐变形式绘制, 此颜色由选项设置
x
和y
。第三个颜色分量是静态的。- ‘color2’
视频帧中出现的实际颜色分量值显示在图中。
- ‘color3’
与color2类似,但频率更高的相同值
x
和y
在图中增加另一个颜色分量的值,默认值为亮度x
和y
.- ‘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’
默认是auto。
- tint0, t0
- tint1, t1
为灰度/色调矢量示波器模式设置颜色色调。默认情况下,两个选项都为零。 这意味着没有色调,输出将保持灰色。
11.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%。
- 11.275.1 示例
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
分析具有中等抖动性的视频
11.276 vidstabtransformvidstabdetect以获取第1步。
读取每帧的变换信息文件并 应用/补偿它们。与vidstabdetect滤镜结合使用可以消除视频的抖动。 另见http://public.hronopik.de/vid.stab。还需使用带有锐化功能的unsharp滤镜,详见下文。
若要启用此滤镜的编译,您需要用以下内容配置FFmpeg--enable-libvidstab
.
11.276.1 选项
- 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
请注意,zoom设置的值会加到此处计算的值上。
- 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。
11.276.2 示例
- 使用
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
11.277 vflip
垂直翻转输入视频。
例如,使用ffmpeg
:
ffmpeg -i in.avi -vf "vflip" out.avi
11.278 vfrdet
检测可变帧率视频。
此滤镜尝试检测输入是可变帧率还是固定帧率。
最后会输出检测到的具有可变delta pts的帧数和具有固定delta pts的帧数。如果存在可变delta的帧,还会显示遇到的最小、最大和平均delta。
11.279 vibrance
增强或改变饱和度。
此滤镜接受以下选项:
- intensity
设置增强强度(正值)或改变强度(负值)。默认值为0。允许范围为-2到2。
- rbal
设置红色平衡。默认值为1。允许范围为-10到10。
- gbal
设置绿色平衡。默认值为1。允许范围为-10到10。
- bbal
设置蓝色平衡。默认值为1。允许范围为-10到10。
- rlum
设置红色亮度系数。
- glum
设置绿色亮度系数。
- blum
设置蓝色亮度系数。
- alternate
如果
intensity
为负值且此项设置为1,则颜色将发生变化,否则颜色将不太饱和,更偏向灰色。
11.279.1 命令
此滤镜支持以上所有选项作为命令.
11.280 vif
获取两个输入视频之间的平均VIF(视觉信息保真度)。
此滤镜需要两个输入视频。
两个输入视频必须具有相同的分辨率和像素格式,才能使此滤镜正常工作。同时,它假设两个输入有相同的帧数,一帧一帧进行比较。
通过日志系统打印获得的平均VIF得分。
此滤镜存储每帧计算的VIF得分。
此滤镜还支持framesync选项。
在下面的示例中,正在处理的输入文件main.mpg与参考文件进行比较ref.mpg.
ffmpeg -i main.mpg -i ref.mpg -lavfi vif -f null -
11.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
.
11.281.1 表达式
表达式alpha, x0和y0可以包含以下参数。
- w
- h
输入的宽度和高度
- n
从0开始的输入帧号
- pts
过滤后的视频帧的展示时间戳(PTS),以TB为单位,如果未定义则为 NAN
- r
输入视频的帧率,如果输入帧率未知则为 NAN
- t
过滤后的视频帧的展示时间戳(PTS),以秒为单位,如果未定义则为 NAN
- tb
输入视频的时间基准
11.281.2 示例
- 应用简单的强暗角效果:
vignette=PI/4
- 制作闪烁的暗角效果:
vignette='PI/4+random(1)*PI/50':eval=frame
11.282 vmafmotion
获取视频的平均VMAF运动得分。它是VMAF的组成指标之一。
通过日志系统输出获得的平均运动得分。
此滤镜接受以下选项:
- stats_file
如果指定,滤镜将使用所命名的文件保存每帧相对于前一帧的运动得分。当文件名为"-"时,数据会写到标准输出。
示例:
ffmpeg -i ref.mpg -vf vmafmotion -f null -
11.283 vstack
垂直堆叠输入视频。
所有流必须具有相同的像素格式和宽度。
注意:此滤镜比使用overlay和pad滤镜生成同样输出更快。
此滤镜接受以下选项:
- inputs
设置输入流数量。默认值为2。
- shortest
如果设置为1,当最短的输入结束时强制终止输出。默认值为0。
11.284 w3fdif
对输入视频进行去隔行处理(“w3fdif”代表“Weston 3场去隔行滤镜”)。
基于BBC R&D的Martin Weston描述的过程,并基于Jim Easterbrook编写的BBC R&D的去隔行算法实现,Weston 3场去隔行滤镜使用BBC R&D计算的滤镜系数。
此滤镜在帧中使用场优先信息以确定输出中每对场的排列顺序。如果判断错误,请使用setfield滤镜在w3fdif
滤镜之前。
有两组滤镜系数,分别称为"简单"和"复杂"。哪组滤镜系数被使用可以通过传递一个可选参数来设置:
- filter
设置交错滤镜系数。接受以下值之一:
- ‘simple’
简单滤镜系数集。
- ‘complex’
更复杂的滤镜系数集。
默认值为‘complex’.
- mode
要采用的交错模式。接受以下值之一:
- frame
每帧输出一个帧。
- field
每场输出一个帧。
默认值为
field
.- parity
假定输入交错视频的图片场奇偶性。接受以下值之一:
- tff
假定顶部场优先。
- bff
假定底部场优先。
- auto
启用场奇偶性的自动检测。
默认值为
auto
。 如果交错未知或者解码器未导出此信息,将假定顶部场优先。- deint
指定要去隔行的帧。接受以下值之一:
- ‘all’
去隔行所有帧,
- ‘interlaced’
仅对标记为交错的帧进行去隔行。
默认值为‘all’.
11.284.1 命令
此滤镜支持与选项相同的命令。
11.285 waveform
视频波形监视器。
波形监视器绘制颜色分量强度的图表。默认情况下仅显示亮度。波形的每一列对应源视频中的一列像素。
它接受以下选项:
- 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’.
11.286 编织、双编织
该weave
接收基于字段的视频输入,并将两帧连续字段合并为一个帧,生成一个新的双高度剪辑,其中帧速率和帧计数减半。
该doubleweave
的工作方式与weave
相同,但不会减半帧速率和帧计数。
它接受以下选项:
- first_field
设置第一个字段。可用值为:
- ‘top, t’
将帧设置为顶部字段优先。
- ‘bottom, b’
将帧设置为底部字段优先。
11.286.1 示例
11.287 xbr
应用xBR高质量放大滤波器,该滤波器专为像素艺术而设计。它遵循一组边缘检测规则,请参见https://forums.libretro.com/t/xbr-algorithm-tutorial/123.
它接受以下选项:
- n
设置缩放维度:
2
用于2xBR
,3
用于3xBR
和4
用于4xBR
。 默认值为3
.
11.288 xcorrelate
在第一个和第二个输入视频流之间应用标准化交叉相关性。
第二个输入视频流的尺寸必须小于第一个输入视频流。
该滤波器接受以下选项:
- planes
设置处理的平面。
- secondary
设置将从第二个输入视频流中处理的辅助视频帧, 可以是第一个或所有。默认值为所有.
该xcorrelate
滤波器还支持framesync选项。
11.289 xfade
从一个视频流交叉淡化到另一个输入视频流。 交叉淡化将在指定的持续时间内应用。
两个输入必须是固定帧速率,并且具有相同的分辨率、像素格式、 帧速率和时间基。
该滤波器接受以下选项:
- 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)处的值。
11.289.1 示例
- 从一个输入视频流到另一个输入视频流进行交叉淡化,带有渐隐过渡效果和2秒的过渡持续时间,从5秒的偏移开始:
ffmpeg -i first.mp4 -i second.mp4 -filter_complex xfade=transition=fade:duration=2:offset=5 output.mp4
11.290 xmedian
从多个输入视频中选取中值像素。
该滤波器接受以下选项:
- inputs
设置输入的数量。 默认值为3。允许的范围是3到255。 如果输入的数量是偶数,则结果将是两个中值之间的均值。
- planes
设置过滤的平面。默认值为
15
,即所有平面都被处理。- percentile
设置中值百分位数。默认值为
0.5
。 默认值为0.5
将总是选择中值,而0
将选择最小值,1
最大值。
11.290.1 命令
此滤波器支持所有上述选项作为命令,排除选项inputs
.
11.291 xpsnr
获得两个输入视频之间的平均值(跨所有输入帧)和最小值(跨所有颜色平面的平均值)扩展感知加权峰值信噪比(XPSNR)。
XPSNR是一种低复杂度的心理可视化失真测量算法,用于评估两个视频流或图像之间的差异。这对于客观量化视频和图像编解码器导致的失真尤其有用,是进行正式主观测试的替代方案。对数XPSNR输出值的范围与传统PSNR评估的范围类似,但更能反映人类对视觉编码质量的印象。关于XPSNR度量的详细信息,可以参阅以下免费提供的论文,这些论文本质上代表了PSNR度量的分块加权变体:
- C. R. Helmrich, M. Siekmann, S. Becker, S. Bosse, D. Marpe, and T. Wiegand, "XPSNR: A Low-Complexity Extension of the Perceptually Weighted Peak Signal-to-Noise Ratio for High-Resolution Video Quality Assessment," in Proc. IEEE 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, and T. Wiegand, "A Study of the Extended Perceptually Weighted Peak Signal-to-Noise Ratio (XPSNR) for Video Compression with Different Resolutions and Bit Depths," ITU Journal: ICT Discoveries, vol. 3, no. 1, pp. 65 - 72, May 2020.http://handle.itu.int/11.1002/pub/8153d78b-en
在使用例如此FFmpeg滤波器获得的XPSNR评估结果时,强烈建议以参考上述论文的形式进行文档记录。该滤波器需要两个输入视频。第一个输入通常被认为是未失真参照源,并原样传递到输出,而第二个输入是一个(失真)测试信号。除位深外,这两个视频输入必须具有相同的像素格式。此外,为获得最佳表现,两个比较输入视频应处于YCbCr颜色格式。
上述所述的整体XPSNR值通过日志系统打印输出。 对于多颜色平面的输入,我们建议报告最低的XPSNR平均值。
以下参数与PSNR滤波器的参数类似,可以接受:
- stats_file, f
如果指定,滤波器将使用指定的文件保存每个单独帧和颜色平面的XPSNR值。当文件名等于"-"时,该数据将发送到标准输出。
此滤波器还支持framesync选项。
11.291.1 示例
- 对两个1080p高清视频ref_source.yuv和test_video.yuv进行XPSNR分析,均为每秒24帧,颜色格式为4:2:0,位深为8,并输出日志文件名为"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超高清(UHD)视频ref_source.yuv和位深为8的test_video.yuv进行XPSNR分析,位深为10,均为每秒60帧且颜色格式为4:2:0,不输出日志文件:
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 -
11.292 xstack
将视频输入堆叠成自定义布局。
所有流必须具有相同的像素格式。
该滤波器接受以下选项:
- inputs
设置输入流的数量。默认值为2。
- layout
指定输入的布局。 此选项要求用户显式设置所需的布局配置。 这设置了每个视频输入在输出中的位置。每个输入通过’|’分隔。 第一个数字表示列,第二个数字表示行。 数字从0开始并通过’_’分隔。可选地可以使用wX和hX, 其中X是视频输入,用于获取宽度或高度。 分隔符’+’也可以用于多个值。在这种情况下, 值将被相加。
请注意,如果输入的尺寸不同,可能会出现空白,因为不是所有的 输出视频框架的空间都会被填充。同样,如果其位置放置不足以 容纳相邻视频的完整帧,也可能导致视频重叠。
对于2个输入,默认布局为
0_0|w0_0
(等同于grid=2x1
)。在其他情况下,用户必须设置布局或网格。 可以指定grid
或layout
一次。 指定两者会导致错误。- grid
指定输入的固定网格大小。 此选项用于创建输入流固定大小的网格。设置网格大小形式为
COLUMNSxROWS
。必须有ROWS * COLUMNS
输入流,它们将排布为具有ROWS
行和COLUMNS
列的网格。使用此选项时,同一行中的每个输入流必须具有相同的高度,所有的行则必须具有相同的宽度。如果设置
grid
,那么inputs
选项被忽略,并被隐式设置为ROWS * COLUMNS
.对于2个输入,默认网格为
2x1
(等同于layout=0_0|w0_0
)。在所有其他情况下,用户必须设置布局或网格。 可以指定grid
或layout
一次。 指定两者会导致错误。- shortest
如果设置为1,则在最短输入终止时强制输出终止。 默认值为0。
- fill
如果设置成有效的颜色,则所有未使用的像素将填充为该颜色。 默认填充为无,因此此功能禁用。
11.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
请注意,如果输入的尺寸不同,可能会出现空白或重叠现象。
11.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
.
11.294 yadif_cuda
使用视频去隔行处理yadif算法,但使用CUDA实现,以便可以作为GPU加速管道的一部分与nvdec和/或nvenc一起工作。
它接受以下参数:
- 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
.
11.295 yaepblur
应用边缘保留模糊滤镜("yaepblur"意为"另一个边缘保留模糊滤镜")。 算法描述见"J. S. Lee, 《数字图像增强和噪声过滤使用局部统计》,IEEE Trans. Pattern Anal. Mach. Intell. PAMI-2, 1980."
它接受以下参数:
- radius, r
设置窗口半径。默认值为3。
- planes, p
设置要过滤的平面。默认仅过滤第一平面。
- sigma, s
设置模糊强度。默认值为128。
11.295.1 命令
此滤镜支持与选项相同的命令。
11.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
当前输入帧从'z'表达式计算的最后缩放值。
- pzoom
上一个输入帧最后输出帧的最后缩放值。
- duration
当前输入帧的输出帧数量。从'd'表达式为每个输入帧计算。
- pduration
为上一个输入帧创建的输出帧数量。
- a
有理数:输入宽度 / 输入高度。
- sar
样本宽高比。
- dar
显示宽高比。
11.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)'
11.297 zscale
通过使用z.lib库缩放(调整大小)输入视频:https://github.com/sekrit-twc/zimg。要启用此滤镜的编译,需要使用以下命令配置FFmpeg--enable-libzimg
.
zscale滤镜强制输出显示宽高比与输入相同,方法是调整输出样本宽高比。
如果输入图像格式与下一个滤镜请求的格式不同,zscale滤镜会将输入转换为请求的格式。
11.297.1 选项
滤镜接受以下选项。
- width, w
- height, h
设置输出视频尺寸表达式。默认值为输入尺寸。
如果width或w值为0,则输出使用输入宽度。如果height或h值为0,则输出使用输入高度。
如果值之一且仅之一为-n且n >= 1,zscale滤镜会使用保持输入图像宽高比的值,从另一个指定维度计算。同时确保计算出的尺寸是n的倍数,并在必要时调整值。
如果两个值均为-n且n >= 1,则行为将与以前详细说明的两个值设置为0相同。
请参阅下面有关尺寸表达式中允许使用的常量的列表。
- size, s
设置视频大小。有关此选项的语法,请查看(ffmpeg-utils)“视频大小”部分在ffmpeg-utils手册中.
- dither, d
设置抖动类型。
可能的值是:
- 无
- 有序
- 随机
- 误差扩散
默认值为无。
- filter, f
设置缩放滤镜类型。
可能的值是:
- 点
- 双线性
- 双三次
- 样条16
- 样条36
- 兰索斯
默认值为双线性。
- 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" 和兰索斯的滤波器抽头数量。
- param_b
缩放滤镜的参数B。双三次的参数"c"。
的值和w选项是包含以下常量的表达式:h options are expressions containing the following constants:
- in_w
- in_h
输入的宽度和高度
- iw
- ih
与in_w和in_h.
- out_w
- out_h
输出(缩放后)的宽度和高度
- ow
- oh
与out_w和out_h
- a
与iw / ih
- sar
输入样本宽高比
- dar
输入显示宽高比。从
(iw / ih) * sar
.- hsub
- vsub
水平和垂直输入色度采样值。例如,对于像素格式"yuv422p"hsub为2,vsub为1。
- ohsub
- ovsub
水平和垂直输出色度采样值。例如,对于像素格式"yuv422p"hsub为2,vsub为1。
11.297.2 命令
此滤镜支持以下命令:
- width, w
- height, h
设置输出视频尺寸表达式。 该命令接受对应选项的相同语法。
如果指定的表达式无效,则保持其当前值。
12 OpenCL 视频滤镜
以下是当前可用OpenCL视频滤镜的描述。
要启用这些滤镜的编译,需用以下命令配置FFmpeg--enable-opencl
.
运行OpenCL滤镜需要您初始化硬件设备并将该设备传递到任何滤镜图中的所有滤镜。
- -init_hw_device opencl[=name][:device[,key=value...]]
初始化一个新的类型为opencl的硬件设备,名称为name,使用指定的设备参数。
- -filter_hw_device name
将硬件设备名称为name传递给任何滤镜图中的所有滤镜。
有关更详细的信息,请参见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滤镜可能是必要的,以将输出转换为受支持的格式。
12.1 avgblur_opencl
应用平均模糊滤镜。
滤镜接受以下选项:
- sizeX
设置水平半径大小。 范围为
[1, 1024]
,默认值为1
.- planes
设置要过滤的平面。默认值为
0xf
,即处理所有平面。- sizeY
设置垂直半径大小。范围为
[1, 1024]
,默认值为0
。如果为零,将使用sizeX
的值。
12.1.1 示例
- 应用平均模糊滤镜,水平和垂直大小为3,将输出中的每个像素设置为输入中以它为中心的7x7区域平均值。对于图像边缘的像素,区域不会超过图像边界,因此计算中不会使用超出范围的坐标。
-i INPUT -vf "hwupload, avgblur_opencl=3, hwdownload" OUTPUT
12.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_radius和alpha_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_power和alpha_power默认为对亮度设置值。luma_power.
值为0将禁用效果。
12.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
12.3 colorkey_opencl
RGB 色彩空间的色键功能。
此滤镜接受以下选项:
- color
将被替换为透明的颜色。
- similarity
与关键颜色的相似度百分比。
0.01 只匹配完全相同的关键颜色,而 1.0 匹配所有颜色。
- blend
混合百分比。
0.0 使像素完全透明或完全不透明。
更高的值会导致半透明像素,像素颜色与关键颜色越相似,透明度越高。
12.3.1 示例
- 将输入中每一个半绿色像素设置为透明,并稍加混合:
-i INPUT -vf "hwupload, colorkey_opencl=green:0.3:0.1, hwdownload" OUTPUT
12.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
.
12.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
12.5 erosion_opencl
对视频应用侵蚀效果。
此滤镜将像素替换为局部(3x3)最小值。
它接受以下选项:
- threshold0
- threshold1
- threshold2
- threshold3
限制每个平面的最大变化。范围是
[0, 65535]
,默认值是65535
。 如果0
,平面将保持不变。- coordinates
指定引用像素的标志。 范围是
[0, 255]
,默认值是255
,即使用所有八个像素。标志指向以
x
:1 2 3
4 x 5
6 7 8
12.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
12.6 deshake_opencl
基于特征点的视频稳定滤镜。
此滤镜接受以下选项:
- tripod
通过完全防止原始帧的相机移动来模拟三脚架。默认值是
0
.- debug
是否应在处理后的输出和控制台中显示附加的调试信息。
请注意,要查看控制台调试输出,还需要向 ffmpeg 传递
-v verbose
。在输出视频中查看点匹配仅支持 RGB 输入。
默认值是
0
.- adaptive_crop
是否需要在边框进行少量裁剪以减少镜像像素的数量。
默认值是
1
.- refine_features
是否应在子像素级别优化特征点。
关闭此选项可稍微提高性能,但会降低精度。
默认值是
1
.- smooth_strength
从
0.0
到1.0
.1.0
应用于相机路径的平滑强度。值越高,平滑效果越强。0.0
过滤器会根据每帧的需要自适应地选择平滑强度。默认值是
0.0
.- smooth_window_multiplier
控制平滑窗口的大小(用于确定运动信息的缓冲帧数量)。
平滑窗口的大小通过将视频帧率乘以此数字来确定。
可接受的值范围从
0.1
到10.0
.较大的值增加了用于确定如何平滑摄像机路径的运动数据量, 可能改善平滑效果,但也增加了延迟和内存使用。
默认值是
2.0
.
12.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
12.7 dilation_opencl
对视频应用膨胀效果。
此滤镜将像素替换为局部(3x3)最大值。
它接受以下选项:
- threshold0
- threshold1
- threshold2
- threshold3
限制每个平面的最大变化。范围是
[0, 65535]
,默认值是65535
。 如果0
,平面将保持不变。- coordinates
指定引用像素的标志。 范围是
[0, 255]
,默认值是255
,即使用所有八个像素。标志指向以
x
:1 2 3
4 x 5
6 7 8
12.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
12.8 nlmeans_opencl
通过 OpenCL 实现的非局部均值去噪滤镜,该滤镜接受与nlmeans.
相同的选项。
将一个视频叠加在另一个视频之上。
它需要两个输入并有一个输出。第一个输入是“主”视频,第二个输入叠加在其上。 该滤镜要求所有输入具有相同的内存布局,因此可能需要进行格式转换。
此滤镜接受以下选项:
- x
设置叠加视频在主视频上的 x 坐标。 默认值是
0
.- y
设置叠加视频在主视频上的 y 坐标。 默认值是
0
.
12.9.1 示例
- 将 LOGO 图像叠加在 INPUT 视频的左上角。两个输入的格式均为 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
12.10 pad_opencl
为输入图像添加边框,并将原始输入放置在提供的x, y坐标。
它接受以下选项:
- width, w
- height, h
指定一个表达式来设置添加了边框的输出图像的大小。如果宽或高的值为 0, 将使用输入的相应大小作为输出大小。
该宽表达式可以引用高表达式设置的值,反之亦然。
宽和高的默认值是 0。 is 0.
- x
- y
指定将输入图像放置在填充区域内的位置偏移量, 相对于输出图像的顶部/左边框。
该x表达式可以引用y表达式设置的值,反之亦然。
x和y的默认值是 0。 is 0.
如果x或y计算为负值,它们将被调整, 使输入图像在填充区域内居中。
- color
指定填充区域的颜色。有关此选项的语法,请参阅(ffmpeg-utils) 中的“颜色”部分.
- aspect
改为按比例填充,而不是按分辨率填充。
关于宽, 高, x和y选项的值可以包含以下常量的表达式:
- in_w
- in_h
输入视频的宽度和高度。
- iw
- ih
这与in_w和in_h.
- out_w
- out_h
输出宽度和高度(填充区域的大小),由宽和高表达式指定。
- ow
- oh
这与out_w和out_h.
- x
- y
偏移 x 和 y,由x和y表达式指定,或未指定时为 NAN。
- a
与iw / ih
- sar
输入样本纵横比
- dar
输入显示纵横比,与 (iw / ih) * sar
相同。
应用 Prewitt 算子 (https://en.wikipedia.org/wiki/Prewitt_operator) 到输入视频流。
该滤镜接受以下选项:
- planes
设置要过滤的平面。默认值是
0xf
,表示所有平面都会处理。- scale
设置将与过滤后结果相乘的值。 范围是
[0.0, 65535]
,默认值是1.0
.- delta
设置将添加到过滤后结果的值。 范围是
[-65535, 65535]
,默认值是0.0
.
12.11.1 示例
- 应用 Prewitt 算子,比例设置为 2,增量设置为 10。
-i INPUT -vf "hwupload, prewitt_opencl=scale=2:delta=10, hwdownload" OUTPUT
12.12 program_opencl
使用 OpenCL 程序过滤视频。
- source
OpenCL 程序源文件。
- kernel
程序中的内核名称。
- inputs
滤镜的输入数量。默认为 1。
- size, s
输出帧的大小。默认为与第一个输入相同。
该program_opencl
滤镜还支持framesync选项。
程序源文件必须包含一个具有指定名称的内核函数, 此函数将对输出的每个平面运行一次。每个平面的运行都会作为一个单独的 2D 全局 NDRange 被排队, 每个像素生成一个工作单元。 每个工作单元的全局 ID 偏移即为目标图像中像素的坐标。
内核函数需要包含以下参数:
- 目标图像,__write_only image2d_t.
此图像将成为输出;内核应写入所有内容。
- 帧索引,unsigned int.
这是一个从零开始并按每帧增加的计数器。
- 源图像,__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)); }
12.13 remap_opencl
使用第 2 个输入(Xmap)和第 3 个输入(Ymap)的视频流来重新映射像素。
目标像素位置 (X, Y) 的像素值将从源位置 (x, y) 取值, 其中 x = Xmap(X, Y),y = Ymap(X, Y)。 如果映射值超出范围,目标像素的值将被设置为零。
Xmap 和 Ymap 输入视频流必须具有相同的尺寸。 输出视频流将具有 Xmap/Ymap 视频流的尺寸。 Xmap 和 Ymap 输入视频流为 32 位浮点像素格式,单通道。
- interp
指定用于像素重新映射的插值类型。 允许的值是
near
和linear
。 默认值是linear
.- fill
指定未映射像素的颜色。有关此选项的语法,请参阅(ffmpeg-utils) 中的“颜色”部分。 默认颜色是
black
.
12.14 roberts_opencl
对输入视频流应用 Roberts 交叉算子 (https://en.wikipedia.org/wiki/Roberts_cross)。
该滤镜接受以下选项:
- planes
设置要过滤的平面。默认值是
0xf
,表示所有平面都会处理。- scale
设置将与过滤后结果相乘的值。 范围是
[0.0, 65535]
,默认值是1.0
.- delta
设置将添加到滤波结果中的值。 范围是
[-65535, 65535]
默认值是0.0
.
12.14.1 示例
- 应用scale设为2、delta设为10的Roberts交叉运算符
-i INPUT -vf "hwupload, roberts_opencl=scale=2:delta=10, hwdownload" OUTPUT
12.15 sobel_opencl
对输入视频流应用Sobel算子(https://en.wikipedia.org/wiki/Sobel_operator)。
滤波器接受以下选项:
- planes
设置需要滤波的平面。默认值是
0xf
,处理所有平面。- scale
设置将与滤波结果相乘的值。 范围是
[0.0, 65535]
默认值是1.0
.- delta
设置将添加到滤波结果中的值。 范围是
[-65535, 65535]
默认值是0.0
.
12.15.1 示例
- 应用scale设为2、delta设为10的Sobel算子
-i INPUT -vf "hwupload, sobel_opencl=scale=2:delta=10, hwdownload" OUTPUT
12.16 tonemap_opencl
执行HDR(PQ/HLG)到SDR的转换并进行色调映射。
它接受以下参数:
- tonemap
指定应使用的色调映射算子。同‘tonemap’选项中的tonemap一致tonemap.
- param
调节色调映射算法。同‘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
默认与输入相同。
12.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
12.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‘。
12.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
12.18 xfade_opencl
使用OpenCL通过自定义过渡效果交叉淡化两个视频。
它接受以下选项:
- transition
设置可能的过渡效果之一。
- custom
选择自定义过渡效果,实际过渡说明将从source和kernel选项中选取。
- fade
- wipeleft
- wiperight
- wipeup
- wipedown
- slideleft
- slideright
- slideup
- slidedown
-
默认过渡效果是fade。
- source
自定义过渡效果的OpenCL程序源文件。
- kernel
设置选择程序源文件中自定义过渡的kernel名称。
- duration
设置视频过渡的持续时间。
- offset
设置过渡相对于第一个视频开始的时间。
程序源文件必须包含一个具有给定名称的kernel函数,它将针对输出的每个平面运行一次。 每个平面运行时会将其作为单独的二维全局NDRange队列,生成的每个像素都有一个工作项。 因此,每个工作项的全局ID偏移即为目标图像中像素的坐标。
kernel函数需要接受以下参数:
- 目标图像,__write_only image2d_t.
此图像将成为输出;kernel应写入其全部内容。
- 第一个源图像,__read_only image2d_t第二个源图像,__read_only image2d_t.
这些是每个输入的最近图像。kernel可以从中读取以生成输出,但无法写入它们。
- 过渡进度,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); }
13 VAAPI视频滤波器
VAAPI视频滤波器通常与VAAPI解码器和VAAPI编码器一起使用。以下是VAAPI视频滤波器的描述。
要启用这些滤波器的编译,需要配置FFmpeg为--enable-vaapi
.
要使用VAAPI滤波器,需要正确设置VAAPI设备。更多信息请参阅https://trac.ffmpeg.org/wiki/Hardware/VAAPI
13.1 overlay_vaapi
在一个视频上覆盖另一个视频。
它需要两个输入且有一个输出。第一个输入是“主要”视频,第二个输入是要覆盖的图像。
滤波器接受以下选项:
- x
- y
设置覆盖视频在主要视频上的x和y坐标表达式。 默认值为“0”。
Default value is "0" for both expressions.
- w
- h
设置覆盖视频在主要视频上的宽度和高度表达式。 默认值分别为‘overlay_iw’和‘overlay_ih*w/overlay_iw’。
Default values are ’overlay_iw’ for ’w’ and ’overlay_ih*w/overlay_iw’ for ’h’.
表达式可以包含以下参数:
- 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选项。
13.1.1 示例
- 将LOGO图像覆盖在INPUT视频的左上角。两个输入都是yuv420p格式。
-i INPUT -i LOGO -filter_complex "[0:v]hwupload[a], [1:v]format=yuv420p, hwupload[b], [a][b]overlay_vaapi" OUTPUT
- 将LOGO图像覆盖在距离INPUT视频左上角偏移(200,100)的位置。
输入有相同的颜色通道内存布局,覆盖包含额外的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
13.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
设置输出内容光线等级信息。接受两个空格分隔的值,第一个输入是最大光线等级,第二个输入是最大平均光线等级。
对于HDR到SDR色调映射被忽略,对于HDR到HDR色调映射是可选的。
13.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
13.3 hstack_vaapi
水平堆叠输入视频。
这是hstack滤波器的VA-API变体,每个输入流可以有不同的高度, 此滤波器将保持原始宽高比对每个输入流进行上下缩放。
它接受以下选项:
13.4 vstack_vaapi
垂直堆叠输入视频。
这是vstack滤波器的VA-API变体,每个输入流可以有不同的宽度, 此滤波器将保持原始宽高比对每个输入流进行上下缩放。
它接受以下选项:
13.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.
13.6 pad_vaapi
为输入图像添加填充,并将原始输入放置在指定的x, y坐标。
它接受以下选项:
- width, w
- height, h
指定包含填充后输出图像大小的表达式。如果width或height的值为0,则使用对应输入的尺寸作为输出大小。
该width表达式可以引用由height表达式设置的值,反之亦然。
默认值为width和height是0。
- x
- y
指定在填充区域内相对于输出图像上/左边界的位置偏移,将输入图像放置其中。
该x表达式可以引用由y表达式设置的值,反之亦然。
默认值为x和y是0。
如果x或y评估出负数,它们将被修改为使输入图像居中于填充区域。
- color
指定填充区域的颜色。有关此选项的语法,请参阅(ffmpeg-utils)"颜色"部分,位于ffmpeg-utils 手册中.
- aspect
填充为某种宽高比而不是指定分辨率。
对于width, height, x和y选项的值为表达式,包含以下常量:
- in_w
- in_h
输入视频的宽度和高度。
- iw
- ih
这些与in_w和in_h.
- out_w
- out_h
输出宽度和高度(填充区域的大小),由以下项指定宽度和高度表达式。
- ow
- oh
这些与out_w和out_h.
- x
- y
由以下项指定的x和y偏移量x和y表达式,或尚未指定时为NAN。
- a
同样为iw / ih
- sar
输入样本纵横比
- dar
输入显示纵横比,与iw / ih) * sar
13.7 drawbox_vaapi
在输入图像上绘制一个彩色框。
它接受以下参数:
- x
- y
指定框的左上角坐标的表达式。默认为0。
- width, w
- height, h
指定框的宽度和高度的表达式;如果为0,则解释为输入的宽度和高度。默认为0。
- color, c
指定要绘制的框的颜色。关于该选项的一般语法,请查看(ffmpeg-utils) `Color` 部分,位于ffmpeg-utils手册中.
- thickness, t
设置框边框厚度的表达式。 值为
fill
将创建一个填充框。默认值是3
.请参见下文中的已接受常量列表。
- replace
值为
1
时,绘制框的像素将覆盖视频的颜色和阿尔法像素。 默认值为0
,将框叠加到输入视频上。
以下参数的x, y, w和h以及t是包含以下常量的表达式:
- in_h, ih
- in_w, iw
输入的宽度和高度。
- x
- y
绘制框的x和y偏移坐标。
- w
- h
绘制的框的宽度和高度。
- t
绘制框的厚度。
13.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
14 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将上传到与软件帧相同布局的帧,所以可能需要在前插入一个格式过滤器以获取正确输入格式,并且hwdownload不支持所有输出格式 - 通常需要在图中紧接其后插入一个额外的格式过滤器以获取支持的输出格式。
14.1 avgblur_vulkan
应用基于Vulkan的GPU实现的平均模糊滤镜。
此过滤器接受以下选项:
- sizeX
设置水平半径大小。 范围是
[1, 32]
,默认值是3
.- sizeY
设置垂直半径大小。范围是
[1, 32]
,默认值是3
.- planes
设置需要过滤的平面。默认值是
0xf
,即处理所有平面。
14.2 blend_vulkan
将两个Vulkan帧混合在一起。
The blend
过滤器接收两个输入流并输出一个流,第一个输入是"顶部"层,第二个输入是"底部"层。
默认情况下,输出在最长输入终止时终止。
以下是接受的选项的描述。
- c0_mode
- c1_mode
- c2_mode
- c3_mode
- all_mode
设置像素成分或所有像素成分的混合模式,all_mode情况下的默认值为
normal
.组件模式的可用值为:
- ‘normal’
- ‘multiply’
14.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
.
14.4 chromaber_vulkan
应用一项模拟色差的效果。对于RGB输入最佳,但对于YCbCr输入也能提供类似效果。
- dist_x
水平位移乘数。每个色度像素的位置将被乘以此值,从图像中心开始。默认值为
0
.- dist_y
类似地,设置垂直位移乘数。默认值为
0
.
14.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)。
14.6 vflip_vulkan
垂直翻转图像。
14.7 hflip_vulkan
水平翻转图像。
14.8 flip_vulkan
沿垂直和水平方向翻转图像。
14.9 gblur_vulkan
对Vulkan帧应用高斯模糊滤镜。
此过滤器接受以下选项:
- sigma
设置水平sigma,代表高斯模糊的标准偏差。默认是
0.5
.- sigmaV
设置垂直sigma。如果为负,其值与
sigma
相同。 默认是-1
.- planes
设置需要过滤的平面。默认情况下过滤所有平面。
- size
设置沿水平方向的内核大小。默认是
19
.- sizeV
设置沿垂直方向的内核大小。默认是
0
, 其值与大小.
14.10 nlmeans_vulkan
使用基于Vulkan的GPU实现的非局部均值算法去噪。 支持更多像素格式(相较于nlmeans或nlmeans_opencl),包括支持阿尔法通道。
过滤器接受以下选项。
- s
设置所有分量的去噪强度。默认为1.0。范围应为[1.0, 100.0]。
- p
设置所有平面的块大小。默认为7,必须为范围[1, 99]内的奇数。
- r
设置搜索大小。默认为15,必须为范围[1, 99]内的奇数。
- t
设置并行化程度。默认为36,范围应为[1, 168]。 较大的值可能会加快处理,但会消耗更多的VRAM。 较低的值会减慢速度,减少VRAM使用量。 仅在支持浮点原子操作的GPU上受支持(如RDNA3+、Ampere+)。
- s0
- s1
- s2
- s3
为特定分量设置去噪强度。默认值为1,等于s。 必须为范围[1, 100]内的奇数。
- p0
- p1
- p2
- p3
为特定分量设置块大小。默认值为7,等于p。 必须为范围[1, 99]内的奇数。
14.11 overlay_vulkan
在另一个视频上叠加一个视频。
它接受两个输入并输出一个。第一个输入是"主"视频,上叠第二个输入。 此过滤器要求所有输入使用相同的像素格式。因此可能需要进行格式转换。
此过滤器接受以下选项:
- x
设置覆盖于主视频上的视频的x坐标。 默认值为
0
.- y
设置覆盖于主视频上的视频的y坐标。 默认值为
0
.
14.12 transpose_vt
将输入视频的行与列互换,并可选择翻转视频。 有关更深入的示例,请参阅transpose视频过滤器,其多数选项与此处相同。
它接受以下参数:
- dir
指定转置方向。
可以取以下值:
- ‘cclock_flip’
逆时针旋转90度并垂直翻转。(默认)
- ‘clock’
顺时针旋转90度。
- ‘cclock’
逆时针旋转90度。
- ‘clock_flip’
顺时针旋转90度并垂直翻转。
- ‘hflip’
水平翻转输入视频。
- ‘vflip’
垂直翻转输入视频。
- passthrough
如果输入几何形状与指定值匹配,则不执行转置。 它接受以下值:
- ‘none’
始终执行转置。(默认)
- ‘portrait’
保留肖像模式几何形状(当高度 >= 宽度).
- ‘landscape’
保留横屏模式几何形状(当宽度 >= 高度).
14.13 transpose_vulkan
将输入视频的行与列互换,并可选择翻转视频。 有关更深入的示例,请参阅transpose视频过滤器,其多数选项与此处相同。
它接受以下参数:
- dir
指定转置方向。
可以取以下值:
- ‘cclock_flip’
逆时针旋转90度并垂直翻转。(默认)
- ‘clock’
顺时针旋转90度。
- ‘cclock’
逆时针旋转90度。
- ‘clock_flip’
顺时针旋转90度并垂直翻转。
- passthrough
如果输入几何形状与指定值匹配,则不执行转置。 它接受以下值:
- ‘none’
始终执行转置。(默认)
- ‘portrait’
保留肖像模式几何形状(当高度 >= 宽度).
- ‘landscape’
保留横屏模式几何形状(当宽度 >= 高度).
15 QSV视频滤镜
以下描述了当前可用的QSV视频滤镜。
要启用这些滤镜的编译,您需要在配置FFmpeg时使用--enable-libmfx
或--enable-libvpl
.
要使用QSV滤镜,您需要正确设置QSV设备。更多信息请阅读https://trac.ffmpeg.org/wiki/Hardware/QuickSync
15.1 hstack_qsv
横向堆叠输入视频。
这是hstack过滤器的QSV变体,每个输入流可以具有不同的高度,此过滤器会按比例缩小/放大每个输入流,同时保持原始比例。
它接受以下选项:
15.2 vstack_qsv
将输入视频垂直堆叠。
这是该滤镜的 QSV 变体vstack滤镜,每个输入流的宽度可以不同,该滤镜会在保持原始纵横比的前提下将每个输入流缩小或放大。
它接受以下选项:
15.3 xstack_qsv
将视频输入堆叠到自定义布局。
这是该滤镜的 QSV 变体xstack滤镜。
它接受以下选项:
- 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.
16 视频源
以下是当前可用视频源的说明。
16.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
或者,选项可以指定为一个单行字符串,但这种语法已弃用:
宽度:高度:像素格式:时间基准分子:时间基准分母:像素纵横比分子:像素纵横比分母
16.2 cellauto
通过基本元胞自动机生成一个模式。
可以通过filename和pattern选项定义元胞自动机的初始状态。如果未指定此类选项,则会随机创建初始状态。
在每个新帧中,视频中的新行会填充元胞自动机下一代的结果。当整个帧被填满时,其行为由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 手册.
如果filename或pattern已指定,则尺寸默认设置为所指定的初始状态行的宽度,高度设置为宽度* PHI。
如果size已设置,则它必须包含指定模式字符串的宽度,且指定的模式将居中于更大的行。
如果未指定文件名或模式字符串,尺寸值默认为 "320x518"(用于随机生成的初始状态)。
- scroll
如果设置为1,当输出中的所有行都已被填充时,向上滚动输出。如果设置为0,当底部行被填满后,新生成的行将覆盖顶部行。 默认值为1。
- start_full, full
如果设置为1,在输出第一帧之前完全用生成的行填充输出。 这是默认行为,要禁用请将值设置为0。
- stitch
如果设置为1,将左边和右边的行边缘缝合在一起。 这是默认行为,要禁用请将值设置为0。
16.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
16.3 coreimagesrc
在 OSX 上通过 Apple 的 CoreImage API 使用 GPU 生成的视频源。
此视频源是coreimage视频滤镜的一个特殊版本。 在应用滤镜链的开头使用核心图像生成器生成内容。
coreimagesrc 视频源接受以下选项:
- list_generators
列出所有可用生成器及其各自的所有选项,并列出可能的最小值和最大值以及默认值。
list_generators=true
- size, s
指定源视频的尺寸。有关此选项的语法,请查看(ffmpeg-utils)“视频尺寸”部分的 ffmpeg-utils 手册。 默认值为
320x240
.- rate, r
指定源视频的帧率,即每秒生成的帧数。 必须是以下格式的字符串frame_rate_num/frame_rate_den,一个整数,一个浮点数或有效的视频帧率缩写。 默认值为"25"。
- sar
设置源视频的样本纵横比。
- duration, d
设置源视频的持续时间。参见(ffmpeg-utils)ffmpeg-utils(1) 手册中的“时间持续时间”部分以了解可接受的语法。
如果未指定或表达的持续时间为负,视频就会无限生成。
此外,还接受coreimage视频滤镜的所有选项。 可使用完整滤镜链进一步处理生成的输入,无需 CPU-HOST 传输。 详情请参见coreimage文档和示例。
16.3.1 示例
- 使用 CIQRCodeGenerator 创建 FFmpeg 首页的二维码,
以下是 Apple 标准 bash shell 的完整且转义的命令行:
ffmpeg -f lavfi -i coreimagesrc=s=100x100:filter=CIQRCodeGenerator@inputMessage=https\\\\\://FFmpeg.org/@inputCorrectionLevel=H -frames:v 1 QRCode.png
此示例等效于coreimage的二维码示例 但无需使用 nullsrc 视频源。
16.4 ddagrab
通过桌面复制 API 捕获 Windows 桌面。
该滤镜仅返回 D3D11 硬件帧,用于在 GPU 上编码或处理。 因此对于任何形式的软件处理都需要显式hwdownload。
它接受以下选项:
- output_idx
DXGI 输出索引以捕获。
通常对应于 Windows 为屏幕分配的索引减一, 所以从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 如果需要会将其转换。
- ‘10bit’
- ‘x2bgr10’
如果请求了10位格式但不可用,滤镜初始化将失败。
- dup_frames
当此选项设置为 true(默认值)时,如果桌面未更新,滤镜会复制帧以尽可能保持恒定的目标帧率。如果此选项设置为 false,滤镜将等待桌面更新(这情况下帧间间隔可能会有显著变化)。
16.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
16.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’
默认类型为线性.
16.5.1 命令
此源支持与命令.
16.6 曼德布罗特集合
生成一个曼德布罗特集合分形,并逐渐向用start_x和start_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)"视频 大小"部分。默认值为 "640x480"。
- start_scale
设置初始缩放值。默认值为 3.0。
- start_x
设置初始 x 位置。必须是 -100 到 100 之间的浮点值。默认值为 -0.743643887037158704752191506114774。
- start_y
设置初始 y 位置。必须是 -100 到 100 之间的浮点值。默认值为 -0.131825904205311970493132056385139。
16.7 mptestsrc
生成各种测试模式,由 MPlayer 测试过滤器生成。
生成的视频大小固定为 256x256。 此源特别适用于测试编码功能。
此源接受以下选项:
- rate, r
指定源视频的帧率,以每秒生成的帧数表示。必须是格式frame_rate_num/frame_rate_den的字符串、一个整数、浮点数或有效的视频帧率缩写。默认值为 "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。
默认值为 "all",将轮流执行所有测试列表。
一些示例:
mptestsrc=t=dc_luma
将生成一个 "dc_luma" 测试模式。
16.8 frei0r_src
提供一个 frei0r 源。
要启用此滤镜的编译,您需要安装 frei0r
头文件并使用以下配置 FFmpeg--enable-frei0r
.
此源接受以下参数:
- size
生成视频的大小。有关此选项的语法,请查看(ffmpeg-utils)ffmpeg-utils 手册中的"视频大小"部分.
- framerate
生成视频的帧率。它可以是如下形式的字符串num/den或帧率缩写。
- filter_name
加载到 frei0r 源的名称。有关 frei0r 和参数组设置的更多信息,请参阅frei0r视频滤镜文档中的部分。
- filter_params
向 frei0r 源传递参数的以‘|’分隔的列表。
例如,将 frei0r partik0l 源大小设置为 200x200 帧率为 10,并覆盖到 overlay 滤镜主输入上的情况:
frei0r_src=size=200x200:framerate=10:filter_name=partik0l:filter_params=1234 [overlay]; [in][overlay] overlay
16.9 life
生成生命模式。
此来源基于 John Conway 的生命游戏的概括。
源输入表示一个生命格网,每个像素代表一个细胞 可以是两种可能状态之一,生存或死亡。每个细胞 与其八个邻居互动,这些细胞是 横向、纵向或对角线相邻的。
在每次交互时,格网根据采用的规则进行演化, 规则指定邻居活细胞的数量使一个 细胞保持活着或出生。rule您可以通过
此源接受以下选项:
- filename, f
设置从中读取初始网格状态的文件。在文件中, 每个非空白字符表示一个活细胞,新行 用于分隔每行的结束。
如果未指定此选项,则初始网格将随机生成。
- rate, r
设置视频速率,即每秒生成的帧数。 默认值为 25。
- random_fill_ratio, ratio
设置初始随机网格的随机填充比例。是一种 从 0 到 1 的浮点数值,默认值为 1/PHI。 当指定了文件时被忽略。
- random_seed, seed
设置用于填充初始随机网格的种子,必须是一个在 0 和 UINT32_MAX 之间的整数。 如果未指定或显式设置为 -1,过滤器将尝试在尽力而为的基础上使用一个良好的随机种子。
- rule
设置生命规则。
规则可以用“SNS/BNB”编码指定, 其中NS和NB是范围 0-8 的数字序列,NS指定使一个 活细胞保持活着的活邻居细胞数,NB指定使一个死细胞变成活细胞(即"诞生")活邻居细胞的数量。 "s" 和 "b" 可以分别代替 "S" 和 "B"。
或者规则可以通过一个 18 位整数指定。高 9 位用于对每个邻居活细胞数的活细胞下一状态进行编码,低位指定"出生"新细胞的规则。高位编码表示更多邻居细胞。 例如,数字 6153=
(12<<9)+9
指定了一个保持活着规则为 12 和一个出生规则为 9,对应“ S23/B03”。默认值为“ S23/B3”,这是原始 Conway 的生命游戏规则,细胞在拥有 2 或 3 个邻居活细胞时保持活着,如果周围有三个活细胞而成为新的细胞。
- size, s
设置输出视频的大小。有关此选项的语法,请查看(ffmpeg-utils)ffmpeg-utils 手册中的"视频大小"部分.
如果filename已指定,默认情况下尺寸设置为与输入文件相同。size被设置,则它必须包含输入文件中指定的尺寸,输入文件中定义的初始网格必须居中放置在较大的结果区域。
如果未指定文件名,则大小值默认为 "320x240"(用于随机生成的初始网格)。
- stitch
如果设置为 1,则将左上和右下的网格边缘拼接在一起,顶部和底部边缘也拼接。默认值为 1。
- mold
设置细胞模具速度。如果设置,死细胞将在death_color到mold_color之间以mold. mold的步长发生变化。
- life_color
设置活细胞(或新生细胞)的颜色。
- death_color
设置死细胞的颜色。如果mold已设置,这是用来表示死细胞的第一个颜色。
- mold_color
设置模具颜色,用于决定性死亡和发霉的细胞。
有关这些 3 个颜色选项的语法,请查看(ffmpeg-utils)ffmpeg-utils 手册中的"颜色"部分.
16.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
16.10 perlin
生成 Perlin 噪声。
Perlin 噪声是一种具有空间局部连续性的噪声。它 可以用于生成在空间和时间上连续的模式,例如模拟烟雾、流体或地形。
如果通过octaves选项指定了多个八度,Perlin 噪声作为组件的总和生成,每个组件具有倍增的频率。在这种情况下,persistence选项 指定相对于前一个组件振幅的比率。更多的八度组件使生成的噪声能指定更高的频率细节(例如生成地形的尺寸因巨石的变化)。
16.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设置为random_seed时,使用此值 计算初始模式。默认值是
0
.
16.10.2 示例
- 生成单一组件:
perlin
- 使用包含 7 个组件的 Perlin 噪声,每个组件对总振幅贡献减半:
perlin=octaves=7:persistence=0.5
- 将 Perlin 噪声与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
16.11 qrencodesrc
使用 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或者t或 ¸n),因为它们仅在为每帧评估表达式而不是在初始化时才有意义。
- rate, r
指定视频源的帧率,即每秒生成的帧数。它需要是格式为frame_rate_num/frame_rate_den的字符串,整数,浮点数或有效的视频帧率缩写。默认值为“25”。
- case_sensitive, cs
指示 libqrencode 使用区分大小写的编码。默认启用。可以禁用以减少 QR 编码尺寸。
- level, l
指定 QR 编码的错误校正级别。较高的校正级别会增加编码尺寸,但代码更能抵御损坏。 较低级别为L.
可接受以下值:
- ‘L’
- ‘M’
- ‘Q’
- ‘H’
- expansion
选择如何扩展输入文本。可以是
none
,或者normal
(默认)。详情请参见qrencode 文本扩展章节。- text
- textfile
定义要呈现的文本。如果未指定任何内容,将不会编码 QR(仅是一个空的彩色框架)。
如果启用了扩展,文本将被视为一个文本模板,使用qrencode扩展机制。详情请参见qrencode 文本扩展章节。
- background_color, bc
- foreground_color, fc
设置 QR 码和背景颜色。默认的前景颜色为“黑色”,默认的背景颜色为“白色”。
有关颜色选项的语法,请参见ffmpeg-utils 手册中的“颜色”章节.
16.11.1 示例
- 使用默认大小生成编码指定文本的 QR 码:
qrencodesrc=text=www.ffmpeg.org
- 与下方相同,但选择蓝色和粉色颜色:
qrencodesrc=text=www.ffmpeg.org:bc=pink:fc=blue
- 生成一个 200 像素宽度并填充宽度为 QR 码宽度的 4/3 的 QR 码:
qrencodesrc=text=www.ffmpeg.org:q=200:Q=4/3*q
- 生成一个填充宽度为 200 像素并填充宽度为 QR 码宽度的 3/4 的 QR 码:
qrencodesrc=text=www.ffmpeg.org:Q=200:q=3/4*Q
- 生成编码帧编号的 QR 码:
qrencodesrc=text=%{n}
- 生成编码 GMT 时间戳的 QR 码:
qrencodesrc=text=%{gmtime}
- 生成以浮点表示的时间戳编码的 QR 码:
qrencodesrc=text=%{pts}
16.12 allrgb, allyuv, color, colorchart, colorspectrum, haldclutsrc, nullsrc, pal75bars, pal100bars, rgbtestsrc, smptebars, smptehdbars, testsrc, testsrc2, yuvtestsrc
将allrgb
源返回尺寸为 4096x4096 的所有 RGB 颜色的帧。
将allyuv
源返回尺寸为 4096x4096 的所有 YUV 颜色的帧。
将color
源提供统一的彩色输入。
将colorchart
源提供一个颜色检查图表。
将colorspectrum
源提供一个颜色光谱输入。
将haldclutsrc
源提供一个身份 Hald CLUT。另见haldclut滤镜。
将nullsrc
源返回未处理的视频帧。它主要用于分析/调试工具,或用作忽略输入数据的滤镜的来源。
将pal75bars
源生成基于 EBU PAL 推荐的 75% 色级的彩条模式。
将pal100bars
源生成基于 EBU PAL 推荐的 100% 色级的彩条模式。
将rgbtestsrc
源生成一个 RGB 测试图案,用于检测 RGB 和 BGR 问题。您应该看到从上到下的红色、绿色和蓝色条纹。
将smptebars
源生成基于 SMPTE 工程指南 EG 1-1990 的彩条图案。
将smptehdbars
源生成基于 SMPTE RP 219-2002 的彩条图案。
将testsrc
源生成一个测试视频图案,显示颜色图案、滚动渐变和时间戳。这主要用于测试用途。
将testsrc2
源类似于 testsrc,但支持更多像素格式,
而不仅仅是rgb24
。这使其可用作其他测试的输入,而无需格式转换。
将yuvtestsrc
源生成一个 YUV 测试图案。您应该看到从上到下的 y、cb 和 cr 条纹。
这些来源接受以下参数:
- level
指定 Hald CLUT 的级别,仅适用于
haldclutsrc
源。级别为N
生成尺寸为N*N*N
乘以N*N*N
像素的图片,用作 3D 查找表的单位矩阵。每个组件以1/(N*N)
比例编码。- color, c
指定来源的颜色,仅适用于
color
源。有关此选项的语法,请参阅ffmpeg-utils 手册中的“颜色”章节.- size, s
指定源视频的尺寸。有关此选项的语法,请参阅ffmpeg-utils手册中的“视频尺寸”章节。 默认值是
320x240
.此选项不适用于
allrgb
,allyuv
和haldclutsrc
过滤器。- rate, r
指定源视频的帧率,即每秒生成的帧数。它需要是格式为frame_rate_num/frame_rate_den的字符串,整数,浮点数或有效视频帧率缩写。默认值为“25”。
- duration, d
设置源视频的持续时间。参见ffmpeg-utils 手册中的时间持续章节,以获取接受的语法。
如果未指定,或者表示的持续时间为负数,则视频假定会无限生成。
由于帧率被用作时间基准,所有帧(包括最后一帧)都将具有其全时长。如果指定的持续时间不是帧持续时间的倍数,它将向上舍入。
- sar
设定源视频的样本宽高比。
- alpha
指定背景的不透明度,仅适用于
testsrc2
源。值必须在 0(完全透明)到 255(完全不透明,默认值)之间。- decimals, n
设置时间戳中显示的小数位数,仅适用于
testsrc
源。显示的时间戳值将对应于原始时间戳值乘以指定值的 10 次幂。默认值为 0。
- type
设置颜色光谱的类型,仅适用于
colorspectrum
源。可用值为:- ‘black’
- ‘white’
- ‘all’
- patch_size
设置单个颜色块的块大小,仅适用于
colorchart
源。默认值为64x64
.- preset
设置颜色检查器颜色预设,仅适用于
colorchart
源。可用值为:
- ‘reference’
- ‘skintones’
默认值为
reference
.
16.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
16.12.2 命令
来源color
支持以下命令:
- c, color
设置创建图像的颜色。接受与相应的color选项相同的语法。
16.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); }
- 生成一个谢尔宾斯基地毯模式,每帧平移一个像素。
__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); }
16.14 sierpinski
生成一个谢尔宾斯基地毯/三角形分形,并随机平移。
该源接受以下选项:
- size, s
设置帧尺寸。有关此选项的语法,请参见ffmpeg-utils 手册中的“视频尺寸”章节。默认值为“640x480”。
- rate, r
设置帧率,以每秒帧数表示。默认值为“25”。
- seed
设置用于随机平移的种子。
- jump
设置单个平移目标的最大跳跃。允许范围是 1 到 10000。
- type
设置分形类型,可以是默认
carpet
或triangle
.
16.15 zoneplate
生成一个 zoneplate 测试视频图案。
该源接受以下选项:
- size, s
设置帧尺寸。有关此选项的语法,请参见ffmpeg-utils 手册中的“视频尺寸”章节。默认值为“320x240”。
- rate, r
设置帧率,以每秒帧数表示。默认值为“25”。
- duration, d
设置源视频的持续时间。参见ffmpeg-utils 手册中的时间持续章节以获取接受的语法。
如果未指定,或者表示的持续时间为负数,则视频假定会无限生成。
- sar
设定源视频的样本宽高比。
- precision
设置正弦计算的查找表的精度(以位为单位)。默认值为10。 允许的范围是4到16。
- xo
为输出信号设置水平轴偏移量。默认值为 0。
- yo
为输出信号设置垂直轴偏移量。默认值为 0。
- to
为输出信号设置时间轴偏移量。默认值为 0。
- k0
设置0阶常量相位,它加入到信号相位中。默认值为0。
- kx
设置水平轴的一阶相位因子倍增器。默认值为0。
- ky
设置垂直轴的一阶相位因子倍增器。默认值为0。
- kt
设置时间轴的一阶相位因子倍增器。默认值为0。
- kxt, kyt, kxy
为空间和时间轴组合设置相位因子倍增器。默认值为0。
- kx2
设置水平轴的二阶相位因子倍增器。默认值为0。
- ky2
设置垂直轴的二阶相位因子倍增器。默认值为0。
- kt2
设置时间轴的二阶相位因子倍增器。默认值为0。
- ku
设置添加到最终相位的常数以生成信号的色差蓝分量。默认值为0。
- kv
设置添加到最终相位的常数以生成信号的色差红分量。默认值为0。
16.15.1 命令
此来源支持某些上述选项作为命令.
16.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=ku=512:kv=100:kt2=0:ky2=256:kx2=556:s=wvga:yo=0:kt=11
17 视频接收器
以下是当前可用的视频接收器的说明。
17.1 缓冲接收器
缓冲视频帧,并使它们可用于过滤器图结束。
此接收器主要适用于编程用途,特别是通过libavfilter/buffersink.h定义的接口或选项系统。
它接受指向 AVBufferSinkContext 结构的指针,该结构定义了传入缓冲区的格式,用作初始化的参数。avfilter_init_filter
的opaque。
17.2 空接收器
空视频接收器:绝对不对输入视频执行任何操作。它主要用作模板和用于分析/调试工具。
18 多媒体过滤器
以下是当前可用的多媒体过滤器的说明。
18.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
设置显示音频波形的帧数长度。
18.1.1 命令
滤镜支持上面提到的一些选项,例如命令.
18.2 abitscope
将输入音频转换为视频输出,显示音频位范围。
滤镜接受以下选项:
- rate, r
设置帧率,以每秒帧数表示。默认值为"25"。
- size, s
指定输出视频的大小。有关此选项的语法,请检查(ffmpeg-utils)"视频大小"部分在ffmpeg-utils手册中. 默认值是
1024x256
.- colors
指定用空格或‘|’分隔的颜色列表,这些颜色将用于绘制通道。未识别或缺失的颜色将替换为白色。
- mode, m
设置输出模式。可以是
bars
或者trace
。默认值是bars
.
18.3 adrawgraph
使用输入音频元数据绘制图形。
18.4 agraphmonitor
参见graphmonitor.
18.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
.
18.6 aphasemeter
测量输入音频的相位,其作为元数据导出lavfi.aphasemeter.phase
,
表示当前音频帧的平均相位。也可以生成视频输出,默认为启用。音频作为第一个输出通过。
如果频道布局不同,音频将重新分配为立体声。相位值范围在[-1, 1]
之间,其中-1
表示左右声道完全反相,而1
表示声道同步。
滤镜接受以下选项,均与其视频输出相关:
- rate, r
设置输出帧率。默认值是
25
.- size, s
指定输出视频的大小。有关此选项的语法,请检查(ffmpeg-utils)"视频大小"部分在ffmpeg-utils手册中. 默认值是
800x400
.- rc
- gc
- bc
指定红、绿、蓝对比度。默认值是
2
,7
和1
。 允许范围是[0, 255]
.- mpc
设置用于绘制中位相位的颜色。如果颜色为
none
(默认),则不绘制中位相位值。- video
启用视频输出。默认是启用。
18.6.1 相位检测
滤镜还检测立体声流中的反相和单声道序列。 当序列持续时间等于或超过设定的最小时,它将记录序列的开始、结束和持续时间。
滤镜接受以下选项用于此检测:
- phasing
启用单声道和反相检测。默认是禁用。
- tolerance, t
设置单声道检测的相位容差,单位为振幅比。默认值是
0
。 允许范围是[0, 1]
.- angle, a
设置反相检测的角度阈值,单位为度数。默认值是
170
。 允许范围是[90, 180]
.- duration, d
设置通知之前的单声道或反相持续时间,单位为秒。默认值是
2
.
18.6.2 示例
- 使用
ffmpeg
的完整示例检测1秒的单声道,相位容差为0.001:ffmpeg -i stereo.wav -af aphasemeter=video=0:phasing=1:duration=1:tolerance=0.001 -f null -
18.7 avectorscope
将输入音频转换为视频输出,表示音频矢量范围。
此滤镜用于测量立体声音频流中声道之间的差异。一个单声道信号(左右声道相同的信号)将显示为一条垂直的直线。任何立体声分离都显示为偏离该线的偏移,形成利萨茹图形。 如果出现直线(或偏离的)但水平线,这表明左右声道反相。
滤镜接受以下选项:
- mode, m
设置向量范围模式。
可用值为:
- ‘lissajous’
利萨茹图形旋转45度。
- ‘lissajous_xy’
与上述相同但不旋转。
- ‘polar’
形状类似半个圆。
默认值是‘lissajous’.
- size, s
指定输出视频的大小。有关此选项的语法,请检查(ffmpeg-utils)"视频大小"部分在ffmpeg-utils手册中. 默认值是
400x400
.- rate, r
设置输出帧率。默认值是
25
.- rc
- gc
- bc
- ac
指定红、绿、蓝和透明通道对比度。默认值是
40
,160
,80
和255
。 允许范围是[0, 255]
.- rf
- gf
- bf
- af
指定红、绿、蓝和透明通道淡入淡出值。默认值是
15
,10
,5
和5
。 允许范围是[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’
同时镜像两个轴。
18.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]'
18.7.2 命令
除去选项size
和rate
.
18.8 bench, abench
对滤镜图的部分进行基准测试。
滤镜接受以下选项:
- action
启动或停止计时器。
可用值为:
- ‘start’
获取当前时间,将其作为帧元数据(使用键
lavfi.bench.start_time
)设置,并将帧转发给下一个滤镜。- ‘stop’
获取当前时间并从输入帧元数据中提取
lavfi.bench.start_time
元数据以获得时间差。然后打印时间差、平均值、最大值和最小值(分别为t
,avg
,max
和min
)。时间戳以秒为单位表示。
18.8.1 示例
- 基准测试selectivecolor滤镜:
bench=start,selectivecolor=reds=-.2 .12 -.49,bench=stop
18.9 concat
串联音频和视频流,将它们一个接一个地连接在一起。
滤镜处理同步视频和音频流的片段。所有片段必须具有相同数量的每种类型的流,这也将是输出的流的数量。
滤镜接受以下选项:
- n
设置片段数量。默认是2。
- v
设置输出视频流的数量,也即是每个片段中的视频流数量。默认是1。
- a
设置输出音频流的数量,也即是每个片段中的音频流数量。默认是0。
- unsafe
激活动态模式:如果片段格式不同,则不失败。
滤镜有v+a输出:首先是v视频输出,然后是a音频输出。
有nx(v+a)输入:首先是第一个片段的输入,顺序与输出相同,然后是第二个片段的输入,等等。
由于各种原因(包括编解码器帧大小或草率制作),相关流的持续时间不总是完全相同。因此,相关同步流(例如视频及其音轨)应同时连接。concat滤镜将使用每个片段中最长流的持续时间(除最后一个片段外),并在必要时用静音填充较短的音频流。
为让此滤镜正确工作,所有片段必须从时间戳0开始。
所有对应的流在所有片段中必须具有相同的参数;滤镜系统将自动选择视频流的共同像素格式,以及音频流的共同样本格式、采样率和声道布局,但其他设置(如分辨率)必须由用户显式转换。
可以接受不同帧率,但会导致输出的帧率可变;请确保配置输出文件以处理它。
18.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]
如果第一个文件中音频与视频流的持续时间不完全相同,剪接处会发生不同步。
18.9.2 命令
此滤镜支持以下命令:
- next
关闭当前片段并跳到下一个
18.10 ebur128
EBU R128 扫描滤镜。此滤镜接受音频流并分析其响度级别。默认情况下,它以10Hz的频率记录一条消息,其中包含瞬间响度(以M
表示)、短期响度(S
)、积分响度(I
)和响度范围(LRA
).
滤镜只能分析采样格式为双精度浮点的流。如果需要,输入流将被转换为此规范。用户可能需要在此滤镜之后插入aformat和/或aresample滤镜,以恢复原始参数。
滤镜还具有视频输出(参见video选项),带有实时图形以观察响度演变。图形包含上述已记录的信息,因此当启用此选项时不再打印这些信息,除非启用了详细日志。主要图形区域包含短期响度(3秒分析),右侧量表则显示瞬时响度(400毫秒),但可以配置为显示短期响度(参见gauge).
绿色区域标记了目标响度(默认为-23LUFS,除非通过target).
更多关于响度推荐EBU R128的信息,请访问http://tech.ebu.ch/loudness.
滤镜接受以下选项:
- video
启用视频输出。无论是否设置此选项,音频流都会保持不变。视频流将是第一个输出流(如果激活)。默认值是
0
.- size
设置视频大小。此选项仅适用于视频。有关此选项的语法,请检查(ffmpeg-utils)"视频大小"部分在ffmpeg-utils手册中. 默认值和最小分辨率为
640x480
.- meter
设置EBU刻度计。默认值为
9
。常见值为9
和18
,分别对应EBU刻度计+9和EBU刻度计+18。允许在此范围内使用其他任何整数值。- metadata
设置元数据注入。如果设置为
1
,音频输入将被分割为100ms的输出帧,每个帧都包含元数据中不同的响度信息。所有元数据键都以lavfi.r128.
.为前缀。默认值为
0
.- framelog
强制设定帧日志级别。
可用的值是:
- ‘quiet’
禁用日志记录
- ‘info’
信息日志级别
- ‘verbose’
详细日志级别
默认情况下,日志级别设置为info。如果video或metadata选项被设置,它将切换为verbose.
- peak
设置峰值模式。
可用模式可以叠加(该选项是一个
flag
类型)。可能的值是:- ‘none’
禁用任何峰值模式(默认)。
- ‘sample’
启用采样峰值模式。
简单峰值模式,寻找最高的采样值。它为采样峰值(由
SPK
).- ‘true’
启用真峰值模式。
如果启用,峰值查找将在输入流的超采样版本上进行,以提高峰值精度。它记录真峰值消息(由
TPK
标识)和每帧真峰值(由FTPK
标识)。 这种模式需要包含libswresample
.
- dualmono
将单声道输入文件视为“双单声道”。如果单声道文件在立体声系统上播放,其EBU R128测量将感知不正确。如果设置为
true
,该选项将对这一效果进行补偿。 多通道输入文件不受该选项影响。- panlaw
为双单声道文件的测量设置特定的声道分配规则。 此参数是可选的,默认值为-3.01dB。
- target
设置用于可视化的相对零点的特定目标电平(以LUFS为单位)。 该参数是可选的,默认值为-23LUFS,这是由EBU R128指定的。 然而,在线发布的材料可能更喜欢-16LUFS的电平(例如用于播客或视频平台)。
- gauge
设置由量表显示的值。有效值为
momentary
和sshortterm
。默认情况下使用瞬时值,但在某些场景下,观察短期值可能更有用(例如实时混音)。- scale
设置响度的显示比例。有效参数为
absolute
(以LUFS为单位)或relative
(LU)相对于目标值。这仅影响视频输出,不影响摘要或连续日志输出。- integrated
导出的只读值,用于度量一体化响度,以LUFS为单位。
- range
导出的只读值,用于度量响度范围,以LU为单位。
- lra_low
导出的只读值,用于度量LRA低频响度,以LUFS为单位。
- lra_high
导出的只读值,用于度量LRA高频响度,以LUFS为单位。
- sample_peak
导出的只读值,用于度量采样峰值,以dBFS为单位。
- true_peak
导出的只读值,用于度量真峰值,以dBFS为单位。
18.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 -
18.11 interleave, ainterleave
临时交错来自多个输入的帧。
interleave
适用于视频输入,ainterleave
适用于音频。
这些过滤器从多个输入读取帧,并将排队中最早的帧发送到输出。
输入流必须具有明确定义的、单调递增的帧时间戳值。
为了提交一个帧到输出,这些过滤器需要为每个输入排队至少一个帧,因此它们无法在某个输入尚未终止且不会接收传入帧的情况下工作。
例如,考虑一种情况,一个输入是select
过滤器,其总是丢弃输入帧。interleave
过滤器将继续从该输入读取,但它将永远不能发送新帧到输出,直到该输入发送流结束信号。
此外,根据输入的同步情况,这些过滤器将在某些输入接收到的帧比其他输入更多且队列已满时丢弃帧。
这些过滤器接受以下选项:
- nb_inputs, n
设置不同输入的数量,默认值为2。
- duration
如何确定流的结束。
- longest
最长输入的持续时间。(默认)
- shortest
最短输入的持续时间。
- first
第一个输入的持续时间。
18.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
18.12 latency, alatency
测量过滤器延迟。
报告前一个过滤器的过滤延迟,对于音频过滤器为音频样本的数量,视频过滤器为视频帧的数量。
在输入流结束时,过滤器将报告前一个运行过滤器的最小和最大测量延迟。
18.13 metadata, ametadata
操作帧元数据。
该过滤器接受以下选项:
- mode
设置过滤器的操作模式。
可以是以下之一:
- ‘select’
如果同时设置了
value
和key
,则选择具有该元数据的帧。如果仅设置了key
,则选择所有在元数据中具有该键的帧。- ‘add’
添加新的元数据
key
和value
。如果键已存在,则不执行任何操作。- ‘modify’
修改已存在键的值。
- ‘delete’
如果
value
被设置,仅删除具有该值的键。 否则,删除键。如果key
未设置,则删除帧中的所有元数据值。- ‘print’
如果找到元数据,则打印键及其值。如果
key
未设置,则打印帧中所有可用的元数据值。
- key
使用所有模式的键必须被设置。除
print
和delete
.- value
外,所有模式必须指定键的元数据值。
modify
和add
模式必须指定。- function
用于比较元数据值与
value
.的函数可以是以下之一:
- ‘same_str’
值以字符串解释,如果元数据值与
value
.- ‘starts_with’
相同,则返回true。
value
选项的字符串则返回true。- ‘less’
值以浮点数解释,如果元数据值小于
value
.- ‘equal’
值以浮点数解释,如果元数据值等于
value
is equal with metadata value.- ‘greater’
值以浮点数解释,如果元数据值大于
value
.- ‘expr’
值以浮点数解释,如果
expr
中的表达式计算为true,则返回true。- ‘ends_with’
值以字符串解释,如果元数据值以
value
选项的字符串结尾,则返回true。
- expr
设置当
function
被设置为expr
时所用的表达式。 该表达式通过eval API被计算,可以包含以下常量:- VALUE1, FRAMEVAL
使用元数据键中的
value
生成的浮点数。- VALUE2, USERVAL
由用户提供的
value
按选项指定的浮点数。value
,在
- file
模式中,若指定输出写入命名文件。 代替纯文件名可以指定任何可写的url。文件名“-”是标准输出的快捷方式。 如果
print
选项未设置,输出则用AV_LOG_INFO日志级别写入日志中。file
option is not set, output is written to the log with AV_LOG_INFO loglevel.- direct
降低当以URL方式写入时,打印模式中的缓冲需求。使用文件.
18.13.1 示例
- 打印具有键
lavfi.signalstats.YDIF
,值处于0到1之间的帧的所有元数据值。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'
18.14 perms, aperms
设置输出帧的读/写权限。
这些过滤器主要面向开发人员,以测试滤镜图表中的下一过滤器的直接路径。
这些过滤器接受以下选项:
- mode
选择权限模式。
它接受以下值:
- ‘none’
什么都不做。这是默认设置。
- ‘ro’
将所有输出帧设置为只读。
- ‘rw’
将所有输出帧设置为直接可写。
- ‘toggle’
如果可写,使帧只读;如果只读,调整为可写。
- ‘random’
随机地将每个输出帧设置为只读或可写。
- seed
设置随机模式的种子(random),必须是介于
0
和UINT32_MAX
之间的整数。如果未指定,或明确设置为-1
,过滤器将在尽力的基础上尝试使用一个不错的随机种子。
注意:如果在权限过滤器与后续过滤器之间自动插入了过滤器,则后续过滤器可能无法按预期接收到权限。插入format或aformat过滤器可以避免这个问题。
18.15 realtime, arealtime
减慢过滤速率以与实时大致匹配。
这些过滤器将暂停过滤一段可变时间,以使输出速率与输入时间戳匹配。
它们类似于re对ffmpeg
.
的选项。
- limit
暂停的时间限制。任何超过该时间的暂停都将被视为时间戳不连续并重置计时器。默认值为2秒。
- speed
处理速度因子。值必须是大于零的浮点数。值大于1.0将导致处理速度快于实时,值小于1.0将减慢处理速度。限制会相应自动调整。默认值为1.0。
无法通过这些过滤器实现超出实时处理速度的处理速度。
18.15.1 命令
两个过滤器均支持上述所有选项作为命令.
18.16 segment, asegment
将单个输入流拆分为多个流。
此过滤器的操作与concat过滤器相反。
segment
适用视频帧,asegment
应用于音频样本。
此过滤器接受以下选项:
- timestamps
由'|'分隔的输出段时间戳。第一段将从输入流的开始运行。最后一段将持续到输入流结束。
- frames, samples
定义精确的帧/样本计数以拆分段。
在所有情况下,每个段的前面加上‘+’将使其相对。
18.16.1 示例
- 将输入音频流拆分为三个输出音频流,第一个从输入音频流开始并存储到第一个输出音频流中,第二个从第60秒开始并存储到第二个输出音频流中,最后一个从输入音频流的第150秒后存储到第三个输出音频流中:
asegment=timestamps="60|150"
18.17 select, aselect
选择要传递到输出的帧。
此过滤器接受以下选项:
- expr, e
设置表达式,它针对每个输入帧进行计算。
如果表达式计算为零,则丢弃该帧。
如果计算结果为负数或NaN,该帧将发送到第一个输出;否则,它将被发送到索引为
ceil(val)-1
的输出,假定输入索引从0开始。例如,值为
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
流中第一个不是NAN的PTS。如果未找到,仍然是NAN。
- start_t
流中第一个不是NAN的PTS,以秒为单位。如果未找到,仍然是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
连接解复用器可以通过设置入点和出点仅选择连接输入文件的一部分,但输出数据包可能并未完全包含在所选区间内。通过使用此变量,可以跳过连接解复用器生成但未完全包含在所选区间内的帧。
这通过将帧PTS与lavf.concat.start_time以及lavf.concat.duration包元数据值(也出现在解码帧中)进行比较来工作。
变量concatdec_select的值为-1,如果帧PTS至少是start_time并且元数据duration缺失或者帧PTS小于start_time + duration;否则为0,如果start_time元数据缺失,则为NaN。
这基本上意味着,如果帧的PTS处于由连接解复用器设置的区间内,则选择该输入帧。
- iw (仅视频)
表示输入视频帧的宽度。
- ih (仅视频)
表示输入视频帧的高度。
- view (仅视频)
用于多视图视频的视图ID。
选择表达式的默认值是"1"。
18.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
18.18 sendcmd, asendcmd
向滤镜图中的滤镜发送命令。
这些滤镜读取要发送到滤镜图中其他滤镜的命令。
sendcmd
必须插入在两个视频滤镜之间,asendcmd
必须插入在两个音频滤镜之间,但除此之外它们的行为相同。
可以通过commands选项在滤镜参数中提供命令规范,或通过文件指定filename选项。
这些滤镜接受以下选项:
- commands, c
设置要读取并发送到其他滤镜的命令。
- filename, f
设置命令所在文件的文件名,用于读取并发送到其他滤镜。
18.18.1 命令语法
命令描述由一系列区间规范组成,包含与该区间相关的特定事件发生时将执行的命令列表。发生的事件通常是指当前帧时间进入或离开给定的时间区间。
区间由以下语法指定:
开始[-结束] 命令;
时间区间由开始和结束时间指定。结束是可选的,默认为最大时间。
当前帧时间被认为在指定区间内,如果它包含在区间[开始, 结束)中,即当时间大于或等于开始并且小于结束.
命令由一个或多个命令规范组成,与该区间相关,以","分隔。
[标志] 目标 命令 参数
标志是可选的,指定启用发送指定命令的区间事件类型,必须是非空的标识符标志序列,用"+"或"|"分隔,并包含在"["和"]"之间。
以下标志被识别:
- enter
当当前帧时间戳进入指定的区间时发送命令。换句话说,当前一帧时间戳未在指定区间内并且当前帧时间戳位于该区间内时发送。
- leave
当当前帧时间戳离开指定的区间时发送命令。换句话说,当前一帧时间戳在指定区间内并且当前帧时间戳不在该区间内时发送。
- expr
该命令参数被解释为表达式,表达式的结果被作为参数.
该表达式通过eval API计算,可以包含以下常量:
- POS
帧在文件中的原始位置,如果对于当前帧未定义则也是未定义。已弃用,不要使用。
- PTS
输入中的展示时间戳。
- N
输入帧(视频或音频)的计数,从0开始。
- T
当前帧的时间,以秒为单位。
- TS
当前命令区间的开始时间,以秒为单位。
- TE
当前命令区间的结束时间,以秒为单位。
- TI
当前命令区间的插值时间,TI = (T - TS) / (TE - TS)。
- W
视频帧的宽度。
- H
视频帧的高度。
如果标志未指定,默认值为[enter]
假设。
目标指定命令的目标,通常是一个滤镜类名或特定的滤镜实例名。
命令指定目标滤镜的命令名。
参数是可选的,指定给定命令.
的可选参数列表。#
until the end of line,
are ignored and can be used to annotate comments.
以下是命令规范语法的简化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]
18.18.2 示例
- 在第4秒指定音频节奏变化:
asendcmd=c='4.0 atempo tempo 1.5',atempo
- 以特定滤镜实例为目标:
asendcmd=c='4.0 atempo@my tempo 1.5',atempo@my
- Specify a list of drawtext and hue commands in a file.
# 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)
A filtergraph allowing to read and process the above command list stored in a file test.cmd, can be specified with:
sendcmd=f=test.cmd,drawtext=fontfile=FreeSerif.ttf:text='',hue
18.19 setpts, asetpts
Change the PTS (presentation timestamp) of the input frames.
setpts
works on video frames, asetpts
on audio frames.
This filter accepts the following options:
- expr
The expression which is evaluated for each frame to construct its timestamp.
The expression is evaluated through the eval API and can contain the following constants:
- FRAME_RATE, FR
frame rate, only defined for constant frame-rate video
- PTS
The presentation timestamp in input
- N
The count of the input frame for video or the number of consumed samples, not including the current frame for audio, starting from 0.
- NB_CONSUMED_SAMPLES
The number of consumed samples, not including the current frame (only audio)
- NB_SAMPLES, S
The number of samples in the current frame (only audio)
- SAMPLE_RATE, SR
The audio sample rate.
- STARTPTS
The PTS of the first frame.
- STARTT
the time in seconds of the first frame
- INTERLACED
State whether the current frame is interlaced.
- T
the time in seconds of the current frame
- POS
original position in the file of the frame, or undefined if undefined for the current frame; deprecated, do not use
- PREV_INPTS
The previous input PTS.
- PREV_INT
previous input time in seconds
- PREV_OUTPTS
The previous output PTS.
- PREV_OUTT
previous output time in seconds
- RTCTIME
The wallclock (RTC) time in microseconds. This is deprecated, use time(0) instead.
- RTCSTART
The wallclock (RTC) time at the start of the movie in microseconds.
- TB
The timebase of the input timestamps.
- T_CHANGE
Time of the first frame after command was applied or time of the first frame if no commands.
18.19.1 Examples
- Start counting PTS from zero
setpts=PTS-STARTPTS
- Apply fast motion effect:
setpts=0.5*PTS
- Apply slow motion effect:
setpts=2.0*PTS
- Set fixed rate of 25 frames per second:
setpts=N/(25*TB)
- Apply a random jitter effect of +/-100 TB units:
setpts=PTS+randomi(0, -100\,100)
- Set fixed rate 25 fps with some jitter:
setpts='1/(25*TB) * (N + 0.05 * sin(N*2*PI/25))'
- Apply an offset of 10 seconds to the input PTS:
setpts=PTS+10/TB
- Generate timestamps from a "live source" and rebase onto the current timebase:
setpts='(RTCTIME - RTCSTART) / (TB * 1000000)'
- Generate timestamps by counting samples:
asetpts=N/SR/TB
18.19.2命令
Both filters support all above options as commands.
18.20 setrange
Force color range for the output video frame.
The setrange
filter marks the color range property for the
output frames. It does not change the input frame, but only sets the
corresponding property, which affects how the frame is treated by
following filters.
滤镜接受的选项包括:
- range
Available values are:
- ‘auto’
Keep the same color range property.
- ‘unspecified, unknown’
Set the color range as unspecified.
- ‘limited, tv, mpeg’
Set the color range as limited.
- ‘full, pc, jpeg’
Set the color range as full.
18.21 settb, asettb
Set the timebase to use for the output frames timestamps. It is mainly useful for testing timebase configuration.
It accepts the following parameters:
- expr, tb
The expression which is evaluated into the output timebase.
The value for tb is an arithmetic expression representing a rational. The expression can contain the constants "AVTB" (the default timebase), "intb" (the input timebase) and "sr" (the sample rate, audio only). Default value is "intb".
18.21.1示例
- Set the timebase to 1/25:
settb=expr=1/25
- Set the timebase to 1/10:
settb=expr=0.1
- Set the timebase to 1001/1000:
settb=1+0.001
- Set the timebase to 2*intb:
settb=2*intb
- Set the default timebase value:
settb=AVTB
18.22 showcqt
Convert input audio to a video output representing frequency spectrum logarithmically using Brown-Puckette constant Q transform algorithm with direct frequency domain coefficient calculation (but the transform itself is not really constant Q, instead the Q factor is actually variable/clamped), with musical tone scale, from E0 to D#10.
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
它会自动计算柱状图的高度。- axis_h
设置轴的高度。必须为偶数。默认值为
-1
它会自动计算轴的高度。- sono_h
设置声谱图的高度。必须为偶数。默认值为
-1
它会自动计算声谱图的高度。- fullhd
设置全高清分辨率。此选项已弃用,请使用尺寸, s代替。默认值为
1
.- sono_v, volume
指定声谱图音量表达式。可以包含变量:
- bar_v
频率bar_v已计算的表达式
- frequency, freq, f
评估的位置的频率
- timeclamp, tc
值timeclamp选项
以及函数:
- a_weighting(f)
A加权的等响度
- b_weighting(f)
B加权的等响度
- c_weighting(f)
C加权的等响度。
默认值为
16
.- bar_v, volume2
指定柱状图音量表达式。可以包含变量:
- sono_v
频率sono_v已计算的表达式
- frequency, freq, f
评估的位置的频率
- timeclamp, tc
值timeclamp选项
以及函数:
- a_weighting(f)
A加权的等响度
- b_weighting(f)
B加权的等响度
- c_weighting(f)
C加权的等响度。
默认值为
sono_v
.- sono_g, gamma
指定声谱图的伽玛值。较低的伽玛值使频谱更具对比度,较高的伽玛值使频谱具有更大的范围。默认值为
3
。 可接受的范围是[1, 7]
.- bar_g, gamma2
指定柱状图的伽玛值。默认值为
1
。可接受的范围是[1, 7]
.- bar_t
指定柱状图透明度级别。较低的值使柱状图更清晰。 默认值为
1
。可接受的范围是[0, 1]
.- timeclamp, tc
指定变换时间钳位。在低频率下,时间域和频率域之间的精度存在权衡。如果时间钳位较低,则时间域中的事件表示更准确(如快速低音鼓),否则,频率域中的事件表示更准确(如低音吉他)。可接受的范围是
[0.002, 1]
。默认值为0.17
.- attack
设置以秒为单位的攻击时间。默认值为
0
(禁用)。否则,它通过在时间域中应用非对称窗函数来限制未来的采样点,当需要低延迟时非常有用。可接受的范围是[0, 1]
.- basefreq
指定变换的基频。默认值为
20.01523126408007475
, 即E0下方50美分的频率。可接受的范围是[10, 100000]
.- endfreq
指定变换的结束频率。默认值为
20495.59681441799654
, 即D#10上方50美分的频率。可接受的范围是[10, 100000]
.- coeffclamp
此选项已被弃用并忽略。
- tlength
指定变换在时间域中的长度。使用此选项可控制在每个频率采样中的时间域和频率域之间的精度权衡。 它可以包含变量:
- frequency, freq, f
评估的位置的频率
- timeclamp, tc
值timeclamp选项。
默认值为
384*tc/(384+tc*f)
.- count
指定每帧视频的变换次数。默认值为
6
。 可接受的范围是[1, 30]
.- fcount
指定每个像素的变换次数。默认值为
0
, 这使其自动计算。可接受的范围是[0, 10]
.- fontfile
指定用于绘制轴的Freetype字体文件。如果未指定,使用内嵌字体。请注意,自定义basefreq和endfreq时未实现使用字体文件或内嵌字体, 请改用axisfile选项。
- font
指定Fontconfig模式。优先级低于fontfile。用于模式中的
:
可被替换为|
以避免不必要的转义。- fontcolor
指定字体颜色表达式。这是一个算术表达式,应返回整数值0xRRGGBB。 它可以包含变量:
- frequency, freq, f
评估的位置的频率
- timeclamp, tc
值timeclamp选项
以及函数:
- midi(f)
频率f的MIDI编号,一些MIDI编号示例:E0(16)、C1(24)、C2(36)、A4(69)
- r(x), g(x), b(x)
强度x的红色、绿色和蓝色值。
默认值为
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
指定用于绘制轴的图像文件。 此选项会覆盖fontfile和fontcolor选项。
- axis, text
启用/禁用绘制文本到轴。如果设置为
0
,绘制轴的功能将被禁用,并忽略fontfile和axisfile选项。 默认值为1
.- csp
设置色彩空间。接受的值有:
- ‘unspecified’
未指定(默认)
- ‘bt709’
BT.709
- ‘fcc’
FCC
- ‘bt470bg’
BT.470BG或BT.601-6 625
- ‘smpte170m’
SMPTE-170M或BT.601-6 525
- ‘smpte240m’
SMPTE-240M
- ‘bt2020ncl’
BT.2020(非恒定亮度)
- cscheme
设置频谱图颜色方案。这是一个浮点值列表,格式为
left_r|left_g|left_b|right_r|right_g|right_b
。 默认值为1|0.5|0|0|0.5|1
.
18.22.1 示例
- 在播放音频的同时显示频谱:
ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt [out0]'
- 与上面相同,但帧率为30fps:
ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt=fps=30:count=5 [out0]'
- 以1280x720播放:
ffplay -f lavfi 'amovie=a.mp3, asplit [a][out1]; [a] showcqt=s=1280x720:count=4 [out0]'
- 禁用声谱图显示:
sono_h=0
- A1及其谐波:A1,A2,(接近)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]'
- 与上面相同,但在频率域上更精确:
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]'
- 自定义音量:
bar_v=10:sono_v=bar_v*a_weighting(f)
- 自定义伽玛值,现在频谱对振幅是线性的。
bar_g=2:sono_g=2
- 自定义tlength方程:
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)))'
- 自定义字体颜色和字体文件,C音符为绿色,其余为蓝色:
fontcolor='if(mod(floor(midi(f)+0.5),12), 0x0000FF, g(1))':fontfile=myfont.ttf
- 使用Fontconfig自定义字体:
font='Courier New,Monospace,mono|bold'
- 具有自定义频率范围和通过图像文件自定义轴:
axisfile=myaxis.png:basefreq=40:endfreq=10000
18.23 showcwt
将输入音频转换为表示频率频谱的视频输出,使用连续小波变换和Morlet小波。
过滤器接受以下选项:
- size, s
指定输出的视频大小。有关此选项的语法,请查看(ffmpeg-utils) ffmpeg-utils用手册中的“视频大小”部分。 默认值为
640x512
.- rate, r
设置输出帧率。默认值为
25
.- scale
设置使用的频率比例。允许值为:
- linear
- log
- bark
- mel
- erbs
- sqrt
- cbrt
- qdrt
- fm
默认值为
linear
.- iscale
设置使用的强度比例。允许值为:
- linear
- log
- sqrt
- cbrt
- qdrt
默认值为
log
.- min
设置将用于输出的最小频率。 默认值为
20
Hz。- max
设置输出中将使用的最大频率。 默认值为
20000
Hz。 实际频率的上限依赖于输入音频的采样率,并将在此值大于奈奎斯特频率时进行强制。- imin
设置输出中将使用的最小强度。
- imax
设置输出中将使用的最大强度。
- logb
设置亮度强度的对数基准,当将计算的幅值映射到像素值时。 允许范围是从
0
到1
。 默认值为0.0001
.- deviation
设置频率偏差。 值低于
1
更注重频率,而高于1
时更关注时间。 允许范围是从0
到10
。 默认值为1
.- pps
设置每秒每行输出的像素数。 允许范围是从
1
到1024
。 默认值为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
.
18.24 showfreqs
将输入音频转换为表示音频功率频谱的视频输出。 音频振幅位于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
设置处리音频时使用的通道。默认情况下,全部通道都会被处理。
18.25 showspatial
将立体声输入音频转换为视频输出,表示两个通道之间的空间关系。
此过滤器接受以下选项:
- size, s
指定输出的视频大小。有关此选项的语法,请查看(ffmpeg-utils) ffmpeg-utils用手册中的“视频大小”部分。 默认值为
512x512
.- win_size
设置窗口大小。允许范围是从1024到65536。默认大小是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
设置输出帧率。
18.26 showspectrum
将输入音频转换为频谱表示的输出视频。
此过滤器接受以下选项:
- 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’
每个通道使用Viridis颜色方案显示
- ‘plasma’
每个通道使用Plasma颜色方案显示
- ‘cividis’
每个通道使用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
设置时间与频率轴的方向。可以是
vertical
或horizontal
。默认值是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过滤器非常相似;请参阅该部分的示例。
18.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]'
18.27 showspectrumpic
将输入音频转换为单个视频帧,表示音频频率谱。
该过滤器接受以下选项:
- size, s
指定输出的视频大小。有关此选项的语法,请查看(ffmpeg-utils)“视频大小”部分中的ffmpeg-utils手册。 默认值是
4096x2048
.- mode
指定显示模式。
它接受以下值:
- ‘combined’
所有通道显示在同一行中
- ‘separate’
所有通道分别显示在独立的行中
默认值是‘combined’.
- color
指定显示的颜色模式。
它接受以下值:
- ‘channel’
每个通道以独立颜色显示
- ‘intensity’
每个通道使用相同的颜色方案显示
- ‘rainbow’
每个通道使用彩虹颜色方案显示
- ‘moreland’
每个通道使用moreland颜色方案显示
- ‘nebulae’
每个通道使用nebulae颜色方案显示
- ‘fire’
每个通道使用fire颜色方案显示
- ‘fiery’
每个通道使用fiery颜色方案显示
- ‘fruit’
每个通道使用fruit颜色方案显示
- ‘cool’
每个通道使用cool颜色方案显示
- ‘magma’
每个通道使用magma颜色方案显示
- ‘green’
每个通道使用green颜色方案显示
- ‘viridis’
每个通道使用viridis颜色方案显示
- ‘plasma’
每个通道使用plasma颜色方案显示
- ‘cividis’
每个通道使用cividis颜色方案显示
- ‘terrain’
每个通道使用terrain颜色方案显示
默认值是‘intensity’.
- scale
指定用于计算强度颜色值的缩放比例。
它接受以下值:
- ‘lin’
线性
- ‘sqrt’
平方根,默认
- ‘cbrt’
立方根
- ‘log’
对数
- ‘4thrt’
4次方根
- ‘5thrt’
5次方根
默认值是‘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
设置时间与频率轴的方向。可以是
vertical
或horizontal
。默认值是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分量的像素格式输出时,设置不透明度强度。
18.27.1 示例
- 提取整个音轨的音频频谱
到一个1024x1024的图像中,使用
ffmpeg
:ffmpeg -i audio.flac -lavfi showspectrumpic=s=1024x1024 spectrogram.png
18.28 showvolume
将输入音频音量转换为视频输出。
该过滤器接受以下选项:
- 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
或rms:r
, 默认是p
.- ds
设置显示比例,可以是线性:
lin
或对数:log
, 默认是lin
.- dm
以秒为单位。 如果设置为> 0,则为上一秒的最大级别显示一条线。 默认禁用值:
0.
- dmc
最大线的颜色。当
dm
选项设置为> 0时使用。 默认值是:orange
18.29 showwaves
将输入音频转换为表示采样波形的视频输出。
该过滤器接受以下选项:
- size, s
指定输出的视频大小。有关此选项的语法,请查看(ffmpeg-utils)“视频大小”部分中的ffmpeg-utils手册。 默认值是
600x240
.- mode
设置显示模式。
可用值是:
- ‘point’
为每个采样点绘制一个点。
- ‘line’
为每个采样点绘制一条垂直线。
- ‘p2p’
为每个采样绘制一个点并在它们之间绘制一根线。
- ‘cline’
为每个采样绘制一个居中的垂直线。
默认值是
point
.- n
设置在同一列上打印的样本数量。 更大的值会降低帧率。必须是正整数。此选项只能在未明确指定值时设置速率。
- rate, r
设置(近似)输出帧率。这可以通过设置选项来实现n。默认值是“25”。
- split_channels
设置是否将通道分开绘制或重叠。默认值是0。
- colors
设置以’|’分隔的颜色,这些颜色将用于绘制每个通道。
- scale
设置振幅比例。
可用值是:
- ‘lin’
线性。
- ‘log’
对数。
- ‘sqrt’
平方根。
- ‘cbrt’
立方根。
默认是线性的。
- draw
设置绘图模式。这主要用于为高设置n.
可用值是:
- ‘scale’
为每个绘制的样本缩放像素值。
- ‘full’
直接绘制每个样本。
默认值是
scale
.
18.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]
18.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
.
18.30.1 示例
- 提取整个音轨的波形通道拆分表示到一个1024x800的图像中,使用
ffmpeg
:ffmpeg -i audio.flac -lavfi showwavespic=split_channels=1:s=1024x800 waveform.png
18.31 sidedata,asidedata
删除帧旁数据,或基于旁数据选择帧。
该过滤器可以接受以下选项:
- mode
设置过滤器的操作模式。
可以是以下之一:
- ‘select’
选择每个具有旁数据的帧
type
.- ‘delete’
删除旁数据为
type
。如果type
未设置,删除帧中的所有旁数据。
- type
设置所有模式使用的旁数据类型。必须为
select
模式设置。 有关帧旁数据类型的列表,请参考AVFrameSideDataType
枚举 中的libavutil/frame.h。例如,要选择AV_FRAME_DATA_PANSCAN
旁数据,你必须指定PANSCAN
.
18.32 spectrumsynth
从两个输入视频频谱合成音频,第一个输入流表示跨时间的幅度,第二个表示跨时间的相位。 该过滤器将把显示在视频中的频率域重新转换为以音频输出形式呈现的时间域。
此过滤器主要用于反转处理后的showspectrum过滤器输出,但也可以从其他声谱图中合成声音。
但在这种情况下,如果没有相位数据可用,结果会很差,因为在这种情况下需要从随机噪声重新创建相位数据。
为了获得最佳结果,请使用灰度输出(channel
在showspectrum过滤器中使用的颜色模式)和log
用于幅度视频的缩放比例以及lin
用于相位视频的缩放比例。
对于第二个视频的相位,可以使用data
选项。
输入视频通常应该使用fullframe
滑动模式,因为这可以节省解码视频所需的资源。
该过滤器接受以下选项:
- sample_rate
指定输出音频的采样率,与生成频谱的音频可能有所不同。
- channels
设置输入视频频谱所表示的通道数量。
- scale
设置生成幅度输入频谱时使用的比例。 可以是
lin
或log
。默认值是log
.- slide
设置生成输入频谱时使用的滑动类型。 可以是
replace
,scroll
,fullframe
或rscroll
。 默认值是fullframe
.- win_func
设置用于重新合成的窗函数。
- overlap
设置窗重叠范围。在
[0, 1]
范围内。 默认值是1
, 这意味着会选择选择的窗函数的最佳重叠。- orientation
设置输入视频的方向。可以是
vertical
或horizontal
。 默认值是vertical
.
18.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
18.33 split,asplit
将输入分割为多个相同的输出。
asplit
用于音频输入,split
用于视频。
该过滤器接受一个参数,指定输出数量。如果未指定,则默认为2。
18.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];
- 创建5个输入音频的副本并
ffmpeg
:ffmpeg -i INPUT -filter_complex asplit=5 OUTPUT
18.34 zmq, azmq
通过libzmq客户端发送命令,并将其转发到滤镜图中的滤镜。
zmq
和azmq
作为透传滤镜工作。zmq
必须插入在两个视频滤镜之间,azmq
在两个音频滤镜之间。两者都能够向任何滤镜类型发送消息。
要启用这些滤镜,你需要安装libzmq库和头文件,并使用以下配置FFmpeg--enable-libzmq
.
有关libzmq的更多信息,请参阅:http://www.zeromq.org/
该zmq
和azmq
滤镜作为libzmq服务器工作,接收通过网络接口发送的消息,并由bind_address(或缩写"b")选项定义。
此选项的默认值是tcp://localhost:5555。你可以根据需要更改此值,但不要忘记转义任何‘:’符号(请参阅滤镜图转义).
收到的消息必须采用以下格式:
目标 命令 [参数]
目标指定命令的目标,通常是滤镜类的名称或特定的滤镜实例名称。默认的滤镜实例名称使用模式‘Parsed_<filter_name>_<index>’,但你可以通过使用‘filter_name@id’语法覆盖此名称(参见滤镜图语法).
命令指定目标滤镜的命令名称。
参数是可选的,用于指定给定命令.
的可选参数列表。 消息接收后会被处理,并将相应的命令注入到滤镜图中。根据结果,滤镜会向客户端发送一个回复,采用以下格式:
错误代码 错误原因 消息
消息是可选的。
18.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
19 多媒体源
以下是当前可用的多媒体源的描述。
19.1 amovie
这与movie源相同,只是默认选择音频流。
19.2 avsynctest
生成一个音频/视频同步测试。
生成的流会周期性地显示闪光视频帧并发出音频中的哔声。 有助于检查A/V同步问题。
它接受以下选项:
- 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
设置前景色/背景色/附加颜色。
19.2.1 命令
此源支持某些上文的选项作为命令.
19.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
为打开的文件指定格式选项。格式选项可以作为一个键=值对的列表,用‘:’分隔。以下示例显示如何添加protocol_whitelist和protocol_blacklist选项:
ffplay -f lavfi "movie=filename='1.sdp':format_opts='protocol_whitelist=file,rtp,udp\:protocol_blacklist=http'"
它允许将第二个视频叠加在滤镜图的主要输入上,如下图所示:
input -----------> deltapts0 --> overlay --> output ^ | movie --> scale--> deltapts1 -------+
19.3.1 示例
- 从in.avi 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读取第一视频流和0x81标识的音频流;视频连接到名为"video"的插座,音频连接到名为"audio"的插座:
movie=dvd.vob:s=v:0+#0x81 [video] [audio]
19.3.2 命令
movie和amovie都支持以下命令:
- seek
使用"av_seek_frame"执行搜索。 语法为:search流索引|时间戳|标志
- 流索引:如果流索引为-1,则选择默认流,并时间戳会自动从AV_TIME_BASE单位转换为流特定的time_base。
- 时间戳:时间戳,以AVStream.time_base单位或(如果未指定流)以AV_TIME_BASE单位。
- 标志:选择方向和搜索模式的标志。
- get_duration
获取电影时长,以AV_TIME_BASE单位。
20 参见
ffmpeg, ffplay, ffprobe, libavfilter
21 作者
FFmpeg开发者。
关于作者的详细信息,请查阅项目的Git历史
(https://git.ffmpeg.org/ffmpeg),例如,输入命令git log
在FFmpeg源代码目录中,或浏览在线存储库https://git.ffmpeg.org/ffmpeg.
特定组件的维护者列在源代码树中的文件MAINTAINERS中。
本文档使用以下工具生成makeinfo.
托管服务由telepoint.bg提供