Wednesday, 26 June 2019

video - FFmpeg - Apply blur over face


I'm trying to blur a portion of a video using FFmpeg (specifically to blur a face).


I have been trying to use a combination of timeline editing and the various bluring filters, but I cannot find a way to blur only a section of the video.


I'm hoping for something like:


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

Where width/height is size of blurred box and x/y are location of blurred box.


Is something like this possible?



Answer



It is possible to apply temporal and spatial blurring to a segment/section – assuming the area you want to blur is a static location.


Black lab pup
Original black lab pup image.



enter image description hereenter image description here
Grayscale PNG mask image and resulting blurred image.


You can make a grayscale mask image to indicate the area to blur. For ease of use it should be the same size as the image or video you want to blur.


Example using alphamerge, boxblur, and overlay:


ffmpeg -i video.mp4 -i mask.png -filter_complex "[0:v][1:v]alphamerge,boxblur=10[alf];[0:v][alf]overlay[v]" -map "[v]" -map 0:a -c:v libx264 -c:a copy -movflags +faststart maskedblur.mp4



  • The white area is where the blur will occur, but this can easily be reversed with the negate filter for instance: [1:v]negate[mask];[0:v][mask]alphamerge,boxblur=10[alf]...




  • You could use the geq filter to generate a mask such as a gradient.





Black lab pup with blur effect


ffmpeg -i derpdog.mp4 -filter_complex \
"[0:v]crop=200:200:60:30,boxblur=10[fg]; \
[0:v][fg]overlay=60:30[v]" \
-map "[v]" -map 0:a -c:v libx264 -c:a copy -movflags +faststart derpdogblur.mp4

Note: The x and y offset numbers in overlay (60 and 30 in this example) must match the crop offsets.


What this example does:



  1. Crop the copy to be the size of the area to be blurred. In this example: a 200x200 pixel box that is 60 pixels to the right (x axis) and 30 pixels down (y axis) from the top left corner.

  2. Blur the cropped area.

  3. Overlay the blurred area using the same x and y parameters from the crop filter.



enter image description here
Blurred areas in top left, near center, and bottom.


"[0:v]crop=50:50:20:10,boxblur=10[b0]; \
[0:v]crop=iw:30:(iw-ow)/2:ih-oh,boxblur=10[b1]; \
[0:v]crop=100:100:120:80,boxblur=10[b2]; \
[0:v][b0]overlay=20:10[ovr0]; \
[ovr0][b1]overlay=(W-w)/2:H-h[ovr1]; \
[ovr1][b2]overlay=120:80"


enter image description here


"[0:v]boxblur=10[bg];[0:v]crop=200:200:60:30[fg];[bg][fg]overlay=60:30"

Additional stuff



No comments:

Post a Comment

How can I VLOOKUP in multiple Excel documents?

I am trying to VLOOKUP reference data with around 400 seperate Excel files. Is it possible to do this in a quick way rather than doing it m...