FFmpeg的:如何垂直视频与黑边,转换为视频的16:9,用模糊的背景边

问题描述 投票:17回答:4

如何使用FFmpeg的,使这个?

例如但FFmpeg的: Adobe After Effects Sony Vegas Pro

video background ffmpeg blur
4个回答
34
投票

该solvid!

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


4
投票

这里接受的答案永远需要执行,因为它是做了这么多不必要的计算。我们不需要模糊,我们肯定知道会出视在输出视频的像素。

因此,一个更好的解决方案将是第一批视频将在输出中出现的部分。然后,我们扩展这部分“补”视口。最后,我们覆盖在它上面的原始视频。

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×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
投票

你可以尝试覆盖这样的模糊图像上的视频。

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过滤器,其中还有其他一些类似sabsmartblurunsharpmap会得到一个指定的处理后的输入流,并相应地映射到输出流。

希望这个能对您有所帮助!


2
投票

我不能让任何提供了使用的ffmpeg 3.4.2在Windows上工作之前的解决方案。

然而,这没有工作:

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>

© www.soinside.com 2019 - 2024. All rights reserved.