Highlight
watchOS 7 在 Apple Watch 的 AVPlayer 中加入 xHE-AAC,并把 FairPlay Streaming 与
AVContentKeySession带到手表,让音频 App 可以用更低码率播放并交付受保护内容。
核心内容
watchOS 6 已经让 Apple Watch 可以直接播放流媒体音频。开发者能用 AVPlayer,也能用自己的音频协议,把内容送到手腕上。问题出在下一步:手表的网络环境变化更剧烈,电量更有限,很多音频服务还带着受保护的会员内容。
这场 session 解决的是这些发布前的真实阻力。Apple 先在 watchOS 7 的 AVPlayer 中加入 xHE-AAC。它可以在更低码率下交付相当的质量,也可以在相同码率下提供更高质量。对手表来说,码率不是小优化,码率越低,移动网络下越容易稳定播放。
第二个变化是 FairPlay Streaming 来到 watchOS 7。很多音乐、有声书、播客或课程服务不能把完整曲库裸流给客户端。现在 App 可以把 Apple Watch 接入同一套受保护内容链路:平台发起密钥请求,App 联系 key server,再把加密后的 key response 交回 AVFoundation。
最后,Apple 把性能建议落到很具体的播放路径上。少一次 HTTP redirect,启动就少等一次网络。提前取 key 和 certificate,播放按钮按下后就少做一组关键请求。音频-only 内容可以把 HLS target duration 调到约 20 秒,用更长片段换取移动网络和电池表现的稳定性。
详细内容
xHE-AAC 进入 watchOS 7 的 AVPlayer
(00:38)watchOS 7 给 AVPlayer 增加 xHE-AAC 支持。演讲把它称为 extended high efficiency advanced audio coding,作用是用更低 bitrate 达到相当质量,或者在相同 bitrate 下提供更高质量。
Apple 的建议很直接:Apple Watch 网络条件高度变化,音频资产应尽量用低 bitrate 保持高质量。因此,所有音频资产都推荐用 xHE-AAC 编码。
关键点:
- xHE-AAC 是这场 session 点名的新 codec,落点是 watchOS 7 的 AVPlayer。
- 它服务的是 Apple Watch 的网络现实:用户在移动中,连接质量会频繁变化。
- manifest 里仍应包含 AAC-LC、HE-AAC 或 HE-AACv2 variants,给互操作场景留出 fallback。
- variant 选择交给 AVPlayer,App 不需要在播放前手动指定每个网络状态下的音频格式。
FairPlay Streaming 支持受保护内容
(02:15)很多音频服务真正想带到 Apple Watch 的,是已有的大量 protected content。watchOS 7 为此加入 FairPlay Streaming。它描述的是一组安全交付 content decryption keys 的步骤,让平台可以解密并播放加密媒体。
在这个流程里,App 的角色是平台和 key server 之间的 liaison。AVFoundation 发出 on-demand key loading request,App 处理 key loading 的步骤,再把 encrypted key response 返回给 AVFoundation。之后,AVFoundation 才能开始解密和播放。
关键点:
- FairPlay Streaming 不是新的音频格式,它处理的是受保护内容的密钥交付。
- App 不直接解密媒体内容,而是负责把平台请求和 key server 响应连接起来。
- 这让会员曲库、付费课程、授权有声内容可以进入 Apple Watch 播放链路。
- 这段能力从 watchOS 7 开始出现在手表侧,和前一年引入的直接流媒体播放形成补充。
用 AVContentKeySession 管理 key 生命周期
(03:04)AVContentKeySession 是 AVFoundation 中专门处理 decryption keys 的类。watchOS 7 把它带到 Apple Watch,用来承接 FairPlay Streaming 中的 key handling。
它的关键特性是 key loading 和 asset loading 解耦。AVContentKeySession 不绑定某个 asset 的生命周期,App 可以自己决定何时发起 key loading,并更细地控制 key 的生命周期。演讲明确说,这能帮助 App 优化 key delivery,改善播放体验。
关键点:
AVContentKeySession对应的是密钥处理,不是播放器 UI。- 它可以在播放前主动发起 key loading,减少用户点击播放后的等待。
- 因为它不依附 asset 生命周期,App 可以更好地处理 key 的准备、复用和失效。
- Apple 在演讲中建议查看
AVContentKeySessionbest practices 文档,继续细化实现策略。
缩短 Apple Watch 播放启动路径
(04:40)Apple Watch 是低功耗可穿戴设备,用户移动会让网络条件更不稳定。演讲给出的第一条实践是避免不必要的 network round trips,包括播放所需资源上的 HTTP redirects。每增加一次 redirect,startup time 都会被拉长。
(05:19)第二条实践是提前取资源。keys 和 certificates 可以在播放关键路径之前预取。AVContentKeySession 可用于预取 content keys;certificate 可以缓存,并用 HTTP response 里的 expiry tag 决定缓存时长。
(05:49)第三条实践是调整 HLS target duration。Apple Watch 只处理 audio-only content 时,Apple 推荐约 20 秒的 target duration。这样可以提高对网络移动性和电池表现的韧性,同时不会对播放启动时间造成剧烈影响。
关键点:
- 播放启动的关键路径要尽量短,redirect 和额外请求都会体现在用户等待上。
- key 与 certificate 属于可以提前准备的资源,不应该全部压到播放按钮之后。
- HTTP expiry tag 是 certificate 缓存时长的依据,不能无限期保存。
- 约 20 秒 target duration 是这场 session 给 audio-only watchOS 流的具体建议。
核心启发
-
低码率优先的手表电台:做什么:为 Apple Watch 准备 xHE-AAC 音频 variant,并保留 AAC-LC、HE-AAC 或 HE-AACv2 fallback。为什么值得做:transcript 明确推荐 xHE-AAC,用更低 bitrate 保持质量,适合网络条件变化大的手表。怎么开始:先把热门流转成 xHE-AAC,再把兼容 variants 放进 manifest,观察 AVPlayer 在蜂窝和 Wi-Fi 间的选择。
-
受保护会员音频库:做什么:把付费音乐、有声书或课程内容扩展到 Apple Watch。为什么值得做:watchOS 7 支持 FairPlay Streaming,App 可以作为平台和 key server 之间的密钥交付桥梁。怎么开始:先在手表端接入 FairPlay key loading,再用
AVContentKeySession处理 on-demand key loading request 和 encrypted key response。 -
播放前密钥预热:做什么:在用户进入播放详情页时预取 content keys 和 certificate。为什么值得做:演讲点名预取 keys 与 certificates 可以减少播放启动关键路径上的网络请求。怎么开始:用
AVContentKeySession主动发起 key loading,certificate 按 HTTP expiry tag 缓存,播放按钮只负责开始播放。 -
面向移动网络的 HLS 清理:做什么:检查手表端播放所需的 playlist、key、certificate 和 segment URL,移除不必要的 HTTP redirects。为什么值得做:每一次 redirect 都会直接增加 startup time,手表网络环境更容易放大这个成本。怎么开始:记录首次播放的请求链路,把 redirect 多的资源改成最终 URL,再比较启动时间和失败率。
-
audio-only 的长片段配置:做什么:为 Apple Watch 的纯音频流测试约 20 秒 target duration。为什么值得做:Apple 建议 audio-only content 使用更高 target duration,在网络移动性和电池表现之间取得更稳定的结果。怎么开始:为同一条流准备不同 target duration 的 HLS 版本,在真实手表上测启动时间、卡顿次数和电量影响。
关联 Session
- Deliver a better HLS audio experience — 继续深入 xHE-AAC、FLAC、Apple Lossless 和 HLS 音频编码取舍。
- Discover how to download and play HLS offline — 讲 AVFoundation 下载 HLS、离线播放,以及 FairPlay Streaming 保护离线内容。
- Author fragmented MPEG-4 content with AVAssetWriter — 介绍如何为 HLS 输出准备 fragmented MPEG-4 片段。
- Reduce latency with HLS Blocking Playlist Reload — 解释 Low-Latency HLS 中减少 playlist 等待的机制。
- Discover HLS Blocking Preload Hints — 说明 Blocking Preload Hints 如何降低 HLS 音视频流交付延迟。
评论
GitHub Issues · utterances