Mensajes de reproducción de contenido multimedia

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

De acuerdo con las Condiciones del Servicio adicionales del SDK de Google Cast, una aplicación de contenido multimedia de Cast debe usar estos mensajes como se define aquí para controlar la reproducción de contenido multimedia en el receptor. Esto le brinda a la app de música una experiencia del usuario coherente en todas las plataformas y garantiza que una aplicación de Cast admita casos prácticos nuevos y futuros. Estas estructuras también admiten datos personalizados, cuando corresponda, y una aplicación puede definir sus propios mensajes para comandos que el SDK no admite.

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 en 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. El tamaño máximo actual de los mensajes de transporte es de 64 KBytes.

Estructuras de datos comunes del espacio de nombres

Un superconjunto de estructuras de datos que usan todos los artefactos del espacio de nombres de medios 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 elija una imagen, dependiendo de cómo las procesará.

La altura y el ancho son opcionales en un solo elemento de un array de imágenes. Por ejemplo, si se muestra un solo elemento, son opcionales. Si se muestran dos elementos, un elemento debe especificar una altura y un ancho, pero el remitente puede elegir 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

El volumen de transmisión multimedia. Se usa para los efectos de fundido de entrada/salida en la transmisión multimedia. (Nota: El volumen del sistema se cambia con las API del remitente). El volumen de transmisión no se debe usar junto con el control deslizante ni 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 la transmisión.

Nombre Tipo Descripción
nivel double Opcional: Indica el nivel de volumen de la transmisión actual 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.

Información de medios

Esta estructura de datos describe una transmisión multimedia.

Nombre Tipo Descripción
contentId [ID de contenido] string Identificador específico del servicio del contenido que el reproductor multimedia carga actualmente. Es una string de formato libre específica para la aplicación. En la mayoría de los casos, es la URL del contenido multimedia, pero el remitente puede pasar una string que el receptor puede interpretar correctamente. Longitud máxima: 1,000
StreamType enumeración
(string)

Describe el tipo de artefacto multimedia como uno de los siguientes:

  • NINGUNO
  • BUFFERED
  • EN VIVO
tipodecontenido string Tipo de contenido MIME del contenido multimedia que se está reproduciendo
metadata objeto

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

duración double Opcional Duración de la transmisión de reproducción actual en segundos
datospersonalizados objeto Opcional: BLOB de datos específicos de la aplicación definidos por la aplicación emisora o la aplicación receptora

Metadatos de medios genéricos

Describe un artefacto multimedia genérico.

Nombre Tipo Descripción
metadataType. integer 0 (el único valor)
title string Opcional: Es el título descriptivo del contenido. El reproductor puede recuperar el título de forma independiente mediante content_id o lo puede proporcionar el remitente en el mensaje Load.
subtítulo string Opcional: Es el subtítulo descriptivo del contenido. El reproductor puede recuperar el título de forma independiente mediante content_id o lo puede proporcionar el remitente en el mensaje Load.
imágenes Imagen Opcional: Es el array de URL de una imagen asociada con el contenido. El remitente puede proporcionar el valor inicial del campo en el mensaje Load. Debe proporcionar los tamaños recomendados
releaseDate string (ISO 8601) Opcional Fecha y hora ISO 8601 para la fecha de lanzamiento de este contenido. El reproductor puede recuperar el título de forma independiente mediante content_id o lo puede proporcionar el remitente en el mensaje Load.

Metadatos de películas

Describe un artefacto multimedia de película.

Nombre Tipo Descripción
metadataType. integer 1 (el único valor)
title string Opcional: Es el título descriptivo del contenido. El reproductor puede recuperar el título de forma independiente mediante content_id o lo puede proporcionar el remitente en el mensaje Load.
subtítulo string Opcional: Es el subtítulo descriptivo del contenido. El reproductor puede recuperar el título de forma independiente mediante content_id o lo puede proporcionar el remitente en el mensaje Load.
Studio string Opcional: Studio que lanzó el contenido. El reproductor puede recuperar Studio de forma independiente mediante content_id, o lo puede proporcionar el remitente en el mensaje Load.
imágenes Imagen Opcional: Es el array de URL de una imagen asociada con el contenido. El remitente puede proporcionar el valor inicial del campo en el mensaje Load. Debe proporcionar los tamaños recomendados
releaseDate string (ISO 8601) Opcional Fecha y hora ISO 8601 para la fecha de lanzamiento de este contenido. El reproductor puede recuperar el título de forma independiente mediante content_id o lo puede proporcionar el remitente en el mensaje Load.

