FFmpeg - 在脸上应用模糊

occ*_*ech 32 video ffmpeg

我正在尝试使用 FFmpeg 来模糊视频的一部分(特别是为了模糊人脸)。

我一直在尝试使用时间线编辑和各种模糊过滤器的组合,但我找不到一种方法来只模糊视频的一部分。

我希望是这样的:

-vf boxblur=enable='between(t,10,100)':width=20:height=20:x=400:y=200
Run Code Online (Sandbox Code Playgroud)

width/height模糊盒的大小和x/y模糊箱的位置。

这样的事情可能吗?

llo*_*gan 49

可以对片段/部分应用时间和空间模糊 - 假设您要模糊的区域是静态位置。

黑色实验室小狗
原始的黑色实验室小狗图像。

使用蒙版图像

在此处输入图片说明在此处输入图片说明
灰度 PNG 蒙版图像和由此产生的模糊图像。

您可以制作灰度蒙版图像以指示要模糊的区域。为便于使用,它应与要模糊的图像或视频的大小相同。

使用alphamergeavgbluroverlay 的示例:

ffmpeg -i video.mp4 -i mask.png -filter_complex "[0:v][1:v]alphamerge,avgblur=10[alf];[0:v][alf]overlay[v]" -map "[v]" -map 0:a -c:v libx264 -c:a copy -movflags +faststart maskedblur.mp4
Run Code Online (Sandbox Code Playgroud)
  • 白色区域是会发生模糊的地方,但这可以很容易地用negate过滤器逆转,例如:[1:v]negate[mask];[0:v][mask]alphamerge,avgblur=10[alf]...

  • 您可以使用geq过滤器生成诸如渐变之类的蒙版。

模糊特定区域(无遮罩)

具有模糊效果的黑色实验室小狗

ffmpeg -i input.mp4 -filter_complex "[0:v]crop=200:200:60:30,avgblur=10[fg];[0:v][fg]overlay=60:30[v]" -map "[v]" -map 0:a -c:v libx264 -c:a copy -movflags +faststart derpdogblur.mp4
Run Code Online (Sandbox Code Playgroud)

注:在覆盖x和y偏移号(6030在本例中)必须作物偏移相匹配。

这个例子的作用:

  1. 将副本裁剪为要模糊的区域的大小。在此示例中:一个 200x200 像素的框,距左上角向右(x轴)60 像素,向下(y轴)30 像素。
  2. 模糊裁剪区域。
  3. 使用裁剪过滤器中的相同xy参数覆盖模糊区域。

特定区域的多重模糊(无遮罩)

在此处输入图片说明
左上角、靠近中心和底部的模糊区域。

ffmpeg -i input.mp4 -filter_complex "[0:v]crop=50:50:20:10,avgblur=10[b0];[0:v]crop=iw:30:(iw-ow)/2:ih-oh,avgblur=10[b1];[0:v]crop=100:100:120:80,avgblur=10[b2];[0:v][b0]overlay=20:10[ovr0];[ovr0][b1]overlay=(W-w)/2:H-h[ovr1];[ovr1][b2]overlay=120:80" -c:a copy -movflags +faststart output.mp4
Run Code Online (Sandbox Code Playgroud)

特定区域不模糊(不带面具)

在此处输入图片说明

ffmpeg -i input.mp4 -filter_complex "[0:v]avgblur=10[bg];[0:v]crop=200:200:60:30[fg];[bg][fg]overlay=60:30" -c:a copy -movflags +faststart output.mp4
Run Code Online (Sandbox Code Playgroud)

额外的东西


deF*_*tas 5

对于谁不知道如何指定持续时间,这是一个示例

ffmpeg -i derpdog.mp4 -filter_complex \
 "[0:v]crop=200:100:60:30,boxblur=10:enable='between(t,60*2,60*2+10)'[fg]; \
  [0:v][fg]overlay=60:30[v]" \
-map "[v]" -map 0:a -c:v libx264 -c:a copy -movflags +faststart derpdogblur.mp4
Run Code Online (Sandbox Code Playgroud)

模糊将出现在x=60y=30width=200height=100second=120second=130