طرحواره CameraLiveStream
Nest Cam (قدیمی)
sdm.devices.traits.CameraLiveStream
این مشخصه به هر دستگاهی که از جاریسازی زنده پشتیبانی میکند تعلق دارد.
فیلدها
| فیلد | شرح | نوع داده |
|---|---|---|
maxVideoResolution |
حداکثر وضوح جاریسازی زنده ویدیو. | VideoResolution |
videoCodecs |
کدکهای ویدیویی پشتیبانیشده برای جاریسازی زنده. | array(string)مقدار: ["H264"] |
audioCodecs |
کدکهای صوتی پشتیبانیشده برای جاریسازی زنده. | array(string)مقدار: [«OPUS»] |
supportedProtocols |
پروتکلهای جاریسازی که دستگاه پشتیبانی میکند. مقدار این فیلد نشان میدهد کدام فرمانها برای دستگاه پشتیبانی میشود. برای مثال، اگر این فیلد حاوی WEB_RTC باشد، فقط فرمانهای WEB_RTC پشتیبانی میشود. | array(string)مقدار: ["RTSP", "WEB_RTC"] |
VideoResolution (maxVideoResolution)
| فیلد | شرح | نوع داده |
|---|---|---|
width |
حداکثر پهنای وضوح تصویر. همچنین ممکن است بهعنوان پارامتر پُرسمان در نشانی وب بارگیری استفاده شود. | int32مثال: ۶۴۰ |
height |
حداکثر ارتفاع وضوح تصویر. ممکن است بهعنوان پارامتر پُرسمان در نشانی وب بارگیری نیز استفاده شود. | int32مثال: ۴۸۰ |
نمونه درخواست و پاسخ GET
درخواست
GET /enterprises/project-id/devices/device-id
پاسخ
{
"name" : "enterprises/project-id/devices/device-id",
"traits" : {
"sdm.devices.traits.CameraLiveStream" : {
"maxVideoResolution" : {
"width" : 640,
"height" : 480
},
"videoCodecs" : ["H264"],
"audioCodecs" : ["OPUS"],
"supportedProtocols" : ["WEB_RTC"]
}
}
}فرمان
GenerateRtspStream
Nest Cam (قدیمی)برای دسترسی به نشانی وب جاریسازی زنده RTSP، درخواست کد کنید.
نشانیهای وب جاریسازی زنده RTSP را نمیتوان بین مشتریان همرسانی کرد. نشانی وب جاریسازی را فقط یک کارخواه در هر زمان میتواند استفاده کند. اگر چند کارخواه بخواهند همزمان از یک دوربین جاریسازی کنند، باید دستورات RTSP برای هر کارخواه جداگانه ارسال شود و هر کارخواه جداگانه باید از نشانی وب جاریسازی خود استفاده کند.
درخواست و پاسخ GenerateRtspStream
درخواست
POST /enterprises/project-id/devices/device-id:executeCommand
{
"command" : "sdm.devices.commands.CameraLiveStream.GenerateRtspStream",
"params" : {}
}
پاسخ
{
"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
| فیلد | شرح | نوع داده |
|---|---|---|
streamUrls |
نقشه نشانیهای وب جاریسازی زنده RTSP. | object |
streamExtensionToken |
نشانهای که برای گسترش streamToken برای جاریسازی زنده RTSP استفاده میشود. |
stringمثال: «CjY5Y3VKaTZwR3o4Y19YbTVfMF...» |
streamToken |
رمز برای استفاده در دسترسی به جاریسازی زنده RTSP. | stringمثال: «g.0.streamingToken» |
expiresAt |
زمان انقضای streamExtensionToken و streamToken، در قالب RFC 3339. |
stringمثال: «2018-01-04T18:30:00.000Z» |
ExtendRtspStream
Nest Cam (قدیمی)درخواست کد دسترسی جدید نشانی وب جاریسازی زنده RTSP برای جایگزینی کد دسترسی معتبر RTSP قبلاز انقضای آن. این مورد همچنین برای جایگزین کردن یک کد RTSP معتبر از درخواست فرمان ExtendRtspStream قبلی استفاده میشود.
جلسههای جاریسازی زنده دوربین فقط ۵ دقیقه اعتبار دارند. اگر نیاز دارید طول عمر یک جاریسازی زنده را افزایش دهید، از فرمان مناسب «افزایشFormatجاریسازی» در CameraLiveStream trait برای قالب جاریسازی که تولید کردهاید استفاده کنید.
درخواست و پاسخ ExtendRtspStream
درخواست
POST /enterprises/project-id/devices/device-id:executeCommand
{
"command" : "sdm.devices.commands.CameraLiveStream.ExtendRtspStream",
"params" : {
"streamExtensionToken" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF..."
}
}
پاسخ
{
"results" : {
"streamExtensionToken" : "dGNUlTU2CjY5Y3VKaTZwR3o4Y1...",
"streamToken" : "g.0.newStreamingToken",
"expiresAt" : "2018-01-04T18:30:00.000Z"
}
}
فیلدهای درخواست ExtendRtspStream
| فیلد | شرح | نوع داده |
|---|---|---|
streamExtensionToken |
نشانیای که برای درخواست افزونه به نشانی جاریسازی RTSP استفاده میشود. | stringمثال: «CjY5Y3VKaTZwR3o4Y19YbTVfMF...» |
فیلدهای پاسخ ExtendRtspStream
| فیلد | شرح | نوع داده |
|---|---|---|
streamExtensionToken |
رمز برای استفاده در مشاهده جاریسازی زنده RTSP موجود و درخواست افزوده شدن به رمز جاریسازی. | stringمثال: «dGNUlTU2CjY5Y3VKaTZwR3o4Y1...» |
streamToken |
نشان جدیدی که برای دسترسی به جاریسازی زنده RTSP موجود استفاده میشود. | stringمثال: «g.0.newStreamingToken» |
expiresAt |
زمانی که هر دو streamExtensionToken و streamToken منقضی میشوند، در قالب RFC 3339. |
stringمثال: «2018-01-04T18:30:00.000Z» |
StopRtspStream
Nest Cam (قدیمی)کد دسترسی RTSP معتبری را نامعتبر میکند و جاریسازی زنده RTSP مرتبط با آن کد دسترسی را متوقف میکند.
درخواست و پاسخ StopRtspStream
درخواست
POST /enterprises/project-id/devices/device-id:executeCommand
{
"command" : "sdm.devices.commands.CameraLiveStream.StopRtspStream",
"params" : {
"streamExtensionToken" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF..."
}
}
پاسخ
{}
فیلدهای درخواست StopRtspStream
| فیلد | شرح | نوع داده |
|---|---|---|
streamExtensionToken |
نشانیای که برای نامعتبر کردن جاریسازی زنده RTSP موجود استفاده میشود. | stringمثال: «CjY5Y3VKaTZwR3o4Y19YbTVfMF...» |
GenerateWebRtcStream
Nest Cam (قدیمی)تولید جاریسازی زنده WebRTC برای دستگاه.
درخواست و پاسخ GenerateWebRtcStream
درخواست
POST /enterprises/project-id/devices/device-id:executeCommand
{
"command" : "sdm.devices.commands.CameraLiveStream.GenerateWebRtcStream",
"params" : {
"offerSdp" : "offerSdp"
}
}
پاسخ
{
"results" : {
"answerSdp" : "answerSdp",
"expiresAt" : "2020-01-04T18:30:00.000Z",
"mediaSessionId" : "-l_ZFLH2UjaFHYI0a-zFu7osIc..."
}
}
فیلدهای درخواست GenerateWebRtcStream
توصیه میکنیم از نمونه برنامه وب برای یادگیری نحوه تولید یک جاریسازی زنده موفق استفاده کنید. این نمونه
offerSdp معتبری تولید میکند که همه محدودیتهای پیشنهاد SDP را برای دوربینهای Nest برآورده میکند.
پیشنهاد SDP برای دوربینهای Nest باید محدودیتهای زیر را رعایت کند:
- فقط قالب «یکپارچه» پشتیبانی میشود. از «طرح B» پشتیبانی نمیشود.
- همه خطوط رسانه (
m=) باید در پیشنهاد ویژه وجود داشته باشند و باید به این ترتیب باشند:- صوتی
- ویدیو
- برنامه
- Trickle ICE پشتیبانی میشود، اما الزامی نیست.
- فقط کدک Opus برای صدا پشتیبانی میشود.
- تنظیمات صوتی باید روی
a=recvonly(فقط دریافت) تنظیم شود. - پیشنهاد باید با نویسه خط جدید
\r\nیا\nتمام شود.
دیدن نمونهای از پیشنهاد ویژه معتبر
قالببندینشده:
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
قالببندیشده:
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
| فیلد | شرح | نوع داده |
|---|---|---|
offerSdp |
پیشنهاد SDP، مختص دستگاه محلی که جاریسازی زنده WebRTC را نمایش خواهد داد. | stringمثال: «offerSdp» |
فیلدهای پاسخ GenerateWebRtcStream
answerSdp باید ظرف ۳۰ ثانیه پساز دریافت پاسخ برای تولید جاریسازی زنده استفاده شود، درغیراینصورت منقضی میشود. اگر منقضی شد، فرمان GenerateWebRtcStream را دوباره اجرا کنید تا answerSdp جدیدی دریافت کنید.
هنگام باز کردن کانالهای WebRTC برای جاریسازی زنده، حتماً یک کانال داده و همچنین یک کانال ویدیو ایجاد کنید.
| فیلد | شرح | نوع داده |
|---|---|---|
answerSdp |
پاسخ SDP برای استفاده با دستگاه محلی که جاریسازی زنده WebRTC را نمایش خواهد داد. | stringمثال: «answerSdp» |
expiresAt |
زمانی که دسترسی به جاریسازی زنده WebRTC منقضی میشود، در قالب RFC 3339. | stringمثال: «2020-01-04T18:30:00.000Z» |
mediaSessionId |
شناسه جلسه رسانهای جاریسازی زنده WebRTC تولیدشده. | stringمثال: «-l_ZFLH2UjaFHYI0a-zFu7osIc...» |
ExtendWebRtcStream
Nest Cam (قدیمی)درخواست کنید دسترسی به جاریسازی زنده WebRTC موجود قبلاز انقضای آن تمدید شود.
جاریسازی WebRTC را فقط میتوان در دوربینهای با منبع تغذیه سیمی گسترش داد. دوربین باتریدار وقتی برای شارژ شدن به برق وصل است، بهعنوان دوربین سیمدار درنظر گرفته میشود. اگر دوربین با باتری کار میکند، درخواست تمدید جاریسازی فعال WebRTC نادیده گرفته خواهد شد.
جلسههای جاریسازی زنده دوربین فقط ۵ دقیقه اعتبار دارند. اگر نیاز دارید طول عمر یک جاریسازی زنده را افزایش دهید، از فرمان مناسب «افزایشFormatجاریسازی» در CameraLiveStream trait برای قالب جاریسازی که تولید کردهاید استفاده کنید.
درخواست و پاسخ ExtendWebRtcStream
درخواست
POST /enterprises/project-id/devices/device-id:executeCommand
{
"command" : "sdm.devices.commands.CameraLiveStream.ExtendWebRtcStream",
"params" : {
"mediaSessionId" : "-l_ZFLH2UjaFHYI0a-zFu7osIc..."
}
}
پاسخ
{
"results" : {
"expiresAt" : "2018-01-04T18:30:00.000Z",
"mediaSessionId" : "-l_ZFLH2UjaFHYI0a-zFu7osIc..."
}
}
فیلدهای درخواست ExtendWebRtcStream
| فیلد | شرح | نوع داده |
|---|---|---|
mediaSessionId |
شناسه جلسه رسانهای جاریسازی زنده WebRTC که باید تمدید شود. | stringمثال: «-l_ZFLH2UjaFHYI0a-zFu7osIc...» |
فیلدهای پاسخ ExtendWebRtcStream
| فیلد | شرح | نوع داده |
|---|---|---|
expiresAt |
زمان جدیدی که دسترسی به جاریسازی زنده WebRTC منقضی میشود، در قالب RFC 3339. | stringمثال: «2018-01-04T18:30:00.000Z» |
mediaSessionId |
شناسه جلسه رسانه جاریسازی زنده WebRTC که تمدید شد. | stringمثال: «-l_ZFLH2UjaFHYI0a-zFu7osIc...» |
StopWebRtcStream
Nest Cam (قدیمی)جلسه رسانه WebRTC معتبری را نامعتبر میکند و جاریسازی زنده WebRTC مرتبط با آن جلسه را متوقف میکند.
درخواست و پاسخ StopWebRtcStream
درخواست
POST /enterprises/project-id/devices/device-id:executeCommand
{
"command" : "sdm.devices.commands.CameraLiveStream.StopWebRtcStream",
"params" : {
"mediaSessionId" : "-l_ZFLH2UjaFHYI0a-zFu7osIc..."
}
}
پاسخ
{}
فیلدهای درخواست StopWebRtcStream
| فیلد | شرح | نوع داده |
|---|---|---|
mediaSessionId |
شناسه جلسه رسانه جاریسازی زنده WebRTC برای توقف. | stringمثال: «-l_ZFLH2UjaFHYI0a-zFu7osIc...» |
خطاها
کد(های) خطای زیر ممکن است دررابطهبا این ویژگی برگردانده شود:
| پیام خطا | فراخوانی رویهای دوردست | عیبیابی |
|---|---|---|
| دوربین برای جاریسازی دردسترس نیست. | FAILED_PRECONDITION |
دوربین بهدلیل مشکل فنی آفلاین است یا برای جاریسازی دردسترس نیست. |
| فرمان برای زنگ در پشتیبانی نمیشود. | FAILED_PRECONDITION |
جاریسازی WebRTC را نمیتوان در زنگهای در باتریدار تمدید کرد. اگر جاریسازی زنگ در باید فراتر از طول جلسه اولیه مشاهده شود، جاریسازی موجود را متوقف کنید و جاریسازی جدیدی ایجاد کنید. |
| مجوز رد شد. | PERMISSION_DENIED |
user اجازههای مناسب سطح دستگاه را در «مدیر اتصالات شریک» (PCM) که برای اجرای فرمان لازم است به developerاعطا نکرده است. هنگام تولید جاریسازی زنده WebRTC، این خطا میتواند به این معنی باشد که تنظیمات صدا در offerSdp نادرست است. |
برای مشاهده فهرست کامل کدهای خطای میانای برنامهسازی کاربردی، مرجع کدهای خطای میانای برنامهسازی کاربردی را ببینید.