Witamy w Google Home Developer Center – nowym miejscu, z którego dowiesz się, jak tworzyć inteligentne działania domowe. Uwaga: nadal będziesz tworzyć działania w konsoli Actions.
Zadbaj o dobrą organizację dzięki kolekcji Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.

Schemat Tradycji inteligentnego kamery HomeHome

action.devices.traits.CameraStream – ta cecha określa, jak sterować strumieniem z urządzenia.

Ten atrybut należy do urządzeń, które mogą odtwarzać treści wideo na inteligentnych ekranach, urządzeniach obsługujących Chromecasta lub smartfonach. Mówią też, że są to kamery monitoringu lub dziecięce. Ta cecha dotyczy też bardziej złożonych urządzeń, na których znajduje się kamera (np. urządzeń do prowadzenia rozmów wideo lub robota odkurzającego z kamerą).

ATRYBUTY urządzenia

W ramach operacji SYNC urządzenia z tą cechą mogą zgłaszać wymienione poniżej atrybuty. Więcej informacji o obsłudze intencji SYNC znajdziesz w sekcji Realizacja intencji.

Atrybuty Typ Opis
cameraStreamSupportedProtocols Tablica

Wymagany.

Obsługiwane typy multimediów dla kamery w kolejności zgodnej z preferencjami. Zwykle wymagany jest pierwszy protokół w tej tablicy, który jest zgodny z platformą docelową.

[item, ...] Ciąg

Typ multimediów.

Obsługiwane wartości:

hls
Transmisja na żywo przez HTTP
dash
dynamiczne adaptacyjne strumieniowe przesyłanie danych przez HTTP
smooth_stream
Płynne odtwarzanie
progressive_mp4
Progresywne MP4 (używane głównie do klipów)
webrtc
WebRTC
cameraStreamNeedAuthToken Wartość logiczna

Wymagany.

Określa, czy token uwierzytelniający będzie dostarczany przez platformę cameraStreamAuthToken dla obszaru docelowego do strumieniowego przesyłania danych z kamery.

Przykłady

Kamera obsługuje wiele protokołów i nie wymaga tokena uwierzytelniania.

{
  "cameraStreamSupportedProtocols": [
    "webrtc",
    "hls",
    "dash",
    "smooth_stream",
    "progressive_mp4"
  ],
  "cameraStreamNeedAuthToken": false
}

Aparat obsługujący 1 protokół, wymagający tokena uwierzytelniania.

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

Obsługiwane protokoły strumieniowania

Ten atrybut obsługuje następujące protokoły przesyłania strumieniowego:

Urządzenie STATES

Brak.

Polecenie urządzenia

W ramach operacji EXECUTE urządzenia z tą cechą mogą odpowiadać na podane niżej polecenia. Więcej informacji o obsłudze intencji EXECUTE znajdziesz w sekcji Realizacja intencji.

action.devices.commands.GetCameraStream

Parametry

Parametry Typ Opis
StreamToChromecast Wartość logiczna

Wymagany.

Określa, czy strumień będzie odtwarzany na urządzeniu Chromecast.

SupportedStreamProtocols Tablica

Wymagany.

Typy/formaty multimediów obsługiwane przez żądane miejsce docelowe.

[item, ...] Ciąg

Typ multimediów.

Obsługiwane wartości:

hls
Transmisja na żywo przez HTTP
dash
dynamiczne adaptacyjne strumieniowe przesyłanie danych przez HTTP
smooth_stream
Płynne odtwarzanie
progressive_mp4
Progresywne MP4 (używane głównie do klipów)
webrtc
WebRTC

Wyniki

Wyniki Typ Opis
cameraStreamAuthToken Ciąg

Token uwierzytelniania określonego odbiornika, aby autoryzować dostęp do strumienia. Jeśli zasada cameraStreamNeedAuthToken ma wartość Prawda i nie została podana, jako tokeny uwierzytelniania będą używane dane logowania OAuth użytkownika.

cameraStreamProtocol Ciąg

Wymagany.

Format multimediów, do którego odwołuje się URL strumienia. Powinien to być jeden z protokołów wymienionych w parametrze polecenia SupportedStreamProtocols.

Obsługiwane wartości:

hls
Transmisja na żywo przez HTTP
dash
Dynamiczne strumieniowe przesyłanie adaptacyjne przez HTTP
smooth_stream
Płynne odtwarzanie
progressive_mp4
Progresywne MP4 (używane głównie do klipów)
webrtc
WebRTC

Wyniki spoza WebRTC

Wyniki Typ Opis
cameraStreamAccessUrl Ciąg

Wymagany.

Punkt końcowy adresu URL służący do pobierania strumienia w czasie rzeczywistym w formacie określonym przez cameraStreamProtocol.

cameraStreamReceiverAppId Ciąg

Identyfikator odbiornika przesyłania danych z kamery, gdy parametr StreamToChromecast ma wartość Prawda. Jeśli nie, zostanie użyty domyślny odbiornik.

