Esquema de la función de cámara inteligente de Home Stream
action.devices.traits.CameraStream
: Esta característica describe cómo controlar la transmisión de la cámara de un dispositivo.
Esta característica pertenece a los dispositivos que pueden transmitir feeds de video a pantallas inteligentes, dispositivos compatibles con Chromecast o smartphones. Por lo general, son cámaras de seguridad o cámaras para bebés. Sin embargo, esta característica también se aplica a dispositivos más complejos que tienen una cámara (por ejemplo, dispositivos de videoconferencia o un robot de aspiradora con una cámara).
ATRIBUTOS DEL Dispositivo
Los dispositivos con esta característica pueden informar los siguientes atributos como parte de la operación SYNC
. Para obtener más información sobre cómo manejar los intents SYNC
, consulta Entrega de intents.
Atributos | Tipo | Descripción |
---|---|---|
cameraStreamSupportedProtocols |
Matriz |
Obligatorio. Tipos de medios compatibles para la transmisión de la cámara, ordenados por preferencia. Por lo general, se solicita el primer protocolo de este arreglo que es compatible con la superficie de destino. |
[item, ...] |
String |
Tipo de medio. Valores admitidos:
|
cameraStreamNeedAuthToken |
Booleano |
Obligatorio. Indica si se proporcionará un token de autenticación a través de |
Ejemplos
La cámara es compatible con varios protocolos y no requiere un token de autenticación.
{ "cameraStreamSupportedProtocols": [ "webrtc", "hls", "dash", "smooth_stream", "progressive_mp4" ], "cameraStreamNeedAuthToken": false }
Cámara que admite un solo protocolo y requiere un token de autenticación
{ "cameraStreamSupportedProtocols": [ "hls" ], "cameraStreamNeedAuthToken": true }
Protocolos de transmisión compatibles
Esta característica admite los siguientes protocolos de transmisión:
webrtc
: WebRTChls
: Transmisión en vivo HTTPdash
: Transmisión adaptable y dinámica a través de HTTPsmooth_stream
: Transmisión fluidaprogressive_mp4
: MP4 progresivo (que se usa principalmente para clips)
Dispositivo STATEs
Ninguna
Dispositivo COMMAND
Los dispositivos con esta característica pueden responder a los siguientes comandos como parte de la operación EXECUTE
. Para obtener más información sobre cómo manejar los intents EXECUTE
, consulta Entrega de intents.
action.devices.commands.GetCameraStream
Parámetros
Parámetros | Tipo | Descripción |
---|---|---|
StreamToChromecast |
Booleano |
Obligatorio. Indica si la transmisión se reproducirá en un dispositivo Chromecast. |
SupportedStreamProtocols |
Matriz |
Obligatorio. Tipos/medios de medios compatibles con el destino deseado |
[item, ...] |
String |
Tipo de medio. Valores admitidos:
|
Resultados
Resultados | Tipo | Descripción |
---|---|---|
cameraStreamAuthToken |
String |
Un token de autenticación para que el receptor específico autorice el acceso a la transmisión. Si |
cameraStreamProtocol |
String |
Obligatorio. El formato de medios al que apunta la URL de la transmisión. Debe ser uno de los protocolos que se enumeran en el parámetro de comando Valores admitidos:
|
Resultados que no sean de WebRTC
Resultados | Tipo | Descripción |
---|---|---|
cameraStreamAccessUrl |
String |
Obligatorio. Extremo de URL para recuperar la transmisión en tiempo real en el formato especificado por |
cameraStreamReceiverAppId |
String |
ID de receptor de transmisión para procesar la transmisión de la cámara cuando el parámetro |
Resultados de WebRTC
Resultados | Tipo | Descripción |
---|---|---|
cameraStreamSignalingUrl |
String |
Obligatorio. Extremo de URL para recuperar e intercambiar protocolos de descripción de sesión (SDP) de cámaras y clientes El cliente debe mostrar la URL de señalización que usa |
cameraStreamOffer |
String |
Protocolo de descripción de sesiones de oferta (SDP). |
cameraStreamIceServers |
String |
Representa los servidores del establecimiento de conectividad interactiva (ICE) mediante una string JSON codificada con la descripción de un RTCIceServer. Si no especificas los servidores de STUN (Session Traversal Utilities for NAT), la plataforma usa de forma predeterminada los servidores de STUN públicos de Google. Los servidores TURN (Recorrido mediante relés en torno a NAT) solo son necesarios si no puedes garantizar que las direcciones IP o los candidatos de ICE proporcionados sean de acceso público (p.ej., mediante un servidor de medios, un candidato de ICE del host público, un candidato de ICE de retransmisión, etcétera). |
Ejemplos
Muestra la cámara de la puerta principal (receptor de transmisión predeterminado).
{ "cameraStreamAccessUrl": "https://fluffysheep.com/baaaaa.mp4", "cameraStreamProtocol": "progressive_mp4" }
Muestra la cámara de la puerta principal (receptor de transmisión personalizado).
{ "cameraStreamAccessUrl": "https://fluffysheep.com/baaaaa.mp4", "cameraStreamReceiverAppId": "1g2f89213hg", "cameraStreamAuthToken": "12657342190192783", "cameraStreamProtocol": "progressive_mp4" }
Muestra la cámara de la puerta principal (transmisión de 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" }
Dispositivo ERRORS
Consulta la lista completa de errores y excepciones.Especificaciones del protocolo WebRTC
Los beneficios de usar WebRTC son las conversaciones unidireccionales y la latencia baja. WebRTC usa un método POST
con un cuerpo POST
y una respuesta en formato JSON.
WebRTC es compatible con la pantalla inteligente de Google Nest y los dispositivos Chromecast con Google TV.
En esta sección, se describen los requisitos para usar el protocolo de transmisión WebRTC.
Tipo de datos | Parámetros/Definiciones |
---|---|
Encabezado de la solicitud de señalización |
El encabezado debe cumplir con estos requisitos:
|
Parámetros de solicitud de señalización | La solicitud puede incluir estos parámetros:
|
Parámetros de respuesta de señalización | La respuesta puede incluir los siguientes parámetros:
|
Requisitos y recomendaciones de WebRTC
- Actualmente, Google admite la comunicación unidireccional (medio dúplex).
- Debes admitir la agrupación y rtcp-mux.
- Debes usar (D)TLS 1.2 o una versión posterior.
- No se admite Trickle ICE. Todos los candidatos de ICE se deben reunir antes de enviar el SDP.
- Se recomienda que incluya candidatos ICE en UDP/IPv4, TCP/IPv4, UDP/IPv6 y TCP/IPv6 para aumentar la probabilidad de una conexión exitosa.
Resoluciones de video compatibles:
- Mínimo: 480 p
- Máximo: 1080 p
Códecs de video compatibles:
- VP8
- H.264
Códecs de audio compatibles:
- Opus (códec preferido)
- G.711/PCMU
- G.722
Uso compartido de recursos entre dominios
El uso compartido de recursos multiorigen (CORS) es un mecanismo que usa encabezados HTTP adicionales para indicar a los navegadores que permiten que una aplicación web que se ejecuta en un origen acceda a los recursos seleccionados desde un origen diferente. El servidor que aloja cameraStreamSignalingUrl
debe responder con el siguiente encabezado:
Access-Control-Allow-Origin: https://www.gstatic.com
Ejemplo de solicitud y respuesta de señalización
En el siguiente ejemplo, se muestra una solicitud que Google envía a tu servicio de señalización y la respuesta correspondiente a 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 {}