Esquema de atributo de transmissão de câmera da casa inteligente
Mantenha tudo organizado com as coleções
Salve e categorize o conteúdo com base nas suas preferências.
action.devices.traits.CameraStream
: essa característica abrange como controlar o camerastream de um dispositivo.
Essa característica pertence a dispositivos que podem transmitir feeds de vídeo para telas inteligentes, dispositivos com Chromecast ou smartphones. Em geral, são câmeras de segurança ou de monitoramento infantil. Mas essa característica também se aplica a dispositivos mais complexos que têm uma câmera, como dispositivos de videoconferência ou um robô aspirador com uma câmera.
ATRIBUTOS do dispositivo
Dispositivos com essa característica podem informar os seguintes
atributos como parte da operação SYNC
. Para saber
mais sobre o processamento de intents SYNC
, consulte
Fulfillment de intents.
Atributos | Tipo | Descrição |
---|---|---|
cameraStreamSupportedProtocols |
Array |
Obrigatório. Tipos de mídia compatíveis com o stream da câmera, ordenados por preferência. Normalmente, o primeiro protocolo nessa matriz que é compatível com a superfície de destino é solicitado. |
[item, ...] |
String |
Tipo de mídia. Valores compatíveis:
|
cameraStreamNeedAuthToken |
Booleano |
Obrigatório. Indica se um token de autenticação é necessário para transmitir o feed da câmera. |
Exemplos
Câmera com suporte a vários protocolos, sem a necessidade de um token de autenticação.
{ "cameraStreamSupportedProtocols": [ "webrtc", "hls", "dash", "smooth_stream", "progressive_mp4" ], "cameraStreamNeedAuthToken": false }
Câmera com suporte a um único protocolo, exigindo um token de autenticação.
{ "cameraStreamSupportedProtocols": [ "hls" ], "cameraStreamNeedAuthToken": true }
Protocolos de streaming com suporte
Essa característica oferece suporte aos seguintes protocolos de streaming:
webrtc
: WebRTChls
: HTTP Live Streamingdash
: Dynamic Adaptive Streaming over HTTPsmooth_stream
: Smooth Streamingprogressive_mp4
: MP4 progressivo (usado principalmente para clipes)
Ao fazer streaming de protocolos hls
,dash
,smooth_stream
e
progressive_mp4
para dispositivos Cast (Chromecasts, telas inteligentes e
smart TVs compatíveis com Chromecast), um Cast Web Receiver é iniciado para processar o stream e renderizá-lo
no dispositivo. É recomendável que o desenvolvedor crie um
Custom Web Receiver para
permitir o acesso a ferramentas de depuração, personalizar o comportamento do jogador, personalizar o branding da interface e incluir
análises. Para ativar o uso do receptor personalizado e desativar o uso do receptor padrão,
defina o ID do app do receptor que é gerado quando você
registra seu aplicativo do Google Cast
no campo cameraStreamReceiverAppId
da resposta EXECUTE
.
Para saber mais sobre os aplicativos de receptor da Web personalizado, acesse o guia do site para desenvolvedores.
ESTADOS DO DISPOSITIVO
Nenhum.
COMANDOS do dispositivo
Dispositivos com essa característica podem responder aos comandos
abaixo como parte da operação EXECUTE
. Para saber
mais sobre o processamento de intents EXECUTE
, consulte
Fulfillment de intents.
action.devices.commands.GetCameraStream
Parâmetros
Parâmetros | Tipo | Descrição |
---|---|---|
StreamToChromecast |
Booleano |
Obrigatório. Indica se o stream será reproduzido em um dispositivo Chromecast. |
SupportedStreamProtocols |
Array |
Obrigatório. Tipos/formatos de mídia aceitos pelo destino desejado. |
[item, ...] |
String |
Tipo de mídia. Valores compatíveis:
|
Resultados
Resultados | Tipo | Descrição |
---|---|---|
cameraStreamAuthToken |
String |
Um token de autenticação para o receptor específico autorizar o acesso ao stream. |
cameraStreamProtocol |
String |
Obrigatório. O formato de mídia para o qual o URL do stream aponta. Precisa ser um dos protocolos listados no parâmetro de comando Valores compatíveis:
|
Resultados que não são do WebRTC
Resultados | Tipo | Descrição |
---|---|---|
cameraStreamAccessUrl |
String |
Obrigatório. Endpoint de URL para recuperar o stream em tempo real no formato especificado por |
cameraStreamReceiverAppId |
String |
ID do receptor de transmissão para processar o stream da câmera quando o parâmetro |
Resultados do WebRTC
Resultados | Tipo | Descrição |
---|---|---|
cameraStreamSignalingUrl |
String |
Obrigatório. Endpoint de URL para recuperar e trocar protocolos de descrição de sessão (SDPs) da câmera e do cliente. O cliente precisa retornar o URL de sinalização que usa |
cameraStreamOffer |
String |
Ofereça um protocolo de descrição de sessão (SDP). |
cameraStreamIceServers |
String |
Representa os servidores de estabelecimento de conectividade interativa (ICE) usando uma string JSON codificada com a descrição de um RTCIceServer. Se você não especificar servidores STUN (Utilitários de travessia de sessão para NAT), a plataforma vai usar os servidores STUN públicos do Google por padrão. Os servidores TURN (Travessia usando relés em torno de NAT) são necessários apenas se você não puder garantir que os IPs / candidatos ICE fornecidos serão acessíveis publicamente (por exemplo, por um servidor de mídia, candidato ICE de host público, candidato ICE de retransmissão etc.). |
Exemplos
Mostrar a câmera da porta da frente (receptor do Google Cast padrão).
{ "cameraStreamAccessUrl": "https://fluffysheep.com/baaaaa.mp4", "cameraStreamProtocol": "progressive_mp4" }
Mostrar a câmera da porta da frente (receptor de transmissão personalizado).
{ "cameraStreamAccessUrl": "https://fluffysheep.com/baaaaa.mp4", "cameraStreamReceiverAppId": "1g2f89213hg", "cameraStreamAuthToken": "12657342190192783", "cameraStreamProtocol": "progressive_mp4" }
Mostrar a câmera da porta da frente (fluxo do WebRTC).
{ "cameraStreamIceServers": "[{\"urls\": \"stun:stun.l.partner.com:19302\"},{\"urls\":\"turn:192.158.29.39:3478?transport=udp\",\"credential\": \"JZEOEt2V3Qb0y27GRntt2u2PAYA=\",\"username\": \"28224511:1379330808\"},{\"urls\": \"turn:192.158.29.39:3478?transport=tcp\",\"credential\": \"JZEOEt2V3Qb0y27GRntt2u2PAYA=\",\"username\": \"28224511:1379330808\"}]", "cameraStreamSignalingUrl": "https://example.com/signaling/answer", "cameraStreamOffer": "o=- 4611731400430051336 2 IN IP4 127.0.0.1...", "cameraStreamProtocol": "webrtc" }
ERROS do dispositivo
Confira a lista completa de erros e exceções.Especificações do protocolo WebRTC
Os benefícios do uso do WebRTC são a baixa latência e a conversa unidirecional. O WebRTC usa um método POST
com um corpo POST
e uma resposta no formato JSON.
No momento, o WebRTC é compatível com a tela inteligente Google Nest e o Chromecast com Google TV.
Esta seção descreve os requisitos ao usar o protocolo de transmissão do WebRTC.
Tipo de dados | Parâmetros/definições |
---|---|
Cabeçalho de solicitação de sinalização |
O cabeçalho precisa atender a estes requisitos:
|
Parâmetros de solicitação de sinalização | A solicitação pode incluir estes parâmetros:
|
Parâmetros de resposta de sinalização | A resposta pode incluir estes parâmetros:
|
Requisitos e recomendações do WebRTC
- No momento, o Google oferece suporte à comunicação unidirecional (half-duplex).
- É necessário oferecer suporte a agrupamento e rtcp-mux.
- É necessário usar o (D)TLS 1.2 ou mais recente.
- Não há suporte para Trickle ICE. Todos os candidatos ICE precisam ser reunidos antes de enviar o SDP.
- É altamente recomendável incluir candidatos ICE UDP/IPv4, TCP/IPv4, UDP/IPv6 e TCP/IPv6 para aumentar a probabilidade de uma conexão bem-sucedida.
Resoluções de vídeo compatíveis:
- Mínimo:480p
- Máximo: 1080p
Codecs de vídeo compatíveis:
- VP8
- H.264
Codecs de áudio compatíveis:
- Opus (códec preferido)
- G.711/PCMU
- G.722
Compartilhamento de recursos entre origens
O compartilhamento de recursos entre origens (CORS) é um mecanismo que usa cabeçalhos HTTP adicionais para informar
aos navegadores que um aplicativo da Web em execução em uma origem pode acessar recursos selecionados de uma
origem diferente. O servidor que hospeda cameraStreamSignalingUrl
precisa responder com o seguinte cabeçalho:
Access-Control-Allow-Origin: https://www.gstatic.com
Exemplo de solicitação e resposta de sinalização
O exemplo a seguir mostra uma solicitação que o Google envia para seu serviço de sinalização e a resposta correspondente ao Google.
Header: Authentication: Bearer <cameraStreamAuthToken> Content-Type: application/json POST body: // When camera offer SDP is provided in the execution response, Google provides an answer SDP. { "action": "answer", "deviceId": "123", "sdp": "o=- 4611731400430051336 2 IN IP4 127.0.0.1..." } // When camera offer SDP is not provided in execution response, Google generates and provides an offer SDP. { "action": "offer", "deviceId": "123", "sdp": "o=- 4611731400430051336 2 IN IP4 127.0.0.1..." } // Close the current stream session. { "action": "end" "deviceId": "123" }
// Response to accept the answer SDP in the request. Response Code : 200 {} // Response to provide the answer SDP from the service provider. Response Code : 200 { // When the camera offer SDP is not provided in the execution response, // Google provides the answer SDP via the signaling response. "action": "answer" "sdp": "o=- 4611731400430051336 2 IN IP4 127.0.0.1..." } // Response to close current session. Response Code : 200 {}