【问题标题】:ffmpeg - compositing a video within a video in the centreffmpeg - 在中心的视频中合成视频
【发布时间】:2017-07-20 01:46:09
【问题描述】:

我希望使用 ffmpeg 合成视频,无论合成视频的纵横比/大小如何,都将视频置于中心。

“背景”视频始终为 16:9 和 1920x1080 像素。我不知道覆盖视频的纵横比或大小,因为它将由用户上传,并且可以是任何大小/比例。

这是我想要实现的一个示例:

这是背景图片:

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

这也应该有效:

基本上,无论尺寸如何,我都希望确保它始终调整大小以适应 1920x1080,此外还要确保它始终居中。

最后,如果上传的视频也是 16:9,它应该简单地覆盖整个视频:

【问题讨论】:

    标签: video ffmpeg compositing


    【解决方案1】:

    使用

    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
    

    【讨论】:

      猜你喜欢
      • 2021-07-08
      • 1970-01-01
      • 2016-01-11
      • 2017-08-09
      • 1970-01-01
      • 1970-01-01
      • 2018-12-27
      • 2015-05-25
      • 1970-01-01
      相关资源
      最近更新 更多