编译/VR陀螺
AVFoundation团队的工程师Chris Flick在苹果WWDC23的开发者演讲中以“为3D空间体验传输流媒体视频内容”为主题展开讨论。
该演讲旨在帮助开发者了解如何使用HTTP Live Streaming(HLS)为VisionOS准备和提供流媒体视频内容,以及让他们快速了解当前的HLS的交付流程和相关技术,令开发者能在现有的2D内容制作流程的基础上进行3D内容扩展,使得流媒体视频内容更有沉浸感。
图源:苹果
以下为苹果“为3D空间体验传输流媒体视频内容”的主题分享(VR陀螺翻译,基于原文略有修改):
首先简要回顾一下目前使用HTTP实时流媒体制作、准备和交付2D内容的步骤。HTTP Live Streaming也被称为HLS。在完成了2D内容的准备和交付后,我们将转向3D视频内容,即支持的内容和对刚才描述的步骤的更新。
考虑到内容管道,我们将从视频、音频和字幕的媒体编码开始。然后需要打包这些媒体资源,为HLS交付做好准备。这就是目前2D内容的传输方式。如今要实现传输3D内容的目标,则是建立在当前2D内容传输流程之上的。
图源:苹果
HLS为碎片化的MP4定时元数据(metadata)增加了新的支持。这是通过建立在苹果Media技术基础上实现的,如HLS、AVFoundation、Core Media和基于标准的格式,如通常被认为是MPEG-4的基于ISO的媒体文件格式。这一切都可在支持新的空间体验范式的同时完成。
2D内容的传输方式
视频
在视频方面,对源视频进行编码,将其辑成合适的长度,并调整比特率进行颜色校正。在这里,用户可选择如何配置和使用HEVC(高效视频编码的简称)等视频编码器。该平台支持高达4K分辨率的内容播放,显示器的刷新率是90Hz,而对于每秒24fps的视频,可以自动使用特殊的96Hz模式。支持标准和高动态范围。
音频
在视频的对应音频方面,确定并制作所需的源音频流的数量(数量取决于主要角色对话和其他音频)。在考虑到HLS传输的情况下将这些音源进行编码。(HLS开发者页面有关于准备音频的文档链接。)
字幕
字幕包括字幕和隐藏式字幕,以涵盖不同的语言和角色。这里的字幕是指视频中用于提供不同语言翻译的口语文本转录,或用于确定设置的时间和地点。隐藏式字幕类似于一般字幕,它不仅能提供对话转录还能提示声音效果和相关音频的细节描述,便于听障人士查看,即SDH(Subtitles for Deaf and Hard-of-hearing)人群。
与视频和音频编码类似,用户可以制作HLS支持的字幕文件和格式,最常见的是WebVTT。
包装/打包
有了源视频、音频和字幕在手,接下来就是打包,这是将源媒体文件转化为各种类型的片段以进行可靠传输的过程。可以用苹果公司的HLS工具来完成,可在早期的HLS流媒体页面上找到,也可以使用其他内容平台的工具。
解决3D内容视差问题
现在来重点关注2D内容和3D立体内容的差异。3D视频是电影轨道或网络流中的帧序列。3D视频中的“3D”可与“立体”互换使用,这里的立体视觉可为左眼提供一张图像,为右眼提供另一个非常相似的图像,视角略有不同。左右图像之间的这些差异,称为视差,使用户在观看这类视频时能感受到三维的深度。
图源:苹果
虽然在如何传输3D视频帧方面有不同选择,但有一些参考方法可以提供帮助。通过对所有立体帧使用单个视频轨道,保留了传统的2D视频轨道的制作。左边和右边的图像或视图,对于任何显示时间都是在一个单一的压缩帧。理想情况下,获得苹果芯片支持后,应该可以被非3D感知播放所解码,允许在2D工作流程中预览视频。为了提供立体帧,我们引入了多视图HEVC(也称为MV-HEVC)。
在MV-HEVC中,将基本的HEVC 2D视图存储在每个压缩的帧中。编码确定左右图像之间的差异或增量。这种技术被称为2D Plus Delta,意味着2D解码器可以找到并使用基础2D视图,例如左眼。但三维解码器可以计算出另一个视图,将两个视图呈现给对应的眼睛。
由于视差的不同,视频场景中的一个物体可能被认为比另一个更近或更远。可以定义立体深度内容的三个主要区域:一是没有视差的屏幕平面;二是负视差,将导致物体在屏幕平面前被感知;三是正视差将导致物体在屏幕平面后被感知。而渲染方式不恰当则会产生深度冲突,造成观看时的不舒适。
我们不要求使用新的字幕格式或改变现有的格式,而是提供一种方法来描述每个视频帧的视差,并将其称为“视差轮廓(parallax contour)”并将其作为元数据记录在元数据轨道中,与视频轨道的帧同步。
如果对3D视频进行平铺,并指出每块平铺的深度视差,我们就可以用它来确保字幕永远不会干扰到立体视频中的元素。在内容播放过程中,字幕的视差将被自动调整以避免深度冲突。(描述该元数据格式的规范可在SDK中找到)
来源:Apple