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

news/2024/7/2 9:01:19

29.170 telecine

将电视电影处理应用于视频。

此过滤器接受以下选项:

first_field
选项解释
top, ttop field first
bottom, b底部字段优先默认值为top
pattern

一串数字,表示希望应用的下拉模式。 默认值为23

Some typical patterns:

NTSC output (30i):
27.5p: 32222
24p: 23 (classic)
24p: 2332 (preferred)
20p: 33
18p: 334
16p: 3444

PAL output (25i):
27.5p: 12222
24p: 222222222223 ("Euro pulldown")
16.67p: 33
16p: 33333334

29.171 threshold

将阈值效果应用于视频流。

此过滤器需要四个视频流才能执行阈值处理。 第一个流是我们正在过滤的流。 第二流保持阈值,第三流保持最小值,最后,第四流保持最大值。

过滤器接受以下选项:

planes

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

例如,如果第一流像素的分量值小于来自第二阈值流的像素分量的阈值,则将拾取第三流值,否则将拾取第四流像素分量值。

使用颜色源过滤器可以执行各种类型的阈值处理:

29.171.1 示例

  • 二进制阈值,使用灰色作为阈值:

      ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=black -f lavfi -i color=white -lavfi threshold output.avi
    
  • 反转二进制阈值,使用灰色作为阈值:

      ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=white -f lavfi -i color=black -lavfi threshold output.avi
    
  • 截断二进制阈值,使用灰色作为阈值:

      ffmpeg -i 320x240.avi -f lavfi -i color=gray -i 320x240.avi -f lavfi -i color=gray -lavfi threshold output.avi
    
  • 阈值为零,使用灰色作为阈值:

      ffmpeg -i 320x240.avi -f lavfi -i color=gray -f lavfi -i color=white -i 320x240.avi -lavfi threshold output.avi
    
  • 使用灰色作为阈值将反转阈值设置为零:

      ffmpeg -i 320x240.avi -f lavfi -i color=gray -i 320x240.avi -f lavfi -i color=white -lavfi threshold output.avi
    

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

  

29.172 thumbnail

在给定的连续帧序列中选择最具代表性的帧。

过滤器接受以下选项:

n

设置帧批量大小进行分析; 在一组n帧中,过滤器将选择其中一个,然后处理下一批n帧直到结束。 默认值为100

由于过滤器会跟踪整个帧序列,因此较大的n值将导致较高的内存使用量,因此不建议使用较高的值。

29.172.1 示例

  • 50帧提取一张图片:

      thumbnail=50
    
  • 使用ffmpeg创建缩略图的完整示例:

      ffmpeg -i in.avi -vf thumbnail,scale=300:200 -frames:v 1 out.png
    

29.173 tile

将几个连续的帧拼接在一起。

过滤器接受以下选项:

layout

设置网格大小(即行数和列数)。有关此选项的语法,请检查(ffmpeg-utils)视频大小语法。

nb_frames

设置给定区域中要渲染的最大帧数。它必须小于或等于wxh。默认值为0,表示将使用所有区域。

margin

设置外边框边距(以像素为单位)。

padding

设置内边框厚度(即帧之间的像素数)。有关更高级的填充选项(例如边缘的值不同),请参阅填充视频滤镜。

color

指定未使用区域的颜色。有关此选项的语法,请检查(ffmpeg-utils)颜色语法。颜色的默认值为"black"

overlap

将多个连续帧拼接在一起时,设置要重叠的帧数。该值必须介于0nb_frames -1之间。

init_padding

在显示第一个输出帧之前,将帧数设置为最初为空。这可以控制获得第一个输出帧的时间。该值必须介于0nb_frames -1之间。

29.173.1 示例

  • 在电影中制作所有关键帧('-skip_frame nokey')8x8 PNG图块:

      ffmpeg -skip_frame nokey -i file.avi -vf 'scale=128:72,tile=8x8' -an -vsync 0 keyframes%03d.png
    

