Mensagens de reprodução de mídia

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

De acordo com os Termos de Serviço adicionais para desenvolvedores do SDK do Google Cast, um app de mídia do Google Cast precisa usar essas mensagens conforme definido aqui para controlar a reprodução de mídia no receptor. Isso oferece ao app de música uma experiência do usuário consistente em todas as plataformas e garante que um app 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 que não têm suporte do 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 que é determinado pelo tamanho máximo de uma mensagem de transporte, não há limite para campos individuais. No momento, o tamanho máximo da mensagem de transporte é 64 KBytes.

Estruturas de dados comuns de namespace

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

Imagem

Essa é a descrição de uma imagem, incluindo uma pequena quantidade de metadados para permitir que o aplicativo remetente escolha uma imagem, dependendo de como ela será renderizada.

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, ele será opcional. Se houver dois itens retornados, um item precisará especificar uma altura e largura, mas o remetente poderá escolher a opção "padrão" se ele não gostar do que foi transmitido com parâmetros específicos.

Nome Tipo Descrição
url URI URI da imagem
altura integer Opcional Altura da imagem
largura integer Opcional: largura da imagem

Volume

O volume do stream de mídia. Usado para efeitos de esmaecimento/exibição gradual no stream de mídia. Observação: o volume do sistema é alterado usando as APIs do remetente. O volume de streaming 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 parâmetros a seguir precisa ser transmitido para mudar o volume do stream.

Nome Tipo Descrição
nível double Opcional: nível atual do volume de stream como um valor entre 0,0 e 1,0, em que 1,0 é o volume máximo.
som desativado boolean Opcional Se o dispositivo de transmissão estiver silenciado, independente do nível de volume

Estruturas de dados de namespace de mídia

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

Informações de mídia

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

Nome Tipo Descrição
ID do conteúdo string Identificador específico do serviço do conteúdo atualmente carregado pelo player de mídia. Essa é uma string de formato livre e é específica para o aplicativo. Na maioria dos casos, este será o URL para a mídia, mas o remetente pode passar uma string que o receptor pode interpretar corretamente. Comprimento máximo: 1.000
streamType (em inglês) enumeração
(string)

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

  • NONE
  • COMBINADO
  • AO VIVO
contentType (em inglês) string Tipo de conteúdo MIME da mídia que está sendo reproduzida
metadata um objeto

Opcional: o objeto de metadados de mídia.

duração double Opcional: duração da transmissão atual em segundos.
customData (em inglês) um objeto Opcional: blob de dados específicos do aplicativo definido pelo aplicativo remetente ou do receptor.

MetadataMedia

Descreve um artefato de mídia genérico.

Nome Tipo Descrição
metadataType (em inglês) integer 0 (o único valor)
title string Opcional: título descritivo do conteúdo. O player pode recuperar o título de maneira independente usando content_id, ou pode ser fornecido pelo remetente na mensagem Carregar
legenda string Opcional: legenda descritiva do conteúdo. O player pode recuperar o título de maneira independente usando content_id, ou pode ser fornecido pelo remetente na mensagem Carregar
imagens Imagem[] Opcional: matriz de URLs para uma imagem associada ao conteúdo. O valor inicial do campo pode ser informado pelo remetente na mensagem Carregar. Deve fornecer os tamanhos recomendados
data de lançamento string (ISO 8601) Data e hora opcional de acordo com a ISO 8601 em que o conteúdo foi lançado. O player pode recuperar o título de maneira independente usando content_id, ou pode ser fornecido pelo remetente na mensagem Carregar

Metadados de filmes

Descreve um artefato de mídia de filme.

Nome Tipo Descrição
metadataType (em inglês) integer 1  (o único valor)
title string Opcional: título descritivo do conteúdo. O player pode recuperar o título de maneira independente usando content_id, ou pode ser fornecido pelo remetente na mensagem Carregar
legenda string Opcional: legenda descritiva do conteúdo. O player pode recuperar o título de maneira independente usando content_id, ou pode ser fornecido pelo remetente na mensagem Carregar
Studio string Opcional: é o Studio que lançou o conteúdo. O player pode recuperar o Studio de forma independente usando content_id ou 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 informado pelo remetente na mensagem Carregar. Deve fornecer os tamanhos recomendados
data de lançamento string (ISO 8601) Data e hora opcional de acordo com a ISO 8601 em que o conteúdo foi lançado. O player pode recuperar o título de maneira independente usando content_id, ou pode ser fornecido pelo remetente na mensagem Carregar

