Mensajes de reproducción de contenido multimedia

Las aplicaciones emisoras de Google Cast controlan la reproducción en el dispositivo receptor mediante el envío de mensajes en formato JSON a la aplicación receptora. Del mismo modo, el receptor envía mensajes de vuelta al remitente, también en JSON. Los mensajes pueden ser comandos del emisor que cambian el estado del reproductor, respuestas a esos comandos del receptor o estructuras de datos que describen el contenido multimedia de la aplicación receptora.

De acuerdo con las Condiciones del Servicio Adicionales para Desarrolladores del SDK de Google Cast, una aplicación de transmisión de contenido multimedia debe usar estos mensajes como se define aquí para controlar la reproducción de contenido multimedia en la app receptora. Esto proporciona a la app de música una experiencia del usuario coherente en todas las plataformas y garantiza que una aplicación de Cast admitirá casos de uso nuevos y futuros. Estas estructuras también admiten datos personalizados, cuando corresponde, y una aplicación puede definir sus propios mensajes para comandos que no son compatibles con el SDK.

El espacio de nombres para los mensajes de reproducción de contenido multimedia se define como urn:x-cast:com.google.cast.media.

Nota: Los mensajes y las estructuras de esta especificación tienen un tamaño máximo implícito determinado por el tamaño máximo de un mensaje de transporte; no hay límite para los campos individuales. Actualmente, el tamaño máximo del mensaje de transporte es de 64 KBytes.

Estructuras de datos comunes de espacios de nombres

Un superconjunto de estructuras de datos que usan todos los artefactos de espacios de nombres multimedia se define en un espacio de nombres común.

Imagen

Esta es la descripción de una imagen, que incluye una pequeña cantidad de metadatos para permitir que la aplicación emisora pueda elegir las imágenes en función de cómo las renderizará.

El alto y el ancho son opcionales para un solo elemento del array de imágenes. Por ejemplo, si se muestra un solo artículo, son opcionales. Si hay dos artículos devueltos, un elemento debe especificar la altura y el ancho, pero el remitente puede optar por la opción “predeterminada” si no le gusta la que se pasó con parámetros específicos.

Nombre Tipo Descripción
url URI URI de la imagen
altura integer Opcional Altura de la imagen
ancho integer Opcional Ancho de la imagen

Volumen

Es el volumen de transmisión multimedia. Se usa para efectos de atenuación de entrada/salida en la transmisión multimedia. (Nota: El volumen del sistema se cambia con las APIs de remitente). El volumen de transmisión no debe usarse junto con el control deslizante o los botones de volumen para controlar el volumen del dispositivo. Se debe pasar al menos uno de los siguientes parámetros para cambiar el volumen de transmisión.

Nombre Tipo Descripción
nivel doble Opcional Nivel actual del volumen de transmisión como un valor entre 0.0 y 1.0, donde 1.0 es el volumen máximo.
silenciado boolean Opcional Indica si el dispositivo de transmisión está silenciado, independientemente del nivel de volumen.

Estructuras de datos del espacio de nombres de medios

Estos mensajes describen el estado del reproductor multimedia. El espacio de nombres es urn:x-cast:com.google.cast.media.

MediaInformation

Esta estructura de datos describe una transmisión de medios.

Nombre Tipo Descripción
contentId cadena Es el identificador específico del servicio del contenido que carga el reproductor multimedia. Esta es una cadena de formato libre y es específica de la aplicación. En la mayoría de los casos, será la URL al contenido multimedia, pero el remitente puede elegir pasar una cadena que el receptor pueda interpretar correctamente. Longitud máxima: 1,000
streamType enum
(string)

Describe el tipo de artefacto multimedia como una de las siguientes opciones:

  • NINGUNO
  • BÚFER
  • EN VIVO
contentType cadena Tipo de contenido MIME del contenido multimedia que se reproduce
metadata objeto

