FFplay文档解读-38-视频过滤器十三

前言

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

29.120 pad

将填充添加到输入图像,并将原始输入放在提供的x,y坐标处。

它接受以下参数:

width, w
height, h

使用添加的填充指定输出图像大小的表达式。如果widthheight的值为0,则相应的输入大小用于输出。

width表达式可以引用高度表达式设置的值,反之亦然。

widthheight的默认值为0

x
y

指定偏移以将输入图像相对于输出图像的top/left边界放置在填充区域内。

x表达式可以引用y表达式设置的值,反之亦然。

xy的默认值为0

如果xy计算为负数,则它们将被更改,因此输入图像以填充区域为中心。

color

指定填充区域的颜色。有关此选项的语法,请检查(ffmpeg-utils)颜色语法。

颜色的默认值为black

eval

指定何时评估宽度,高度,xy表达式。

它接受以下值:

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

默认值是:‘init’

aspect

填充方面而不是分辨率。

widthheightxy选项的值是包含以下常量的表达式:

in_w
in_h

输入视频的宽度和高度。

iw
ih

这些与in_win_h相同。

out_w
out_h

输出宽度和高度(填充区域的大小),由widthheight表达式指定。

ow
oh

这些与out_w和out_h相同。

x
y

xy偏移量由x和y表达式指定,如果尚未指定,则为NAN

a

iw/ih一样

sar

输入样本宽高比

dar

输入显示宽高比,与(iw/ih)* sar相同

hsub
vaus

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

29.120.1 示例

  • 在输入视频中添加颜色为“紫色”的填充。 输出视频大小为640x480,输入视频的左上角位于第0列第40行。

      pad=640:480:0:40:violet
    

  上面的示例等效于以下命令:

    pad=width=640:height=480:x=0:y=40:color=violet
  • 填充输入以获得尺寸增加3/2的输出,并将输入视频放在填充区域的中心:

      pad="3/2*iw:3/2*ih:(ow-iw)/2:(oh-ih)/2"
    
  • 填充输入以获得大小等于输入宽度和高度之间的最大值的平方输出,并将输入视频放在填充区域的中心:

      pad="max(iw\,ih):ow:(ow-iw)/2:(oh-ih)/2"
    
  • 填充输入以获得16:9的最终w/h比率:

      pad="ih*16/9:ih:(ow-iw)/2:(oh-ih)/2"
    
  • 在变形视频的情况下,为了正确设置输出显示方面,有必要在表达式中使用sar,根据以下关系:

      (ih * X / ih) * sar = output_dar
      X = output_dar / sar
    

  因此,前面的示例需要修改为:

    pad="ih*16/9/sar:ih:(ow-iw)/2:(oh-ih)/2"
  • 将输出大小加倍并将输入视频放在输出填充区域的右下角:

      pad="2*iw:2*ih:ow-iw:oh-ih"
    

29.121 palettegen

为整个视频流生成一个调色板。

它接受以下选项:

max_colors

设置调色板中要量化的最大颜色数。 注意:调色板仍然包含256种颜色; 未使用的调色板条目将为黑色。

reserve_transparent

创建最多255种颜色的调色板,并保留最后一种透明度。 保留透明度颜色对于GIF优化很有用。 如果未设置,则调色板中的最大颜色将为256。可能希望为独立图像禁用此选项。 默认设置。

transparency_color

设置将用作透明背景的颜色。

stats_mode

设置统计模式。

它接受以下值:

解释
full 计算全帧直方图
diff 仅计算与先前帧不同的部分的直方图。 如果背景是静态的,这可能与更重视输入的移动部分有关
single 计算每个帧的新直方图

默认值是:full

过滤器还会导出帧元数据lavfi.color_quant_ratio(nb_color_in / nb_color_out),可以使用它来评估调色板的颜色量化程度。 此信息在信息记录级别也可见。

29.121.1 示例

  • 使用ffmpeg生成给定视频的代表性调色板:

      ffmpeg -i input.mkv -vf palettegen palette.png
    

29.122 paletteuse

使用调色板对输入视频流进行下采样。

过滤器有两个输入:一个视频流和一个调色板。 调色板必须是256像素的图像。

它接受以下选项:

dither

选择抖动模式。 可用的算法如下:

算法 解释
bayer Ordered 8x8 bayer dithering (deterministic)
heckbert Paul Heckbert1982年定义的抖动(简单误差扩散)。 注意:这种抖动有时被认为是wrong(错误的),并作为参考
floyd_steinberg FloydSteingberg抖动(误差扩散)
sierra2 Frankie Sierra抖动 v2(误差扩散)
sierra2_4a Frankie Sierra 抖动 v2Lite(误差扩散)

默认值是:sierra2_4a

bayer_scale

选择拜耳抖动时,此选项定义图案的比例(交叉线图案可见多少)。 较低的值意味着更明显的图案用于较少的条带,而较高的值意味着较少的可见图案以较多的条带为代价。

