
Google Nest Doorbell (سیمی) در «میانای برنامهسازی کاربردی مدیریت دستگاه هوشمند» (SDM) پشتیبانی میشود. این دستگاه نوع دستگاه زنگ در را برمیگرداند:
sdm.devices.types.DOORBELL
Google Nest Doorbell (سیمی) دارای دوربین است که عملکرد آن مشابه نوع دستگاه CAMERA است.
ویژگیها
Reference
ویژگیها، فرمانها، یا رویدادهای زیر با این دستگاه مرتبط است:
| ویژگی | شرح | فرمان | رویدادها |
|---|---|---|---|
| CameraClipPreview | این مشخصه به هر دستگاهی که از بارگیری پیشنمایش کلیپ پشتیبانی میکند تعلق دارد. | ClipPreview | |
| CameraLiveStream | این مشخصه به هر دستگاهی که از جاریسازی زنده پشتیبانی میکند تعلق دارد. | GenerateWebRtcStream ExtendWebRtcStream StopWebRtcStream | |
| CameraMotion | این مشخصه به هر دستگاهی که از رویدادهای تشخیص حرکت پشتیبانی میکند تعلق دارد. | حرکت | |
| CameraPerson | این مشخصه به هر دستگاهی که از رویدادهای تشخیص افراد پشتیبانی میکند تعلق دارد. | شخص | |
| DoorbellChime | این مشخصه به هر دستگاهی که از صدای زنگ در و رویدادهای فشار مربوطه پشتیبانی میکند تعلق دارد. | Chime | |
| اطلاعات | این مشخصه به هر دستگاهی برای اطلاعات مربوط به دستگاه تعلق دارد. |
(قالب) JSON
عدم وجود یک مشخصه در پاسخ GET نشان میدهد که مشخصه یا ویژگی درحالحاضر برای دستگاه دردسترس نیست. برای اطلاعات بیشتر، انواع دستگاه را ببینید.
{
"type" : "sdm.devices.types.DOORBELL",
"traits" : {
"sdm.devices.traits.CameraClipPreview" : {},
"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.DoorbellChime" : {},
"sdm.devices.traits.Info" : {
"customName" : "My device"
}
}
}مدیریت رویدادهای دوربین و زنگ در
رویدادهای زیر ممکن است از نوع دستگاه «زنگ در» راهاندازی شوند: برای مثال، در اینجا دکمه زنگ در فشار داده شده است:پایهبار
{
"eventId" : "665c845b-93fb-46b8-84f3-a8f3a944c5ed",
"timestamp" : "2019-01-01T00:00:01Z",
"resourceUpdate" : {
"name" : "enterprises/project-id/devices/device-id",
"events" : {
"sdm.devices.events.DoorbellChime.Chime" : {
"eventSessionId" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF...",
"eventId" : "SJM-QqUO3epBEUeLdghIBPJxbf..."
}
}
}
"userId" : "AVPHwEuBfnPOnTqzVFT4IONX2Qqhu9EJ4ubO-bNnQ-yi",
"resourceGroup" : [
"enterprises/project-id/devices/device-id"
]
}کلیپ ویدیویی برای پیشنمایش دردسترس است و حاوی رویدادی با
previewUrl خواهد بود. پیشنمایش کلیپ ممکن است همزمان با رویداد منتشر شود.
از eventSessionId برای مرتبط کردن این رویداد و previewUrl مربوط به آن با یک یا چند رویداد پشتیبانیشده استفاده کنید.
پایهبار
{
"eventId" : "68ce3582-a988-45e7-bad6-dc2a392715b0",
"timestamp" : "2019-01-01T00:00:45Z",
"resourceUpdate" : {
"name" : "enterprises/project-id/devices/device-id",
"events" : {
"sdm.devices.events.DoorbellChime.Chime" : {
"eventSessionId" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF...",
"eventId" : "SJM-QqUO3epBEUeLdghIBPJxbf..."
},
"sdm.devices.events.CameraClipPreview.ClipPreview" : {
"eventSessionId" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF...",
"previewUrl" : "https://previewUrl/..."
}
}
},
"userId": "AVPHwEuBfnPOnTqzVFT4IONX2Qqhu9EJ4ubO-bNnQ-yi",
"eventThreadId" : "d67cd3f7-86a7-425e-8bb3-462f92ec9f59",
"eventThreadState" : "STARTED",
"resourceGroup" : [
"enterprises/project-id/devices/device-id"
]
}
}برای پیشدید کردن کلیپ، بااستفاده از کد دسترسی OAuth در سرایند «مجوز HTTP»، یک تماس GET به previewUrl برقرار کنید:
پیشنمایش
curl -H 'Authorization: Bearer access-token' \
https://previewUrl/...پیشنمایش کلیپ یک فایل ویدیویی ۱۰ فریمی در قالب mp4 است. میتوانید انتخاب کنید که فایل ویدیو mp4 را نمایش دهید یا آن را به قالب دیگری (برای مثال، گیف پویانماییشده) ترانویسی کنید تا یک توالی کامل ۱۰ فریمی نمایش داده شود. هنگام انتخاب روش پیشنمایش کلیپ، باید قابلیتهای مشتری دستگاه را درنظر گرفت.
دسترسی به جاریسازی زنده
میتوان به جاریسازی زنده از دوربین دسترسی داشت. قالبهای جاریسازی زیر برای این دستگاه پشتیبانی میشوند:
- 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" : "LTUMkRmN6-yriM8phaXP84BsO1..."
}
}
توصیه میکنیم از نمونه برنامه وب برای یادگیری نحوه تولید یک جاریسازی زنده موفق استفاده کنید. این نمونه
یک 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
تمدید کردن جاریسازی زنده
جلسات جاریسازی زنده دوربین فقط ۵ دقیقه معتبر هستند. اگر نیاز دارید طول عمر یک جاریسازی زنده را افزایش دهید، از فرمان مناسب «افزایش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" : "LTUMkRmN6-yriM8phaXP84BsO1..."
}
}
پاسخ
{
"results" : {
"expiresAt" : "2018-01-04T18:30:00.000Z",
"mediaSessionId" : "LTUMkRmN6-yriM8phaXP84BsO1..."
}
}
توقف جاریسازی زنده
هر زمان که دیگر از جاریسازی زنده دوربین استفاده نمیکنید، باید آن را متوقف کنید و جاریسازی را نامعتبر کنید. برای انجام این کار، از فرمان مناسب StopFormatStream از CameraLiveStream برای قالب جاریسازی که تولید کردهاید استفاده کنید.
WebRTC
برای متوقف کردن جاریسازی WebRTC، شناسه جلسه رسانه را با فرمان StopWebRtcStream از مشخصه CameraLiveStream مشخص کنید:
درخواست
POST /enterprises/project-id/devices/device-id:executeCommand
{
"command" : "sdm.devices.commands.CameraLiveStream.StopWebRtcStream",
"params" : {
"mediaSessionId" : "LTUMkRmN6-yriM8phaXP84BsO1..."
}
}
پاسخ
{}
خطاها
کد(های) خطای زیر ممکن است در رابطه با این دستگاه برگردانده شود:
| پیام خطا | RPC | عیبیابی |
|---|---|---|
| دوربین برای جاریسازی دردسترس نیست. | FAILED_PRECONDITION |
دوربین یا آفلاین است یا بهدلیل مشکل فنی برای جاریسازی دردسترس نیست. |
| SDP پیشنهاد ویژه نامعتبر است. | INVALID_ARGUMENT |
صدای SDP پیشنهاد باید روی a=recvonly (فقط دریافت) تنظیم شود. |
| «توضیحات پروتکل جلسه» پیشنهاد نامعتبر است و CRLF ندارد. | INVALID_ARGUMENT |
هنگام تلاش برای تولید جاریسازی WebRTC، نویسه خط جدید در انتهای رشته offerSdp وجود ندارد. مطمئن شوید رشته offerSdp با \r\n یا \n تمام میشود و دوباره سعی کنید جاریسازی را تولید کنید. |
| خطوط m در SDP پیشنهاد ویژه نامعتبر است. | INVALID_ARGUMENT |
«پیشنهاد SDP» باید شامل هر سه خط m صدا، ویدیو، و برنامه به این ترتیب باشد. |
| SDP پاسخ بهدلیل اتمام زمان بازیابی نشد. | DEADLINE_EXCEEDED |
جاریسازی زنده WebRTC را دوباره تولید کنید. |
برای فهرست کامل کدهای خطای میانای برنامهسازی کاربردی، مرجع کد خطای میانای برنامهسازی کاربردی را ببینید.