前言
Github地址:Github
简书地址:简书
专辑地址:FFplay专辑
29.50 elbg
使用ELBG(增强型LBG)算法应用海报效果。
对于每个输入图像,滤波器将根据码本长度(即不同输出颜色的数量)计算从输入到输出的最佳映射。
此过滤器接受以下选项。
codebook_length,l
设置码本长度。 该值必须是正整数,并表示不同输出颜色的数量。 默认值为256。
nb_steps,n
设置要应用于计算最佳映射的最大迭代次数。 值越高,结果越好,计算时间越长。 默认值为1。
seed, s
设置随机种子,必须是0到UINT32_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_frame和start_time,则淡入淡出将从最后一个开始。默认值为0。
duration, d
淡入淡出效果必须持续的秒数。在淡入效果结束时,输出视频将具有与输入视频相同的强度,在淡出过渡结束时,输出视频将以所选的‘color’填充。如果同时指定duration和nb_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
调整图像亮度平面的直流值(增益)。 过滤器接受0到1000范围内的整数值。默认值设置为0。
dc_U
调整图像的第一个色度平面的dc值(增益)。 过滤器接受0到1000范围内的整数值。默认值设置为0。
dc_V
调整图像的第二色度平面的直流值(增益)。 过滤器接受0到1000范围内的整数值。默认值设置为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
指定是提取顶部(如果值为0或top)还是底部字段(如果值为1或bottom)。
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/TFM(AviSynth项目)和VIVTC/VFM(VapourSynth项目)相同的算法。后者是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(以及auto或top上的'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开始并且最多为512的2的幂的任何数字。
默认值为16。
combpel
帧中blocky大小的任何‘blockx’内部的精梳像素数量,以便检测为精梳帧。虽然'cthresh'控制梳理必须"visible"的程度,但此设置控制框架上任何局部区域(由blockx和blocky设置定义的窗口)必须"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
在这些例子中,我们可以看到p,c和n的含义; 基本上,它们指的是相反奇偶校验的框架和字段:
p匹配前一帧中相反奇偶校验的字段。c匹配当前帧中相反奇偶校验的字段。n匹配下一帧中相反奇偶校验的字段。
29.56.1.2 u/b
u和b匹配在它们与相对奇偶校验标志匹配的意义上有点特殊。 在以下示例中,我们假设我们当前正在匹配第二帧(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
高级IVTC,yadif用于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。