kie*_*ran 4 video ffmpeg compositing
我正在寻找使用ffmpeg合成视频的方法,无论合成视频的宽高比/大小如何,都将其置于中央。
“背景”视频将始终为16:9和1920x1080px。我不知道重叠式视频的长宽比或尺寸,因为它将由用户上传,并且可以是任何尺寸/比例。
这是我要实现的目标的一个示例:
这是背景图片:
现在,我想在顶部覆盖视频:
本质上,无论我要确保将其尺寸调整为始终适合1920x1080以内的尺寸,此外还要确保其始终居中。
使用
ffmpeg -i bg.mp4 -i overlay.mp4
-filter_complex
"[1]scale='if(gt(dar,16/9),1920,iw*sar*1080/ih)':'if(gt(dar,16/9),ih*1920/iw/sar,1080)',
setsar=1[ol];
[0][ol]overlay='(W-w)/2':'(H-h)/2':shortest=1[v]"
-map "[v]" -map 1:a -c:a copy out.mp4
Run Code Online (Sandbox Code Playgroud)
我假设您想在叠加层结束时终止输出,并且想要保留其音频(仅)。
由于您不希望BG显示前景是否正好是16:9,因此事先检查并跳过运行任何ffmpeg命令的效率会更高。为此,您可以使用
ffprobe -show_entries stream=display_aspect_ratio -select_streams v -v 0 -of compact=p=0:nk=1 main.mp4
Run Code Online (Sandbox Code Playgroud)
这将产生单行输出:
16:9
Run Code Online (Sandbox Code Playgroud)