音频设备

适用于音频设备的 Google Cast 仅支持音频播放。本指南介绍了如何针对仅音频设备优化 Cast 应用,并利用降低的内存、CPU 和网络带宽利用率。

支持 Google Cast 音频的应用必须考虑以下事项:

  • Google Cast for Audio 设备不会显示视频或图形。不过,许多音频设备都具有显示元数据的显示屏,例如播放状态(正在播放或暂停)和进度。您的应用不得仅在接收器上显示此类重要用户信息;重要信息和大部分界面都必须显示在发送器上。
  • 为了正确运行 Web Receiver 应用,Google Cast for Audio 设备仍必须渲染图形,即使这些图形不会显示也是如此。由于设备可能不支持硬件加速图形操作,因此接收器应用应避免使用图形密集型操作,例如颜色渐变、旋转、alpha 混合,以及每秒多次重新绘制进度条等大型对象。
  • Google Cast 音频设备仅支持受 Widevine 数字版权管理 (DRM) 保护的内容。
  • 对于大多数 Google Cast(适用于音频)设备,发送器应用会控制设备(例如音箱)的完整音量范围,而不仅仅是输入到电视的音源的音量(与 Chromecast 设备不同)。
  • 除了使用发送器设备(例如手机)控制播放之外,应用可能还必须提供使用设备自有控制器(例如遥控器、设备端按钮或外部遥控器应用)控制播放的功能。
  • Google Cast for Audio 设备可能支持通过小型 LCD 屏幕、HDMI 输出(适用于条形音箱或音频/视频接收器)或外部遥控器应用显示内容元数据,具体取决于特定设备界面。

开发

若要开发支持 Google Cast 音频的 Cast 应用,第一步是开发支持音频和视频的 Cast 应用,并确保该应用在 Chromecast 上运行。本文档假定您已开发并测试了此类应用。

应用可以同时支持音频和视频设备以及纯音频设备。它需要知道何时投放到哪个平台,并采取措施来确保在给定场景下提供最佳用户体验。

例如,双视频和音频应用(例如本地/NAS 文件播放应用)应启用投放到纯音频设备的功能,以支持播放音频文件,但应用不应允许用户将视频文件发送到纯音频设备。应用可以使用下文所述的适用于发件人的设备功能 API 来确定适合设备的内容。

如需支持 Google Cast 音频,您的应用必须执行以下操作:

  • 支持仅音频:流式传输音乐和音频文件、广播等。流式传输到 Web Receiver 应用的媒体不得是视频流。此外,请避免流式传输图形和图片,以缩短应用启动时间并降低内存用量。请参阅下文中的内存用量指南

  • 在 Cast for Audio 设备和普通 Chromecast 上按预期运行。

设备功能

您的应用可以通过设备功能 API(可从设备本身或通过发送器或接收器 API 获取)了解自己是否在纯音频设备上运行。

设备 HTTP 标头

Cast 设备在应用启动期间提供的 CAST-DEVICE-CAPABILITIES HTTP 标头描述了设备功能。设备会向托管 Web 接收器应用的服务器发送包含此标头的请求。仅音频设备的标头使用 CAST-DEVICE-CAPABILITIES: {"display_supported":false} 描述设备功能。

当您的服务器收到来自设备的请求时,您可以使用此标头中的信息将请求重定向到针对音频设备进行了优化的 Web Receiver 应用。

Web Receiver API

在加载 Web Receiver 应用时,您可以通过调用 CastReceiverManager.getDeviceCapabilities() 来获取相同的设备功能对象。

如需了解详情,请参阅设备功能

发件人 API

每个 Cast 发送器 API 都包含设备功能信息。借助这些标记,发送方应用可以确定要向接收方发送哪种媒体。如果您的应用同时支持音频和视频,则可以避免向纯音频设备发送视频内容。此外,您的应用可以使用最适合设备的方法控制音量,如设计核对清单中所述。请参阅适用于发件人的以下设备功能 API:

内存用量准则

在音频设备上运行的 Web 接收器应用必须按如下方式管理内存用量:

  • 避免下载或使用任何图片或图形素材资源,以减少内存占用量并缩短开始播放的时间。
  • 使用媒体源扩展 (MSE) 时,应用必须将串流缓冲区限制为 2MB。如果使用 Media Player 库 (MPL),则应用的流缓冲区大小已由 MPL 定义。
  • 使用 HTMLMediaElement 时,Chrome 会根据数据流速率定义应用的数据流缓冲区大小。将音频比特率限制为每秒 2 兆比特,支持受支持的媒体中所述的所有编解码器(最高 48KHz/16 位)。

音量控制

对于大多数 Google Cast 音频设备,发送器应用会控制设备的完整音量范围,而不仅仅是音源输入音量(与 Chromecast 设备不同)。这意味着,仅音频应用的音量增量必须更小。如需有关在应用中提供音量控制功能的准则,请参阅以下文档:

设备控制器

支持 Google Cast 的音频设备可能具有自己的播放控件(例如按钮、遥控器)。这些事件使用为 urn:x-cast:com.google.cast.media 命名空间定义的媒体播放消息(如媒体播放消息中所述)来控制接收器应用中的播放。您的接收器应用必须支持这些媒体播放消息,才能支持设备的播放控件。

此外,发送方应用应支持发送方接收的接收器消息,以便在用户使用设备控件更改媒体状态时,发送方应用可以接收来自接收器的状态消息,并相应地更新界面。

设备显示

Google Cast for Audio 设备可能在设备上配备 LCD 屏幕,或者提供显示媒体元数据的设备专用控制应用。您的接收器应用必须为所有音轨提供此元数据,并确保其与当前播放的内容同步,以确保元数据在显示屏上正确显示。如果应用使用自定义元数据,则还必须提供标准音频元数据(曲目名称、音乐人名称、专辑名称等),如下文针对每个平台所述。

接收器在加载媒体时会从发送方获取元数据。在发送器应用中,使用用于在接收器上加载媒体的命令,您必须指定下述字段,以便元数据显示在 Google Cast for Audio 设备上。使用以下 API:

如果 Cast 应用在接收器上或云端管理媒体队列,则 Web 接收器必须使用 urn:x-cast:com.google.cast.media 命名空间广播所有媒体状态更新,以便所有发送器保持同步。

注册

您必须使用 Google Cast SDK Developer Console 注册要用于测试的 Google Cast 音频设备,并注册您的应用以支持 Google Cast 音频设备。

  • 如需详细了解如何注册设备,请参阅设备
  • 注册应用时,您必须选中支持投放到仅音频设备复选框,以允许应用发现 Google Cast 音频设备。请参阅注册您的应用

对于未发布的应用(例如用于测试的应用),您还必须选择支持仅音频设备的选项,以便应用发现仅音频设备。

Google Cast for Audio 2.0

Google Cast for Audio (GC4A) 2.0 是新一代 Cast 音频平台,专为低内存设备而设计,旨在扩大可流式传输内容的设备生态系统。由于 GC4A 2.0 以音频平台为目标平台,因此 Web API 集已缩减,以适应无显示屏设备。GC4A 2.0 将面向支持投放的新型和现有音箱推出。

测试和调试

由于所有受支持的音箱都将改用 GC4A 2.0,因此音频应用开发者务必要在 GC4A 2.0 上测试其应用。您可以在下列任何 GC4A 2.0 设备上测试适用于 GC4A 2.0 的 Cast 应用。

GC4A 2.0 不支持 Chrome 远程调试程序。如果您想调试应用,Google 建议您使用 Cast 调试日志记录器

支持 GC4A 2.0 的设备

以下并非 GC4A 2.0 设备的完整列表:

  • Bose:Wi-Fi 音箱和智能条形音箱
  • JBL:Charge 5 Wi-Fi / Boombox 3 Wi-Fi / Authentics 200、300 和 500
  • 三星:Music Frame / 条形音箱
  • LG:条形音箱 S90TY/SG10TY/SE70Q/S80Q/S90Q
  • Bang & Olufsen Beosound 2 / Beocore Connect
  • Sonoro Maestro 2 / Meisterstruck 2
  • Cambridge Audio MXN10
  • KEF LS60 / LSX II
  • Teufel Motiv Home
  • Nordic Argon Audio
  • WiiM CI MOD S / Ultra

建议在 GC4A 2.0 上测试所有应用功能。请务必测试播放所有媒体类型(播客、在线直播等)、暂停、快进、跳过、更改播放列表、停止和重新连接 Cast。

支持的 API

GC4A 2.0 支持以下 API:

  • HTML
  • JavaScript ECMA 6
  • DOMParser
  • XMLSerializer
  • Document 及其子类
  • DocumentFragment
  • HTMLMediaElement 和 HTMLAudioElement
  • HTMLVideoElement(只能播放音频内容)
  • HTMLScriptElement
  • HTMLBaseElement
  • HTMLTemplateElement
  • 自定义元素
  • Shadow DOM
  • 脚本模块 / 异步 / 延迟
  • Fetch / XHR
  • WebSocket
  • MessagePort
  • Cookie
  • MSE(媒体源扩展)
  • EME(加密媒体扩展)
  • 本地存储空间 / 会话存储空间

GC4A 2.0 支持:

  • 动态模块导入(将于 2024 年添加)
  • CSS
  • IFrame
  • TextTracks

联系人

如果您需要测试设置方面的帮助,或者无法使用 Bose 音箱,请与 gc4a-support-external@google.com 联系。