FFplay文档解读-50-多媒体过滤器四
前言
Github
地址:Github
简书地址:简书
专辑地址:FFplay专辑
32.21 showspectrumpic
将输入音频转换为单个视频帧,表示音频频谱。
过滤器接受以下选项:
size,s
指定输出的视频大小。 有关此选项的语法,请查阅(ffmpeg-utils)视频大小语法
。 默认值为4096x2048
。
mode
指定显示模式。
它接受以下值:
值 | 解释 |
---|---|
combined | 所有通道都显示在同一行中 |
separate | 所有通道都显示在单独的行中 |
默认值是:‘combined’
。
color
指定显示颜色模式。
它接受以下值:
值 | 解释 |
---|---|
channel | 每个通道都以单独的颜色显示 |
intensity | 每个通道使用相同的颜色方案显示 |
rainbow | 使用彩虹配色方案显示每个通道 |
moreland | 每个通道都使用更多的颜色方案显示 |
nebulae | 使用星云颜色方案显示每个通道 |
fire | 使用火焰色方案显示每个通道 |
fiery | 每个通道都使用火热的配色方案显示 |
fruit | 使用水果配色方案显示每个通道 |
cool | 每个通道都使用炫酷的配色方案显示 |
默认值是:‘intensity’
。
scale
指定用于计算强度颜色值的比例。
它接受以下值:
值 | 解释 |
---|---|
lin | 线性 |
sqrt | 平方根,默认 |
cbrt | 立方根 |
log | 对数的 |
4thrt | 第4 root
|
5thrt | 第5 root
|
默认值是:log
。
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
设置时间与频率轴的方向。 可以是垂直的或水平的。 默认为垂直。
gain
设置用于计算强度颜色值的比例增益。 默认值为1
。
legend
绘制时间和频率轴和图例。 默认值已启用。
rotation
设置颜色旋转,必须在[-1.0,1.0]
范围内。 默认值为0
。
32.21.1 示例
-
使用
ffmpeg
提取1024x1024
图像中整个音轨的音频频谱图。ffmpeg -i audio.flac -lavfi showspectrumpic=s=1024x1024 spectrogram.png
32.22 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:log
,默认是lin
。
dm
第二。 如果设置为> 0
。则显示前一秒中最大级别的行。 默认为禁用:0
。
dmc
最大线的颜色。 当dm
选项设置为> 0
时使用。默认值为:orange
。
32.23 showwaves
将输入音频转换为视频输出,表示样本波。
过滤器接受以下选项:
size,s
指定输出的视频大小。 有关此选项的语法,请查阅(ffmpeg-utils)视频大小语法
。 默认值为600x240
。
mode
设置显示模式。
可用值如下所示:
值 | 解释 |
---|---|
point | 为每个样本画一个点 |
line | 为每个样本绘制一条垂直线 |
p2p | 为每个样本绘制一个点,并在它们之间画一条线 |
cline | 为每个样本绘制一条居中的垂直线 |
默认值是:point
。
n
设置在同一列上打印的样本数。 值越大,帧速率越低。 必须是正整数。 仅当未明确指定rate
的值时,才能设置此选项。
rate,r
设置(近似)输出帧速率。 这可以通过设置选项n来完成。 默认值为25
。
split_channels
设置是否应单独绘制通道或重叠通道。 默认值为0
。
colors
设置以|
分隔的颜色,这些颜色将用于绘制每个通道。
scale
设置幅度标度。
可用值如下所示:
值 | 解释 |
---|---|
lin | 线性 |
log | 对数 |
sqrt | 平方根 |
cbrt | 立方根 |
默认值是:linear
。
draw
设置绘图模式。 这对于设置高n
非常有用。
可用值如下所示:
值 | 解释 |
---|---|
scale | 缩放每个绘制样本的像素值 |
full | 直接绘制每个样本 |
默认值是:scale
。
32.23.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]
32.24 showwavespic
将输入音频转换为单个视频帧,表示样本波。
过滤器接受以下选项:
size,s
指定输出的视频大小。 有关此选项的语法,请查阅(ffmpeg-utils)视频大小语法
。 默认值为600x240
。
split_channels
设置是否应单独绘制通道或重叠通道。 默认值为0
。
colors
设置以|
分隔的颜色,这些颜色将用于绘制每个通道。
scale
设置幅度标度。
可用值如下所示:
值 | 解释 |
---|---|
lin | 线性 |
log | 对数 |
sqrt | 平方根 |
cbrt | 立方根 |
默认值是:linear
。
32.24.1 示例
-
使用
ffmpeg
在1024x800
图片中提取整个音轨的波形的通道分割表示:ffmpeg -i audio.flac -lavfi showwavespic=split_channels=1:s=1024x800 waveform.png
32.25 sidedata, asidedata
删除帧边数据,或根据它选择帧。
此过滤器接受以下选项:
mode
设置过滤器的操作模式。
可用的值如下所示:
值 | 解释 |
---|---|
select | 选择具有类型的边数据的每个帧 |
delete | 删除类型的边数据。 如果未设置type ,则删除框架中的所有边数据 |
type
设置所有模式使用的边数据类型。 必须设置为选择模式。 有关帧边数据类型的列表,请参阅'libavutil / frame.h'
中的AVFrameSideDataType
枚举。 例如,要选择AV_FRAME_DATA_PANSCAN
边数据,必须指定PANSCAN
。
32.26 spectrumsynth
从2
个输入视频频谱中合成音频,第一个输入流表示跨时间的幅度,第二个表示跨时间的相位。滤波器将从视频中显示的频域转换回音频输出中显示的时域。
此滤波器主要用于反转已处理的showpectrum
滤波器输出,但也可以合成其他频谱图的声音。但是在这种情况下,如果相位数据不可用,结果将会很差,因为在这种情况下需要重新创建相位数据,通常只是从随机噪声中重新创建。为获得最佳效果,请使用仅灰色输出(显示光谱滤镜中的通道颜色模式)和对数视频的对数比例和相位视频的lin
比例。要为第二个视频制作相位,请使用数据选项。输入视频通常应使用全帧幻灯片模式,因为这样可以节省解码视频所需的资源。
过滤器接受以下选项:
sample_rate
指定输出音频的采样率,生成频谱的音频采样率可能不同。
channels
设置输入视频频谱中表示的频道数。
scale
设置在生成幅度输入频谱时使用的比例。可以lin
或log
。默认为log
。
slide
设置生成输入光谱时使用的幻灯片。可以是replace
,scroll
,fullframe
或rscroll
。默认为fullframe
。
win_func
设置用于再合成的窗口函数。
overlap
设置窗口重叠。在[0,1]
范围内。默认值为1
,表示将选择所选窗口函数的最佳重叠。
orientation
设置输入视频的方向。可以是垂直的或水平的。默认为垂直。
32.26.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
32.27 split, asplit
将输入分成几个相同的输出。
asplit
适用于音频输入,与视频分开。
过滤器接受一个指定输出数量的参数。 如果未指定,则默认为2
。
32.27.1 示例
-
从同一输入创建两个单独的输出:
[in] split [out0][out1]
-
要创建
3
个或更多输出,需要指定输出数量,如:[in] asplit=3 [out0][out1][out2]
-
从同一输入创建两个单独的输出,一个裁剪,一个填充:
[in] split [splitout1][splitout2]; [splitout1] crop=100:100:0:0 [cropout]; [splitout2] pad=200:200:100:100 [padout];
-
使用
ffmpeg
创建5
个输入音频副本:ffmpeg -i INPUT -filter_complex asplit=5 OUTPUT
32.28 zmq, azmq
接收通过libzmq
客户端发送的命令,并将它们转发到filtergraph
中的过滤器。
zmq
和azmq
用作传递过滤器。必须在两个视频滤波器之间插入zmq
,两个音频滤波器之间的azmq
。两者都能够向任何过滤器类型发送消息。
要启用这些过滤器,需要安装libzmq
库和标头,并使用--enable-libzmq
配置FFmpeg
。
有关libzmq
的更多信息,请访问:http://www.zeromq.org/
zmq
和azmq
过滤器用作libzmq
服务器,它接收通过'bind_address'
(或缩写'b'
)选项定义的网络接口发送的消息。该选项的默认值为'tcp:// localhost:5555'
。可能希望根据需要更改此值,但不要忘记转义任何:
符号(请参阅filtergraph
转义)。
收到的消息必须采用以下格式:
TARGET COMMAND [ARG]
TARGET
指定命令的目标,通常是过滤器类的名称或特定的过滤器实例名称。默认筛选器实例名称使用模式Parsed_ <filter_name> _ <index>
,但您可以使用filter_name @ id
语法覆盖它(请参阅Filtergraph语法
)。
COMMAND
指定目标过滤器的命令名称。
ARG
是可选的,它指定给定COMMAND
的可选参数列表。
在接收时,处理该消息并将相应的命令注入到过滤器图中。根据结果,过滤器将向客户端发送回复,采用以下格式:
ERROR_CODE ERROR_REASON
MESSAGE
MESSAGE
是可选的。
32.28.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