FFplay文档解读-40-视频过滤器十五

  • Post author:
  • Post category:其他


29.140 removegrain


removegrain

滤镜是渐进式视频的空间降噪器。

m0

设置第一个平面的模式。

m1

设置第二个平面的模式。

m2

设置第三个平面的模式。

m3

设置第四个平面的模式。

模式范围为

0



24

。每种模式的描述如下:

0

保持输入平面不变。默认。

1

使用

8

个相邻像素的最小值和最大值剪切像素。

2

使用

8

个相邻像素的第二个最小值和最大值来剪切像素。

3

使用

8

个相邻像素的第三个最小值和最大值来剪切像素。

4

使用第

8

个相邻像素的第四个最小值和最大值来剪切像素。这相当于中值滤波器。

5

线敏感剪辑给出最小的变化。

6

行敏感剪辑,中间。

7

行敏感剪辑,中间。

8

行敏感剪辑,中间。

9

邻居像素最接近的行上的行敏感剪辑。

10

用最近的邻居替换目标像素。

11


[1 2 1]

水平和垂直内核模糊。

12

与模式

11

相同。

13


Bob

模式,从邻近像素最接近的行插入顶部字段。

14


Bob

模式,从邻近像素最接近的行插入底部字段。

15


Bob

模式,插入顶部字段。与

13

相同,但插值公式更复杂。

16


Bob

模式,插入底部字段。与

14

相同,但插值公式更复杂。

17

以最小值和最大值分别对应每对相邻像素的最大值和最小值来剪切像素。

18

使用相对邻居的线敏感剪辑,其与当前像素的最大距离最小。

19



8

个邻居的平均值替换像素。

20

平均

9

个像素(

[1 1 1]

水平和垂直模糊)。

21

使用相对邻居的平均值来剪切像素。

22

与模式

21

相同,但更简单,更快捷。

23

小边缘和光晕去除,但声称无用。

24

类似于

23

学习地址:

音视频新手快速入门必备系列-FFmpeg+SDL播放器开发实现-学习视频教程-腾讯课堂


【文章福利】免费领取更多音视频学习资料包、大厂面试题、技术视频和学习路线图,资料包括(C/C++,Linux,FFmpeg webRTC rtmp hls rtsp ffplay srs 等等)有需要的可以点击

1079654574

加群领取哦~

29.141 removelogo

使用图像文件抑制电视台徽标,以确定哪些像素包含徽标。它的工作原理是用相邻像素填充构成徽标的像素。

过滤器接受以下选项:

filename,f

设置过滤器位图文件,该文件可以是

libavformat

支持的任何图像格式。图像文件的宽度和高度必须与正在处理的视频流的宽度和高度相匹配。

提供的位图图像中值为零的像素不被视为徽标的一部分,非零像素被视为徽标的一部分。如果您使用白色

(255)

作为徽标而使用黑色

(0)

作为其余部分,那么您将是安全的。为了制作滤镜位图,建议拍摄带有徽标可见的黑框的屏幕截图,然后使用阈值滤镜,然后使用侵蚀滤镜一次或两次。

如果需要,可以手动修复少量斑点。请记住,如果未覆盖徽标像素,过滤器质量将大大降低。将太多像素标记为徽标的一部分并不会造成太大的伤害,但它会增加覆盖图像所需的模糊量,并会破坏超出必要的信息,而额外的像素会减慢大徽标的速度。

29.142 repeatfields

此过滤器使用

Video ES

标头中的

repeat_field

标志和基于其值的硬重复字段。

29.143 reverse

反转视频片段。

警告:此过滤器需要内存来缓冲整个剪辑,因此建议进行剪裁。

29.143.1 示例

  • 取一个剪辑的前

    5

    秒,并将其反转。

      trim=end=5,reverse
    

29.144 roberts

应用

roberts cross

运算符输入视频流。

过滤器接受以下选项:

planes

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

scale

设定值将与过滤结果相乘。

delta

设置将添加到筛选结果的值。

29.145 rotate

