Messages de lecture de contenus multimédias

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:

  • AUCUN
  • BOUTON
  • EN DIRECT
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:

  • IDLE Le lecteur n'a pas encore été chargé
  • LECTURE Le lecteur lit activement le contenu.
  • BUFFERING Le lecteur est en mode LECTURE, mais ne lit pas activement de contenu (l'heure actuelle ne change pas).
  • PAUSED Le lecteur est mis en pause
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:

  • ANNULÉE : un expéditeur a demandé l'arrêt de la lecture à l'aide de la commande STOP.
  • INTERRUPTED : un expéditeur a demandé à lire un autre contenu multimédia à l'aide de la commande LOAD.
  • FINISHED La lecture du contenu multimédia est terminée
  • ERROR : le support a été interrompu en raison d'une erreur (par exemple, si le lecteur ne parvient pas à le télécharger en raison de problèmes de réseau).
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:

  • 1 Mettre en pause
  • 2 Recherche
  • 4 Volume du flux
  • 8 Couper le son du flux
  • 16 Passer à un autre titre
  • 32 Revenir en arrière

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 :

  • PLAYBACK_START Force le démarrage des contenus multimédias
  • PLAYBACK_PAUSE : force la mise en pause du contenu multimédia
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 :

  • INVALID_COMMAND : la commande n'est pas compatible.
  • DUPLICATE_REQUESTID L'ID de requête n'est pas unique (le destinataire traite une demande avec le même ID).
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.