Audio & Video|Spatial Computing 入门 0m
了解 Apple 沉浸式视频技术
Learn about Apple Immersive Video technologies
2025年6月9日
一句话判断
如果你要做 Apple Vision Pro 上的沉浸式视频内容,这个 session 是技术入口——从 AIVU 文件格式、ImmersiveMediaSupport 框架到 ASAF 空间音频,把制作到发布的全链路讲清楚了。
这场 Session 讲了什么
Blake 介绍了 Apple 沉浸式视频(AIV)的技术栈,分为视频和音频两条线:
视频线:Apple Immersive Video
- AIV 使用参数化投影(parametric projection),每台相机有独特的 factory calibration,这些标定信息随视频文件一起携带。
- ImmersiveMediaSupport 框架(macOS + visionOS 26 新增):读写 AIV 元数据,支持预览工作流。
- VenueDescriptor:包含所有相机的组合信息、edge-blend mask、相机原点位置、自定义背景环境等。
- PresentationCommand:随每帧携带的动态元数据,包括相机标定切换、shot flop(左右眼翻转)、fade 效果。这些在 visionOS 播放时自动处理。
- AIVU 文件格式(Apple Immersive Video Universal):将视频 + PresentationDescriptor + VenueDescriptor 打包成一个容器。可以通过 Quick Look 在 visionOS 上直接播放。
- 读取:用 AVFoundation API 加载 AIVU,通过
quickTimeMetadataAIMEData获取 VenueDescriptor,通过 timed metadata group 获取 PresentationDescriptor。 - 写入:用 AVAssetWriter,投影类型必须设为
AppleImmersiveVideo,写入 VenueDescriptor 和 PresentationCommand 作为 timed metadata。 - 发布:HLS 分片时推荐码率 25-100 Mbps(平均)、50-150 Mbps(峰值),分辨率 4320x4320/眼,90fps,P3-D65-PQ 色彩空间。HLS multivariant playlist 需要 version 12+、venue description data ID、content type = fully immersive。
- 预览:
ImmersiveMediaRemotePreviewSender/ReceiverAPI 支持从 Mac 向 Vision Pro 发送低码率预览流,适合编辑阶段。
音频线:Spatial Audio
- ASAF(Apple Spatial Audio Format):全新的制作格式。基于线性 PCM + 元数据,支持高分辨率空间音频渲染。
- 关键特性:完全自适应(基于对象/听者位置和方向实时渲染,不是烘焙的)、支持 point sources、高分辨率 sound scene、Higher Order Ambisonics。
- APAC(Apple Positional Audio Codec):ASAF 的分发编码格式。支持 Channels、Objects、HOA、Dialogue、Binaural、interactive elements。最低 64 kbps。
- APAC 必须用于任何 Apple 沉浸式视频体验。
- 制作工具:Apple Pro Tools 插件、Blackmagic DaVinci Resolve Studio。
值得深挖的点
AIVU 是一个「自描述」容器:传统视频文件的元数据散落在各个 track 和 sidecar 文件里,AIVU 把 PresentationDescriptor(帧级别的时间指令)和 VenueDescriptor(相机标定)全部打包在一起。这意味着你传一个 AIVU 文件给合作伙伴,他们就能完整还原播放体验,不需要额外的标定文件。这在制作协作中非常重要。
Shot flop 的自动处理:立体相机的 shot flop(左右眼交换)在传统编辑中是个噩梦,因为你需要手动处理每一帧。PresentationCommand 让 visionOS 播放时自动处理这个问题,编辑时只需要标记 shot flop 位置,不用管显示层面的处理。
ASAF 的「非烘焙」音频渲染:传统空间音频在制作时就把声源位置「烘焙」进去(binaural rendering)。ASAF 保留了完整的空间信息(位置、方向、距离),由 visionOS 在播放时实时渲染。这意味着听者移动头部时,音频会实时响应——声场是活的,不是录音。
代码片段
// 从 AIVU 文件读取 VenueDescriptor
import AVFoundation
import ImmersiveMediaSupport
let asset = AVAsset(url: aivuURL)
let metadata = try await asset.load(.metadata)
let aimeItems = metadata.filter {
$0.identifier == .quickTimeMetadataAIMEData
}
let venueDescriptor = try VenueDescriptor(aimeData: aimeItems.first!)
// 读取 PresentationDescriptor(timed metadata)
let output = AVPlayerItemMetadataOutput(identifiers: [
AVMetadata.quickTimeMetadataPresentationImmersiveMedia.rawValue
])
playerItem.add(output)
// HLS playlist 中的 APAC 音频标签
// #EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="apac",
// CHANNELS="ambisonic",CODECS="apac"
// #EXT-X-STREAM-INF:...,AUDIO="apac",
// VIDEO-LAYOUT="stereo-video",
// PROJECTION="apple-immersive-video"
最佳实践
- 先看 “Explore video experiences for visionOS” 再看这个:这个 session 建立在那个的基础上,跳过会遗漏视频 profile 的基础概念。
- AIVU 文件是协作的通用格式:无论你是编辑、转码还是分发,用 AIVU 作为中间格式可以保证元数据不丢失。
- HLS 分片保留 metadata track:分割 QuickTime 文件做 HLS 时,务必保留 PresentationDescriptor 的 timed metadata track,否则播放器不知道何时切换标定。
- ASAF 做制作,APAC 做分发:不要跳过 ASAF 直接用 APAC 制作——ASAF 保留了完整的空间信息用于编辑,APAC 是最终编码格式。
- 码率权衡:推荐范围很大(25-150 Mbps),选择时要考虑目标设备和网络条件。高质量内容优先保证分辨率和帧率,在码率范围内做压缩。
- 用 AIVUValidator 验证文件:写入 AIVU 后调用
AIVUValidator.validate()检查完整性,避免到播放阶段才发现问题。
还有什么值得关注
- “Support Immersive Video Playback in visionOS apps” 教你在自己的 app 里播放 AIV 内容。
- “Learn About the Apple Projected Media Profile” 覆盖其他沉浸式视频格式。
- Blackmagic URSA Cine Immersive 是目前唯一为 AIV 设计的相机,如果做专业内容需要了解它的标定流程。
- APAC 在 64 kbps 就能提供沉浸式体验,这对带宽敏感的流媒体场景是个巨大优势。
Audio & Video 空间计算