以弧度表示的任意角度旋转视频。

过滤器接受以下选项:

下面是可选参数的描述。

angle, a

设置一个表达式,用于顺时针旋转输入视频的角度,表示为弧度数。负值将导致逆时针旋转。默认情况下,它设置为

0

针对每个帧评估该表达式。

out_w,ow

设置输出宽度表达式,默认值为

iw

。在配置期间仅对此表达式求值一次。

out_h, oh

设置输出高度表达式,默认值为

ih

。在配置期间仅对此表达式求值一次。

bilinear

如果设置为

1

,则启用双线性插值,值

0

表示禁用。默认值为

1

fillcolor,c

设置用于填充旋转图像未覆盖的输出区域的颜色。有关此选项的一般语法,请检查

(ffmpeg-utils)颜色语法

。如果选择特殊值

"none"

,则不打印背景(例如,如果从不显示背景,则非常有用)。

默认值为

"black"

角度和输出大小的表达式可以包含以下常量和函数:

n

输入帧的序号,从

0

开始。在第一帧被过滤之前,它始终为

NAN

t

输入帧的时间(以秒为单位),配置过滤器时设置为

0

。在过滤第一帧之前,它始终为

NAN

hsub
VSUB

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

yuv422p



hsub



2



vsub



1

in_w,iw
in_h, ih

输入视频的宽度和高度

out_w,ow
out_h, oh

输出宽度和高度,即宽度和高度表达式指定的填充区域的大小

rotw(a)
roth(a)

完全包含由弧度旋转的输入视频所需的最小宽度/高度。

这些仅在计算

'out_w'



'out_h'

表达式时可用。

29.145.1 示例

  • 顺时针旋转

    PI/6

    弧度输入:

      rotate=PI/6
    
  • 逆时针旋转

    PI/6

    弧度输入:

      rotate=-PI/6
    
  • 顺时针旋转输入

    45

    度:

      rotate=45*PI/180
    


  • PI/3

    角度开始应用周期

    T

    的恒定旋转:

      rotate=PI/3+2*PI*t/T
    
  • 使输入视频旋转以

    T

    秒的周期和

    A

    弧度的幅度振荡:

      rotate=A*sin(2*PI/T*t)
    
  • 旋转视频,选择输出大小,以便整个旋转输入视频始终完全包含在输出中:

      rotate='2*PI*t:ow=hypot(iw,ih):oh=ow'
    
  • 旋转视频,减小输出大小,以便不显示任何背景:

      rotate=2*PI*t:ow='min(iw,ih)/sqrt(2)':oh=ow:c=none
    

29.145.2 命令行

该过滤器支持以下命令:

a, angle

设置角度表达式。 该命令接受相应选项的相同语法。

如果指定的表达式无效,则保持其当前值。

29.146 sab

应用形状自适应模糊。

过滤器接受以下选项:

luma_radius,lr

设置亮度模糊滤镜强度,必须是

0.1-4.0

范围内的值,默认值为

1.0

。值越大,图像越模糊,处理速度越慢。

luma_pre_filter_radius,lpfr

设置

luma

预滤波器半径,必须是

0.1-2.0

范围内的值,默认值为

1.0

luma_strength,ls

设置

luma

最大像素之间的差异仍然要考虑,必须是

0.1-100.0

范围内的值,默认值是

1.0

chroma_radius,cr

设置色度模糊滤镜强度,必须是

-0.9-4.0

范围内的值。值越大,图像越模糊,处理速度越慢。

chroma_pre_filter_radius,cpfr

设置色度预滤波器半径,必须是

-0.9-2.0

范围内的值。

‘chroma_strength,cs’

设置仍然要考虑的像素之间的色度最大差异,必须是-0.9-100.0范围内的值。

如果未明确指定,则每个色度选项值都设置为相应的亮度选项值。

29.147 scale

使用

libswscale

库缩放(调整大小)输入视频。

通过更改输出样本宽高比,缩放滤镜强制输出显示宽高比与输入相同。

