FFmpeg: Làm thế nào để chuyển đổi video thẳng đứng với mặt đen, video 16: 9, với mặt nền mờ
Làm thế nào để thực hiện điều này bằng cách sử dụng FFmpeg?
Ví dụ mà không FFmpeg:
Adobe After Effects
Sony Vegas Pro
FFmpeg: Làm thế nào để chuyển đổi video thẳng đứng với mặt đen, video 16: 9, với mặt nền mờ
Làm thế nào để thực hiện điều này bằng cách sử dụng FFmpeg?
Ví dụ mà không FFmpeg:
Adobe After Effects
Sony Vegas Pro
Tôi đã giải quyết!
ffmpeg -i input.mp4 -lavfi '[0:v]scale=ih*16/9:-1,boxblur=luma_radius=min(h\,w)/20:luma_power=1:chroma_radius=min(cw\,ch)/20:chroma_power=1[bg];[bg][0:v]overlay=(W-w)/2:(H-h)/2,crop=h=iw*9/16' -vb 800K output.webm
Input: https://www.youtube.com/watch?v=17uHCHfgs60
Output: http://www.youtube.com/watch?v=CgZsDLfzrTs
Bạn có thể thử bao phủ các video trên một hình ảnh mờ như thế này.
ffmpeg -i input_video -loop 1 -i input_image -t 10 -filter_complex "
[0:v]scale=-1:720[scaled_video];
[1:v]scale=1280:720,boxblur=50[blur_image];
[blur_image][scaled_video]overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/2[outv]" -c:v libx264 -aspect 1280/720 -map [outv] -map 0:a -c:a copy output_video
Hình ảnh đầu vào sẽ được lặp trong suốt thời lượng của video đầu ra theo -loop 1
. Và -t 10
sẽ giới hạn thời lượng video đầu ra xuống 10 giây. Trong ví dụ này, tôi đã sử dụng độ phân giải video đầu ra 1280: 720 và thu nhỏ đầu vào để phù hợp với tỷ lệ này. 0:v
tham chiếu đến video đầu vào và nó sẽ được chia tỷ lệ thành độ cao 720, nơi chiều rộng sẽ được điều chỉnh cho phù hợp.
Ở đây tôi đã sử dụng bộ lọc boxblur
nơi có một số khác như sab
, smartblur
và unsharp
. map
sẽ nhận được luồng đầu vào đã xử lý được chỉ định và ánh xạ tới luồng đầu ra tương ứng.
Hy vọng điều này sẽ giúp bạn!
Điều này không hoạt động trên ubuntu 16.04 với phiên bản ffmpeg 2.8.11-0ubuntu0.16.04.1 – Benoit