
همه Nest Cam قدیمی در «میانای برنامهسازی کاربردی مدیریت دستگاه هوشمند» (SDM) پشتیبانی میشوند:
- Google Nest Cam ویژه فضای بسته
- Google Nest Cam ویژه فضای باز
- Google Nest Cam IQ ویژه فضای بسته
- Google Nest Cam IQ ویژه فضای باز
این دستگاهها نوع دستگاه CAMERA را برمیگردانند:
sdm.devices.types.CAMERA
Google Nest Doorbell (قدیمی) و Google Nest Hub Max نیز بهعنوان دوربین عمل میکنند و ویژگیهای مشابهی دارند، هرچند نوع دستگاه آنها بهترتیب DOORBELL و DISPLAY است.
میتوان از Google Nest Cam ویژه فضای بسته و Google Nest Cam ویژه فضای باز در برنامه Nest یا برنامه Google Home استفاده کرد، اما نمیتوان از آنها بهطور همزمان در هر دو برنامه استفاده کرد. وقتی دوربین در برنامه Nest باشد، از RTSP پشتیبانی میکند. و وقتی دوربین در برنامه Google Home باشد،
از WebRTC پشتیبانی میکند. فیلد supportedProtocols در
CameraLiveStream ویژگی نشان میدهد از کدام قالب
پشتیبانی میشود. برای توضیحات بیشتر، به مقاله پشتیبانی
انتقال دستگاهها به برنامه Google Home
مراجعه کنید.
برای اطلاعات بیشتر درباره ویژگیهای منحصربهفرد این نوع دستگاهها، راهنمای دستگاه زنگ در و نمایشگر را ببینید.
ویژگیها
Reference
ویژگیها، فرمانها، یا رویدادهای زیر با این دستگاه مرتبط است:
| ویژگی | شرح | فرمان | رویدادها |
|---|---|---|---|
| CameraEventImage | این مشخصه به هر دستگاهی که از تولید تصویر از رویدادها پشتیبانی میکند تعلق دارد. | GenerateImage | |
| CameraImage | این مشخصه به هر دستگاهی که از گرفتن تصویر پشتیبانی میکند تعلق دارد. | ||
| CameraLiveStream | این مشخصه به هر دستگاهی که از جاریسازی زنده پشتیبانی میکند تعلق دارد. | GenerateRtspStream ExtendRtspStream StopRtspStream GenerateWebRtcStream ExtendWebRtcStream StopWebRtcStream | |
| CameraMotion | این مشخصه به هر دستگاهی که از رویدادهای تشخیص حرکت پشتیبانی میکند تعلق دارد. | حرکت | |
| CameraPerson | این مشخصه به هر دستگاهی که از رویدادهای تشخیص افراد پشتیبانی میکند تعلق دارد. | شخص | |
| CameraSound | این مشخصه به هر دستگاهی که از رویدادهای تشخیص صدا پشتیبانی میکند تعلق دارد. | صدا | |
| اطلاعات | این مشخصه به هر دستگاهی برای اطلاعات مربوط به دستگاه تعلق دارد. |
(قالب) JSON
عدم وجود یک مشخصه در پاسخ GET نشان میدهد که مشخصه یا ویژگی درحالحاضر برای دستگاه دردسترس نیست. برای اطلاعات بیشتر، انواع دستگاه را ببینید.
{
"type" : "sdm.devices.types.CAMERA",
"traits" : {
"sdm.devices.traits.CameraEventImage" : {},
"sdm.devices.traits.CameraImage" : {
"maxImageResolution" : {
"width" : 1280,
"height" : 960
}
},
"sdm.devices.traits.CameraLiveStream" : {
"maxVideoResolution" : {
"width" : 640,
"height" : 480
},
"videoCodecs" : ["H264"],
"audioCodecs" : ["OPUS"],
"supportedProtocols" : ["WEB_RTC"]
},
"sdm.devices.traits.CameraMotion" : {},
"sdm.devices.traits.CameraPerson" : {},
"sdm.devices.traits.CameraSound" : {},
"sdm.devices.traits.Info" : {
"customName" : "My device"
}
}
}مدیریت رویدادهای دوربین
رویدادهای زیر ممکن است از نوع دستگاه CAMERA یا DOORBELL یا DISPLAY که دارای دوربین است، مثل Google Nest Doorbell (قدیمی) یا Google Nest Hub Max، راهاندازی شوند :| نوع | عنصر | شرح |
|---|---|---|
| رویداد | رویداد حرکت از مشخصه CameraMotion | دوربین حرکت را تشخیص داده است. |
| رویداد | رویداد شخص از مشخصه CameraPerson | دوربین فردی را تشخیص داده است. |
| رویداد | رویداد صدا از مشخصه CameraSound | دوربین صدا را تشخیص داده است. |
پایهبار
{
"eventId" : "99cb2e90-c06c-4d75-a528-a52591e480f2",
"timestamp" : "2019-01-01T00:00:01Z",
"resourceUpdate" : {
"name" : "enterprises/project-id/devices/device-id",
"events" : {
"sdm.devices.events.CameraMotion.Motion" : {
"eventSessionId" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF...",
"eventId" : "r5Nnr6NA3wM5fTKaIHnrlBpuCL...",
}
}
}
"userId" : "AVPHwEuBfnPOnTqzVFT4IONX2Qqhu9EJ4ubO-bNnQ-yi",
"resourceGroup" : [
"enterprises/project-id/devices/device-id"
]
}eventId است که میتوان از آن با فرمان
GenerateImage
استفاده کرد. این فرمان نشانی وب بارگیری تصویر دوربین مربوط به رویداد را برمیگرداند:
درخواست
POST /enterprises/project-id/devices/device-id:executeCommand
{
"command" : "sdm.devices.commands.CameraEventImage.GenerateImage",
"params" : {
"eventId" : "BOPTUCKqMYTXjxEyQ6jsOjDY89..."
}
}
پاسخ
{
"results" : {
"url" : "https://domain/sdm_event_snapshot/dGNUlTU2CjY5Y3VKaTZwR3o4Y1...",
"token" : "g.0.eventToken"
}
}
بارگیری تصویر دوربین
بااستفاده از token در سرایند «مجوز HTTP» با مجوز «پایه»،
تماس GET با url از پاسخ فرمان
GenerateImage برقرار کنید تا
تصویر دوربین را بارگیری کنید:
curl -H "Authorization: Basic g.0.eventToken" \
https://domain/sdm_event_snapshot/dGNUlTU2CjY5Y3VKaTZwR3o4Y1...از پارامترهای پُرسمان width یا height برای سفارشیسازی وضوح تصویر
بارگیریشده استفاده کنید. فقط یکی از این پارامترها باید مشخص شود. پارامتر دیگر براساس نسبت ابعادی دوربین بهطور خودکار مقیاسبندی میشود.
برای مثال، اگر نسبت ابعادی دوربین ۴:۳ است، برای بارگیری تصویر دوربین با وضوح ۴۸۰ × ۳۶۰، عرض یا ارتفاع را مشخص کنید:
عرض
curl -H "Authorization: Basic g.0.eventToken" \
https://domain/sdm_event_snapshot/dGNUlTU2CjY5Y3VKaTZwR3o4Y1...?width=480قد
curl -H "Authorization: Basic g.0.eventToken" \
https://domain/sdm_event_snapshot/dGNUlTU2CjY5Y3VKaTZwR3o4Y1...?height=360محدودیتهای دیگر برای نشانی وب بارگیری اعمال میشود:
- اگر هر دو پارامتر در نشانی وب ارائه شده باشند، از
widthاستفاده میشود وheightنادیده گرفته میشود. - اگر هیچکدام از پارامترها در نشانی وب ارائه نشده باشد، مقدار پیشفرض ۴۸۰ برای
widthانتخاب میشود.
برای کسب اطلاعات درباره ویژگیهای تصویر، ویژگی CameraImage را ببینید.
دسترسی به جاریسازی زنده
میتوان به جاریسازی زنده از دوربین دسترسی داشت. قالبهای جاریسازی زیر برای این دستگاه پشتیبانی میشوند:
- RTSP
- WebRTC
برای فهرست کامل دوربینها و قالبهای جاریسازی پشتیبانیشده، به دستگاههای پشتیبانیشده مراجعه کنید.
برای دسترسی به جاریسازی زنده، از فرمان GenerateFormatStream مربوط به CameraLiveStream استفاده کنید.
WebRTC
برای جاریسازی WebRTC، یک offerSdp در فرمان
GenerateWebRtcStream از ویژگی CameraLiveStream
ارسال کنید تا answerSdp دریافت کنید:
درخواست
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" : "EE4XMkFf5vrWOIDSpAzaizy-Gl..."
}
}
توصیه میکنیم از نمونه برنامه وب برای یادگیری نحوه تولید یک جاریسازی زنده موفق استفاده کنید. این نمونه
یک offerSdp معتبر تولید میکند که همه محدودیتهای پیشنهاد SDP را برای دوربینهای Nest برآورده میکند.
پیشنهاد SDP برای دوربینهای Nest باید با محدودیتهای زیر مطابقت داشته باشد:
- فقط قالب «یکپارچه» پشتیبانی میشود. از طرح B پشتیبانی نمیشود.
- همه خطوط رسانه (
m=) باید در پیشنهاد ویژه وجود داشته باشند و باید به این ترتیب باشند:- صوتی
- ویدیو
- برنامه
- از «یخزدایی تدریجی» پشتیبانی میشود، اما الزامی نیست.
- فقط از کدک Opus برای صدا پشتیبانی میشود.
- تنظیمات صوتی باید روی
a=recvonly(فقط دریافت) تنظیم شود. - پیشنهاد ویژه باید با نویسه خط جدید
\r\nیا\nپایان یابد.
از answerSdp باید برای تولید جاریسازی زنده ظرف ۳۰ ثانیه پساز دریافت پاسخ استفاده شود، درغیراینصورت منقضی میشود. اگر منقضی شد، فرمان GenerateWebRtcStream را دوباره اجرا کنید تا answerSdp جدیدی دریافت کنید.
هنگام باز کردن کانالهای WebRTC برای جاریسازی زنده، مطمئن شوید که علاوهبر کانال ویدیو، یک کانال داده نیز ایجاد کنید.
دیدن نمونهای از پیشنهاد ویژه معتبر
بدون قالببندی:
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
RTSP
برای جاریسازی RTSP، فرمان
GenerateRtspStream از فرمان ویژگی CameraLiveStream
نشانی وب جاریسازی و streamToken مربوطه را برمیگرداند:
درخواست
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"
}
}
سپس از نشانی وب جاریسازی برای دسترسی به جاریسازی زنده دوربین استفاده کنید:
rtsps://someurl.com/CjY5Y3VKaTZwR3o4Y19YbTVfMF...?auth=g.0.streamingToken
نشانیهای وب جاریسازی زنده RTSP نمیتوانند بین مشتریان همرسانی شوند. نشانی وب جاریسازی را فقط یک مشتری میتواند در هر زمان استفاده کند. اگر چند کارخواه بخواهند همزمان از یک دوربین جاریسازی کنند، باید دستورات RTSP برای هر کارخواه جداگانه ارسال شود و هر کارخواه جداگانه باید از نشانی وب جاریسازی خود استفاده کند.
تمدید کردن جاریسازی زنده
جلسات جاریسازی زنده دوربین فقط ۵ دقیقه معتبر هستند. اگر نیاز دارید طول عمر یک جاریسازی زنده را افزایش دهید، از فرمان مناسب «افزایشFormatجاریسازی» در CameraLiveStream trait برای قالب جاریسازی که تولید کردهاید استفاده کنید.
WebRTC
سیمدار
جریان WebRTC فقط در دوربینهای با سیم قابل گسترش است. دوربین باتریدار هنگام وصل شدن برای شارژ، دوربین سیمدار درنظر گرفته میشود. اگر دوربین با باتری کار میکند، درخواست برای طولانی کردن جاریسازی WebRTC فعال نادیده گرفته خواهد شد.
برای گسترش جاریسازی WebRTC، شناسه جلسه رسانهای جاریسازی را با فرمان ExtendWebRtcStream از ویژگی CameraLiveStream مشخص کنید:
درخواست
POST /enterprises/project-id/devices/device-id:executeCommand
{
"command" : "sdm.devices.commands.CameraLiveStream.ExtendWebRtcStream",
"params" : {
"mediaSessionId" : "EE4XMkFf5vrWOIDSpAzaizy-Gl..."
}
}
پاسخ
{
"results" : {
"expiresAt" : "2018-01-04T18:30:00.000Z",
"mediaSessionId" : "EE4XMkFf5vrWOIDSpAzaizy-Gl..."
}
}
RTSP
برای گسترش جاریسازی RTSP، از فرمان
ExtendRtspStream از فرمان ویژگی CameraLiveStream برای
دریافت مقادیر جدید streamExtensionToken و streamToken
استفاده کنید:
درخواست
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"
}
}
نشانی وب جاریسازی را با این مقادیر جدید بهروز کنید تا به تماشای جاریسازی زنده ادامه دهید:
rtsps://someurl.com/dGNUlTU2CjY5Y3VKaTZwR3o4Y1...?auth=g.0.newStreamingToken
توقف جاریسازی زنده
هر زمان که دیگر از جاریسازی زنده دوربین استفاده نمیکنید، باید آن را متوقف کنید و جاریسازی را نامعتبر کنید. برای انجام این کار، از فرمان مناسب StopFormatStream از CameraLiveStream برای قالب جاریسازی که تولید کردهاید استفاده کنید.
WebRTC
برای متوقف کردن جاریسازی WebRTC، شناسه جلسه رسانه را با فرمان StopWebRtcStream از مشخصه CameraLiveStream مشخص کنید:
درخواست
POST /enterprises/project-id/devices/device-id:executeCommand
{
"command" : "sdm.devices.commands.CameraLiveStream.StopWebRtcStream",
"params" : {
"mediaSessionId" : "EE4XMkFf5vrWOIDSpAzaizy-Gl..."
}
}
پاسخ
{}
RTSP
برای متوقف کردن جاریسازی RTSP، از کد استفاده کنید تا بااستفاده از فرمان StopRtspStream از ویژگی فرمان CameraLiveStream نامعتبر شود:
درخواست
POST /enterprises/project-id/devices/device-id:executeCommand
{
"command" : "sdm.devices.commands.CameraLiveStream.StopRtspStream",
"params" : {
"streamExtensionToken" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF..."
}
}
پاسخ
{}
خطاها
کد(های) خطای زیر ممکن است در رابطه با این دستگاه برگردانده شود:
| پیام خطا | RPC | عیبیابی |
|---|---|---|
| دوربین برای جاریسازی دردسترس نیست. | FAILED_PRECONDITION |
دوربین یا آفلاین است یا بهدلیل مشکل فنی برای جاریسازی دردسترس نیست. |
| از فرمان پشتیبانی نمیشود. | INVALID_ARGUMENT |
از فرمان جاریسازی زنده RTSP برای دوربینی که از WebRTC پشتیبانی میکند استفاده کردهاید، یا از فرمان جاریسازی زنده WebRTC برای دوربینی که از RTSP پشتیبانی میکند استفاده کردهاید. |
| تصویر دوربین دیگر برای بارگیری دردسترس نیست. | DEADLINE_EXCEEDED |
تصاویر رویداد ۳۰ ثانیه پساز انتشار رویداد منقضی میشوند. حتماً تصویر را قبلاز منقضی شدن بارگیری کنید. |
| شناسه رویداد متعلق به دوربین نیست. | FAILED_PRECONDITION |
از eventID صحیح برگشتدادهشده توسط رویداد دوربین استفاده کنید. |
برای فهرست کامل کدهای خطای میانای برنامهسازی کاربردی، مرجع کد خطای میانای برنامهسازی کاربردی را ببینید.