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

前言

Github地址:Github
地址:
专辑地址:FFplay专辑

29.50 elbg

使用ELBG(增强型LBG)算法应用海报效果。

对于每个输入图像,滤波器将根据码本长度(即不同输出颜色的数量)计算从输入到输出的最佳映射。

此过滤器接受以下选项。

codebook_length,l

设置码本长度。 该值必须是正整数,并表示不同输出颜色的数量。 默认值为256

nb_steps,n

设置要应用于计算最佳映射的最大迭代次数。 值越高,结果越好,计算时间越长。 默认值为1

seed, s

设置随机种子,必须是0UINT32_MAX之间的整数。 如果未指定,或者显式设置为-1,则过滤器将尝试在尽力而为的基础上使用良好的随机种子。

pal8

设置pal8输出像素格式。 此选项不适用于大于256的码本长度。

29.51 entropy

测量视频帧颜色通道直方图中的灰度熵。

它接受以下参数(其实到目前为止,只有一个参数):

mode

可以是普通的也可以是差异的。 默认是正常的。

diff模式测量直方图delta值的熵,相邻直方图值之间的绝对差值。

29.52 fade

对输入视频应用淡入/淡出效果。

它接受以下参数:

type,t

对于淡入,效果类型可以是in,对于淡出效果可以是out。默认是在。

start_frame,s

指定要开始应用淡入淡出效果的帧数。默认值为0

nb_frames,n

淡入淡出效果持续的帧数。在淡入效果结束时,输出视频将具有与输入视频相同的强度。在淡出过渡结束时,输出视频将以所选的‘color’填充。默认值为25

alpha

如果设置为1,则仅淡化alpha通道(如果输入中存在)。默认值为0

start_time,st

指定要开始应用淡入淡出效果的帧的时间戳(以秒为单位)。如果同时指定了start_framestart_time,则淡入淡出将从最后一个开始。默认值为0

duration, d

淡入淡出效果必须持续的秒数。在淡入效果结束时,输出视频将具有与输入视频相同的强度,在淡出过渡结束时,输出视频将以所选的‘color’填充。如果同时指定durationnb_frames,则使用duration。默认值为0(默认使用nb_frames)。

color, c

指定淡入淡出的颜色。默认为"black"

29.52.1 示例

  • 淡入前30帧视频:

      fade=in:0:30
    
  • 上面的命令相当于:

      fade=t=in:s=0:n=30
    
  • 淡出200帧视频的最后45帧:

      fade=out:155:45
      fade=type=out:start_frame=155:nb_frames=45
    
  • 淡入前25帧并淡出1000帧视频的最后25帧:

      fade=in:0:25, fade=out:975:25
    
  • 将前5帧设为黄色,然后从第5-24帧淡入:

      fade=in:5:20:color=yellow
    
  • 在前25帧视频中淡入alpha

      fade=in:0:25:alpha=1
    
  • 将第一个5.5秒黑色,然后淡入0.5秒:

       fade=t=in:st=5.5:d=0.5
    

29.53 fftfilt

将任意表达式应用于频域中的样本

dc_Y

调整图像亮度平面的直流值(增益)。 过滤器接受01000范围内的整数值。默认值设置为0

dc_U

调整图像的第一个色度平面的dc值(增益)。 过滤器接受01000范围内的整数值。默认值设置为0

dc_V

调整图像的第二色度平面的直流值(增益)。 过滤器接受01000范围内的整数值。默认值设置为0

weight_Y

设置亮度平面的频域权重表达式。

weight_U

设置第一个色度平面的频域权重表达式。

weight_V

设置第二色度平面的频域权重表达式。

eval

在计算表达式时设置。

它接受以下值:

解释
init 仅在过滤器初始化期间评估表达式一次
frame 评估每个传入帧的表达式

默认值是:‘init’

过滤器接受以下变量:

X
Y

当前样本的坐标。

W
H

图像的宽度和高度。

N

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

29.53.1 示例

  • High-pass:

      fftfilt=dc_Y=128:weight_Y='squish(1-(Y+X)/100)'
    
  • Low-pass:

      fftfilt=dc_Y=0:weight_Y='squish((Y+X)/100-1)'
    
  • Sharpen:

      fftfilt=dc_Y=0:weight_Y='1+squish(1-(Y+X)/100)'
    
  • Blur:

      fftfilt=dc_Y=0:weight_Y='exp(-4 * ((Y+X)/(W+H)))'
    

