Schema für Trait-Smartstream-Kamerastream
action.devices.traits.CameraStream
: Mit dieser Eigenschaft wird die Steuerung des Kamerastreams eines Geräts gesteuert.
Diese Eigenschaft gilt für Geräte, mit denen Videofeeds auf Smart Displays, Chromecast-fähige Geräte oder Smartphones gestreamt werden können. Im Großen und Ganzen sind dies Überwachungskameras oder Babykameras. Das gilt aber auch für komplexere Geräte, die mit einer Kamera ausgestattet sind, z. B. Geräte für Videokonferenzen oder Saugroboter mit Kamera.
Geräte-ATTRIBUTE
Geräte mit diesem Merkmal können im Rahmen des SYNC
-Vorgangs die folgenden Attribute melden. Weitere Informationen zum Verarbeiten von SYNC
-Intents finden Sie unter Intent-Auftragsausführung.
Attribute | Typ | Beschreibung |
---|---|---|
cameraStreamSupportedProtocols |
Array |
Erforderlich. Unterstützte Medientypen für den Kamerastream, nach Präferenz sortiert Normalerweise wird das erste Protokoll in diesem Array, das mit der Zieloberfläche kompatibel ist, angefordert. |
[item, ...] |
String |
Mediatyp Unterstützte Werte:
|
cameraStreamNeedAuthToken |
Boolesch |
Erforderlich. Gibt an, ob über |
Beispiele
Kamera mit mehreren Protokollen unterstützt kein Authentifizierungstoken.
{ "cameraStreamSupportedProtocols": [ "webrtc", "hls", "dash", "smooth_stream", "progressive_mp4" ], "cameraStreamNeedAuthToken": false }
Kamera, die ein einzelnes Protokoll unterstützt, für das ein Authentifizierungstoken erforderlich ist
{ "cameraStreamSupportedProtocols": [ "hls" ], "cameraStreamNeedAuthToken": true }
Unterstützte Streamingprotokolle
Diese Eigenschaft unterstützt die folgenden Streamingprotokolle:
webrtc
: WebRTChls
: HTTP-Livestreamingdash
: Dynamisches adaptives Streaming über HTTPsmooth_stream
: Smooth Streamingprogressive_mp4
: Progressive MP4 (meist bei Clips verwendet)
Gerätestatus
Keine.
BEISPIELE für Geräte
Geräte mit diesem Merkmal können im Rahmen des EXECUTE
-Vorgangs auf die folgenden Befehle reagieren. Weitere Informationen zum Verarbeiten von 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 abgespielt wird. |
SupportedStreamProtocols |
Array |
Erforderlich. Medientypen/-formate, die vom gewünschten Ziel unterstützt werden. |
[item, ...] |
String |
Mediatyp Unterstützte Werte:
|
Ergebnisse
Ergebnisse | Typ | Beschreibung |
---|---|---|
cameraStreamAuthToken |
String |
Ein Authentifizierungstoken für den bestimmten Empfänger, um den Zugriff auf den Stream zu autorisieren. Wenn |
cameraStreamProtocol |
String |
Erforderlich. Das Medienformat, auf das die Stream-URL verweist. Er sollte eines der im Unterstützte Werte:
|
WebRTC-Ergebnisse
Ergebnisse | Typ | Beschreibung |
---|---|---|
cameraStreamAccessUrl |
String |
Erforderlich. URL-Endpunkt zum Abrufen des Echtzeitstreams in dem von |
cameraStreamReceiverAppId |
String |
Streaming-Empfänger-ID, um den Kamerastream zu verarbeiten, wenn der Parameter |
WebRTC-Ergebnisse
Ergebnisse | Typ | Beschreibung |
---|---|---|
cameraStreamSignalingUrl |
String |
Erforderlich. URL-Endpunkt zum Abrufen und Austauschen von Protokollen für Sitzungsbeschreibungen (SDPs) von Kameras und Clients Der Client sollte die Signalisierungs-URL zurückgeben, die das |
cameraStreamOffer |
String |
Angebotsprotokoll der Angebotssitzung (SDP) |
cameraStreamIceServers |
String |
Stellt die ICC-Server (Interactive Connectivity Niederlassung) mithilfe 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 IP-Adressen / ICE-Kandidaten öffentlich zugänglich sind (z.B. über einen Medienserver, einen ICE-Kandidaten auf einem öffentlichen Host oder einen Relay-ICE). |
Beispiele
Zeige die Haustürkamera (Standard-Streamingempfänger).
{ "cameraStreamAccessUrl": "https://fluffysheep.com/baaaaa.mp4", "cameraStreamProtocol": "progressive_mp4" }
Zeig mir die Kamera an der Haustür (benutzerdefinierter Streamingempfänger).
{ "cameraStreamAccessUrl": "https://fluffysheep.com/baaaaa.mp4", "cameraStreamReceiverAppId": "1g2f89213hg", "cameraStreamAuthToken": "12657342190192783", "cameraStreamProtocol": "progressive_mp4" }
Zeig mir die Kamera an der Haustür (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
Hier finden Sie die vollständige Liste der Fehler und Ausnahmen.WebRTC-Protokollspezifikationen
Die Vorteile von WebRTC sind eine niedrige Latenz und einseitige Anrufe. WebRTC verwendet eine POST
-Methode mit einem POST
-Text und einer Antwort im JSON-Format.
WebRTC wird derzeit auf dem Google Nest Smart Display und Chromecast mit Google TV unterstützt.
Dieser Abschnitt enthält die Anforderungen für die Verwendung des WebRTC-Streamprotokolls.
Datentyp | Parameter/Definitionen |
---|---|
Anfrageheader für Signale |
Der Header sollte die folgenden Anforderungen erfüllen:
|
Signalisierungsanforderungsparameter | Die Anfrage kann die folgenden Parameter enthalten:
|
Signalantwortsignale | Die Antwort kann die folgenden Parameter enthalten:
|
WebRTC-Anforderungen und -Empfehlungen
- Google unterstützt derzeit die Einwegkommunikation (Halbduplex).
- Sie müssen die Gruppierung und rtcp-mux unterstützen.
- Sie müssen D)TLS 1.2 oder höher verwenden.
- „Trickle ICE“ wird nicht unterstützt. Bevor Sie den SDP senden, müssen Sie alle ICE-Kandidaten einholen.
- Wir empfehlen Ihnen dringend, UDP/IPv4-, TCP/IPv4-, UDP/IPv6- und TCP/IPv6-ICE-Kandidaten einzuschließen, um die Wahrscheinlichkeit einer erfolgreichen Verbindung zu erhöhen.
Unterstützte Videoauflösungen:
- Minimum:480p
- Maximum:1.080 p
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 zusätzliche HTTP-Header nutzt, um Browsern zu erlauben, einer Webanwendung, die bei einem Ursprung ausgeführt wird, den Zugriff auf ausgewählte Ressourcen aus einem anderen Ursprung 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 eine Signalisierungsanfrage und -antwort
Das folgende Beispiel zeigt eine Anfrage, die Google an Ihren Signalisierungsservice 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 {}