Opcional El objeto de metadatos multimedia, uno de los siguientes:

duración doble Opcional Duración de la transmisión que se está reproduciendo en segundos
customData objeto Opcional  BLOB de datos específico de la aplicación definido por la aplicación emisora o la aplicación receptora

GenericMediaMetadata

Describe un artefacto multimedia genérico.

Nombre Tipo Descripción
metadataType integer 0  (el único valor)
title cadena Opcional Es el título descriptivo del contenido. El reproductor puede recuperar el título de forma independiente con content_id o se lo puede proporcionar el remitente en el mensaje Load.
subtítulo cadena Opcional : Subtítulo descriptivo del contenido. El reproductor puede recuperar el título de forma independiente con content_id o se lo puede proporcionar el remitente en el mensaje Load.
imágenes Imagen Opcional Es el array de las URLs que dirigen a una imagen asociada con el contenido. El remitente puede proporcionar el valor inicial del campo en el mensaje Load. Deben proporcionar los tamaños recomendados.
releaseDate string (ISO 8601) Fecha y hora en que se lanzó el contenido en formato ISO 8601 opcional . El reproductor puede recuperar el título de forma independiente con content_id o se lo puede proporcionar el remitente en el mensaje Load.

MovieMediaMetadata

Describe un artefacto multimedia de una película.

Nombre Tipo Descripción
metadataType integer 1  (el único valor)
title cadena Opcional Es el título descriptivo del contenido. El reproductor puede recuperar el título de forma independiente con content_id o se lo puede proporcionar el remitente en el mensaje Load.
subtítulo cadena Opcional : Subtítulo descriptivo del contenido. El reproductor puede recuperar el título de forma independiente con content_id o se lo puede proporcionar el remitente en el mensaje Load.
Studio cadena opcional  Studio que lanzó el contenido. El reproductor puede recuperar Studio de forma independiente con content_id o se lo puede proporcionar el remitente en el mensaje Load.
imágenes Imagen Opcional Es el array de las URLs que dirigen a una imagen asociada con el contenido. El remitente puede proporcionar el valor inicial del campo en el mensaje Load. Deben proporcionar los tamaños recomendados.
releaseDate string (ISO 8601) Fecha y hora en que se lanzó el contenido en formato ISO 8601 opcional . El reproductor puede recuperar el título de forma independiente con content_id o se lo puede proporcionar el remitente en el mensaje Load.

TvShowMediaMetadata

Describe un artefacto multimedia de un episodio de un programa de televisión.

Nombre Tipo Descripción
metadataType integer 2  (el único valor)
seriesTitle cadena Opcional Título descriptivo de la serie de TV El reproductor puede recuperar el título de forma independiente con content_id o se lo puede proporcionar el remitente en el mensaje Load.
subtítulo cadena Opcional Subtítulo descriptivo del episodio de TV El reproductor puede recuperar el título de forma independiente con content_id o se lo puede proporcionar el remitente en el mensaje Load.
temporada integer Opcional Número de temporada del programa de TV
episodio integer opcional el número de episodio (en la temporada) del programa de TV.
imágenes Imagen Opcional Es el array de las URLs que dirigen a una imagen asociada con el contenido. El remitente puede proporcionar el valor inicial del campo en el mensaje Load. Deben proporcionar los tamaños recomendados.
originalAirDate string (ISO 8601) Es la fecha y hora en la que se publicó este episodio opcional . El reproductor puede recuperar originalAirDate de forma independiente con content_id o se lo puede proporcionar el remitente en el mensaje Load

MusicTrackMediaMetadata

Describe un artefacto multimedia de pista de música.

