FFplay文档解读-33-视频过滤器八

前言

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

29.70 gblur

应用高斯模糊滤镜。

过滤器接受以下选项:

sigma

设置水平西格玛,高斯模糊的标准偏差。 默认值为0.5

steps

设置高斯近似的步数。 默认值是1

planes

设置要过滤的平面。 默认情况下,将过滤所有平面。

sigmaV

设置垂直sigma,如果为负,它将与sigma相同。 默认值为-1

29.71 geq

过滤器接受以下选项:

lum_expr,lum

设置亮度表达式。

cb_expr,cb

设置色度蓝色表达式。

cr_expr,cr

设置色度红色表达式。

alpha_expr, a

设置alpha表达式。

red_expr,r

设置红色表达式。

green_expr,g

设置绿色表达式。

blue_expr,b

设置蓝色表达式。

根据指定的选项选择颜色空间。如果指定了'lum_expr','cb_expr''cr_expr'选项之一,则过滤器将自动选择YCbCr颜色空间。如果指定了'red_expr','green_expr''blue_expr'选项之一,它将选择RGB颜色空间。

如果未定义其中一个色度表达式,则它会回落到另一个色度表达式上。如果未指定alpha表达式,则将评估为不透明值。如果没有指定色度表达式,它们将评估亮度表达式。

表达式可以使用以下变量和函数:

N

过滤帧的序号,从0开始。

X

Y

当前样本的坐标。

W

H

图像的宽度和高度。

SW

SH

宽度和高度比例取决于当前过滤的平面。它是相应的亮度平面像素数与当前平面数之间的比率。例如。对于YUV4:2:0,亮度平面的值为1,1,色度平面的值为0.5,0.5

T

当前帧的时间,以秒为单位表示。

p(x,y)

返回当前平面的位置(x,y)处的像素值。

lum(x,y)

返回亮度平面的位置(x,y)处的像素值。

cb(x,y)

返回蓝色差色度平面的位置(x,y)处的像素值。如果没有这样的plane,则返回0

cr(x,y)

返回红差色度平面的位置(x,y)处的像素值。如果没有这样的plane,则返回0。

r(x,y)

g(x,y)

b(x,y)

返回红色/绿色/蓝色分量的位置(x,y)处的像素值。如果没有这样的组件,则返回0

alpha(x,y)

返回alpha平面的位置(x,y)处的像素值。如果没有这样的plane,则返回0

对于函数,如果xy在区域之外,则该值将自动剪切到更近的边缘。

29.71.1 示例

  • 水平翻转图像:

      geq=p(W-X\,Y)
    
  • 生成具有角度PI/3100像素波长的二维正弦波:

      geq=128 + 100*sin(2*(PI/100)*(cos(PI/3)*(X-50*T) + sin(PI/3)*Y)):128:128
    
  • 产生一种奇特的神秘移动光线:

      nullsrc=s=256x256,geq=random(1)/hypot(X-cos(N*0.07)*W/2-W/2\,Y-sin(N*0.09)*H/2-H/2)^2*1000000*sin(N*0.02):128:128
    
  • 生成快速浮雕效果:

      format=gray,geq=lum_expr='(p(X,Y)+(256-p(X-4,Y-4)))/2'
    
  • 根据像素位置修改RGB分量:

      geq=r='X/W*r(X,Y)':g='(1-X/W)*g(X,Y)':b='(H-Y)/H*b(X,Y)'
    
  • 创建与输入大小相同的径向渐变(另请参见vignette过滤器):

      geq=lum=255*gauss((X/W-0.5)*3)*gauss((Y/H-0.5)*3)/gauss(0)/gauss(0),format=gray
    

29.72 gradfun

通过截断到8位颜色深度来修复有时引入几乎平坦区域的条带伪影。插入应该位于乐队所在位置的渐变,并将它们抖动。

它仅用于播放。在有损压缩之前不要使用它,因为压缩往往会失去抖动并带回带。

它接受以下参数:

strength

滤镜将改变任何一个像素的最大量。这也是检测几乎平坦区域的阈值。可接受的值范围从.5164;默认值为1.2。超出范围的值将被剪切到有效范围。

radius