Wyniki WebRTC

Wyniki Typ Opis
cameraStreamSignalingUrl Ciąg

Wymagany.

Punkt końcowy adresu URL służący do pobierania i wymiany protokołów opisu sesji kamery i klienta (SDP). Klient powinien zwrócić URL sygnału ostrzegawczego, który używa cameraStreamAuthToken jako tokena uwierzytelniania w nagłówku żądania.

cameraStreamOffer Ciąg

Protokół opisu sesji oferty (SDP).

cameraStreamIceServers Ciąg

Reprezentuje serwery ICE (Interactive Connectivity Instytucja), używając zakodowanego ciągu JSON z opisem RTCIceServer. Jeśli nie określisz serwerów STUN (Session Traversal Utilities for NAT), domyślnie platformą będą publiczne serwery STUN. Serwery TURN (Traversal using Relay wokół NAT) są wymagane tylko wtedy, gdy nie można zagwarantować, że adresy IP / kandydaci do ICE będą dostępne publicznie (np.przez serwer multimedialny, kandydat do ICE, publiczny przekaźnik itp.).

Przykłady

Pokaż kamerę przy drzwiach wejściowych (domyślny odbiornik Cast).

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

Pokaż kamerę przy drzwiach wejściowych (niestandardowy odbiornik Cast)

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

Pokaż kamerę przy drzwiach wejściowych (strumień 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"
}

Urządzenie ERRORS

Zobacz pełną listę błędów i wyjątków.

Specyfikacje protokołu WebRTC

Zalety korzystania z WebRTC to małe opóźnienia i jednokierunkowa obsługa. WebRTC używa metody POST z treścią POST i odpowiedzią w formacie JSON.

WebRTC jest obecnie obsługiwany na inteligentnych ekranach i Chromecastach Google Nest w Google TV.

W tej sekcji znajdziesz wymagania dotyczące korzystania z protokołu strumienia WebRTC.

Typ danych Parametry/definicje
Nagłówek żądania sygnału

Nagłówek powinien spełniać te wymagania:

  • Uwierzytelnianie: nagłówek uwierzytelniania powinien używać tokena uwierzytelniania z wartości zwróconej przez GetCameraStream dla cameraStreamAuthToken z tokenem typu Bearer.
  • Typ treści: application/json.
Parametry żądania sygnału

Żądanie może zawierać te parametry:

  • action: ciąg znaków. Prawidłowe wartości to:
    • offer: oferta wiadomości SDP od dostawcy.
    • answer: odpowiedz na wiadomość SDP od dostawcy.
    • end: zamknij bieżącą sesję.
  • deviceId: ciąg znaków. Identyfikator urządzenia podany w żądaniu SYNC lub EXECUTE.
  • sdp: ciąg znaków. Zawiera komunikat protokołu Session Description Protocol dotyczący połączenia peera. Treść jest oparta na wartości parametru action. Jeśli action ma wartość „end”, ten parametr może być pusty.
Sygnały odpowiedzi

Odpowiedź może zawierać te parametry:

  • action: ciąg znaków. Wartość odpowiedzi musi być typu answer.
  • sdp: ciąg znaków. Komunikat SDP dotyczący odpowiedzi.

Wymagania i zalecenia dotyczące WebRTC

  • Google obecnie obsługuje komunikację jednokierunkową (połówkową)
  • Musisz obsługiwać grupowanie i rtcp-mux.
  • Musisz używać protokołu (D)TLS 1.2 lub nowszego.
  • Trick Trice nie jest obsługiwany. Wszyscy kandydaci do ICE muszą najpierw zostać zebrani przed wysłaniem SDP.
  • Zdecydowanie zalecamy uwzględnienie kandydatów UDP/IPv4, TCP/IPv4, UDP/IPv6 i TCP/IPv6 ICE, aby zwiększyć prawdopodobieństwo udanego połączenia.

Obsługiwane rozdzielczości wideo:

  • Minimalna: 480p.
  • Maksymalnie: 1080p

Obsługiwane kodeki wideo:

  • VP8
  • H.264

Obsługiwane kodeki audio:

  • Opus (preferowany kodek)
  • G.711/PCMU
  • G.722

Udostępnianie zasobów z innych domen

Cross-Origin Resource Share (CORS) to mechanizm, który korzysta z dodatkowych nagłówków HTTP, by poinformować przeglądarki, że aplikacja internetowa działająca w jednym miejscu może uzyskać dostęp do wybranych zasobów z innego źródła. Serwer hostujący cameraStreamSignalingUrl powinien odpowiedzieć tym nagłówkiem:

Access-Control-Allow-Origin: https://www.gstatic.com

Przykładowe żądanie sygnału i odpowiedź

Poniższy przykład pokazuje żądanie, które Google wysyła do Twojej usługi Signals i odpowiadającą jej odpowiedź.

Prośba
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"
}

Odpowiedź
// 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
{}