【发布时间】:2021-12-31 15:46:59
【问题描述】:
如何使用 FFmpeg 制作?
没有 FFmpeg 的示例:
Adobe After Effects
Sony Vegas Pro
【问题讨论】:
标签: video background ffmpeg blur
如何使用 FFmpeg 制作?
没有 FFmpeg 的示例:
Adobe After Effects
Sony Vegas Pro
【问题讨论】:
标签: video background ffmpeg blur
我解决了!
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
【讨论】:
boxblur 过滤器。 This 解决方案的速度提高了 60%,并且不包含在 GPL 许可中。
我为任何类型的视频制作了通用解决方案。适用于垂直和水平视频。它将视频大小调整为 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
【讨论】:
这里接受的答案需要永远执行,因为它进行了很多不必要的计算。我们不需要模糊我们确定会在输出视频中超出视口的像素。
因此,更好的解决方案是首先裁剪将在输出中可见的视频部分。然后我们缩放这部分以“填充”视口。最后,我们将原始视频叠加在上面。
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
【讨论】:
ffmpeg -i input.mp4 -vf 'split[original][copy];[copy]scale=ih*16/9:-1,crop=h=iw*9/16,gblur=sigma=20[blurred];[blurred][original]overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/2' output.mp4 提出的分辨率要求,此更改比接受的答案快 60%。
我无法在 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> 替换为适当的文件名。
【讨论】:
您可以尝试将视频叠加在这样的模糊图像上。
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 将获取指定的处理过的输入流并相应地映射到输出流。
希望对您有所帮助!
【讨论】:
-f lavfi -i color=black 而不是第二张图片。