FFPlay专辑

FFplay文档解读-49-多媒体过滤器三

2018-11-16  本文已影响22人  张芳涛

前言

Github地址:Github
简书地址:简书
专辑地址:FFplay专辑

32.14 sendcmd, asendcmd

将命令发送到filtergraph中的过滤器。

这些过滤器读取要发送到filtergraph中其他过滤器的命令。

必须在两个视频滤镜之间插入sendcmd,必须在两个音频滤镜之间插入asendcmd,但除此之外,它们的行为方式相同。

可以使用commands选项在filter参数中提供命令规范,也可以在filename选项指定的文件中提供命令规范。

这些过滤器接受以下选项:

commands, c

设置要读取的命令并将其发送到其他过滤器。

filename,f

设置要读取的命令的文件名并将其发送到其他过滤器。

32.14.1 命令语法

命令描述由一系列间隔规范组成,包括当与该间隔相关的特定事件发生时要执行的命令列表。 发生的事件通常是进入或离开给定时间间隔的当前帧时间。

间隔由以下语法指定:

START[-END] COMMANDS;

时间间隔由STARTEND时间指定。 END是可选的,默认为最长时间。

如果当前帧时间包含在间隔[START,END]中,即当时间大于或等于START且小于END时,则认为当前帧时间在指定的时间间隔内。

命令由一个或多个命令规范的序列组成,由","分隔,与该间隔有关。 命令规范的语法由下式给出:

[FLAGS] TARGET COMMAND ARG

FLAGS是可选的,它指定与发送指定命令的时间间隔相关的事件类型,并且必须是由"+""|"分隔的非空序列标识符标志。 并包含在"["and"]"之间。

识别以下标志:

标志 解释
enter 当前帧时间戳进入指定的时间间隔时发送该命令。 换句话说,当前一帧时间戳不在给定的时间间隔内时,发送命令,并且当前是
leave 当前帧时间戳离开指定的时间间隔时发送该命令。 换句话说,当前一帧时间戳在给定间隔内时发送命令,而当前帧时间戳不在给定间隔内

如果未指定FLAGS,则假定为[enter]的默认值。

TARGET指定命令的目标,通常是过滤器类的名称或特定的过滤器实例名称。

COMMAND指定目标过滤器的命令名称。

ARG是可选的,它指定给定COMMAND的可选参数列表。

在一个间隔规范和另一个间隔规范之间,空格或以#开头直到行尾的字符序列将被忽略,并可用于注释注释。

命令规范语法的简化BNF描述如下:

COMMAND_FLAG  ::= "enter" | "leave"
COMMAND_FLAGS ::= COMMAND_FLAG [(+|"|")COMMAND_FLAG]
COMMAND       ::= ["[" COMMAND_FLAGS "]"] TARGET COMMAND [ARG]
COMMANDS      ::= COMMAND [,COMMANDS]
INTERVAL      ::= START[-END] COMMANDS
INTERVALS     ::= INTERVAL[;INTERVALS]

32.14.2 示例

允许读取和处理存储在文件'test.cmd'中的上述命令列表的过滤器图可以用以下内容指定:

sendcmd=f=test.cmd,drawtext=fontfile=FreeSerif.ttf:text='',hue

32.15 setpts, asetpts

更改输入帧的PTS(演示时间戳)。

setpts适用于视频帧,音频帧上的设置。

此过滤器接受以下选项:

expr

为每个帧计算的表达式,以构造其时间戳。

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

FRAME_RATE

帧速率,仅针对恒定帧速率视频定义

PTS

输入中的演示文稿时间戳

N

视频输入帧的计数或消耗的采样数,不包括音频的当前帧,从0开始。

NB_CONSUMED_SAMPLES

消耗的样本数量,不包括当前帧(仅限音频)

NB_SAMPLES,S

当前帧中的样本数(仅限音频)

SAMPLE_RATE,SR

音频采样率。

STARTPTS

第一帧的PTS

STARTT

第一帧的秒数

INTERLACED

说明当前帧是否是隔行扫描。

T

当前帧的秒数

POS

帧的文件中的原始位置,如果当前帧未定义,则为未定义

PREV_INPTS

之前的输入PTS

PREV_INT

以秒为单位的上一次输入

PREV_OUTPTS

以前的输出PTS

PREV_OUTT

以秒为单位的前一输出时间

RTCTIME

wallclockRTC)时间,以微秒为单位。这是不推荐使用的,而是使用时间(0)。

