Schemat zadania inteligentnego kamery w domu
action.devices.traits.CameraStream
– ta cecha obejmuje sposób sterowania strumieniem kamery na urządzeniu.
Ta cecha należy do urządzeń, które obsługują strumienie wideo na inteligentnych ekranach, urządzeniach obsługujących Chromecasta i smartfonach. Są to kamery monitoringu lub niemowląt. Ta cecha dotyczy też bardziej złożonych urządzeń z kamerą (np. urządzeń do rozmów wideo lub robota odkurzającego z kamerą).
ATTRIBUTES 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 |
Wymagane. Obsługiwane typy multimediów dla kamery, uporządkowane według preferencji. Zazwyczaj wymagany jest pierwszy protokół w tej tablicy, który jest zgodny z platformą docelową. |
[item, ...] |
String |
Typ multimediów. Obsługiwane wartości:
|
cameraStreamNeedAuthToken |
Wartość logiczna |
Wymagane. Określa, czy token uwierzytelniania zostanie dostarczony przez platformę |
Przykłady
Obsługa kamery z obsługą wielu protokołów bez konieczności uwierzytelniania tokenem.
{ "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
Ta cecha obsługuje następujące protokoły strumieniowania:
webrtc
: WebRTChls
: Transmisja na żywo przez HTTPdash
: dynamiczne strumieniowe przesyłanie adaptacyjne przez HTTPsmooth_stream
: Płynne transmitowanieprogressive_mp4
: progresywny MP4 (używany głównie w klipach)
Urządzenie STATES
Brak.
Urządzenie CommandS
W ramach operacji EXECUTE
urządzenia z tą cechą mogą reagować 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 |
Wymagane. Określa, czy strumień ma być odtwarzany na urządzeniu Chromecast. |
SupportedStreamProtocols |
Tablica |
Wymagane. 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 uwierzytelniania określonego odbiornika, aby autoryzować dostęp do strumienia. Jeśli |
cameraStreamProtocol |
String |
Wymagane. Format multimediów, do którego prowadzi URL strumienia. Powinien to być jeden z protokołów wymienionych w parametrze polecenia Obsługiwane wartości:
|
Wyniki spoza WebRTC
Wyniki | Typ | Opis |
---|---|---|
cameraStreamAccessUrl |
String |
Wymagane. Punkt końcowy URL do pobierania strumienia w czasie rzeczywistym w formacie określonym przez |
cameraStreamReceiverAppId |
String |
Identyfikator odbiornika przetwarzający obraz z kamery, gdy parametr |
Wyniki WebRTC
Wyniki | Typ | Opis |
---|---|---|
cameraStreamSignalingUrl |
String |
Wymagane. Punkt końcowy adresu URL do pobierania i wymiany protokołów opisu sesji aparatu i klienta (SDP). Klient powinien zwrócić adres URL sygnału, który używa |
cameraStreamOffer |
String |
Schemat opisu sesji oferty (SDP). |
cameraStreamIceServers |
String |
Reprezentuje serwery Interactive Connectivity stitution (ICE) przy użyciu zakodowanego ciągu JSON z opisem RTCIceServer. Jeśli nie podasz serwerów STUN (Session Traversal Utilities for NAT), platforma domyślnie przyjmuje publiczne serwery STUN Google. Serwery TURN (trasowania z użyciem przekaźników otaczających NAT) są wymagane tylko wtedy, gdy nie możesz zagwarantować, że udostępnione adresy IP / kandydaci ICE będą publicznie dostępne (np.przez serwer mediów, kandydat do hostu publicznego ICE, kandydat do przekazywania dalej 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ż 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
Zalety korzystania z WebRTC to małe opóźnienia i jednokierunkowa rozmowa. WebRTC używa metody POST
z treścią POST
i odpowiedzią w formacie JSON.
WebRTC działa obecnie na inteligentnych ekranach i Chromecastach Google Nest w połączeniu z urządzeniami Google TV.
W tej sekcji opisano wymagania dotyczące korzystania z protokołu strumienia WebRTC.
Typ danych | Parametry/definicje |
---|---|
Nagłówek żądania |
Nagłówek powinien spełniać te wymagania:
|
Sygnał żądania reklamy | Żądanie może zawierać te parametry:
|
Sygnały odpowiedzi | Odpowiedź może zawierać te parametry:
|
Wymagania i zalecenia WebRTC
- Obecnie Google obsługuje komunikację jednokierunkową (połówkową)
- Musisz obsługiwać grupowanie i rtcp-mux.
- Musisz używać (D)TLS 1.2 lub nowszej wersji.
- Kropla ICE nie jest obsługiwana. Przed wysłaniem SDP należy zebrać wszystkich kandydatów ICE.
- Zdecydowanie zalecamy dołączenie 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, aby informować przeglądarki internetowe, które działają z jednego źródła, o uzyskaniu dostępu 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 i odpowiedź do sygnału
Przykład poniżej pokazuje żądanie, które Google wysyła do Twojej usługi sygnałów oraz odpowiednią odpowiedź do 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 {}