Metadados de programas de TV

Descreve um artefato de mídia de episódio de programa de televisão.

Nome Tipo Descrição
metadataType (em inglês) integer 2  (o único valor)
seriesTitle (link em inglês) string Opcional Título descritivo da série de TV. O player pode recuperar o título de maneira independente usando content_id, ou pode ser fornecido pelo remetente na mensagem Carregar
legenda string Opcional: legenda descritiva do episódio de TV. O player pode recuperar o título de maneira independente usando content_id, ou pode ser fornecido pelo remetente na mensagem Carregar
temporada integer Opcional: número da temporada do programa de TV
episódio integer Opcional Número do episódio da 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 informado pelo remetente na mensagem Carregar. Deve fornecer os tamanhos recomendados
originalAirDate string (ISO 8601) A data e hora em ISO 8601 são opcionais e estão disponíveis no lançamento. O player pode recuperar independentementeA originalAirDate usando content_id ou pode ser fornecido pelo remetente na mensagem Carregar

Metadados de músicas de mídia

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

Nome Tipo Descrição
metadataType (em inglês) integer 3 (o único valor)
AlbumName string Opcional: álbum ou coleção de que esta faixa é tirada. O player pode recuperar o nome do álbum de forma independente usando content_id, ou pode ser fornecido pelo remetente na mensagem Carregar
title string Opcional: nome da faixa (por exemplo, título da música). O player pode recuperar o título de maneira independente usando content_id, ou pode ser fornecido pelo remetente na mensagem Carregar
AlbumArtist string Opcional: nome do artista associado ao álbum que inclui a música. O player pode recuperar álbuns de álbum de forma independente usando content_id, ou pode ser fornecido pelo remetente na mensagem Carregar
artista string Opcional: nome do artista associado à faixa de mídia. O player pode recuperar o artista de forma independente usando content_id, ou pode ser fornecido pelo remetente na mensagem Carregar
Composer string Opcional: nome do compositor associado à faixa de mídia. O player pode recuperar o composer de forma independente usando content_id, ou pode ser fornecido pelo remetente na mensagem Load
número da faixa integer Opcional Número da faixa no álbum
discNumber integer 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 informado pelo remetente na mensagem Carregar. Deve fornecer os tamanhos recomendados
data de lançamento string (ISO 8601) Data e hora opcional de acordo com a ISO 8601 em que o conteúdo foi lançado. O player pode recuperar independente o dateDate usando content_id ou pode ser fornecido pelo remetente na mensagem Load

Metadados de fotos

Descreve um artefato de mídia fotográfica.

Nome Tipo Descrição
metadataType (em inglês) integer 4  (o único valor)
title string Opcional: título da foto. O player pode recuperar o título de maneira independente usando content_id, ou pode ser fornecido pelo remetente na mensagem Carregar
artista string Opcional: nome do fotógrafo. O player pode recuperar o artista de forma independente usando content_id, ou pode ser fornecido pelo remetente na mensagem Carregar
local string Opcional: é o local verbal em que a foto foi tirada, por exemplo, "Madri, Espanha". O player pode recuperar o local de maneira independente usando content_id, ou pode ser fornecido pelo remetente na mensagem Load.
latitude double Opcional: valor de latitude geográfico para o local onde a foto foi tirada. O player pode recuperar a latitude de forma independente usando content_id, ou pode ser fornecido pelo remetente na mensagem Load
longitude double Opcional: valor de longitude geográfica do local em que a foto foi tirada. O player pode recuperar a longitude de maneira independente usando content_id, ou pode ser fornecido pelo remetente na mensagem Carregar
largura integer Opcional: largura em pixels da foto. O player pode recuperar a largura de forma independente usando content_id, ou pode ser fornecido pelo remetente na mensagem Load.
altura integer Opcional: altura em pixels da foto. O player pode extrair a altura de forma independente usando content_id, ou pode ser fornecido pelo remetente na mensagem Load.
creationDateTime string (ISO 8601) Opcional: data e hora em que a foto foi tirada no formato ISO 8601. O player pode extrair independentemente criadordedatas usando content_id ou pode ser fornecido pelo remetente na mensagem Carregar