Nombre Tipo Descripción
metadataType integer 3  (el único valor)
albumName cadena Opcional Es el álbum o la colección desde el que se extrajo esta pista. El reproductor puede recuperar independientemente el nombre del álbum utilizando content_id o se lo puede proporcionar el remitente en el mensaje Load.
title cadena Opcional Es el nombre de la pista (por ejemplo, el título de la canción). El reproductor puede recuperar el título de forma independiente con content_id o se lo puede proporcionar el remitente en el mensaje Load.
albumArtist cadena Opcional Es el nombre del artista asociado con el álbum que incluye esta pista. El reproductor puede recuperar albumArtist de forma independiente con content_id o se lo puede proporcionar el remitente en el mensaje Load.
artista cadena Opcional Es el nombre del artista asociado con la pista multimedia. El reproductor puede recuperar el artista de forma independiente con content_id o se lo puede proporcionar el remitente en el mensaje Load.
composer cadena Opcional Es el nombre del compositor asociado con la pista multimedia. El reproductor puede recuperar de forma independiente el compositor con content_id o se lo puede proporcionar el remitente en el mensaje Load
trackNumber integer opcional número de la pista del álbum.
discNumber integer Opcional Es el número del volumen (por ejemplo, un disco) del álbum.
imágenes Imagen Opcional Es el array de las URLs que dirigen a una imagen asociada con el contenido. El remitente puede proporcionar el valor inicial del campo en el mensaje Load. Deben proporcionar los tamaños recomendados.
releaseDate string (ISO 8601) Fecha y hora en que se lanzó el contenido en formato ISO 8601 opcional . El reproductor puede recuperar la fecha de lanzamiento de forma independiente con content_id o la puede proporcionar el remitente en el mensaje Load.

PhotoMediaMetadata

Describe un artefacto de medios fotográficos.

Nombre Tipo Descripción
metadataType integer 4  (el único valor)
title cadena opcional Es el título de la fotografía. El reproductor puede recuperar el título de forma independiente con content_id o se lo puede proporcionar el remitente en el mensaje Load.
artista cadena optional Es el nombre del fotógrafo. El reproductor puede recuperar el artista de forma independiente con content_id o se lo puede proporcionar el remitente en el mensaje Load.
ubicación cadena Opcional : La ubicación verbal donde se tomó la fotografía; por ejemplo, "Madrid, España". El reproductor puede recuperar la ubicación de forma independiente con content_id o se la puede proporcionar el remitente en el mensaje Load.
latitude doble Opcional Es el valor de latitud geográfico de la ubicación donde se tomó la fotografía. El reproductor puede recuperar la latitud de forma independiente con content_id o se la puede proporcionar el remitente en el mensaje Load.
longitude doble Opcional Es el valor de longitud geográfica de la ubicación donde se tomó la fotografía. El reproductor puede recuperar la longitud de forma independiente con content_id o se la puede proporcionar el remitente en el mensaje Load.
ancho integer opcional Es el ancho en píxeles de la fotografía. El reproductor puede recuperar el ancho de forma independiente con content_id o se lo puede proporcionar el remitente en el mensaje Load.
altura integer Opcional Es la altura en píxeles de la fotografía. El reproductor puede recuperar la altura de forma independiente con content_id o se la puede proporcionar el remitente en el mensaje Load.
creationDateTime string (ISO 8601) Fecha y hora en que se tomó la foto en formato ISO 8601 opcional . El reproductor puede recuperar createDateTime de forma independiente con content_id o se lo puede proporcionar el remitente en el mensaje Load

MediaStatus

Describe el estado actual del artefacto multimedia con respecto a la sesión.

Nombre Tipo Descripción
mediaSessionId integer Es el ID único de la reproducción de esta sesión específica. El receptor establece este ID en LOAD y puede usarse para identificar una instancia específica de una reproducción. Por ejemplo, dos reproducciones de "Wish you are here" (deseamos que estuvieras aquí) dentro de la misma sesión tendrían cada una un mediaSessionId único.
media MediaInformation Opcional (para los mensajes de estado) Es la descripción completa del contenido que se reproduce. Solo se devuelve en los mensajes de estado si la MediaInformation cambió.
playbackRate float Indica si el tiempo multimedia está progresando y a qué velocidad. Esto es independiente del estado del reproductor, ya que el tiempo multimedia puede detenerse en cualquier estado. 1.0 es tiempo normal, 0.5 es cámara lenta
playerState enum (cadena)