该选项必须是[0,5]范围内的整数值。 默认值为2

diff_mode

如果设置,请定义要处理的区域:

区域 解释
rectangle 仅重新处理更改的矩形。 这类似于GIF裁剪/抵消压缩机制。 如果只有一部分图像在变化,此选项对于速度非常有用,并且具有使用案例,例如将误差差异‘dither’的范围限制为限制移动场景的矩形(如果是,则会导致更确定的输出 场景变化不大,结果减少了移动噪音和更好的GIF压缩)

默认值是:none

new

为每个输出帧选择新的调色板。

alpha_threshold

设置透明度的alpha阈值。 高于此阈值的Alpha值将被视为完全不透明,低于此阈值的值将被视为完全透明。

该选项必须是[0,255]范围内的整数值。 默认值为128

29.122.1 示例

  • 使用调色板(例如使用palettegen生成)使用ffmpegGIF进行编码:

      ffmpeg -i input.mkv -i palette.png -lavfi paletteuse output.gif
    

29.123 perspective

正确的视频透视不垂直于屏幕记录。

接下来的参数的描述如下:

x0
y0
x1
y1
x2
y2
x3
y3

设置左上角,右上角,左下角和右下角的坐标表达式。 默认值为0:0:W:0:0:H:W:H,哪个透视图保持不变。 如果sense选项设置为source,则指定的点将被发送到目标的角落。 如果sense选项设置为destination,则源的角将被发送到指定的坐标。

表达式可以使用以下变量:

变量 解释
W
H 视频帧的宽度和高度
in 输入帧数
on 输出帧数
interpolation

设置透视校正的插值。

它接受以下值:

参数
linear
cubic

默认值是:‘linear’

sense

设置坐标选项的解释。

它接受以下值:

参数 解释
0, source 将给定坐标指定的源中的点发送到目标的角
1, destination 将源的角发送到给定坐标指定的目标中的点

默认值是:‘source’

eval

在计算坐标x0,y0,... x3,y3的表达式时设置。

它接受以下值:

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

默认值是:‘init’

29.124 phase

将隔行扫描视频延迟一个场时间,以便字段顺序发生变化。

预期用途是将以相反场顺序捕获的PAL电影固定到电影到视频传输。

接下来的参数的描述如下:

mode

设置相位模式。

它接受以下值:

解释
t 捕获字段顺序排在前面,先转移到底部。 过滤器将延迟底部字段
b 捕获字段顺序排在后面,先转移到顶部。 过滤器将延迟顶部字段
p 使用相同的字段顺序捕获和传输。 此模式仅适用于要引用的其他选项的文档,但如果实际选择它,则过滤器将忠实地执行任何操作
a 捕获字段顺序由字段标志自动确定,转移相反。 滤波器使用场标志逐帧地在tb模式中进行选择。 如果没有可用的字段信息,那么这就像‘u’一样
u 捕获未知或变化,转移相反。 过滤器通过分析图像并选择在字段之间产生最佳匹配的替代方案,逐帧选择tb
T 捕获前5名,转移未知或变化。 过滤器使用图像分析在tp之间进行选择
B 捕获底部优先,转移未知或变化。 过滤器使用图像分析在bp之间进行选择
A 捕获由字段标志确定,传输未知或变化。 过滤器使用字段标志和图像分析在't''b''p'中进行选择。 如果没有可用的字段信息,那么这就像'U'一样。 这是默认模式
U 捕获和传输都是未知的或变化的。 过滤器仅使用图像分析在tbp中进行选择

29.125 pixdesctest

像素格式描述符测试过滤器,主要用于内部测试。 输出视频应等于输入视频。

例如:

format=monow, pixdesctest

可用于测试monowhite像素格式描述符定义。

29.126 pixscope

显示颜色通道的样本值。 主要用于检查颜色和级别。 支持的最低分辨率为640x480

过滤器接受以下选项:

x

设置范围X位置,X轴上的相对偏移。

y

设置范围Y位置,Y轴上的相对偏移。

w

设置范围宽度。

h

设置范围高度。

o

设置窗口不透明度。 该窗口还包含有关像素区域的统计信息。

wx

设置窗口X位置,X轴上的相对偏移。

wy

设置窗口Y位置,Y轴上的相对偏移。

29.127 pp

使用libpostproc启用指定的后处理子过滤器链。 应该使用GPL构建(--enable-gpl)自动选择此库。 子过滤器必须用'/'分隔,并且可以通过添加' - '来禁用。 每个子过滤器和一些选项具有可以互换使用的短名称和长名称,即dr / dering是相同的。

过滤器接受以下选项:

subfilters

设置后处理子过滤字符串。

所有子过滤器都有共同的选项来确定它们的范围:

a/autoq

尊重此子过滤器的质量命令。

