Mensagens de reprodução de mídia

Os aplicativos remetentes do Google Cast controlam a reprodução no dispositivo receptor enviando mensagens no formato JSON para o aplicativo receptor. Da mesma forma, o destinatário envia mensagens de volta ao remetente, também em JSON. As mensagens podem ser comandos do remetente que mudam o estado do player, respostas a esses comandos do destinatário ou estruturas de dados que descrevem a mídia para o aplicativo do destinatário.

De acordo com os Termos de Serviço adicionais para desenvolvedores do SDK do Google Cast, um aplicativo de mídia do Cast precisa usar essas mensagens, conforme definido aqui, para controlar a reprodução de mídia no receptor. Isso oferece ao app de mídia uma experiência do usuário consistente em todas as plataformas e garante que um aplicativo Cast seja compatível com casos de uso novos e futuros. Essas estruturas também oferecem suporte a dados personalizados, quando apropriado, e um aplicativo pode definir as próprias mensagens para comandos não compatíveis com o SDK.

O namespace das mensagens de reprodução de mídia é definido como urn:x-cast:com.google.cast.media.

Observação:as mensagens e estruturas nesta especificação têm um tamanho máximo implícito determinado pelo tamanho máximo de uma mensagem de transporte. Não há limite para campos individuais. O tamanho máximo da mensagem de transporte é de 64 KBytes.

Estruturas de dados de namespace comuns

Um superconjunto de estruturas de dados usadas por todos os artefatos do namespace de mídia é definido em um namespace comum.

Imagem

É a descrição de uma imagem, incluindo uma pequena quantidade de metadados para permitir que o aplicativo remetente escolha as imagens, dependendo de como elas serão renderizadas.

A altura e a largura são opcionais em apenas um item em uma matriz de imagens. Por exemplo, se um único item for retornado, eles serão opcionais. Se dois itens forem retornados, um deles precisará especificar uma altura e uma largura, mas o remetente poderá escolher a opção "padrão" se não gostar daquela transmitida com parâmetros específicos.

Nome Tipo Descrição
url URI URI da imagem
height número inteiro opcional : altura da imagem.
width número inteiro opcional : largura da imagem.

Volume

O volume do fluxo de mídia. Usado para efeitos de fade-in/fade-out no stream de mídia. Observação: o volume do sistema é alterado usando as APIs do remetente. O volume de stream não pode ser usado com o controle deslizante ou os botões de volume para controlar o volume do dispositivo. Pelo menos um dos seguintes parâmetros precisa ser transmitido para mudar o volume da transmissão.

Nome Tipo Descrição
level double opcional : nível de volume atual da transmissão como um valor entre 0,0 e 1,0, em que 1,0 é o volume máximo.
silenciada booleano opcional Indica se o dispositivo Cast está sem som, independente do nível de volume.

Estruturas de dados do namespace de mídia

Essas mensagens descrevem o estado do player de mídia. O namespace é urn:x-cast:com.google.cast.media.

MediaInformation

Essa estrutura de dados descreve um fluxo de mídia.

Nome Tipo Descrição
contentId string Identificador específico do serviço do conteúdo carregado no momento pelo player de mídia. Essa é uma string de formato livre e específica do aplicativo. Na maioria dos casos, esse será o URL da mídia, mas o remetente pode transmitir uma string que o destinatário pode interpretar corretamente. Comprimento máximo: 1.000
streamType enum
(string)

Descreve o tipo de artefato de mídia como um dos seguintes:

  • NONE
  • BUFFERED
  • AO VIVO
contentType string Tipo de conteúdo MIME da mídia em reprodução.
metadata objeto

opcional O objeto de metadados de mídia, um dos seguintes:

duration double opcional Duração do stream em reprodução no momento em segundos
customData objeto Opcional : blob de dados específico do aplicativo definido pelo aplicativo remetente ou destinatário.

GenericMediaMetadata

Descreve um artefato de mídia genérico.

Nome Tipo Descrição
metadataType número inteiro 0  (o único valor)
title string opcional Título descritivo do conteúdo. O player pode recuperar o título de forma independente usando o content_id ou ele pode ser fornecido pelo remetente na mensagem Load.
subtitle string opcional Subtítulo descritivo do conteúdo. O player pode recuperar o título de forma independente usando o content_id ou ele pode ser fornecido pelo remetente na mensagem Load.
imagens Imagem[] opcional Matriz de URLs para uma imagem associada ao conteúdo. O valor inicial do campo pode ser fornecido pelo remetente na mensagem Load. Deve fornecer tamanhos recomendados
releaseDate string (ISO 8601) Opcional : data e hora ISO 8601 em que o conteúdo foi lançado. O player pode recuperar o título de forma independente usando o content_id ou ele pode ser fornecido pelo remetente na mensagem Load.

