Learn about Apple Immersive Video technologies
Audio & Video|Spatial Computing 入门 0m

了解 Apple 沉浸式视频技术

Learn about Apple Immersive Video technologies

2025年6月9日

在 Apple 官方观看视频

一句话判断

如果你要做 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/Receiver API 支持从 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"

最佳实践

  1. 先看 “Explore video experiences for visionOS” 再看这个:这个 session 建立在那个的基础上,跳过会遗漏视频 profile 的基础概念。
  2. AIVU 文件是协作的通用格式:无论你是编辑、转码还是分发,用 AIVU 作为中间格式可以保证元数据不丢失。
  3. HLS 分片保留 metadata track:分割 QuickTime 文件做 HLS 时,务必保留 PresentationDescriptor 的 timed metadata track,否则播放器不知道何时切换标定。
  4. ASAF 做制作,APAC 做分发:不要跳过 ASAF 直接用 APAC 制作——ASAF 保留了完整的空间信息用于编辑,APAC 是最终编码格式。
  5. 码率权衡:推荐范围很大(25-150 Mbps),选择时要考虑目标设备和网络条件。高质量内容优先保证分辨率和帧率,在码率范围内做压缩。
  6. 用 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 空间计算