ffmpeg - 在中心

时间:2017-02-28 22:16:57

标签: video ffmpeg compositing

我希望将视频与ffmpeg合成,无论合成视频的宽高比/大小如何,都将视频置于中心。

"背景"视频将始终为16:9和1920x1080px。我不知道叠加视频的宽高比或大小,因为它将由用户上传,可以是任何大小/比例。

以下是我尝试实现的一个例子:

这是背景图片:

enter image description here

现在我想在顶部叠加视频:

enter image description here

这也应该有效:enter image description here

基本上无论我想要什么样的尺寸,它总是要调整到适合1920x1080以内,并确保它始终居中。

最后,如果上传的视频也是16:9,则只需覆盖整个视频: enter image description here

1 个答案:

答案 0 :(得分:5)

使用

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

我假设您想要在叠加结束时终止输出,并且您想要保留其音频(仅限)。

由于您不希望BG显示前景是否正好是16:9,因此事先检查并跳过运行任何ffmpeg命令会更有效。为此你可以使用,

ffprobe -show_entries stream=display_aspect_ratio -select_streams v -v 0 -of compact=p=0:nk=1 main.mp4

将生成单行输出:

16:9