KameraLiveStream Şeması
Nest}Nest Cam (eski) Nest CamNest} Nest} Nest} Nest} Nest} Nest} Nest} Nest} {/0bellNest Cam (dış mekan veya iç mekan, pil)
sdm.devices.traits.CameraLiveStream
Bu özellik, canlı yayını destekleyen tüm cihazlara aittir.
Alanlar
Alan | Açıklama | Veri Türü |
---|---|---|
maxVideoResolution |
Video canlı yayınının maksimum çözünürlüğü. | VideoResolution |
videoCodecs |
Canlı yayın için desteklenen video codec'leri. | array(string) Değer: ["H264"] |
audioCodecs |
Canlı yayın için desteklenen ses codec'leri. | array(string) Değer: ["AAC"] |
supportedProtocols |
Cihazın desteklediği akış protokolleri. Bu alanın değeri, cihaz için hangi komutların desteklendiğini gösterir. Örneğin, bu alan WEB_RTC içeriyorsa yalnızca WEB_RTC komutları desteklenir. | array(string) Değer: ["RTSP", "WEB_RTC"] |
Video Çözünürlüğü (maxVideoResolution)
Alan | Açıklama | Veri Türü |
---|---|---|
width |
Maksimum resim çözünürlüğü genişliği. İndirme URL'sinde bir sorgu parametresi olarak da kullanılabilir. | int32 Örnek: 640 |
height |
Maksimum resim çözünürlüğü yüksekliği. İndirme URL'sinde bir sorgu parametresi olarak da kullanılabilir. | int32 Örnek: 480 |
Örnek GET isteği ve yanıtı
İstek
GET /enterprises/project-id/devices/device-id
Yanıt
{
"name" : "enterprises/project-id/devices/device-id",
"traits" : {
"sdm.devices.traits.CameraLiveStream
" : {
"maxVideoResolution" : {
"width" : 640,
"height" : 480
},
"videoCodecs" : ["H264"],
"audioCodecs" : ["AAC"],
"supportedProtocols" : ["WEB_RTC"]
}
}
}
Komutlar
GenerateRtspStream
Nest Cam (eski)RTSP canlı yayın URL'sine erişmek için jeton isteyin.
RTSP canlı yayın URL'leri müşteriler arasında paylaşılamaz. Bir akış URL'si tek seferde yalnızca bir istemci tarafından kullanılabilir. Birden fazla istemci aynı kameradan aynı anda yayın yapmak isterse RTSP komutları her bir istemci için ayrı ayrı gönderilmelidir ve her bir istemci kendi akış URL'sini kullanmalıdır.
GenerateRtspStream isteği ve yanıtı
İstek
POST /enterprises/project-id/devices/device-id:executeCommand
{
"command" : "sdm.devices.commands.CameraLiveStream.GenerateRtspStream
",
"params" : {}
}
Yanıt
{ "results" : { "streamUrls" : { "rtspUrl" : "rtsps://someurl.com/CjY5Y3VKaTZwR3o4Y19YbTVfMF...?auth=g.0.streamingToken" }, "streamExtensionToken" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF...", "streamToken" : "g.0.streamingToken", "expiresAt" : "2018-01-04T18:30:00.000Z" } }
GenerateRtspStream yanıt alanları
Alan | Açıklama | Veri Türü |
---|---|---|
streamUrls |
RTSP canlı yayın URL'lerinin haritası. | object |
streamExtensionToken |
RTSP canlı yayınında streamToken öğesini uzatmak için kullanılacak jeton. |
string Örnek: "CjY5Y3VKaTZwR3o4Y19YbTVfMF..." |
streamToken |
RTSP canlı yayınına erişmek için kullanılacak jeton. | string Örnek: "g.0.streamingToken" |
expiresAt |
RFC 3339 biçiminde belirtilen, streamExtensionToken ve streamToken değerlerinin süresinin dolacağı saat. |
string Örnek: "2018-01-04T18:30:00.000Z" |
ExtendRtspStream
Nest Cam (eski)Süresi dolmadan önce geçerli bir RTSP erişim jetonunu değiştirmek için yeni bir RTSP canlı yayın URL'si erişim jetonu isteyin. Bu, önceki bir ExtendRtspStream komut isteğindeki geçerli bir RTSP jetonunu değiştirmek için de kullanılır.
Kamera canlı yayın oturumları yalnızca 5 dakika boyunca geçerlidir. Bir canlı yayının ömrünü uzatmak istiyorsanız oluşturduğunuz yayın biçimi için KameraLiveStream özelliğinin uygun ExtendFormatStream komutunu kullanın.
ExtendRtspStream isteği ve yanıtı
İstek
POST /enterprises/project-id/devices/device-id:executeCommand
{
"command" : "sdm.devices.commands.CameraLiveStream.ExtendRtspStream
",
"params" : {
"streamExtensionToken" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF..."
}
}
Yanıt
{ "results" : { "streamExtensionToken" : "dGNUlTU2CjY5Y3VKaTZwR3o4Y1...", "streamToken" : "g.0.newStreamingToken", "expiresAt" : "2018-01-04T18:30:00.000Z" } }
ExtendRtspStream istek alanları
Alan | Açıklama | Veri Türü |
---|---|---|
streamExtensionToken |
RTSP akış jetonuna ek süre istemek için kullanılacak jeton. | string Örnek: "CjY5Y3VKaTZwR3o4Y19YbTVfMF..." |
ExtendRtspStream yanıt alanları
Alan | Açıklama | Veri Türü |
---|---|---|
streamExtensionToken |
Mevcut bir RTSP canlı yayınını görüntülemek ve yayın jetonunun uzatılması isteğinde bulunmak için kullanılacak jeton. | string Örnek: "dGNUlTU2CjY5Y3VKaTZwR3o4Y1..." |
streamToken |
Mevcut bir RTSP canlı yayınına erişmek için kullanılacak yeni jeton. | string Örnek: "g.0.newStreamingToken" |
expiresAt |
RFC 3339 biçiminde belirtilen, streamExtensionToken ve streamToken değerlerinin süresinin dolacağı saat. |
string Örnek: "2018-01-04T18:30:00.000Z" |
StopRtspStream
Nest Cam (eski)Geçerli bir RTSP erişim jetonunu geçersiz kılar ve bu erişim jetonuna bağlı RTSP canlı yayınını durdurur.
StopRtspStream isteği ve yanıtı
İstek
POST /enterprises/project-id/devices/device-id:executeCommand
{
"command" : "sdm.devices.commands.CameraLiveStream.StopRtspStream
",
"params" : {
"streamExtensionToken" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF..."
}
}
Yanıt
{}
StopRtspStream istek alanları
Alan | Açıklama | Veri Türü |
---|---|---|
streamExtensionToken |
Mevcut bir RTSP canlı yayınını geçersiz kılmak için kullanılacak jeton. | string Örnek: "CjY5Y3VKaTZwR3o4Y19YbTVfMF..." |
GenerateWebRtcStream
Nest Cam (eski)Bir cihaz için WebRTC canlı yayını oluşturun.
GenerateWebRtcStream isteği ve yanıtı
İstek
POST /enterprises/project-id/devices/device-id:executeCommand
{
"command" : "sdm.devices.commands.CameraLiveStream.GenerateWebRtcStream
",
"params" : {
"offerSdp" : "offerSdp"
}
}
Yanıt
{ "results" : { "answerSdp" : "answerSdp", "expiresAt" : "2020-01-04T18:30:00.000Z", "mediaSessionId" : "QW_yv1uYh-WRDT6K8ZFuVywm5v..." } }
GenerateWebRtcStream istek alanları
Başarılı bir canlı yayının nasıl yapılacağını öğrenmek için Web Uygulaması Örneği'ni kullanmanızı öneririz. Bu örnek, Nest kameralar için tüm SDP teklif kısıtlamalarına uyan geçerli bir offerSdp
oluşturur.
Nest kameralara yönelik SDP teklifleri aşağıdaki kısıtlamaları karşılamalıdır:
- Yalnızca Birleşik biçimi desteklenir. B Planı desteklenmiyor.
- Tüm medya satırları (
m=
) teklifte yer almalı ve şu sırayla olmalıdır:- Ses
- video
- uygulama
- Trickle ICE desteklenir ancak zorunlu değildir.
- Ses için yalnızca Opus codec'i desteklenir.
- Ses ayarı
a=recvonly
(yalnızca alma) olarak ayarlanmalıdır. - Fırsat,
\r\n
veya\n
şeklinde bir yeni satır karakteriyle bitmelidir.
Geçerli teklif örneğini inceleyin
Biçimlendirilmemiş:
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
Biçimlendirilmiş:
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
Alan | Açıklama | Veri Türü |
---|---|---|
offerSdp |
WebRTC canlı yayınını gösterecek yerel cihaza özel bir SDP teklifi. | string Örnek: "offerSdp" |
GenerateWebRtcStream yanıt alanları
answerSdp
, yanıt alındıktan sonraki 30 saniye içinde canlı yayını oluşturmak için kullanılmalıdır, aksi takdirde süresi dolar. Süresi dolarsa yeni bir answerSdp
almak için GenerateWebRtcStream komutunu tekrar çalıştırın.
Canlı yayın için WebRTC kanallarını açarken video kanalının yanı sıra veri kanalı da oluşturduğunuzdan emin olun.
Alan | Açıklama | Veri Türü |
---|---|---|
answerSdp |
WebRTC canlı yayınını gösterecek yerel cihazla kullanılacak bir SDP yanıtı. | string Örnek: "answerSdp" |
expiresAt |
RFC 3339 biçiminde, WebRTC canlı yayınına erişimin sona ereceği saat. | string Örnek: "2020-01-04T18:30:00.000Z" |
mediaSessionId |
Oluşturulan WebRTC canlı yayınının medya oturumu kimliği. | string Örnek: "QW_yv1uYh-WRDT6K8ZFuVywm5v..." |
ExtendWebRtcStream
Nest Cam (eski)Mevcut bir WebRTC canlı yayınına erişimin, geçerlilik süresi dolmadan önce uzatılmasını isteyin.
WebRTC akışı yalnızca kabloyla çalışan kameralarda genişletilebilir. Pille çalışan bir kamera, şarj için fişe takılıyken kabloyla çalışan bir kamera olarak kabul edilir. Kamera pille çalışıyorsa etkin WebRTC akışını uzatma isteği yoksayılır.
Kamera canlı yayın oturumları yalnızca 5 dakika boyunca geçerlidir. Bir canlı yayının ömrünü uzatmak istiyorsanız oluşturduğunuz yayın biçimi için KameraLiveStream özelliğinin uygun ExtendFormatStream komutunu kullanın.
ExtendWebRtcStream isteği ve yanıtı
İstek
POST /enterprises/project-id/devices/device-id:executeCommand
{
"command" : "sdm.devices.commands.CameraLiveStream.ExtendWebRtcStream
",
"params" : {
"mediaSessionId" : "QW_yv1uYh-WRDT6K8ZFuVywm5v..."
}
}
Yanıt
{ "results" : { "expiresAt" : "2018-01-04T18:30:00.000Z", "mediaSessionId" : "QW_yv1uYh-WRDT6K8ZFuVywm5v..." } }
ExtendWebRtcStream istek alanları
Alan | Açıklama | Veri Türü |
---|---|---|
mediaSessionId |
Uzatılacak WebRTC canlı yayınının medya oturumu kimliği. | string Örnek: "QW_yv1uYh-WRDT6K8ZFuVywm5v..." |
ExtendWebRtcStream yanıt alanları
Alan | Açıklama | Veri Türü |
---|---|---|
expiresAt |
RFC 3339 biçiminde, WebRTC canlı yayınına erişimin sona ereceği yeni saat. | string Örnek: "2018-01-04T18:30:00.000Z" |
mediaSessionId |
Genişletilmiş WebRTC canlı yayınının medya oturumu kimliği. | string Örnek: "QW_yv1uYh-WRDT6K8ZFuVywm5v..." |
StopWebRtcStream
Nest Cam (eski)Geçerli bir WebRTC medya oturumunu geçersiz kılar ve bu oturuma bağlı WebRTC canlı yayınını durdurur.
StopWebRtcStream isteği ve yanıtı
İstek
POST /enterprises/project-id/devices/device-id:executeCommand
{
"command" : "sdm.devices.commands.CameraLiveStream.StopWebRtcStream
",
"params" : {
"mediaSessionId" : "QW_yv1uYh-WRDT6K8ZFuVywm5v..."
}
}
Yanıt
{}
StopWebRtcStream istek alanları
Alan | Açıklama | Veri Türü |
---|---|---|
mediaSessionId |
Durdurulacak WebRTC canlı yayınının medya oturumu kimliği. | string Örnek: "QW_yv1uYh-WRDT6K8ZFuVywm5v..." |
Hatalar
Bu özellikle ilgili olarak aşağıdaki hata kodları döndürülebilir:
Hata Mesajı | RPC | Sorun giderme |
---|---|---|
Kapı zili için komut desteklenmiyor. | FAILED_PRECONDITION |
WebRTC akışı, pille çalışan kapı zillerinde uzatılamaz. Kapı zilindeki bir yayının ilk oturum süresinden sonra izlenmesi gerekiyorsa mevcut yayını durdurup yeni bir yayın oluşturun. |
İzin reddedildi. | PERMISSION_DENIED |
The user bir komutu yürütmek için İş Ortağı Bağlantıları Yöneticisi'nde (PCM) gerekli cihaz düzeyinde izinleri developervermemiş. Bir WebRTC canlı yayını oluştururken bu hata offerSdp öğesindeki ses ayarının yanlış olduğu anlamına da gelebilir. |
API hata kodlarının tam listesi için API Hata Kodu Referansı'na bakın.