Google Cast 音訊裝置僅支援播放音訊。本指南說明如何針對僅限音訊裝置最佳化 Cast 應用程式,並充分利用減少的記憶體、CPU 和網路頻寬使用率需求。
凡是支援 Google Cast 音訊功能的應用程式,都必須考量以下幾點:
- Google Cast 音訊裝置不支援顯示影片或圖像。不過,許多音訊裝置都具有顯示中繼資料的顯示畫面,例如播放狀態 (播放或暫停) 和進度。應用程式不得僅在接收端上顯示這類重要的使用者資訊,且重要資訊及大部分的使用者介面都必須顯示在傳送方上。
- 為了正確執行 Web Receiver 應用程式,音訊裝置專用的 Google Cast 仍必須算繪圖像 (即使未顯示這些圖像)。由於裝置可能不支援硬體加速圖形作業,因此接收器應用程式應避免使用需要大量圖形的作業,例如色彩漸層、旋轉、Alpha 混合,和重新繪製進度列等大型物件 (例如進度列超過每秒一次)。
- 音訊裝置專用的 Google Cast 僅支援 Widevine 以數位版權管理 (DRM) 保護的內容。
- 對於大多數適用於音訊裝置的 Google Cast 來說,傳送者應用程式會控制裝置 (例如喇叭) 的完整音量範圍,而不只是控制在電視上的音訊來源輸入的音量,就像使用 Chromecast 裝置一樣。
- 除了使用傳送端裝置 (例如手機) 控製播放之外,應用程式可能還需要提供裝置本身的控制器 (例如遙控器、裝置端按鈕或外部遠端應用程式) 控製播放作業。
- Google Cast 音訊裝置可能支援透過小型 LCD 螢幕、HDMI 輸出 (適用於單件式環繞劇院或影音接收器) 或外部遠端應用程式顯示內容中繼資料,實際情況視特定的裝置 UI 而定。
開發
要開發支援 Google Cast 音訊功能的 Cast 應用程式,第一步就是開發影音的 Cast 應用程式,並確保應用程式能在 Chromecast 上執行。本文假設您已開發並測試了這類應用程式。
應用程式可能同時支援純視訊和純音訊裝置。它必須知道裝置是否投放至兩者之間,並採取相應措施,確保在特定情境下提供最佳使用者體驗。
舉例來說,雙影片和音訊應用程式 (例如本機/NAS 檔案播放應用程式) 應可將投放內容投放到僅播放音訊的裝置,以便支援播放音訊檔案,但是應用程式不應允許使用者將影片檔案傳送至純音訊裝置。應用程式可以使用下文所述的寄件者裝置功能 API,判斷適合裝置的內容。
應用程式必須執行下列步驟,才能支援 Google Cast 音訊功能:
僅支援音訊:串流音樂和音訊檔案、電台等。串流至 Web Receiver 應用程式的媒體不得為影片串流。此外,請避免使用串流圖形和映像檔,來改善應用程式啟動時間和記憶體用量。請參閱下方的記憶體使用指南。
在音訊專用 Cast 裝置和一般 Chromecast 上可正常運作。
裝置功能
應用程式可透過裝置功能 API (透過裝置本身,或透過傳送端或接收端 API),判斷應用程式是否在純音訊裝置上執行。
裝置 HTTP 標頭
應用程式啟動時,投放裝置提供的 CAST-DEVICE-CAPABILITIES
HTTP 標頭會說明裝置功能。裝置會將使用這個標頭的要求傳送至代管 Web Receiver 應用程式的伺服器。純音訊裝置標頭會說明 CAST-DEVICE-CAPABILITIES: {"display_supported":false}
的裝置功能。
當您的伺服器收到來自裝置的要求時,您可以利用此標頭中的資訊將要求重新導向至專為音訊裝置最佳化的 Web Receiver 應用程式。
Web Receiver API
您可以在載入 Web Receiver 應用程式時呼叫 CastReceiverManager.getDeviceCapabilities()
,以取得相同的裝置功能物件。
詳情請參閱「裝置功能」一節。
寄件者 API
每個 Cast 發送端 API 也都會提供裝置功能資訊。這些參數可讓傳送者應用程式決定要將哪種媒體傳送給接收端。 如果應用程式同時支援音訊和視訊,可避免將影片內容傳送至只能播放音訊的裝置。此外,應用程式還可以透過最適合裝置的方法控制音量,如設計檢查清單所述。請參閱下列適用於寄件者的裝置功能 API:
- Android:CastDevice.hasCapabilities
- iOS:deviceCapabilities
- Chrome:chrome.cast.Capability
記憶體用量指南
在音訊裝置上執行的網路接收器應用程式必須管理記憶體用量,方法如下:
- 請避免下載或使用任何圖片或圖形素材資源,以便減少記憶體用量,並縮短開始播放前的時間長度。
- 使用媒體來源擴充功能 (MSE) 時,應用程式必須將串流緩衝區限制為 2 MB。如果使用媒體播放器程式庫 (MPL),應用程式的串流緩衝區大小已由 MPL 定義。
- 使用 HTMLMediaElement 時,Chrome 會根據串流速率定義應用程式的串流緩衝區大小。將音訊位元率限制為每秒 2 百萬位元,支援支援的媒體中所述所有轉碼器 (最高 48 KHz/16 位元)。
音量控制
對於大多數適用於音訊裝置的 Google Cast 來說,傳送者應用程式會控制裝置的完整音量範圍,而不只是控制音訊來源的輸入音量,就像使用 Chromecast 裝置一樣。這表示對於僅限音訊應用程式,音量變更的增量必須較小。請參閱下列文件,瞭解在應用程式中提供音量控制的指南:
裝置控制
音訊裝置專用的 Google Cast 可能有專屬的播放控制項 (例如按鈕、遙控器)。這些控制項會使用針對 urn:x-cast:com.google.cast.media
命名空間定義的媒體播放訊息 (如媒體播放訊息中所述),控制接收器應用程式上的播放。您的接收器應用程式必須支援這些媒體播放訊息,才能支援裝置的播放控制項。
此外,傳送者應用程式也應支援「從接收者傳送給傳送者的訊息」,這樣當使用者使用裝置控制項變更媒體狀態時,傳送者應用程式即可接收來自接收端的狀態訊息,並據此更新 UI。
裝置顯示
Google Cast 音訊裝置可能會在裝置上執行 LCD 螢幕,或是顯示媒體中繼資料的裝置專用控制應用程式。接收器應用程式必須為所有音軌提供此中繼資料,並確保其與目前播放的內容保持同步,確保中繼資料能適當在螢幕上顯示。如果應用程式使用自訂中繼資料,則必須一併提供標準音訊中繼資料 (曲目名稱、演出者姓名、專輯名稱等),如下方各平台所述。
接收端在載入媒體時,取得傳送方的中繼資料。在傳送端應用程式中,您必須指定以下欄位,才能在接收器上載入媒體,才能在 Google Cast 音訊裝置上顯示中繼資料。使用下列 API:
Android
MediaMetadata
搭配MEDIA_TYPE_MUSIC_TRACK
和:iOS
GCKMediaMetadata
,搭配GCKMediaMetadataType
GCKMediaMetadataTypeMusicTrack
和:Chrome
MediaInfo
搭配MusicTrackMediaMetadata
和:
如果投放應用程式會管理接收器或雲端中的媒體佇列,網路接收器必須使用 urn:x-cast:com.google.cast.media
命名空間播送任何媒體狀態更新,以便同步處理所有傳送者。
註冊
您必須使用 Google Cast SDK 開發人員控制台註冊 Google Cast 音訊裝置以便進行測試,並註冊應用程式以便支援音訊裝置的 Google Cast。
針對尚未發布的應用程式 (例如用於測試的應用程式),您也必須選取支援純音訊裝置的選項,應用程式才能搜尋僅限音訊的裝置。
Google Cast 音訊版 2.0
Google Cast for Audio (GC4A) 2.0 是新一代的 Cast 音訊平台,專為低記憶體裝置而設計,旨在拓展可串流內容的裝置生態系統。
音訊應用程式開發人員務必在 GC4A 2.0 上測試自家應用程式。您可以在正式版的 Bose 喇叭上,測試 GC4A 2.0 的 Cast 應用程式 (例如 Bose Smart Speaker 500)。
如果您在設定測試時需要協助,或是無法使用 Bose 喇叭,請與 gc4a-support-external@google.com 聯絡。如要對應用程式進行偵錯,Google 建議您使用 Cast 偵錯記錄工具。