FFMPEG 视频类过滤器学习整理

addroi

作用

在视频帧上标记一块感兴趣的区域。

帧数据被原封不动地传递,但元数据被附加到帧,指示可能影响后续编码行为的感兴趣区域。可以通过多次应用过滤器来标记多个区域。

参数

qoffset: 应用在此区域的量化偏移。

参数范围:-1 ~ +1 , 0表示不做处理,负值表示更好的质量(较低的量化),正值表示较差的质量(更高的量化)

例如:在10 bit 的H264的文件中,量化参数位于-12到51之间。如果qoffset 的值设为-1/10,则表示这个区域的编码质量应该比其他区域的质量好十分之一。如果视频帧的编码QP为30,则这个区域的QP在24左右(-1/10 * (51--12) = -6.3)。如果qoffset为极值-1,这表示这块区域应该使用最好的质量进行编码,也就是QP为-12。

clear:在添加新区域前清除所有已标记的区域

实例
复制代码
标记1/4区域
addroi=iw/4:ih/4:iw/2:ih/2:-1/10

标记左边100像素宽的区域(以更低的质量编码)
addroi=0:0:100:ih:+1/5

alphaextract

作用

从输入中提取alpha组件作为灰度视频。这对于alphamerge过滤器特别有用。

参数

alphamerge

作用

用第二个输入的灰度值添加或替换主输入的alpha分量。这是为了与alphaextract过滤器一起使用,以允许以不支持alpha通道的格式传输或存储具有alpha的帧序列。

参数
实例一

ffmpeg -i "1.jpeg" -i "2.png" -filter_complex "[0]scale=200:200[ava];[1]scale=200:200,format=rgba,alphaextract[alfa];[ava][alfa]alphamerge" circle_ava.png

1.jpeg:位深24的,没有alpha,2.png位深32,有alpha

这里提取2.png的alpha通道叠加到1.jpeg图片上生成带有alpha通道的图片

示例二

生成带有alpha通道的视频

ffmpeg -i beautlWorld.mp4 -vf "lumakey=threshold=0:tolerance=0:softness=0.2" -pix_fmt rgba -vcodec rawvideo -f avi softness_rgba.avi

堆叠播放原视频和灰度视频

ffplay -i softness_rgba.avi -vf "split[0][1];[1]alphaextract[2];[0][2]hstack

将视频2的alpha通道叠加到视频1上生成新的视频

ffmpeg -y -i 1.avi -i 2.avi -filter_complex "[1:v]alphaextract[tmp];[0:v][tmp]alphamerge[outv]" -map [outv] alphamerge.avi

amplify

作用

放大连续视频帧之间的变化

参数

ass

作用

使用libass库将ASS字幕渲染到输入视频上。

参数

atadenoise

作用

对视频输入应用自适应时间平均去噪器

参数

avgblur

作用

应用平均模糊过滤器。

该过滤器可能是ffmpeg中几种"模糊"方法中最简单的一种。它可能只是取八边形像素的平均值。由于这种简单性,如果想"破坏图像并使其无法识别",接近所谓的马赛克处理,这可能是最好的。反过来说,它不适合"平滑漂亮"。

参数

sizeX: 水平半径大小

planes:设置那个平面需要过滤。默认所有平面都处理

sizeY:垂直半径大小,如果为0则跟sizeX一样,默认为0

实例一

ffmpeg.exe -i .\dogs_640x578.png -vf avgblur=sizeX=10 -y 1111.png

ffmpeg.exe -i .\dogs_640x578.png -vf avgblur=sizeX=10:planes=1 -y dog-1.png

实例二
bash 复制代码
#! /bin/sh
ifn="Grape_Vineyard.mp4"
ifnb="`basename \"${ifn}\" .mp4`"
pref="`basename $0 .sh`"
#
radius=${radius:-10}
#
ffmpeg -y -i "${ifn}" -filter_complex "
[0:v]split[0v1][0v2];

[0v1]crop=900:500:30:580,setsar=1,
avgblur=sizeX=${radius}

