如何将 VR 视频扁平化以便在普通屏幕上显示?

如何将 VR 视频扁平化以便在普通屏幕上显示?

我不太清楚这里的术语,但我有一个 VR 视频,打算使用每只眼睛都有单独屏幕的耳机来观看。它不是 3D 的,因为当你转头时你会看到不同的东西,它只是“2.5D”,所以当你看着它时你会有一种深度感。有两个视频频道或多或少是相同的,它们只是以略微不同的角度录制的,类似于人眼看世界的方式。我希望这能让你清楚我拥有什么类型的视频,否则请在评论中要求澄清(如果这种类型的视频有特殊的术语,请告诉我)。

更多细节:原始视频为 4320x2160,基本上是 2 个 2160 x 2160 的方形通道。

我想在普通屏幕上不失真地显示该视频。

我已阅读过以下问题:

  1. https://stackoverflow.com/questions/75165610/how-to-reproject-and-join-these-two-clips-with-ffmpeg

  2. https://stackoverflow.com/questions/61348681/flatten-360-fisheye-video

  3. https://stackoverflow.com/questions/62238714/how-to-de-warp-180-degree-or-360-degree-fisheye-video-with-ffmpeg

  4. https://stackoverflow.com/questions/61348681/flatten-360-fisheye-video

  5. https://stackoverflow.com/questions/66960003/unwarping-180-vr-footage-with-ffmpeg-v360-filter

(可能还有其他一些)。

我想将两个视频通道(请注意,它们在同一个视频流中,而不是像电影中那样可以有多个不同语言的单独音频流)提取到单独的文件中,然后“消除失真”。

(3)给了我一个命令来将视频分割成两个文件:

ffmpeg -i -myclip.mp4 -filter_complex "[0]crop=iw/2:ih:0:0[left];[0]crop=iw/2:ih:ow:0[right]" -map "[left]" -map 0:a /tmp/left.mp4 -map "[right]" -map 0:a /tmp/right.mp4

这似乎按预期工作,但我还需要“消除”内容的扭曲,因为它是用鱼眼镜头或类似的东西拍摄的(不在图像绝对中心的直线或多或少是圆形的)。

(5)建议这个命令:

ffmpeg -i left.mp4 -vf "v360=input=hequirect:output=flat:h_fov=100:v_fov=67.5:w=1280:h=720" leftfixed.mp4

但产生的输出为 4320x2160(显然仅来自一个通道,因为输入只是一个通道)但只是原始图像的中心,我估计内容是原始图像中点的 500x250 像素(放大到 4320x2160,因此非常块状)。

我怎样才能“不扭曲”该视频,以便它在 2D 屏幕上看起来不错,同时保持尺寸不变?

答案1

您将原始视频描述为 2.5D 格式(https://en.wikipedia.org/wiki/2.5D)。

您需要选择其中一张图片并将其输出到新副本。我同意您分割视频的脚本。

您需要校正鱼眼失真。您使用 V360 是一种方法。“h_fov”和“v_fov”不支持命令“hequirect”。“h_fov”和“v_fov”支持命令“equisolid”。

参考 https://ffmpeg.org/ffmpeg-filters.html#toc-v360

相关内容