'-vsync 0'是必要的,以防止ffmpeg复制每个输出帧以适应最初检测到的帧速率。

  • 使用混合平面和命名选项在3x2帧的区域中显示5张图片,其间有7个像素,初始边距为2像素:

      tile=3x2:nb_frames=5:padding=7:margin=2
    

29.174 tinterlace

执行各种类型的时域隔行扫描。

帧从1开始计数,因此第一个输入帧被视为奇数。

过滤器接受以下选项:

mode

指定隔行扫描的模式。 此选项也可以单独指定为值。 请参阅下文,了解此选项的值列表。

可用值包括:

merge, 0

将奇数帧移动到上部字段,甚至移动到下部字段,以半帧速率生成双倍高度帧。

------> time
Input:
Frame 1         Frame 2         Frame 3         Frame 4

11111           22222           33333           44444
11111           22222           33333           44444
11111           22222           33333           44444
11111           22222           33333           44444

Output:
11111                           33333
22222                           44444
11111                           33333
22222                           44444
11111                           33333
22222                           44444
11111                           33333
22222                           44444

drop_even, 1

仅输出奇数帧,偶数帧被丢弃,生成半帧速率不变的帧。

------> time
Input:
Frame 1         Frame 2         Frame 3         Frame 4

11111           22222           33333           44444
11111           22222           33333           44444
11111           22222           33333           44444
11111           22222           33333           44444

Output:
11111                           33333
11111                           33333
11111                           33333
11111                           33333

drop_odd, 2

仅输出偶数帧,丢弃奇数帧,生成半帧速率不变的帧。

------> time
Input:
Frame 1         Frame 2         Frame 3         Frame 4

11111           22222           33333           44444
11111           22222           33333           44444
11111           22222           33333           44444
11111           22222           33333           44444

Output:
            22222                           44444
            22222                           44444
            22222                           44444
            22222                           44444

pad, 3

将每个帧扩展到全高,但用黑色填充交替行,以相同的输入帧速率生成具有双倍高度的帧。

------> time
Input:
Frame 1         Frame 2         Frame 3         Frame 4

11111           22222           33333           44444
11111           22222           33333           44444
11111           22222           33333           44444
11111           22222           33333           44444

Output:
11111           .....           33333           .....
.....           22222           .....           44444
11111           .....           33333           .....
.....           22222           .....           44444
11111           .....           33333           .....
.....           22222           .....           44444
11111           .....           33333           .....
.....           22222           .....           44444

interleave_top, 4

将奇数帧的上场与偶数帧的下场交错,生成半帧率不变的帧。

------> time
Input:
Frame 1         Frame 2         Frame 3         Frame 4

11111<-         22222           33333<-         44444
11111           22222<-         33333           44444<-
11111<-         22222           33333<-         44444
11111           22222<-         33333           44444<-

Output:
11111                           33333
22222                           44444
11111                           33333
22222                           44444

interleave_bottom, 5

将奇数帧的下部场与偶数帧的上部场交织,生成半帧速率不变的帧。

------> time
Input:
Frame 1         Frame 2         Frame 3         Frame 4

11111           22222<-         33333           44444<-
11111<-         22222           33333<-         44444
11111           22222<-         33333           44444<-
11111<-         22222           33333<-         44444

Output:
22222                           44444
11111                           33333
22222                           44444
11111                           33333

interlacex2, 6

双帧速率,高度不变。 插入帧,每个帧包含来自前一输入帧的第二时间字段和来自下一输入帧的第一时间字段。 此模式依赖于top_field_first标志。 对于没有字段同步的隔行扫描视频显示很有用。

------> time
Input:
Frame 1         Frame 2         Frame 3         Frame 4

11111           22222           33333           44444
11111           22222           33333           44444
11111           22222           33333           44444
11111           22222           33333           44444

Output:
11111   22222   22222   33333   33333   44444   44444
11111   11111   22222   22222   33333   33333   44444
11111   22222   22222   33333   33333   44444   44444
11111   11111   22222   22222   33333   33333   44444

mergex2, 7

将奇数帧移动到上部字段,甚至移动到下部字段,以相同的帧速率生成双倍高度的帧。

