音声デバイス向けの Google Cast は、音声の再生のみをサポートしています。このガイドでは、音声のみのデバイス向けにキャスト アプリケーションを最適化し、メモリ、CPU、ネットワーク帯域幅の使用量の少ない需要を活用する方法について説明します。
音声用 Google Cast をサポートするアプリでは、以下の点を考慮する必要があります。
- オーディオ機器用 Google Cast で動画やグラフィックが表示されない。ただし、多くのオーディオ機器には、再生状態(再生中や一時停止中)や進行状況など、メタデータを表示するためのディスプレイがあります。アプリでは、このような重要なユーザー情報をレシーバーだけで表示しないようにする必要があります。重要な情報やユーザー インターフェースのほとんどは、送信者で表示しなければなりません。
- Web Receiver アプリケーションを適切に実行するには、表示されていない場合でも、オーディオ デバイス用の Google Cast がグラフィックをレンダリングする必要があります。デバイスは、ハードウェア アクセラレーテッド グラフィック オペレーションをサポートしていない可能性があるため、レシーバ アプリは、カラー グラデーション、回転、アルファ ブレンドなどのグラフィックを多用するオペレーションや、進行状況バーなどの大きなオブジェクトを 1 秒あたり 1 回以上再描画することは避けてください。
- オーディオ デバイス向けの Google Cast は、Widevine for Digital Rights Management(DRM)で保護されたコンテンツのみをサポートしています。
- ほとんどの Google Cast for Audio デバイスの場合、送信側アプリは、Chromecast デバイスの場合と同様に、テレビへの音源入力の音量だけでなく、デバイスの全音量範囲(スピーカーなど)を制御します。
- アプリは、送信側のデバイス(スマートフォンなど)で再生をコントロールすることに加えて、リモコン、デバイス上のボタン、外部リモート アプリケーションなどのデバイス独自のコントローラを使用して再生を制御するかどうかの提供を提供する必要があります。
- オーディオ デバイス用の Google Cast は、特定のデバイス UI に応じて、小さな LCD 画面、HDMI 出力(サウンドバーまたはオーディオ ビデオ レシーバー)、または外部リモート アプリケーションを使用するコンテンツ メタデータの表示をサポートすることがあります。
Development
音声用 Google Cast をサポートするキャスト アプリを開発するには、まず音声動画用のキャストアプリを開発し、Chromecast 上で動作させるようにします。このドキュメントでは、そのようなアプリを開発、テストしたことを前提としています。
アプリは、音声動画デバイスと音声のみデバイスの両方をサポートする場合があります。キャスト先のキャストのタイミングを把握し、特定のシナリオで最適なユーザー エクスペリエンスを実現するための対策を講じる必要があります。
たとえば、デュアル動画アプリと音声アプリ(ローカル/NAS ファイル再生アプリなど)では、音声ファイルの再生をサポートするために、音声のみのデバイスにキャストする必要がありますが、このアプリは、ユーザーが音声のみのデバイスに動画ファイルを送信できないようにする必要があります。アプリは下記の送信者向けのデバイス機能 API を使用して、デバイスに適したコンテンツを特定できます。
音声用 Google Cast をサポートするには、アプリで以下のことを行う必要があります。
音声のみのサポート: 音楽ファイルや音声ファイル、ラジオなどのストリーミング。Web Receiver アプリにストリーミングされるメディアは動画ストリームにできません。また、アプリの起動時間とメモリ使用量を改善するために、グラフィックや画像のストリーミングも行わないでください。後述のメモリ使用のガイドラインをご覧ください。
オーディオ機器のキャストや通常の Chromecast で想定どおりに動作させます。
デバイスの機能
アプリは、デバイス機能の API を介して、音声のみのデバイスで実行されているかどうかを判別できます。この API は、デバイス自体から、または送信者またはレシーバーの API を通じて利用できます。
デバイスの HTTP ヘッダー
アプリの起動時にキャスト デバイスによって提供される CAST-DEVICE-CAPABILITIES
HTTP ヘッダーは、デバイスの機能を記述します。デバイスは、このヘッダーを含むリクエストを Web Receiver アプリをホストしているサーバーに送信します。オーディオ専用デバイスのヘッダーでは、CAST-DEVICE-CAPABILITIES: {"display_supported":false}
を使用してデバイスの機能を記述します。
サーバーがデバイスからリクエストを受信すると、このヘッダーの情報を使用してリクエストをオーディオ デバイス向けに最適化されたウェブ レシーバー アプリにリダイレクトできます。
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 によってストリーム レートに基づいて定義されます。オーディオ ビットレートは 1 秒あたり 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 を登録し、Google Cast SDK Developer Console を使用して、オーディオ デバイス用の Google Cast をサポートするアプリを登録する必要があります。
- デバイスの登録について詳しくは、デバイスをご覧ください。
- アプリがオーディオ機器用の Google Cast を検出できるようにするには、アプリの登録時に [音声のみのデバイスにキャストする] チェックボックスをオンにする必要があります。アプリケーションを登録するをご覧ください。
非公開アプリ(テストに使用するアプリなど)については、音声のみのデバイスをサポートするオプションを選択して、アプリが音声のみのデバイスを検出できるようにする必要があります。
Google Cast for Audio 2.0
Google Cast for Audio(GC4A)2.0 は、ローメモリ デバイスを対象に設計された次世代の Cast オーディオ プラットフォームで、コンテンツをストリーミングできるデバイスのエコシステムを拡張します。
オーディオ アプリ デベロッパーは、GC4A 2.0 でアプリをテストすることが大切です。製品版 Bose スピーカー(Bose スマート スピーカー 500 など)で GC4A 2.0 のキャストアプリをテストできます。
テストの設定に関してヘルプが必要な場合や、Bose スピーカーを使用できない場合は、gc4a-support-external@google.com にお問い合わせください。アプリをデバッグする場合は、キャスト デバッグ ロガーを使用することをおすすめします。