将双鱼眼视频重投影为等矩形格式(LG 360 相机)Reprojecting Dual Fisheye Videos to Equirectangular (LG 360)
针对 LG 360 相机拍摄的双鱼眼格式 MP4 视频,文章提供了使用 ffmpeg 转换为等矩形格式的完整命令:`ffmpeg -i original.mp4 -vf "v360=input=dfisheye:output=equirect:ih_fov=189:iv_fov=189" output.mp4`。转换后可被 VLC 和 YouTube 正确识别为球形视频。
Terence Eden
我仍然在使用那台过时的 LG 360 相机。当从它的 SD 卡复制 MP4 视频时,它们会以“双鱼眼”格式输出——看起来就是这样:
VLC 和 YouTube 只能在球形模式下播放“等距柱状投影”视频。那么,如何将双鱼眼转换为等距柱状投影呢?
简单方法
ffmpeg \
-i original.mp4 \
-vf "v360=input=dfisheye:output=equirect:ih_fov=189:iv_fov=189" \
360.mp4不过这种方法有些“怪癖”。
视频滤镜的第一部分是 v360=input=dfisheye:output=equirect——这表示对输入为双鱼眼的视频应用 360 滤镜,然后输出为等距柱状投影格式。
下一部分是 :ih_fov=189:iv_fov=189,表示输入视频的水平和垂直视场角均为 189°。这个数值听起来很奇怪,对吧?
你可能会觉得每个镜头应该是 180°,对吧?如果使用 :ih_fov=180:iv_fov=180 会发生什么?
这时两个镜头会有轻微重叠。因此使用 180° 会导致某些区域被重复渲染。
我认为从技术上讲,这两个镜头可以提供 200° 的视野,但物理外壳限制了全部视角的呈现。我通过反复试验才得出 189° 这个值——主要是试错!使用 :ih_fov=189:iv_fov=189 可以得到图像重叠更少的画面:
虽然不完美,但它能较好地保持图像的连贯性。
裁剪掉的图像部分
还有另一件值得注意的事——圆形画面的顶部、右侧、底部和左侧“角落”都被裁掉了。如果图像传感器能捕捉到全部内容,鱼眼效果应该看起来像这样:
我曾尝试在视频中补入这些缺失的部分,但结果并没有明显改善。
让等距柱状投影视频在 VLC 中正常播放
遗憾的是,ffmpeg 不会写入必要的元数据来告知播放设备该视频是球面格式的。根据 Bino3D 的说法,你必须改用 exiftool 执行以下操作:
exiftool \
-XMP-GSpherical:Spherical="true" \
-XMP-GSpherical:Stitched="true" \
-XMP-GSpherical:ProjectionType="equirectangular" \
video.mp4整合所有步骤
LG 360 使用 AAC 编码录制 5.1 环绕声音频。这种格式本身已经相当压缩,因此没有必要再将其压缩为 Opus 格式。
默认的视频编码器是 h264,但由于视频会被重新投影,画质总会有一定损失。选择你最熟悉的编码器,以获得画质、文件大小和编码速度之间的最佳平衡。
运行:
ffmpeg \
-i original.mp4 \
-vf "v360=input=dfisheye:output=equirect:ih_fov=189:iv_fov=189" \
-c:v libx265 -preset fast -crf 28 -c:a copy \
out.mp4; exiftool \
-XMP-GSpherical:Spherical="true" \
-XMP-GSpherical:Stitched="true" \
-XMP-GSpherical:ProjectionType="equirectangular" \
out.mp4这将生成一个适合在 VLC 或 VR 中观看的合理质量的等距柱状投影文件。
如果这对你有帮助,请在下方留言!
需要完整排版与评论请前往来源站点阅读。