Schéma du flux de la caméra connectée pour la maison
action.devices.traits.CameraStream
: cette caractéristique décrit comment contrôler le flux de la caméra d'un appareil.
Cette caractéristique est associée aux appareils qui peuvent diffuser des flux vidéo en streaming sur des écrans connectés, des appareils compatibles Chromecast ou des smartphones. De façon générale, il s'agit de caméras de sécurité ou de caméras pour bébés. Toutefois, cette caractéristique est également valable pour les appareils plus complexes équipés d'une caméra (par exemple, les appareils de visioconférence ou les robots aspirateurs dotés d'une caméra).
ATTRIBUTS de l'appareil
Les appareils disposant de cette caractéristique peuvent signaler les attributs suivants lors de l'opération SYNC
. Pour en savoir plus sur la gestion des intents SYNC
, consultez Traitement des intents.
Attributs | Type | Description |
---|---|---|
cameraStreamSupportedProtocols |
Array |
Obligatoire. Types de médias compatibles avec le flux de la caméra, classés par préférence. En règle générale, le premier protocole de ce tableau compatible avec la surface cible est demandé. |
[item, ...] |
String |
Type de média. Valeurs acceptées :
|
cameraStreamNeedAuthToken |
Booléen |
Obligatoire. Indique si un jeton d'authentification sera fourni via |
Exemples
Caméra compatible avec plusieurs protocoles, ne nécessitant pas de jeton d'authentification.
{ "cameraStreamSupportedProtocols": [ "webrtc", "hls", "dash", "smooth_stream", "progressive_mp4" ], "cameraStreamNeedAuthToken": false }
Caméra compatible avec un seul protocole, nécessitant un jeton d'authentification.
{ "cameraStreamSupportedProtocols": [ "hls" ], "cameraStreamNeedAuthToken": true }
Protocoles de streaming compatibles
Cette caractéristique est compatible avec les protocoles de streaming suivants:
webrtc
: WebRTChls
: diffusion en direct HTTPdash
: streaming adaptatif dynamique via HTTPsmooth_stream
: Streaming fluideprogressive_mp4
: MP4 progressif (principalement utilisé pour les extraits)
Appareil STATES
Aucun.
Appareil COMMANDS
Les appareils disposant de cette caractéristique peuvent répondre aux commandes suivantes dans le cadre de l'opération EXECUTE
. Pour en savoir plus sur la gestion des intents EXECUTE
, consultez Traitement des intents.
action.devices.commands.GetCameraStream
Paramètres
Paramètres | Type | Description |
---|---|---|
StreamToChromecast |
Booléen |
Obligatoire. Indique si le flux sera lu sur un appareil Chromecast. |
SupportedStreamProtocols |
Array |
Obligatoire. Types et formats de supports acceptés par la destination souhaitée. |
[item, ...] |
String |
Type de média. Valeurs acceptées :
|
Résultats
Résultats | Type | Description |
---|---|---|
cameraStreamAuthToken |
String |
Jeton d'authentification pour le destinataire spécifique afin d'autoriser l'accès au flux. Si |
cameraStreamProtocol |
String |
Obligatoire. Format multimédia vers lequel l'URL de flux renvoie. Il doit s'agir de l'un des protocoles répertoriés dans le paramètre de commande Valeurs acceptées :
|
Résultats hors WebRTC
Résultats | Type | Description |
---|---|---|
cameraStreamAccessUrl |
String |
Obligatoire. Point de terminaison de l'URL pour récupérer le flux en temps réel au format spécifié par |
cameraStreamReceiverAppId |
String |
ID du récepteur de cast pour traiter le flux de la caméra lorsque le paramètre |
Résultats WebRTC
Résultats | Type | Description |
---|---|---|
cameraStreamSignalingUrl |
String |
Obligatoire. Point de terminaison de l'URL permettant de récupérer et d'échanger les protocoles de description de session (SDP) pour les caméras et les clients. Le client doit renvoyer l'URL de signalement qui utilise |
cameraStreamOffer |
String |
Protocole de description de session d'offre (SDP). |
cameraStreamIceServers |
String |
Représente les serveurs ICE (Interactive Connectivity Establishment) à l'aide d'une chaîne JSON encodée avec la description d'un serveur RTCIceServer. Si vous ne spécifiez pas de serveurs STUN (Session Traversal Utilities for NAT), la plate-forme utilise par défaut les serveurs STUN publics de Google. Turn (Traversal Using Relaystour NAT) n'est obligatoire que si vous ne pouvez pas garantir que les adresses IP / les candidats ICE fournis seront accessibles au public (par exemple, via un serveur multimédia, un candidat ICE public d'hôte, un candidat ICE de relais, etc.). |
Exemples
Afficher la caméra de la porte d'entrée (récepteur Cast par défaut)
{ "cameraStreamAccessUrl": "https://fluffysheep.com/baaaaa.mp4", "cameraStreamProtocol": "progressive_mp4" }
Afficher la caméra de la porte d'entrée (récepteur Cast personnalisé)
{ "cameraStreamAccessUrl": "https://fluffysheep.com/baaaaa.mp4", "cameraStreamReceiverAppId": "1g2f89213hg", "cameraStreamAuthToken": "12657342190192783", "cameraStreamProtocol": "progressive_mp4" }
Afficher la caméra de la porte d'entrée (flux 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" }
ERREURS sur l'appareil
Consultez la liste complète des erreurs et exceptions.Spécifications du protocole WebRTC
Les avantages de WebRTC sont une faible latence et une communication bidirectionnelle. WebRTC utilise une méthode POST
avec un corps POST
et une réponse au format JSON.
WebRTC est actuellement compatible avec les écrans connectés Google Nest et Chromecast avec Google TV.
Cette section décrit les conditions requises pour utiliser le protocole de flux WebRTC.
Type de données | Paramètres/Définitions |
---|---|
En-tête de requête de signalisation |
L'en-tête doit répondre aux exigences suivantes:
|
Signalisation des paramètres de requête | La requête peut inclure les paramètres suivants:
|
Signalisation des paramètres de réponse | La réponse peut inclure les paramètres suivants:
|
Exigences et recommandations de WebRTC
- Google prend actuellement en charge la communication unidirectionnelle.
- Vous devez accepter le regroupement et rtcp-mux.
- Vous devez utiliser (D)TLS 1.2 ou une version ultérieure.
- Trickle ICE n'est pas compatible. Tous les candidats ICE doivent d'abord être recueillis avant d'envoyer le SDP.
- Il est fortement recommandé d'inclure des candidats UDP/IPv4, TCP/IPv4, UDP/IPv6 et TCP/IPv6 ICE afin d'augmenter la probabilité de réussite de la connexion.
Résolutions vidéo compatibles:
- Minimum:480p
- Maximum:1080p
Codecs vidéo compatibles:
- VP8
- H.264
Codecs audio compatibles:
- Opus (codec préféré)
- G.711/PCMU
- G.722
Partage de ressources entre origines
Le partage de ressources inter-origines (CORS) est un mécanisme qui utilise des en-têtes HTTP supplémentaires pour indiquer aux navigateurs d'autoriser une application Web s'exécutant sur une origine à accéder aux ressources sélectionnées à partir d'une autre origine. Le serveur hébergeant cameraStreamSignalingUrl
doit répondre avec l'en-tête suivant:
Access-Control-Allow-Origin: https://www.gstatic.com
Exemple de requête et de réponse de signalisation
L'exemple suivant montre une requête que Google envoie à votre service de signalement et la réponse correspondante à 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 {}