Status da mídia

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

Nome Tipo Descrição
mediaSessionId integer ID exclusivo para a reprodução desta sessão específica. Esse ID é definido pelo receptor em LOAD e pode ser usado para identificar uma instância específica de uma reprodução. Por exemplo, duas reproduções de "Gostaria que você estivesse aqui" 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 sido alterado.
Taxa de reprodução float Indica se o tempo de mídia está progredindo e a que taxa. Isso é independente do estado do player, já que o tempo de mídia pode ser interrompido em qualquer estado. 1,0 é o tempo regular, 0,5 é um movimento lento
playerState (em inglês) enumeração (string)

Descreve o estado do player como um dos seguintes:

  • IDLE O player ainda não foi carregado
  • EM EXIBIÇÃO O player está reproduzindo conteúdo ativamente
  • BUFFERING O player está no modo PLAY, mas não está tocando conteúdo ativamente. A configuração atual não vai mudar.
  • PAUSADO O player está pausado
IDleReason (em inglês) enumeração (string)

Opcional: se o playerState for IDLE e o motivo pelo qual ele se tornou IDLE é conhecido, essa propriedade será fornecida. Se o player estiver ocioso porque acabou de ser iniciado, esta propriedade não será fornecida. Se o player estiver em qualquer outro estado, esta propriedade não deverá ser fornecida. Os seguintes valores são aplicáveis:

  • CANCELADO O remetente solicitou a interrupção da reprodução usando o comando STOP.
  • INTERRUPTED: um remetente solicitou a exibição de uma mídia diferente usando o comando LOAD.
  • CONCLUÍDO A reprodução de mídia foi concluída.
  • ERRO A mídia foi interrompida por causa de um erro, por exemplo, se o player não conseguiu fazer o download da mídia devido a problemas na rede
currentTime (em inglês) double 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, este campo representa o tempo em segundos a partir do início do evento que deve ser conhecido pelo player.
supportedMediaCommands (em inglês) flags

Sinalizações que descrevem quais comandos de mídia o player de mídia oferece suporte:

  • 1 Pausar
  • 2 Procurar
  • 4 Volume de streaming
  • 8 Desativar som do stream
  • 16 Avançar
  • 32 Voltar

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

volume Volume Volume do stream
customData (em inglês) um objeto Opcional: blob de dados específicos 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 deve ser degradado corretamente se os dados não forem transmitidos). Isso permitirá que apps de controle remoto genéricos funcionem corretamente.

Carga

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

Nome Tipo Descrição
requestId. integer 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
reprodução automática boolean

Opcional (o padrão é "true") se o parâmetro de reprodução automática for especificado, o player de mídia 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 optar por iniciar a reprodução imediatamente. Se a reprodução for iniciada, o estado do player na resposta deverá ser definido como BUFFERING. Caso contrário, deverá ser definido como PAUSADO

currentTime (em inglês) 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 começará na posição ao vivo.
customData (em inglês) um objeto Opcional: blob de dados específicos do aplicativo definido pelo aplicativo remetente
Resposta Gatilhos Transmissões Erros
Nenhum Mudança de estado do destinatário Uma mensagem de mudança de status de mídia Estado do player inválido
Carregamento com falha
Carregamento cancelado

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 integer ID da sessão de mídia que será pausada
requestId. integer ID da solicitação a ser usado para correlacionar solicitação/resposta.
type string PAUSA (somente valor)
customData (em inglês) um objeto Opcional: blob de dados específicos do aplicativo definido pelo aplicativo remetente
Resposta Gatilhos Transmissões Erros
Nenhum Mudança de estado do destinatário Uma mensagem de mudança de status de 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 integer ID da sessão de mídia em que a posição do stream está definida
requestId. integer ID da solicitação para correlacionar solicitação e resposta
type string SEEK (somente valor)
estado_retomado enumeração (string)

Opcional: se ele não for definido, o status da reprodução não mudará. Os seguintes valores são aplicáveis:

  • PLAYBACK_START Forçar o início da mídia
  • PLAYBACK_HOUR: força a pausa da mídia