,drawbox=c=blue[b];

[0v2][b]overlay=30:580[v]
" -map '[v]' -an "${pref}_${ifnb}.mp4"

backgroundkey

作用

将静态背景转换为透明

暂未找到使用方法

参数

bbox

作用

计算输入帧亮度平面中非黑色像素的边界框。

此过滤器计算包含亮度值大于最小允许值的所有像素的边界框。描述边界框的参数将打印在过滤器日志上。

参数

bilateral

作用

应用双边滤波器,空间平滑,同时保留边缘。

参数
实例

ffmpeg.exe -i .\dogs_640x578.png -vf bilateral=sigmaS=512:sigmaR=0.5:planes=1 -y bil.png

bilateral_cuda

作用

CUDA加速双边滤波器,一种边缘保持滤波器。由于使用了GPU加速,该滤波器在数学上是准确的。为了获得最佳输出质量,请使用一对一色度子采样,即yuv444p格式。

参数
实例
复制代码
./ffmpeg -v verbose \
-hwaccel cuda -hwaccel_output_format cuda -i input.mp4  \
-init_hw_device cuda \
-filter_complex \
" \
[0:v]scale_cuda=format=yuv444p[scaled_video];
[scaled_video]bilateral_cuda=window_size=9:sigmaS=3.0:sigmaR=50.0" \
-an -sn -c:v h264_nvenc -cq 20 out.mp4

bitplanenoise

作用

显示和测量位平面噪声。

参数
实例

ffmpeg.exe -i .\dogs_640x578.png -vf bitplanenoise=filter=1:bitplane=1 -y bit_1.png

blackdetect

作用

检测(几乎)完全为黑色的视频间隔。可用于检测章节转换、商业广告或无效录音。

参数
实例
复制代码
检测视频中亮度低于0.10,时间间隔大于0.05s的视频段

ffmpeg -i ./VIDEO.mp4 -vf "blackdetect=d=0.05:pix_th=0.10" -an -f null - 2>&1 | grep blackdetect

可参考:使用FFMPEG的"BlackDetect"过滤器识别商业街区 - GDELT项目 (gdeltproject.org)

blackframe

作用

检测(几乎)完全为黑色的帧。可用于检测章节转换或商业广告。输出行包括检测到的帧的帧数、黑色百分比、文件中的位置(如果已知)或-1以及以秒为单位的时间戳。

为了显示输出行,您需要将loglevel至少设置为AV_LOG_INFO值。

参数
相关推荐
因我你好久不见5 小时前
springboot java ffmpeg 视频压缩、提取视频帧图片、获取视频分辨率
java·spring boot·ffmpeg
cuijiecheng201813 小时前
音视频入门基础:MPEG2-TS专题(21)——FFmpeg源码中,获取TS流的视频信息的实现
ffmpeg·音视频
cuijiecheng201814 小时前
音视频入门基础:AAC专题(13)——FFmpeg源码中,获取ADTS格式的AAC裸流音频信息的实现
ffmpeg·音视频·aac
流氓也是种气质 _Cookie1 天前
uniapp blob格式转换为video .mp4文件使用ffmpeg工具
ffmpeg·uni-app
网络安全queen1 天前
网络安全-企业环境渗透2-wordpress任意文件读&&FFmpeg任意文件读
安全·web安全·ffmpeg
yerennuo1 天前
FFmpeg库之ffmpeg
qt·ffmpeg
韩曙亮1 天前
【FFmpeg】解封装 ① ( 封装与解封装流程 | 解封装函数简介 | 查找码流标号和码流参数信息 | 使用 MediaInfo 分析视频文件 )
ffmpeg·音视频·视频流·mediainfo·解封装·码流
yerennuo1 天前
FFmpeg 框架简介和文件解复用
ffmpeg
悠着,大嘟嘟1 天前
FFmpeg 视频解码详解
ffmpeg·音视频
小白旗1 天前
ffmpeg翻页转场动效的安装及使用
ffmpeg·gl-transition·xfade·转场动效