Schema CameraLiveStream
Nest Cam (legacy)
sdm.devices.traits.CameraLiveStream
Questo tratto appartiene a qualsiasi dispositivo che supporta il live streaming.
Campi
Campo | Descrizione | Tipo di dati |
---|---|---|
maxVideoResolution |
Risoluzione massima del video in live streaming. | VideoResolution |
videoCodecs |
Codec video supportati per il live streaming. | array(string) Valore: ["H264"] |
audioCodecs |
Codec audio supportati per il live streaming. | array(string) Valore: ["AAC"] |
supportedProtocols |
Protocolli di streaming supportati dal dispositivo. Il valore di questo campo indica quali comandi sono supportati per il dispositivo. Ad esempio, se questo campo contiene WEB_RTC, sono supportati solo i comandi WEB_RTC. | array(string) Valore: ["RTSP", "WEB_RTC"] |
Risoluzione video (maxVideoResolution)
Campo | Descrizione | Tipo di dati |
---|---|---|
width |
Larghezza massima della risoluzione delle immagini. Può essere utilizzato anche come parametro di query nell'URL di download. | int32 Esempio: 640 |
height |
Altezza massima della risoluzione delle immagini. Può essere utilizzato anche come parametro di query nell'URL di download. | int32 Esempio: 480 |
Esempio di richiesta e risposta GET
Richiesta
GET /enterprises/project-id/devices/device-id
Risposta
{
"name" : "enterprises/project-id/devices/device-id",
"traits" : {
"sdm.devices.traits.CameraLiveStream
" : {
"maxVideoResolution" : {
"width" : 640,
"height" : 480
},
"videoCodecs" : ["H264"],
"audioCodecs" : ["AAC"],
"supportedProtocols" : ["WEB_RTC"]
}
}
}
Comandi
GenerateRtspStream
Nest Cam (precedente)Richiedi un token per accedere all'URL di un live streaming RTSP.
Gli URL dei live streaming RTSP non possono essere condivisi tra i client. Un URL dello stream può essere utilizzato da un solo client alla volta. Se più client vogliono trasmettere in streaming dalla stessa videocamera contemporaneamente, i comandi RTSP devono essere inviati per ogni singolo client e ogni singolo client deve utilizzare il proprio URL dello stream.
Richiesta e risposta generateRtspStream
Richiesta
POST /enterprises/project-id/devices/device-id:executeCommand
{
"command" : "sdm.devices.commands.CameraLiveStream.GenerateRtspStream
",
"params" : {}
}
Risposta
{ "results" : { "streamUrls" : { "rtspUrl" : "rtsps://someurl.com/CjY5Y3VKaTZwR3o4Y19YbTVfMF...?auth=g.0.streamingToken" }, "streamExtensionToken" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF...", "streamToken" : "g.0.streamingToken", "expiresAt" : "2018-01-04T18:30:00.000Z" } }
Campi di risposta generaRtspStream
Campo | Descrizione | Tipo di dati |
---|---|---|
streamUrls |
Mappa degli URL dei live streaming RTSP. | object |
streamExtensionToken |
Token da utilizzare per estendere streamToken per un live streaming RTSP. |
string Esempio: "CjY5Y3VKaTZwR3o4Y19YbTVfMF..." |
streamToken |
Token da utilizzare per accedere a un live streaming RTSP. | string Esempio: "g.0.streamingToken" |
expiresAt |
Ora di scadenza di streamExtensionToken e streamToken , nel formato RFC 3339. |
string Esempio: "2018-01-04T18:30:00.000Z" |
ExtendRtspStream
Nest Cam (precedente)Richiedi un nuovo token di accesso all'URL del live streaming RTSP per sostituire un token di accesso RTSP valido prima che scada. Viene utilizzato anche per sostituire un token RTSP valido da una precedente richiesta di comando ExtendRtspStream.
Le sessioni di live streaming della videocamera sono valide solo per 5 minuti. Se devi estendere la durata di un live streaming, usa il comando EstendiFormatstream appropriato del percorso CameraLiveStream per il formato dello stream che hai generato.
Richiesta e risposta di ExtendRtspStream
Richiesta
POST /enterprises/project-id/devices/device-id:executeCommand
{
"command" : "sdm.devices.commands.CameraLiveStream.ExtendRtspStream
",
"params" : {
"streamExtensionToken" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF..."
}
}
Risposta
{ "results" : { "streamExtensionToken" : "dGNUlTU2CjY5Y3VKaTZwR3o4Y1...", "streamToken" : "g.0.newStreamingToken", "expiresAt" : "2018-01-04T18:30:00.000Z" } }
Campi di richiesta ExtendRtspStream
Campo | Descrizione | Tipo di dati |
---|---|---|
streamExtensionToken |
Token da utilizzare per richiedere un'estensione al token di streaming RTSP. | string Esempio: "CjY5Y3VKaTZwR3o4Y19YbTVfMF..." |
Campi di risposta ExtendRtspStream
Campo | Descrizione | Tipo di dati |
---|---|---|
streamExtensionToken |
Token da utilizzare per visualizzare un live streaming RTSP esistente e per richiedere un'estensione al token di streaming. | string Esempio: "dGNUlTU2CjY5Y3VKaTZwR3o4Y1..." |
streamToken |
Nuovo token da utilizzare per accedere a un live streaming RTSP esistente. | string Esempio: "g.0.newStreamingToken" |
expiresAt |
Ora di scadenza di streamExtensionToken e streamToken , nel formato RFC 3339. |
string Esempio: "2018-01-04T18:30:00.000Z" |
StopRtspStream
Nest Cam (precedente)Disattiva un token di accesso RTSP valido e interrompe il live streaming RTSP associato a quel token di accesso.
Richiesta e risposta StopRtspStream
Richiesta
POST /enterprises/project-id/devices/device-id:executeCommand
{
"command" : "sdm.devices.commands.CameraLiveStream.StopRtspStream
",
"params" : {
"streamExtensionToken" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF..."
}
}
Risposta
{}
Campi di richiesta StopRtspStream
Campo | Descrizione | Tipo di dati |
---|---|---|
streamExtensionToken |
Token da utilizzare per invalidare un live streaming RTSP esistente. | string Esempio: "CjY5Y3VKaTZwR3o4Y19YbTVfMF..." |
GenerateWebRtcStream
Nest Cam (legacy)Genera un live streaming WebRTC per un dispositivo.
Richiesta e risposta generateWebRtcStream
Richiesta
POST /enterprises/project-id/devices/device-id:executeCommand
{
"command" : "sdm.devices.commands.CameraLiveStream.GenerateWebRtcStream
",
"params" : {
"offerSdp" : "offerSdp"
}
}
Risposta
{ "results" : { "answerSdp" : "answerSdp", "expiresAt" : "2020-01-04T18:30:00.000Z", "mediaSessionId" : "xXY7sLUYIrW9bfETyqFmi5od5r..." } }
Campi di richiestaGenerateWebRtcStream
Ti consigliamo di utilizzare l'esempio di applicazione web per scoprire come generare un live streaming di successo. Questo esempio genera un valore offerSdp
valido che soddisfa tutte le limitazioni delle offerte SDP per le videocamere Nest.
Un'offerta SDP per le videocamere Nest deve rispettare le seguenti limitazioni:
- È supportato solo il formato unificato. Il piano B non è supportato.
- Tutte le righe multimediali (
m=
) devono essere presenti nell'offerta e devono essere in questo ordine:- l'audio
- video
- applicazione
- Trickle ICE è supportato, ma non obbligatorio.
- Per l'audio è supportato solo il codec Opus.
- L'impostazione audio deve essere impostata su
a=recvonly
(solo ricezione). - L'offerta deve terminare con un carattere di nuova riga
\r\n
o\n
.
Guarda un esempio di offerta valida
Senza formattazione:
v=0\r\no=- 2214114893783582286 2 IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\na=group:BUNDLE 0 1 2\r\na=extmap-allow-mixed\r\na=msid-semantic: WMS\r\nm=audio 9 UDP/TLS/RTP/SAVPF 111 63 103 104 9 0 8 106 105 13 110 112 113 126\r\nc=IN IP4 0.0.0.0\r\na=rtcp:9 IN IP4 0.0.0.0\r\na=ice-ufrag:6ReD\r\na=ice-pwd:QBmcZYd/t+InpMVkxQEEXnE4\r\na=ice-options:trickle\r\na=fingerprint:sha-256 DD:7E:6F:CD:B8:13:4E:37:D2:92:6D:8E:30:FB:FE:13:29:C9:F8:FD:78:0B:C4:59:42:61:BC:CF:02:91:6B:3C\r\na=setup:actpass\r\na=mid:0\r\na=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level\r\na=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\r\na=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\r\na=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid\r\na=recvonly\r\na=rtcp-mux\r\na=rtpmap:111 opus/48000/2\r\na=rtcp-fb:111 transport-cc\r\na=fmtp:111 minptime=10;useinbandfec=1\r\na=rtpmap:63 red/48000/2\r\na=fmtp:63 111/111\r\na=rtpmap:103 ISAC/16000\r\na=rtpmap:104 ISAC/32000\r\na=rtpmap:9 G722/8000\r\na=rtpmap:0 PCMU/8000\r\na=rtpmap:8 PCMA/8000\r\na=rtpmap:106 CN/32000\r\na=rtpmap:105 CN/16000\r\na=rtpmap:13 CN/8000\r\na=rtpmap:110 telephone-event/48000\r\na=rtpmap:112 telephone-event/32000\r\na=rtpmap:113 telephone-event/16000\r\na=rtpmap:126 telephone-event/8000\r\nm=video 9 UDP/TLS/RTP/SAVPF 96 97 98 99 100 101 122 102 121 127 120 125 107 108 109 35 36 124 119 123 118 114 115 116 37\r\nc=IN IP4 0.0.0.0\r\na=rtcp:9 IN IP4 0.0.0.0\r\na=ice-ufrag:6ReD\r\na=ice-pwd:QBmcZYd/t+InpMVkxQEEXnE4\r\na=ice-options:trickle\r\na=fingerprint:sha-256 DD:7E:6F:CD:B8:13:4E:37:D2:92:6D:8E:30:FB:FE:13:29:C9:F8:FD:78:0B:C4:59:42:61:BC:CF:02:91:6B:3C\r\na=setup:actpass\r\na=mid:1\r\na=extmap:14 urn:ietf:params:rtp-hdrext:toffset\r\na=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\r\na=extmap:13 urn:3gpp:video-orientation\r\na=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\r\na=extmap:5 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay\r\na=extmap:6 http://www.webrtc.org/experiments/rtp-hdrext/video-content-type\r\na=extmap:7 http://www.webrtc.org/experiments/rtp-hdrext/video-timing\r\na=extmap:8 http://www.webrtc.org/experiments/rtp-hdrext/color-space\r\na=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid\r\na=extmap:10 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id\r\na=extmap:11 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id\r\na=recvonly\r\na=rtcp-mux\r\na=rtcp-rsize\r\na=rtpmap:96 VP8/90000\r\na=rtcp-fb:96 goog-remb\r\na=rtcp-fb:96 transport-cc\r\na=rtcp-fb:96 ccm fir\r\na=rtcp-fb:96 nack\r\na=rtcp-fb:96 nack pli\r\na=rtpmap:97 rtx/90000\r\na=fmtp:97 apt=96\r\na=rtpmap:98 VP9/90000\r\na=rtcp-fb:98 goog-remb\r\na=rtcp-fb:98 transport-cc\r\na=rtcp-fb:98 ccm fir\r\na=rtcp-fb:98 nack\r\na=rtcp-fb:98 nack pli\r\na=fmtp:98 profile-id=0\r\na=rtpmap:99 rtx/90000\r\na=fmtp:99 apt=98\r\na=rtpmap:100 VP9/90000\r\na=rtcp-fb:100 goog-remb\r\na=rtcp-fb:100 transport-cc\r\na=rtcp-fb:100 ccm fir\r\na=rtcp-fb:100 nack\r\na=rtcp-fb:100 nack pli\r\na=fmtp:100 profile-id=2\r\na=rtpmap:101 rtx/90000\r\na=fmtp:101 apt=100\r\na=rtpmap:122 VP9/90000\r\na=rtcp-fb:122 goog-remb\r\na=rtcp-fb:122 transport-cc\r\na=rtcp-fb:122 ccm fir\r\na=rtcp-fb:122 nack\r\na=rtcp-fb:122 nack pli\r\na=fmtp:122 profile-id=1\r\na=rtpmap:102 H264/90000\r\na=rtcp-fb:102 goog-remb\r\na=rtcp-fb:102 transport-cc\r\na=rtcp-fb:102 ccm fir\r\na=rtcp-fb:102 nack\r\na=rtcp-fb:102 nack pli\r\na=fmtp:102 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f\r\na=rtpmap:121 rtx/90000\r\na=fmtp:121 apt=102\r\na=rtpmap:127 H264/90000\r\na=rtcp-fb:127 goog-remb\r\na=rtcp-fb:127 transport-cc\r\na=rtcp-fb:127 ccm fir\r\na=rtcp-fb:127 nack\r\na=rtcp-fb:127 nack pli\r\na=fmtp:127 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42001f\r\na=rtpmap:120 rtx/90000\r\na=fmtp:120 apt=127\r\na=rtpmap:125 H264/90000\r\na=rtcp-fb:125 goog-remb\r\na=rtcp-fb:125 transport-cc\r\na=rtcp-fb:125 ccm fir\r\na=rtcp-fb:125 nack\r\na=rtcp-fb:125 nack pli\r\na=fmtp:125 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f\r\na=rtpmap:107 rtx/90000\r\na=fmtp:107 apt=125\r\na=rtpmap:108 H264/90000\r\na=rtcp-fb:108 goog-remb\r\na=rtcp-fb:108 transport-cc\r\na=rtcp-fb:108 ccm fir\r\na=rtcp-fb:108 nack\r\na=rtcp-fb:108 nack pli\r\na=fmtp:108 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42e01f\r\na=rtpmap:109 rtx/90000\r\na=fmtp:109 apt=108\r\na=rtpmap:35 AV1/90000\r\na=rtcp-fb:35 goog-remb\r\na=rtcp-fb:35 transport-cc\r\na=rtcp-fb:35 ccm fir\r\na=rtcp-fb:35 nack\r\na=rtcp-fb:35 nack pli\r\na=rtpmap:36 rtx/90000\r\na=fmtp:36 apt=35\r\na=rtpmap:124 H264/90000\r\na=rtcp-fb:124 goog-remb\r\na=rtcp-fb:124 transport-cc\r\na=rtcp-fb:124 ccm fir\r\na=rtcp-fb:124 nack\r\na=rtcp-fb:124 nack pli\r\na=fmtp:124 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=4d0032\r\na=rtpmap:119 rtx/90000\r\na=fmtp:119 apt=124\r\na=rtpmap:123 H264/90000\r\na=rtcp-fb:123 goog-remb\r\na=rtcp-fb:123 transport-cc\r\na=rtcp-fb:123 ccm fir\r\na=rtcp-fb:123 nack\r\na=rtcp-fb:123 nack pli\r\na=fmtp:123 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=640032\r\na=rtpmap:118 rtx/90000\r\na=fmtp:118 apt=123\r\na=rtpmap:114 red/90000\r\na=rtpmap:115 rtx/90000\r\na=fmtp:115 apt=114\r\na=rtpmap:116 ulpfec/90000\r\na=rtpmap:37 flexfec-03/90000\r\na=rtcp-fb:37 goog-remb\r\na=rtcp-fb:37 transport-cc\r\na=fmtp:37 repair-window=10000000\r\nm=application 9 UDP/DTLS/SCTP webrtc-datachannel\r\nc=IN IP4 0.0.0.0\r\na=ice-ufrag:6ReD\r\na=ice-pwd:QBmcZYd/t+InpMVkxQEEXnE4\r\na=ice-options:trickle\r\na=fingerprint:sha-256 DD:7E:6F:CD:B8:13:4E:37:D2:92:6D:8E:30:FB:FE:13:29:C9:F8:FD:78:0B:C4:59:42:61:BC:CF:02:91:6B:3C\r\na=setup:actpass\r\na=mid:2\r\na=sctp-port:5000\r\na=max-message-size:262144\r\n
Formattato:
v=0 o=- 2214114893783582286 2 IN IP4 127.0.0.1 s=- t=0 0 a=group:BUNDLE 0 1 2 a=extmap-allow-mixed a=msid-semantic: WMS m=audio 9 UDP/TLS/RTP/SAVPF 111 63 103 104 9 0 8 106 105 13 110 112 113 126 c=IN IP4 0.0.0.0 a=rtcp:9 IN IP4 0.0.0.0 a=ice-ufrag:6ReD a=ice-pwd:QBmcZYd/t+InpMVkxQEEXnE4 a=ice-options:trickle a=fingerprint:sha-256 DD:7E:6F:CD:B8:13:4E:37:D2:92:6D:8E:30:FB:FE:13:29:C9:F8:FD:78:0B:C4:59:42:61:BC:CF:02:91:6B:3C a=setup:actpass a=mid:0 a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time a=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01 a=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid a=recvonly a=rtcp-mux a=rtpmap:111 opus/48000/2 a=rtcp-fb:111 transport-cc a=fmtp:111 minptime=10;useinbandfec=1 a=rtpmap:63 red/48000/2 a=fmtp:63 111/111 a=rtpmap:103 ISAC/16000 a=rtpmap:104 ISAC/32000 a=rtpmap:9 G722/8000 a=rtpmap:0 PCMU/8000 a=rtpmap:8 PCMA/8000 a=rtpmap:106 CN/32000 a=rtpmap:105 CN/16000 a=rtpmap:13 CN/8000 a=rtpmap:110 telephone-event/48000 a=rtpmap:112 telephone-event/32000 a=rtpmap:113 telephone-event/16000 a=rtpmap:126 telephone-event/8000 m=video 9 UDP/TLS/RTP/SAVPF 96 97 98 99 100 101 122 102 121 127 120 125 107 108 109 35 36 124 119 123 118 114 115 116 37 c=IN IP4 0.0.0.0 a=rtcp:9 IN IP4 0.0.0.0 a=ice-ufrag:6ReD a=ice-pwd:QBmcZYd/t+InpMVkxQEEXnE4 a=ice-options:trickle a=fingerprint:sha-256 DD:7E:6F:CD:B8:13:4E:37:D2:92:6D:8E:30:FB:FE:13:29:C9:F8:FD:78:0B:C4:59:42:61:BC:CF:02:91:6B:3C a=setup:actpass a=mid:1 a=extmap:14 urn:ietf:params:rtp-hdrext:toffset a=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time a=extmap:13 urn:3gpp:video-orientation a=extmap:3 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01 a=extmap:5 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay a=extmap:6 http://www.webrtc.org/experiments/rtp-hdrext/video-content-type a=extmap:7 http://www.webrtc.org/experiments/rtp-hdrext/video-timing a=extmap:8 http://www.webrtc.org/experiments/rtp-hdrext/color-space a=extmap:4 urn:ietf:params:rtp-hdrext:sdes:mid a=extmap:10 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id a=extmap:11 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id a=recvonly a=rtcp-mux a=rtcp-rsize a=rtpmap:96 VP8/90000 a=rtcp-fb:96 goog-remb a=rtcp-fb:96 transport-cc a=rtcp-fb:96 ccm fir a=rtcp-fb:96 nack a=rtcp-fb:96 nack pli a=rtpmap:97 rtx/90000 a=fmtp:97 apt=96 a=rtpmap:98 VP9/90000 a=rtcp-fb:98 goog-remb a=rtcp-fb:98 transport-cc a=rtcp-fb:98 ccm fir a=rtcp-fb:98 nack a=rtcp-fb:98 nack pli a=fmtp:98 profile-id=0 a=rtpmap:99 rtx/90000 a=fmtp:99 apt=98 a=rtpmap:100 VP9/90000 a=rtcp-fb:100 goog-remb a=rtcp-fb:100 transport-cc a=rtcp-fb:100 ccm fir a=rtcp-fb:100 nack a=rtcp-fb:100 nack pli a=fmtp:100 profile-id=2 a=rtpmap:101 rtx/90000 a=fmtp:101 apt=100 a=rtpmap:122 VP9/90000 a=rtcp-fb:122 goog-remb a=rtcp-fb:122 transport-cc a=rtcp-fb:122 ccm fir a=rtcp-fb:122 nack a=rtcp-fb:122 nack pli a=fmtp:122 profile-id=1 a=rtpmap:102 H264/90000 a=rtcp-fb:102 goog-remb a=rtcp-fb:102 transport-cc a=rtcp-fb:102 ccm fir a=rtcp-fb:102 nack a=rtcp-fb:102 nack pli a=fmtp:102 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f a=rtpmap:121 rtx/90000 a=fmtp:121 apt=102 a=rtpmap:127 H264/90000 a=rtcp-fb:127 goog-remb a=rtcp-fb:127 transport-cc a=rtcp-fb:127 ccm fir a=rtcp-fb:127 nack a=rtcp-fb:127 nack pli a=fmtp:127 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42001f a=rtpmap:120 rtx/90000 a=fmtp:120 apt=127 a=rtpmap:125 H264/90000 a=rtcp-fb:125 goog-remb a=rtcp-fb:125 transport-cc a=rtcp-fb:125 ccm fir a=rtcp-fb:125 nack a=rtcp-fb:125 nack pli a=fmtp:125 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f a=rtpmap:107 rtx/90000 a=fmtp:107 apt=125 a=rtpmap:108 H264/90000 a=rtcp-fb:108 goog-remb a=rtcp-fb:108 transport-cc a=rtcp-fb:108 ccm fir a=rtcp-fb:108 nack a=rtcp-fb:108 nack pli a=fmtp:108 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42e01f a=rtpmap:109 rtx/90000 a=fmtp:109 apt=108 a=rtpmap:35 AV1/90000 a=rtcp-fb:35 goog-remb a=rtcp-fb:35 transport-cc a=rtcp-fb:35 ccm fir a=rtcp-fb:35 nack a=rtcp-fb:35 nack pli a=rtpmap:36 rtx/90000 a=fmtp:36 apt=35 a=rtpmap:124 H264/90000 a=rtcp-fb:124 goog-remb a=rtcp-fb:124 transport-cc a=rtcp-fb:124 ccm fir a=rtcp-fb:124 nack a=rtcp-fb:124 nack pli a=fmtp:124 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=4d0032 a=rtpmap:119 rtx/90000 a=fmtp:119 apt=124 a=rtpmap:123 H264/90000 a=rtcp-fb:123 goog-remb a=rtcp-fb:123 transport-cc a=rtcp-fb:123 ccm fir a=rtcp-fb:123 nack a=rtcp-fb:123 nack pli a=fmtp:123 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=640032 a=rtpmap:118 rtx/90000 a=fmtp:118 apt=123 a=rtpmap:114 red/90000 a=rtpmap:115 rtx/90000 a=fmtp:115 apt=114 a=rtpmap:116 ulpfec/90000 a=rtpmap:37 flexfec-03/90000 a=rtcp-fb:37 goog-remb a=rtcp-fb:37 transport-cc a=fmtp:37 repair-window=10000000 m=application 9 UDP/DTLS/SCTP webrtc-datachannel c=IN IP4 0.0.0.0 a=ice-ufrag:6ReD a=ice-pwd:QBmcZYd/t+InpMVkxQEEXnE4 a=ice-options:trickle a=fingerprint:sha-256 DD:7E:6F:CD:B8:13:4E:37:D2:92:6D:8E:30:FB:FE:13:29:C9:F8:FD:78:0B:C4:59:42:61:BC:CF:02:91:6B:3C a=setup:actpass a=mid:2 a=sctp-port:5000 a=max-message-size:262144
Campo | Descrizione | Tipo di dati |
---|---|---|
offerSdp |
Un'offerta SDP specifica per il dispositivo locale su cui verrà visualizzato il live streaming WebRTC. | string Esempio: "offerSdp" |
Campi di risposta GeneraWebRtcStream
answerSdp
deve essere utilizzato per generare il live streaming entro 30 secondi dalla ricezione della risposta, altrimenti scade. Se scade, esegui di nuovo il comando GenerateWebRtcStream per ricevere un nuovo answerSdp
.
Quando apri canali WebRTC per il live streaming, assicurati di creare un canale di dati e un canale video.
Campo | Descrizione | Tipo di dati |
---|---|---|
answerSdp |
Una risposta SDP da utilizzare con il dispositivo locale su cui verrà visualizzato il live streaming WebRTC. | string Esempio: "answerSdp" |
expiresAt |
Ora di scadenza dell'accesso al live streaming WebRTC, in formato RFC 3339. | string Esempio: "2020-01-04T18:30:00.000Z" |
mediaSessionId |
ID della sessione multimediale del live streaming WebRTC generato. | string Esempio: "xXY7sLUYIrW9bfETyqFmi5od5r..." |
ExtendWebRtcStream
Nest Cam (legacy)Richiedi l'estensione dell'accesso a un live streaming WebRTC esistente prima della scadenza.
Uno stream WebRTC può essere esteso solo sulle videocamere alimentate con cavo. Una videocamera alimentata a batteria è considerata alimentata tramite cavo quando è collegata alla corrente per la ricarica. Se la videocamera è alimentata a batteria, la richiesta di estendere uno stream WebRTC attivo verrà ignorata.
Le sessioni di live streaming della videocamera sono valide solo per 5 minuti. Se devi estendere la durata di un live streaming, usa il comando EstendiFormatstream appropriato del percorso CameraLiveStream per il formato dello stream che hai generato.
Richiesta e risposta di ExtendWebRtcStream
Richiesta
POST /enterprises/project-id/devices/device-id:executeCommand
{
"command" : "sdm.devices.commands.CameraLiveStream.ExtendWebRtcStream
",
"params" : {
"mediaSessionId" : "xXY7sLUYIrW9bfETyqFmi5od5r..."
}
}
Risposta
{ "results" : { "expiresAt" : "2018-01-04T18:30:00.000Z", "mediaSessionId" : "xXY7sLUYIrW9bfETyqFmi5od5r..." } }
Campi di richiesta ExtendWebRtcStream
Campo | Descrizione | Tipo di dati |
---|---|---|
mediaSessionId |
ID della sessione multimediale del live streaming WebRTC da estendere. | string Esempio: "xXY7sLUYIrW9bfETyqFmi5od5r..." |
Campi di risposta ExtendWebRtcStream
Campo | Descrizione | Tipo di dati |
---|---|---|
expiresAt |
La nuova data di scadenza dell'accesso al live streaming WebRTC, nel formato RFC 3339. | string Esempio: "2018-01-04T18:30:00.000Z" |
mediaSessionId |
ID della sessione multimediale del live streaming WebRTC che è stato esteso. | string Esempio: "xXY7sLUYIrW9bfETyqFmi5od5r..." |
StopWebRtcStream
Nest Cam (legacy)Annulla una sessione multimediale WebRTC valida e interrompe il live streaming WebRTC collegato a quella sessione.
Richiesta e risposta StopWebRtcStream
Richiesta
POST /enterprises/project-id/devices/device-id:executeCommand
{
"command" : "sdm.devices.commands.CameraLiveStream.StopWebRtcStream
",
"params" : {
"mediaSessionId" : "xXY7sLUYIrW9bfETyqFmi5od5r..."
}
}
Risposta
{}
Campi di richiesta StopWebRtcStream
Campo | Descrizione | Tipo di dati |
---|---|---|
mediaSessionId |
L'ID della sessione multimediale del live streaming WebRTC deve essere interrotto. | string Esempio: "xXY7sLUYIrW9bfETyqFmi5od5r..." |
Errori
Potrebbero essere restituiti i seguenti codici di errore in relazione a questo tratto:
Messaggio di errore | RPC | Risoluzione dei problemi |
---|---|---|
La videocamera non è disponibile per lo streaming. | FAILED_PRECONDITION |
La videocamera è offline o non è disponibile per lo streaming a causa di un problema tecnico. |
Il comando non è supportato per il campanello. | FAILED_PRECONDITION |
Uno stream WebRTC non può essere esteso sui campanelli alimentati a batteria. Se uno stream su un campanello deve essere visualizzato oltre la durata iniziale della sessione, interrompi lo stream esistente e generane uno nuovo. |
Autorizzazione negata. | PERMISSION_DENIED |
user non ha concesso le developer
autorizzazioni appropriate a livello di dispositivo in Partner Connections Manager (PCM) necessarie per eseguire un
comando. Quando viene generato un live streaming WebRTC, questo errore può anche significare che l'impostazione audio in offerSdp non è corretta. |
Consulta la pagina Riferimento per i codici di errore API per l'elenco completo dei codici di errore delle API.