美文网首页FFPlay专辑
FFplay文档解读-37-视频过滤器十二

FFplay文档解读-37-视频过滤器十二

作者: 张芳涛 | 来源:发表于2018-11-15 18:01 被阅读12次

    前言

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

    29.110 nnedi

    使用神经网络边缘定向插值去隔行视频。

    此过滤器接受以下选项:

    weights
    

    强制选项,没有二进制文件过滤器无法正常工作。 目前的文件可以在这里找到:https://github.com/dubhater/vapoursynth-nnedi3/blob/master/src/nnedi3_weights.bin

    deint
    

    设置哪些帧去隔行,默认情况下全部。 可以是全部也可以是隔行扫描。

    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 训练的重量使绝对误差最小化
    s 训练的权重以最小化平方误差
    pscrn
    

    控制是否使用预筛选神经网络来决定哪些像素应由预测神经网络处理,哪些像素可以通过简单的三次插值来处理。 训练预校正器以知道三次插值对于像素是否足够或者是否应该由预测器nn预测。 预筛选器nn的计算复杂度远小于预测器nn的计算复杂度。 由于大多数像素可以通过三次插值来处理,因此使用预筛选通常会导致更快的处理。prescreener非常准确,因此使用它和不使用它之间的区别几乎总是不明显。

    可以是以下结果:

    数值
    none
    original
    new

    默认值是:new

    fapprox
    

    设置各种调试标志。

    29.111 noformat

    强制libavfilter不使用任何指定的像素格式输入到下一个过滤器。

    它接受以下参数:

    pix_fmts
    

    A ’|’-separated list of pixel format names, such as pix_fmts=yuv420p|monow|rgb24".

    29.111.1 示例

    • 强制libavfilter使用与yuv420p不同的格式作为vflip过滤器的输入:

        noformat=pix_fmts=yuv420p,vflip
      
    • 将输入视频转换为列表中未包含的任何格式:

        noformat=yuv420p|yuv444p|yuv410p
      

    29.112 noise

    在视频输入帧上添加噪声。

    过滤器接受以下选项:

    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 均匀噪音(否则为高斯)

    29.112.1 示例

    为输入视频添加时间和均匀噪声:

    noise=alls=20:allf=t+u
    

    29.113 normalize

    标准化RGB视频(也称直方图拉伸,对比度拉伸)。请参阅:https://en.wikipedia.org/wiki/Normalization_(image_processing)

    对于每个帧的每个通道,过滤器计算输入范围并将其线性映射到用户指定的输出范围。输出范围默认为从纯黑色到纯白色的完整动态范围。

    可以在输入范围上使用时间平滑,以减少当小的暗物体或明亮物体进入或离开场景时引起的闪烁(亮度的快速变化)。这类似于摄像机上的自动曝光(自动增益控制),并且像摄像机一样,可能会导致视频曝光过度或曝光不足。

    R,G,B通道可以独立归一化,这可能会导致一些色移,或者作为单个通道链接在一起,这可以防止色移。链接标准化保留了色调。独立规范化没有,因此它可以用于删除一些色偏。独立和链接的标准化可以以任何比率组合。

    normalize过滤器接受以下选项:

    blackpt
    whitept
    

    定义输出范围的颜色。最小输入值映射到blackpt。最大输入值映射到whitept。默认值分别为黑色和白色。为blackpt指定白色,为whitept指定黑色将提供颜色反转的标准化视频。灰度阴影可用于减小动态范围(对比度)。在这里指定饱和色可以产生一些有趣的效果。

    smoothing
    

    用于时间平滑的先前帧的数量。使用当前帧上的滚动平均值和前一帧的平滑来平滑每个通道的输入范围。默认值为0no temporal smoothing)。

    independence
    

    控制独立(色移)通道归一化与链接(颜色保留)归一化的比率。 0.0是完全链接的,1.0是完全独立的。默认为1.0(完全独立)。

    strength
    

    过滤器的整体强度。 1.0是全力。 0.0是一个相当消耗性能的无操作方式。默认为1.0(完整强度)。

    29.113.1 示例

    拉伸视频对比度以使用完整的动态范围,没有时间平滑; 可能会闪烁,具体取决于源内容:

        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
    

    29.114 null

    将视频源不变地传递给output

    29.115 ocr

    光学字符识别

    此滤镜使用Tesseract进行光学字符识别。

    它接受以下选项:

    datapath
    

    datapath设置为tesseract数据。 默认是使用安装时设置的任何内容。

    language
    

    设置语言,默认为eng

    whitelist
    

    设置角色白名单。

    blacklist
    

    设置角色黑名单。

    过滤器将识别的文本导出为帧元数据lavfi.ocr.text

    29.116 ocv

    使用libopencv应用视频转换。

    要启用此过滤器,请安装libopencv库和标头,并使用--enable-libopencv配置FFmpeg

    它接受以下参数:

    filter_name
    

    要应用的libopencv过滤器的名称。

    filter_params
    

    传递给libopencv过滤器的参数。 如果未指定,则假定为默认值。

    有关更准确的信息,请参阅官方libopencv文档:http://docs.opencv.org/master/modules/imgproc/doc/filtering.html

    几个libopencv支持的过滤器; 请参阅以下小节。

    29.116.1 dilate

    通过使用特定的结构元素扩展图像。它对应于libopencv函数cvDilate

    它接受参数:struct_el | nb_iterations

    struct_el表示结构元素,其语法为:colsxrows + anchor_xxanchor_y / shape

    colsrows表示结构化元素的列数和行数,anchor_xanchor_y是锚点,并为结构化元素的形状定形。形状必须是rectcrossellipsecustom

    如果shape的值是custom,则必须后跟一个= filename形式的字符串。假设具有名称filename的文件表示二进制图像,每个可打印字符对应于亮像素。使用自定义形状时,将忽略colsrows,而是假定读取文件的数量或列数和行数。

    struct_el的默认值是3x3 + 0x0 / rect

    nb_iterations指定变换应用于图像的次数,默认为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
    

    29.116.2 erode

    使用特定的结构元素侵蚀图像。 它对应于libopencv函数cvErode。

    它接受参数:struct_el:nb_iterations,具有与扩展过滤器相同的语法和语义。

    29.116.3 smooth

    平滑输入视频。

    过滤器采用以下参数:type | param1 | param2 | param3 | param4

    type是要应用的平滑滤镜的类型,并且必须是以下值之一:blurblur_no_scalemediangaussianbilateral。 默认值为gaussian

    param1param2param3param4的含义取决于平滑类型。 param1param2接受整数正值或0param3param4接受浮点值。

    param1的默认值为3。其他参数的默认值为0

    这些参数对应于分配给libopencv函数cvSmooth的参数。

    29.117 oscilloscope

    2D视频示波器。

    用于测量空间脉冲,阶跃响应,色度延迟等。

    它接受以下参数:

    x
    

    设置范围中心x位置。

    y
    

    设置范围中心y位置。

    s
    

    设置范围大小,相对于帧对角线。

    t
    

    设置范围倾斜/旋转。

    o
    

    设置跟踪不透明度。

    tx
    

    设置轨迹中心x位置。

    ty
    

    设置跟踪中心y位置。

    tw
    

    设置轨迹宽度,相对于框架的宽度。

    th
    

    设置迹线高度,相对于框架的高度。

    c
    

    设置要跟踪的组件。 默认情况下,它会跟踪前三个组件。

    g
    

    绘制跟踪网格。 默认值是:enabled

    st
    

    绘制一些统计数据, 默认值是:enabled

    sc
    

    绘制范围。 默认值是:enabled

    29.117.1 示例

    • 检查完整的第一行视频帧。

        oscilloscope=x=0.5:y=0:s=1
      
    • 检查完整的最后一行视频帧。

        oscilloscope=x=0.5:y=1:s=1
      
    • 检查高度为1080的完整第5行视频帧。

        oscilloscope=x=0.5:y=5/1080:s=1
      
    • 检查视频帧的完整最后一列。

        oscilloscope=x=1:y=0.5:s=1:t=1
      

    29.118 overlay

    将一个视频叠加在另一个视频之上。

    它需要两个输入并有一个输出。 第一个输入是覆盖第二个输入的"main"视频。

    它接受以下参数:

    接下来的选项的描述如下。

    x
    y
    

    设置主视频上重叠视频的xy坐标的表达式。 两个表达式的默认值均为0。 如果表达式无效,则将其设置为一个巨大的值(意味着叠加层不会显示在输出可见区域内)。

    eof_action
    

    请参阅framesync

    eval
    

    在计算'x''y'的表达式时设置。

    它接受以下值:

    解释
    init 仅在过滤器初始化期间或处理命令时评估表达式
    frame 计算每个传入帧的表达式

    默认值是:frame

    shortest
    

    请参阅framesync

    format
    

    设置输出视频的格式。

    它接受以下值:

    解释
    yuv420 强制YUV420输出
    yuv422 强制YUV422输出
    yuv444 强制YUV444输出
    rgb 强制打包RGB输出
    gbrp 强制平面RGB输出
    auto 自动选择格式

    默认值是:‘yuv420’

    repeatlast
    

    请参阅framesync

    alpha
    

    设置叠加视频的alpha格式,可以是straightpremultiplied。默认是straight

    'x''y'表达式可以包含以下参数。

    main_w,W
    main_h,H
    

    主要输入宽度和高度。

    overlay_w,w
    overlay_h,h
    

    叠加输入宽度和高度。

    x
    y
    

    xy的计算值。对每个新帧进行评估。

    hsub
    vsub
    

    输出格式的水平和垂直色度子样本值。例如,对于像素格式yuv422phsub2vsub1

    n
    

    输入帧的数量,从0开始。

    pos
    

    输入框文件中的位置,如果未知,则为straight

    t
    

    时间戳,以秒为单位表示。如果输入时间戳未知,则为NAN

    此过滤器还支持framesync选项。

    请注意:npost变量仅在每帧完成评估时可用,并且当'eval'设置为'init'时将评估为NAN

    请注意,帧是按时间戳顺序从每个输入视频中获取的,因此,如果它们的初始时间戳不同,最好通过setpts = PTS-STARTPTS过滤器传递两个输入,使它们以相同的零时间戳开始,作为电影过滤器的示例。

    可以将更多叠加链接在一起,但应该测试此类方法的效率。

    29.118.1 命令行

    此筛选器支持以下命令:

    x
    y
    

    修改叠加输入的xy。 该命令接受相应选项的相同语法。

    如果指定的表达式无效,则保持其当前值。

    29.118.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
    
    • 使用带有-filter_complex选项的ffmpeg工具在输入的左下角插入透明的PNG徽标:

        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工具并排播放原始视频和过滤版本(此处使用deshake过滤器):

        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]
        "
      
    • 通过将delogo过滤器应用于某个部分,可以屏蔽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]
      

    29.119 owdenoise

    应用Overcomplete Wavelet deoiser

    过滤器接受以下选项:

    depth
    

    设定深度。

    较大的深度值会使较低频率的分量去噪,但减慢滤波速度。

    必须是8-16范围内的int,默认值为8

    luma_strength,ls
    

    设定亮度强度。

    必须是0-1000范围内的双精度值,默认值为1.0

    chroma_strength,cs
    

    设定色度强度。

    必须是0-1000范围内的双精度值,默认值为1.0

    相关文章

      网友评论

        本文标题:FFplay文档解读-37-视频过滤器十二

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