适合渐变的邻域。半径越大,渐变越平滑,但也会阻止滤镜修改详细区域附近的像素。可接受的值为8-32;默认值为16。超出范围的值将被剪切到有效范围。

或者,可以将选项指定为扁平字符串:strength [:radius]

29.72.1 示例

  • 使用强度为3.5,半径为8的过滤器:

      gradfun=3.5:8
    
  • 指定半径,省略强度(将回落到默认值):

      gradfun=radius=8
    

29.73 haldclut

Hald CLUT应用于视频流。

第一个输入是要处理的视频流,第二个输入是Hald CLUTHald CLUT输入可以是简单图像或完整视频流。

过滤器接受以下选项:

shortest

最短输入终止时强制终止。 默认值为0

repeatlast

在流结束后继续应用最后一个CLUT。 在达到CLUT的最后一帧后,值为0将禁用过滤器。 默认值为1

haldclut也有与lut3d相同的插值选项(两个滤波器共享相同的内部结构)。

有关Hald CLUT的更多信息,请访问Eskil Steenberg的网站(Hald CLUT作者),网址为http://www.quelsolaar.com/technology/clut.html

29.73.1 Workflow 示例

29.73.1.1 Hald CLUT video stream

生成一个身份Hald CLUT流改变了各种效果:

ffmpeg -f lavfi -i haldclutsrc=8 -vf "hue=H=2*PI*t:s=sin(2*PI*t)+1, curves=cross_process" -t 10 -c:v ffv1 clut.nut

注意:确保使用无损编解码器。

然后将它与haldclut一起使用,将其应用于一些随机流:

ffmpeg -f lavfi -i mandelbrot -i clut.nut -filter_complex '[0][1] haldclut' -t 20 mandelclut.mkv

Hald CLUT将应用于10秒(clut.nut的持续时间),然后该CLUT流的最新图片将应用于mandelbrot流的剩余帧。

29.73.1.2 Hald CLUT with preview

Hald CLUT应该是Level * Level * Level by Level * Level * Level像素的平方图像。 对于给定的Hald CLUT,FFmpeg将从图片的左上角开始选择最大可能的正方形。 剩余的填充像素(底部或右侧)将被忽略。 此区域可用于添加Hald CLUT的预览。

通常,haldclut过滤器将支持以下生成的Hald CLUT

ffmpeg -f lavfi -i haldclutsrc=8 -vf "
   pad=iw+320 [padded_clut];
   smptebars=s=320x256, split [a][b];
   [padded_clut][a] overlay=W-320:h, curves=color_negative [main];
   [main][b] overlay=W-320" -frames:v 1 clut.png

它包含原始和CLUT效果的预览:SMPTE颜色条显示在右上方,并在颜色变化处理的相同颜色条下方。

然后,可以通过以下方式显示此Hald CLUT的效果:

ffplay input.mkv -vf "movie=clut.png, [in] haldclut"

29.74 hflip

水平翻转输入视频。

例如,要使用ffmpeg水平翻转输入视频:

ffmpeg -i in.avi -vf "hflip" out.avi

29.75 histeq

此滤镜在每帧的基础上应用全局颜色直方图均衡。

它可用于校正具有压缩像素强度范围的视频。滤波器重新分配像素强度以均衡它们在强度范围内的分布。它可以被视为"automatically adjusting contrast filter"(“自动调整对比度滤波器”)。此滤镜仅用于纠正降级或捕获不良的源视频。

过滤器接受以下选项:

strength

确定要应用的均衡量。随着强度的降低,像素强度的分布越来越接近输入帧的分布。该值必须是[0,1]范围内的浮点数,默认为0.200

intensity

设置可生成的最大强度并适当缩放输出值。应根据需要设定强度,然后如果需要可以限制强度以避免洗掉。该值必须是[0,1]范围内的浮点数,默认为0.210

antibanding

设置antibanding水平。如果启用,则滤波器将随机地改变输出像素的亮度一小部分,以避免直方图的条带化。可能的值为noneweakstrong。它默认为none

29.76 histogram

计算并绘制输入视频的颜色分布直方图。

计算出的直方图是图像中颜色分量分布的表示。

标准直方图显示图像中的颜色分量分布。 显示每个颜色分量的颜色图表。 根据输入格式显示当前帧中YUVARGB分量的分布。 在每个图下方,显示了颜色分量比例计。

