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:

hls
HTTP-Livestreaming
dash
Dynamisches adaptives Streaming über HTTP
smooth_stream
Smooth-Streaming
progressive_mp4
Progressive MP4-Dateien (hauptsächlich für Clips)
webrtc
WebRTC
cameraStreamNeedAuthToken Boolesch

Erforderlich.

Gibt an, ob über cameraStreamAuthToken ein Authentifizierungstoken für die Zieloberfläche angegeben wird, um den Kamerafeed zu streamen.

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:

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:

hls
HTTP-Livestreaming
dash
Dynamisches adaptives Streaming über HTTP
smooth_stream
Smooth-Streaming
progressive_mp4
Progressive MP4-Dateien (hauptsächlich für Clips)
webrtc
WebRTC

Ergebnisse

Ergebnisse Typ Beschreibung
cameraStreamAuthToken String

Ein Authentifizierungstoken für den bestimmten Empfänger, um den Zugriff auf den Stream zu autorisieren. Wenn cameraStreamNeedAuthToken auf „true“ gesetzt ist und dieser Wert nicht angegeben wird, werden die OAuth-Anmeldedaten des Nutzers als Authentifizierungstoken verwendet.

cameraStreamProtocol String

Erforderlich.

Das Medienformat, auf das die Stream-URL verweist. Er sollte eines der im SupportedStreamProtocols-Befehlsparameter aufgeführten Protokolle sein.

Unterstützte Werte:

hls
HTTP-Livestreaming
dash
Dynamisches adaptives Streaming über HTTP
smooth_stream
Smooth-Streaming
progressive_mp4
Progressive MP4-Dateien (hauptsächlich für Clips)
webrtc
WebRTC

WebRTC-Ergebnisse

Ergebnisse Typ Beschreibung
cameraStreamAccessUrl String

Erforderlich.

URL-Endpunkt zum Abrufen des Echtzeitstreams in dem von cameraStreamProtocol angegebenen Format.

cameraStreamReceiverAppId String

Streaming-Empfänger-ID, um den Kamerastream zu verarbeiten, wenn der Parameter StreamToChromecast wahr ist. Wenn nicht angegeben, wird der Standardempfänger verwendet.

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 cameraStreamAuthToken als Authentifizierungstoken im Anfrageheader verwendet.

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:

  • Authentifizierung: Für den Authentifizierungsheader sollte das Authentifizierungstoken aus dem GetCameraStream-Rückgabewert für cameraStreamAuthToken mit dem Tokentyp Bearer verwendet werden.
  • Inhaltstyp: application/json
Signalisierungsanforderungsparameter

Die Anfrage kann die folgenden Parameter enthalten:

  • action: String. Gültige Werte sind:
    • offer: Hiermit wird die SDP-Nachricht vom Anbieter angeboten.
    • answer: Antwort der SDP-Nachricht vom Anbieter.
    • end: Schließt die aktuelle Sitzung.
  • deviceId: String. Die in einer SYNC- oder EXECUTE-Anfrage gemeldete Geräte-ID.
  • sdp: String. Enthält die Session Description Protocol-Nachricht für die Peer-Verbindung. Der Inhalt basiert auf dem Wert des Parameters action. Wenn für action „end“ angegeben ist, kann dieser Parameter leer sein.
Signalantwortsignale

Die Antwort kann die folgenden Parameter enthalten:

  • action: String. Der Wert der Antwort muss vom Typ answer sein.
  • sdp: String. SDP-Nachricht für die antwortende Antwort.

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.

Anfrage
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"
}

Antwort
// 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
{}