29.130 prewitt

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

过滤器接受以下选项:

planes

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

scale

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

delta

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

29.131 program_opencl

使用OpenCL程序过滤视频。

source

OpenCL程序源文件。

kernel

程序中的内核名称。

inputs

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

size, s

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

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

 学习地址:音视频新手快速入门必备系列-FFmpeg+SDL播放器开发实现-学习视频教程-腾讯课堂
【文章福利】免费领取更多音视频学习资料包、大厂面试题、技术视频和学习路线图,资料包括(C/C++,Linux,FFmpeg webRTC rtmp hls rtsp ffplay srs 等等)有需要的可以点击1079654574加群领取哦~

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

  • 目标图像,__ write_only image2d_t

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

  • 帧索引,unsigned int

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

  • 源图像,__ read_only image2d_t

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

示例程序如下:

  • 将输入复制到输出(输出必须与输入的大小相同)。

      __kernel void copy(__write_only image2d_t destination,unsigned int index,__read_only  image2d_t source){const sampler_t sampler = CLK_NORMALIZED_COORDS_FALSE;int2 location = (int2)(get_global_id(0), get_global_id(1));float4 value = read_imagef(source, sampler, location);write_imagef(destination, location, value);}
    
  • 应用简单的转换,使用索引计数器增加一个量的输入。 采样器对像素值进行线性插值,输出的尺寸不必与输入相同。

      __kernel void rotate_image(__write_only image2d_t dst,unsigned int index,__read_only  image2d_t src){const sampler_t sampler = (CLK_NORMALIZED_COORDS_FALSE |CLK_FILTER_LINEAR);float angle = (float)index / 100.0f;float2 dst_dim = convert_float2(get_image_dim(dst));float2 src_dim = convert_float2(get_image_dim(src));float2 dst_cen = dst_dim / 2.0f;float2 src_cen = src_dim / 2.0f;int2   dst_loc = (int2)(get_global_id(0), get_global_id(1));float2 dst_pos = convert_float2(dst_loc) - dst_cen;float2 src_pos = {cos(angle) * dst_pos.x - sin(angle) * dst_pos.y,sin(angle) * dst_pos.x + cos(angle) * dst_pos.y};src_pos = src_pos * src_dim / dst_dim;float2 src_loc = src_pos + src_cen;if (src_loc.x < 0.0f      || src_loc.y < 0.0f ||src_loc.x > src_dim.x || src_loc.y > src_dim.y)write_imagef(dst, dst_loc, 0.5f);elsewrite_imagef(dst, dst_loc, read_imagef(src, sampler, src_loc));}
    
  • 将两个输入混合在一起,每个输入的使用量随索引计数器而变化。

      __kernel void blend_images(__write_only image2d_t dst,unsigned int index,__read_only  image2d_t src1,__read_only  image2d_t src2){const sampler_t sampler = (CLK_NORMALIZED_COORDS_FALSE |CLK_FILTER_LINEAR);float blend = (cos((float)index / 50.0f) + 1.0f) / 2.0f;int2  dst_loc = (int2)(get_global_id(0), get_global_id(1));int2 src1_loc = dst_loc * get_image_dim(src1) / get_image_dim(dst);int2 src2_loc = dst_loc * get_image_dim(src2) / get_image_dim(dst);float4 val1 = read_imagef(src1, sampler, src1_loc);float4 val2 = read_imagef(src2, sampler, src2_loc);write_imagef(dst, dst_loc, val1 * blend + val2 * (1.0f - blend));}
    

29.132 pseudocolor

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

此过滤器接受以下选项:

c0

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

c1

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

c2

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

c3

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

i

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

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

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

w
h

输入的宽度和高度。

val

像素组件的输入值。

ymin,umin,vmin,amin

允许的最小组件值。

ymax,umax,vmax,amax

允许的最大组件值。

所有表达式默认为val

29.132.1 示例

  • 将太高的亮度值更改为渐变:

      pseudocolor="'if(between(val,ymax,amax),lerp(ymin,ymax,(val-ymax)/(amax-ymax)),-1):if(between(val,ymax,amax),lerp(umax,umin,(val-ymax)/(amax-ymax)),-1):if(between(val,ymax,amax),lerp(vmin,vmax,(val-ymax)/(amax-ymax)),-1):-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 示例

  • 一些方程如下:

    qp=2+2sin(PIqp)

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 示例

  • 输出具有显示时间的csv和识别的EIA-608字幕数据的前两行。

      ffprobe -f lavfi -i movie=captioned_video.mov,readeia608 -show_entries frame=pkt_pts_time:frame_tags=lavfi.readeia608.0.cc,lavfi.readeia608.1.cc -of csv
    

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 示例

  • 检测VITC数据并将其绘制到视频帧上; 如果没有检测到有效的VITC,请绘制--:--:--:--作为占位符:

      ffmpeg -i input.avi -filter:v 'readvitc,drawtext=fontfile=FreeMono.ttf:text=%{metadata\\:lavfi.readvitc.tc_str\\:--\\\\\\:--\\\\\\:--\\\\\\:--}:x=(w-tw)/2:y=400-ascent'
    