MovieMediaMetadata

Descreve um artefato de mídia de filme.

Nome Tipo Descrição
metadataType número inteiro 1  (o único valor)
title string opcional Título descritivo do conteúdo. O player pode recuperar o título de forma independente usando o content_id ou ele pode ser fornecido pelo remetente na mensagem Load.
subtitle string opcional Subtítulo descritivo do conteúdo. O player pode recuperar o título de forma independente usando o content_id ou ele pode ser fornecido pelo remetente na mensagem Load.
Studio string Opcional : estúdio que lançou o conteúdo. O player pode recuperar o estúdio de forma independente usando o content_id ou ele pode ser fornecido pelo remetente na mensagem Load.
imagens Imagem[] opcional Matriz de URLs para uma imagem associada ao conteúdo. O valor inicial do campo pode ser fornecido pelo remetente na mensagem Load. Deve fornecer tamanhos recomendados
releaseDate string (ISO 8601) Opcional : data e hora ISO 8601 em que o conteúdo foi lançado. O player pode recuperar o título de forma independente usando o content_id ou ele pode ser fornecido pelo remetente na mensagem Load.

TvShowMediaMetadata

Descreve um artefato de mídia de episódio de programa de TV.

Nome Tipo Descrição
metadataType número inteiro 2  (o único valor)
seriesTitle string opcional Título descritivo da série de TV. O player pode recuperar o título de forma independente usando o content_id ou ele pode ser fornecido pelo remetente na mensagem Load.
subtitle string opcional Subtítulo descritivo do episódio de TV. O player pode recuperar o título de forma independente usando o content_id ou ele pode ser fornecido pelo remetente na mensagem Load.
temporada número inteiro opcional Número da temporada do programa de TV
episódio número inteiro opcional Número do episódio (na temporada) do programa de TV
imagens Imagem[] opcional Matriz de URLs para uma imagem associada ao conteúdo. O valor inicial do campo pode ser fornecido pelo remetente na mensagem Load. Deve fornecer tamanhos recomendados
originalAirDate string (ISO 8601) opcional Data e hora ISO 8601 em que este episódio foi lançado. O player pode recuperar independently originalAirDate usando content_id ou ele pode ser fornecido pelo remetente na mensagem Load.

MusicTrackMediaMetadata

Descreve um artefato de mídia de música.

Nome Tipo Descrição
metadataType número inteiro 3  (o único valor)
albumName string opcional : álbum ou coleção de onde essa faixa foi extraída. O player pode recuperar o albumName de forma independente usando o content_id ou ele pode ser fornecido pelo remetente na mensagem Load.
title string opcional Nome da faixa (por exemplo, título da música). O player pode recuperar o título de forma independente usando o content_id ou ele pode ser fornecido pelo remetente na mensagem Load.
albumArtist string opcional Nome do artista associado ao álbum que contém essa música. O player pode recuperar albumArtist de forma independente usando content_id ou ele pode ser fornecido pelo remetente na mensagem Load.
artist string opcional Nome do artista associado à faixa de mídia. O player pode recuperar o artista de forma independente usando o content_id ou ele pode ser fornecido pelo remetente na mensagem Load.
Composer string opcional Nome do compositor associado à faixa de mídia. O player pode recuperar o compositor de forma independente usando o content_id ou ele pode ser fornecido pelo remetente na mensagem Load.
trackNumber número inteiro opcional Número da faixa no álbum
discNumber número inteiro opcional Número do volume (por exemplo, um disco) do álbum.
imagens Imagem[] opcional Matriz de URLs para uma imagem associada ao conteúdo. O valor inicial do campo pode ser fornecido pelo remetente na mensagem Load. Deve fornecer tamanhos recomendados
releaseDate string (ISO 8601) Opcional : data e hora ISO 8601 em que o conteúdo foi lançado. O player pode recuperar releaseDate de forma independente usando content_id ou ele pode ser fornecido pelo remetente na mensagem Load.

PhotoMediaMetadata

Descreve um artefato de mídia fotográfica.

