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

FFplay文档解读-41-视频过滤器十六

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

    前言

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

    29.150 selectivecolor

    将青色,品红色,黄色和黑色(CMYK)调整为特定颜色范围(例如"reds""yellows""greens""cyans",......)。 调整范围由颜色的"purity"定义(即,它已经是多么饱和)。

    此过滤器类似于Adobe Photoshop Selective Color工具。

    过滤器接受以下选项:

    correction_method
    

    选择颜色校正方法。

    可用的值如下:

    解释
    absolute 指定的调整“按原样”应用(添加/减去原始像素组件值)
    relative 指定的调整与原始组件值相关

    默认值是:absolute

    reds
    

    红色像素的调整(红色成分最大的像素)

    yellows
    

    黄色像素的调整(蓝色成分最小的像素)

    greens
    

    绿色像素的调整(绿色成分最大的像素)

    cyans
    

    青色像素的调整(红色成分最小的像素)

    blues
    

    蓝色像素的调整(蓝色分量最大的像素)

    magentas
    

    品红色像素的调整(绿色成分最小的像素)

    whites
    

    白色像素的调整(所有组件都大于128的像素)

    neutrals
    

    除纯黑色和纯白色外的所有像素的调整

    blacks
    

    调整黑色像素(所有组件小于128的像素)

    psfile
    

    指定Photoshop选择性颜色文件(.asv)以从中导入设置。

    所有调整设置('reds','yellows',...)[-1,1]范围内分别接受最多4个空格分隔的浮点调整值,以调整青色,品红色,黄色和黑色的数量 对于其范围的像素。

    29.150.1 示例

    • 在每个绿色区域增加青色50%并减少黄色33%,在蓝色区域增加品红27%

        selectivecolor=greens=.5 0 -.33 0:blues=0 .27
      
    • 使用Photoshop选择性颜色预设:

        selectivecolor=psfile=MySelectiveColorPresets/Misty.asv
      

    29.151 separatefields

    独立字段采用基于帧的视频输入,并将每个帧拆分为其组成字段,从而产生新的半高剪辑,帧速率为帧速率的两倍,帧数为两倍。

    该过滤器在帧中使用字段优势信息来决定在输出中首先放置哪一对字段。 如果出错,请在单独的字段过滤器之前使用setfield过滤器。

    29.152 setdar, setsar

    setdar滤波器设置滤波器输出视频的显示宽高比。

    这是通过根据以下等式更改指定的Sample(aka Pixel)纵横比来完成的:

    DAR = HORIZONTAL_RESOLUTION / VERTICAL_RESOLUTION * SAR
    

    请记住,setdar滤镜不会修改视频帧的像素尺寸。此外,由该滤波器设置的显示宽高比可以通过滤波器链中的后续滤波器来改变,例如,如果是缩放或者应用了另一个setdarsetsar过滤器。

    设置滤波器为滤波器输出视频设置采样(aka Pixel)纵横比。

    请注意,作为应用此滤波器的结果,输出显示宽高比将根据上面的等式改变。

    请记住,由过滤链中的后续过滤器可以更改由setar过滤器设置的样本宽高比,例如,如果应用另一个setarsetdar过滤器。

    它接受以下参数:

    r,ratio,dar(仅限setdar),sar(仅限setsar)
    

    设置过滤器使用的宽高比。

    该参数可以是浮点数字符串,表达式或形式为num:den的字符串,其中numden是宽高比的分子和分母。如果未指定参数,则假定值为0。如果使用num:den形式,则应转义:字符。

    max
    

    设置当将表达的宽高比减少到合理时用于表示分子和分母的最大整数值。默认值为100

    参数sar是一个包含以下常量的表达式:

    E,PI,PHI
    

    这些是数学常数e(欧拉数),pi(希腊语pi)和phi(黄金比例)的近似值。

    w,h
    

    输入的宽度和高度。

    a
    

    这些与w/h相同。

    sar
    

    输入样本宽高比。

    dar
    

    输入显示宽高比。它与(w / h)* sar相同。

    hsub,vsub
    

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

    29.152.1 示例

    • 要将显示宽高比更改为16:9,请指定以下选项之一:

        setdar=dar=1.77777
        setdar=dar=16/9
      
    • 要将样本宽高比更改为10:11,请指定:

        setsar=sar=10/11
      
    • 要将显示宽高比设置为16:9,并在宽高比缩减中指定最大整数值1000,请使用以下命令:

        setdar=ratio=16/9:max=1000
      

    29.153 setfield

    输出视频帧的强制字段。

    setfield过滤器标记输出帧的隔行扫描类型字段。 它不会更改输入帧,而只会设置相应的属性,这会影响后续过滤器(例如fieldorderyadif)处理帧的方式。

    过滤器接受以下选项:

    auto
    

    可用值如下:

    解释
    bff 将帧标记为底场优先
    tff 将帧标记为顶场优先
    prog 将帧标记为渐进式

    29.154 showinfo

    显示包含每个输入视频帧的各种信息的行。输入视频未被修改。

    显示的行包含表单键:值的一系列键/值对。

    输出中显示以下值:

    n
    

    输入帧的(顺序)编号,从0开始。

    pts
    

    输入帧的Presentation TimeStamp,表示为多个时基单位。时基单位取决于滤波器输入焊盘。

    pts_time
    

    输入帧的Presentation TimeStamp,表示为秒数。

    pos
    

    帧在输入流中的位置,如果此信息不可用和/或无意义(例如在合成视频的情况下),则为-1

    fmt
    

    像素格式名称。

    sar
    

    输入帧的样本宽高比,以num/den的形式表示。

    s
    

    输入框的大小。有关此选项的语法,请检查(ffmpeg-utils)视频大小语法

    i
    

    隔行扫描模式的类型(P表示progressivet”表示顶部字段,b表示底部字段优先)。

    iskey
    

    如果帧是关键帧,则为1,否则为0

    type
    

    输入帧的图像类型(对于I帧为I,对于P帧为P,对于B帧为B,对于未知类型为)。另请参阅AVPictureType枚举文档和'libavutil / avutil.h'中定义的av_get_picture_type_char函数的文档。

    checksum
    

    输入帧所有平面的Adler-32校验和(以十六进制打印)。

    plane_checksum
    

    输入帧每个平面的Adler-32校验和(以十六进制打印),以[c0 c1 c2 c3]的形式表示。

    29.155 showpalette

    显示每帧的256色调色板。 此过滤器仅与pal8像素格式帧相关。

    它接受以下选项:

    s
    

    设置用于表示一个调色板颜色条目的框的大小。 默认值为30(对于30x30像素的盒子)。

    29.156 shuffleframes

    重新排序和/或复制和/或删除视频帧。

    它接受以下参数:

    mapping
    

    设置输入帧的目标索引。 这是将输入帧映射到输出帧的空间或|分隔索引列表。 索引数量还设置每个索引可能具有的最大值。 -1索引具有特殊含义,即丢帧。

    第一帧的索引为0。默认设置是保持输入不变。

    29.156.1 Examples

    • 交换输入的每三帧的第二帧和第三帧:

        ffmpeg -i INPUT -vf "shuffleframes=0 2 1" OUTPUT
      
    • 交换输入的每十帧的第10帧和第1帧:

        ffmpeg -i INPUT -vf "shuffleframes=9 1 2 3 4 5 6 7 8 0" OUTPUT
      

    29.157 shuffleplanes

    重新排序和/或复制视频平面。

    它接受以下参数:

    map0
    

    要用作第一个输出平面的输入平面的索引。

    map1
    

    要用作第二个输出平面的输入平面的索引。

    map2
    

    要用作第三个输出平面的输入平面的索引。

    map3
    

    要用作第四个输出平面的输入平面的索引。

    第一个平面的索引为0。默认设置是保持输入不变。

    29.157.1 示例

    • 交换输入的第二和第三个平面:

        ffmpeg -i INPUT -vf shuffleplanes=0:2:1:3 OUTPUT
      

    29.158 signalstats

    评估有助于确定与模拟视频媒体数字化相关的问题的各种视觉指标。

    默认情况下,过滤器将记录这些元数据值:

    YMIN
    

    显示输入框中包含的最小Y值。表达范围为[0-255]

    YLOW
    

    在输入框内显示10%百分位的Y值。表达范围为[0-255]

    YAVG
    

    显示输入框内的平均Y值。表达范围为[0-255]

    YHIGH
    

    在输入框内的90%百分位处显示Y值。表达范围为[0-255]

    YMAX
    

    显示输入框中包含的最大Y值。表达范围为[0-255]

    UMIN
    

    显示输入框中包含的最小U值。表达范围为[0-255]

    ULOW
    

    在输入框内显示10%百分位的U值。表达范围为[0-255]

    UAVG
    

    显示输入框内的平均U值。表达范围为[0-255]

    UHIGH
    

    在输入框内的90%百分位处显示U值。表达范围为[0-255]

    UMAX
    

    显示输入框中包含的最大U值。表达范围为[0-255]

    VMIN
    

    显示输入框中包含的最小V值。表达范围为[0-255]

    VL​​OW
    

    在输入框内显示10%百分位数的V值。表达范围为[0-255]

    VAVG
    

    显示输入框内的平均V值。表达范围为[0-255]

    VHIGH
    

    在输入框内的90%百分位处显示V值。表达范围为[0-255]

    VMAX
    

    显示输入框中包含的最大V值。表达范围为[0-255]

    SATMIN
    

    显示输入框中包含的最小饱和度值。表示范围为[0-~181.02]

    SATLOW
    

    在输入框内显示10%百分位数的饱和度值。表示范围为[0-~181.02]

    SATAVG
    

    显示输入框内的平均饱和度值。表示范围为[0-~181.02]

    SATHIGH
    

    在输入框内显示90%百分位数的饱和度值。表示范围为[0-~181.02]

    SATMAX
    

    显示输入框中包含的最大饱和度值。表示范围为[0-~181.02]

    HUEMED
    

    显示输入框内色调的中值。表示范围为[0-360]

    HUEAVG
    

    显示输入框架内色调的平均值。表示范围为[0-360]

    YDIF
    

    显示当前帧中Y平面的所有值与前一输入帧的对应值之间的样本值差异的平均值。表达范围为[0-255]

    UDIF
    

    显示当前帧中U平面的所有值与前一输入帧的对应值之间的样本值差异的平均值。表达范围为[0-255]

    VDIF
    

    显示当前帧中V平面的所有值与前一输入帧的对应值之间的样本值差异的平均值。表达范围为[0-255]

    YBITDEPTH
    

    显示当前帧中Y平面的位深度。表示范围为[0-16]

    UBITDEPTH
    

    显示当前帧中U平面的位深度。表示范围为[0-16]

    VBITDEPTH
    

    显示当前帧中V平面的位深度。表示范围为[0-16]

    过滤器接受以下选项:

    stat
    out
    

    'stat'指定另一种形式的图像分析。

    'out'输出视频,突出显示指定类型的像素。

    两个选项都接受以下值:

    解释
    tout 识别时间异常值像素。 时间异常值是与同一场的相邻像素不同的像素。 时间异常值的示例包括视频丢失,磁头阻塞或磁带跟踪问题的结果
    vrep 识别垂直线重复。 垂直线重复包括帧内相似的像素行。 在天生数字视频中,垂直线重复很常见,但这种模式在从模拟信号源数字化的视频中并不常见。 当它出现在由模拟信号源数字化产生的视频中时,它可以指示丢失补偿器的隐藏
    brng 识别超出合法广播范围的像素
    color, c
    

    设置'out'选项的高亮颜色。 默认颜色为黄色。

    29.158.1 示例

    • 各种视频指标的输出数据:

        ffprobe -f lavfi movie=example.mov,signalstats="stat=tout+vrep+brng" -show_frames
      
    • 输出关于每帧Y平面的最小值和最大值的特定数据:

        ffprobe -f lavfi movie=example.mov,signalstats -show_entries frame_tags=lavfi.signalstats.YMAX,lavfi.signalstats.YMIN
      
    • 播放视频,同时以红色突出显示广播范围之外的像素。

        ffplay example.mov -vf signalstats="out=brng:color=red"
      
    • 通过帧绘制信号状态元数据播放视频。

        ffplay example.mov -vf signalstats=stat=brng+vrep+tout,drawtext=fontfile=FreeSerif.ttf:textfile=signalstat_drawtext.txt
      

      命令中使用的signalstat_drawtext.txt的内容是:

    time %{pts:hms}
    Y (%{metadata:lavfi.signalstats.YMIN}-%{metadata:lavfi.signalstats.YMAX})
    U (%{metadata:lavfi.signalstats.UMIN}-%{metadata:lavfi.signalstats.UMAX})
    V (%{metadata:lavfi.signalstats.VMIN}-%{metadata:lavfi.signalstats.VMAX})
    saturation maximum: %{metadata:lavfi.signalstats.SATMAX}
    

    29.159 signature

    计算MPEG-7视频签名。 过滤器可以处理多个输入。 在这种情况下,可以另外计算输入之间的匹配。 过滤器始终通过第一个输入。 每个流的签名可以写入文件。

    它接受以下选项:

    detectmode
    

    启用或禁用匹配过程。

    可用值包括:

    解释
    off 禁用匹配的计算(默认)
    full 计算整个视频的匹配并输出整个视频是匹配还是仅匹配
    fast 只计算直到找到匹配或视频结束。 在某些情况下应该更快
    nb_inputs
    

    设置输入数量。 选项值必须是非负整数。 默认值为1

    filename
    

    设置输出的写入路径。 如果有多个输入,则路径必须是原型,即必须包含%d%0nd(其中n是正整数),它将被输入数字替换。 如果未指定文件名,则不会写入任何输出。 这是默认值。

    format
    

    选择输出格式。

    可用值包括:

    解释
    binary 使用指定的二进制表示(默认)
    xml 使用指定的xml表示
    th_d
    

    设置阈值以检测一个单词是否相似。 选项值必须是大于零的整数。 默认值为9000

    th_dc
    

    设置阈值以检测所有单词是否相似。 选项值必须是大于零的整数。 默认值为60000

    th_xh
    

    设置阈值以检测帧类似。 选项值必须是大于零的整数。 默认值为116

    th_di
    

    在帧中设置序列的最小长度,以将其识别为匹配序列。 选项值必须是非负整数值。 默认值为0

    th_it
    

    设置最小关系,匹配帧到所有帧必须具有。 选项值必须是介于01之间的双精度值。默认值为0.5

    29.159.1 示例

    • 要计算输入视频的签名并将其存储在signature.bin中:

        ffmpeg -i input.mkv -vf signature=filename=signature.bin -map 0:v -f null -
      
    • 要检测两个视频是否匹配,并将签名以XML格式存储在signature0.xmlsignature1.xml中:

        ffmpeg -i input1.mkv -i input2.mkv -filter_complex "[0:v][1:v] signature=nb_inputs=2:detectmode=full:format=xml:filename=signature%d.xml" -map :v -f null -
      

    相关文章

      网友评论

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

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