适用于音频设备的 Google Cast 仅支持音频播放。本指南介绍了如何针对纯音频设备优化 Cast 应用,以及如何充分利用降低的内存、CPU 和网络带宽利用率需求。
支持 Google Cast 的音频应用必须考虑以下几点:
- 适用于音频设备的 Google Cast 不显示视频或图形。不过,许多音频设备都有用于显示元数据(如播放状态(正在播放或已暂停)和进度)的显示屏。您的应用不得仅在接收方上显示此类关键用户信息;关键信息和大部分界面都必须在发送方上显示。
- 为了正常运行网络接收器应用,适用于音频设备的 Google Cast 仍必须呈现图形(即使这些图形无法显示)。由于设备可能不支持硬件加速的图形操作,因此接收器应用应避免使用图形密集型操作,例如颜色渐变、旋转、alpha 混合以及每秒以超过一次的速率重新绘制进度条等大型对象。
- 适用于音频设备的 Google Cast 仅支持使用 Widevine 数字版权管理 (DRM) 保护的内容。
- 对于大多数适用于音频设备的 Google Cast 来说,发送设备应用可控制设备(例如音箱)的完整音量范围,而不仅仅是像 Chromecast 设备一样控制输入到电视的音频来源的音量。
- 除了使用发送设备(例如手机)控制播放之外,应用可能还需要提供设备自己的控制器(例如遥控器、设备上的按钮或外部远程应用)来控制播放。
- 适用于音频设备的 Google Cast 可能支持通过小 LCD 屏幕、HDMI 输出(针对条形音箱或音频/视频接收器)或外部远程应用显示内容元数据,具体取决于特定的设备界面。
开发
要开发支持 Google Cast 音频版的 Cast 应用,首先要开发适用于音频和视频的 Cast 应用,并确保此应用可在 Chromecast 上运行。本文档假定您已开发并测试过此类应用。
应用可以同时支持音频和视频设备以及纯音频设备。它需要了解它是何时转换为另一个的,并采取措施确保在指定场景中提供最佳用户体验。
例如,视频和音频双声道应用(如本地/NAS 文件播放应用)应启用投射到纯音频设备,以支持播放音频文件,但应用不得允许用户将视频文件发送到纯音频设备。应用可以使用下文所述的适用于发送器的设备功能 API 来确定适合设备的内容。
如需支持 Google Cast 的音频功能,您的应用必须做到以下几点:
支持纯音频:在线播放音乐和音频文件、电台等。流式传输到 Web 接收器应用的媒体不能是视频流。此外,请避免流式传输图形和图像,以缩短应用启动时间和内存用量。请参阅下面的内存使用准则。
在适用于音频设备和常规 Chromecast 的 Cast 上按预期运行。
设备功能
借助设备功能 API(可从设备本身或通过发送方或接收方 API 获取),您的应用可以知道自己是否正在纯音频设备上运行。
设备 HTTP 标头
Cast 设备在应用启动期间提供的 CAST-DEVICE-CAPABILITIES
HTTP 标头描述了设备的功能。设备会向托管 Web 接收器应用的服务器发送一个包含此标头的请求。纯音频设备的标头通过 CAST-DEVICE-CAPABILITIES: {"display_supported":false}
来描述设备功能。
当您的服务器收到来自设备的请求时,您可以使用此标头中的信息将请求重定向到针对音频设备进行了优化的 Web 接收器应用。
Web 接收器 API
您可以在加载 Web 接收器应用时调用 CastReceiverManager.getDeviceCapabilities()
来获取相同的设备功能对象。
如需了解详情,请参阅设备功能。
Sender API
每个 Cast 发送器 API 也都包含设备功能信息。这些设置可让发送器应用确定要发送给接收者的媒体类型。 如果您的应用同时支持音频和视频,则可以避免向纯音频设备发送视频内容。此外,您的应用还可以使用最适合设备的方法控制音量,如设计核对清单中所述。请参阅以下针对发送器的设备功能 API:
- Android:CastDevice.hasCapabilities
- iOS:deviceCapabilities
- Chrome:chrome.cast.Capability
内存使用准则
在音频设备上运行的网页接收器应用必须按如下方式管理内存使用情况:
- 避免下载或使用任何图片或图形资源,以减少内存占用并缩短播放开始播放的时间。
- 使用媒体来源扩展 (MSE) 时,应用必须将信息流缓冲区的大小限制为 2MB。如果使用媒体播放器库 (MPL),应用的视频流缓冲区大小已由 MPL 定义。
- 使用 HTMLMediaElement 时,应用的数据流缓冲区大小由 Chrome 根据数据流速率定义。将音频比特率限制为每秒 2 兆比特,这样支持支持的媒体中所述的所有编解码器(最高可达 48KHz/16 位)。
音量控制
对于大多数适用于音频设备的 Google Cast 而言,发送器应用可控制设备的完整音量范围,而不仅仅是控制音频源输入音量,这一点与 Chromecast 设备一样。这意味着,对于纯音频应用,音量变化增量必须更小。如需了解有关在应用中提供音量控制的准则,请参阅以下文档:
设备控件
适用于音频设备的 Google Cast 可能具有自己的播放控件(例如按钮、遥控器)。这些广播使用为 urn:x-cast:com.google.cast.media
命名空间定义的媒体播放消息(如媒体播放消息中所述)在接收端应用上控制播放。您的接收器应用必须支持这些媒体播放消息,以支持设备的播放控件。
此外,您的发送器应用应支持从接收器到发送器的消息,以便用户使用设备控制器更改媒体状态时,您的发送器应用可以接收来自接收器的状态消息,并相应地更新界面。
设备显示
适用于音频设备的 Google Cast 在设备上可能具有 LCD 屏幕,或可能具有显示媒体元数据的设备专用控制应用。您的接收器应用必须为所有音轨提供此元数据,并确保该元数据与当前正在播放的内容保持同步,以确保这些元数据在显示屏上正确显示。如果应用使用的是自定义元数据,还必须提供标准音频元数据(曲目名称、音乐人姓名、专辑名称等),如下所述。
接收方在加载媒体时会从发送方获取元数据。在发送器应用中,若要使用在接收设备上加载媒体的命令,您必须指定下述字段,以便在 Google Cast 音频设备上显示元数据。使用以下 API:
Android
MediaMetadata
,具有MEDIA_TYPE_MUSIC_TRACK
和:iOS
GCKMediaMetadata
和GCKMediaMetadataType
GCKMediaMetadataTypeMusicTrack
和:Chrome
MediaInfo
与MusicTrackMediaMetadata
和:
如果 Cast 应用在接收器上或云端管理媒体队列,则 Web 接收器必须使用 urn:x-cast:com.google.cast.media
命名空间广播所有媒体状态更新,以便同步所有发送器。
注册
您必须使用 Google Cast SDK Developer Console 注册 Google Cast 音频设备以便进行测试,并注册您的应用以支持适用于音频设备的 Google Cast。
对于未发布的应用(例如用于测试的应用),您还必须选择支持纯音频设备的选项,以便应用发现纯音频设备。
Google Cast 音频版 2.0
Google Cast for Audio (GC4A) 2.0 是新一代 Cast 音频平台,专为低内存设备而设计,旨在扩展可在线播放您的内容的设备生态系统。
音频应用开发者务必要在 GC4A 2.0 上测试他们的应用。您可以在正式版 Bose 音响(例如,Bose 智能音响 500)上测试 GC4A 2.0 的 Cast 应用。
如果您在设置测试方面需要帮助,或无法使用 Bose 扬声器,请联系 gc4a-support-external@google.com。如果您想要调试应用,Google 建议您使用 Cast 调试日志记录器。