常见的 360° 全景视频格式介绍及播放方式

时间:2024-02-25 21:01:27

1、格式

油管目前提供 2 种 360° 视频格式:等距柱状投影格式(Equirectangular)和等角度立方体贴图格式(Equi-Angular Cubemap)。 由于阿满的视频四周区别不大,这里会使用其他视频截图进行演示。 所谓“等距柱状投影”也就是最常见的世界地图的投影方式,做法是将经线和纬线等距地(或有疏密地)投影到一个矩形平面上,这里借用谷歌博客上的图和注释。

图1 根据 Tissot Indicatrix 投影的等距柱状图

这种格式的优点是比较直观,并且投影是矩形的。缺点也很明显,球体的上下两极投影出来的像素数很多,而细节内容比较丰富的赤道区域相比来说像素数就很少,导致还原时清晰度比较糟糕。另外,这种格式的画面在未渲染的情况下扭曲比较明显。

 图2 等距柱状投影格式(未处理的画面)

这里的两张图都是等距柱状投影格式在未渲染成全景格式(球体)时的画面。画面*是前方,左右两边环绕连接成为后方。

图3 等距柱状投影格式(未处理的画面)

“立方体贴图”(Cube Map)则是另一种全景画面的储存格式,常用于游戏中。做法是将球体上的内容向外投影到一个立方体上,然后展开。

 图4 标准立方体贴图

相比等距柱状投影,立方体贴图的扭曲更小。但是在各个面的边角所投射的像素分布相比理想情况仍是不太均匀。

图5 由于边角部分距离球体较远,像素分布仍不均匀

传统立方体贴图会按照下图格式将六个面进行排布。

 图6 传统立方体贴图格式及排布

上图这种情况,直观上可能很难理解,但是使用播放器播放对应的全景视频时可以体验到其中的特别之处。

可以使用脸书开发的 Transform360 工具将等距柱状投影格式转换为传统立方体贴图。在上图的例子中,转换者将等圆柱映射的 4K 全景视频(3840×1920),转换为相同的正方体映射的分辨率为 2880×1920,文件大小缩小了近 1/3,这也是立方体贴图的优点之一。 而“等角度立方体贴图”(EAC)则是谷歌所提出的进一步优化的格式,方法是更改优化投影时的采样点位置,使得边角与中心的像素密度相等。

图7 传统立方体投射和 EAC 的对比

这样做的好处就是在相同的源视频分辨率下可以提高细节部分的清晰度。

图8 等距柱状投影和 EAC 的细节清晰度对比

油管所采用的 EAC 贴图排布方式如下。

 图9 YouTube 的 EAC 格式排布

各面标注如***意下图的文字方向都是基于旋转后天空在上、地面在下、画面方向正常的情况标注的。

图10 YouTube 的 EAC 格式排布(带标注)

观察这些截图可以发现,画面上半部分即为面向前方时的横向(左右)扫视图,下半部分逆时针旋转 90° 后即为面向后方时的纵向(上下)扫视图。下图更加直观。

图11  上、下半部分分别都是相连的

不过目前没有工具可以处理转换 EAC 格式,只能在油管播放,残念。 更多关于三种格式的对比和算法的详情,请到谷歌博客查看。

2、播放

GoPro VR Player(免费)可以正确播放等距柱状投影格式(Equirectangular)和传统立方体投影格式(Cube Map),并支持多种投影模式输出(GoPro VR、矩形、小行星、鱼眼),播放效果比较好,但是安装包比较大。另外,该播放器同时包含 Premiere Pro 插件,如果有剪辑 VR 视频需要,可以尝试使用。

下载地址:http://www.kolor.com/gopro-vr-player/

老牌播放器 PotPlayer 和 VLC 都可以正确播放等距柱状投影格式(Equirectangular),其中 PotPlayer 可以手动选择输入格式是否是全景视频,而 VLC 只能自动选择,但是 VLC 的渲染效果和体验接近 GoPro VR Player,比 PotPlayer 要好。

参考资料:

  • 谷歌博客地址:https://blog.google/products/google-ar-vr/bringing-pixels-front-and-center-vr-video/
  • 演示所用的滑梯全景视频:https://youtu.be/QKm-SOOMC4c
  • 过山车展示图来自博客:https://blog.chenjia.me/articles/170812-144946.html
  • Transform360 工具:https://github.com/facebook/transform360
  • YouTube 上传 360° 视频指南:https://support.google.com/youtube/answer/6178631?hl=zh-Hans
  • 空间音视频规范和元数据 Injector:https://github.com/google/spatial-media

本文参考的文章:

https://www.bilibili.com/read/cv788511