RTCSTART

电影开始时的wallclockRTC)时间,以微秒为单位。

TB

输入时间戳的时基。

32.15.1 示例

32.16 setrange

强制输出视频帧的颜色范围。

setrange过滤器标记输出帧的颜色范围属性。 它不会更改输入框架,但只会设置相应的属性,这会影响后续过滤器对框架的处理方式。

过滤器接受以下选项:

range

可用值如下:

解释
unspecified, unknown 将颜色范围设置为未指定
limited, tv, mpeg 将颜色范围设置为有限
full, pc, jpeg 将颜色范围设置为已满

32.17 settb, asettb

设置用于输出帧时间戳的时基。 它主要用于测试时基配置。

它接受以下参数:

expr,tb

表达式,计算到输出时基。

'tb'的值是表示理性的算术表达式。 表达式可以包含常量AVTB(默认时基),intb(输入时基)和sr(采样率,仅音频)。 默认值为intb

32.17.1 示例

32.18 showcqt

使用具有直接频域系数计算的Brown-Puckette常数Q变换算法将输入音频转换为表示频谱的视频输出(但变换本身不是真正的常数Q,而Q因子实际上是variable/clamped(可变/钳位)的),具有音调比例,从E0D#10

过滤器接受以下选项:

size,s

指定输出的视频大小。它必须是均匀的。有关此选项的语法,请参阅(ffmpeg-utils)视频大小语法。默认值为1920x1080

fps,rate,r

设置输出帧速率。默认值为25

bar_h

设置条形图高度。它必须是均匀的。默认值为-1,自动计算条形图高度。

axis_h

设置轴高度。它必须是均匀的。默认值为-1,它自动计算轴高度。

sono_h

设置声像图高度。它必须是均匀的。默认值为-1,自动计算声谱图高度。

fullhd

设置fullhd分辨率。不推荐使用此选项,而是使用size。默认值为1

sono_v, volume

指定超声波体积表达式。它可以包含如下的变量:

变量 解释
bar_v bar_v评估了表达式
frequency, freq, f 评估的频率
timeclamp, tc timeclamp选项的值

和如下所示的功能:

功能 解释
a_weighting(f) 等于响度的A-weighting
b_weighting(f) 等于响度B-weighting
c_weighting(f) 等于响度C-weighting

默认值是:16

bar_v, volume2

指定条形图卷表达式。 它可以包含如下变量:

变量 解释
sono_v sono_v评估表达式
frequency, freq, f 评估的频率
timeclamp, tc timeclamp选项的值

和如下功能:

功能 解释
a_weighting(f) 等于响度的A-weighting
b_weighting(f) 等于响度B-weighting
c_weighting(f) 等于响度C-weighting

默认值是:sono_v

sono_g, gamma

指定超声波伽玛。 较低的伽玛使光谱对比度更高,更高的伽玛使光谱具有更大的范围。 默认值为3。可接受范围为[1,7]

bar_g,gamma2

指定条形图伽玛。默认值为1。可接受的范围是[1,7]

bar_t

指定条形图透明度级别。较低的值使条形图更清晰。默认值为1。可接受的范围是[0,1]

timeclamp,tc

指定转换timeclamp。在低频率下,在时域精度和频域精度之间存在折衷。如果timeclamp较低,则更准确地表示时域中的事件(例如快速低音鼓),否则更准确地表示频域中的事件(例如低音吉他)。可接受的范围是[0.002,1]。默认值为0.17

attack

以秒为单位设置攻击时间。默认值为0(禁用)。否则,它通过在时域中应用非对称窗口来限制未来样本,在需要低延迟时非常有用。可接受的范围是[0,1]

basefreq

指定变换基频。默认值为20.01523126408007475,比E050 cents。可接受的范围是[10,100000]

endfreq

指定变换结束频率。默认值为20495.59681441799654,频率比D#1050 cents。可接受的范围是[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的字体文件以绘制轴。 如果未指定,请使用嵌入字体。 请注意,使用自定义basefreqendfreq不会使用字体文件或嵌入字体绘制,而是使用axisfile选项。

font

指定fontconfig模式。 它的优先级低于fontfile:在模式中可以用|替换 避免不必要的逃避。

fontcolor

指定字体颜色表达式。 这是算术表达式,应该返回整数值0xRRGGBB。 它可以包含如下变量:

变量 解释
frequency, freq, f 评估的频率
timeclamp, tc timeclamp选项的值