Describe el estado del reproductor de la siguiente manera:

  • IDLE  Aún no se cargó el reproductor.
  • PLAYING  El jugador está reproduciendo contenido de forma activa.
  • BUFFERING  El reproductor está en modo PLAY, pero no reproduce contenido de forma activa (currentTime no cambia).
  • PAUSA  Se pausó el reproductor.
idleReason enum (cadena)

Opcional Si playerState es IDLE y se conoce el motivo por el que se convirtió en IDLE, se proporciona esta propiedad. Si el reproductor está inactivo porque recién se inició, no se proporcionará esta propiedad. Si el reproductor se encuentra en otro estado, no se debe proporcionar esta propiedad. Se aplican los siguientes valores:

  • CANCELLED  Un remitente solicitó detener la reproducción con el comando DETENER.
  • INTERRUPCIÓN  Un remitente solicitó que se reproduzca otro contenido multimedia mediante el comando LOAD.
  • FINALIZADO  Se completó la reproducción del contenido multimedia.
  • ERROR  El contenido multimedia se interrumpió debido a un error (por ejemplo, si el reproductor no pudo descargarlo debido a problemas de red).
currentTime doble Es la posición actual del reproductor multimedia desde el comienzo del contenido, en segundos. Si se trata de una transmisión en vivo, este campo representa el tiempo en segundos desde el comienzo del evento que el jugador debe conocer.
supportedMediaCommands flags

Marcas que describen los comandos multimedia compatibles con el reproductor multimedia:

  • 1  Pausa
  • 2  Buscar
  • 4  Volumen de transmisión
  • 8  Silenciar transmisión
  • 16  Avanzar
  • 32  Saltar hacia atrás

Las combinaciones se describen como sumas; por ejemplo, Pausar+Buscar+Volumen+Silenciar == 15.

volumen Volume Volumen de transmisión
customData objeto Opcional  BLOB de datos específico de la aplicación definido por la aplicación receptora

Comandos del remitente al receptor

Estos comandos controlan el reproductor multimedia. Todos los objetos customData de los mensajes que aparecen a continuación deben ser opcionales (es decir, el receptor debe degradarse correctamente si no se pasan los datos). Esto permitirá que las apps de control remoto genérico funcionen correctamente.

Cargar

Carga contenido nuevo en el reproductor multimedia.

Nombre Tipo Descripción
requestId integer ID de la solicitud para correlacionar la solicitud y la respuesta
tipo cadena CARGAR (solo valor)
media MediaInformation Metadatos (incluido contentId) del contenido multimedia que se cargará
reproducción automática boolean

Opcional (el valor predeterminado es verdadero). Si se especifica el parámetro de reproducción automática, el reproductor multimedia comenzará a reproducir el contenido cuando se cargue. Aun cuando no se especifique la reproducción automática, la implementación del reproductor multimedia puede optar por comenzar la reproducción de inmediato. Si se inicia la reproducción, el estado del reproductor en la respuesta debe establecerse en BUFFERING; de lo contrario, debe establecerse en PAUSA.

currentTime doble Opcional segundos desde el comienzo del contenido. Si el contenido es contenido en vivo y no se especifica la posición, la transmisión comenzará en esa posición
customData objeto Opcional  BLOB de datos específico de la aplicación definido por la aplicación emisora
Respuesta Activadores Transmisiones Errores
Ninguna Cambio de estado del receptor Un mensaje de cambio de estado de los medios Estado no válido del reproductor
Error de carga
Carga cancelada

Pausar

Pausa la reproducción del contenido actual. Activa una notificación de evento STATUS para todas las aplicaciones remitentes.

