适用于音频设备的 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 音频投射,您的应用必须执行以下操作:
支持纯音频:在线播放音乐和音频文件、电台等。流式传输到网络接收器应用的媒体不得为视频流。此外,请避免流式传输图形和图片,以缩短应用启动时间和内存用量。请参阅下面的内存使用准则。
在预期的 Cast 音频设备和常规 Chromecast 上运行。
设备功能
您的应用可以通过设备功能 API(可从设备本身获取,也可通过发送者 API 或接收方 API)获得在纯音频设备上运行的功能。
设备 HTTP 标头
应用启动期间 Cast 设备提供的 CAST-DEVICE-CAPABILITIES
HTTP 标头描述了设备功能。设备将包含此标头的请求发送到托管 Web 接收器应用的服务器。纯音频设备的标头使用 CAST-DEVICE-CAPABILITIES: {"display_supported":false}
描述设备功能。
当您的服务器收到来自设备的请求时,您可以使用此标头中的信息将请求重定向到针对音频设备进行了优化的网络接收器应用。
Web Receiver API
您可以在加载 Web 接收器应用时调用 CastReceiverManager.getDeviceCapabilities()
来获取相同的设备功能对象。
如需了解详情,请参阅设备功能。
发件人 API
每个 Cast 发送器 API 也都有设备功能信息。这些信息可以让您的发送者应用决定将哪种媒体发送给接收者。 如果您的应用同时支持音频和视频,则可以避免向纯音频设备发送视频内容。此外,您的应用可以使用最适合设备的方法来控制音量,如设计核对清单中所述。请参阅以下适用于发送者的设备功能 API:
- Android:CastDevice.hasCapabilities
- iOS:deviceCapabilities
- Chrome:chrome.cast.Capability
内存使用准则
在音频设备上运行的网络接收器应用必须按如下方式管理内存用量:
- 请避免下载或使用任何图片或图形资源,以减少内存占用并缩短开始播放前所用的时间。
- 使用媒体来源扩展 (MSE) 时,应用必须将流缓冲区限制为 2MB。如果使用媒体播放器库 (MPL),则应用的流缓冲区空间由 MPL 定义。
- 使用 HTMLMediaElement 时,应用的流缓冲区空间由 Chrome 根据流速率定义。将音频比特率限制为每秒 2 兆比特(支持 28 MB/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 应用管理接收器或云端的媒体队列,则网络接收器必须使用 urn:x-cast:com.google.cast.media
命名空间广播所有媒体状态更新,以便所有发送者进行同步。
注册
您必须为音频设备注册 Google Cast 以进行测试,并注册您的应用以支持 Google Cast 音频设备,方法是使用 Google Cast SDK 开发者控制台。
对于未发布的应用(例如用于测试的应用),您还必须选择支持纯音频设备的选项,以便应用发现纯音频设备。
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 Debug Logger。