大多数浏览器和
Developer App 均支持流媒体播放。
-
为空间体验交付视频内容
了解如何使用 HTTP Live Streaming (HLS) 为 visionOS 准备和交付视频内容。了解当前 HLS 的媒体交付流程,并探索如何扩展交付管道以支持 3D 内容。快速了解空间媒体流的信息和技术,并为 3D 调整现有的 字幕制作工作流。了解如何跨视频共享音轨及添加空间音频,提高视频内容的沉浸感。
章节
- 0:41 - Deliver 2D content
- 5:20 - Deliver 3D content
资源
- Apple HEVC Stereo Video Interoperability Profile
- ISO Base Media File Format and Apple HEVC Stereo Video
- Video Contour Map Payload Metadata within the QuickTime Movie File Format
相关视频
WWDC23
-
下载
♪ 悦耳的器乐嘻哈 ♪ ♪ 大家好 我是 Chris AVFoundation 团队的 一名工程师 欢迎收看本次讲座 本次讲座将讨论如何 为空间体验准备和交付 流式传输内容 我们先简要回顾当前制作、准备及 交付 2D 媒体的流程 使用的是 HTTP Live Streaming 简称为 HLS 说完了 2D 内容准备和交付后 我们将谈论 3D 视频内容 了解一下它对上述流程 有哪些支持和更新 参考内容管道 我们先对视频、 音频和字幕进行媒体编码 然后打包这些媒体资源 以备 HLS 交付 现在 2D 内容就是这么交付的 交付 3D 内容的目标是构建在 现有 2D 传输流程之上 HLS 新增支持 fMP4 定时元数据 因此能实现重要的自适应 请参阅 Apple Developer 网站的 HTTP Live Streaming 页面 上面有资料、工具、串流案例、 开发者论坛和其他资源的链接 本次讲座的更多细节 届时也会发布在该页面上 我们目标是让传输 2D 视听内容 到该平台的方式与其他平台相同 实现这一点 要基于 Apple Media 技术 例如 HTTP Live Streaming、 AVFoundation、Core Media 以及基于标准格式 例如 ISO 基础媒体文件格式 通常是 MPEG-4 实现这一切的同时 也要支持新空间体验范式 深入探究如何支持绝佳的 视听媒体播放 请观看“为视频播放 打造更好的空间体验”讲座 在视频部分 先对源视频进行编码 编辑源视频至正确长度并校对色彩 以适应你需要的比特率层级 这里可以决定如何配置和使用 视频编码器 例如 HEVC 其全称是高效率视频编码 虽然它全面支持当前能够 向 Apple 其他平台传输的 2D 视听媒体 但要注意播放功能 该平台最高支持 4K 分辨率 能让你观看超清画质的视频 显示屏刷新率是 90 赫兹 每秒 24 帧的视频可自动使用 特别的 96 赫兹模式 同时支持标准和高动态范围 对于你的视频相应的音频 确定并制作所需数量的 源音频流 数量取决于目标语言集 以及该音频的性质 一种可能是主要对白 另一种则是口述影像 对这些源进行编码 以便通过 HLS 传输 你可能想传输空间音频 以及备用的立体音轨 这确保了从支持空间音频 以及任何场所稳定播放的设备中 可以获得绝佳体验 HLS 开发者网页上有着 关于准备音频的资料链接 然后是字幕 包括一般字幕和隐藏式字幕 涵盖不同语言和作用 “一般字幕”是指 对白的文本转录 能为不懂该语言的观众 提供不同语言的翻译 或者能用于明确时间和地点 隐藏式字幕与一般字幕类似 适用于观众无法听到音频的情况下 隐藏式字幕不仅有对白的文本转录 还有声效和 其他声音相关的提示 可能还有一种听障人士字幕 即 SDH 其目的都是相同的 与视频和音频的编码类似 你可以制作 HLS 支持的 字幕文件和格式 最常见的是 WebVTT 有了源视频、音频和手头的字幕 接下来就需要打包 打包是指将源媒体 转化为各类片段 便于有效地传输 可以用 Apple 的 HLS 工具来完成打包 可以在早期 HLS 流媒体页面找到这些工具 有些内容提供者会使用自己的工具、 硬件或工作流 其他人可能是 提供这些服务和工具的供应商 打包是为了制作一系列媒体片段、 驱动这些片段的媒体播放列表 以及将它们结合在一起的 多种类播放列表 目前有两种典型的 常用 HLS 媒体片段 制作 fMP4 媒体片段 要使用已编码的视频或音频电影文件 并生成多个资源 这些资源叫做媒体片段 客户的设备播放时 就拉取这些片段 字幕文件也需要分割 使用字幕分割工具 生成媒体片段 源 WebVTT 文件 可以分割成任何数量的 WebVTT 文件 以符合目标片段长度 最后 HLS 资源专题 存储在网页服务器中 以便进行 HTTP 传输 该服务器可能 直接为客户端提供服务 也可能是 与内容分发网络 (CDN) 一起使用的源服务器 但无论如何 是将这些资源 传输到客户的设备进行播放 回顾完 2D 的制作和传输管道 现在我们来讨论一下 3D 内容 以及运用新特殊能力 所产生的差异 我们再来看源编码、打包和传输 把重点放在 2D 内容和 3D 立体内容的差异上 我们来聊聊 3D 视频吧 我们分解这个术语 首先 它是视频 即电影轨道或网络流上的一系列帧 “3D”视频中的“3D”等同于 立体的概念 它为左眼提供一个图像 又为右眼提供一个非常类似 但角度略微不同的图像 而左右图像的差异被称为视差 它让你在视频播放时 感知到三维深度 虽然传输 3D 视频帧的方法 有多种选择 但有一些指导原则似乎是有用的 对所有立体帧使用单个视频轨道 能保留传统 2D 视频轨道的制作手法 播放时 左右的图像或视图 随时都在单个压缩帧中 如果有了一帧 你就同时有两个视图 或是立体图像对 这应该是高效的 理想情况下 它应该得到 Apple 芯片的支持 在最大程度上通过 非 3D 感知播放器进行解码 从而能够在 2D 工作流中 试听这些视频 为传输立体帧 我们发布了高效率视频编码 它也被称为“MV-HEVC” 这是 HEVC 的扩展 “MV”意为多视图 每帧中不止一个视图 每帧中有一对 压缩的左右图像 因为 MV-HEVC 的核心 还是 HEVC 所以 Apple 芯片 也支持 MV-HEVC MV-HEVC 将 基础 HEVC 2D 视图 存储在每个压缩帧中 编码决定左右图像之间的 差异或增量 这种技术叫做 2D Plus Delta 意味着 2D 解码器能找到并使用 基础 2D 视图 例如左眼视图 但 3D 解码器 可以计算出另一个视图 将两个视图呈现给对应的眼睛 效率高是因为 在基础 2D 图像间 使用标准 HEVC 技术 仅将左右眼视图的差异 描述于立体帧中 视频格式描述 或是 MPEG-4 中的视觉示例项 显示了编码类型、编解码器、 各视图的尺寸 以及解码视频帧所需的其他信息 视频格式描述有 一种新的扩展 我们称之为视频扩展使用框 这是个轻量、易于发现的信号 表明视频是立体的 并提示显示哪只眼睛的立体视图 使用 HLS 传输时 左右眼视图都有 在 SDK 中可获取 视频扩展使用框的规范说明 之后的结构更新 也将会在说明中列出 与 2D 内容一样 3D 内容也使用 HEVC 但使用的扩展叫做 MV-HEVC 需要用它来传输立体视图 与 2D 制作相同 有 MV-HEVC 的本地电影 应该能像 2D 视频一样使用 有左右两个图像 呈现给对应的眼睛 就能产生出立体深度 让用户能感知相对深度
视频场景中的一个物体 由于视差的不同 可能感觉起来比另一个更近或更远 可确定的立体深度的 主要区域有三个 一是没有视差的屏幕平面; 二是负视差 会让人感觉物体在屏幕平面前; 三是正视差 会让人感觉物体在屏幕平面后 如果字幕这类没有视差的元素 与帧同一区域有负视差的部分重叠 就会产生深度冲突 造成用户观看时产生不适 提问 考虑到立体视差和潜在的深度冲突 为 3D 视频制作字幕有多复杂? 能支持以下几种情况吗? 支持播放水平字幕、 即使是在字幕处于垂直形态下 支持播放不同语言的字幕、 使用辅助功能设置 将字幕调整到用户偏好的大小时 仍然能支持播放 答案是肯定的 使用我接下来描述的方法 进行立体视频处理时 应该能正常播放字幕 同时让相同的 2D 字幕资源 通用于 2D 和 3D 体验 使用我之前提到的定时元数据 就能实现这一点 对立体视频来说 重要的是避免出现深度冲突 以及避免元素与视频重叠 相比创造新的字幕格式 或修改现有的格式 我们提供了 描述各视频帧视差的方法 对帧各区域的描述可能不同 因为观众会感觉 某些区域更近 某些更远 我们称之为视差轮廓 并将其作为元数据 记录在元数据轨道中 与视频轨道的帧同步 如果平铺 3D 视频 并指出每块区域的深度视差 就可以确保字幕永远不会干扰到 立体视频中的元素 在播放时 字幕的视差将自动调整 以避免深度冲突 每个有视差视频轮廓的元数据项 都描述了 与之相关视频的 2D 切片 并且每个切片都有 与之关联的最小视差值 每个视频帧的呈现 应该与描述视频帧轮廓的 元数据项相关联 我们建议使用 10 x 10 的切片 作为良好的平衡点 平衡视频中不同视差区域的 存储容量和分辨率 想想怎么制作视差元数据 要从每帧有左右两个视图开始 这个可以通过 使用两个同步的视频轨道来实现 且不需要 MV-HEVC 然后进行视差分析 获取适合描述切片的视差信息 对每个立体帧 这都会打包在元数据有效载荷数据中 以备下一步使用 可在 SDK 中找到 描述该元数据格式的规范说明 该视差信息打包在元数据示例中 并写入了定时元数据轨道 该元数据轨道将与 其描述的对应视频相关联 元数据和视频轨道 应与视频一起复用 这样 HLS 包就会制作 包含视频和视差元数据的视频片段 为 2D 制作的字幕 也能适用于 3D 这意味着现在使用的流程 或者你合作的供应商 可以继续在 3D 制作中 使用 2D 内容 这也意味着 3D 内容不受 语言选择、水平和垂直布局 或用户可能使用的 辅助字幕偏好设置影响 根据所添加视差元数据的描述 平台将自适应 构建的视差元数据 在 3D 视频中可以使用 与 2D 传输相同的音频 因为该平台支持头部跟踪 请考虑使用空间音频格式 为了让音频在 2D 和 3D 体验中都适用 视频的时间要对应 编辑必须相同 如果不同的话 你需要分离 2D 和 3D 资源的音轨 在 3D 打包方面 新升级的 HLS 工具 可以处理好细节 打包 3D 资源的流程 与 2D 几乎相同 大多数不使用 Apple 工具的制作系统 可以使用发布的新规范说明 构建相同的功能 如果你正在构建 或检视自己的播放列表 记住几个变化 视频流的新标签 REQ-VIDEO-LAYOUT 用于标识视频是立体的 属性值标识视频是否为立体声 如果你的视频载入为 3D 它就不会转换为 2D 反之亦然 2D 视频不会变化 并且可以与 3D 视频混合排列在 同一播放列表中 REQ-VIDEO-LAYOUT 需要新版的 HLS 规范说明 所以规范更新至第 12 版 在 SDK 中有详细说明 这是多种类播放列表的示例 版本号已经变更为 12 3D 视频流使用 REQ-VIDEO-LAYOUT 为了获得绝佳使用体验 你需要将一个 2D iFrame 流 放在多种类播放列表中 以支持缩略图快速预览 最后 HLS 交付使用 同样方式交付 3D 资源 交付 3D 资源与 2D 资源的方式大致相同 但你可以做一些事来优化体验 准备你的源资源 注意将 MV-HEVC 用于 3D 视频 并加入新的视觉轮廓元数据 音频和字幕制作也一样 使用升级的包装来制作 相关片段和播放列表 存储没有变化 讲座结束前 我想强调 提供视觉舒适感是 3D 体验内容设计的核心目标 在足够长的时间内 应该可以舒适地观看 3D 内容 有些 3D 内容的特性 可能会造成不适 包括极度的视差 正负视差都有可能 内容高度动态会导致难以集中 以及深度冲突会导致所谓的 “窗口违规” 屏幕大小可能影响观看舒适度 这取决于屏幕有多大区域 位于观看者的水平视角场内 要知道用户可以改变屏幕尺寸 将它放得更近或更远 本节中 我们了解了 用 HTTP Live Streaming 传输 2D 和 3D 内容 视频方面 我介绍了 MV-HEVC 音频方面 我提到相同的音频流 可以 2D 和 3D 通用 字幕方面 在 2D 和 3D 内容中 可以使用相同的流 最后介绍一种新的定时元数据格式 使用这种格式是为了 符合 3D 视频视差的特点 这样可以使用同样的字幕 总之 我们尽可能简单地让 现有 2D 内容转化为空间体验 只要对现有 2D 管道稍作调整 就能使用 MV-HEVC 支持 3D 内容 你甚至可以继续使用 2D 资源现有的字幕 但如果你提供定时元数据 这些字幕不会被遮挡 还能提供舒适的观看体验 请观看我们其他的相关讲座 了解实现视频播放需要考虑的事项 期待你提供更优质的内容 谢谢收看 ♪
-
-
正在查找特定内容?在上方输入一个主题,就能直接跳转到相应的精彩内容。
提交你查询的内容时出现错误。请检查互联网连接,然后再试一次。