TvShowMediaMetadata

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

Nombre Tipo Descripción
metadataType. integer 2  (el único valor)
serieTitle string Opcional: Título descriptivo de la serie de televisión. El reproductor puede recuperar el título de forma independiente mediante content_id o lo puede proporcionar el remitente en el mensaje Load.
subtítulo string Opcional: Es el subtítulo descriptivo del episodio .v. El reproductor puede recuperar el título de forma independiente mediante content_id o lo puede proporcionar el remitente en el mensaje Load.
temporada integer Opcional: número de temporada del programa de TV.
episodio integer Opcional: Número de episodio (en la temporada) del programa de TV.
imágenes Imagen Opcional: Es el array de URL de una imagen asociada con el contenido. El remitente puede proporcionar el valor inicial del campo en el mensaje Load. Debe proporcionar los tamaños recomendados
OriginalAirDate. string (ISO 8601) Opcional: Indica la fecha y hora de la emisión de este episodio en formato ISO 8601. El reproductor puede recuperar de forma independiente el parámetro AirAir mediante content_id, o lo puede proporcionar el remitente en el mensaje Load

Metadatos de MusicTrack

Describe un artefacto multimedia de pistas de música.

Nombre Tipo Descripción
metadataType. integer 3 (el único valor)
nombredelálbum string Opcional: Álbum o colección de los que se extrae esta pista El reproductor puede recuperar el álbum albumName de manera independiente con el valor content_id o lo puede proporcionar el remitente en el mensaje Load.
title string Opcional: Nombre de la pista (por ejemplo, título de la canción). El reproductor puede recuperar el título de forma independiente mediante content_id o lo puede proporcionar el remitente en el mensaje Load.
álbumArtista string Opcional: Nombre del artista asociado con el álbum en el que aparece la pista. El reproductor puede recuperar el álbum artist mediante content_id, o lo puede proporcionar el remitente en el mensaje Load.
artista string Opcional: Es el nombre del artista asociado con la pista multimedia. El reproductor puede recuperar el artista de forma independiente mediante content_id, o lo puede proporcionar el remitente en el mensaje Load.
composer string Opcional: Indica el nombre del compositor asociado con la pista multimedia. El reproductor puede recuperar el compositor de forma independiente mediante content_id, o lo puede proporcionar el remitente en el mensaje Load.
Númerodeseguimiento integer Opcional: Número de pista del álbum.
discNumber integer Opcional: Número del volumen (por ejemplo, un disco) del álbum
imágenes Imagen Opcional: Es el array de URL de una imagen asociada con el contenido. El remitente puede proporcionar el valor inicial del campo en el mensaje Load. Debe proporcionar los tamaños recomendados
releaseDate string (ISO 8601) Opcional Fecha y hora ISO 8601 para la fecha de lanzamiento de este contenido. El reproductor puede recuperar independiente de dateDate mediante content_id o puede proporcionarlo el remitente en el mensaje Load.

Metadatos de fotos

Describe un artefacto multimedia de fotos.

Nombre Tipo Descripción
metadataType. integer 4  (el único valor)
title string Opcional: Título de la foto. El reproductor puede recuperar el título de forma independiente mediante content_id o lo puede proporcionar el remitente en el mensaje Load.
artista string Opcional: Nombre del fotógrafo. El reproductor puede recuperar el artista de forma independiente mediante content_id, o lo puede proporcionar el remitente en el mensaje Load.
ubicación string Opcional: Indica la ubicación verbal donde se tomó la foto, por ejemplo, "Madrid, España". El reproductor puede recuperar la ubicación de forma independiente mediante content_id, o lo puede proporcionar el remitente en el mensaje Load.
latitude double Opcional: Valor de latitud geográfico de la ubicación donde se tomó la foto. El reproductor puede recuperar la latitud de forma independiente mediante content_id, o bien puede proporcionarlo el remitente en el mensaje Load.
longitude double Opcional: Valor de longitud geográfico de la ubicación donde se tomó la foto. El reproductor puede recuperar la longitud de forma independiente mediante content_id o puede proporcionarlo el remitente en el mensaje Load.
ancho integer Opcional: Ancho en píxeles de la fotografía. El reproductor puede recuperar el ancho de forma independiente con content_id o 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 mediante content_id, o bien puede proporcionarlo el remitente en el mensaje Load.
creationDateTime. string (ISO 8601) Opcional Fecha y hora ISO 8601 para tomar esta foto. El reproductor puede recuperar los valores de createDateTime de forma independiente mediante content_id, o bien puede proporcionarlo el remitente en el mensaje Load.

