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

设置测光模式,可以是峰值:prms:r,默认为p

ds

设置显示比例,可以是线性的:linlog: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 示例

  • 使用ffmpeg1024x800图片中提取整个音轨的波形的通道分割表示:

      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

设置在生成幅度输入频谱时使用的比例。可以linlog。默认为log

slide

设置生成输入光谱时使用的幻灯片。可以是replacescrollfullframerscroll。默认为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中的过滤器。

zmqazmq用作传递过滤器。必须在两个视频滤波器之间插入zmq,两个音频滤波器之间的azmq。两者都能够向任何过滤器类型发送消息。

要启用这些过滤器,需要安装libzmq库和标头,并使用--enable-libzmq配置FFmpeg

有关libzmq的更多信息,请访问:http://www.zeromq.org/

zmqazmq过滤器用作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
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 156,907评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,546评论 1 289
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 106,705评论 0 238
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,624评论 0 203
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 51,940评论 3 285
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,371评论 1 210
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,672评论 2 310
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,396评论 0 195
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,069评论 1 238
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,350评论 2 242
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,876评论 1 256
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,243评论 2 251
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,847评论 3 231
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,004评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,755评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,378评论 2 269
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,266评论 2 259

推荐阅读更多精彩内容