------> time
Input:
Frame 1         Frame 2         Frame 3         Frame 4

11111           22222           33333           44444
11111           22222           33333           44444
11111           22222           33333           44444
11111           22222           33333           44444

Output:
11111           33333           33333           55555
22222           22222           44444           44444
11111           33333           33333           55555
22222           22222           44444           44444
11111           33333           33333           55555
22222           22222           44444           44444
11111           33333           33333           55555
22222           22222           44444           44444

不推荐使用数字值,但出于向后兼容性原因,将接受这些值。

合并默认模式。

flags

指定影响过滤器进程的标志。

标志的可用值是:

low_pass_filter,vlfp

在滤波器中启用线性垂直低通滤波。 从包含高频垂直细节的渐进源创建隔行目标时,需要垂直低通滤波。 过滤将减少交错'twitter'和莫尔图案。

complex_filter,cvlfp

启用复杂的垂直低通滤波。 这将略微减少交织’twitter’和莫尔图案,但更好地保留细节和主观锐度印象。

垂直低通滤波只能用于'mode'interleave_topinterleave_bottom

29.175 tonemap

来自不同动态范围的色调图颜色。

此过滤器需要单精度浮点数据,因为它需要对(并且可以输出)超出范围的值进行操作。 需要另一个过滤器(如zscale)将结果帧转换为可用格式。

实现的色调映射算法仅适用于线性光,因此输入数据应预先线性化(并且可能正确标记)。

ffmpeg -i INPUT -vf zscale=transfer=linear,tonemap=clip,zscale=transfer=bt709,format=yuv420p OUTPUT

29.175.1 选项

过滤器接受以下选项。

tonemap

设置要使用的色调映射算法。

可能的值如下:

解释
none不要应用任何色调映射,只能去饱和过亮像素
clip硬剪辑任何超出范围的值。 使用它可以获得范围内值的完美颜色精度,同时扭曲超出范围的值
linear将整个参考色域拉伸到显示器的线性倍数
gamma在色调曲线之间进行对数转换
reinhard使用非线性对比度,通过简单的曲线保持整体图像亮度,从而使细节变平并降低色彩精度
hablereinhard更好地保留黑暗和明亮的细节,代价是略微变暗一切。 当细节保存比颜色和亮度准确性更重要时使用它
mobius平滑地绘制超出范围的值,同时尽可能保留范围内材料的对比度和颜色。 当颜色准确性比细节保存更重要时使用它

默认值是:none

param

调整色调映射算法。

这会影响以下算法:

算法解释
none忽视
linear指定拉伸时使用的比例因子。 默认为1.0
gamma指定函数的指数。 默认为1.8
clip指定一个额外的线性系数,在剪切前乘以信号。 默认为1.0
reinhard在显示峰值处指定局部对比度系数。 默认为0.5,这意味着色域内值约为剪切时的一半
hable忽视
mobius指定从线性到mobius变换的过渡点。 低于此点的每个值都保证以1:1映射。 值越高,结果越准确,代价是丢失明亮的细节。 默认为0.3,由于陡峭的初始斜率仍然相当准确地保留了范围内的颜色
desat

对超过此亮度级别的高光应用去饱和度。 参数越高,保留的颜色信息就越多。 此设置有助于防止超高光的不自然地被吹掉的颜色,通过(平滑地)变成白色。 这使得图像感觉更自然,但代价是减少了关于超出范围颜色的信息。

默认值2.0有点保守,主要适用于天空或直接阳光照射的表面。 设置为0.0将禁用此选项。

仅当输入框架具有受支持的颜色标记时,此选项才有效。

peak

使用此值覆盖signal/nominal/reference峰值。 当显示元数据中的嵌入峰值信息不可靠或者从较低范围到较高范围的色调映射时有用。

29.176 transpose

在输入视频中转置包含列的行,并可选择将其翻转。

它接受以下参数:

dir

指定转置方向。