如果输入图像格式与下一个过滤器请求的格式不同,则缩放过滤器会将输入转换为请求的格式。

29.147.1 选项

过滤器接受以下选项,或

libswscale

缩放器支持的任何选项。

有关缩放器选项的完整列表,请参阅

(ffmpeg-scaler)scaler_options

width, w
height, h

设置输出视频维度表达式。 默认值是输入维度。

如果

width



w

值为

0

,则输入宽度用于输出。 如果

height



h

值为

0

,则输入高度用于输出。

如果其中一个且只有一个值为

-n



n> = 1

,则比例过滤器将使用一个值,该值保持输入图像的纵横比,从另一个指定的维度计算。 之后,它将确保计算出的尺寸可被

n

整除,并在必要时调整该值。

如果两个值都是

-n



n> = 1

,则行为将与之前详细设置为

0

的两个值相同。

请参阅下面的维度表达式中使用的已接受常量列表。

eval

指定何时评估宽度和高度表达式。 它接受以下值:

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

默认值是:

‘init’

interl

设置隔行扫描模式。 它接受以下值:

解释
1 强制隔行扫描意识缩放
0 不要应用隔行扫描缩放
-1 根据源帧是否标记为隔行扫描,选择隔行扫描感知缩放

默认值是:

‘0’

flags

设置

libswscale

缩放标志。 有关完整的值列表,请参阅

(ffmpeg-scaler)sws_flags

。 如果未明确指定,则过滤器应用默认标志。

param0,param1

为需要它们的缩放算法设置

libswscale

输入参数。 有关完整文档,请参阅

(ffmpeg-scaler)sws_params

。 如果未明确指定,则过滤器应用空参数。

size,s

设置视频大小。 有关此选项的语法,请检查

(ffmpeg-utils)视频大小语法

in_color_matrix

out_color_matrix

设置

/

输出

YCbCr

颜色空间类型。

这允许覆盖自动检测的值,并允许强制用于输出和编码器的特定值。

如果未指定,则颜色空间类型取决于像素格式。

可能的值如下:

解释
auto 自动选择
bt709 符合国际电信联盟

(ITU)

建议书

BT.709

的格式
fcc 设置符合美国联邦通信委员会(

FCC

)联邦法规(

CFR

)标题

47(2003)73.682(a)

的色彩空间
bt601 设置符合以下条件的色彩空间:

1:国际电联无线电通信部门(ITU-R)建议书BT.601

2:

ITU-R Rec。 BT.470-6(1998)

系统

B,B1



G

3:电影电视工程师协会

(SMPTE)ST 170:2004

smpte240m 设置符合

SMPTE ST 240:1999

的色彩空间
in_range
out_range

设置

/

输出

YCbCr

样本范围。

这允许覆盖自动检测的值,并允许强制用于输出和编码器的特定值。 如果未指定,则范围取决于像素格式。 可能的值:

