探索 visionOS 视频体验
Explore video experiences for visionOS
2025年6月9日
一句话判断
visionOS 26 把视频类型从三种(2D/3D/spatial)扩展到了七种(加上 180/360/Wide FOV/Apple Immersive),新增的 Apple Projected Media Profile 统一了沉浸式视频格式——GoPro 和 Insta360 的素材直接扔进 Vision Pro 就能沉浸式播放。
这场 Session 讲了什么
这是一场 visionOS 视频能力的全景扫描。从最基础的 2D/3D 内联播放,到 spatial video 的窗口/沉浸式双模式,再到 180/360/Wide FOV 三种非矩形投影格式,最后到 Apple Immusive Video(首次开放给开发者和内容创作者)。Session 花了大量篇幅讲解新增的 Apple Projected Media Profile(APMP),这是统一 180/360/Wide FOV 视频的容器格式。
另一个重磅消息是 Apple Immersive Video 的创作工具链开放:Blackmagic URSA Cine Immersive 相机 + DaVinci Resolve Studio 剪辑 + Compressor 分段 + HLS 分发。配合新增的 ImmersiveMediaSupport 框架,开发者可以编程方式读写 Apple Immersive 内容。
值得深挖的点
APMP:统一的沉浸式视频格式
APMP(Apple Projected Media Profile)是 visionOS 26 新增的 QuickTime Movie profile,统一描述三种非矩形投影:
- 180 度视频:半球投影,通常是立体声,方形像素映射到前半球。
- 360 度视频:全球投影,等距矩形映射(就是常见的全景视频格式)。
- Wide FOV 视频:运动相机(GoPro HERO13、Insta360 Ace Pro 2)的鱼眼镜头,用参数化投影(parametric immersive projection)描述镜头畸变曲线。
关键便利性:系统会自动识别并转换已有的视频。Canon EOS VR 系统的 180 度立体视频、GoPro MAX/Insta360 X5 的 360 度视频、Google Spherical Video v1/v2 格式的内容,都会自动转为 APMP。你不需要手动转码。
Spatial Video 的双模式播放
Spatial Video(立体视频 + 额外元数据)支持两种播放模式:窗口模式(带发光边缘的嵌入式播放)和沉浸式模式(按真实比例显示,无缝融入现实世界)。在 visionOS 26 中,这种 spatial styling 支持扩展到了所有 Apple 媒体框架——AVKit、RealityKit、Safari、WebKit、QuickLook,还支持 HLS 流。这意味着你可以在自己的 App 中任意方式集成 spatial video。
Apple Immersive Video 的技术规格
Blackmagic URSA Cine Immersive 的参数令人震撼:每眼 8160x7200 像素(5900 万像素/眼),90fps,每秒超过 100 亿像素。水平 FOV 210 度,垂直 FOV 180 度。每颗镜头在出厂时单独校准。内容创作流程是:相机拍摄 → DaVinci Resolve 剪辑 → Apple Immersive Video Utility 预览验证 → Compressor 分段供 HLS 分发。
特别值得注意的是逐镜头边缘混合(per-shot edge blends):每个镜头可以定义自定义 alpha 混合曲线,将画面边缘过渡到自定义背景环境。这不是静态遮罩,而是动态的 alpha 混合。
高运动检测
APMP 内容的沉浸式播放会把观众的头部放到相机位置。运动相机经常绑在冲浪板、自行车上,剧烈运动会让人不适。系统在 QuickLook、AVKit、RealityKit 中自动检测高运动场景,检测到时自动降低沉浸度。用户可以在设置中根据个人运动敏感度调整阈值。
代码片段
1. 在 AVKit 中播放 Spatial Video
场景:App 内以 spatial styling 播放 HLS 流。
import AVKit
let spatialVideoURL = URL(string: "https://example.com/spatial.m3u8")!
let player = AVPlayer(url: spatialVideoURL)
let playerViewController = AVPlayerViewController()
playerViewController.player = player
// spatial styling 在 visionOS 26 中自动启用
present(playerViewController, animated: true)
2. 播放 180 度 APMP 内容
场景:播放本地 180 度立体视频。
import AVKit
import RealityKit
// APMP 文件已自动识别投影类型
let videoURL = Bundle.main.url(forResource: "scene_180", withExtension: "mov")!
let player = AVPlayer(url: videoURL)
// expanded + immersive 播放模式
// APMP 不支持 embedded inline 播放
let playerView = VideoPlayerView(player: player)
坑:APMP 内容只支持 expanded 和 immersive 播放,不支持内联嵌入播放。
最佳实践
选择视频格式时,从内容类型出发:空间视频适合用户自己拍摄的立体回忆(iPhone/AVP 相机),180 度适合”把你带到某个地方”的体验,360 度适合”让你环顾四周”的体验,Wide FOV 适合运动相机素材,Apple Immersive Video 适合追求极致沉浸的专业内容。
如果你在做视频播放 App,APMP 的自动识别和转换意味着你可以直接支持用户导入各种来源的 180/360/Wide FOV 视频,不需要自己做格式检测和转码。
分发方面,所有格式都支持 HLS 流式传输。如果你有服务器端转码管线,用 Compressor 把内容切成分段就行。
还有什么值得关注
- Dynamic Mask(动态遮罩):visionOS 26 新增,2D/3D 视频可以逐帧指定动态遮罩来改变宽高比和形状,实现无黑边的画面裁切动画。只有空间计算设备能做到。
- Multi-view Video:visionOS 2 引入的多视角同时播放,配合 Session 302 的多路同步 API 可以做很酷的体育/演唱会体验。
- Spatial Gallery App:Vision Pro 上的示例 App,展示了 spatial photo 和 video 的各种呈现方式,值得下载体验。
- ImmersiveMediaSupport 框架:macOS 和 visionOS 上编程方式读写 Apple Immersive 内容,适合做自定义编辑工具或管线工具。