currentTime (em inglês) 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 começará na posição ao vivo.
customData (em inglês) um objeto Opcional: blob de dados específicos do aplicativo definido pelo aplicativo remetente
Resposta Gatilhos Transmissões Erros
Nenhum Mudança de estado do destinatário Uma mensagem de mudança de status de mídia Estado do player inválido

Stop

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 vai ser invalidado.

Nome Tipo Descrição
mediaSessionId integer ID da sessão de mídia para que o conteúdo seja interrompido
requestId. integer ID da solicitação para correlacionar solicitação e resposta
type string PARAR(somente o valor)
customData (em inglês) um objeto Opcional: blob de dados específicos do aplicativo definido pelo aplicativo remetente
Resposta Gatilhos Transmissões Erros
Nenhum Mudança de estado do destinatário Uma mensagem de mudança de status de mídia Estado do player inválido

Reproduzir

Inicia a reprodução do conteúdo que foi carregado com a chamada de carregamento. A reprodução é continuada da posição de tempo atual.

Nome Tipo Descrição
mediaSessionId integer ID da sessão de mídia do conteúdo que será reproduzido.
requestId. integer ID da solicitação para correlacionar solicitação e resposta
type string PLAY(somente valor)
customData (em inglês) um objeto Opcional: blob de dados específicos do aplicativo definido pelo aplicativo remetente
Resposta Gatilhos Transmissões Erros
Nenhum Mudança de estado do destinatário Uma mensagem de mudança de status de mídia Estado do player inválido

Ver status

Recupera o status da mídia.

Nome Tipo Descrição
mediaSessionId integer Opcional: ID da sessão de mídia da mídia que terá o status retornado. Se nenhum for fornecido, o status de todos os IDs de sessão de mídia será fornecido.
requestId. integer ID da solicitação para correlacionar solicitação e resposta
type string GET_STATUS (somente valor)
customData (em inglês) um objeto Opcional: blob de dados específicos do aplicativo definido pelo aplicativo remetente
Resposta Gatilhos Transmissões Erros
MediaStatus ao remetente que fez a solicitação Nenhum Nenhum Nenhum

DefinirVolume

Define o volume do stream de mídia. Usado para efeitos de esmaecimento/exibição gradual no stream de mídia. Observação: o volume do receptor é alterado usando o setVolume do remetente da Web. O volume 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 acionará nenhuma IU no receptor.

Nome Tipo Descrição
mediaSessionId integer ID da sessão de mídia da mídia para a qual o volume de stream é alterado.
requestId. integer ID da solicitação para correlacionar solicitação e resposta
type string VOLUME (somente valor)
volume Volume Volume do stream
customData (em inglês) um objeto Opcional: blob de dados específicos do aplicativo definido pelo aplicativo remetente
Resposta Gatilhos Transmissões Erros
Nenhum Mudança de estado do destinatário Uma mensagem de mudança de status de mídia Estado do player inválido

Mensagens do destinatário para o remetente

O destinatário envia dois tipos de mensagens:

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

Erro: estado inválido do player

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. integer ID da solicitação que gerou esse erro
type string INVALID_Player_STATE (somente valor)
customData (em inglês) um objeto Opcional: blob de dados específicos do aplicativo definido pelo aplicativo receptor

Erro: falha no carregamento

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

Nome Tipo Descrição
requestId. integer ID da solicitação que gerou esse erro
type string LOAD_FAILED (somente valor)
customData (em inglês) um objeto Opcional: blob de dados específicos 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. integer ID da solicitação que gerou esse erro
type string LOAD_CANCELLED (somente valor)
customData (em inglês) um objeto Opcional: blob de dados específicos 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. integer ID da solicitação que gerou esse erro
type string INVALID_REQUEST (apenas valor)
motivo Enumeração (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 (em inglês) um objeto Opcional: blob de dados específicos do aplicativo definido pelo aplicativo receptor

Status da mídia

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

Nome Tipo Descrição
requestId. integer ID usado para correlacionar essa resposta de status com a solicitação de origem dela ou 0 se a mensagem de status for espontânea (não acionada por uma solicitação de remetente). Os aplicativos do remetente gerarão IDs de solicitação exclusivos selecionando um número aleatório e aumentando-o continuamente (eles não usarão 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 (em inglês) um objeto Opcional: blob de dados específicos do aplicativo definido pelo aplicativo receptor