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

2023/11/30 9:12:29

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颜色空间。

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

  

如果未定义其中一个色度表达式,则它会回落到另一个色度表达式上。如果未指定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相同的插值选项(两个滤波器共享相同的内部结构)。

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

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

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


http://www.jnnr.cn/a/126377.html

相关文章

双十一屡获冠军!TCL空调的爆品密码是什么?

如今的双11,绝不仅仅是一场促销大战,它已经成为观察消费风向的绝佳窗口。 透过今年的双11战报可以看到,众多家电类目中,备受用户青睐的新风空调同比增长200%,表现抢眼。 新风空调的热销,是整个家电行业寻…

socket转modbus协议转换应用案例介绍

目录 1 Modbus 协议简介 1.1 什么是modbus 1.2 两种传输方式 1.3 三种模式的比较 2 ModBus-RTU详解 2.1 MODBUS-RTU功能码 2.2 MODBUS报文模型 2.3 报文解读 3 案例解析 3.1 socket通信 3.2 Socket实现modbus协议服务端 3.3 netty框架 3.4 Netty对于Socket抽象 3.5 …

Python——正则表达式的应用

文章目录前言正则表达式方法re.search方法group方法re.match方法re.findall方法re.finditer方法re.split方法re.sub方法正则表达式的应用前言 提示:这里可以添加本文要记录的大概内容: 正则表达式是字符串处理的有力工具和技术。 使用正在表达式的目的…

Windows下一键搭建MBP系统,支持多种版本任意选择,免费永久使用,多系统使用新方案

Windows下一键搭建MBP系统,支持多种版本任意选择,免费永久使用,多系统使用新方案。 安装起来相当的简单,简单到只需要执行一行命令即可完成。使得游戏和开发可以兼顾,并且不用花费数万米的可以使用MBP。不仅如此,经过各项专业的测试,还有接近于原生的MBP系统性能。 效…

数据结构学习笔记——基数排序

目录一、排序思想二、算法分析三、总结一、排序思想 基数排序与前面的排序算法不一样,它不基于比较和移动元素来进行排序,而是基于多关键字排序的思想,将一个逻辑关键字分为多个关键字,它是基于关键字各位的大小进行排序的。基数…

小侃设计模式(九)-组合模式

1.概述 组合模式(Composite Pattern)又叫部分整体模式,它创建了对象组的树形结构,将对象组合成树状结构以表示“整体-部分”的层析关系,使用户对单个对象和组合对象具有一致的访问性,是结构型设计模式的一…

File、Blob、FileReader、ArrayBuffer、Base64

一、Blob Blob全称为binary large object ,即二进制大对象。blob对象本质上是js中的一个对象,里面可以储存大量的二进制编码格式的数据。Blob对象的特点: 不可修改从Blob中读取内容的唯一方法是使用FileReader 1、创建 new Blob(array,opt…

随手记录: Macbook/MacOS 快速安装brew

前言与介绍 TODO 给brew简单介绍一下 编辑日期:2022/11/13 主要是给在内地的镜像使用,感觉CSDN联合的GitCode 一系列的镜像 超爽!以下为小白教程 在本人的mac air m2 进行测试安装完成,全程五分钟 如果网络比较好的话 安装 主…

前端工程化——Livereload和HMR、本地开发服务器

目录 本地开发服务器解决的问题 动态构建 Mock服务 动态构建 源码改动之后,浏览器应该在何时获取重新编译后的资源? Livereload和HMR 有了构建系统的支持,前端开发人员可以使用诸多有利于开发和维护的技术进行源代码编写。然而如果在开…

Java学习笔记 --- Java绘图技术

一、Java绘图坐标体系 坐标体系-介绍 下图说明了Java坐标系。坐标原点位于左上角,以像素为单位。在Java坐标系中,第一个是x坐标,表示当前位置为水平方向,距离坐标原点x个像素;第二个是y坐标,表示当前位置为…

人工智能--k近邻算法2-归一化、交叉验证、网格搜索、数据分割方法总结、两案例实现

1.7 特征工程-特征值预处理 1.7.1 介绍 通过一些转换函数奖特征数据转换为更加适合算法模型的特征数据过程 为什么要进行归一化/标准化? 特征的单位或者大小相差很大,或者某特征的方差比其他特征要大出几个量级,容易影响目标结果 例如如下数…

数据抓取工具有哪些-数据抓取工具免费推荐的有哪些

随着社会的进步,科技的发展。不管是企业还是个人都清楚地明白了数据的重要性。不仅可以让我们掌握一手资源,同时还能通过数据更清楚竞争对手。同时也告别了手动复制粘贴的痛苦。 企业人员 通过爬取动态网页数据分析客户行为拓展新业务,分析…

代码随想录训练营补充|图论|Golang

1791. 找出星型图的中心节点 797. 所有可能的路径 岛屿系列问题: 200. 岛屿数量 200. 岛屿数量 463. 岛屿的周长 695. 岛屿的最大面积 827. 最大人工岛 1020. 飞地的数量 130. 被围绕的区域 417. 太平洋大西洋水流问题(深搜、广搜) 127. 单词接龙 &#xff0…

大环境之下软件测试行业趋势能否上升?

如果说,2021年对于全世界来说,都是一场极大的挑战的话;那么,2022年绝对是机遇多多的一年。众所周知,随着疫情在全球范围内逐步得到控制,无论是国际还是国内的环境,都会呈现逐步回升的趋势&#…

强大的PubMed插件Scholarscope

强大的PubMed插件Scholarscope学术基础—SCI分区什么是Pubmed什么是ScholarscopeScholarscope在不同浏览器下安装指南插件使用学术基础—SCI分区 SCI是有两个分区,一个是JCR的划分,一般称呼为Q1,Q2,Q3,Q4,一个是中科院的划分,分为一区,二区,三区,四区。sci分区q2指的是JCR的2区…

CorelDRAW 2023全新版矢量图形制作工具

大家好,关于CorelDRAW 2023(矢量图形制作工具) V2023中文版,CorelDRAW 2023(矢量图形制作工具)中文版功能简介这个很多人还不知道,coco玛奇朵来为大家解答以上的问题,现在让我们一起来看看吧!用户可以通过使用CorelDRAW2023强大的功能&#x…

一、基础知识(1)-范数、导数

一、范数 1.1 向量范数 定义:满足正定、齐次、三角不等式,则称从向量空间到实数域的非负函数的范数lpl_plp​范数:∣∣v∣∣p(∣v1∣p∣v2∣p...∣vn∣p)1p||v||_p(|v_1|^p|v_2|^p...|v_n|^p)^{\frac{1}{p}}∣∣v∣∣p​(∣v1​∣p∣v2​∣…

IDE安装后配置项--类/方法注释

匹配大小写 设置字体大小 设置注释模板 mapper模板 <?xml version"1.0" encoding"UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > <m…

java毕业设计后勤管理系统在线报修系统(附源码、数据库)

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; Springboot mybatis Maven Vue 等等组成&#xff0c;B/…

Web 3.0顶级干货教学:Web2.0 时代的问题?

Web 3.0顶级干货教学&#x1f525;&#xff1a;Web2.0 时代的问题&#xff1f; 尊重原创&#xff0c;编写不易 &#xff0c;帮忙点赞关注一下~转载小伙伴请注明出处&#xff01;谢谢 Web3.0 定义 可以参考 如下文章&#xff1a;本篇不在过多赘述。 Web 3.0顶级干货教学&#x…
最新文章