Schema tratto videocamera per la smart home
action.devices.traits.CameraStream
- Questa caratteristica spiega come controllare lo streaming della videocamera di un dispositivo.
Questo attributo appartiene ai dispositivi che hanno la capacità di trasmettere in streaming i feed video a smart display, dispositivi compatibili con Chromecast o smartphone. In generale, si tratta di videocamere di sicurezza o videocamere per bambini. Ma questa caratteristica si applica anche ai dispositivi più complessi con una videocamera (ad esempio, dispositivi per videoconferenze o un robot aspirapolvere con una videocamera).
ATTRIBUTE del dispositivo
I dispositivi con questa caratteristica potrebbero segnalare i seguenti
attributi come parte dell'operazione SYNC
. Per scoprire di più sulla gestione degli intent SYNC
, consulta Soddisfazione degli intent.
Attributi | Tipo | Descrizione |
---|---|---|
cameraStreamSupportedProtocols |
Array |
Obbligatorio. Tipi di supporti multimediali per lo streaming della videocamera, ordinati in base alla preferenza. In genere, è richiesto il primo protocollo in questo array compatibile con la superficie di destinazione. |
[item, ...] |
Stringa |
Tipo di elemento multimediale. Valori supportati:
|
cameraStreamNeedAuthToken |
Booleano |
Obbligatorio. Indica se verrà fornito un token di autenticazione tramite |
Esempi
La fotocamera con più protocolli supporta, non richiede un token di autenticazione.
{ "cameraStreamSupportedProtocols": [ "webrtc", "hls", "dash", "smooth_stream", "progressive_mp4" ], "cameraStreamNeedAuthToken": false }
La videocamera supporta un singolo protocollo, che richiede un token di autenticazione.
{ "cameraStreamSupportedProtocols": [ "hls" ], "cameraStreamNeedAuthToken": true }
Protocolli di streaming supportati
Questa caratteristica supporta i seguenti protocolli di streaming:
webrtc
: WebRTChls
: live streaming HTTPdash
: streaming adattivo dinamico su HTTPsmooth_stream
: streaming fluidoprogressive_mp4
: MP4 progressivo (utilizzato soprattutto per i clip)
STATEs dispositivo
Nessuna.
comandi del dispositivo
I dispositivi con questa caratteristica possono rispondere ai seguenti comandi nell'ambito dell'operazione EXECUTE
. Per scoprire di più sulla gestione degli intent EXECUTE
, consulta Soddisfazione degli intent.
action.devices.commands.GetCameraStream
Parametri
Parametri | Tipo | Descrizione |
---|---|---|
StreamToChromecast |
Booleano |
Obbligatorio. Indica se lo stream verrà riprodotto su un dispositivo Chromecast. |
SupportedStreamProtocols |
Array |
Obbligatorio. Tipi/formati multimediali supportati dalla destinazione desiderata. |
[item, ...] |
Stringa |
Tipo di elemento multimediale. Valori supportati:
|
Risultati
Risultati | Tipo | Descrizione |
---|---|---|
cameraStreamAuthToken |
Stringa |
Un token di autorizzazione per il destinatario specifico per autorizzare l'accesso allo stream. Se |
cameraStreamProtocol |
Stringa |
Obbligatorio. Il formato multimediale a cui rimanda l'URL dello stream. Deve essere uno dei protocolli elencati nel parametro di comando Valori supportati:
|
Risultati non WebRTC
Risultati | Tipo | Descrizione |
---|---|---|
cameraStreamAccessUrl |
Stringa |
Obbligatorio. Endpoint URL per il recupero dello stream in tempo reale nel formato specificato da |
cameraStreamReceiverAppId |
Stringa |
L'ID ricevitore di trasmissione consente di elaborare lo streaming della videocamera quando il parametro |
Risultati WebRTC
Risultati | Tipo | Descrizione |
---|---|---|
cameraStreamSignalingUrl |
Stringa |
Obbligatorio. Endpoint URL per il recupero e lo scambio di protocolli per la descrizione della sessione (SRP) per videocamera e client. Il client deve restituire l'URL di segnalazione che utilizza |
cameraStreamOffer |
Stringa |
Offerta della sessione di descrizione del protocollo (SDP). |
cameraStreamIceServers |
Stringa |
Rappresenta i server dell'Interactive Connectivity Establishment (ICE) utilizzando una stringa JSON codificata con la descrizione di un RTCIceServer. Se non specifichi i server STUN (Session Traversal Utilities per NAT), la piattaforma utilizza per impostazione predefinita i server STUN pubblici di Google. I server Turn (Traversal Usage Relays intorno alla NAT) sono obbligatori solo se non puoi garantire che gli IP o i candidati ICE forniti saranno pubblicamente accessibili (ad es. tramite un server multimediale, un candidato ICE pubblico, un candidato ICE di inoltro e così via). |
Esempi
Mostra la videocamera della porta d'ingresso (ricevitore Cast predefinito)
{ "cameraStreamAccessUrl": "https://fluffysheep.com/baaaaa.mp4", "cameraStreamProtocol": "progressive_mp4" }
Mostra la videocamera della porta d'ingresso (ricevitore Cast personalizzato).
{ "cameraStreamAccessUrl": "https://fluffysheep.com/baaaaa.mp4", "cameraStreamReceiverAppId": "1g2f89213hg", "cameraStreamAuthToken": "12657342190192783", "cameraStreamProtocol": "progressive_mp4" }
Mostra la videocamera della porta d'ingresso (stream 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" }
ERRORI del dispositivo
Consulta l'elenco completo degli errori e delle eccezioni.Specifiche del protocollo WebRTC
I vantaggi dell'utilizzo di WebRTC sono la latenza bassa e le conversazioni unidirezionali. WebRTC utilizza un metodo POST
con un corpo POST
e una risposta in formato JSON.
Attualmente WebRTC è supportato su smart display Google Nest e Chromecast con dispositivi Google TV.
Questa sezione descrive i requisiti quando si utilizza il protocollo di streaming WebRTC.
Tipo di dati | Parametri/definizioni |
---|---|
Intestazione della richiesta di segnalazione |
L'intestazione deve soddisfare i seguenti requisiti:
|
Parametri di richiesta di segnalazione | La richiesta può includere questi parametri:
|
Parametri di risposta di segnalazione | La risposta può includere questi parametri:
|
Requisiti e consigli di WebRTC
- Attualmente Google supporta la comunicazione unidirezionale (half duplex).
- Devi supportare il raggruppamento e rtcp-mux.
- Devi utilizzare (D)TLS 1.2 o versioni successive.
- Trickle ICE non è supportato. Tutti i candidati ICE devono essere raccolti prima di inviare l'SDP.
- Ti consigliamo vivamente di includere i candidati ICE UDP/IPv4, TCP/IPv4, UDP/IPv6 e TCP/IPv6 per aumentare la probabilità di una connessione riuscita.
Risoluzioni video supportate:
- Minimo: 480p
- Massimo:1080p
Codec video supportati:
- VP8
- H.264
Codec audio supportati:
- Opus (codec preferito)
- G.711/PCMU
- G.722
Condivisione delle risorse tra origini
La condivisione delle risorse tra origini (CORS) è un meccanismo che utilizza intestazioni HTTP aggiuntive per indicare ai browser di consentire a un'applicazione web in esecuzione in un'origine di accedere a risorse selezionate da un'origine diversa. Il server che ospita cameraStreamSignalingUrl
dovrebbe rispondere con la seguente intestazione:
Access-Control-Allow-Origin: https://www.gstatic.com
Esempio di richiesta e risposta di segnalazione
L'esempio riportato di seguito mostra una richiesta che Google invia al tuo servizio di segnalazione e la risposta corrispondente a 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 {}