ffmpeg实现视频模糊效果

1,595 阅读2分钟

环境

  • windows 10 64bit
  • ffmpeg N-93125-gdbfd042983

前言

模糊是视频后期制作中的一项重要工作。我们可以使用ffmpegboxblur来进行视频模糊,而不是使用昂贵的专用商业软件。本文我们将使用boxblur的功能来进行视频的模糊处理。

boxblur的基本使用

在看完整的命令之前,先看看如何在复杂滤镜filter_complex中使用boxblur

"[0:v]crop=400:400:300:350,boxblur=10[fg]; [0:v][fg]overlay=300:350[v]"

解释一下:

  • crop=400:400:300:350 表示400x400像素的区域,其左上角的坐标为(300, 350)

ffmpeg boxblur

  • overlay=300:350 这个值决定了在cropoverlay的位置。除非是有特殊需求,一般都是设置为crop中的最后2个坐标值,这样可以确保模糊效果位置处于crop

  • 参数10代表的是模糊系数。当然你也可以单独设置lumachromaalpha。如果不设置的话,那么它的默认值是2

实操

ffmpeg -i test.mp4 -filter_complex "[0:v]crop=200:200:300:350,boxblur=10[fg]; [0:v][fg]overlay=300:350[v]" -map "[v]" output.mp4

下图是输出的样子,视频中有一块200x400的模糊处理后的区域

ffmpeg boxblur

我们把上面的10改成50,看看效果

ffmpeg boxblur

可以看到,这个数值越大,就越模糊

最后,我们再来看个实例,我们将视频中指定区域之外的部分进行模糊

ffmpeg -i test.mp4 -filter_complex "[0:v]boxblur=10[bg];[0:v]crop=200:200:300:350[fg];[bg][fg]overlay=300:350" -map 0:v output.mp4

最后生成的效果是这样的

ffmpeg boxblur