Les applications Google Cast Sender contrôlent la lecture sur l'appareil récepteur en envoyant des messages au format JSON à l'application réceptrice. De même, le destinataire renvoie les messages à l'expéditeur, également au format JSON. Il peut s'agir de commandes envoyées par l'expéditeur qui modifient l'état du lecteur, de réponses à ces commandes du récepteur ou de structures de données décrivant le contenu multimédia de l'application réceptrice.
Conformément aux Conditions d'utilisation supplémentaires pour les développeurs du SDK Google Cast, une application multimédia Cast doit utiliser ces messages comme indiqué ici pour contrôler la lecture des contenus multimédias sur le récepteur. Ainsi, l'application multimédia offre une expérience utilisateur cohérente sur toutes les plates-formes et garantit qu'une application Cast sera compatible avec de nouveaux cas d'utilisation futurs. Ces structures acceptent également les données personnalisées, le cas échéant, et une application peut définir ses propres messages pour les commandes non compatibles avec le SDK.
L'espace de noms des messages de lecture de contenus multimédias est défini sur urn:x-cast:com.google.cast.media.
Remarque : Les messages et les structures de cette spécification ont une taille maximale implicite déterminée par la taille maximale d'un message de transport. Il n'y a pas de limite pour les champs individuels. La taille maximale du message de transport est actuellement de 64 Ko.
Structures de données d'espace de noms courantes
Un surensemble de structures de données utilisées par tous les artefacts d'espace de noms multimédia est défini dans un espace de noms commun.
Image
Il s'agit de la description d'une image, y compris une petite quantité de métadonnées permettant à l'application de l'expéditeur de choisir des images, en fonction de la manière dont elles seront affichées.
La hauteur et la largeur sont facultatives pour un seul élément d'un tableau d'images. Par exemple, si un seul article est renvoyé, les deux sont facultatifs. S'il y a deux articles, un article doit indiquer une hauteur et une largeur, mais l'expéditeur peut opter pour l'option "par défaut" s'il ne convient pas à celui transmis avec des paramètres spécifiques.
Nom | Type | Description |
---|---|---|
url | URI | URI de l'image |
hauteur | integer | Facultatif Hauteur de l'image |
largeur | integer | Facultatif Largeur de l'image |
Volume
Volume du flux multimédia. Utilisé pour les effets de fondu sur le flux multimédia. (Remarque: Le volume du système est modifié à l'aide des API d'envoi.) Il ne doit pas être utilisé conjointement avec le curseur de volume ou les boutons de volume pour contrôler le volume de l'appareil. Au moins l'un des paramètres suivants doit être transmis pour modifier le volume du flux.
Nom | Type | Description |
---|---|---|
niveau | double | facultatif : niveau de volume actuel du flux sous la forme d'une valeur comprise entre 0,0 et 1,0 où 1,0 correspond au volume maximal. |
bloqué | booléen | Facultatif : Indique si le son est coupé sur l'appareil Cast, quel que soit le volume. |
Structures de données d'espaces de noms multimédias
Ces messages décrivent l'état du lecteur multimédia. L'espace de noms est urn:x-cast:com.google.cast.media.
MediaInformation
Cette structure de données décrit un flux multimédia.
Nom | Type | Description |
---|---|---|
ID du contenu | chaîne | Identifiant propre au service du contenu actuellement chargé par le lecteur multimédia. Il s'agit d'une chaîne de forme libre spécifique à l'application. Dans la plupart des cas, il s'agit de l'URL d'accès au contenu multimédia, mais l'expéditeur peut transmettre une chaîne que le destinataire peut interpréter correctement. Longueur maximale: 1 k |
streamType | enum (chaîne) |
Décrit le type d'artefact multimédia en tant qu'un des éléments suivants:
|
contentType (Type de contenu) | chaîne | Type de contenu MIME du contenu multimédia en cours de lecture |
metadata | objet | facultatif : objet de métadonnées multimédias, au choix : |
durée | double | Facultatif : durée du flux en cours de lecture, en secondes |
données personnalisées | objet | Facultatif Blob de données spécifique à l'application défini par l'application émettrice ou par l'application réceptrice. |
GenericMediaMetadata
Décrit un artefact multimédia générique.
Nom | Type | Description |
---|---|---|
metadataType. | integer | 0 (la seule valeur) |
title | chaîne | Facultatif Titre descriptif du contenu. Le lecteur peut récupérer le titre indépendamment avec content_id ou le transmettre par l'expéditeur dans le message Load |
sous-titre | chaîne | Facultatif Sous-titre descriptif du contenu. Le lecteur peut récupérer le titre indépendamment avec content_id ou le transmettre par l'expéditeur dans le message Load |
images | Image[] | Facultatif Tableau d'URL d'une image associée au contenu. L'expéditeur peut fournir la valeur initiale du champ dans le message Load (Charger). Tailles recommandées recommandées |
releaseDate (Date de sortie) | chaîne (ISO 8601) | Facultatif Date et heure ISO 8601 de ce contenu. Le lecteur peut récupérer le titre indépendamment avec content_id ou le transmettre par l'expéditeur dans le message Load |
Métadonnées de films
Décrit un artefact multimédia sur un film.
Nom | Type | Description |
---|---|---|
metadataType. | integer | 1 (la seule valeur) |
title | chaîne | Facultatif Titre descriptif du contenu. Le lecteur peut récupérer le titre indépendamment avec content_id ou le transmettre par l'expéditeur dans le message Load |
sous-titre | chaîne | Facultatif Sous-titre descriptif du contenu. Le lecteur peut récupérer le titre indépendamment avec content_id ou le transmettre par l'expéditeur dans le message Load |
studio | chaîne | Facultatif Studio ayant publié le contenu Le lecteur peut récupérer de manière indépendante l'atelier à l'aide de content_id ou l'expéditeur peut le transmettre dans le message Load |
images | Image[] | Facultatif Tableau d'URL d'une image associée au contenu. L'expéditeur peut fournir la valeur initiale du champ dans le message Load (Charger). Tailles recommandées recommandées |
releaseDate (Date de sortie) | chaîne (ISO 8601) | Facultatif Date et heure ISO 8601 de ce contenu. Le lecteur peut récupérer le titre indépendamment avec content_id ou le transmettre par l'expéditeur dans le message Load |
TvShowMediaMetadata
Décrit un artefact multimédia d'épisode d'émission télévisée.
Nom | Type | Description |
---|---|---|
metadataType. | integer | 2 (la seule valeur) |
sérieTitre | chaîne | Facultatif Titre descriptif de la série télévisée. Le lecteur peut récupérer le titre indépendamment avec content_id ou le transmettre par l'expéditeur dans le message Load |
sous-titre | chaîne | Facultatif Sous-titre descriptif de l'épisode de série télévisée. Le lecteur peut récupérer le titre indépendamment avec content_id ou le transmettre par l'expéditeur dans le message Load |
saison | integer | Facultatif : numéro de saison de la série télévisée |
épisode | integer | Facultatif Numéro de l'épisode de la saison de la série télévisée. |
images | Image[] | Facultatif Tableau d'URL d'une image associée au contenu. L'expéditeur peut fournir la valeur initiale du champ dans le message Load (Charger). Tailles recommandées recommandées |
Date de diffusion | chaîne (ISO 8601) | Date de l'heure 8601 ISO 8601 facultative. Le lecteur peut récupérer la date de diffusion d'origine d'origine à l'aide de content_id ou l'expéditeur peut la transmettre dans le message Load |
MusicTrackMediaMetadata
Décrit un artefact multimédia lié à un titre musical.
Nom | Type | Description |
---|---|---|
metadataType. | integer | 3 (la seule valeur) |
albumName | chaîne | Facultatif Album ou collection à partir duquel ce titre est tiré. Le lecteur peut récupérer indépendamment le nom de l'album à l'aide de content_id ou le transmettre à l'expéditeur dans le message Load. |
title | chaîne | Facultatif : nom du titre (par exemple, le titre de la chanson). Le lecteur peut récupérer le titre indépendamment avec content_id ou le transmettre par l'expéditeur dans le message Load |
albumArtist | chaîne | facultatif : nom de l'artiste associé à l'album qui contient ce titre. Le lecteur peut récupérer l'album Artistist de manière indépendante à l'aide de content_id ou le transmettre à l'expéditeur dans le message Load. |
artiste | chaîne | Facultatif : nom de l'artiste associé au titre multimédia. Le lecteur peut récupérer l'artiste de manière indépendante avec content_id ou l'expéditeur peut lui donner via le message Load. |
composer | chaîne | facultatif : nom du compositeur associé à la piste multimédia. Le lecteur peut récupérer le compositeur de façon indépendante en utilisant content_id ou l'expéditeur peut lui donner via le message Load |
piste | integer | facultatif Numéro du titre de l'album |
discNumber | integer | Facultatif : nombre de volumes (par exemple, un disque) de l'album. |
images | Image[] | Facultatif Tableau d'URL d'une image associée au contenu. L'expéditeur peut fournir la valeur initiale du champ dans le message Load (Charger). Tailles recommandées recommandées |
releaseDate (Date de sortie) | chaîne (ISO 8601) | Facultatif Date et heure ISO 8601 de ce contenu. Le lecteur peut récupérer indépendamment la date de sortie à l'aide de content_id ou l'envoyer par l'expéditeur dans le message Load. |
Métadonnées PhotoMedia
Décrit un artefact de support photographique.
Nom | Type | Description |
---|---|---|
metadataType. | integer | 4 (la seule valeur) |
title | chaîne | Facultatif Titre de la photo. Le lecteur peut récupérer le titre indépendamment avec content_id ou le transmettre par l'expéditeur dans le message Load |
artiste | chaîne | Facultatif : nom du photographe. Le lecteur peut récupérer l'artiste de manière indépendante avec content_id ou l'expéditeur peut lui donner via le message Load. |
position | chaîne | Facultatif : lieu où la photo a été prise (par exemple, "Madrid, Espagne"). Le lecteur peut récupérer la position de manière indépendante à l'aide de content_id ou celle fournie par l'expéditeur dans le message Load (Charger). |
latitude | double | Facultatif Latitude du lieu où la photo a été prise. Le lecteur peut récupérer la latitude de manière indépendante avec content_id, ou celle-ci peut être fournie par l'expéditeur dans le message Load. |
longitude | double | Facultatif Valeur de longitude géographique du lieu où la photo a été prise. Le lecteur peut récupérer indépendamment la longitude à l'aide de content_id, ou l'expéditeur peut la transmettre dans le message Load. |
largeur | integer | Facultatif : largeur de la photo en pixels. Le lecteur peut récupérer indépendamment la largeur à l'aide de la valeur content_id ou celle fournie par l'expéditeur dans le message Load. |
hauteur | integer | Facultatif Hauteur de la photo en pixels. Le lecteur peut récupérer indépendamment la hauteur à l'aide de la valeur content_id ou celle fournie par l'expéditeur dans le message Load. |
creationDateTime. | chaîne (ISO 8601) | Facultatif Date et heure ISO 8601 de prise de vue. Le lecteur peut récupérer indépendamment la date de création à l'aide de content_id ou celle fournie par l'expéditeur dans le message Load. |
État du contenu multimédia
Décrit l'état actuel de l'artefact multimédia par rapport à la session.
Nom | Type | Description |
---|---|---|
mediaSessionId | integer | ID unique pour la lecture de cette session spécifique. Cet ID est défini par le récepteur à l'adresse LOAD et peut être utilisé pour identifier une instance spécifique d'une lecture. Par exemple, deux lectures de "Souhaitez-vous être ici" dans la même session ont chacune un paramètre sessionsessionId unique. |
media | MediaInformation | facultatif (pour les messages d'état) : description complète du contenu en cours de lecture. N'est renvoyé dans un message d'état que si MediaInformation a changé. |
playbackRate (Taux de lecture) | float | Indique si l'intervalle média est en cours et à quelle fréquence. Cet état est indépendant de l'état du lecteur, car la durée des contenus multimédias peut s'arrêter dans n'importe quel état. 1,0 correspond à une heure normale, 0,5 correspond à un ralenti. |
playerState | énumération (chaîne) | Décrit l'état du lecteur comme l'un des éléments suivants:
|
idleReason | énumération (chaîne) | Facultatif : si la valeur du champ "stateState" est "IDLE" et que la raison pour laquelle elle est devenue "IDLE" est connue, cette propriété est fournie. Si le lecteur est IDLE parce qu'il vient de démarrer, cette propriété ne sera pas fournie. Si le lecteur se trouve dans un autre état, cette propriété ne doit pas être fournie. Les valeurs suivantes s'appliquent:
|
currentTime. | double | Position actuelle du lecteur multimédia, en secondes, depuis le début du contenu. S'il s'agit d'un contenu diffusé en direct, ce champ représente la durée, en secondes, à partir du début de l'événement que le lecteur doit connaître. |
supportedMediaCommands | flags | Indicateurs décrivant les commandes multimédias compatibles avec le lecteur multimédia:
Les combinaisons correspondent à des sommes. Par exemple, Pause+Seek+StreamVolume+Mute == 15. |
volume | Volume | Volume du flux |
données personnalisées | objet | Facultatif blob de données spécifique à l'application défini par l'application réceptrice. |
Commandes de l'expéditeur au destinataire
Ces commandes permettent de contrôler le lecteur multimédia. Tous les objets customData dans les messages ci-dessous doivent être facultatifs (c'est-à-dire que le destinataire doit se dégrader correctement si les données ne sont pas transmises). Cela permettra aux applications de télécommande génériques de fonctionner correctement.
Charger
Charge le nouveau contenu dans le lecteur multimédia.
Nom | Type | Description |
---|---|---|
requestId | integer | ID de la requête, pour corréler requête et réponse |
type | chaîne | CHARGER(valeur uniquement) |
media | MediaInformation | Métadonnées (y compris contentId) du contenu multimédia à charger |
lecture automatique | booléen | facultatif(valeur par défaut : "true") si le paramètre de lecture automatique est spécifié, le lecteur multimédia commence à lire le contenu une fois celui-ci chargé. Même si la lecture automatique n'est pas spécifiée, l'implémentation du lecteur multimédia peut décider de lancer la lecture immédiatement. Si la lecture est lancée, l'état du lecteur dans la réponse doit être défini sur BUFFERING. Sinon, sur PAUSED. |
currentTime. | double | Facultatif secondes depuis le début du contenu. Si le contenu est en direct et que la position n'est pas spécifiée, la diffusion commencera à cette position |
données personnalisées | objet | Facultatif blob de données spécifique à l'application défini par l'application expéditeur. |
Réponse | Déclencheurs | Diffusions | Erreurs |
---|---|---|---|
Aucune | Modification de l'état du récepteur | Message concernant la modification de l'état d'un élément multimédia | État du lecteur non valide Échec du chargement Chargement annulé |
Pause
Suspend la lecture du contenu en cours. Déclenche une notification d'événement STATUS vers toutes les applications de l'expéditeur.
Nom | Type | Description |
---|---|---|
mediaSessionId | integer | ID de la session multimédia à mettre en veille |
requestId | integer | ID de la requête, à utiliser pour corréler requête/réponse |
type | chaîne | PAUSE(valeur seulement) |
données personnalisées | objet | Facultatif blob de données spécifique à l'application défini par l'application expéditeur. |
Réponse | Déclencheurs | Diffusions | Erreurs |
---|---|---|---|
Aucune | Modification de l'état du récepteur | Message concernant la modification de l'état d'un élément multimédia | État du lecteur non valide |
Recherche
Définit la position actuelle dans le flux. Déclenche une notification d'événement STATUS vers toutes les applications de l'expéditeur. Si la position fournie n'est pas comprise dans la plage de positions valides pour le contenu actuel, le joueur doit choisir une position valide aussi proche que possible de la position demandée.
Nom | Type | Description |
---|---|---|
mediaSessionId | integer | ID de la session multimédia dans laquelle la position du flux est définie |
requestId | integer | ID de la requête, pour corréler requête et réponse |
type | chaîne | SEEK (valeur unique) |
resumeState | énumération (chaîne) | Facultatif : si ce champ n'est pas défini, l'état de lecture ne change pas. Les valeurs suivantes s'appliquent :
|
currentTime. | double | Facultatif secondes depuis le début du contenu. Si le contenu est en direct et que la position n'est pas spécifiée, la diffusion commencera à cette position |
données personnalisées | objet | Facultatif blob de données spécifique à l'application défini par l'application expéditeur. |
Réponse | Déclencheurs | Diffusions | Erreurs |
---|---|---|---|
Aucune | Modification de l'état du récepteur | Message concernant la modification de l'état d'un élément multimédia | État du lecteur non valide |
Stop
Arrête la lecture du contenu en cours. Déclenche une notification d'événement STATUS vers toutes les applications de l'expéditeur. Après cette commande, le contenu ne sera plus chargé et l'ID mediaSessionId sera invalidé.
Nom | Type | Description |
---|---|---|
mediaSessionId | integer | ID de la session multimédia pour l'arrêt du contenu |
requestId | integer | ID de la requête, pour corréler requête et réponse |
type | chaîne | STOP (valeur uniquement) |
données personnalisées | objet | Facultatif blob de données spécifique à l'application défini par l'application expéditeur. |
Réponse | Déclencheurs | Diffusions | Erreurs |
---|---|---|---|
Aucune | Modification de l'état du récepteur | Message concernant la modification de l'état d'un élément multimédia | État du lecteur non valide |
Lire
Lance la lecture du contenu chargé avec l'appel de chargement. La lecture se poursuit à partir de la position actuelle.
Nom | Type | Description |
---|---|---|
mediaSessionId | integer | ID de la session multimédia pour la lecture du contenu |
requestId | integer | ID de la requête, pour corréler requête et réponse |
type | chaîne | PLAY(valeur seulement) |
données personnalisées | objet | Facultatif blob de données spécifique à l'application défini par l'application expéditeur. |
Réponse | Déclencheurs | Diffusions | Erreurs |
---|---|---|---|
Aucune | Modification de l'état du récepteur | Message concernant la modification de l'état d'un élément multimédia | État du lecteur non valide |
Obtenir l'état
Récupère l'état du contenu multimédia.
Nom | Type | Description |
---|---|---|
mediaSessionId | integer | Facultatif ID de la session multimédia pour laquelle l'état du contenu multimédia doit être renvoyé. Si aucun ID de session multimédia n'est indiqué, l'état est fourni. |
requestId | integer | ID de la requête, pour corréler requête et réponse |
type | chaîne | GET_STATUS(valeur seulement) |
données personnalisées | objet | Facultatif blob de données spécifique à l'application défini par l'application expéditeur. |
Réponse | Déclencheurs | Diffusions | Erreurs |
---|---|---|---|
MediaStatus à l'expéditeur de la demande | Aucune | Aucune | Aucune |
Régler le volume
Définit le volume du flux multimédia. Utilisé pour les effets de fondu sur le flux multimédia. (Remarque : Le volume du récepteur est modifié à l'aide de l'expéditeur Web setVolume.) Il ne doit pas être utilisé conjointement avec le curseur de volume ou les boutons de volume pour contrôler le volume de l'appareil. Une modification du volume de flux ne déclenchera aucune interface utilisateur sur le récepteur.
Nom | Type | Description |
---|---|---|
mediaSessionId | integer | ID de session multimédia du média pour lequel le volume du flux est modifié |
requestId | integer | ID de la requête, pour corréler requête et réponse |
type | chaîne | VOLUME(valeur seulement) |
volume | Volume | Volume du flux |
données personnalisées | objet | Facultatif blob de données spécifique à l'application défini par l'application expéditeur. |
Réponse | Déclencheurs | Diffusions | Erreurs |
---|---|---|---|
Aucune | Modification de l'état du récepteur | Message concernant la modification de l'état d'un élément multimédia | État du lecteur non valide |
Messages envoyés au destinataire à l'expéditeur
Le destinataire envoie deux types de messages:
- Erreurs: messages Unicast envoyés en cas de réponse à une requête d'expéditeur.
- État: diffuse des messages.
- Conséquences d'une action lancée par l'expéditeur. Contient l'ID de la demande ayant entraîné la modification.
- Spontané, par exemple, suite à une modification déclenchée par l'application réceptrice. L'ID de la demande sera 0.
Erreur: État du lecteur non valide
Envoyé lorsque la requête de l'expéditeur ne peut pas être traitée, car le lecteur n'est pas dans un état valide. Par exemple, si l'application n'a pas encore créé d'élément multimédia.
Nom | Type | Description |
---|---|---|
requestId | integer | ID de la requête qui a généré cette erreur |
type | chaîne | INVALID_PLAYER_STATE (seule valeur) |
données personnalisées | objet | Facultatif blob de données spécifique à l'application défini par l'application réceptrice. |
Erreur: Échec du chargement
Envoyé lorsque la requête de chargement a échoué. Le lecteur sera associé à l'état IDLE.
Nom | Type | Description |
---|---|---|
requestId | integer | ID de la requête qui a généré cette erreur |
type | chaîne | LOAD_FAILED (valeur unique) |
données personnalisées | objet | Facultatif blob de données spécifique à l'application défini par l'application réceptrice. |
Erreur: Chargement annulé
Envoyé lorsque la requête de chargement a été annulée (une deuxième requête de chargement a été reçue).
Nom | Type | Description |
---|---|---|
requestId | integer | ID de la requête qui a généré cette erreur |
type | chaîne | LOAD_CANCELLED (valeur unique) |
données personnalisées | objet | Facultatif blob de données spécifique à l'application défini par l'application réceptrice. |
Erreur: Requête non valide
Envoyé lorsque la requête n'est pas valide (type de requête inconnu, par exemple).
Nom | Type | Description |
---|---|---|
requestId | integer | ID de la requête qui a généré cette erreur |
type | chaîne | INVALID_REQUEST (valeur seulement) |
raison | Énumération (chaîne) | Valeurs :
|
données personnalisées | objet | Facultatif blob de données spécifique à l'application défini par l'application réceptrice. |
État du contenu multimédia
Envoyé après un changement d'état ou une demande d'état d'un contenu multimédia Seuls les objets MediaStatus qui ont été modifiés ou demandés sont envoyés.
Nom | Type | Description |
---|---|---|
requestId | integer | ID utilisé pour mettre en corrélation cette réponse d'état avec la requête qui l'a envoyée, ou 0 si le message d'état est spontané (non déclenché par une requête d'expéditeur). Les applications émetteurs génèrent des ID de requête uniques en sélectionnant un nombre aléatoire et en l'augmentant (ils n'utilisent pas la valeur 0). |
type | chaîne | MEDIA_STATUS (valeur unique) |
état | MediaStatus[] | Tableau d'objets Media Status. REMARQUE: L'élément multimédia de MediaStatus n'est renvoyé que s'il a changé. |
données personnalisées | objet | Facultatif blob de données spécifique à l'application défini par l'application réceptrice. |