29.54 field

使用步长运算从隔行扫描图像中提取单个字段,以避免浪费CPU时间。 输出帧标记为非隔行扫描。

过滤器接受以下选项:

type

指定是提取顶部(如果值为0top)还是底部字段(如果值为1bottom)。

29.55 fieldhint

通过复制提示文件中作为数字提供的周围帧的顶部和底部字段来创建新帧。

hint

设置包含提示的文件:absolute/relative(绝对/相对)帧数。

剪辑中的每个帧必须有一行。 每行必须包含两个以逗号分隔的数字,可选地后面跟上跟 -+。 在每行文件上提供的数字不能超出[N-1,N + 1],其中N是绝对模式的当前帧编号,或者是相对模式的[-1,1]范围。 第一个数字告诉从哪个帧中拾取顶部字段,第二个数字告诉从哪个帧中拾取底部字段。

如果可选地后跟+输出帧将被标记为隔行扫描,否则如果后面跟着 - 输出帧将被标记为渐进式,否则它将被标记为与输入帧相同。 如果行以;开头 该行被跳过。

mode

可以是绝对或相对的项目。 默认是绝对的。

相对模式的前几行提示文件示例:

0,0 - # first frame
1,0 - # second frame, use third's frame top field and second's frame bottom field
1,0 - # third frame, use fourth's frame top field and third's frame bottom field
1,0 -
0,0 -
0,0 -
1,0 -
1,0 -
1,0 -
0,0 -
0,0 -
1,0 -
1,0 -
1,0 -
0,0 -

29.56 fieldmatch

用于反转电视电影的场匹配滤波器。它意味着从电视电影流重建渐进帧。滤波器不会丢弃重复的帧,因此为了实现完整的反转电视电影场匹配,需要在滤波器图中使用抽取滤波器(例如decimate)。

场匹配和抽取的分离主要是由于在两者之间插入去隔行滤波器后退的可能性。如果源具有混合的电视电影和实际隔行内容,则fieldmatch将无法匹配隔行扫描部分的字段。但是这些剩余的精梳帧将被标记为隔行扫描,因此可以在抽取之前由诸如yadif的后来的滤波器去交错。

除了各种配置选项之外,fieldmatch还可以通过'ppsrc'选项激活可选的第二个流。如果启用,则帧重建将基于来自该第二流的字段和帧。这允许对第一输入进行预处理,以便帮助滤波器的各种算法,同时保持输出无损(假设字段正确匹配)。通常,场感知降噪器或亮度/对比度调整可以提供帮助。

请注意,此过滤器使用与TIVTC/TFMAviSynth项目)和VIVTC/VFMVapourSynth项目)相同的算法。后者是TFM的轻型克隆,fieldmatch基于该克隆。虽然语义和用法非常接近,但某些行为和选项名称可能不同。

目前,抽取滤波器仅适用于恒定帧速率输入。如果输入具有混合电视电影(30fps)和渐进内容,帧速率较低(如24fps),请使用以下过滤链生成必要的CFR流:dejudder,fps = 30000/1001,fieldmatch,decimate

过滤器接受以下选项:

order

指定输入流的假定字段顺序。可用值包括:

解释
auto 自动检测奇偶校验(使用FFmpeg的内部奇偶校验值)
bff 首先假设底部字段
tff 首先假设顶部字段

请注意,有时建议不要信任流声明的奇偶校验。
默认值是:auto

mode

设置要使用的匹配模式或策略。 'pc'模式在某种意义上是最安全的,因为在可能的情况下由于重复帧而不会产生急动,但是如果存在不良编辑或混合字段,则当实际存在良好匹配时,它将最终输出精梳帧。 另一方面,'pcn_ub'模式在创建急动方面是最冒险的,但如果有的话,几乎总能找到一个好的框架。 其他值都在'pc''pcn_ub'之间的某个地方,冒着急躁和创建重复帧而不是在编辑错误,孤立字段,混合字段等的部分找到好的匹配。

有关p/c/n/u/b的更多详细信息,请参见p/c/n/u/b meaning的含义部分。

可用值包括(下面翻译的不太好。。。):

