Willkommen beim Google Home Developer Center, der neuen Anlaufstelle für Smart-Home-Aktionen. Hinweis:Sie erstellen weiterhin Aktionen in der Actions Console.
Mit Sammlungen den Überblick behalten Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.

Schemaschema für Smartstream-Kamerastream

action.devices.traits.CameraStream: In diesem Feld wird beschrieben, wie Sie den Kamerastream eines Geräts steuern.

Diese Eigenschaft gehört zu Geräten mit der Möglichkeit, Videofeeds auf Smart Displays, Chromecast-fähigen Geräten oder Smartphones zu streamen. Im Großen und Ganzen sind dies Überwachungskameras und Babykameras. Diese Eigenschaft gilt jedoch auch für komplexere Geräte, auf denen eine Kamera verwendet wird, z. B. Geräte für Videokonferenzen oder einen Staubsauger mit einer Kamera.

Gerät ATTRIBUTE

Geräte mit diesem Attribut können die folgenden Attribute als Teil des Vorgangs SYNC melden. 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, nach Wunsch sortiert. Normalerweise wird das erste Protokoll in diesem Array, das mit der Zieloberfläche kompatibel ist, angefordert.

[item, ...] String

Medientyp.

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 ein Authentifizierungstoken über cameraStreamAuthToken für die Zieloberfläche zum Streamen des Kamerafeeds bereitgestellt wird.

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 und ein Authentifizierungstoken erfordert

{
  "cameraStreamSupportedProtocols": [
    "hls"
  ],
  "cameraStreamNeedAuthToken": true
}

Unterstützte Streamingprotokolle

Dieses Merkmal unterstützt die folgenden Streamingprotokolle:

Gerät STATES

Keine.

Gerätebefehle

Geräte mit diesem Attribut 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:

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 jeweiligen Empfänger, um den Zugriff auf den Stream zu autorisieren. Wenn cameraStreamNeedAuthToken „true“ ist und dieser Wert nicht angegeben ist, werden die OAuth-Anmeldedaten des Nutzers als Authentifizierungstoken verwendet.

cameraStreamProtocol String

Erforderlich.

Das Medienformat, auf das die Stream-URL verweist. Es sollte eines der im Befehl SupportedStreamProtocols 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

Nicht-WebRTC-Ergebnisse

Ergebnisse Typ Beschreibung
cameraStreamAccessUrl String

Erforderlich.

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

cameraStreamReceiverAppId String

Die Cast-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 von Kameras und Clients. Der Client sollte die Signalisierungs-URL zurückgeben, die cameraStreamAuthToken als Authentifizierungstoken im Anfrageheader verwendet.

cameraStreamOffer String

Protokoll für die Angebotssitzung (SDP)

cameraStreamIceServers String

Stellt die ICE-Server (Interactive Connectivity Setup) dar, die einen codierten JSON-String mit der Beschreibung eines RTCIceServer verwenden. Wenn Sie keine STUN-Server (Session Traversal Utilities for NAT) angeben, verwendet die Plattform standardmäßig die öffentlichen STUN-Server von Google. TURN-Server (Traversal Using Relaysround NAT) sind nur erforderlich, wenn Sie nicht garantieren können, dass die angegebenen IP-Adressen / ICE-Kandidaten öffentlich zugänglich sind (z.B. über einen Medienserver, einen ICE-Kandidaten für den öffentlichen Host oder einen Relay-ICE).

Beispiele

Zeige die Haustürkamera (Standard-Cast-Empfänger).

{
  "cameraStreamAccessUrl": "https://fluffysheep.com/baaaaa.mp4",
  "cameraStreamProtocol": "progressive_mp4"
}

Zeig mir die Haustürkamera (benutzerdefinierter Cast-Empfänger).

{
  "cameraStreamAccessUrl": "https://fluffysheep.com/baaaaa.mp4",
  "cameraStreamReceiverAppId": "1g2f89213hg",
  "cameraStreamAuthToken": "12657342190192783",
  "cameraStreamProtocol": "progressive_mp4"
}

Zeig mir die Haustürkamera (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

Vollständige Liste der Fehler und Ausnahmen

WebRTC-Protokollspezifikationen

Die Vorteile von WebRTC sind eine niedrige Latenz und unidirektionale Sprechzeiten. WebRTC verwendet eine POST-Methode mit einem POST-Text und einer Antwort im JSON-Format.

WebRTC wird derzeit nur auf Smart-Displays von Google Nest unterstützt.

In diesem Abschnitt werden die Anforderungen bei Verwendung des WebRTC-Stream-Protokolls beschrieben.

Datentyp Parameter/Definitionen
Signalisierungs-Anfrageheader

Der Header sollte die folgenden Anforderungen erfüllen:

  • Authentifizierung: Der Authentifizierungsheader sollte das Authentifizierungstoken aus dem Rückgabewert GetCameraStream für cameraStreamAuthToken mit dem Tokentyp Bearer verwenden.
  • Inhaltstyp: application/json
Parameter für Signalisierungsanfragen

Die Anfrage kann die folgenden Parameter enthalten:

  • action: String. Gültige Werte sind:
    • offer: bietet eine SDP-Nachricht vom Anbieter an.
    • answer: Antwort der SDP-Nachricht vom Anbieter.
    • end: Aktuelle Sitzung schließen.
  • 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 action auf „end“ gesetzt ist, kann dieser Parameter leer sein.
Signalantwortparameter

Die Antwort kann die folgenden Parameter enthalten:

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

Anforderungen und Empfehlungen für WebRTC

  • Google unterstützt derzeit die Einwegkommunikation (Halbduplex).
  • Bundling und rtcp-mux müssen unterstützt werden.
  • Sie müssen (D)TLS 1.2 oder höher verwenden.
  • Trickle ICE wird nicht unterstützt. Alle ICE-Kandidaten müssen zuerst vor dem Senden des SDP gesammelt werden.
  • Es wird dringend empfohlen, 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: 480 p
  • Maximum: 1.080p

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 mit zusätzlichen HTTP-Headern anweist, einer Webanwendung an einem Ursprung den Zugriff auf ausgewählte Ressourcen aus einem anderen Ursprung zu erlauben. 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 Anfrage und Antwort zur Signalisierung

Das folgende Beispiel zeigt eine Anfrage, die Google an Ihren Signalisierungsdienst sendet, sowie 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
{}