解释
auto/unknown 自动选择
jpeg/full/pc 设置全范围(

8

位亮度时为

0-255

mpeg/limited/tv 设置

MPEG

范围(

8

位亮度时为

16-235

force_original_aspect_ratio

如有必要,启用减小或增加输出视频宽度或高度以保持原始高宽比。 可能的值如下:

解释
disable 按指定缩放视频并禁用此功能
decrease 如果需要,输出视频尺寸将自动减小
increase 如果需要,输出视频尺寸将自动增加

此选项的一个有用实例是,当您知道特定设备的最大允许分辨率时,可以使用此选项将输出视频限制为该值,同时保留纵横比。 例如,设备

A

允许

1280x720

播放,的视频为

1920x800

。 使用此选项(将其设置为减小)并将

1280x720

指定到命令行会使输出

1280x533

请注意,这与为

'w'



'h'

指定

-1

不同,仍需要指定此选项的输出分辨率才能工作。


'w'



'h'

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

in_w
in_h

输入的宽度和高度。

iw
ih

这些与

in_w



in_h

相同。

out_w
out_h

输出(缩放)宽度和高度。

ow
oh

这些与

out_w



out_h

相同。

a



iw/ih

一样。

sar

输入样本宽高比。

dar

输入显示宽高比。 从

(iw / ih)* sar

计算。

hsub
vsub

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

yuv422p



hsub



2



vsub



1

ohsub
ovsub

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

yuv422p



hsub



2



vsub



1

29.147.2 示例

  • 将输入视频缩放到

    200x100

    的大小:

      scale=w=200:h=100
    

这相当于下面方法:

  •     scale=200:100
    

或者如下:

  •     scale=200x100
    
  • 指定输出大小的大小缩写:

      scale=qcif
    

也可以写成:

  •     scale=size=qcif
    
  • 将输入缩放为

    2x

      scale=w=2*iw:h=2*ih
    
  • 以上内容与:

      scale=2*in_w:2*in_h
    
  • 使用强制隔行缩放将输入缩放到

    2x

      scale=2*iw:2*ih:interl=1
    
  • 将输入缩放到一半大小:

      scale=w=iw/2:h=ih/2
    
  • 增加宽度,并将高度设置为相同的大小:

      scale=3/2*iw:ow
    
  • 寻找

    Greek harmony

    :

      scale=iw:1/PHI*iw
      scale=ih*PHI:ih
    
  • 增加高度,并将宽度设置为高度的

    3/2

      scale=w=3/2*oh:h=3/5*ih
    
  • 增加大小,使大小为色度子样本值的倍数:

      scale="trunc(3/2*iw/hsub)*hsub:trunc(3/2*ih/vsub)*vsub"
    
  • 将宽度增加到最大

    500

    像素,保持与输入相同的宽高比:

      scale=w='min(500\, iw*3/2):h=-1'
    
  • 通过组合

    scale



    setsar

    使像素成为正方形:

      scale='trunc(ih*dar):ih',setsar=1/1
    
  • 通过组合

    scale



    setsar

    使像素成为方形,确保结果分辨率均匀(某些编解码器需要):

      scale='trunc(ih*dar/2)*2:trunc(ih/2)*2',setsar=1/1
    

29.147.3 命令行

此筛选器支持以下命令:

  • width, w
    height, h
    

设置输出视频维度表达式。 该命令接受相应选项的相同语法。

如果指定的表达式无效,则保持其当前值。

29.148 scale_npp

使用

NVIDIA Performance Primitives(libnpp)



CUDA

视频帧上执行缩放和/或像素格式转换。 设置输出宽度和高度的工作方式与缩放滤镜的工作方式相同。

接受以下附加选项:

  • format
    

输出

CUDA

帧的像素格式。 如果设置为字符串

same

(默认值),则将保留输入格式。 请注意,硬件帧尚不支持自动格式协商和转换

  • interp_algo
    

用于调整大小的插值算法。 算法如下:

算法 解释
nn 最近的邻居
linear
cubic
cubic2p_bspline
2-parameter cubic (B=1, C=0)
cubic2p_catmullrom
2-parameter cubic (B=0, C=1/2)
cubic2p_b05c03
2-parameter cubic (B=1/2, C=3/10)
super 超级采样
lanczos

29.149 scale2ref

根据参考视频缩放(调整大小)输入视频。

有关可用选项的比例过滤器,

scale2ref

支持相同但使用参考视频而不是主输入作为基础。

scale2ref

还支持

'w'



'h'

选项的以下附加常量:

  • main_w
    main_h
    

主输入视频的宽度和高度

  • main_a
    



main_w/main_h

相同

  • main_sar
    

主输入视频的样本宽高比

  • main_dar,mdar
    

主输入视频的显示宽高比。 从

(main_w/main_h)* main_sar

计算。

  • main_hsub
    main_vsub
    

主输入视频的水平和垂直色度子样本值。 例如,对于像素格式

“yuv422p”



hsub



2



vsub



1

29.149.1 示例

  • 在覆盖之前缩放字幕流(

    b

    )以匹配主视频(

    a

    )的大小。

      'scale2ref[b][a];[a][b]overlay'



版权声明:本文为irainsa原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。