解释
pc 双向匹配(p/c)
pc_n 双向匹配,如果仍然combed(p/c + n),则尝试第三个匹配模式
pc_u 双向匹配,如果仍然combed(p/c + u),则尝试第三个匹配模式(same order
pc_n_ub 双向匹配,如果仍然精梳则尝试第3个匹配,如果仍然combed则尝试4th/5th(第四个/第五个)匹配(p/c + n + u/b)
pcn 3路匹配(p/c/n)
pcn_ub 3路匹配,如果所有3个原始匹配被检测为combed (p/c/n + u/b),则尝试第4/第5个匹配

最后的括号表示将用于该模式的匹配,假设'order'= tff(以及autotop上的'field')。

在速度方面,'pc'模式是最快的,'pcn_ub'是最慢的。

默认值为:pc_n

ppsrc

将主输入流标记为预处理输入,并启用辅助输入流作为清除源以从中选择字段。 有关详细信息,请参阅过滤器简介。 它类似于VFM/TFM'clip2'功能。

默认值为0(禁用)。

field

设置要匹配的字段。 建议将此值设置为与order相同的值,除非您遇到与该设置匹配的故障。 在某些情况下,更改用于匹配的字段会对匹配性能产生很大影响。 可用值包括:

解释
auto Automatic(自动模式)(与'order'相同)
bottom 从底部字段匹配
top 从顶部字段匹配

默认是:auto

mchroma

设置匹配比较期间是否包含色度。 在大多数情况下,建议启用此功能。 只有当剪辑具有错误的色度问题(例如重彩虹或其他伪影)时,才应将此值设置为0。 将此值设置为0也可用于加快速度,但需要付出一定的准确性。

默认值为:1

y0
y1

这些定义了排除带,其排除了'y0''y1'之间的线被包括在场匹配决策中。排除带可用于忽略字幕,徽标或可能干扰匹配的其他内容。 'y0'设置起始扫描线,'y1'设置结束线; 'y0''y1'之间的所有行(包括'y0''y1')都将被忽略。将'y0''y1'设置为相同的值将禁用该功能。 'y0''y1'默认为0

scthresh

将场景变化检测阈值设置为亮度平面上最大变化的百分比。好的值在[8.0,14.0]范围内。场景变化检测仅在'combmatch'``= sc时才有意义。 'scthresh'的范围是[0.0,100.0]

默认值为12.0

combmatch

'combatch'不是none时,fieldmatch会在决定使用什么匹配作为最终匹配时考虑匹配的精梳分数。可用值包括:

解释
none 没有基于精梳分数的最终匹配
sc 精梳分数仅在检测到场景变化时使用
full 一直使用精梳分数

默认值是:sc

combdbg

强制字段匹配以计算某些匹配的精梳指标并打印它们。 此设置在TFM/VFM词汇表中称为'micout'。 可用值包括:

解释
none 没有强制计算
pcn 强制p/c/n计算
pcnub 强制p/c/n/u/b计算

默认值是:none

cthresh

这是用于精梳帧检测的区域组合阈值。这基本上控制了必须如何检测"strong""visible"梳理。较大的值意味着梳理必须更加明显,较小的值意味着梳理可以不那么明显或强烈并且仍然可以被检测到。有效设置从-1(每个像素将被检测为精梳)到255(没有像素将被检测为梳理)。这基本上是像素差值。好的范围是[8,12]

默认值为9

chroma

设置是否在精梳帧决策中考虑色度。如果您的光源出现色度问题(彩虹,等),导致色度启用的精梳帧检测出现问题,请仅禁用此功能。实际上,使用'chroma'= 0通常更可靠,除了在源中只有色度梳理的情况。

默认值为:0

blockx
blocky

分别设置在精梳帧检测期间使用的窗口的x轴和y轴大小。这与需要检测‘combpel’像素的区域的大小有关,该区域被梳理为要被声明梳理的帧。有关详细信息,请参阅'combpel'参数说明。可能的值是从4开始并且最多为5122的幂的任何数字。

默认值为16

combpel

帧中blocky大小的任何‘blockx’内部的精梳像素数量,以便检测为精梳帧。虽然'cthresh'控制梳理必须"visible"的程度,但此设置控制框架上任何局部区域(由blockxblocky设置定义的窗口)必须"how much" combing。最小值为0,最大值为blocky x blockx(此时不会检测到任何帧为精梳)。此设置在TFM/VFM词汇表中称为“MI”

默认值为80

29.56.1 p/c/n/u/b 含义

29.56.1.1 p/c/n

我们假设以下电视电影流:

Top fields:     1 2 2 3 4
Bottom fields:  1 2 3 4 4

数字对应于字段涉及的渐进帧。 这里,前两帧是渐进的,第三和第四帧是精梳的,依此类推。

fieldmatch配置为从bottom('field'= bottom)运行匹配时,这是输入流的转换方式:

Input stream:
            T     1 2 2 3 4
            B     1 2 3 4 4   <-- matching reference

Matches:              c c n n c

Output stream:
            T     1 2 3 4 4
            B     1 2 3 4 4

作为字段匹配的结果,我们可以看到一些帧被复制。 要执行完整的反转电视电影,您需要在此操作后依赖抽取滤波器。 例如,参见抽取滤波器。

现在与顶部字段匹配的相同操作('field'= top)如下所示:

Input stream:
            T     1 2 2 3 4   <-- matching reference
            B     1 2 3 4 4

Matches:              c c p p c

Output stream:
            T     1 2 2 3 4
            B     1 2 2 3 4

在这些例子中,我们可以看到pcn的含义; 基本上,它们指的是相反奇偶校验的框架和字段:

  • p匹配前一帧中相反奇偶校验的字段。

  • c匹配当前帧中相反奇偶校验的字段。

  • n匹配下一帧中相反奇偶校验的字段。

29.56.1.2 u/b

ub匹配在它们与相对奇偶校验标志匹配的意义上有点特殊。 在以下示例中,我们假设我们当前正在匹配第二帧(Top:2,bottom:2)。 根据匹配,在每个匹配的字段的上方和下方放置x

底部匹配('field'= bottom):

Match:           c         p           n          b          u

             x       x               x        x          x

Top          1 2 2     1 2 2       1 2 2      1 2 2      1 2 2
Bottom       1 2 3     1 2 3       1 2 3      1 2 3      1 2 3
             x         x           x        x              x

Output frames:
             2          1          2          2          2
             2          2          2          1          3

顶部匹配('field'= top):

Match:           c         p           n          b          u

             x         x           x        x              x
  Top          1 2 2     1 2 2       1 2 2      1 2 2      1 2 2
  Bottom       1 2 3     1 2 3       1 2 3      1 2 3      1 2 3
             x       x               x        x          x

Output frames:
             2          2          2          1          2
             2          1          3          2          2

29.56.2 示例

top field第一个电视电影流的简单IVTC

fieldmatch=order=tff:combmatch=none, decimate

高级IVTCyadif用于still combed帧的yadif

fieldmatch=order=tff:combmatch=full, yadif=deint=interlaced, decimate

29.57 fieldorder

转换输入视频的字段顺序。

它接受以下参数:

order

输出字段顺序。 有效值首先是顶部字段的tff,或者首先是底部字段的bff

默认值为'tff'

通过将图片内容向上或向下移动一行,并用适当的图片内容填充剩余行来完成转换。 该方法与大多数广播字段顺序转换器一致。

如果输入视频未标记为隔行扫描,或者已将其标记为所需的输出字段顺序,则此过滤器不会更改传入的视频。

当转换到PAL DV素材或从PAL DV素材转换时非常有用,它首先是底场。

例如:

ffmpeg -i in.vob -vf "fieldorder=bff" out.dv

29.58 fifo, afifo

缓冲输入图像并在请求时发送它们。

它主要在libavfilter框架自动插入时很有用。

它不需要参数。

29.59 fillborders

填充输入视频的边框,而不更改视频流尺寸。 有时视频可能在四个边缘有garbage,可能不想裁剪视频输入以保持某个数字的大小倍数。

此过滤器接受以下选项:

left

从左边框填充的像素数。

right

从右边框填充的像素数。

top

从顶部边框填充的像素数。

bottom

从底部边框填充的像素数。

mode

设置填充模式。

它接受以下值:

解释
smear 使用最外面的像素填充像素
mirror 使用镜像填充像素
fixed 用恒定值填充像素

默认值是:smear

 color

在固定模式下设置像素的颜色。 默认为black

你可能感兴趣的:(FFplay文档解读-31-视频过滤器六)