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:
|
cameraStreamNeedAuthToken |
Wartość logiczna |
Wymagany. Określa, czy token uwierzytelniający będzie dostarczany przez platformę |
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:
webrtc
: WebRTChls
: Transmisja na żywo przez HTTPdash
: dynamiczne adaptacyjne strumieniowe przesyłanie danych przez HTTPsmooth_stream
: Płynne transmitowanieprogressive_mp4
: progresywny MP4 (używany głównie do klipów)
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:
|
Wyniki
Wyniki | Typ | Opis |
---|---|---|
cameraStreamAuthToken |
Ciąg |
Token uwierzytelniania określonego odbiornika, aby autoryzować dostęp do strumienia. Jeśli zasada |
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 Obsługiwane wartości:
|
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 |
cameraStreamReceiverAppId |
Ciąg |
Identyfikator odbiornika przesyłania danych z kamery, gdy parametr |
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 |
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:
|
Parametry żądania sygnału | Żądanie może zawierać te parametry:
|
Sygnały odpowiedzi | Odpowiedź może zawierać te parametry:
|
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ź.
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 {}