Estado de medios

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

Nombre Tipo Descripción
mediaSessionId. integer ID único para la reproducción de esta sesión específica. El receptor establece este ID en LOAD y se puede usar para identificar una instancia específica de una reproducción. Por ejemplo, dos reproducciones de "Te gustaría estar aquí" dentro de la misma sesión tendrían un mediaSessionId único.
media Información de medios Opcional (para mensajes de estado) Descripción completa del contenido que se reproduce Solo se muestra en los mensajes de estado si cambió MediaInformation.
porcentaje de reproducción float Indica si el tiempo de medios está progresando y a qué velocidad. Esto es independiente del estado del reproductor, ya que el tiempo de contenido multimedia puede detenerse en cualquier estado. 1.0 es el tiempo habitual, 0.5 es cámara lenta
playerState enumeración (string)

Describe el estado del reproductor como uno de los siguientes:

  • IDLE Todavía no se cargó el reproductor
  • PLAYING El reproductor está reproduciendo contenido de forma activa.
  • BUFFERING El reproductor está en modo REPRODUCCIÓN, pero no reproduce contenido de forma activa (la hora actual no cambia).
  • PAUSED El reproductor está en pausa
Motivo de inactividad enumeración (string)

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

  • CANCELLED Un remitente solicitó detener la reproducción mediante el comando STOP.
  • INTERRUPCIÓN Un remitente solicitó reproducir un medio diferente mediante el comando LOAD.
  • FINISHED Se completó la reproducción de contenido multimedia
  • ERROR: El contenido multimedia se interrumpió debido a un error. Por ejemplo, si el reproductor no puede descargar el contenido multimedia debido a problemas de la red.
currentTime double Es la posición actual del reproductor multimedia desde el comienzo del contenido, en segundos. Si se trata de contenido de transmisión en vivo, este campo representa el tiempo en segundos desde el comienzo del evento que el reproductor debe conocer.
supportedMediaCommand flags

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

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

Las combinaciones se describen como sumas; por ejemplo, Pause+Seek+StreamVolume+Mute == 15.

volumen Volume Volumen de transmisión
datospersonalizados objeto Opcional: BLOB de datos específicos de la aplicación definidos por la aplicación receptora

Comandos del remitente al receptor

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

Carga

Carga nuevo contenido en el reproductor multimedia.

Nombre Tipo Descripción
requestId. integer ID de la solicitud, para correlacionar la solicitud con la respuesta
tipo string CARGA (solo valor)
media Información de medios Metadatos (incluido el contentId) de los medios que se cargarán
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. Incluso si no se especifica la reproducción automática, la implementación del reproductor multimedia puede comenzar a reproducirla de inmediato. Si se inicia la reproducción, el estado del reproductor en la respuesta se debe establecer en BUFFERING; de lo contrario, se debe establecer en PAUSED.

currentTime double Opcional: segundos desde el comienzo del contenido. Si el contenido es en vivo y la posición no está especificada, la transmisión comenzará en la posición en vivo.
datospersonalizados objeto Opcional: BLOB de datos específico de la aplicación definido por la aplicación emisora
Respuesta Activadores Emisiones Errores
Ninguno Cambio de estado del receptor Mensaje de cambio de estado de medios Estado de jugador no válido
Error al cargar
Carga cancelada

Pausar

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

Nombre Tipo Descripción
mediaSessionId. integer ID de la sesión multimedia que se detendrá
requestId. integer ID de la solicitud, que se usa para correlacionar la solicitud/respuesta
tipo string PAUSA (solo valor)
datospersonalizados objeto Opcional: BLOB de datos específico de la aplicación definido por la aplicación emisora
Respuesta Activadores Emisiones Errores
Ninguno Cambio de estado del receptor Mensaje de cambio de estado de medios Estado de jugador no válido

Seek

Establece la posición actual en la transmisión. Activa una notificación de evento STATUS para todas las aplicaciones emisoras. 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 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 con la respuesta
tipo string SEEK (solo valor)
Reanudar estado enumeración (string)

Opcional: Si esta opción no se establece, el estado de reproducción no cambiará. Se aplican los siguientes valores:

  • PLAYBACK_START Fuerza el inicio de los medios
  • PLAYBACK_PAUSE Fuerza la pausa del contenido multimedia