Nome Tipo Descrição
metadataType número inteiro 4  (o único valor)
title string opcional Título da fotografia. O player pode recuperar o título de forma independente usando o content_id ou ele pode ser fornecido pelo remetente na mensagem Load.
artist string opcional Nome do fotógrafo. O player pode recuperar o artista de forma independente usando o content_id ou ele pode ser fornecido pelo remetente na mensagem Load.
local string opcional Local verbal onde a fotografia foi tirada, por exemplo, "Madri, Espanha". O player pode recuperar a localização de forma independente usando o content_id ou ela pode ser fornecida pelo remetente na mensagem Load.
latitude double opcional : valor de latitude geográfica do local onde a fotografia foi tirada. O player pode recuperar a latitude de forma independente usando o content_id ou ela pode ser fornecida pelo remetente na mensagem Load.
longitude double opcional Valor de longitude geográfica do local onde a fotografia foi tirada. O player pode recuperar a longitude de forma independente usando o content_id ou ela pode ser fornecida pelo remetente na mensagem Load.
width número inteiro opcional Largura da fotografia em pixels. O player pode recuperar a largura de forma independente usando o content_id ou ela pode ser fornecida pelo remetente na mensagem Load.
height número inteiro opcional Altura em pixels da fotografia. O player pode recuperar a altura de forma independente usando o content_id ou ela pode ser fornecida pelo remetente na mensagem Load.
creationDateTime string (ISO 8601) Opcional : data e hora ISO 8601 em que a foto foi tirada. O player pode recuperar creationDateTime de forma independente usando content_id ou ele pode ser fornecido pelo remetente na mensagem Load.

MediaStatus

Descreve o status atual do artefato de mídia em relação à sessão.

Nome Tipo Descrição
mediaSessionId número inteiro ID exclusivo da reprodução desta sessão específica. Esse ID é definido pelo receptor no LOAD e pode ser usado para identificar uma instância específica de uma reprodução. Por exemplo, duas reproduções de "Wish you were here" na mesma sessão teriam um mediaSessionId exclusivo.
media MediaInformation opcional (para mensagens de status) Descrição completa do conteúdo que está sendo reproduzido. Só será retornado em uma mensagem de status se o MediaInformation tiver mudado.
playbackRate float Indica se o tempo de mídia está progredindo e em qual taxa. Isso é independente do estado do player, já que o tempo de mídia pode parar em qualquer estado. 1,0 é o tempo normal, 0,5 é câmera lenta
playerState enum (string)

Descreve o estado do player como um dos seguintes:

  • IDLE  O player ainda não foi carregado
  • EM REPRODUÇÃO  O player está reproduzindo conteúdo ativamente.
  • BUFFERING  O player está no modo PLAY, mas não está reproduzindo conteúdo ativamente (currentTime não está mudando).
  • PAUSADO  O player está pausado
idleReason enum (string)

Opcional : se o playerState for IDLE e o motivo for conhecido, essa propriedade será fornecida. Se o player estiver IDLE porque acabou de ser iniciado, essa propriedade não será fornecida. Se o player estiver em qualquer outro estado, essa propriedade não deverá ser fornecida. Os seguintes valores se aplicam:

  • CANCELLED  Um remetente pediu para interromper a reprodução usando o comando STOP
  • INTERROMPIDO  Um remetente pediu para tocar outra mídia usando o comando LOAD
  • FINISHED  : a reprodução de mídia foi concluída.
  • ERROR  : a mídia foi interrompida devido a um erro. Por exemplo, se o player não conseguiu fazer o download da mídia devido a problemas de rede.
currentTime double A posição atual do player de mídia desde o início do conteúdo, em segundos. Se for um conteúdo de transmissão ao vivo, esse campo vai representar o tempo em segundos desde o início do evento que deve ser conhecido pelo player.
supportedMediaCommands flags

Flags que descrevem quais comandos de mídia o player de mídia aceita:

  • 1 << 0  Pausar
  • 1 << 1  Procurar
  • 1 << 2  Volume de transmissões
  • 1 << 3  Silenciar transmissão
  • 1 << 4  Pular para frente (descontinuado)
  • 1 << 5  Voltar (descontinuado)
  • 1 << 6  Fila para próxima
  • 1 << 7  Fila anterior
  • 1 << 8  Embaralhamento da fila
  • 1 << 9  Pular anúncio
  • 1 << 10  Repetir tudo na fila
  • 1 << 11  Fila repetir uma
  • 1 << 12  Editar faixas
  • 1 << 13  Velocidade do vídeo
  • 1 << 14  Gostei
  • 1 << 15  Não gostei
  • 1 << 16  Seguir
  • 1 << 17  Parar de seguir

As combinações são descritas como somas. Por exemplo, Pause+Seek+StreamVolume+Mute == 15.

volume Volume Volume de streams
customData objeto opcional Blob de dados específico do aplicativo definido pelo aplicativo receptor.

