
👉导读
2023年6月6日,备受全球科技圈瞩目的 Apple Vision Pro 在苹果全球开发者大会(WWDC)上正式发布,宣称通过对 MV-HEVC 编码标准的硬件编解码支持,显著提升了 3D 视频主客观体验。一时间,很多开发者都在搜索 MV-HEVC 是什么,跟传统的基于 HEVC 的 3D 编码有什么区别?Apple Vision Pro 的技术是如何实现的?腾讯跟 MV-HEVC 又有什么关系?本文带你揭晓,欢迎阅读。在我们的日常生活中,视频已经成为了一种无处不在的媒介。从电影、电视节目到社交媒体上的短片,视频为我们提供了丰富多彩的视觉体验。然而,随着技术的不断发展,人们不再满足普通的 2D 视频,而希望获得更真实富有沉浸感体验的视频效果,3D 视频内容就这样逐渐进入人们的视野。3D 视频通过模拟人眼的立体视觉,使我们能够感受到深度和距离,提供了一种更加真实而富有沉浸感的视觉体验。
图1 左右眼是如何产生立体视觉的目前,常用的 3D 视频成像技术包括全息投影,裸眼 3D 屏幕和立体电影显示技术等。1.1 全息投影
全息投影是一种先进的显示技术,它可以在空气中或透明介质上创建三维图像。这种技术基于全息学原理,通过记录和再现物体的光波干涉模式,从而形成一个看起来就像真实物体在那里一样的三维影像。不过这种显示技术碍于显示介质的发展,目前尚在实验室研究阶段,并未规模化商用。
图2 一种“伪全息”显示装置,通过玻璃反射下方屏幕的内容1.2 裸眼3D
裸眼 3D 技术是一种无需佩戴 3D 眼镜就能看到 3D 效果的技术。它通常通过在显示屏上设置特殊的光栅或透镜阵列,使左眼和右眼看到的图像有微小的差异,从而产生立体效果。但是,这种技术需要专用显示屏且造价昂贵,目前普及度不高。
图3 裸眼 3D 技术原理图1.3 立体电影
立体电影显示技术是最早,也是最常用的立体影像技术,它通过使用双色滤镜或者偏振镜片,使左眼和右眼看到的图像不同,从而产生立体效果。观看这种视频只需要佩戴特殊眼镜即可。
图4 红蓝 3D 图像1.4 VR 头显
VR 头显将左右视点画面分别给到观众左右眼来呈现 3D 效果。Meta Oculus 就是一款市面上广受欢迎的 VR 头显设备,很显然,Apple 最近重磅推出的 Vision pro 也是同样的 VR 产品。除了全息投影技术外,其他的 3D 成像技术大多也都是是将左右两个视点的视频用不同的方法分别呈现在观众的左右眼中,因此 3D 视频可以看作是两路 2D 视频的合并显示。
图5 Apple Vision Pro目前常用 3D 视频内容,主要是 VR 头显和立体影视,大都基于左右视点图像的编码、传输和显示来完成。但长期以来,大量 3D 视频内容并没有使用专用的视频编码标准,而是使用通用的视频编码标准进行编码。主要的做法是将 3D 视频以 SBS(side by side)的形式,把左右两个视点合并到一帧画面中,再将合并后的序列进行编码,如图6所示:
图6 主流3D视频编码视频图像形式以 HEVC 编码器为例,HEVC 编码器并没有帧内远距离搜索,因此同一帧的左右半间无法相互预测;另一方面,由于运动估计搜索范围的限制,帧间预测也不能利用不同视点间的信息。如图7所示描绘了帧间预测的运动矢量,可以看到不存在跨越不同视点的帧间预测,不同视点的冗余信息并没有被消除。因此如果能够消除 3D 视频左右视点间的信息冗余,将大大提升编码器的效率。针对 3D 视频、尤其是多视点拼接 3D 视频的新特性,JCT-3V 标准专家组成立,并在2014年发表了适用于 3D 多视点视频编码的 HEVC 编码标准扩展:MV-HEVC。如图8 展示了按照 MV-HEVC 标准编码的 3D 视频右视点帧间预测的运动矢量图,图中可以看到右视点使用了大量的视点间参考模式,充分消除了视点间的冗余信息。
图8 MV-HEVC 3D视频编码右视点码流分析示意(绿色线条带IL标识表示视点间参考)4.1 Layer 的引入与参考关系的变化
MV-HEVC(MultiView-HEVC)标准中,NALU header 中引入了新的语法元素:LayerId。它表示该 NALU 封装的帧(或Slice)所归属的视点号。在 3D 视频中我们通常用 LayerId 0 表示该帧属于左视点(主视点),LayerId 1则表示属于右视点(辅视点)。我们称同属于一个 POC 但属于不同 LayerId 的帧为一个 AU(Acess Unit)。主视点图像编码的参考规则沿用基础 HEVC,辅视点每一帧图像编码在基础 HEVC 之上,又多了一个视点间参考帧,即主视点同 poc 的帧。这样的参考结构提供了视点间参考的可能。
属于不同 LayerId 的帧可以拥有相同的 POC 号,但是 LayerId 更大的帧可以参考相同 AU 的 LayerId 更小的帧,如图9所示。

