Google Cast センダー アプリは、レシーバー アプリに JSON 形式のメッセージを送信することで、レシーバー デバイスでの再生を制御します。同様に、レシーバーも JSON 形式でメッセージを送信者に送り返します。このメッセージは、プレーヤーの状態を変更するセンダーからのコマンド、レシーバーからのコマンドへの応答、またはレシーバー アプリケーションのためのメディアを記述するデータ構造である場合があります。
キャスト メディア アプリは、Google Cast SDK 追加デベロッパー向け利用規約に基づき、レシーバでのメディア再生を制御するには、ここに示すとおりにこれらのメッセージを使用する必要があります。これにより、プラットフォーム間でメディアアプリのユーザー エクスペリエンスが統一され、キャスト アプリが新しいユースケースや今後のユースケースに対応できるようになります。必要に応じて、これらの構造もカスタムデータをサポートします。アプリは SDK でサポートされていないコマンドについて、独自のメッセージを定義することができます。
メディア再生メッセージの名前空間は urn:x-cast:com.google.cast.media として定義されています。
注: この仕様のメッセージと構造には、トランスポート メッセージの最大サイズによって暗黙的な最大サイズがあり、個々のフィールドに制限はありません。トランスポート メッセージの最大サイズは現在 64 KB です。
共通の名前空間データ構造
すべてのメディア名前空間アーティファクトで使用されるデータ構造のスーパーセットは、共通の名前空間で定義されます。
画像
これは画像の説明です。送信側のアプリケーションが画像をどのようにレンダリングするかに応じて選択できるようにするため、少量のメタデータが含まれています。
画像の配列の 1 つのアイテムでのみ、高さと幅は省略可能です。たとえば、1 つのアイテムが返された場合は省略できます。2 つのアイテムが返される場合、1 つのアイテムで高さと幅を指定する必要があります。送信者は、特定のパラメータで渡されるアイテムが適さない場合は「default」オプションを選択できます。
名前 | 型 | 説明 |
---|---|---|
url | URI | 画像の URI |
高さ | 整数 | (省略可)画像の高さ |
幅 | 整数 | (省略可)画像の幅(省略可) |
数
メディア ストリームの音量。メディア ストリームのフェードイン/フェードアウト効果に使用します。(注: システム ボリュームは送信側の API を使用して変更されます)。デバイスの音量を調節するために、ストリームの音量を音量スライダーや音量ボタンと組み合わせて使用することはできません。ストリーム ボリュームを変更するには、次のパラメータのうち少なくとも 1 つを渡す必要があります。
名前 | 型 | 説明 |
---|---|---|
レベル | double | (省略可) 現在のストリームの音量(0.0 ~ 1.0 の範囲内)。1.0 は最大音量です。 |
ミュート中 | boolean | (省略可)キャスト デバイスがミュートされているかどうか(音量とは関係なく) |
メディア名前空間のデータ構造
これらのメッセージは、メディア プレーヤーの状態を表します。名前空間は urn:x-cast:com.google.cast.media です。
MediaInformation
このデータ構造は、メディア ストリームを記述します。
名前 | 型 | 説明 |
---|---|---|
contentId | string | 現在メディア プレーヤーによって読み込まれているコンテンツのサービス固有の識別子。これは自由形式の文字列で、アプリケーションに固有の文字列です。ほとんどの場合、これはメディアへの URL になりますが、センダーは、レシーバが正しく解釈できる文字列を渡すこともできます。最大長: 1,000 |
streamType | 列挙型 (文字列) |
メディア アーティファクトのタイプを次のいずれかとして表します。
|
contentType | string | 再生中のメディアの MIME コンテンツ タイプ |
metadata | オブジェクト | 省略可 メディア メタデータ オブジェクト。次のいずれかです。 |
所要時間 | double | 省略可 現在再生中のストリームの長さ(秒) |
customData | オブジェクト | 省略可 送信側アプリケーションまたは受信側アプリケーションのいずれかによって定義された、アプリケーション固有の blob |
GenericMediaMetadata
一般的なメディアのアーティファクトを記述します。
名前 | 型 | 説明 |
---|---|---|
metadataType | 整数 | 0(唯一の値) |
title | string | (省略可) コンテンツの内容を示すタイトル。プレーヤーは content_id を使用して個別にタイトルを取得できます。または、送信者から読み込みメッセージで指定することもできます。 |
字幕 | string | (省略可) コンテンツの内容を示すサブタイトル。プレーヤーは content_id を使用して個別にタイトルを取得できます。または、送信者から読み込みメッセージで指定することもできます。 |
画像 | 画像[] | (省略可) コンテンツに関連付けられた画像の URL の配列。このフィールドの初期値は、送信者が読み込みメッセージで指定できます。推奨サイズを指定する必要があります |
releaseDate | 文字列(ISO 8601) | (省略可) このコンテンツがリリースされた ISO 8601 の日時。プレーヤーは content_id を使用して個別にタイトルを取得できます。または、送信者から読み込みメッセージで指定することもできます。 |
MovieMediaMetadata
映画メディアのアーティファクトについて説明します。
名前 | 型 | 説明 |
---|---|---|
metadataType | 整数 | 1(唯一の値) |
title | string | (省略可) コンテンツの内容を示すタイトル。プレーヤーは content_id を使用して個別にタイトルを取得できます。または、送信者から読み込みメッセージで指定することもできます。 |
字幕 | string | (省略可) コンテンツの内容を示すサブタイトル。プレーヤーは content_id を使用して個別にタイトルを取得できます。または、送信者から読み込みメッセージで指定することもできます。 |
studio | string | (省略可)コンテンツをリリースしたスタジオ。プレーヤーは、content_id を使用して個別にスタジオを取得できます。または、送信者から読み込みメッセージでスタジオを取得できます。 |
画像 | 画像[] | (省略可) コンテンツに関連付けられた画像の URL の配列。このフィールドの初期値は、送信者が読み込みメッセージで指定できます。推奨サイズを指定する必要があります |
releaseDate | 文字列(ISO 8601) | (省略可) このコンテンツがリリースされた ISO 8601 の日時。プレーヤーは content_id を使用して個別にタイトルを取得できます。または、送信者から読み込みメッセージで指定することもできます。 |
TvShowMediaMetadata
テレビ番組のエピソードのメディア アーティファクトについての説明です。
名前 | 型 | 説明 |
---|---|---|
metadataType | 整数 | 2(唯一の値) |
seriesTitle | string | (省略可) TV シリーズの内容を示すタイトル。プレーヤーは content_id を使用して個別にタイトルを取得できます。または、送信者から読み込みメッセージで指定することもできます。 |
字幕 | string | (省略可) TV エピソードの説明サブタイトル。プレーヤーは content_id を使用して個別にタイトルを取得できます。または、送信者から読み込みメッセージで指定することもできます。 |
シーズン | 整数 | (省略可) テレビ番組のシーズン番号。 |
エピソード | 整数 | (省略可) TV 番組の(シーズンの)エピソード番号。 |
画像 | 画像[] | (省略可) コンテンツに関連付けられた画像の URL の配列。このフィールドの初期値は、送信者が読み込みメッセージで指定できます。推奨サイズを指定する必要があります |
originalAirDate | 文字列(ISO 8601) | (省略可) このエピソードがリリースされた日時(ISO 8601 に準拠)。プレーヤーは、content_id を使用して originalAirDate を独自に取得することも、送信者から Load メッセージで指定することもできます。 |
MusicTrackMediaMetadata
音楽トラックのメディア アーティファクトについて説明します。
名前 | 型 | 説明 |
---|---|---|
metadataType | 整数 | 3(唯一の値) |
albumName | string | (省略可)このトラックの描画元となるアルバムまたはコレクション。 プレーヤーは、content_id を使用して albumName を個別に取得できます。または、Load メッセージで送信者から提供することもできます。 |
title | string | (省略可) トラックの名前(曲のタイトルなど)。プレーヤーは content_id を使用して個別にタイトルを取得できます。または、送信者から読み込みメッセージで指定することもできます。 |
albumArtist | string | (省略可) このトラックを収録したアルバムに関連付けられているアーティストの名前。プレーヤーは content_id を使用して個別に albumArtist を取得できます。または、送信者から Load メッセージで指定できます。 |
アーティスト | string | (省略可) メディア トラックに関連付けられているアーティストの名前。プレーヤーは content_id を使用してアーティストを独自に取得することも、送信者から Load メッセージで指定することもできます。 |
composer | string | (省略可) メディア トラックに関連付けられている作曲者の名前。プレーヤーは、content_id を使用してコンポーザーを独自に取得することも、送信者から Load メッセージで指定することもできます。 |
trackNumber | 整数 | アルバムのトラック番号(省略可 ) |
discNumber | 整数 | アルバムの音量(ディスクなど)の数(省略可 ) |
画像 | 画像[] | (省略可) コンテンツに関連付けられた画像の URL の配列。このフィールドの初期値は、送信者が読み込みメッセージで指定できます。推奨サイズを指定する必要があります |
releaseDate | 文字列(ISO 8601) | (省略可) このコンテンツがリリースされた ISO 8601 の日時。プレーヤーは、content_id を使用して独自に releaseDate を取得できます。または、送信者から Load メッセージで取得できます。 |
PhotoMediaMetadata
写真のメディアのアーティファクトについて説明します。
名前 | 型 | 説明 |
---|---|---|
metadataType | 整数 | 4(唯一の値) |
title | string | (省略可) 写真のタイトル。プレーヤーは content_id を使用して個別にタイトルを取得できます。または、送信者から読み込みメッセージで指定することもできます。 |
アーティスト | string | (省略可) 撮影者の名前。プレーヤーは content_id を使用してアーティストを独自に取得することも、送信者から Load メッセージで指定することもできます。 |
位置情報 | string | 省略可 : 写真が撮影された場所(例: 「マドリッド、スペイン」)。プレーヤーは、content_id を使用して個別に位置情報を取得できます。または、Load メッセージで送信者から位置情報を取得できます。 |
latitude | double | (省略可) 撮影場所の緯度値。プレーヤーは、content_id を使用して独自に緯度を取得できます。または、送信者から Load メッセージで緯度の情報を取得できます。 |
longitude | double | 省略可 。写真が撮影された場所の地理的な経度の値です。プレーヤーは、content_id を使用して経度を個別に取得することも、送信者から Load メッセージで取得することもできます。 |
幅 | 整数 | (省略可) 写真の幅(ピクセル単位)。プレーヤーは、content_id を使用して個別に幅を取得できます。または、送信者から Load メッセージで指定できます。 |
高さ | 整数 | (省略可) 写真の高さ(ピクセル単位)。プレーヤーは content_id を使用して独自に身長を取得できます。または、送信者から Load メッセージで指定することもできます。 |
creationDateTime | 文字列(ISO 8601) | 省略可 。この写真が撮影された日時(ISO 8601)。プレーヤーは、content_id を使用して creationDateTime を独自に取得することも、送信者から Load メッセージで渡すこともできます。 |
MediaStatus
セッションに関するメディア アーティファクトの現在のステータスを示します。
名前 | 型 | 説明 |
---|---|---|
mediaSessionId | 整数 | この特定のセッションを再生するための一意の ID。この ID は LOAD でレシーバーによって設定され、再生の特定のインスタンスを識別するために使用できます。たとえば、同じセッション内で「Wish you was here」が 2 回再生された場合、それぞれ一意の mediaSessionId が割り当てられます。 |
media | MediaInformation | 省略可(ステータス メッセージ用) 再生中のコンテンツの詳細な説明。MediaInformation が変更された場合にのみ、ステータス メッセージで返されます。 |
playbackRate | float | メディア時間が進行中かどうかとその速度を示します。メディア時間はどの状態でも停止できるため、これはプレーヤーの状態とは関係ありません。1.0 は通常時間、0.5 はスローモーションです |
playerState | 列挙型(文字列) | プレーヤーの状態を次のいずれかとして表します。
|
idleReason | 列挙型(文字列) | (省略可) playerState が IDLE で、IDLE になった理由がわかっている場合は、このプロパティが提供されます。プレーヤーが開始したばかりであるため IDLE の場合、このプロパティは提供されません。プレーヤーが他の状態の場合は、このプロパティを指定しないでください。次の値が適用されます。
|
currentTime | double | コンテンツの先頭からのメディア プレーヤーの現在の位置(秒単位)。ライブ ストリーム コンテンツの場合、このフィールドはイベント開始時からプレーヤーに認識される秒数を表します。 |
supportedMediaCommands | flags | メディア プレーヤーがサポートするメディア コマンドを示すフラグ:
組み合わせは合計として記述します。例: 一時停止+シーク+ストリームボリューム+ミュート == 15。 |
ボリューム | Volume | ストリーミングの音量 |
customData | オブジェクト | 省略可 受信側アプリケーションによって定義されたアプリケーション固有の blob |
センダーからレシーバーへのコマンド
メディア プレーヤーを操作するコマンドです。以下のメッセージ内の customData オブジェクトはすべてオプションである必要があります(つまり、データが渡されない場合にレシーバーが適切にデグレードする必要があります)。これにより、汎用のリモコン アプリが正常に動作できるようになります。
読み込み
新しいコンテンツをメディア プレーヤーに読み込みます。
名前 | 型 | 説明 |
---|---|---|
requestId | 整数 | リクエストとレスポンスを関連付けるリクエストの ID |
タイプ | string | LOAD (値のみ) |
media | MediaInformation | 読み込むメディアのメタデータ(contentId を含む) |
自動再生 | boolean | 省略可 (デフォルトは true)自動再生パラメータが指定されている場合、メディア プレーヤーはコンテンツが読み込まれると再生を開始します。自動再生が指定されていない場合でも、メディア プレーヤーの実装ではすぐに再生を開始する場合があります。再生が開始されたら、レスポンスのプレーヤー状態を BUFFERING に設定する必要があります。それ以外の場合は PAUSED に設定する必要があります。 |
currentTime | double | (省略可) コンテンツの先頭からの秒数。コンテンツがライブ コンテンツで、位置が指定されていない場合、ストリームはライブの位置から開始されます。 |
customData | オブジェクト | 省略可 (送信側アプリケーションによって定義されたデータのアプリケーション固有の blob) |
レスポンス | トリガー | ブロードキャスト | エラー |
---|---|---|---|
なし | レシーバーの状態の変更 | メディア ステータス変更メッセージ | プレーヤーのステータスが無効です 読み込みに失敗しました 読み込みをキャンセルしました |
一時停止
現在のコンテンツの再生を一時停止します。すべての送信者アプリケーションへの STATUS イベント通知をトリガーします。
名前 | 型 | 説明 |
---|---|---|
mediaSessionId | 整数 | 一時停止するメディア セッションの ID。 |
requestId | 整数 | リクエストとレスポンスの関連付けに使用するリクエストの ID |
タイプ | string | PAUSE (値のみ) |
customData | オブジェクト | 省略可 (送信側アプリケーションによって定義されたデータのアプリケーション固有の blob) |
レスポンス | トリガー | ブロードキャスト | エラー |
---|---|---|---|
なし | レシーバーの状態の変更 | メディア ステータス変更メッセージ | プレーヤーの状態が無効です |
シーク
ストリーム内の現在の位置を設定します。すべての送信者アプリケーションへの STATUS イベント通知をトリガーします。指定された位置が現在のコンテンツの有効な位置の範囲外である場合、プレーヤーはリクエストされた位置に可能な限り近い有効な位置を選択する必要があります。
名前 | 型 | 説明 |
---|---|---|
mediaSessionId | 整数 | ストリームの位置が設定されているメディア セッションの ID。 |
requestId | 整数 | リクエストとレスポンスを関連付けるリクエストの ID |
タイプ | string | SEEK (値のみ) |
resumeState | 列挙型(文字列) | 省略可 設定しない場合、再生ステータスは変更されません。次の値が適用されます。
|
currentTime | double | (省略可) コンテンツの先頭からの秒数。コンテンツがライブ コンテンツで、位置が指定されていない場合、ストリームはライブの位置から開始されます。 |
customData | オブジェクト | 省略可 (送信側アプリケーションによって定義されたデータのアプリケーション固有の blob) |
レスポンス | トリガー | ブロードキャスト | エラー |
---|---|---|---|
なし | レシーバーの状態の変更 | メディア ステータス変更メッセージ | プレーヤーの状態が無効です |
停止
現在のコンテンツの再生を停止します。すべての送信者アプリケーションへの STATUS イベント通知をトリガーします。このコマンドを実行すると、コンテンツは読み込まれなくなり、mediaSessionId は無効になります。
名前 | 型 | 説明 |
---|---|---|
mediaSessionId | 整数 | 停止するコンテンツのメディア セッションの ID。 |
requestId | 整数 | リクエストとレスポンスを関連付けるリクエストの ID |
タイプ | string | STOP (値のみ) |
customData | オブジェクト | 省略可 (送信側アプリケーションによって定義されたデータのアプリケーション固有の blob) |
レスポンス | トリガー | ブロードキャスト | エラー |
---|---|---|---|
なし | レシーバーの状態の変更 | メディア ステータス変更メッセージ | プレーヤーの状態が無効です |
遊べ
読み込みの呼び出しで読み込まれたコンテンツの再生を開始します。再生は現在の時刻から続行されます。
名前 | 型 | 説明 |
---|---|---|
mediaSessionId | 整数 | 再生されるコンテンツのメディア セッションの ID。 |
requestId | 整数 | リクエストとレスポンスを関連付けるリクエストの ID |
タイプ | string | PLAY (金額のみ) |
customData | オブジェクト | 省略可 (送信側アプリケーションによって定義されたデータのアプリケーション固有の blob) |
レスポンス | トリガー | ブロードキャスト | エラー |
---|---|---|---|
なし | レシーバーの状態の変更 | メディア ステータス変更メッセージ | プレーヤーの状態が無効です |
ステータスを取得
メディアのステータスを取得します。
名前 | 型 | 説明 |
---|---|---|
mediaSessionId | 整数 | (省略可) メディア ステータスを返す対象のメディアのメディア セッション ID。指定しない場合は、すべてのメディア セッション ID のステータスが提供されます。 |
requestId | 整数 | リクエストとレスポンスを関連付けるリクエストの ID |
タイプ | string | GET_STATUS (値のみ) |
customData | オブジェクト | 省略可 (送信側アプリケーションによって定義されたデータのアプリケーション固有の blob) |
レスポンス | トリガー | ブロードキャスト | エラー |
---|---|---|---|
リクエストした送信者への MediaStatus メッセージ | なし | なし | なし |
SetVolume
メディア ストリームの音量を設定します。メディア ストリームのフェードイン/フェードアウト効果に使用します。(注: レシーバーのボリュームは、ウェブ センダーの setVolume を使用して変更します)。デバイスの音量を調節するために、ストリームの音量を音量スライダーや音量ボタンと組み合わせて使用することはできません。ストリームの音量を変更しても、レシーバーの UI はトリガーされません。
名前 | 型 | 説明 |
---|---|---|
mediaSessionId | 整数 | ストリームの音量が変更されるメディアのメディア セッション ID。 |
requestId | 整数 | リクエストとレスポンスを関連付けるリクエストの ID |
タイプ | string | VOLUME (値のみ) |
ボリューム | Volume | ストリーミングの音量 |
customData | オブジェクト | 省略可 (送信側アプリケーションによって定義されたデータのアプリケーション固有の blob) |
レスポンス | トリガー | ブロードキャスト | エラー |
---|---|---|---|
なし | レシーバーの状態の変更 | メディア ステータス変更メッセージ | プレーヤーの状態が無効です |
受信側から送信側へのメッセージ
レシーバーは次の 2 種類のメッセージを送信します。
- エラー: 送信側リクエストに対するエラー応答があったときに送信されたユニキャスト メッセージ。
- ステータス: ブロードキャスト メッセージ。
- 送信者が開始した操作の結果。変更の原因となったリクエストの requestId が含まれます。
- 自然発生: 受信側アプリケーションによってトリガーされた変更など。RequestId は 0 になります。
エラー: プレーヤーの状態が無効です
プレーヤーが有効な状態ではないため、送信者によるリクエストを実行できない場合に送信されます。たとえば、アプリがまだメディア要素を作成していない場合などです。
名前 | 型 | 説明 |
---|---|---|
requestId | 整数 | このエラーを生成したリクエストの ID |
タイプ | string | INVALID_PLAYER_STATE (値のみ) |
customData | オブジェクト | 省略可 受信側アプリケーションによって定義されたアプリケーション固有の blob |
エラー: 読み込みに失敗しました
読み込みリクエストに失敗した場合に送信されます。プレーヤーの状態は IDLE になります。
名前 | 型 | 説明 |
---|---|---|
requestId | 整数 | このエラーを生成したリクエストの ID |
タイプ | string | LOAD_FAILED (値のみ) |
customData | オブジェクト | 省略可 受信側アプリケーションによって定義されたアプリケーション固有の blob |
エラー: 読み込みがキャンセルされました
読み込みリクエストがキャンセルされたときに送信されます(2 番目の読み込みリクエストを受け取ったとき)。
名前 | 型 | 説明 |
---|---|---|
requestId | 整数 | このエラーを生成したリクエストの ID |
タイプ | string | LOAD_CANCELLED (値のみ) |
customData | オブジェクト | 省略可 受信側アプリケーションによって定義されたアプリケーション固有の blob |
エラー: リクエストが無効です
リクエストが無効の場合(不明なリクエスト タイプなど)に送信されます。
名前 | 型 | 説明 |
---|---|---|
requestId | 整数 | このエラーを生成したリクエストの ID |
タイプ | string | INVALID_REQUEST (値のみ) |
理由 | 列挙型(文字列) | 値:
|
customData | オブジェクト | 省略可 受信側アプリケーションによって定義されたアプリケーション固有の blob |
メディア ステータス
状態の変更後、またはメディア ステータス リクエストの後に送信されます。変更またはリクエストされた MediaStatus オブジェクトのみが送信されます。
名前 | 型 | 説明 |
---|---|---|
requestId | 整数 | このステータス レスポンスを送信元のリクエストと関連付けるために使用される ID。ステータス メッセージが自然に発生する(送信側のリクエストによってトリガーされない)場合は 0。送信者のアプリケーションは、乱数を選択し、値を継続的に増やすことで、一意のリクエスト ID を生成します(0 は使用されません)。 |
タイプ | string | MEDIA_STATUS (値のみ) |
status | MediaStatus[] | Media Status オブジェクトの配列。注: MediaStatus のメディア要素は、変更されている場合にのみ返されます。 |
customData | オブジェクト | 省略可 受信側アプリケーションによって定義されたアプリケーション固有の blob |