Vision Pro 中国区正式发售,腾讯云助力腾讯视频 3D 放映高清画质体验
Apple Vision pro 于 6 月 28 日面向中国区发售,腾讯视频 visionOS 端也在此前正式上线 vision pro 的 App Store。其中,腾讯视频全新推出的“客厅巨幕影院”的 3D 放映模块由腾讯云提供技术支持,为用户带来全新沉浸体验。
为了保证 3D 大制作场景的“真实感”,腾讯视频和腾讯云打造了沉浸式空间播放技术,最高支持 8K 播放,能够呈现巨幕效果,力求将“客厅影院”做得更加逼真,让用户随时随地享受影院级的巨幕体验。在杜比视听技术的支持下,播放器还能让用户在观影时,获得视觉和听觉的双重震撼。
值得一提的事,腾讯云此次从 3D 内容的采集、生成,到 3D 编码,到 3D 封装和分发再到播放端对 3D 码流软硬解支持进行了全链路的优化,腾讯云媒体处理能力(MPS)打通了从 MV-HEVC 编码、ISOBMFF(ISO Base Media File Format)容器封装到 HLS 分发至 Vision Pro 上播放的完整链路,达到在节省 20%带宽的基础上,进一步为用户打造更高清的观影体验。除此之外,腾讯云 MPS 还对 3D 视频内容进行了专项的编解码加速,使其支持 8K@120fps 的实时直播,满足超高清赛事的沉浸式观看需求。
![](https://static001.geekbang.org/infoq/45/457629b1f5e1e5b40b37f8ef57078e09.png)
![](https://static001.geekbang.org/infoq/32/32bc5aa21fb4e6d43a4f843e11557f68.png)
Vision pro 3D 观影概念图
3D 内容采集和生成,打造沉浸视觉体验
3D 视频通过模拟人眼立体视觉,使人们感受到深度和距离,提供一种更加真实而富有沉浸感的视觉体验。
通常来讲,3D 视频内容采集会通过相机阵列同步采集多视角画面,或者通过深度估计加 AI 生成的 2D 转 3D 方案。目前,腾讯云也采用相机阵列同步采集的方法,实现腾讯会议裸眼 3D 视频通话的场景。
![](https://static001.geekbang.org/infoq/53/53307f1e3eece3005755bb7427293fd2.png)
裸眼 3D 视频通话系统相机阵列多视角画面采集
![](https://static001.geekbang.org/infoq/04/044103d49050fe1d9ef016cb46296093.png)
一种基于深度估计的 2D 转 3D 算法流程
而 Apple iphone 15 Pro/ Pro Max 通过主摄和超广角镜头录制的“空间视频”,将 3D 内容创作变得更加简单。用户只要打开手机录制横屏视频,iphone 会将超广角摄像头拍摄的视域自动调整到和主摄匹配的程度,产生立体视觉效果所需的左右视图画面,再通过 vision pro 进行观看,让 3D 视频触手可及。
腾讯自研 V265 编码器支持 MV-HEVC 扩展,视频压缩率提升 20%
解决了画面采集的问题,需要将画面进一步编码、传输再播放出来。目前常用的 3D 视频内容,大都基于左右视点图像的编码、传输和显示来完成,一般左视点被称为主视角,右视点被称为辅助视角。业界的通常做法是将 3D 视频以 SBS(side by side)的形式,把左右两个视点合并到一帧画面中,再将合并后的序列进行编码。
![](https://static001.geekbang.org/infoq/03/038634e2cdb3946daf5ba6f104cba118.png)
SBS 编码与 MV-HEVC 编码示意
但这个方案存在一定弊端,比如无法利用不同视点间的信息,无法消除不同视点之间的冗余信息。而如果能够消除 3D 视频左右视点间的信息冗余,则将大大提升编码器的效率。
为此,针对 3D 视频、尤其是多视点拼接 3D 视频的特性,2014 年,JCT-3V 标准专家组发表了适用于 3D 多视点视频编码的 HEVC 编码标准扩展 MV-HEVC。MV-HEVC 通过将帧间预测模式扩展到了不同视点之间,大大降低 3D 视频左右视点间的冗余性。
具体来说, MV-HEVC 在编码过程中,主视点(layerID0)图像编码的参考规则沿用基础 HEVC,辅视点(layerID1)每一帧图像编码在基础 HEVC 之上,又多了一个视点间参考帧,即主视点同 poc 的帧,这样的参考结构提供了更多视点间参考的可能。
![](https://static001.geekbang.org/infoq/60/6088168a2238d89bcf7c1210864e1fb3.png)
MVHEVC 双视点编码参考示意图
![](https://static001.geekbang.org/infoq/7a/7af9d4fc14f00b7ed5bbe4083ac8200b.png)
MV-HEVC 视频编码辅视点码流分析示意(绿色线条带 IL 标识表示视点间参考)
据了解,腾讯云 MPS 在腾讯自研 V265 编码器的基础完成了对 MV-HEVC 扩展的支持(以下统称 V265-3D 编码器),也同步兼容普通类 Side by Side 这类的 3D 设备。并且通过与 V265 内置参考帧搜索快速算法相结合,V265-3D 相比传统解决方案压缩率提升 20%。
具体来说,腾讯云在辅视点编码引入编码单元依赖传播(cutree)算法,它是一种高效的技术手段,帮助提升编码器的整体编码压缩率。根据参考关系,该算法通过帧间运动估计预分析与代价计算和代价反向传播,去估算每个编码单元(cu)对后续编码 cu 的影响,并以此调整被参考 cu 的编码比特,有效改善后续一连串的画面质量和整体压缩率。
![](https://static001.geekbang.org/infoq/e7/e740aff8abdda948650cc9c2c6e63c2c.png)
MV-HEVC 下的 cutree 算法优化
在 3D 视频编码场景下,考虑到主视点和辅视点本身的高相似性,和辅视点总要参考主视点的事实,腾讯云引入视点间的运动估计与代价计算,为主视点中影响更大的 cu 块分配更多比特,最终达到主客观画质提升的目的。优化后各类场景下的压缩率均有不同程度提升。
![](https://static001.geekbang.org/infoq/c6/c622a6f98fe39b200a2fa311d3d59b2a.png)
视点间 cutree 优化前后编码压缩率对比
同时,基于 MV-HEVC 需要对双路视频进行编码的情况,在设计多线程处理架构时,除了要考虑 gop 结构内不同 poc 之间的编码顺序依赖关系,还要考虑辅视点对主视点的编码依赖关系。腾讯云基于视点间并行、层级间并行以及独立的码流控制线程,最大程度提高编码线程的并行度。
●视点间并行:左右两个视点采用独立线程池管理,并为主视点分配更高优先级。
●层级间并行:同视点内,不同层级的帧并行处理,并按照 gop 结构的参考关系,为低层级帧分配更高优先级。
●独立的码流控制线程:采用一个独立线程从缓冲区获取得到码流,并对左右视点产生的码流按照顺序进行拼接,以输出正确码流。
![](https://static001.geekbang.org/infoq/1e/1ef6b62000b253ddc2415cdec5e18c21.png)
MV-V265 编码并优化方案
实验结果表明,在 3D 电影测试场景下,拥有自研 MVHEVC 扩展的 V265 编码器在辅视点(layer 1)上获得了平均 40%以上的压缩率提升,两个视点联合获得了 20%以上的码率节省。这也就意味着,腾讯云的自研 MV 扩展编码器在同等画质下能减少 20%的带宽开销。
![](https://static001.geekbang.org/infoq/f5/f5e5af0ff92a7461199f870ee82772b5.png)
V265 支持 MV-HEVC 后的 3D 编码性压缩率提升
全面支持 APPLE-3D 格式封装的流媒体协议转码
除去编码技术上的支持,容器格式和分发协议也需要更好的升级,以满足空间视频的分发支持。空间视频的容器封装方案,基于 ISOBMFF 标准,对 MV-HEVC 标准进行了扩展。
普通 ISOBMFF 视频使用 Sample Description Box 存储解码器参数信息,比如 HEVC 流就是 HEVC Decoder Configuration Record。而在空间视频场景下,不仅需要存储主视角的参数信息,还需要辅助视角的参数信息。因此标准新增了存储辅助视角参数信息的 L-HEVC Decoder Configuration Record,具体结构如下:
![](https://static001.geekbang.org/infoq/15/154e61c14a9b3edd73c602c8e46dfd4b.png)
同时为了表示当前 HEVC 流为 MV-HEVC,相比普通 HEVC 视频,HEVC Decoder Configuration Record 会多加入一个名为 three_dimensional_reference_displays_info 的 SEI 信息,该 SEI 主要用于保存 MV-HEVC 左右视角 ID 等信息。
除了参数信息,扩展标准还在 Sample Description Box 写入一个名为 VideoExtendedUsage 的 Box。该 Box 核心成员是 StereoViewInformation Box,一个表示是否存在左视角和右视角的 Box,在空间视频场景下二者都是存在的。
![](https://static001.geekbang.org/infoq/e7/e7ca2cc9f2e14f1e4d403caa79fd35a3.png)
VideoExtendedUsageBox 结构
标准还规定左右视点的 NALU( Network Abstraction Layer Unit )必须放在一起作为一帧数据,也就是说拥有相同的 PTS(展示时间戳)和 DTS(解码时间戳)。
通过以上技术要点,完成了对 MV-HEVC 的容器封装支持,同时输出的 ISOBMFF 视频拥有后向兼容性。这代表了对于不支持 MV-HEVC 解码能力的播放器,可以只解析和解码 Base Layer 数据,相当于播放主视角显示 2D 画面。同时还支持了 MV-HEVC 的播放器可以同时解析和解码 Base Layer 和 Secondary Stereo Layer 数据,并以 3D 的方式显示。
除此之外,HLS 已经被广泛用于视频直播和点播领域。为了支持分发空间视频,在现有 HLS 标准的基础上也引入了支持空间视频的特性。
多线程解码速度提升 15%,确保 3D 视频快速转码、流畅播放
目前,Apple Vision Pro 搭载的芯片通过固件层优化已经实现了对 MV-HEVC 格式码流的硬解支持。腾讯云也在 V265 oteam 的支持下对自研 HEVC 解码器也引入了 MV-HEVC 扩展解码能力支持,并将其适配 FFMPEG,这意味着用户现在可以通过 FFMPEG 轻松调用相关解码器,实现对 MV-HEVC 3D 视频流的快速转码处理以及解码播放。
首先,基于 MVHEVC 解码标准,通过 MVHEVC 新的语法内容兼容、加入视点间参考帧的参考队列管理、双视点共享 DPB buffer 的正确建立等步骤,实现 FFMPEG 对 MV-HEVC 流的解码支持。
同时,在保证功能完善的基础之上,确保双视点解码多线程的安排调度,高效利用计算资源,让 MVHEVC 在多解一路视频流的情况下尽量不降低解码速度。
FFMPEG 在调用解码库进行解码时,一般以 packet 为输入单位,以 frame 为输出单位。当解码 HEVC 单视点流时,码流中的一个 packet 实际包含一个待解码帧,一个线程接受一个 packet,多个 frame 级线程并行处理。当前帧处于显示状态时,未来的几帧已在其它线程中被解码。
由于在解码 MVHEVC 双视点流时,一个 packet 实际包含左右视点两个待解码帧,如果依然采用原先的多线程解码处理流程,一个线程实际要去处理两个解码帧,工作效率就会大大降低,严重影响解码速度。
![](https://static001.geekbang.org/infoq/43/43f85045446b4aad5deb8ec67970b081.png)
FFMPEG HEVC 与未优化 MV-HEVC 多线程解码示意图(注:线程内数字表示解码帧 poc 号,视点 layerID 号)
为最大程度的提高解码线程效率,腾讯云借鉴了 V265-3D 编码中的多线程调度思想,在正式进入解码流程之前,对 packet 做左右视点分割操作,那么在实际的解码流程中,两个视点各自独立解码,主视点拥有更高优先级;同视点内多帧并行处理,被参考帧拥有更高优先级。
![](https://static001.geekbang.org/infoq/43/433d35c39c35f313b8c1a7ef132c86f3.png)
优化后的 FFmpeg 多线程解码示意图
这样的优化每个线程工作量与原本 HEVC 单视点解码的工作量相同,并且对 ffmpeg 原本解码流程改动最小。优化后的多线程解码速度较优化前提升 4.4 倍,相比去解码双路标准 HEVC 视频流,解码速度平均提升 15%
![](https://static001.geekbang.org/infoq/94/94f1e6a670e252e5227e362b31b99e62.png)
FFmpeg MV-HEVC 解码性能
目前腾讯云 MPS 已经完成 MV-HEVC 的支持,并预计在 8 月初完成控制台的正式上线,帮助用户大幅降低 3D 码流的存储和带宽成本,助力更多用户享受到沉浸式空间视频的全新体验。
![](https://static001.geekbang.org/infoq/7d/7db8570135e61e3f670851be9f73d91a.png)
评论