腾讯视频visionOS端全新视听体验
https://mpvideo.qpic.cn/0bc32maaeaaar4afvdegfrtfbu6daljqaaqa.f10002.mp4?
为了保证3D大制作场景的“真实感”,腾讯视频和腾讯云打造了沉浸式空间播放技术,最高支持8K播放,能够呈现巨幕效果,力求将“客厅影院”做得更加逼真,让用户随时随地享受影院级的巨幕体验。在杜比视听技术的支持下,播放器还能让用户在观影时,获得视觉和听觉的双重震撼。
值得一提的事,腾讯云此次从3D内容的采集、生成,到3D编码,到3D封装和分发再到播放端对3D码流软硬解支持进行了全链路的优化,腾讯云媒体处理能力(MPS)打通了从MV-HEVC编码、ISOBMFF(ISO Base Media File Format)容器封装到HLS分发至Vision Pro上播放的完整链路,达到在节省20%带宽的基础上,进一步为用户打造更高清的观影体验。除此之外,腾讯云MPS还对3D视频内容进行了专项的编解码加速,使其支持8K@120fps的实时直播,满足超高清赛事的沉浸式观看需求。
Vision Pro 3D观影概念图
3D内容采集和生成
打造沉浸视觉体验
3D视频通过模拟人眼立体视觉,使人们感受到深度和距离,提供一种更加真实而富有沉浸感的视觉体验。
通常来讲,3D视频内容的采集主要依赖于两种方式:一是通过相机阵列同步捕捉多个视角的画面;二是结合深度估计技术和AI,将传统的2D影像转换为3D格式。目前,腾讯云已采用相机阵列同步采集的方案,成功实现了腾讯会议中裸眼3D视频通话的功能。
裸眼3D视频通话系统相机阵列多视角画面采集
一种基于深度估计的2D转3D算法流程
而Apple的iPhone 15 Pro与Pro Max所录制的“空间视频”,凭借其主摄与超广角镜头的完美结合,极大地简化了3D内容的创作过程。用户只需轻松开启手机,录制横屏视频,iPhone便会智能地将超广角摄像头捕捉的视野与主摄像头完美匹配,从而呈现出立体视觉所需的左右视图画面。借助Vision Pro技术,用户便能沉浸于触手可及的3D视频盛宴之中。
腾讯自研V265编码器支持MV-HEVC扩展
视频压缩率提升20%
解决了画面采集的问题,需要将画面进一步编码、传输再播放出来。目前常用的3D视频内容,大都基于左右视点图像的编码、传输和显示来完成,一般左视点被称为主视角,右视点被称为辅助视角。业界的通常做法是将3D视频以SBS(side by side)的形式,把左右两个视点合并到一帧画面中,再将合并后的序列进行编码。
SBS编码与MV-HEVC编码示意
但这个方案存在一定弊端,比如无法利用不同视点间的信息,无法消除不同视点之间的冗余信息。而如果能够消除3D视频左右视点间的信息冗余,则将大大提升编码器的效率。
为此,针对3D视频、尤其是多视点拼接3D视频的特性,2014年,JCT-3V标准专家组发表了适用于3D多视点视频编码的HEVC编码标准扩展MV-HEVC。MV-HEVC通过将帧间预测模式扩展到了不同视点之间,大大降低3D视频左右视点间的冗余性。(更多关于MV-HEVC编码标准的介绍,可参考往期文章《助力Vision Pro等3D应用,V265新增对MV-HEVC标准的编码支持》)
具体来说, MV-HEVC在编码过程中,主视点(layerID0)图像编码的参考规则沿用基础HEVC,辅视点(layerID1)每一帧图像编码在基础HEVC之上,又多了一个视点间参考帧,即主视点同poc的帧,这样的参考结构提供了更多视点间参考的可能。
MVHEVC双视点编码参考示意图
MV-HEVC 视频编码辅视点码流分析示意(绿色线条带IL标识表示视点间参考)
腾讯云MPS在腾讯自研V265编码器的基础完成了对MV-HEVC扩展的支持(以下统称V265-3D编码器),也同步兼容普通类Side by Side这类的3D设备。并且通过与V265内置参考帧搜索快速算法相结合,V265-3D相比传统解决方案压缩率提升20%。
具体来说,腾讯云在辅视点编码引入编码单元依赖传播(cutree)算法,它是一种高效的技术手段,帮助提升编码器的整体编码压缩率。根据参考关系,该算法通过帧间运动估计预分析与代价计算和代价反向传播,去估算每个编码单元(cu)对后续编码cu的影响,并以此调整被参考cu的编码比特,有效改善后续一连串的画面质量和整体压缩率。
MV-HEVC下的cutree算法优化
在3D视频编码场景下,考虑到主视点和辅视点本身的高相似性,和辅视点总要参考主视点的事实,腾讯云引入视点间的运动估计与代价计算,为主视点中影响更大的cu块分配更多比特,最终达到主客观画质提升的目的。优化后各类场景下的压缩率均有不同程度提升。
视点间cutree优化前后编码压缩率对比
同时,基于MV-HEVC需要对双路视频进行编码的情况,在设计多线程处理架构时,除了要考虑gop结构内不同poc之间的编码顺序依赖关系,还要考虑辅视点对主视点的编码依赖关系。腾讯云基于视点间并行、层级间并行以及独立的码流控制线程,最大程度提高编码线程的并行度。
MV-V265编码并行优化方案
实验结果表明,在3D电影测试场景下,拥有自研MV-HEVC扩展的V265编码器在辅视点(layer 1)上获得了平均40%以上的压缩率提升,两个视点联合获得了20%以上的码率节省。这也就意味着,腾讯云的自研MV扩展编码器在同等画质下能减少20%的带宽开销。
V265 支持MV-HEVC后的3D编码性压缩率提升
全面支持Apple-3D格式封装的流媒体协议转码
除去编码技术上的支持,容器格式和分发协议也需要更好的升级,以满足空间视频的分发支持。空间视频的容器封装方案,基于ISOBMFF标准,对MV-HEVC标准进行了扩展。
普通ISOBMFF视频使用Sample Description Box存储解码器参数信息,比如HEVC流就是HEVC Decoder Configuration Record。而在空间视频场景下,不仅需要存储主视角的参数信息,还需要辅助视角的参数信息。因此标准新增了存储辅助视角参数信息的L-HEVC Decoder Configuration Record,具体结构如下:
aligned(8) class LHEVCDecoderConfigurationRecord {
unsigned int(8) configurationVersion = 1;
bit(4) reserved = ‘1111’b;
unsigned int(12) min_spatial_segmentation_idc;
bit(6) reserved = ‘111111’b;
unsigned int(2) parallelismType;
bit(2) reserved = ‘11’b;
bit(3) numTemporalLayers;
bit(1) temporalIdNested;
unsigned int(2) lengthSizeMinusOne;
unsigned int(8) numOfArrays;
for (j=0; j < numOfArrays; j++) {
unsigned bit(1) array_completeness;
bit(1) reserved = 0;
unsigned int(6) NAL_unit_type;
unsigned int(16) numNalus;
for (i=0; i< numNalus; i++) {
unsigned int(16) nalUnitLength;
bit(8*nalUnitLength) nalUnit;
}
}
}
同时为了表示当前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,在空间视频场景下二者都是存在的。
VideoExtendedUsageBox结构
标准还规定左右视点的NALU( Network Abstraction Layer Unit )必须放在一起作为一帧数据,也就是说拥有相同的PTS(展示时间戳)和DTS(解码时间戳)。
通过以上技术要点,腾讯云媒体处理MPS完成了对MV-HEVC的容器封装支持,同时输出的ISOBMFF视频拥有后向兼容性。这代表了对于不支持MV-HEVC解码能力的播放器,可以只解析和解码Base Layer数据,相当于播放主视角显示2D画面。同时还支持了MV-HEVC的播放器可以同时解析和解码Base Layer和Secondary Stereo Layer数据,并以3D的方式显示。
除此之外,为了支持分发空间视频,腾讯云MPS在现有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实际包含左右视点两个待解码帧,如果依然采用原先的多线程解码处理流程,一个线程实际要去处理两个解码帧,工作效率就会大大降低,严重影响解码速度。
FFMPEG HEVC与未优化MV-HEVC多线程解码示意图(注:线程内数字表示解码帧poc号,视点layerID号)
为最大程度的提高解码线程效率,腾讯云借鉴了V265-3D编码中的多线程调度思想,在正式进入解码流程之前,对packet做左右视点分割操作,那么在实际的解码流程中,两个视点各自独立解码,主视点拥有更高优先级;同视点内多帧并行处理,被参考帧拥有更高优先级。
优化后的FFmpeg多线程解码示意图
这样的优化每个线程工作量与原本HEVC单视点解码的工作量相同,并且对ffmpeg原本解码流程改动最小。优化后的多线程解码速度较优化前提升4.4倍,相比去解码双路标准HEVC视频流,解码速度平均提升15%。
FFmpeg MV-HEVC解码性能
目前腾讯云MPS已经完成MV-HEVC的支持,并预计在8月初完成控制台的正式上线,帮助用户大幅降低3D码流的存储和带宽成本,助力更多用户享受到沉浸式空间视频的全新体验。
如果您想要进一步了解或使用腾讯云相关能力,欢迎扫描下方二维码添加音视频小姐姐微信,我们将安排产研同学专门跟进您的需求。