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:
|
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:
|
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:
|
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:
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:
|
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:
|
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 |