FFmpeg 除了具有强大的封装/解封装、编/解码功能外,还包含了一个非常强大的组建---滤镜avfilter。avfilter组建经常用于进行多媒体的处理与编辑,FFmpeg中包含多种滤镜
1.FFmpeg 滤镜filter的参数排列方式
为了便于理解Filter,下面用最简单的方式来描述Filter使用时的参数排列方式:
[输入流或标记名]滤镜参数[临时标记名];[输入流或标记名]滤镜参数[临时标记名]...
文字描述的排列方式很明确,接下来列举一个简单的例子:输入两个文件,一个视频input.mp4,一个图片logo.png,将logo进行缩放,然后放在视频的左上角
ffmpeg -i test.mp4 -i logo.png -filter_complex "[1:v]scale=176:144[logo];[0:v][logo]overlay=x=0:y=0" filter.mp4
将logo.png的图像六缩放为176*144分辨率,然后定义一个临时标记名logo,最后将缩放后的图像[logo]铺在输入的视频test.mp4的视频流[0:v]的左上角
2.FFmpeg 滤镜filter时间内置变量
在使用Filter时,经常会用到根据时间轴进行操作的需求,在使用FFmpeg的Filter时可以使用Filter的时间相关的内置变量,下面先来了解下这些相关的变量,如下表,在下面可以使用到
3.FFmpeg 为视频添加水印
FFmpeg可以为视频添加水印,水印可以时文字,也可以时图片,主要用来标记视频归属
3.1 文字水印
在视频中增加文字水印需要准备的条件比较多,需要有文字字库处理的相关文件,在编译FFmpeg时需要支持FreeType、FontConfig、iconv,系统中需要有相关的字库,在FFmpeg中增加纯字母水印可以使用drawtext滤镜进行支持,下面就是drawtext的滤镜参数
使用举例
ffmpeg -i out2.mp4 -vf "drawtext=fontsize=100:fontfile=FreeSerif.ttf:text='hello world ':x=20:y=20" waterfont.mp4
执行后即可在视频左上角增加hello world 文字水印,文字颜色为纯黑,为了让水印更柔和,可以通过drawtext滤镜的fontcolor参数调节颜色,比如设为绿色
ffmpeg -i out2.mp4 -vf "drawtext=fontsize=100:fontfile=FreeSerif.ttf:text='hello world ':x=20:y=20:fontcolor=green" waterfont.mp4
还可以调用一些系统数据,比如水印按当前时间来显示
ffmpeg -re -i out2.mp4 -vf "drawtext=fontsize=100:fontfile=FreeSerif.ttf:text='%{localtime\:%Y\-%m\-%d %H-%M-%S}':x=20:y=20:fontcolor=green" waterfont4.mp4
3.2 图片水印
FFmpeg除了