c/chrom

也进行色度过滤(默认)。

y/nochrom

仅进行亮度滤波(无色度)。

n/noluma

仅进行色度过滤(无亮度)。

这些选项可以附加在子过滤器名称后面,以“|”分隔。

可用的子过滤器是:

‘hb/hdeblock[|difference[|flatness]]’

水平去块滤波器。

参数 解释
difference 差异因素,其中较高的值意味着更多的解块(默认值:32
flatness 平坦度阈值,其中较低的值表示更多解块(默认值:39
vb/vdeblock[|difference[|flatness]]

垂直去块滤波器。

参数 解释
difference 差异因素,其中较高的值意味着更多的解块(默认值:32
flatness 平坦度阈值,其中较低的值表示更多解块(默认值:39
ha/hadeblock[|difference[|flatness]]

精确的水平去块滤波器。

参数 解释
difference 差异因素,其中较高的值意味着更多的解块(默认值:32
flatness 平坦度阈值,其中较低的值表示更多解块(默认值:39
va/vadeblock[|difference[|flatness]]

精确的垂直去块滤波器。

参数 解释
difference 差异因素,其中较高的值意味着更多的解块(默认值:32
flatness 平坦度阈值,其中较低的值表示更多解块(默认值:39

水平和垂直去块滤波器共享差值和平坦度值,因此无法设置不同的水平和垂直阈值。

h1/x1hdeblock

实验水平解块滤波器。

v1/x1vdeblock

实验垂直去块滤波器。

dr/dering

Deringing过滤器。

tn/tmpnoise[|threshold1[|threshold2[|threshold3]]], temporal noise reducer’
参数 解释
threshold1 larger -> stronger filtering
threshold2 larger -> stronger filtering
threshold3 larger -> stronger filtering
al/autolevels[:f/fullyrange], automatic brightness / contrast correction
参数 解释
f/fullyrange 拉伸亮度为0-255
lb/linblenddeint 线性混合反交错滤波器,通过使用(1 2 1)滤波器过滤所有行来解除给定块的隔行扫描
li/linipoldeint

线性插值去隔行滤波器,通过每隔一行线性插值来对给定块进行去隔行扫描。

ci/cubicipoldeint

立方插值去隔行滤波器通过每隔一行立方插值来解除给定块的隔行扫描。

md/mediandeint

中值反交错滤波器,通过对每个第二行应用中值滤波器来解除给定块的隔行扫描。

fd/ffmpegdeint

FFmpeg反隔行扫描过滤器,通过使用(-1 4 2 4 -1)过滤器过滤每隔一行来解除给定块的隔行扫描。

l5/lowpass5

垂直应用FIR低通去隔行滤波器,通过使用(-1 2 6 2 -1)滤波器过滤所有行来解除给定块的隔行扫描。

fq/forceQuant[|quantizer]

使用指定的常量量化器覆盖输入中的量化器表。

解释
quantizer 用来使用的量化器
de/default

默认pp过滤器组合(hb | a,vb | a,dr | a)

fa/fast

快速pp滤波器组合(h1 | a,v1 | a,dr | a)

ac

高品质pp滤镜组合(ha | a | 128 | 7,va | a,dr | a)

29.127.1 示例

  • 应用水平和垂直解块,deringing和自动亮度/对比度:

      pp=hb/vb/dr/al
    
  • 应用没有亮度/对比度校正的默认滤镜:

      pp=de/-al
    
  • 应用默认过滤器和时间降噪器:

      pp=default/tmpnoise|1|2|3
    
  • 仅对亮度应用解块,并根据可用的CPU时间自动打开或关闭垂直解块:

      pp=hb|y/vb|a
    

29.128 pp7

应用后处理过滤器7。它是spp过滤器的变体,类似于具有7DCTspp = 6,其中在IDCT之后仅使用中心样本。

过滤器接受以下选项:

qp

强制一个恒定的量化参数。 它接受063范围内的整数。如果未设置,过滤器将使用视频流中的QP(如果可用)。

mode

设置阈值模式。 可用的模式是:

解释
hard 设置硬阈值
soft 设置软阈值(更好的去振铃效果,但可能是模糊)
medium 设置中等阈值(结果良好,默认)

29.129 premultiply

alpha预乘效果应用于使用第二流的第一平面作为alpha输入视频流。

两个流必须具有相同的尺寸和相同的像素格式。

过滤器接受以下选项:

planes

设置要处理的平面,将复制未处理的平面。 默认值为0xf,将处理所有平面。

inplace

不需要第二个输入进行处理,而是使用输入流中的alpha平面。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 195,980评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,422评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 143,130评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,553评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,408评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,326评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,720评论 3 386
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,373评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,678评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,722评论 2 312
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,486评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,335评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,738评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,009评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,283评论 1 251
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,692评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,893评论 2 335

推荐阅读更多精彩内容