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