可以假设以下值:

    0, 4, cclock_flip

  逆时针旋转90度并垂直翻转(默认),即:

    L.R L.l
    . . -> . .
    l.r R.r

    1, 5, clock

  顺时针旋转90度,即:

    L.R l.L
    . . -> . .
    l.r r.R

    2, 6, cclock

  逆时针旋转90度,即:

    L.R R.r
    . . -> . .
    l.r L.l

    3, 7, clock_flip

  顺时针和垂直翻转旋转90度,即:

    L.R r.R
    . . -> . .
    l.r l.L

对于介于4-7之间的值,仅在输入视频几何体为纵向而非横向时才进行换位。 不推荐使用这些值,而应使用passthrough选项。

不推荐使用数值,应该删除它们以支持符号常量。

passthrough

如果输入几何与指定值指定的几何匹配,则不应用转置。 它接受以下值:

none

始终应用换位。

portrait

保留纵向几何体(当高度>=宽度时)。

landscape

保留横向几何体(当宽度>=高度时)。

默认值为none

例如,顺时针旋转90度并保留纵向布局:

transpose=dir=1:passthrough=portrait

上面的命令也可以指定为:

transpose=1:portrait

29.177 trim

修剪输入,使输出包含输入的一个连续子部分。

它接受以下参数:

start

指定保留部分的开始时间,即具有时间戳开始的帧将是输出中的第一帧。

end

指定将被丢弃的第一帧的时间,即紧接在具有时间戳结束的帧之前的帧将是输出中的最后一帧。

start_pts

这与start相同,但此选项以时基单位而不是秒为单位设置开始时间戳。

end_pts

这与end相同,但此选项以时基单位而不是秒为单位设置结束时间戳。

duration

输出的最大持续时间(以秒为单位)。

start_frame

应传递给输出的第一帧的编号。

end_frame

应删除的第一帧的编号。

'start''end''duration'表示为持续时间规范;请参阅(ffmpeg-utils)接受语法的持续时间语法

请注意,前两组开始/结束选项和'duration'选项查看帧时间戳,而_frame变体只计算通过过滤器的帧。另请注意,此过滤器不会修改时间戳。如果希望输出时间戳从零开始,请在修剪滤波器后插入一个setpts过滤器。

如果设置了多个开始或结束选项,则此过滤器会尝试贪婪并保留与至少一个指定约束匹配的所有帧。要仅保留一次匹配所有约束的零件,请链接多个修剪过滤器。

默认值是保留所有输入。所以可以设置例如只是最终值,以保持指定时间之前的一切。

例子:

  • 删除除输入的第二分钟以外的所有内容:

      ffmpeg -i INPUT -vf trim=60:120
    
  • 只保留第一秒:

      ffmpeg -i INPUT -vf trim=duration=1
    

29.178 unpremultiply

使用第二个流的第一个平面作为alpha,将alpha不成倍增效应应用于输入视频流。

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

过滤器接受以下选项:

planes

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

如果格式有12个分量,则亮度为0。如果格式有34个分量:对于RGB格式,位0为绿色,位1为蓝色,位2为红色; 对于YUV格式,位0是亮度,位1是色度-U,位2是色度-V。 如果存在,alpha通道始终是最后一位。

inplace

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

29.179 unsharp

锐化或模糊输入视频。

它接受以下参数:

luma_msize_x,lx

设置亮度矩阵水平尺寸。它必须是3到23之间的奇数。默认值为5

luma_msize_y,ly

设置亮度矩阵垂直大小。它必须是3到23之间的奇数。默认值为5

luma_amount,la

设置亮度效果强度。它必须是浮点数,合理的值介于-1.51.5之间。

负值会使输入视频模糊,而正值会使其锐化,零值将禁用效果。

默认值为1.0

chroma_msize_x,cx

设置色度矩阵水平尺寸。它必须是3到23之间的奇数。默认值为5

chroma_msize_y,cy

设置色度矩阵垂直大小。它必须是323之间的奇数。默认值为5

chroma_amount,ca

设置色度效果强度。它必须是浮点数,合理的值介于-1.51.5之间。