Nombre Tipo Descripción
mediaSessionId integer ID de la sesión multimedia que se pausará
requestId integer ID de la solicitud, que se usa para correlacionar la solicitud o la respuesta
tipo cadena PAUSA (solo valor)
customData objeto Opcional  BLOB de datos específico de la aplicación definido por la aplicación emisora
Respuesta Activadores Transmisiones Errores
Ninguna Cambio de estado del receptor Un mensaje de cambio de estado de los medios Estado del reproductor no válido

Seek

Establece la posición actual en la transmisión. Activa una notificación de evento STATUS para todas las aplicaciones remitentes. Si la posición proporcionada está fuera del rango de posiciones válidas para el contenido actual, el reproductor debe elegir una posición válida que se encuentre lo más cerca posible de la posición solicitada.

Nombre Tipo Descripción
mediaSessionId integer ID de la sesión multimedia en la que se establece la posición de la transmisión
requestId integer ID de la solicitud para correlacionar la solicitud y la respuesta
tipo cadena BÚSQUEDA (solo valor)
resumeState enum (cadena)

Opcional Si no la estableces, el estado de reproducción no cambiará. Se aplican los siguientes valores:

  • PLAYBACK_START  Fuerza el inicio del contenido multimedia.
  • PLAYBACK_PAUSE  Fuerza la detención del contenido multimedia.
currentTime doble Opcional segundos desde el comienzo del contenido. Si el contenido es contenido en vivo y no se especifica la posición, la transmisión comenzará en esa posición
customData objeto Opcional  BLOB de datos específico de la aplicación definido por la aplicación emisora
Respuesta Activadores Transmisiones Errores
Ninguna Cambio de estado del receptor Un mensaje de cambio de estado de los medios Estado del reproductor no válido

Detener

Detiene la reproducción del contenido actual. Activa una notificación de evento STATUS para todas las aplicaciones remitentes. Después de usar este comando, el contenido ya no se cargará y se invalidará el mediaSessionId.

Nombre Tipo Descripción
mediaSessionId integer ID de la sesión multimedia para que se detenga el contenido
requestId integer ID de la solicitud para correlacionar la solicitud y la respuesta
tipo cadena DETENER (solo valor)
customData objeto Opcional  BLOB de datos específico de la aplicación definido por la aplicación emisora
Respuesta Activadores Transmisiones Errores
Ninguna Cambio de estado del receptor Un mensaje de cambio de estado de los medios Estado del reproductor no válido

Juega

Inicia la reproducción del contenido que se cargó con la llamada de carga; la reproducción continúa desde la posición de la hora actual.

Nombre Tipo Descripción
mediaSessionId integer ID de la sesión multimedia para el contenido que se reproducirá
requestId integer ID de la solicitud para correlacionar la solicitud y la respuesta
tipo cadena PLAY (solo valor)
customData objeto Opcional  BLOB de datos específico de la aplicación definido por la aplicación emisora
Respuesta Activadores Transmisiones Errores
Ninguna Cambio de estado del receptor Un mensaje de cambio de estado de los medios Estado del reproductor no válido

Obtener estado

Recupera el estado del contenido multimedia.

Nombre Tipo Descripción
mediaSessionId integer Opcional Es el ID de sesión multimedia del contenido multimedia para el que se debe mostrar el estado del contenido multimedia. Si no se proporciona ninguno, se mostrará el estado de todos los IDs de sesión multimedia.
requestId integer ID de la solicitud para correlacionar la solicitud y la respuesta
tipo cadena GET_STATUS (solo valor)
customData objeto Opcional  BLOB de datos específico de la aplicación definido por la aplicación emisora
Respuesta Activadores Transmisiones Errores
MediaStatus para el remitente que lo solicitó. Ninguna Ninguna Ninguna

SetVolume