过滤器接受以下选项:

level_height

设置关卡高度。 默认值为200。允许范围为[50,2048]

scale_height

设置色标高度。 默认值为12。允许范围为[0,40]

display_mode

设置显示模式。 它接受以下值:

解释
stack 每个颜色组件图放在彼此下方
parade 每个颜色分量图并排放置
overlay 除了表示颜色分量的图形直接叠加在彼此之外时,呈现与游行中的信息相同的信息

默认值是:stack

levels_mode

设置模式。 可以是线性的,也可以是对数的。 默认是线性的。

components

设置要显示的颜色组件。 默认值为7

fgopacity

设置前景不透明度。 默认值为0.7

bgopacity

设置背景不透明度。 默认值为0.5

29.76.1 示例

  • 计算并绘制直方图:

      ffplay -i input -vf histogram
    

29.77 hqdn3d

这是一款高精度/高质量的3d去噪滤波器。 它旨在减少图像噪声,产生平滑的图像并使静止图像真正静止。 它应该增强压缩性。

它接受以下可选参数:

luma_spatial

非负浮点数,指定空间亮度强度。 它默认为4.0

chroma_spatial

指定空间色度强度的非负浮点数。 默认为3.0 * luma_spatial / 4.0

luma_tmp

浮点数,指定亮度时间强度。 默认为6.0 * luma_spatial / 4.0

chroma_tmp

浮点数,指定色度时间强度。 它默认为luma_tmp * chroma_spatial / luma_spatial

29.78 hwdownload

将硬件帧下载到系统内存。

输入必须是硬件帧,输出是非硬件格式。 并非所有格式都支持输出 -可能需要在图表后面插入一个额外的‘format’过滤器,以便以支持的格式输出输出。

29.79 hwmap

将硬件帧映射到系统内存或其他设备。

该滤波器有几种不同的操作模式; 使用哪一个取决于输入和输出格式:

  • 硬件帧输入,正常帧输出。

  将输入帧映射到系统内存并将它们传递给输出。 如果稍后需要原始硬件框架(例如,在覆盖部分其他内容之后),则可以在下一个模式中再次使用hwmap过滤器来检索它。

  • 正常帧输入,硬件帧输出。

  如果输入实际上是软件映射的硬件帧,则取消映射 - 即返回原始硬件帧。

  否则,必须提供设备。 在该设备上为输出创建新的硬件表面,然后将它们映射回输入处的软件格式,并将这些帧提供给前面的过滤器。 这将像'hwupload'过滤器一样,但当输入已经是兼容格式时,可能能够避免额外的副本。

  • 硬件帧输入和输出。

  必须直接或使用'derive_device'选项为输出提供设备。 输入和输出设备必须是不同类型和兼容的 - 这的确切含义取决于系统,但通常意味着它们必须引用相同的底层硬件上下文(例如,参考相同的图形卡)。

  如果输入帧最初是在输出设备上创建的,则取消映射以检索原始帧。

  否则,将帧映射到输出设备 - 在输出上创建与输入帧相对应的新硬件帧。

接受以下附加参数:

mode

设置帧映射模式。 下面是一些组合:

组合 解释
read 映射的帧应该是可读的
write 映射的帧应该是可写的
overwrite 映射将始终覆盖整个帧。

在某些情况下,这可以改善性能,因为不需要加载帧的原始内容。
direct 映射不得涉及任何复制。

在某些情况下,会创建对帧副本的间接映射,在这种情况下,无法进行直接映射或者会出现意外的属性。 设置此标志可确保映射是直接的,如果不可能则会失败。

如果未指定,则默认为read+write

derive_device type

而不是使用初始化时提供的设备,而是从输入帧存在的设备派生类型类型的新设备。

reverse

在硬件到硬件映射中,反向映射 - 在接收器中创建帧并将它们映射回源。 在需要在一个方向上进行映射但在所使用的设备仅支持相反方向的某些情况下,这可能是必要的。

此选项很危险 - 如果对该过滤器的输出有任何其他约束,它可能会以未定义的方式破坏前面的过滤器。 如果不完全理解其使用的含义,请不要使用它。

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

推荐阅读更多精彩内容