Schemat atrybutu Smart Home CameraStream
Zadbaj o dobrą organizację dzięki kolekcji
Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.
action.devices.traits.CameraStream
– ta cecha obejmuje kontrolowanie strumienia kamery urządzenia.
Ta cecha dotyczy urządzeń, które mogą przesyłać strumieniowo strumienie wideo na inteligentne ekrany, urządzenia obsługujące Chromecasta lub smartfony. Zwykle są to kamery bezpieczeństwa lub elektroniczne nianie. Ta cecha dotyczy też bardziej złożonych urządzeń z kamerą (np. urządzeń do wideokonferencji czy robotów sprzątających z kamerą).
ATRYBUTY URZĄDZENIA
Urządzenia z tą cechą mogą raportować te atrybuty w ramach operacji SYNC
. Więcej informacji o obsługiwaniu intencji SYNC
znajdziesz w artykule Realizacja intencji.
Atrybuty | Typ | Opis |
---|---|---|
cameraStreamSupportedProtocols |
Tablica |
Wymagany. Obsługiwane typy multimediów dla strumienia z kamery, posortowane według preferencji. Zazwyczaj wysyłane jest żądanie dotyczące pierwszego protokołu w tym tablicy, który jest zgodny z docelową powierzchnią. |
[item, ...] |
String |
Typ multimediów. Obsługiwane wartości:
|
cameraStreamNeedAuthToken |
Wartość logiczna |
Wymagany. Wskazuje, czy do strumieniowego przesyłania danych z kamery wymagany jest token autoryzacji. |
Przykłady
Kamera obsługująca wiele protokołów, która nie wymaga tokena uwierzytelniania.
{ "cameraStreamSupportedProtocols": [ "webrtc", "hls", "dash", "smooth_stream", "progressive_mp4" ], "cameraStreamNeedAuthToken": false }
Kamera obsługująca jeden protokół, wymagająca tokena uwierzytelniania.
{ "cameraStreamSupportedProtocols": [ "hls" ], "cameraStreamNeedAuthToken": true }
Obsługiwane protokoły strumieniowego przesyłania danych
Ta cecha obsługuje te protokoły strumieniowania:
webrtc
: WebRTChls
: transmisja na żywo przez HTTPdash
: dynamiczne adaptacyjne strumieniowe przesyłanie danych przez HTTPsmooth_stream
: płynne przesyłanie strumienioweprogressive_mp4
: progresywne MP4 (używane głównie do klipów)
Podczas przesyłania strumieniowego za pomocą protokołów hls
,dash
,smooth_stream
i progressive_mp4
na urządzeniach Cast (Chromecasty, wyświetlacze smart i telewizory smart TV z Chromecastem) uruchamia się odbiornik internetowy Cast, który przetwarza strumień i renderuje go na urządzeniu. Zalecamy, aby deweloper utworzył niestandardowy odbiornik internetowy, aby umożliwić dostęp do narzędzi debugowania, dostosować działanie odtwarzacza, dostosować branding interfejsu użytkownika oraz uwzględnić funkcje analityczne. Aby umożliwić korzystanie z niestandardowego odbiornika i zrezygnować z używania odbiornika domyślnego, w polu EXECUTE
odpowiedzi ustaw identyfikator aplikacji odbiornika wygenerowany podczas rejestrowania aplikacji przesyłania treści w polu cameraStreamReceiverAppId
.
Więcej informacji o niestandardowych aplikacjach odbiornika internetowego znajdziesz w przewodniku na stronie dla deweloperów.
STANY URZĄDZENIA
Brak.
Polecenia urządzenia
Urządzenia z tą cechą mogą odpowiadać na te polecenia w ramach operacji EXECUTE
. Więcej informacji o obsługiwaniu intencji EXECUTE
znajdziesz w artykule 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 wybrane miejsce docelowe. |
[item, ...] |
String |
Typ multimediów. Obsługiwane wartości:
|
Wyniki
Wyniki | Typ | Opis |
---|---|---|
cameraStreamAuthToken |
String |
Token uwierzytelniający dla konkretnego odbiorcy, który autoryzuje dostęp do strumienia. Parametr |
cameraStreamProtocol |
String |
Wymagany. Format multimediów, do którego wskazuje adres URL strumienia. Musi to być jeden z protokołów wymienionych w parametrze polecenia Obsługiwane wartości:
|
Wyniki niebędące wynikami WebRTC
Wyniki | Typ | Opis |
---|---|---|
cameraStreamAccessUrl |
String |
Wymagany. Adres URL punktu końcowego do pobierania strumienia w czasie rzeczywistym w formacie określonym przez |
cameraStreamReceiverAppId |
String |
Identyfikator odbiornika Google Cast do przetwarzania strumienia z kamery, gdy parametr |
Wyniki WebRTC
Wyniki | Typ | Opis |
---|---|---|
cameraStreamSignalingUrl |
String |
Wymagany. Punkt końcowy URL do pobierania i wymiany protokołów opisu sesji (SDP) kamery i klienta. Klient powinien zwrócić adres URL sygnalizacji, który używa wartości |
cameraStreamOffer |
String |
Oferty z protokołem opisu sesji (SDP). |
cameraStreamIceServers |
String |
Reprezentuje serwery Interactive Connectivity Establishment (ICE) za pomocą zakodowanego ciągu JSON z opisem RTCIceServer. Jeśli nie określisz serwerów STUN (Session Traversal Utilities for NAT), platforma użyje domyślnie publicznych serwerów STUN Google. Serwery TURN (Traversal Using Relays around NAT) są wymagane tylko wtedy, gdy nie możesz zagwarantować, że podane adresy IP lub kandydaci ICE będą dostępne publicznie (np.przez serwer multimediów, publicznego hosta ICE, kandydata ICE na potrzeby przekaźnika itp.). |
Przykłady
Pokaż obraz z kamery przy drzwiach wejściowych (domyślny odbiornik Google 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ż obraz z kamery 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" }
BŁĘDY urządzenia
Zobacz pełną listę błędów i wyjątków.Specyfikacje protokołu WebRTC
Zaletami korzystania z WebRTC są niskie opóźnienie i rozmowy w jednym kierunku. WebRTC używa metody POST
z ciałem POST
i odpowiedzią w formacie JSON.
WebRTC jest obecnie obsługiwany na urządzeniach Google Nest Hub i Chromecast z Google TV.
W tej sekcji opisaliśmy wymagania dotyczące korzystania z protokołu strumieniowego WebRTC.
Typ danych | Parametry/definicje |
---|---|
Nagłówek żądania sygnalizacji |
Nagłówek powinien spełniać te wymagania:
|
Parametry żądania sygnalizacji | Żądanie może zawierać te parametry:
|
Parametry odpowiedzi sygnalizacji | Odpowiedź może zawierać te parametry:
|
Wymagania i zalecenia dotyczące WebRTC
- Google obsługuje obecnie komunikację w jednym kierunku (półdupleks).
- Musisz obsługiwać łączenie i rtcp-mux.
- Musisz używać protokołu (D)TLS w wersji 1.2 lub nowszej.
- Protokół Trickle ICE nie jest obsługiwany. Przed wysłaniem SDP należy zebrać wszystkie kandydatów ICE.
- Zalecamy uwzględnienie kandydatów ICE UDP/IPv4, TCP/IPv4, UDP/IPv6 i TCP/IPv6, aby zwiększyć prawdopodobieństwo nawiązania połączenia.
Obsługiwane rozdzielczości filmów:
- Co najmniej: 480p
- Maksymalnie: 1080p
Obsługiwane kodeki wideo:
- VP8
- H.264
Obsługiwane kodeki audio:
- Opus (preferowany kodek)
- G.711/PCMU
- G.722
Współdzielenie zasobów pomiędzy serwerami z różnych domen
Cross-Origin Resource Sharing (CORS) to mechanizm, który używa dodatkowych nagłówków HTTP do informowania przeglądarek o tym, że aplikacja internetowa działająca w jednym pochodzeniu ma mieć dostęp do wybranych zasobów z innego pochodzenia. Serwer hostujący cameraStreamSignalingUrl
powinien odpowiedzieć nagłówkiem:
Access-Control-Allow-Origin: https://www.gstatic.com
Przykładowe żądanie i odpowiedź sygnalizacyjne
Na przykładzie poniżej pokazano żądanie wysłane przez Google do Twojej usługi sygnalizacyjnej i odpowiednią odpowiedź 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 {}