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