大多数浏览器和
Developer App 均支持流媒体播放。
-
在自定环境中提升媒体观赏体验的沉浸度
使用 Docking Region、Reverb 和 Virtual Environment Probe 等 Reality Composer Pro 组件,扩展你的媒体观赏体验。了解如何利用 Reflections、Tint Surroundings Effect、同播共享以及 [Immersive Environment Picker] 进一步提升沉浸度。
章节
- 0:00 - Introduction
- 1:48 - Immersive playback
- 3:33 - Custom Docking Region
- 7:56 - Media reflections
- 10:14 - Grounding the experience
- 14:34 - Immersive environment picker
- 15:33 - SharePlay
资源
- Building an immersive media viewing experience
- Destination Video
- Enabling video reflections in an immersive environment
- Forum: Media Technologies
相关视频
WWDC24
-
下载
大家好我叫 Jonathan 来自 Apple visionOS Program 团队 今天 我们将探讨 如何利用 Apple Vision Pro 为你的媒体观看体验 带来影院般的壮观奇妙感受
就像在你最喜欢的电影院里将灯光 调暗后带来一种奇妙的感觉一样 现在 只需在你的自定环境中 投射出美妙的媒体影像反射 就能打造出更具沉浸感的体验 正如你在这里的新 Studio 环境中 从 Destination Video 样本中 看到的那样 灯光变暗后 你可以设置透视色调来增强视觉氛围 这样观众的手就能 与你环境中的灯光完美融合 还可以设置混响预设 让环境中的音频效果氛围感十足 看到媒体与环境 之间的平滑过渡了吗? 你还可以选择提供多种变体 来丰富场景的观感 同时系统照明功能 和阴影融合搭配使用 在你的自定环境中 打造全方位的观看体验
在这个讲座中 我将介绍一些基础方面 助你打造出色的媒体观看体验 给观众带来更具沉浸感的播放体验 我将展示 如何使用 Reality Composer Pro 中 新的自定 Docking 组件 来定义自定环境中 视频播放的理想位置 我们将了解在自定环境中 播放视频时的媒体影像反射 我还将带你了解 如何利用视觉元素和音效 在你的自定环境中打造整体观看体验 我们还将介绍如何使用 Immersive Environment Picker 让你的自定环境更容易被用户发现 最后 我将介绍 支持同播共享的 App 如何同步环境 让多位参与者 共享沉浸式观看体验 我们先来了解一下你的空间 和媒体观看体验的基本元素
在一个可以调整尺寸和位置的窗口中 观看媒体 本身就是一种很棒的体验 但 Apple Vision Pro 的沉浸式功能 为你带来的远不止于此 为了让视频观看体验更具沉浸感 你应该从 ImmersiveSpace 场景类型入手 并充分利用 AVKit 中的各项功能 ImmersiveSpace 场景类型效果出色 因为它能让媒体 App 为观众提供可自定的渐进式沉浸体验 这意味着观众可以通过旋转 Apple Vision Pro 上的 数码旋钮来设置所需的沉浸度范围 从现实环境一直到完全沉浸式环境 ImmersiveSpace 场景类型 还有其他优势 如自定色调和透视亮度 我们将在这个讲座的 稍后部分中再作相关介绍
如需进一步了解 如何自定你的沉浸式空间 请观看“深入探究空间容器 和沉浸式空间”这个讲座
要打造出色的 visionOS 媒体观看体验 建议充分利用 AVKit 中的功能 特别是 AVPlayerViewController 这个功能与系统整合在一起 可增强视频播放功能
使用 AVPlayerViewController 可支持 HLS 流媒体 从而能够轻松提供 可与“TV”和“音乐”等系统 App 相媲美的熟悉播放体验 简化的播放控件 让观众能够专注于媒体 在 visionOS 上 全屏显示 AVPlayerViewController 提供了诸多强大的功能 其中之一就是参与系统停靠行为 Docking 功能可将视频屏幕 置于固定位置 从而提升沉浸式空间中的全屏体验 默认情况下 系统会确定停靠位置 但现在可以通过指定自定停靠区域 来自定停靠位置 你可以在 Destination Video 样本中 看到自定停靠区域的使用情形 这个示例以 AVKit 和 ImmersiveSpace 为基础构建而成 我将展示如何使用 Reality Composer Pro 中的 Docking Region 组件 将视频置于自定环境中的理想位置 我已经打开 Reality Composer Pro 你应该使用 Reality Composer Pro 准备 3D 内容 并直观地呈现你的体验 我将使用 Reality Composer Pro 在这个新项目中 添加“Video Dock”预设 左侧是场景导航器 在场景导航器的底部 有一个加号 表示插入按钮 选择插入按钮 然后在 Environment (环境) 菜单中 选择“Video Dock”预设
现在可以在视口中看到 “Video Dock”预设的部分内容 通过这个视口 我可以直观地呈现、浏览 和预览 3D 场景 使用 Viewport (视口) 菜单中的 “Frame Scene” 这样就能更好地查看 整个“Video Dock”预设 回到场景导航器中 展开“Video Dock”实体后可以看到 其中包含一个 Player 实体
选择 Player 实体后 Inspector 右侧会显示新的属性 使用 Inspector 你可以轻松 编辑 Player 实体的属性 比如 Position 和 Rotation
Player 实体对应的Inspector 底部还包含 一个 Docking Region 组件 这样我就可以自定 Docking Region
在自定 Docking Region 之前 选择 Viewport (视口) 菜单中的 “Reset Camera”
这将移动摄像头 这样就能看到原点
ImmersiveSpace 是一个场景 因此它隐式定义了自己的坐标系 你在空间中放置的所有内容 都会相对于空间的原点进行放置 而空间的原点就在观众下方 当空间首次打开时 原点就会靠近他们的脚部 在视口的中心 可以看到 Docking Region Docking Region 的位置 决定了视频播放器的位置
我想相对于原点 放置我的 Docking Region
回到 Inspector 可以看到 Docking Region 组件中的 Width 属性 Docking Region 的宽度 定义了一个边界区域 这是采用 2.4:1 的宽高比 进行媒体播放的最大尺寸 大于最大宽度的视频将进行缩放 以适合边界区域 我可以更改 Width 属性 来自定 Docking Region 的尺寸 你可以看到 更改 Docking Region 的宽度时 高度也会随之更改
我的 Docking Region 现在 增加了宽度和高度 我需要升高 Player 实体 我将更改位置变换来升高它 播放器略高于地面的位置 感觉很合适 就像电影院里的银幕一样
这只是一个项目的开端 下面我们来看看更完整的项目内容 在 Destination Video 样本中 你会看到一个 名为 Studio 的文件夹 里面有一个 Reality Composer Pro 项目 打开 Studio 项目 以查看它的设置 然后在 Viewport (视口) 菜单中 选择“Reset Camera”以便进行预览
你可以看到 Studio 中 Docking Region 的放置情况 以便尽量减少观众与媒体播放 之间的对象数量 这样做的目的是 为观众提供清晰的视野
Studio 具有对称感 并且从建筑思维的角度来说 Docking Region 被安排在 空间中的这个位置是有原因的 这样进行放置旨在优化空间 使媒体播放适合这个房间空间 并提供更具沉浸感的体验
确保你设计的自定环境能够 容纳停靠区域 我们建议提供一个舒适的视角 以避免在长时间观看时 造成疲劳或不适 虽然使用 Reality Composer Pro 进行预览很有帮助 但一定要在 Apple Vision Pro 上 查看环境和停靠位置 因为显示器和 Apple Vision Pro 之间对比例和布局的感知 可能大相径庭 在设备上进行测试是最可靠的方式 现在 我已将 Docking Region 放置在理想位置 下面我们来看看视频播放 如何在自定环境中反射影像
回到 Destination Video Studio 表面上的媒体影像反射 有助于显示媒体的播放位置 并将媒体置于这一空间中 你可以使媒体影像反射 适合你的自定环境 它将帮助观众了解 视频在你的虚拟空间中的 播放位置
在 Reality Composer Pro 的 ShaderGraph 节点中 有两种媒体影像反射 即镜面反射和漫反射 反射在媒体内容与虚拟空间之间 创造互动 从而增强了真实感和沉浸感 可利用这些反射作为深度线索 让观众了解 屏幕在自定环境中的位置 这有助于将焦点放在视频播放上 镜面反射可直接反射视频内容 适用于金属、镜子和水等 高光表面
要设置媒体影像镜面反射 只需要在场景中设置一个实体 其中包含一个 Docking Region 组件 和一个连接了 Reflection_Specular 节点的表面上的材质 RealityKit 将使用 Docking Region 位置 和地面的纹理坐标来计算反射 并将反射的媒体影像 渲染到你的表面上 漫反射可使视频内容的衰减更柔和
适用于木地板或混凝土等 较粗糙的有机表面 Video Dock 预设中 提供的实现只是一个示例 如果移动 Docking Region 将实体置于地面 或使用自己的网格 则需要重新计算 Reflection_Diffuse 的纹理坐标 并将这一数据导入 Reality Composer Pro 中
Studio 使用的是漫反射 因为较柔和的衰减 更适合地板材料特性 在 Studio 中加入镜面反射 只是为了演示目的 你应查看 visionOS 系统环境中的示例 它们以更平衡的方式整合反射 从而与媒体和环境相得益彰 同时又不会造成干扰 还有很多东西需要学习 因此我建议查看 Destination Video 样本 和支持材料 深入了解如何启用镜面反射 和配置漫反射 接下来 我们来看看 如何利用视觉元素和音效 在你的自定环境中打造整体观看体验 我们将使用一些新功能 如 Virtual Environment Probe、 Brightness and Tint 以及 Reverb 首先我们来了解一下 Virtual Environment Probe
Virtual Environment Probe 根据颜色变化和照明强度 来描述一个位置 系统可利用这些信息 对任何基于物理的渲染材质 进行自动遮光 这与光线从物体上 反射的方式非常接近 你可以使用这个 Probe 为 ImmersiveSpace 中的对象 提供环境照明 如果你使用 progressive 沉浸样式 打造环境 这种虚拟环境照明将 逐渐取代 ImmersiveSpace 之外的 对象的现实世界照明 例如这个金属球 反射了 Studio 和 我的现实世界环境的混合 从而呈现出了一个效果逼真的对象 在 progressive 沉浸模式下看起来很自然
此外 如果你的场景支持两种变体 比如 Destination Video 中的 深色和浅色 Studio 你可以使用两项预生成的环境资源 以及它们之间的混合因子来配置 Virtual Environment Probe 在这种情况下 你的 App 代码可推动 深色资源和浅色资源之间的平滑过渡 而系统则推动沉浸式融合 过渡时间最好较短 在 visionOS 系统环境中 从深到浅的过渡时间为 1.5 秒 接下来是 Brightness and Tint 根据自定环境的外观 你可能希望观众手上的照明 与环境照明完美融合 就像电影院里灯光变暗时一样 在 visionOS 中 你可以 自定色调和亮度 以柔化观众周围环境 与媒体播放之间的边缘 同时还能让他们的手 看起来与你的体验融为一体
看到我的手的外观是如何变化 以匹配深色版的 Studio 了吗? 这让我在自定环境中更具沉浸感 专注于观看体验
请查看 Destination Video 中的 immersiveContentBrightness 和 surroundingsEffect 代码示例 了解如何在媒体 App 中 使用这些功能 尝试使用浅色调 既能增强沉浸感 又不会分散观众的注意力 虽然这些改进后的视觉效果已经 使你的环境看起来不错 但你还可以 使用 Reality Composer Pro 中 的 Reverb 新组件 让你创作的空间音效和系统音效 都能更好地匹配你的自定环境 从而进一步提升沉浸感
在现实世界中 声音会产生混响 在到达人的耳朵之前 会在墙壁和家具上反弹 默认情况下 visionOS 通过模拟 用户所处现实环境的声学效果 对空间音频源进行混响处理
还可以模拟虚拟环境的混响效果 如果你访问过 Mount Hood 系统环境 就有可能听过深夜的青蛙叫声 这些空间音效具有混响效果 可以模拟室外环境 现在 你可以在自定环境中 为空间音效和系统音效 应用混响效果 要启用“Reverb” 我将使用 Add Component (添加组件) 按钮 在 Inspector 中向我的新项目 添加“Reverb”组件
然后我就可以进入 Inspector 选择最适合的混响预设 预设是一系列精选的 高质量自然混响设置 可增加共鸣 并模拟在与我的自定环境 相似的环境中聆听空间音效的体验 建议在自定环境中选择一种混响预设 即使它不提供自定音频 这样系统就可以使用相应预设 来对 UI 和按钮等系统音效 进行空间化处理 这些系统音效是在运行时 出现的空间音频源
例如 使用 “Medium Room (Treated)”预设 来提升应用微妙混响后的 最佳聆听体验 或者如果你的自定环境是室外空间 则使用“Outdoor”预设 又或者如果你有一个 大型室内环境 还可以使用 “Very large room”混响预设 这也是 Studio 中使用的混响预设 如需详细了解如何实现和调整混响 请观看名为“使用 RealityKit 增强你的空间计算 App”的 RealityKit Audio 讲座 你已经了解 如何在自定环境中 增强媒体播放的沉浸感 现在可以使用 Immersive Environment Picker 让你的自定环境 与 visionOS 系统环境 显示在同一列表中 我们来详细了解一下 看看 Immersive Environment Picker 如何在我们的 Studio 环境中 包含 Destination Video 的 新部分
选择 Studio 打开相应环境 将媒体停靠在它的停靠区域中 你也可以将自己的 自定环境添加到这个列表中 只需通过元数据 如标题和图像 对自定环境进行声明 让观众在停靠时发现你的环境
在视图上使用 .immersiveEnvironmentPicker 修饰符 将你的沉浸式环境添加到 这个视图内的视频播放器 在这里 你可以声明 你的每个自定环境 在这个 Picker 中的显示方式 选择每个环境后 即可添加标题、 图像以及要打开的沉浸式空间
下面我们来谈谈同播共享 如果你已在使用同播共享来同步媒体 那么现在 AVKit 还能 同步环境状态 让用户进一步分享沉浸式观看体验 我们来看看具体过程 这个代码片段使用 GroupSession 在设备之间同步可共享内容 要同步会话中的媒体 请将它传递给 AVPlayer 的 AVPlaybackCoordinator 要同步同一会话中的观看环境 首先导入 AVKit 和 GroupActivities 然后将这个会话 传递给 AVPlayerViewController 的 AVGroupExperienceCoordinator 现在 当活动参与者全屏观看时 他们就可以共享同一个观看环境
你刚刚了解了如何使用 ImmersiveSpace 场景类型和 AVKit 助你打造出色的播放体验 如何利用 Custom Docking Region 和 Media Reflections 增强沉浸感 然后利用 Virtual Environment Probe、 Reverb 和 Brightness and Tint 打造出色的观看体验 使用这些功能来增加沉浸感 可以让观众感觉自己 就在你的空间里 充分体验到真实感 并享受你想给他们带来的精彩体验 记住 要确保受众能够清晰舒适地 观看媒体内容 不受干扰 这样他们才能专注于体验 我们还展示了如何开始 使用 Immersive Environment Picker 和同播共享 希望这个讲座能帮助大家初步了解 如何让媒体播放体验更具沉浸感 请务必更深入地查看 Destination Video 样本 和可供观看的多个讲座 我迫不及待地想体验 在你创造的自定环境中 身临其境地观看媒体播放
-
-
15:14 - Add environments to the Immersive Environment Picker
WindowGroup { ContentView() .immersiveEnvironmentPicker { ForEach(viewModel.environmentItems) { item in Button(item.title, image: item.thumbnail) { Task { await openImmersiveSpace(id: item.id) } } } } }
-
15:47 - Synchronization of an environment state using SharePlay
import AVKit import GroupActivities for await session in MyActivity.sessions() { // join the session, activate the activity, etc. playerViewController .player? .playbackCoordinator .coordinateWithSession(session) playerViewController .groupExperienceCoordinator .coordinateWithSession(session) }
-
-
正在查找特定内容?在上方输入一个主题,就能直接跳转到相应的精彩内容。
提交你查询的内容时出现错误。请检查互联网连接,然后再试一次。