Schema für Stream-Eigenschaften der Smart-Home-Kamera
action.devices.traits.CameraStream
: Diese Funktion beschreibt, wie der Kamerastream eines Geräts gesteuert wird.
Diese Eigenschaft gehört zu Geräten, die Videofeeds auf Smart Displays, Chromecast-fähige Geräte oder Smartphones streamen können. Im Wesentlichen handelt es sich dabei um Überwachungskameras oder Babykameras. Diese Eigenschaft gilt aber auch für komplexere Geräte mit einer Kamera, z. B. für Videokonferenzen oder einen Staubsaugerroboter mit Kamera.
Geräte-ATTRIBUTE
Geräte mit dieser Eigenschaft melden möglicherweise die folgenden Attribute im Rahmen des SYNC
-Vorgangs. Weitere Informationen zum Umgang mit SYNC
-Intents finden Sie unter Intent-Auftragsausführung.
Attribute | Typ | Beschreibung |
---|---|---|
cameraStreamSupportedProtocols |
Array |
Erforderlich. Unterstützte Medientypen für den Kamerastream, sortiert nach Präferenz In der Regel wird das erste Protokoll in diesem Array, das mit der Zieloberfläche kompatibel ist, angefordert. |
[item, ...] |
String |
Medientyp. Unterstützte Werte:
|
cameraStreamNeedAuthToken |
Boolesch |
Erforderlich. Gibt an, ob über |
Beispiele
Kamera mit Unterstützung für mehrere Protokolle, ohne dass ein Authentifizierungstoken erforderlich ist
{ "cameraStreamSupportedProtocols": [ "webrtc", "hls", "dash", "smooth_stream", "progressive_mp4" ], "cameraStreamNeedAuthToken": false }
Kamera, die ein einzelnes Protokoll unterstützt und ein Authentifizierungstoken erfordert
{ "cameraStreamSupportedProtocols": [ "hls" ], "cameraStreamNeedAuthToken": true }
Unterstützte Streaming-Protokolle
Diese Eigenschaft unterstützt die folgenden Streamingprotokolle:
webrtc
: WebRTChls
: HTTP-Livestreamingdash
: Dynamic Adaptive Streaming over HTTPsmooth_stream
: Smooth Streamingprogressive_mp4
: Progressive MP4 (meist für Clips verwendet)
Beim Streamen von hls
-, dash
-, smooth_stream
- und progressive_mp4
-Protokollen auf Übertragungsgeräte wie Chromecasts, Smart Displays und Chromecast-fähige Smart-TVs wird ein Cast Web Receiver gestartet, um den Stream zu verarbeiten und auf dem Gerät zu rendern. Es wird empfohlen, dass der Entwickler einen benutzerdefinierten Web Receiver erstellt, um Zugriff auf Debugging-Tools zu ermöglichen, das Spielerverhalten anzupassen, das UI-Branding anzupassen und Analysen einzubeziehen. Wenn du die Nutzung des benutzerdefinierten Empfängers aktivieren und die Verwendung des Standardempfängers deaktivieren möchtest, lege die ID der Empfänger-App fest, die bei der Registrierung deiner Cast-App im Feld cameraStreamReceiverAppId
der EXECUTE
-Antwort generiert wird.
Weitere Informationen zu Custom Web Receiver-Anwendungen finden Sie im Leitfaden zur Entwicklerwebsite.
Gerät STATES
Keine.
BEFEHLE auf Gerät
Geräte mit dieser Eigenschaft können im Rahmen des Vorgangs EXECUTE
auf die folgenden Befehle reagieren. Weitere Informationen zum Umgang mit EXECUTE
-Intents finden Sie unter Intent-Auftragsausführung.
action.devices.commands.GetCameraStream
Parameter
Parameter | Typ | Beschreibung |
---|---|---|
StreamToChromecast |
Boolesch |
Erforderlich. Gibt an, ob der Stream auf einem Chromecast-Gerät wiedergegeben wird. |
SupportedStreamProtocols |
Array |
Erforderlich. Vom gewünschten Ziel unterstützte Medientypen/-formate. |
[item, ...] |
String |
Medientyp. Unterstützte Werte:
|
Ergebnisse
Ergebnisse | Typ | Beschreibung |
---|---|---|
cameraStreamAuthToken |
String |
Ein Authentifizierungstoken für den jeweiligen Empfänger, um den Zugriff auf den Stream zu autorisieren. Wenn |
cameraStreamProtocol |
String |
Erforderlich. Das Medienformat, auf das die Stream-URL verweist. Es sollte eines der Protokolle sein, die im Befehlsparameter Unterstützte Werte:
|
Nicht-WebRTC-Ergebnisse
Ergebnisse | Typ | Beschreibung |
---|---|---|
cameraStreamAccessUrl |
String |
Erforderlich. URL-Endpunkt zum Abrufen des Echtzeitstreams im durch |
cameraStreamReceiverAppId |
String |
Streamingempfänger-ID zur Verarbeitung des Kamerastreams, wenn der Parameter „ |
WebRTC-Ergebnisse
Ergebnisse | Typ | Beschreibung |
---|---|---|
cameraStreamSignalingUrl |
String |
Erforderlich. URL-Endpunkt zum Abrufen und Austauschen von Session Description Protocols (SDPs) mit Kamera und Client. Der Client sollte die Signalisierungs-URL zurückgeben, die |
cameraStreamOffer |
String |
Offer Session Description Protocol (SDP): |
cameraStreamIceServers |
String |
Stellt die ICE-Server (Interactive Connectivity Einrichtung) unter Verwendung eines codierten JSON-Strings mit der Beschreibung eines RTCIceServer dar. Wenn Sie keine STUN-Server (Session Traversal Utilities for NAT) angeben, werden standardmäßig die öffentlichen STUN-Server von Google verwendet. TURN-Server (Traversal Using Relays around NAT) sind nur erforderlich, wenn Sie nicht garantieren können, dass die bereitgestellten IPs / ICE-Kandidaten öffentlich zugänglich sind (z. B. über einen Medienserver, einen öffentlichen Host-ICE-Kandidaten, einen Relay-ICE-Kandidaten usw.). |
Beispiele
Zeige die Haustürkamera (standardmäßiger Streamingempfänger).
{ "cameraStreamAccessUrl": "https://fluffysheep.com/baaaaa.mp4", "cameraStreamProtocol": "progressive_mp4" }
Zeig die Haustürkamera (benutzerdefinierter Streamingempfänger).
{ "cameraStreamAccessUrl": "https://fluffysheep.com/baaaaa.mp4", "cameraStreamReceiverAppId": "1g2f89213hg", "cameraStreamAuthToken": "12657342190192783", "cameraStreamProtocol": "progressive_mp4" }
Zeige die Haustürkamera an (WebRTC-Stream).
{ "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" }
Gerät ERRORS
Sehen Sie sich die vollständige Liste der Fehler und Ausnahmen an.WebRTC-Protokollspezifikationen
Die Vorteile der Verwendung von WebRTC sind niedrige Latenz und die Einweg-Kommunikation. WebRTC verwendet eine POST
-Methode mit einem POST
-Text und einer Antwort im JSON-Format.
WebRTC wird derzeit auf Smart Displays von Google Nest und Chromecast mit Google TV unterstützt.
In diesem Abschnitt werden die Anforderungen bei der Verwendung des WebRTC-Stream-Protokolls beschrieben.
Datentyp | Parameter/Definitionen |
---|---|
Header der Signalisierungsanfrage |
Der Header muss die folgenden Anforderungen erfüllen:
|
Parameter der Signalisierungsanfrage | Die Anfrage kann die folgenden Parameter enthalten:
|
Signalisierungsantwortparameter | Die Antwort kann die folgenden Parameter enthalten:
|
WebRTC-Anforderungen und -Empfehlungen
- Google unterstützt derzeit die 1-Wege-Kommunikation (Halbduplex).
- Sie müssen Bündelung und rtcp-mux unterstützen.
- Sie müssen (D)TLS 1.2 oder höher verwenden.
- Trickle ICE wird nicht unterstützt. Vor dem Senden des SDP müssen alle ICE-Kandidaten gesammelt werden.
- Es wird dringend empfohlen, UDP/IPv4-, TCP/IPv4-, UDP/IPv6- und TCP/IPv6 ICE-Kandidaten anzugeben, um die Wahrscheinlichkeit einer erfolgreichen Verbindung zu erhöhen.
Unterstützte Videoauflösungen:
- Minimum: 480 Pixel
- Maximal:1080p
Unterstützte Video-Codecs:
- VP8
- H.264
Unterstützte Audio-Codecs:
- Opus (bevorzugter Codec)
- G.711/PCMU
- G.722
Cross-Origin Resource Sharing
Cross-Origin Resource Sharing (CORS) ist ein Mechanismus, der Browser mithilfe zusätzlicher HTTP-Header anweist, einer Webanwendung, die an einem Ort ausgeführt wird, den Zugriff auf ausgewählte Ressourcen von einer anderen Quelle zu ermöglichen. Der Server, auf dem cameraStreamSignalingUrl
gehostet wird, sollte mit dem folgenden Header antworten:
Access-Control-Allow-Origin: https://www.gstatic.com
Beispiel für Signalanfrage und -antwort
Das folgende Beispiel zeigt eine Anfrage, die Google an Ihren Signalisierungsdienst sendet, und die entsprechende Antwort an 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 {}