
زنگ درب گوگل نست (سیمی) در رابط برنامهنویسی کاربردی مدیریت دستگاه هوشمند (SDM) پشتیبانی میشود. این دستگاه نوع دستگاهی از زنگ درب را برمیگرداند:
sdm.devices.types.DOORBELL
زنگ درب گوگل نست (سیمی) دارای یک دوربین است که عملکردی مشابه دوربینهای معمولی دارد.
صفات
مرجع
ویژگیها، دستورات یا رویدادهای زیر مربوط به این دستگاه هستند:
| صفت | توضیحات | دستورات | رویدادها |
|---|---|---|---|
| پیشنمایش دوربین | این ویژگی متعلق به هر دستگاهی است که از دانلود پیشنمایش کلیپ پشتیبانی میکند. | پیشنمایش کلیپ | |
| پخش زنده دوربین | این ویژگی متعلق به هر دستگاهی است که از پخش زنده پشتیبانی میکند. | تولید WebRtcStream گسترش WebRtcStream استریم وب آر تی سی را متوقف کنید | |
| دوربین موشن | این ویژگی متعلق به هر دستگاهی است که از رویدادهای تشخیص حرکت پشتیبانی میکند. | حرکت | |
| دوربین | این ویژگی متعلق به هر دستگاهی است که از رویدادهای تشخیص شخص پشتیبانی میکند. | شخص | |
| زنگ در | این ویژگی متعلق به هر دستگاهی است که از زنگ در و رویدادهای مطبوعاتی مرتبط پشتیبانی میکند. | زنگ | |
| اطلاعات | این ویژگی به هر دستگاهی برای اطلاعات مربوط به دستگاه تعلق دارد. |
جیسون
عدم وجود یک ویژگی (trait) در پاسخ GET نشان میدهد که آن ویژگی یا قابلیت در حال حاضر برای دستگاه در دسترس نیست. برای اطلاعات بیشتر به بخش انواع دستگاه (Device types) مراجعه کنید.
{
"type" : "sdm.devices.types.DOORBELL",
"traits" : {
"sdm.devices.traits.CameraClipPreview" : {},
"sdm.devices.traits.CameraLiveStream" : {
"maxVideoResolution" : {
"width" : 640,
"height" : 480
},
"videoCodecs" : ["H264"],
"audioCodecs" : ["AAC"],
"supportedProtocols" : ["WEB_RTC"]
},
"sdm.devices.traits.CameraMotion" : {},
"sdm.devices.traits.CameraPerson" : {},
"sdm.devices.traits.DoorbellChime" : {},
"sdm.devices.traits.Info" : {
"customName" : "My device"
}
}
}مدیریت رویدادهای زنگ در و دوربین
رویدادهای زیر ممکن است از نوع دستگاه DOORBELL فعال شوند: برای مثال، در اینجا دکمه زنگ در فشرده شده است:بار مفید
{
"eventId" : "6de1ff2d-e958-4304-8bee-0e95ea77e5f3",
"timestamp" : "2019-01-01T00:00:01Z",
"resourceUpdate" : {
"name" : "enterprises/project-id/devices/device-id",
"events" : {
"sdm.devices.events.DoorbellChime.Chime" : {
"eventSessionId" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF...",
"eventId" : "wVHB4kPD1w4KQViPfA5WLHXsuK..."
}
}
}
"userId" : "AVPHwEuBfnPOnTqzVFT4IONX2Qqhu9EJ4ubO-bNnQ-yi",
"resourceGroup" : [
"enterprises/project-id/devices/device-id"
]
} یک کلیپ ویدیویی برای پیشنمایش در دسترس است و شامل یک رویداد با previewUrl خواهد بود. پیشنمایش کلیپ ممکن است همزمان با رویداد منتشر شود. از eventSessionId برای مرتبط کردن این رویداد و previewUrl مرتبط با یک یا چند رویداد پشتیبانیشده استفاده کنید.
بار مفید
{
"eventId" : "c40fef2d-eda8-4476-b140-49b4d99e550d",
"timestamp" : "2019-01-01T00:00:45Z",
"resourceUpdate" : {
"name" : "enterprises/project-id/devices/device-id",
"events" : {
"sdm.devices.events.DoorbellChime.Chime" : {
"eventSessionId" : "CjY5Y3VKaTZwR3o4Y19YbTVfMF...",
"eventId" : "wVHB4kPD1w4KQViPfA5WLHXsuK..."
},
"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 Authorization، یک فراخوانی GET به previewUrl انجام دهید:
پیشنمایش
curl -H 'Authorization: Bearer access-token' \
https://previewUrl/...پیشنمایش کلیپ، یک فایل ویدیویی ۱۰ فریمی با فرمت mp4 است. میتوانید فایل ویدیویی mp4 را نمایش دهید یا آن را به فرمت دیگری (مثلاً یک گیف متحرک) تبدیل کد کنید تا یک توالی کامل ۱۰ فریمی نمایش داده شود. هنگام انتخاب روش پیشنمایش کلیپ، باید قابلیتهای دستگاه کلاینت را در نظر گرفت.
دسترسی به پخش زنده
پخش زنده از دوربین قابل دسترسی است. فرمتهای پخش زیر برای این دستگاه پشتیبانی میشوند:
- وبآرتیسی
برای مشاهده لیست کامل دوربینها و فرمتهای استریم پشتیبانیشده، به دستگاههای پشتیبانیشده مراجعه کنید.
برای دسترسی به یک پخش زنده، از دستور Generate Format Stream مربوط بهپخش زنده دوربینصفت.
وبآرتیسی
برای یک استریم 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" : "eUQuXoe41ifKvKtC2f786NgPoO..."
}
}
برای یادگیری نحوه تولید یک پخش زنده موفق، استفاده از نمونه برنامه وب را توصیه میکنیم. این نمونه یک offerSdp معتبر تولید میکند که تمام محدودیتهای پیشنهاد SDP برای دوربینهای Nest را برآورده میکند.
یک پیشنهاد SDP برای دوربینهای Nest باید محدودیتهای زیر را داشته باشد:
- فقط فرمت Unified پشتیبانی میشود. فرمت Plan B پشتیبانی نمیشود.
- تمام خطوط رسانهای (
m=) باید در پیشنهاد وجود داشته باشند و به این ترتیب باشند:- صوتی
- ویدئو
- کاربرد
- Trickle ICE پشتیبانی میشود، اما الزامی نیست.
- فقط کدک Opus برای صدا پشتیبانی میشود.
- تنظیمات صدا باید روی
a=recvonly(فقط دریافت) تنظیم شود. - پیشنهاد باید با یک کاراکتر خط جدید
\r\nیا\nپایان یابد.
answerSdp باید برای تولید پخش زنده ظرف 30 ثانیه پس از دریافت پاسخ استفاده شود، در غیر این صورت منقضی میشود. اگر منقضی شد، دستور 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
پخش زنده را گسترش دهید
جلسات پخش زنده دوربین فقط به مدت ۵ دقیقه معتبر هستند. اگر نیاز به تمدید طول عمر یک پخش زنده دارید، از دستور Extend Format Stream مناسب استفاده کنید. پخش زنده دوربین ویژگی مربوط به قالب جریانی که ایجاد کردهاید.
وبآرتیسی
سیمی
یک جریان WebRTC فقط میتواند روی دوربینهای سیمی گسترش یابد. یک دوربین باتریدار در حالی که برای شارژ به برق متصل است، سیمی در نظر گرفته میشود. اگر دوربین با باتری کار کند، درخواست گسترش جریان فعال WebRTC نادیده گرفته میشود.
برای گسترش یک جریان WebRTC، شناسه جلسه رسانه جریان را با دستور ExtendWebRtcStream از ویژگی CameraLiveStream مشخص کنید:
درخواست
POST /enterprises/project-id/devices/device-id:executeCommand
{
"command" : "sdm.devices.commands.CameraLiveStream.ExtendWebRtcStream",
"params" : {
"mediaSessionId" : "eUQuXoe41ifKvKtC2f786NgPoO..."
}
}
پاسخ
{
"results" : {
"expiresAt" : "2018-01-04T18:30:00.000Z",
"mediaSessionId" : "eUQuXoe41ifKvKtC2f786NgPoO..."
}
}
توقف پخش زنده
هر زمان که دیگر از پخش زنده دوربین استفاده نمیکنید، باید آن را متوقف کرده و پخش را لغو کنید. برای انجام این کار، از دستور مناسب Stop Format Stream درپخش زنده دوربینویژگی مربوط به قالب جریانی که ایجاد کردهاید.
وبآرتیسی
برای متوقف کردن یک جریان WebRTC، شناسه جلسه رسانه را با دستور StopWebRtcStream از ویژگی CameraLiveStream مشخص کنید:
درخواست
POST /enterprises/project-id/devices/device-id:executeCommand
{
"command" : "sdm.devices.commands.CameraLiveStream.StopWebRtcStream",
"params" : {
"mediaSessionId" : "eUQuXoe41ifKvKtC2f786NgPoO..."
}
}
پاسخ
{}
خطاها
کد(های) خطای زیر ممکن است در رابطه با این دستگاه نمایش داده شوند:
| پیام خطا | آر پی سی | عیبیابی |
|---|---|---|
| دوربین برای پخش جریانی در دسترس نیست. | FAILED_PRECONDITION | دوربین یا آفلاین است یا به دلیل مشکل فنی برای پخش جریانی در دسترس نیست. |
| پیشنهاد نامعتبر SDP. | INVALID_ARGUMENT | پیشنهاد میشود صدای SDP روی حالت a=recvonly (فقط دریافت) تنظیم شود. |
| پیشنهاد نامعتبر است. SDP فاقد CRLF است. | INVALID_ARGUMENT | هنگام تلاش برای تولید یک جریان WebRTC، کاراکتر خط جدید در انتهای رشته offerSdp وجود ندارد. مطمئن شوید که رشته offerSdp با \r\n یا \n به پایان میرسد و دوباره سعی کنید جریان را تولید کنید. |
| پیشنهاد نامعتبر است. خطوط m SDP. | INVALID_ARGUMENT | پیشنهاد SDP باید شامل هر سه m-line صدا، تصویر و برنامه به ترتیب باشد. |
| به دلیل اتمام مهلت، بازیابی پاسخ SDP ناموفق بود. | DEADLINE_EXCEEDED | دوباره سعی کنید پخش زنده WebRTC را ایجاد کنید. |
برای مشاهده لیست کامل کدهای خطای API به مرجع کدهای خطای API مراجعه کنید.