Comandos do remetente para o destinatário

Esses comandos controlam o player de mídia. Todos os objetos customData nas mensagens abaixo precisam ser opcionais. Ou seja, o receptor precisa degradar corretamente se os dados não forem transmitidos. Isso permite que apps genéricos de controle remoto funcionem corretamente.

Carregar

Carrega novo conteúdo no player de mídia.

Nome Tipo Descrição
requestId número inteiro ID da solicitação para correlacionar solicitação e resposta.
type string LOAD (somente valor)
media MediaInformation Metadados (incluindo contentId) da mídia a ser carregada
autoplay booleano

opcional (o padrão é "true"). Se o parâmetro de reprodução automática for especificado, o player de mídia vai começar a reproduzir o conteúdo quando ele for carregado. Mesmo que a reprodução automática não seja especificada, a implementação do player de mídia pode começar a reprodução imediatamente. Se a reprodução for iniciada, o estado do player na resposta será definido como "BUFFERING". Caso contrário, será "PAUSED".

currentTime double opcional Segundos desde o início do conteúdo. Se o conteúdo for ao vivo e a posição não for especificada, a transmissão vai começar na posição ao vivo.
customData objeto opcional : blob de dados específico do aplicativo definido pelo aplicativo remetente.
Resposta Gatilhos Transmissões Erros
Nenhum Mudança de estado do receptor Uma mensagem de mudança de status da mídia Invalid Player State
Load Failed
Load Cancelled

Pausar

Pausa a reprodução do conteúdo atual. Aciona uma notificação de evento STATUS para todos os aplicativos remetentes.

Nome Tipo Descrição
mediaSessionId número inteiro ID da sessão de mídia a ser pausada
requestId número inteiro ID da solicitação, usado para correlacionar solicitação/resposta.
type string PAUSAR (único valor)
customData objeto opcional : blob de dados específico do aplicativo definido pelo aplicativo remetente.
Resposta Gatilhos Transmissões Erros
Nenhum Mudança de estado do receptor Uma mensagem de mudança de status da mídia Estado do player inválido

Procurar

Define a posição atual no stream. Aciona uma notificação de evento STATUS para todos os aplicativos remetentes. Se a posição fornecida estiver fora do intervalo de posições válidas para o conteúdo atual, o player deverá escolher uma posição válida o mais próxima possível da posição solicitada.

Nome Tipo Descrição
mediaSessionId número inteiro ID da sessão de mídia em que a posição do stream é definida.
requestId número inteiro ID da solicitação para correlacionar solicitação e resposta.
type string SEEK (somente valor)
resumeState enum (string)

opcional Se não estiver definido, o status da reprodução não vai mudar. Os seguintes valores se aplicam:

  • PLAYBACK_START  Força o início da mídia
  • PLAYBACK_PAUSE  Força a pausa da mídia
currentTime double opcional Segundos desde o início do conteúdo. Se o conteúdo for ao vivo e a posição não for especificada, a transmissão vai começar na posição ao vivo.
customData objeto opcional : blob de dados específico do aplicativo definido pelo aplicativo remetente.
Resposta Gatilhos Transmissões Erros
Nenhum Mudança de estado do receptor Uma mensagem de mudança de status da mídia Estado do player inválido

Parar

Interrompe a reprodução do conteúdo atual. Aciona uma notificação de evento STATUS para todos os aplicativos remetentes. Depois desse comando, o conteúdo não será mais carregado, e o mediaSessionId será invalidado.

Nome Tipo Descrição
mediaSessionId número inteiro ID da sessão de mídia do conteúdo a ser interrompido
requestId número inteiro ID da solicitação para correlacionar solicitação e resposta.
type string STOP (somente valor)
customData objeto opcional : blob de dados específico do aplicativo definido pelo aplicativo remetente.
Resposta Gatilhos Transmissões Erros
Nenhum Mudança de estado do receptor Uma mensagem de mudança de status da mídia Estado do player inválido

Reproduzir

Inicia a reprodução do conteúdo carregado com a chamada "load". A reprodução continua da posição de tempo atual.

Nome Tipo Descrição
mediaSessionId número inteiro ID da sessão de mídia para o conteúdo a ser reproduzido.
requestId número inteiro ID da solicitação para correlacionar solicitação e resposta.
type string PLAY (somente valor)
customData objeto opcional : blob de dados específico do aplicativo definido pelo aplicativo remetente.
Resposta Gatilhos Transmissões Erros
Nenhum Mudança de estado do receptor Uma mensagem de mudança de status da mídia Estado do player inválido

