Schemat atrybutu CameraStream dla inteligentnego domu
action.devices.traits.CameraStream
– ta cecha obejmuje sposób sterowania strumieniem z kamery na urządzeniu.
Ta cecha dotyczy urządzeń, które mogą przesyłać strumieniowo filmy na inteligentne ekrany, urządzenia obsługujące Chromecasta lub smartfony. Zwykle są to kamery bezpieczeństwa lub elektroniczne nianie. Ta cecha dotyczy jednak również bardziej złożonych urządzeń z kamerą (np. urządzeń do rozmów wideo lub robota odkurzającego z kamerą).
ATRYBUTY URZĄDZENIA
Urządzenia z tą cechą mogą zgłaszać te atrybuty w ramach operacji SYNC
. Więcej informacji o obsłudze intencji SYNC
znajdziesz w artykule o realizacji 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 |
Wymagane. Określa, czy token autoryzacji zostanie przekazany za pomocą |
Przykłady
Kamera obsługuje wiele protokołów i 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 strumieniowania
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 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, aby przetworzyć strumień i wyświetlić go na urządzeniu. Zalecamy, aby programista utworzył niestandardowy odbiornik internetowy, aby umożliwić dostęp do narzędzi do debugowania, dostosować działanie odtwarzacza, dostosować elementy interfejsu użytkownika i uwzględnić dane 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.
STANOWISKO 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. Jeśli |
cameraStreamProtocol |
String |
Wymagany. Format multimediów, do którego wskazuje adres URL strumienia. Powinien 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 przesyłania na potrzeby 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 |
Protokół opisu sesji oferty (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 korzystające z przekaźników w pobliżu NAT) są wymagane tylko wtedy, gdy nie możesz zagwarantować, że podane adresy IP / kandydaci ICE będą publicznie dostępne (np.przez serwer multimediów, kandydujący do ICE hosta publicznego, kandydujący do usługi przekaźnika ICE 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ż obraz z kamery przy drzwiach wejściowych (niestandardowy odbiornik Google 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" }
Urządzenie ERRORS
Zobacz pełną listę błędów i wyjątków.Specyfikacje protokołu WebRTC
Zaletami korzystania z WebRTC są krótki czas oczekiwania i możliwość prowadzenia rozmowy w jednym kierunku. WebRTC korzysta z metody POST
z treścią 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 opisano 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:
|
Parametry żądania sygnalizacji | Żądanie może zawierać te parametry:
|
Parametry odpowiedzi sygnalizacji | Odpowiedź może zawierać te parametry:
|
Wymagania i zalecenia WebRTC
- Google obecnie obsługuje komunikację 1-kierunkową (połowa dupleksu).
- 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.
- Zdecydowanie zalecamy dołączenie kandydatów UDP/IPv4, TCP/IPv4, UDP/IPv6 i TCP/IPv6 ICE, aby zwiększyć prawdopodobieństwo nawiązania połączenia.
Obsługiwane rozdzielczości filmów:
- Co najmniej: 480p
- Maksimum: 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ć następującym nagłówkiem:
Access-Control-Allow-Origin: https://www.gstatic.com
Przykładowe żądanie i odpowiedź sygnalizacyjna
Na przykładzie poniżej pokazano żądanie wysył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 {}