和如下功能:

功能 解释
midi(f) midi频率f,一些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

指定图像文件以绘制轴。 此选项会覆盖fontfilefontcolor选项。

axis, text

启用/禁用绘图文本到轴。 如果设置为0,则禁用绘制到轴,忽略fontfileaxisfile选项。 默认值为1

csp

设置颜色空间。 接受的值如下所示:

解释
unspecified 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

32.18.1 示例

32.19 showfreqs

将输入音频转换为表示音频功率谱的视频输出。 音频幅度在Y轴上,而频率在X轴上。

过滤器接受以下选项:

size, s

指定视频大小。 有关此选项的语法,请查阅(ffmpeg-utils)视频大小语法。 默认值为1024x512

mode

设置显示模式。 这设置了每个频率仓的表示方式。

它接受以下值:

line
bar
dot

默认值是:bar

ascale

设置幅度标度。

它接受以下值:

解释
lin 线性刻度
sqrt 平方根尺度
cbrt 立方根尺度
log 对数刻度

默认值是:log

fscale

设定频率刻度。

它接受以下值:

解释
lin 线性刻度
log 对数刻度
rlog 反向对数刻度

默认值是:lin

win_size

设置窗口大小。

它接受以下值:

w16
w32
w64
w128
w256
w512
w1024
w2048
w4096
w8192
w16384
w32768
w65536

默认值是:w2048

win_func

设置窗口功能。

它接受以下值:

rect
bartlett
hanning
hamming
blackman
welch
flattop
bharris
bnuttall
bhann
sine
nuttall
lanczos
gauss
tukey
dolph
cauchy
parzen
poisson

默认值是:hanning

overlap

设置窗口重叠。 在[0,1]范围内。 默认值为1,表示将选择所选窗口函数的最佳重叠。

averaging

设定时间平均值。 将其设置为0将显示当前的最大峰值。 默认值为1,表示禁用时间平均。

colors

指定由空格或|分隔的颜色列表,用于绘制通道频率。 未识别或缺失的颜色将被白色替换。

cmode

设置频道显示模式。

它接受以下值:

combined
separate

默认值是:combined

minamp

设置log(对数)幅度定标器中使用的最小幅度。

32.20 showspectrum

将输入音频转换为视频输出,表示音频频谱。

过滤器接受以下选项:

size,s

指定输出的视频大小。 有关此选项的语法,请查阅(ffmpeg-utils)视频大小语法。 默认值为640x512

slide

指定光谱应如何沿窗口滑动。

它接受以下值:

解释
replace 当样品到达右侧时,样品再次从左侧开始
scroll 样本从右向左滚动
fullframe 帧仅在样本到达右侧时生成
rscroll 样本从左向右滚动

默认值是:replace

mode

指定显示模式。

它接受以下值:

解释
combined 所有通道都显示在同一行中
separate 所有通道都显示在单独的行中

默认值是:‘combined’

color

指定显示颜色模式。

它接受以下值:

解释
channel 每个通道都以单独的颜色显示
intensity 每个通道使用相同的颜色方案显示
rainbow 使用彩虹配色方案显示每个通道
moreland 每个通道都使用更多的颜色方案显示
nebulae 使用星云颜色方案显示每个通道
fire 使用火色方案显示每个通道
fiery 每个通道都使用火热的配色方案显示
fruit 使用水果配色方案显示每个通道
cool 每个通道都使用炫酷的配色方案显示

默认值是:‘channel’

scale

指定用于计算强度颜色值的比例。

它接受以下值:

解释
lin 线性
sqrt 平方根,默认
cbrt 立方根
log 对数的
4thrt 第4根
5thrt 第5根

默认值是:‘sqrt’

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

默认值是:hann

orientation

设置时间与频率轴的方向。 可以是vertical(垂直)的或horizontal(水平)的。 默认为vertical(垂直)。

overlap

设置重叠窗口的比例。 默认值为0。当值为1时,将重叠设置为当前使用的特定窗口功能的建议大小。

gain

设置用于计算强度颜色值的比例增益。 默认值为1

data

设置要显示的数据。 可以是幅度,默认或阶段。

rotation

设置颜色旋转,必须在[-1.0,1.0]范围内。 默认值为0

用法与showwaves过滤器非常相似; 请参阅该部分中的示例。

32.20.1 示例

上一篇 下一篇

猜你喜欢

热点阅读