Ver status

Recupera o status da mídia.

Nome Tipo Descrição
mediaSessionId número inteiro opcional ID da sessão de mídia da mídia para a qual o status precisa ser retornado. Se nenhum for fornecido, o status de todos os IDs de sessão de mídia será fornecido.
requestId número inteiro ID da solicitação para correlacionar solicitação e resposta.
type string GET_STATUS (somente valor)
customData objeto opcional : blob de dados específico do aplicativo definido pelo aplicativo remetente.
Resposta Gatilhos Transmissões Erros
Mensagem MediaStatus para o remetente que a solicitou Nenhum Nenhum Nenhum

SetVolume

Define o volume do stream de mídia. Usado para efeitos de fade-in/fade-out no stream de mídia. (Observação: o volume do receptor é alterado usando o remetente da Web setVolume.) O volume de stream não pode ser usado com o controle deslizante ou os botões de volume para controlar o volume do dispositivo. Uma mudança no volume do stream não aciona nenhuma interface no receptor.

Nome Tipo Descrição
mediaSessionId número inteiro ID da sessão de mídia da mídia em que o volume do stream foi alterado.
requestId número inteiro ID da solicitação para correlacionar solicitação e resposta.
type string VOLUME (somente valor)
volume Volume Volume de streams
customData objeto opcional : blob de dados específico do aplicativo definido pelo aplicativo remetente.
Resposta Gatilhos Transmissões Erros
Nenhum Mudança de estado do receptor Uma mensagem de mudança de status da mídia Estado do player inválido

Mensagens do destinatário para o remetente

O receptor envia dois tipos de mensagens:

  • Erros: mensagens unicast enviadas quando há uma resposta de erro a uma solicitação do remetente.
  • Status: transmitir mensagens.
    • Consequência de uma ação iniciada pelo remetente. Contém o requestId da solicitação que causou a mudança.
    • Espontânea: por exemplo, devido a uma mudança acionada pelo aplicativo receptor. O RequestId será 0.

Erro: estado do player inválido

Enviado quando a solicitação do remetente não pode ser atendida porque o player não está em um estado válido. Por exemplo, se o aplicativo ainda não tiver criado um elemento de mídia.

Nome Tipo Descrição
requestId número inteiro ID da solicitação que gerou esse erro.
type string INVALID_PLAYER_STATE (somente valor)
customData objeto opcional Blob de dados específico do aplicativo definido pelo aplicativo receptor.

Erro: falha ao carregar

Enviado quando a solicitação de carregamento falha. O estado do player será IDLE.

Nome Tipo Descrição
requestId número inteiro ID da solicitação que gerou esse erro.
type string LOAD_FAILED (único valor)
customData objeto opcional Blob de dados específico do aplicativo definido pelo aplicativo receptor.

Erro: carregamento cancelado

Enviado quando a solicitação de carregamento foi cancelada (uma segunda solicitação de carregamento foi recebida).

Nome Tipo Descrição
requestId número inteiro ID da solicitação que gerou esse erro.
type string LOAD_CANCELLED (somente valor)
customData objeto opcional Blob de dados específico do aplicativo definido pelo aplicativo receptor.

Erro: solicitação inválida

Enviado quando a solicitação é inválida (um tipo de solicitação desconhecido, por exemplo).

Nome Tipo Descrição
requestId número inteiro ID da solicitação que gerou esse erro.
type string INVALID_REQUEST (somente valor)
motivo Enum (string)

Valores:

  • INVALID_COMMAND  O comando não é compatível
  • DUPLICATE_REQUESTID  : o ID da solicitação não é exclusivo. O destinatário está processando uma solicitação com o mesmo ID.
customData objeto opcional Blob de dados específico do aplicativo definido pelo aplicativo receptor.

Status da mídia

Enviado após uma mudança de estado ou uma solicitação de status de mídia. Somente os objetos MediaStatus que foram alterados ou solicitados serão enviados.

Nome Tipo Descrição
requestId número inteiro ID usado para correlacionar essa resposta de status com a solicitação que a originou ou 0 se a mensagem de status for espontânea (não acionada por uma solicitação do remetente). Os aplicativos remetentes geram IDs de solicitação exclusivos selecionando um número aleatório e aumentando-o continuamente (não usam 0).
type string MEDIA_STATUS (somente valor)
status MediaStatus[] Matriz de objetos de status de mídia. OBSERVAÇÃO: o elemento de mídia em MediaStatus só será retornado se tiver mudado.
customData objeto opcional Blob de dados específico do aplicativo definido pelo aplicativo receptor.