首页 > 解决方案 > 使用 FFmpeg v360 过滤器对 180 个 VR 素材进行变形

问题描述

我目前正在苦苦挣扎。我已经搜索了好几天,找不到一个可以实现我们想要做的命令。

我们有立体 180 度的 VR 素材,采用并排的 equirectangular 格式,我们希望将其转换为平面格式,以便我们可以使用进一步的 AI 软件进行处理。

我们已经使用 FFmpeg 将文件在宽度上分成两半,因此我们有一个“右”眼和一个“左”眼视频文件。

对于每个视频文件,我们需要使用 FFmpeg(和 v360 过滤器)将 180 度 equirectangular 素材转换为平坦的、未变形的视频文件。

例如,我们尝试了以下方法:

ffmpeg -i 2LEFT.mp4 -vf "v360=input=equirect:ih_fov=180:iv_fov=180:output=flat" 2LEFTTEST.mp4

但是,这会导致视频非常扭曲/错位。

将不胜感激一些关于将现在的单视场 180 度 equirectangular 素材转换为平面视频文件的命令示例、提示和建议。

提前谢谢你的帮助。

标签: videoffmpegvideo-processingvirtual-reality360-virtual-reality

解决方案


我最近遇到了类似的问题。这是解决方案:如果您的视频已经分成左右视图,只需使用:

ffmpeg -i 2LEFT.mp4 -vf "v360=input=hequirect:output=flat" 2LEFTTEST.mp4

这与您尝试在一种投影中使用的命令不同。通常 VR180 对每只眼睛使用半等距投影。

就个人而言,我建议 YouTube 视频设置输出视野和分辨率:

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

最后,使用 filter_complex,您可以在一个命令中立即将视频剪切为左右视图,如果您愿意:

ffmpeg -i 2.mp4 -filter_complex "[0:v]v360=input=hequirect:output=flat:h_fov=100:v_fov=67.5:in_stereo=sbs:out_stereo=sbs:w=1280:h=720[flat];[flat]split[left][right];[left]stereo3d=sbsl:ml[left_mono];[right]stereo3d=sbsl:mr[right_mono]" -map [left_mono] 2LEFTTEST.mp4 -map [right_mono] 2RIGHTTEST.mp4

推荐阅读