メディア再生メッセージ

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 列挙型(文字列)

プレーヤーの状態を次のいずれかとして表します。

  • IDLE  プレーヤーがまだ読み込まれていない
  • 再生中  プレーヤーがアクティブにコンテンツを再生している
  • BUFFERING  プレーヤーが再生モードになっているが、コンテンツを再生していない(currentTime は変わらない)
  • 一時停止  プレーヤーが一時停止した
idleReason 列挙型(文字列)

(省略可) playerState が IDLE で、IDLE になった理由がわかっている場合は、このプロパティが提供されます。プレーヤーが開始したばかりであるため IDLE の場合、このプロパティは提供されません。プレーヤーが他の状態の場合は、このプロパティを指定しないでください。次の値が適用されます。

  • CANCELLED   - センダーが STOP コマンドで再生の停止をリクエストしました。
  • INTERRUPTED  センダーが LOAD コマンドを使って別のメディアの再生をリクエストしました
  • FINISHED(終了)  メディアの再生が完了しました
  • エラー  : エラーが原因でメディアが中断されました(例: ネットワークの問題が原因でプレーヤーがメディアをダウンロードできなかった)。
currentTime double コンテンツの先頭からのメディア プレーヤーの現在の位置(秒単位)。ライブ ストリーム コンテンツの場合、このフィールドはイベント開始時からプレーヤーに認識される秒数を表します。
supportedMediaCommands flags

メディア プレーヤーがサポートするメディア コマンドを示すフラグ:

  • 1  一時停止
  • 2  移動
  • 4  ストリーミングの音量
  • 8  ストリーミングのミュート
  • 16  早送り
  • 32  巻き戻し

組み合わせは合計として記述します。例: 一時停止+シーク+ストリームボリューム+ミュート == 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 列挙型(文字列)

省略可  設定しない場合、再生ステータスは変更されません。次の値が適用されます。

  • PLAYBACK_START  メディアを強制的に開始する
  • PLAYBACK_PAUSE  メディアを強制的に一時停止
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 (値のみ)
理由 列挙型(文字列)

値:

  • INVALID_COMMAND  このコマンドはサポートされていません。
  • DUPLICATE_REQUESTID  リクエスト ID が一意ではない(受信側が同じ ID のリクエストを処理している)
customData オブジェクト 省略可 受信側アプリケーションによって定義されたアプリケーション固有の blob

メディア ステータス

状態の変更後、またはメディア ステータス リクエストの後に送信されます。変更またはリクエストされた MediaStatus オブジェクトのみが送信されます。

名前 説明
requestId 整数 このステータス レスポンスを送信元のリクエストと関連付けるために使用される ID。ステータス メッセージが自然に発生する(送信側のリクエストによってトリガーされない)場合は 0。送信者のアプリケーションは、乱数を選択し、値を継続的に増やすことで、一意のリクエスト ID を生成します(0 は使用されません)。
タイプ string MEDIA_STATUS (値のみ)
status MediaStatus[] Media Status オブジェクトの配列。注: MediaStatus のメディア要素は、変更されている場合にのみ返されます。
customData オブジェクト 省略可 受信側アプリケーションによって定義されたアプリケーション固有の blob