负值会使输入视频模糊,而正值会使其锐化,零值将禁用效果。

默认值为0.0

所有参数都是可选的,默认为字符串'5:5:1.0:5:5:0.0'的等效值。

29.179.1 示例

  • 应用强烈的亮度锐化效果:

      unsharp=luma_msize_x=7:luma_msize_y=7:luma_amount=2.5
    
  • 应用亮度和色度参数的强烈模糊:

      unsharp=7:7:-2:7:7:-2

http://lihuaxi.xjx100.cn/news/158206.html

相关文章

C. Zero-Sum Prefixes(前缀和)

Problem - C - Codeforces 一个数组v1,v2,...,vn的得分被定义为索引i的数量&#xff08;1≤i≤n&#xff09;&#xff0c;使v1v2...vi0。 给你一个长度为n的数组a1,a2,...,an&#xff0c;你可以多次执行以下操作。 选择一个索引i&#xff08;1≤i≤n&#xff09;&#xff0c;…

【React一】React基础+组件化编程【ref+props+state】

文章目录一、 React基础组件化编程1-1 基础1-1-1 react简介1-1-1-1 react创建虚拟DOM1-1-1-2 虚拟DOM与真实DOM1-1-2 JSX1-1-2-1 语法规则【摘自word】1-1-2-2 渲染虚拟DOM(元素)1-1-2-3 JSX语法规则1-1-2-4 列表例子1-1- 3 模块与组件1-2 React面向组件化编程1-2-11-2-1-1 函数…

Android解析自定义属性实现视差动画效果

前言 在学习本文之前&#xff0c;可以先了解下android LayoutInflater源码分析以及换肤框架实现原理&#xff0c;这里通过LayoutInflater解析自定义属性&#xff0c;实现对布局中的View进行平移操作。 最终效果 实现思路 首先自定义平移属性&#xff0c;如支持X轴方向进出平…

java家庭理财收支管理系统

目 录 1 绪论 1 1.1 引言 1 1.2 研究内容 2 1.3 可行性分析 2 1.3.1 技术可行性 2 1.3.2 经济可行性 2 1.3.3 操作可行性 3 1.4 研究现状 3 2 开发技术介绍 4 2.1 Jsp技术 4 2.2 Mysql 5 2.3 tomcat简介 5 2.4 JDBC 6 3 需求分析 …

员工如何通过自助方式重置AD密码

很多企业都会通过AD管理员工的账户&#xff0c;而密码重置是IT helpdesk很繁重的一项工作。在OneAuth中可以启用员工自助修改密码。比如通过给员工手机/邮箱发送修改密码的临时口令&#xff0c;员工点输入临时口令验证&#xff0c;验证通过后才可以修改密码。 通过OneAuth重置…

Docker(一):什么是Docker?

为什么会出现Docker 假设你在开发一个项目&#xff0c;你所用的电脑是具备了项目特定配置的开发环境。但其他开发人员的设备以及开发环境配置都各有不同。你所在开发的应用需要依赖你当前的配置&#xff0c;而当你需要发布到测试环境的时候&#xff0c;你需要把你本地的环境配…

实现分布式下的全局唯一ID

ID生成规则必要性 软件上要求 全局唯一 不能出现重复的ID号&#xff0c;既然是唯一标识&#xff0c;这是最基本的要求趋势递增 在MySQL的InnoDB引擎中使用的是聚集索引&#xff0c;由于多数RDBMS使用Btree的数据结构来存储索引数据&#xff0c; 在主键的选择上面我们应该尽量…

RabbitMQ的入门篇

目录 1. RabbitMQ简介 1.1 RabbitMQ 1.2 RabbitMQ的介绍 1.3 RabbitMQ的特点 2. RabbitMQ的安装 2.1 RabbitMQ下载 2.2 下载的安装包 ​ 2.3 安装步骤 2.4 登录访问 3. RabbitMQ的入门 3.1 RabbitMQ的架构原理 3.2 永远的hello world程序 4. RabbitMQ的工作模式 4.1 简…