美文网首页FFPlay专辑
FFplay文档解读-50-多媒体过滤器四

FFplay文档解读-50-多媒体过滤器四

作者: 张芳涛 | 来源:发表于2018-11-16 10:38 被阅读15次

    前言

    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
    

    相关文章

      网友评论

        本文标题:FFplay文档解读-50-多媒体过滤器四

        本文链接:https://www.haomeiwen.com/subject/hbipfqtx.html