FFPlay专辑

FFplay文档解读-39-视频过滤器十四

2018-11-15  本文已影响17人  张芳涛

前言

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

29.130 prewitt

应用prewitt运算符输入视频流。

过滤器接受以下选项:

planes

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

scale

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

delta

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

29.131 program_opencl

使用OpenCL程序过滤视频。

source

OpenCL程序源文件。

kernel

程序中的内核名称。

inputs

过滤器的输入数量。 默认为1

size, s

输出帧的大小。 默认值与第一个输入相同。

程序源文件必须包含具有给定名称的内核函数,该函数将针对输出的每个平面运行一次。 平面上的每次运行都会作为单独的2D全局NDRange排队,每个像素都会生成一个工作项。 因此,每个工作项的全局ID偏移量是目标图像中像素的坐标。

内核函数需要采用以下参数:

  这个图像将成为输出; 内核应该写出所有内容。

  这是一个从零开始的计数器,每帧增加一个。

  这些是每个输入的最新图像。 内核可以从它们读取以生成输出,但是它们无法写入。

示例程序如下:

29.132 pseudocolor

用伪彩色改变视频中的帧颜色。

此过滤器接受以下选项:

c0

设置像素第一组件表达式。

c1

设置像素第二组件表达式。

c2

设置像素第三组件表达式。

c3

设置像素第四个组件表达式,对应于alpha组件。

i

设置组件以用作改变颜色的基础。

它们中的每一个都指定用于计算相应像素分量值的查找表的表达式。

表达式可以包含以下常量和函数:

w
h

输入的宽度和高度。

val

像素组件的输入值。

ymin,umin,vmin,amin

允许的最小组件值。

ymax,umax,vmax,amax

允许的最大组件值。

所有表达式默认为val

29.132.1 示例

29.133 psnr

获取两个输入视频之间的平均,最大和最小PSNR(峰值信噪比)。

此过滤器输入两个输入视频,第一个输入被视为"main"源,并且不变地传递到输出。 第二输入用作用于计算PSNR"reference"视频。

两个视频输入必须具有相同的分辨率和像素格式才能使此滤镜正常工作。 此外,它假设两个输入具有相同的帧数,逐个进行比较。

通过测井系统打印获得的平均PSNR

滤波器存储每帧的累积MSE(均方误差),并且在处理结束时,它在所有帧上均等地平均,并且应用以下公式来获得PSNR

PSNR = 10*log10(MAX^2/MSE)

其中MAX是图像每个分量的最大值的平均值。

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

stats_file,f

如果指定,则过滤器将使用指定的文件来保存每个帧的PSNR。当filename等于-时,数据被发送到标准输出。

stats_version

指定要使用的stats文件格式的版本。每种格式的详细信息如下。默认值为1

stats_add_max

确定是否将最大值输出到统计日志。默认值为0。需要stats_version> = 2。如果设置且stats_version <2,则过滤器将返回错误。

此过滤器还支持framesync选项。

如果选择了stats_file,则打印的文件包含表单键的键/值对序列:每个比较的帧对的值。

如果指定了stats_version大于1,则标题行位于每帧对统计数据列表之前,其中键值对遵循帧格式,并带有以下参数:

psnr_log_version

日志文件格式的版本。将匹配stats_version

fields

日志中包含的每帧对参数的逗号分隔列表。

每个所示的每帧对参数的描述如下:

n

输入帧的序号,从1开始

mse_avg

均方误差在所有图像分量上平均的比较帧的逐像素平均差异。

mse_y,mse_u,mse_v,mse_r,mse_g,mse_b,mse_a

均值平方误差由后缀指定的组件的比较帧的逐像素平均差异。

psnr_y,psnr_u,psnr_v,psnr_r,psnr_g,psnr_b,psnr_a

由后缀指定的组件的比较帧的峰值信噪比。

max_avg,max_y,max_u,max_v

每个通道的最大允许值,以及所有通道的平均值。

例如:

movie = ref_movie.mpg,setpts = PTS-STARTPTS [main];
[main] [ref] psnr =“stats_file = stats.log”[out]

在此示例中,正在处理的输入文件与参考文件ref_movie.mpg进行比较。每个帧的PSNR存储在stats.log中。

29.134 pullup

下拉式反转(反转电视电影)过滤器,能够处理混合的硬电视电影,24000/1001 fps渐进和30000/1001 fps渐进内容。

上拉滤波器旨在利用未来的背景来做出决策。 此过滤器在没有锁定到要跟随的模式的意义上是无状态的,但它反过来期待以下字段以识别匹配并重建渐进帧。

要生成具有均匀帧率的内容,请在上拉后插入fps滤波器,如果输入帧速率为29.97fps,则使用fps = 24000/1001,对于30fps使用fps = 24,使用(稀有)电视电影25fps输入。

过滤器接受以下选项:

jl
jr
jt
jb

这些选项分别在图像的左侧,右侧,顶部和底部设置要忽略的"junk"量。 左和右以8像素为单位,而顶部和底部以2行为单位。 默认值是每边8像素。

sb

设置严格的休息时间。 将此选项设置为1将减少滤波器生成偶然不匹配帧的机会,但也可能导致在高运动序列期间丢弃过多帧。 相反,将其设置为-1将使过滤器匹配字段更容易。 这可以帮助处理视频,其中字段之间存在轻微模糊,但是也可能导致输出中存在交错帧。 默认值为0

mp

设置要使用的度量标准平面。 它接受以下值:

解释
l 使用luma plane
u 使用chroma blue plane
v 使用chroma red plane

可以将此选项设置为使用色度平面而不是默认亮度平面来进行滤波器的计算。 这可以提高非常干净的源材料的准确度,但更有可能降低精度,尤其是在存在色度噪声(彩虹效应)或任何灰度视频的情况下。 将'mp'设置为色度平面的主要目的是减少CPU负载并使上拉在慢速机器上实时可用。

为获得最佳结果(输出文件中没有重复的帧),必须更改输出帧速率。 例如,要反转电视电影NTSC输入:

ffmpeg -i input -vf pullup -r 24000/1001 ...

29.135 qp

更改视频量化参数(QP)。

过滤器接受以下选项:

qp

设置量化参数的表达式。

表达式通过eval API进行评估,并且可以包含以下常量:

known

如果index不是129则为1,否则为0

qp

顺序索引从-129128

29.135.1 示例

29.136 random

将帧内部缓存中的视频帧刷新为随机顺序。 没有帧被丢弃。 灵感来自frei0r神经过滤器。

frames

设置内部缓存帧数的大小,范围为2512。默认值为30

seed

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

29.137 readeia608

从视频帧的顶行读取隐藏式字幕(EIA-608)信息。

此过滤器为lavfi.readeia608.X.cclavfi.readeia608.X.line添加帧元数据,其中X是具有EIA-608数据的标识行的编号(从0开始)。每个元数据值的描述如下:

lavfi.readeia608.X.cc

这两个字节存储为EIA-608数据(以十六进制打印)。

lavfi.readeia608.X.line

识别和读取EIA-608数据的行号。

此过滤器接受以下选项:

scan_min

设置该行以开始扫描EIA-608数据。默认值为0

scan_max

将行设置为结束扫描EIA-608数据。默认值为29

mac

设置同步码检测的最小可接受幅度变化。默认值为0.2。允许范围为[0.001 - 1]

spw

设置为同步代码检测保留的宽度比率。默认值为0.27。允许范围为[0.01 - 0.7]

mhd

设置同步代码检测的最大峰高差。默认值为0.1。允许范围是[0.0 - 0.5]

mpd

设置同步代码检测的最大峰值周期差。默认值为0.1。允许范围是[0.0 - 0.5]

msd

设置前两个最大起始码位差异。默认值为0.02。允许范围是[0.0 - 0.5]

bhd

设置与第3个起始码位相比的位高度的最小比率。默认值为0.75。允许范围为[0.01 - 1]

th_w

设置白色阈值。默认值为0.35。允许范围是[0.1 - 1]

th_b

设置黑色阈值。默认值为0.15。允许范围是[0.0 - 0.5]

chp

启用检查奇偶校验位。如果出现奇偶校验错误,则过滤器将为该字符输出0x00。默认值为false

29.137.1 示例

29.138 readvitc

从视频帧的顶行读取垂直间隔时间码(VITC)信息。

如果检测到有效时间码,则过滤器将帧元数据密钥lavfi.readvitc.tc_str与时间码值相加。 根据是否已找到时间码数据,将进一步的元数据键lavfi.readvitc.found设置为0/1

此过滤器接受以下选项:

scan_max

设置要扫描VITC数据的最大行数。 如果该值设置为-1,则扫描完整的视频帧。 默认值为45

thr_b

设置黑色的亮度阈值。 接受[0.0,1.0]范围内的浮点数,默认值为0.2。 该值必须等于或小于thr_w

thr_w

设置白色的亮度阈值。 接受[0.0,1.0]范围内的浮点数,默认值为0.6。 该值必须等于或大于thr_b

29.138.1 示例

29.139 remap

使用2nd:Xmap3rd:Ymap输入视频流重新映射像素。

将从源(x,y)位置拾取位置(X,Y)处的目标像素,其中x = Xmap(X,Y)并且y = Ymap(X,Y)。 如果映射值超出范围,则像素的零值将用于目标像素。

XmapYmap输入视频流必须具有相同的尺寸。 输出视频流将具有Xmap / Ymap视频流尺寸。 XmapYmap输入视频流是16bit深度,单通道。

上一篇下一篇

猜你喜欢

热点阅读