currentTime double Opcional: segundos desde el comienzo del contenido. Si el contenido es en vivo y la posición no está especificada, la transmisión comenzará en la posición en vivo.
datospersonalizados objeto Opcional: BLOB de datos específico de la aplicación definido por la aplicación emisora
Respuesta Activadores Emisiones Errores
Ninguno Cambio de estado del receptor Mensaje de cambio de estado de medios Estado de jugador no válido

Stop

Detiene la reproducción del contenido actual. Activa una notificación de evento STATUS para todas las aplicaciones emisoras. Después de 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 del contenido que se detendrá
requestId. integer ID de la solicitud, para correlacionar la solicitud con la respuesta
tipo string STOP (solo valor)
datospersonalizados objeto Opcional: BLOB de datos específico de la aplicación definido por la aplicación emisora
Respuesta Activadores Emisiones Errores
Ninguno Cambio de estado del receptor Mensaje de cambio de estado de medios Estado de jugador no válido

Reproducir

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

Nombre Tipo Descripción
mediaSessionId. integer ID de la sesión multimedia del contenido que se reproducirá
requestId. integer ID de la solicitud, para correlacionar la solicitud con la respuesta
tipo string PLAY (solo valor)
datospersonalizados objeto Opcional: BLOB de datos específico de la aplicación definido por la aplicación emisora
Respuesta Activadores Emisiones Errores
Ninguno Cambio de estado del receptor Mensaje de cambio de estado de medios Estado de jugador 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 proporcionará el estado de todos los ID de sesión multimedia.
requestId. integer ID de la solicitud, para correlacionar la solicitud con la respuesta
tipo string GET_STATUS (solo valor)
datospersonalizados objeto Opcional: BLOB de datos específico de la aplicación definido por la aplicación emisora
Respuesta Activadores Emisiones Errores
MediaStatus al remitente que lo solicitó. Ninguno Ninguno Ninguno

Establecer volumen

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

Nombre Tipo Descripción
mediaSessionId. integer ID de sesión multimedia del contenido multimedia en el que se cambia el volumen de transmisión
requestId. integer ID de la solicitud, para correlacionar la solicitud con la respuesta
tipo string VOLUME (solo valor)
volumen Volume Volumen de transmisión
datospersonalizados objeto Opcional: BLOB de datos específico de la aplicación definido por la aplicación emisora
Respuesta Activadores Emisiones Errores
Ninguno Cambio de estado del receptor Mensaje de cambio de estado de medios Estado de jugador no válido

Mensajes del destinatario al remitente

El receptor envía dos tipos de mensajes:

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

Error: Estado de reproductor no válido

Se envía cuando la solicitud del remitente no se puede completar 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 string INVALID_PLAYER_STATE(solo valor)
datospersonalizados objeto Opcional: BLOB de datos específicos de la aplicación definidos por la aplicación receptora

Error: error en la carga

Se envió cuando la solicitud de carga falló. El estado del reproductor será IDLE.

Nombre Tipo Descripción
requestId. integer ID de la solicitud que generó este error
tipo string LOAD_FAILED (solo valor)
datospersonalizados objeto Opcional: BLOB de datos específicos de la aplicación definidos por la aplicación receptora

Error: carga cancelada

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 string LOAD_CANCELLED (solo valor)
datospersonalizados objeto Opcional: BLOB de datos específicos de la aplicación definidos 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 string INVALID_REQUEST(solo valor)
motivo Enumeración (string)

Valores:

  • INVALID_COMMAND El comando no es compatible
  • DUPLICATE_REQUESTID El ID de solicitud no es único (el receptor está procesando una solicitud con el mismo ID).
datospersonalizados objeto Opcional: BLOB de datos específicos de la aplicación definidos por la aplicación receptora

Estado de medios

Se envía después de un cambio de estado o después de una solicitud de estado de medios. Solo se enviarán los objetos MediaStatus que se hayan modificado o solicitado.

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 bien 0 si el mensaje de estado es espontáneo (no activado por una solicitud del remitente). Las aplicaciones emisoras generarán ID de solicitud únicos si seleccionan un número al azar y lo aumentan de forma continua (no usarán 0).
tipo string MEDIA_STATUS (solo valor)
estado EstadoDeMedios[] Arreglo de objetos de estado de medios. NOTA: El elemento multimedia de MediaStatus solo se mostrará si cambió.
datospersonalizados objeto Opcional: BLOB de datos específicos de la aplicación definidos por la aplicación receptora