【音视频】ffmpeg其他常用过滤器filter实现(6-4)

最近一直在研究ffmpeg的过滤器使用,发现挺有意思的,这里列举几个个人感觉比较有用的过滤器filter,如下是代码实现,同样适用于命令行操作:

1、视频模糊:通过boxblur可以将画面进行模糊处理,第1个参数2:2是对亮度进行滤波的参数,分别表示算法处理的半径:强度;第2个参数1:1是对色度进行滤波的参数,分别表示算法处理的半径:强度

cpp 复制代码
string filterDesc = "boxblur=2:2:1:1";

2、视频锐化:有2组参数,默认值是"5:5:1.0:5:5:0.0",其中第1组"5:5:1.0"是对亮点做锐化算法的参数,5:5表示的是锐化算法中像素判断的子窗口大小,范围是3,23之间的奇数,1.0是强度参数,范围-1.5,1.5,值越大纹理越明显,则锐化程度越高,但是值过大容易产生高亮的像素,即容易过曝;第2组"5:5:0.0"是色度做锐化算法的参数,5:5表示的是锐化算法中像素判断的子窗口大小,范围是3,23之间的奇数,0.0是强度参数,范围-1.5,1.5,值越大纹理越明显,则锐化程度越高,强度参数过大容易导致色差过大。注意当强度参数为负数,则表示的是通过unsharp来实现画面的模糊

cpp 复制代码
string filterDesc = "unsharp=5:5:0.9:5:5:0.1";

3、对比度(contrast)、亮度(brightness)、饱和度(saturation):用eq滤波器实现,对比度范围-2.0,2.0,默认0;亮度范围 -1.0,1.0,默认0、饱和度,范围0,3.0,默认1。注意:亮度为负数可以降低画面亮度,为正数可以提升画面亮度

cpp 复制代码
string filterDesc = "eq=contrast=1.05:brightness=0.02:saturation=1.4";

4、视频裁剪:参数分别为"裁剪后的宽:裁剪后的高:裁剪后的X轴位置:裁剪后的Y轴位置",iw是原始图片宽,ih原始图片高,如果不指定x和y默认居中裁剪

cpp 复制代码
string filterDesc = "crop=iw/2:ih/2:iw/4:ih/4";

5、扩充视频边:可以扩充宽的两边或高的两边或四边,如下例子是扩展宽两边,且扩充颜色是黑色

cpp 复制代码
string filterDesc = "pad=w=iw*1.4:h=ih:x=iw*0.2:y=0:color=black";

6、视频旋转:使用transpose,参数为0-逆时针旋转90度且按X轴翻转,1-顺时针旋转90度,2-逆时针旋转90度,3-顺时针旋转90且按X轴翻转,旋转之后分辨率会变化,比如从横屏19201080旋转90度,变为10801920

cpp 复制代码
string filterDesc = "transpose=1";

7、视频旋转2:使用rotate,可以指定任意旋转角度,旋转之后的分辨率不变,比如19201080旋转60度之后,分辨率还是19201080,超出的四角不显示

cpp 复制代码
string filterDesc = "rotate=PI/3";

8、垂直翻转:按照X轴翻转

cpp 复制代码
string filterDesc = "vflip";

9、水平翻转:按照Y轴翻转

cpp 复制代码
string filterDesc = "hflip";

最后调用avfilter_graph_parse_ptr(filterGraph, filterDesc.c_str(), &inputs, &outputs, nullptr)将过滤器描述filterDesc传入Graphics中,相关代码可以参考《【音视频】使用movie、drawtext过滤器实现图片、文字水印(6-3)

相关推荐
DogDaoDao3 小时前
深度学习增强的视频压缩框架:Neutron Star 如何超越 VVC
人工智能·深度学习·音视频·视频编解码·h266·vvc·视频压缩
byte轻骑兵3 小时前
蓝牙PBP公共广播协议:解锁LE Audio的公共音频新生态
音视频·蓝牙·蓝牙耳机·le audio·低功耗蓝牙音频
AI创界者3 小时前
【8G显存福音】最新LTX-2.3-22B-DISTILLED-1.1-VBVR 整合包文生视频、图生视频,支持首尾帧/单图无限时长,50系显卡全适配!
人工智能·音视频
桐桐桐3 小时前
按目标大小压缩视频:码率反推公式、H.264/H.265 实测与 FFmpeg 自动化
音视频·h.265·h.264
计算机内卷的N天4 小时前
CMake与Visual Studio的使用
c++·ide·visual studio
汉克老师4 小时前
GESP2026年3月认证C++七级( 第三部分编程题(1、物流网络))精讲
c++·最短路·gesp7级
鱼子星_4 小时前
【C++】深入剖析list:list及其双向迭代器实现
开发语言·数据结构·c++·笔记·stl·list
阿童木写作4 小时前
TikTok Shop视频翻译工具实战测评
人工智能·python·音视频
DogDaoDao4 小时前
【论文解读】系数能量引导的快速变换算法:Beyond VVC 编码器优化新思路
音视频·视频编解码·ecm·h266·vvc·变换编码·beyond vvc
tudousisi2225 小时前
P4667 [BalticOI 2011] Switch the Lamp On复盘
c++