大多数浏览器和
Developer App 均支持流媒体播放。
-
在 watchOS 6 上提供流媒体音频
通过在 Apple Watch 上提供流媒体音频,让客户无需携带 iPhone,亦可随时随地畅享您的内容。了解从 iOS 引入的流媒体 API,让 watchOS app 能够提供独立的音频消费体验。了解如何设置流媒体音频会话,并探索为在不同网络环境间切换的用户提供出色体验的最佳做法。
资源
相关视频
WWDC21
WWDC20
WWDC19
-
下载
(在watchOS 6上 播放音频) 去年的watchOS 5中 我们介绍了在后台播放本地 长音频文件
今年 使用watchOS 6 Watch app将可以直接在 Apple Watch播放流音频 这意味着你的用户 将不再需要使用iPhone 将音频文件同步到Watch上 就能使用音频文件 他们现在可以收听实时音频节目 比如体育节目
Apple Watch上watchOS 主要支持两种方式的音频流播放
HLS 和自定义音频协议
我们来深入了解一下 如果你的内容是 HLS音频流所支持的
你可将AVQueuePlayer 指向到你的订阅流中 它会协助你播放你的 流媒体内容 watchOS为 HLS音频订阅流做了优化 上手非常简单
使用专有的音频格式或 自定义协议的app有点不同
它们需要使用网络框架上使用 URLSession 来获取和解析 它们的元数据和音频内容
每当音频内容在Watch上下载完成后 使用AVFoundation 来实现音频路径选择和音频播放
(API附件) 将iOS API集成 watchOS SDK后 watchOS 6上 可以实现音频流播放 我们的目标是将着两个SDK 结合更紧密 这样你的代码不需要做太多修改 就能在watchOS上运行了
至于网络 watchOS 6 现在有了网络框架 iOS 12上第一次引入 这个框架提供了一个更加现代的 单位套接字的替代品 网络框架不仅提供了C API 同时也提供 非常方便的Swift API
URLSession为watchOS带来了 URLSessionStreamingTask 它也带来了 URLSessionWebSocketTask 在iOS 13和 watchOS 6都是新引入的 音频流为从网络上获取数据的方式 带来了特别的挑战 为此 URLSession引入了新的 AV流媒体网络服务类型 你应使用它来请求流数据
至于音频播放 AVFoundation为 watchOS 6带来许多API 包括AVPlayer 和AVQueuePlayer
同时 CoreMedia 也第一次接入了watchOS
如果你的app已经能 实现后台音频播放的功能 并不需要其他的项目配置 音频流播放也同样可以实现了 如果你的项目还没有配置 音频后台播放 你需要在WatchKit 扩展目标上添加这个功能 首先 你要先打开Xcode 来到WatchKit扩展 目标设置
在签署和功能部分中 点击添加功能 选择后台模式 最后 在后台模式里 选择音效模式 这样就完成了 (API的使用) 现在项目已经配置完成了 我们来聊一下在音频播放时 你需要使用的不同的API
你的app启动后 在你启动一个音频会话之前 你需要向你的服务器获取数据
这个数据是给用户展示的 流播放选项和内容 比如专辑信息 播放列表信息 或是你app流媒体的元数据内容 在你的app启动前 或是在后台更新时 你可能就获取到了这些数据 如非使用URLSession 来获取你的数据 这时 套接字 流媒体任务 和网络框架 将不能被使用
当你获取到了所有的信息 来开始流播放时 启动音频会话 音频会话在这个节点前不应该被启动 否则会打断用户的使用体验 这是watchOS和 iOS非常重要的差异 在iOS上 一直会有一个默认的音频线路 然而 我们发现watchOS 不是这样的
当你启用一个音频会话时 如果你的app当前没有任何线路 watchOS会自动出现一个 音频线路选择器 有两种使用场景 当watchOS跳过 显示音频线路选择器 对于蓝牙设备 如果设备已经连接至Watch 或者Bluetooth设备 使用了Apple无线芯片 如果设备已连接至iPhone Watch会暂时借用它 另一种场景是无法实现上面的 功能时 比如 当你连接至你的iPhone 时打电话
当你的app有了一个音频会话 所有的网络API都能取回音频内容 包括URLSessionStreamingTask URLSessionWebSocketTask 和网络框架 当没有一个激活的音频会话 你尝试使用这些API时 你的通话会失败
最后 当你的app有足够的 音频数据时 它才会开始播放 你可使用AVFoundation 来播放你的音频内容
如果你需要从你的服务器 为你的流播放请求新的信息 你可以使用所有 可用的网络API来实现
现在 我们来讲一下音频流播放 在Apple Watch 上的最佳实践案例 (最佳实践) Apple Watch Series 3 和之后的系列可以实现音频流播放 这说明你的app需要检测 Watch的运行版本 是否能支持你的音频流播放 在watchOS 6 使用 WKInterphaseDevicessupportsAudioStreaming 来检查
我们不建议watchOS 6上的 其他音频和和网络API使用 WatchKit的 WKAudioFile的API 为此 watchOS 6上的 这些API已被弃用 现在 我们来讨论 一些网络的最佳实践案例
如何获取信息是关键 根据不同的网络状况 我们需要在任何时候都为本地 保存一定量的音频数据
网络请求的数量和大小 需要被控制到最小数量 额外的请求将不会向 其他设备发送问题 可能会导致延时或停止播放 也要避免请求下载 不需要的数据 不然 这些都会导致糟糕的用户体验
安全起见 开始流播放时 使用64 kbps编码的音频数据 监测各种数据到达你app 的速度 只有当网络状况允许的情况下 提升速率 AVFoundation自动 为HLS音频播放实现此功能
不要依赖网络的可达性 根据网络的特性 在你app使用这些信息的时候 API返回的信息可能不再有效 为了最好的用户体验 总是要处理网络连接时 的中断和失败 一直要实时调整 你app的 音频的质量和获取量
最后 你的app 在Apple Watch 的网络过渡会更平滑 当Watch远离iPhone时 从Bluetooth、Wi-Fi 或蜂窝网络的良好过渡 对于Watch来说 当app运行时 这3种网络类型中 切换并不常见 但你的app应该考虑到 这样的切换情况 只需几秒钟就能完成 如你所见 当从其他平台 Apple或其他 平台来为Apple Watch 引入音频流app时 你应该做好优化网络码和协议 的准备
如果你想要了解 在Apple Watch 开始创建音频的更多信息 为watchOS创建音频 是一个不错的开始 本次网络框架介绍会议的信息 都是在watchOS 100%能实现的 最后 想要知道如何创建 良好的音频流播放体验 你可以在其他演讲了解更多信息
-
-
正在查找特定内容?在上方输入一个主题,就能直接跳转到相应的精彩内容。
提交你查询的内容时出现错误。请检查互联网连接,然后再试一次。