我想知道如何实际使用 ffmpeg 从 2 个不同的 VR180 视频创建 2xVR180 视频文件。
也就是说,正面是一个立体3D视频,背面是另一个立体3D视频。
视频是在 3D 模式下使用 Insta360 EVO 拍摄的,因此我可以处理 4 个视频文件(左眼 2 个 INSV 文件和右眼其他 2 个 INSV 文件),或者直接处理 2 个拼接的 HEVC/MP4 文件。
我知道结果不会是 360 度 3D 立体视频,这就是我说“2xVR180”的原因。
谢谢您的帮助
最佳答案
我终于找到了解决办法!
“算法”是:
结果是这样的:
Front left eye | Back left eye | Front right eye | Back right eye
为了使用 ffmpeg 获得这个,我使用了以下语法ffmpeg -i front_vr180.mp4 -i back_vr180.mp4 -filter_complex "[0:v]crop=2880:2880:0:0[aleft];[0:v]crop=2880:2880:iw-2880:0[aright];[1:v]crop=2880:2880:0:0[bleft];[1:v]crop=2880:2880:iw-2880:0[bright];[aleft][bleft]hstack=inputs=2[left];[aright][bright]hstack=inputs=2[right];[left][right]hstack=inputs=2[full];[full]scale=7680:-1[v]" -map "[v]" -b:v 200M -preset slow -crf 6 full_360VR_test.mp4
我将裁剪过滤器(眼睛分离)与 hstack 过滤器(视频连接)链接起来,最终通过缩放过滤器调整视频大小。更多细节:
此时,我们将有一个 2xVR180 的视频,但尺寸太大(11520x2880),需要按比例缩小(例如,8K)。这是通过 [full]scale=7680:-1[v] 完成的。 7680 是宽度,-1 作为高度意味着我们让 ffmpeg 确定正确的高度以保持比例纵横比。这种缩小的结果,[v] 将是 7680x1920。
关于video - 如何使用 ffmpeg "merge"2 VR180 视频文件获得 360 视频 (2xVR180) 输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70419239/