29.139 remap

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

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

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

FFplay文档解读-39-视频过滤器十四相关推荐

  1. FFplay文档解读-41-视频过滤器十六

    29.150 selectivecolor 将青色,品红色,黄色和黑色(CMYK)调整为特定颜色范围(例如"reds","yellows","gree ...

  2. FFplay文档解读-43-视频过滤器十八

    29.170 telecine 将电视电影处理应用于视频. 此过滤器接受以下选项: first_field 选项 解释 top, t top field first bottom, b 底部字段优先默 ...

  3. FFplay文档解读-22-音频过滤器七

    26.60 loudnorm EBU R128响度归一化.包括动态和线性归一化模式.支持单通道(直播,文件)和双通(文件)模式.该算法可以针对IL,LRA和最大真实峰值.为了准确地检测真实峰值,音频流 ...

  4. FFplay文档解读-31-视频过滤器六

    29.50 elbg 使用ELBG(增强型LBG)算法应用海报效果. 对于每个输入图像,滤波器将根据码本长度(即不同输出颜色的数量)计算从输入到输出的最佳映射. 此过滤器接受以下选项. codeboo ...

  5. FFplay文档解读-45-视频过滤器二十

    29.190 w3fdif 对输入视频进行去交错(w3fdif代表Weston 3 Field Deinterlacing Filter). 基于Martin Weston为BBC R&D描述 ...

  6. FFplay文档解读-47-多媒体过滤器一

    32. 多媒体过滤器 以下是当前可用的多媒体过滤器的说明. 32.1 abitscope 将输入音频转换为视频输出,显示音频位范围. 过滤器接受以下选项: rate,r 设置帧速率,表示为每秒帧数. ...

  7. FFplay文档解读-49-多媒体过滤器三

    32.14 sendcmd, asendcmd 将命令发送到filtergraph中的过滤器. 这些过滤器读取要发送到filtergraph中其他过滤器的命令. 必须在两个视频滤镜之间插入sendcm ...

  8. FFplay文档解读-16-音频过滤器一

    26. 音频过滤器 配置FFmpeg构建时,可以使用--disable-filters禁用任何现有过滤器. 配置输出将显示构建中包含的音频过滤器. 以下是当前可用音频过滤器的说明. 26.1 acom ...

  9. FFplay文档解读-20-音频过滤器五

    26.41 chorus 为音频添加合唱效果. 可以使单个声音听起来像合唱,但也可以应用于乐器. 合唱类似于具有短延迟的回声效果,但是对于回声,延迟是恒定的,伴随合唱,使用正弦或三角调制来改变它. 调 ...

最新文章

  1. 静态库符号文件冲突的解决办法,已实践OK, mark
  2. html新增了哪些功能,HTML5相比HTML新增了哪些功能?
  3. opencv 人脸识别_Python学习:基于Opencv来快速实现人脸识别(完整版)
  4. handler和thread之间如何传输数据_使用Mac OS X如何开启和配置防火墙
  5. .net宿舍管理系统 mysql_基于.NET CORE的精美后台管理系统-RuoYi C#版
  6. Android适配底部返回键等虚拟键盘的完美解决方案
  7. linux版本的redis bin,redis-4.0.2.tar.gz for centos的linux系统版本下载(安装详细步骤)...
  8. 智慧楼宇、消防系统、门禁管理、暖通空调、给排水、变配电、设备管理、停车管理、能源管理、故障检测、客流统计、运行控制、权限分配、物联网、Axure原型、rp原型、产品原型
  9. contact form 7如何设置placeholder让提示文字显示在输入框中
  10. 贪心高性能神经网络与AI芯片~学习笔记总计1
  11. Verilog学习之路(7)— 数字加法器
  12. 记一次配置深信服设备的过程
  13. 这是一篇来源于阿里内部技术论坛的文章
  14. 实现计算机联网的最大好处是,职.称计算机考试多项选择题考试卷模拟考试题...
  15. 最多只需三步,彻底解决VB6中不能加载MSCOMCTL.OCX的提示
  16. arcgis10.2跨域解决方案
  17. 服务器上的东西丢了怎么找回来,东西丢了不要急,教你用周易古诀找回失物!...
  18. Apache NiFi 典型案例
  19. GoldenDict使用说明
  20. FTP协议的工作流程

热门文章

  1. 【转】编程思维轻松培养一个有条理,思路清晰的孩子
  2. 搭建Winmail邮件系统
  3. 数据增强系列(2)如何使用Augly库进行数据增强
  4. Basler|基于OpenCV的Basler相机采集图像程序
  5. base64图片去白底
  6. docker 安装 oracle11g
  7. APM32 ST-LINK不能刷入
  8. 解决深度Deepin20应用商店闪退
  9. 筑牢数字基础设施:华为笔下的中国诗意
  10. Unity物体自发光