【问题标题】:Merging flat videos into a 360 video using ffmpeg使用 ffmpeg 将平面视频合并为 360 视频
【发布时间】:2022-01-21 14:19:12
【问题描述】:

我有一个 DIY 多摄像头装置;我想用它来使用 ffmpeg 创建 360 度视频。我可以将 单个 视频放入正确的 equirectangular 投影,但似乎无法获得 所有 视频。

我可以使用 ffmpegv360 来转换获取单个视频并将其放置在正确的方向在框架中使用此命令。

ffmpeg -i 1.mp4 -vf v360=output=equirect:input=flat:h_fov=60:v_fov=47.5:yaw=60 -t 2 out.mp4

但是,我似乎无法成功地将 多个 输入视频馈送到 v360,并让它们显示在同一输出视频中。

我尝试使用 filter_complex,然后将它们水平堆叠,但实际上并没有将视频合并在一起 - 它只是创建了 2 个单独的 equirectangular 视频。

ffmpeg -i 1.mp4 -i 2.mp4 -filter_complex '[0:v]v360=output=equirect:input=flat:h_fov=60:v_fov=47.5:yaw=60[first]; [1:v]v360=output=equirect:input=flat:h_fov=60:v_fov=47.5:[second]; [second][first]hstack[out]' -map "[out]" -t 2 out.mp4

叠加层 也不起作用,因为来自 v360 的输出视频在没有视频的图像部分是不透明的。我最终会在输出中显示一个输入视频。

ffmpeg -i 1.mp4 -i 2.mp4 -filter_complex '[0:v]v360=output=equirect:input=flat:h_fov=60:v_fov=47.5:yaw=60[first]; [1:v]v360=output=equirect:input=flat:h_fov=60:v_fov=47.5:[秒]; [second][first]overlay[out]' -map "[out]" -t 2 out.mp4

有没有办法将多个输入视频馈送到单个 v360 equirectangular 过滤器?或者一种使 v360 的空输出透明的方法,这样我就可以使用多个 v360 调用覆盖输出视频,并使用适当的yaw 参数?

提前致谢!

【问题讨论】:

    标签: video ffmpeg 360-degrees 360-virtual-reality


    【解决方案1】:

    AFAIK,ffmpeg 本身不支持视频拼接。

    这通常使用专用的视频拼接软件完成,并且输出通常采用某种格式,即看起来像标准的 mp4 视频,然后其他工具(如 ffmpeg)可以使用。

    有一些手动工作流程使用一些开源工具逐帧拼接,但这是一种相当费力的方法 - 您可以在此处查看使用开源 Hugin 图像拼接器 Hugin (http://hugin.sourceforge.net) 的示例(链接在撰写本文时生效):

    还有基于现已关闭的 VideoStitch 公司的开源拼接软件。这可以在 GitHub 上找到,但在决定要使用的工具之前,值得检查一下它的支持程度:

    【讨论】: