Esquema de la función de cámara inteligente de la casa
action.devices.traits.CameraStream
: Esta característica abarca 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. En líneas generales, se trata de cámaras de seguridad o cámaras para bebés. Sin embargo, esta característica también se aplica a los dispositivos más complejos que tienen una cámara (por ejemplo, dispositivos de videoconferencia o un robot de vacío que tiene 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 el manejo de intents SYNC
, consulta Entrega de intents.
Atributos | Tipo | Descripción |
---|---|---|
cameraStreamSupportedProtocols |
Matriz |
Obligatorio. Tipos de medios compatibles con la transmisión de la cámara, ordenados por preferencia. Por lo general, se solicita el primer protocolo de este array que sea 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 compatible con un solo protocolo que 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
Ninguno
Dispositivo COMMANDS
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 el manejo de 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/formatos 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 contienen 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ámara y cliente El cliente debe mostrar la URL de señalización que usa el |
cameraStreamOffer |
String |
Protocolo de descripción de sesión 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 especifica los servidores STUN (Session Traversal Utilities for NAT), la plataforma usará los servidores STUN públicos de Google de forma predeterminada. Los servidores TURN (recorrido con relés en torno a NAT) solo son obligatorios si no puede garantizar que las direcciones IP o los candidatos ICE proporcionados serán de acceso público (p.ej., a través de un servidor de medios, candidato público de ICE, ICE, candidato de ICE, 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 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 la latencia baja y la conversación unidireccional. WebRTC usa un método POST
con un cuerpo POST
y una respuesta en formato JSON.
WebRTC es compatible con la pantalla inteligente Google Nest y dispositivos Chromecast con Google TV.
En esta sección, se describen los requisitos para usar el protocolo de transmisión de 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 los siguientes 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 (dúplex medio).
- Debe 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/IPv4, TCP/IPv4, UDP/IPv6 y ICE de TCP/IPv6 para aumentar la probabilidad de una conexión exitosa.
Resoluciones de video admitidas:
- Mínimo: 480 píxeles
- Máximo: 1080p
Códecs de video admitidos:
- 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 {}