图9 MV-HEVC双视点编码参考示意图4.2 VPS,SPS,PPS 等参数集的变化
由于 Layer 的引入,还需要引入新的语法内容。另外,不同 LayerId 理论上可以作为一路单独的视频输出,这就意味着它们需要配置属于自己的 SPS 和 PPS。针对这些问题,MV-HEVC 对 VPS 进行了扩展,引入了新的 Profile Tier Level,并修改了 PPS 和 SPS 的部分语法,考虑到不同视点的大量 SPS 和 PPS 的参数内容(帧的宽高,色度采样等)是重复的,MV-HEVC 对 Layer Id 不为0的帧所引用的 SPS 和 PPS 语法做了特殊约定,去掉了这些信息冗余。4.3 Inter Layer 模式的引入
为消除视点间的信息冗余,MV-HEVC 将帧间预测模式扩展到了不同 Layer 间,称其为 Inter Layer 模式。
Inter Layer 模式的引入带来了新的问题,例如下面这个场景:
TMVP(时域运动矢量预测)模式是 HEVC 的一种帧间预测技术,会选取当前块的同位块的 MV,并根据其在空域上的 POC 距离进行相应的 MV 缩放,如下图所示:

图10 TMVP(时域运动矢量预测)模式示意图但是随着 inter Layer 模式的引入,参考帧与当前帧的 POC 号可能相同,tb 和 td 都有可能为0,这导致缩放操作可能会出现除0错误,或者缩放为0矢量,失去缩放的意义。
因此 MV-HEVC 规定,所有的 inter Layer 模式,其参考类型都标记为长期参考帧,而所有的长期参考都只能作为长期参考的的 MVP,而不能作为非长期参考的 MVP。通过将 inter Layer 和非 inter Layer 预测模式区分开来,避免了上面这种错误的出现。
4.3.1 编码端测试问题
不同于互联网应用的低密度I帧特性,JCT3V 标准面向广电应用,一般使用20-30帧 I 帧间隔来评价工具优化带来的码率节省。由于 MV-HEVC 标准的layer1中不包含 I 帧而代之以使用视间预测的 P 帧、商业编码器使用的参考帧数与参考软件也有明显差别,所以 MV-HEVC 在参考软件下的压缩率提升将明显大于其在互联网业务上的收益。因此,需要在商业编码器上实现并实测 MV-HEVC 的收益。4.3.2 解码端支持现状
目前,Apple Vision Pro 搭载的芯片通过固件层优化已经实现了对 MV-HEVC 码流的硬解支持。业务团队可以对自研 HEVC 解码器引入 MV-HEVC 扩展解码能力支持,并将其适配 ffmpeg,用户便可通过 ffmpeg 调用相关解码器解码 MV-HEVC 3D 视频流。早在 Vision Pro 发布之前,香农实验室就开始了对 3D 视频编码标准商用化的支持的调研和实现。在 Vision Pro 发布后不久,V265 OTEAM 适时添加了对 MV-HEVC 扩展的支持。通过与 V265 内置的参考帧搜索快速算法相结合,在不降低编码速度的基础上,V265-MVHEVC 取得了相比传统解决方案明显的压缩率提升。
初步是实验结果表明,在 3D 电影测试场景下,拥有自研 MV 扩展的编码器比通用编码器在辅视点(layer 1)上获得了平均50%以上的码率节省,两个视点联合获得了20%以上的码率节省。这也就意味着,我们的自研 MV 扩展编码器在同等画质下能减少20%的带宽开销。在后续工作中,V265 在快速算法、码率控制、延迟约束等各个角度持续完善对 MV-HEVC 的支持能力,满足复杂多样的客户需求。


图11 V265 支持MV-HEVC后的3D编码性能提升
通过添加 MV-HEVC 编码相关的语法和模式支持,V265 新增了 3D 视频编码能力,同画质下可减少20%的带宽 ,结合 MV-HEVC 标准易于硬解支持的生态优势, 将持续助力 3D 视频应用不断发展。
备注:V265:腾讯 V265 编码器是腾讯 V265 OTEAM 主导研发的行业领先的符合 HEVC 标准的视频编码软件,多年来连续在 MSU 视频编码器比赛 HEVC 编码器中全面领先。