Establece el volumen de transmisión multimedia. Se usa para efectos de atenuación de entrada/salida en la transmisión multimedia. (Nota: El volumen del receptor se cambia con el remitente web setVolume). El volumen de transmisión no debe usarse junto con el control deslizante o los botones de volumen para controlar el volumen del dispositivo. Un cambio en el volumen de transmisión no activará ninguna IU en el receptor.

Nombre Tipo Descripción
mediaSessionId integer Es el ID de sesión multimedia del contenido multimedia para el que se cambia el volumen de transmisión.
requestId integer ID de la solicitud para correlacionar la solicitud y la respuesta
tipo cadena VOLUME (solo valor)
volumen Volume Volumen de transmisión
customData objeto Opcional  BLOB de datos específico de la aplicación definido por la aplicación emisora
Respuesta Activadores Transmisiones Errores
Ninguna Cambio de estado del receptor Un mensaje de cambio de estado de los medios Estado del reproductor no válido

Mensajes del destinatario al remitente

El receptor envía dos tipos de mensajes:

  • Errores: Mensajes unicast enviados cuando hay una respuesta de error a una solicitud del remitente.
  • Estado: Mensajes de transmisión.
    • Consecuencia de una acción iniciada por el remitente. Contiene el requestId de la solicitud que causó el cambio.
    • Espontáneo: Por ejemplo, debido a un cambio activado por la aplicación receptora. El RequestId será 0.

Error: Estado del reproductor no válido

Se envía cuando no se puede completar la solicitud del remitente porque el reproductor no está en un estado válido. Por ejemplo, si la aplicación aún no creó un elemento multimedia.

Nombre Tipo Descripción
requestId integer ID de la solicitud que generó este error
tipo cadena INVALID_PLAYER_STATE (solo valor)
customData objeto Opcional  BLOB de datos específico de la aplicación definido por la aplicación receptora

Error: Se produjo un error durante la carga.

Se envía cuando la solicitud de carga falla. El estado del reproductor será INACTIVO.

Nombre Tipo Descripción
requestId integer ID de la solicitud que generó este error
tipo cadena LOAD_FAILED (solo valor)
customData objeto Opcional  BLOB de datos específico de la aplicación definido por la aplicación receptora

Error: Se canceló la carga

Se envía cuando se cancela la solicitud de carga (se recibe una segunda solicitud de carga).

Nombre Tipo Descripción
requestId integer ID de la solicitud que generó este error
tipo cadena LOAD_CANCELLED (solo valor)
customData objeto Opcional  BLOB de datos específico de la aplicación definido por la aplicación receptora

Error: Solicitud no válida

Se envía cuando la solicitud no es válida (por ejemplo, un tipo de solicitud desconocido).

Nombre Tipo Descripción
requestId integer ID de la solicitud que generó este error
tipo cadena INVALID_REQUEST (solo valor)
motivo Enum (cadena)

Valores:

  • INVALID_COMMAND  No se admite el comando.
  • DUPLICATE_REQUESTID  El ID de solicitud no es único (el receptor está procesando una solicitud con el mismo ID)
customData objeto Opcional  BLOB de datos específico de la aplicación definido por la aplicación receptora

Estado del contenido multimedia

Se envía después de un cambio de estado o después de una solicitud de estado de contenido multimedia. Solo se enviarán los objetos MediaStatus que cambiaron o se solicitaron.

Nombre Tipo Descripción
requestId integer Es el ID que se usa para correlacionar esta respuesta de estado con la solicitud que la originó, o 0 si el mensaje de estado es espontáneo (no activado por una solicitud del remitente). Las aplicaciones emisoras generarán IDs de solicitud únicos mediante la selección de un número al azar y su aumento continua (no usarán 0).
tipo cadena MEDIA_STATUS (solo valor)
estado MediaStatus Es el array de objetos de estado de contenido multimedia. NOTA: El elemento multimedia en MediaStatus solo se mostrará si ha cambiado.
customData objeto Opcional  BLOB de datos específico de la aplicación definido por la aplicación receptora