FFmpeg:如何将带有黑色边的垂直视频转æ¢ä¸º16:9的视频,背景模糊

时间:2015-06-11 19:06:35

标签: video background ffmpeg blur

Vertical video with blurred background sides

如何使用FFmpeg进行此æ“作?

没有FFmpeg的例å­ï¼š
Adobe After Effects
Sony Vegas Pro

5 个答案:

答案 0 :(得分:34)

我解决了ï¼

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

输入:https://www.youtube.com/watch?v=17uHCHfgs60
输出:http://www.youtube.com/watch?v=CgZsDLfzrTs

答案 1 :(得分:3)

这里接å—的答案需è¦æ°¸ä¹…执行,因为它正在执行大é‡ä¸å¿…è¦çš„计算。我们ä¸éœ€è¦æ¨¡ç³Šæˆ‘们肯定知é“会在输出视频的视å£ä¹‹å¤–çš„åƒç´ ã€‚

因此,更好的解决方案是首先è£å‰ªè§†é¢‘中在输出中å¯è§çš„部分。然åŽï¼Œæˆ‘们缩放此部分以“填充â€è§†å£ã€‚最åŽï¼Œæˆ‘们将原始视频å åŠ åœ¨å…¶é¡¶éƒ¨ã€‚

Below example assumes that input video has greater
aspect ratio than output video.
                    ┌─────────────â”
┌─────────────┠    │             │
│ Input video │     │   Output    │
│             │     │   video     │
└─────────────┘     │             │
                    │             │
                    └─────────────┘

我们将使用filter graph实现这一目标。我们的过滤器将在下é¢ç”¨ç‚¹ç¬¦å·è¡¨ç¤ºï¼š

                [original]
 input --> split -------------------------------> overlay --> output
        │                                          ^
        │[copy]                           [blurred]│
        └──────> crop ──> scale ──> gblur ─────────┘

å‡è®¾è¾“入视频的分辨率为1280 x 720,该命令如下所示:

ffmpeg -i input.mp4 -vf 'split [original][copy]; [copy] crop=ih*9/16:ih:iw/2-ow/2:0, scale=1280:2282, gblur=sigma=20[blurred]; [blurred][original]overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/2' output.mp4

答案 2 :(得分:2)

您å¯ä»¥å°è¯•å°†è§†é¢‘覆盖在这样的模糊图åƒä¸Šã€‚

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

输入图åƒå°†åœ¨-loop 1输出视频的æŒç»­æ—¶é—´å†…循环播放。 -t 10会将输出视频时长é™åˆ¶ä¸º10秒。在此示例中,我使用1280:720作为输出视频分辨率,并缩放输入以匹é…此比率。 0:v指的是输入视频,它将被缩放到720的高度,其宽度将相应调整。

在这里,我使用了boxblur过滤器,其中还有其他几个,例如sab,smartblurå’Œunsharp。 map将获å–指定的已处ç†è¾“å…¥æµå¹¶ç›¸åº”地映射到输出æµã€‚

希望这会对你有帮助ï¼

答案 3 :(得分:1)

我无法在Windows上使用ffmpeg 3.4.2获得以å‰æ供的解决方案。

然而这确实有效:

ffmpeg -i <input_file> -filter_complex "[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" <output_file>

ä¸è¦å¿˜è®°ç”¨é€‚当的文件å替æ¢<input_file>å’Œ<output_file>。

答案 4 :(得分:1)

我对任何类型的视频都åšå‡ºäº†é€šç”¨å†³å®šã€‚适用于垂直和水平视频。它将视频的大å°è°ƒæ•´ä¸º1080p(您å¯ä»¥ä½¿ç”¨720p),并用模糊的视频填充所有空白空间。

ffmpeg -i input.mp4 -lavfi "[0:v]scale=1920*2:1080*2,boxblur=luma_radius=min(h\,w)/20:luma_power=1:chroma_radius=min(cw\,ch)/20:chroma_power=1[bg];[0:v]scale=-1:1080[ov];[bg][ov]overlay=(W-w)/2:(H-h)/2,crop=w=1920:h=1080" output.mp4

Result 1

Result 2