طرحواره ویژگی جریان دوربین خانه هوشمند
action.devices.traits.CameraStream
- این ویژگی نحوه کنترل جریان دوربین یک دستگاه را پوشش می دهد.
این ویژگی متعلق به دستگاههایی است که قابلیت پخش جریانی فیدهای ویدیویی را به نمایشگرهای هوشمند، دستگاههای دارای Chromecast یا گوشیهای هوشمند دارند. به طور کلی، اینها دوربین های امنیتی یا دوربین های کودک هستند. اما این ویژگی در مورد دستگاههای پیچیدهتری که دوربین روی آنها دارند نیز صدق میکند (به عنوان مثال، دستگاههای کنفرانس ویدیویی یا یک ربات خلاء با دوربین روی آن).
ویژگی های دستگاه
دستگاه های دارای این ویژگی ممکن است ویژگی های زیر را به عنوان بخشی از عملیات SYNC
گزارش کنند. برای کسب اطلاعات بیشتر در مورد مدیریت مقاصد SYNC
، به تحقق هدف مراجعه کنید.
صفات | تایپ کنید | توضیحات |
---|---|---|
cameraStreamSupportedProtocols | آرایه | مورد نیاز. انواع رسانه های پشتیبانی شده برای جریان دوربین، به ترتیب اولویت. به طور معمول، اولین پروتکل در این آرایه که با سطح هدف سازگار است درخواست می شود. |
[ item, ... ] | رشته | نوع رسانه مقادیر پشتیبانی شده:
|
cameraStreamNeedAuthToken | بولی | مورد نیاز. آیا یک نشانه تأیید از طریق |
نمونه ها
دوربینی با پروتکلهای متعدد پشتیبانی میکند، بدون نیاز به رمز تأیید.
{ "cameraStreamSupportedProtocols": [ "webrtc", "hls", "dash", "smooth_stream", "progressive_mp4" ], "cameraStreamNeedAuthToken": false }
دوربینی که از یک پروتکل واحد پشتیبانی میکند و به یک رمز تأیید نیاز دارد.
{ "cameraStreamSupportedProtocols": [ "hls" ], "cameraStreamNeedAuthToken": true }
پشتیبانی از پروتکل های جریان
این ویژگی از پروتکل های جریان زیر پشتیبانی می کند:
-
webrtc
: WebRTC -
hls
: HTTP Live Streaming -
dash
: پخش جریانی تطبیقی پویا از طریق HTTP -
smooth_stream
: Smooth Streaming -
progressive_mp4
: MP4 پیشرو (بیشتر برای کلیپ استفاده می شود)
هنگام پخش جریانی پروتکلهای hls
، dash
، smooth_stream
، و progressive_mp4
در دستگاههای Cast (Chromecast، نمایشگرهای هوشمند، و تلویزیونهای هوشمند دارای Chromecast)، یک گیرنده وب Cast راهاندازی میشود تا جریان را پردازش کرده و آن را در دستگاه ارائه کند. توصیه میشود که توسعهدهنده یک گیرنده وب سفارشی ایجاد کند تا امکان دسترسی به ابزارهای اشکالزدایی، سفارشی کردن رفتار بازیکن، سفارشی کردن نام تجاری UI، و شامل تجزیه و تحلیل را فراهم کند. برای فعال کردن استفاده از گیرنده سفارشی و انصراف از استفاده از گیرنده پیشفرض، شناسه برنامه گیرنده را که هنگام ثبت برنامه Cast خود در قسمت پاسخ EXECUTE
در cameraStreamReceiverAppId
ایجاد میشود، تنظیم کنید.
برای کسب اطلاعات بیشتر در مورد برنامههای گیرنده وب سفارشی، از راهنمای سایت برنامهنویس دیدن کنید.
وضعیت دستگاه
هیچ کدام.
دستورات دستگاه
دستگاه های دارای این ویژگی ممکن است به دستورات زیر به عنوان بخشی از عملیات EXECUTE
پاسخ دهند. برای کسب اطلاعات بیشتر در مورد مدیریت EXECUTE
intent ها، به اجرای Intent مراجعه کنید.
action.devices.commands.GetCameraStream
پارامترها
پارامترها | تایپ کنید | توضیحات |
---|---|---|
StreamToChromecast | بولی | مورد نیاز. پخش جریانی در دستگاه Chromecast یا خیر. |
SupportedStreamProtocols | آرایه | مورد نیاز. انواع/فرمت های رسانه پشتیبانی شده توسط مقصد مورد نظر. |
[ item, ... ] | رشته | نوع رسانه مقادیر پشتیبانی شده:
|
نتایج
نتایج | تایپ کنید | توضیحات |
---|---|---|
cameraStreamAuthToken | رشته | یک نشانه تأیید اعتبار برای گیرنده خاص برای اجازه دسترسی به جریان. اگر |
cameraStreamProtocol | رشته | مورد نیاز. قالب رسانه ای که آدرس URL جریان به آن اشاره می کند. این باید یکی از پروتکل های فهرست شده در پارامتر فرمان مقادیر پشتیبانی شده:
|
نتایج غیر WebRTC
نتایج | تایپ کنید | توضیحات |
---|---|---|
cameraStreamAccessUrl | رشته | مورد نیاز. نقطه پایانی URL برای بازیابی جریان بیدرنگ در قالب مشخص شده توسط |
cameraStreamReceiverAppId | رشته | شناسه گیرنده Cast برای پردازش جریان دوربین زمانی که پارامتر |
نتایج WebRTC
نتایج | تایپ کنید | توضیحات |
---|---|---|
cameraStreamSignalingUrl | رشته | مورد نیاز. نقطه پایانی URL برای بازیابی و تبادل پروتکل های توضیحات جلسه دوربین و مشتری (SDP). مشتری باید URL سیگنالینگ را که از |
cameraStreamOffer | رشته | پروتکل شرح جلسه پیشنهاد (SDP). |
cameraStreamIceServers | رشته | سرورهای برقراری اتصال تعاملی (ICE) را با استفاده از یک رشته JSON کدگذاری شده با توضیحات یک RTCIceServer نشان می دهد. اگر سرورهای STUN (Session Traversal Utilities for NAT) را مشخص نکنید، پلتفرم به طور پیش فرض روی سرورهای STUN عمومی Google است. سرورهای TURN (پیمایش با استفاده از رلهها در اطراف NAT) تنها در صورتی مورد نیاز هستند که نتوانید تضمین کنید که IPها / نامزدهای ICE ارائه شده برای عموم قابل دسترسی هستند (مثلاً از طریق یک سرور رسانه، کاندید میزبان عمومی ICE، کاندید رله ICE و غیره). |
نمونه ها
نمایش دوربین درب جلو (گیرنده Cast پیش فرض).
{ "cameraStreamAccessUrl": "https://fluffysheep.com/baaaaa.mp4", "cameraStreamProtocol": "progressive_mp4" }
نمایش دوربین درب جلو (گیرنده Cast سفارشی).
{ "cameraStreamAccessUrl": "https://fluffysheep.com/baaaaa.mp4", "cameraStreamReceiverAppId": "1g2f89213hg", "cameraStreamAuthToken": "12657342190192783", "cameraStreamProtocol": "progressive_mp4" }
نمایش دوربین جلویی (جریان WebRTC).
{ "cameraStreamIceServers": "[{\"urls\": \"stun:stun.l.partner.com:19302\"},{\"urls\":\"turn:192.158.29.39:3478?transport=udp\",\"credential\": \"JZEOEt2V3Qb0y27GRntt2u2PAYA=\",\"username\": \"28224511:1379330808\"},{\"urls\": \"turn:192.158.29.39:3478?transport=tcp\",\"credential\": \"JZEOEt2V3Qb0y27GRntt2u2PAYA=\",\"username\": \"28224511:1379330808\"}]", "cameraStreamSignalingUrl": "https://example.com/signaling/answer", "cameraStreamOffer": "o=- 4611731400430051336 2 IN IP4 127.0.0.1...", "cameraStreamProtocol": "webrtc" }
خطاهای دستگاه
لیست کامل خطاها و استثناها را ببینید.مشخصات پروتکل WebRTC
مزایای استفاده از WebRTC تاخیر کم و مکالمه یک طرفه است. WebRTC از روش POST
با بدنه POST
و پاسخ در قالب JSON استفاده می کند.
WebRTC در حال حاضر در Google Nest Smart Display و Chromecast با دستگاههای Google TV پشتیبانی میشود.
این بخش الزامات استفاده از پروتکل جریان WebRTC را شرح می دهد.
نوع داده | پارامترها / تعاریف |
---|---|
هدر درخواست سیگنالینگ | هدر باید این شرایط را برآورده کند:
|
پارامترهای درخواست سیگنالینگ | درخواست می تواند شامل این پارامترها باشد:
|
پارامترهای پاسخ سیگنالینگ | پاسخ می تواند شامل این پارامترها باشد:
|
الزامات و توصیه های WebRTC
- گوگل در حال حاضر از ارتباط یک طرفه (نیمه دوطرفه) پشتیبانی می کند.
- باید از bundling و rtcp-mux پشتیبانی کنید.
- باید از (D)TLS 1.2 یا بالاتر استفاده کنید.
- Trickle ICE پشتیبانی نمی شود. همه نامزدهای ICE باید ابتدا قبل از ارسال SDP جمع آوری شوند.
- اکیداً توصیه می شود که برای افزایش احتمال اتصال موفق، نامزدهای UDP/IPv4، TCP/IPv4، UDP/IPv6 و TCP/IPv6 ICE را وارد کنید.
وضوح تصویر پشتیبانی شده:
- حداقل: 480p
- حداکثر: 1080p
کدک های ویدیویی پشتیبانی شده:
- VP8
- H.264
کدک های صوتی پشتیبانی شده:
- Opus (کدک ترجیحی)
- G.711/PCMU
- G.722
به اشتراک گذاری منابع متقابل
اشتراکگذاری منابع متقاطع (CORS) مکانیزمی است که از سرصفحههای HTTP اضافی استفاده میکند تا به مرورگرها بگوید که به یک برنامه وب در حال اجرا در یک مبدا اجازه دسترسی به منابع انتخابی از مبدأ متفاوت را بدهد. سرور میزبان cameraStreamSignalingUrl
باید با هدر زیر پاسخ دهد:
Access-Control-Allow-Origin: https://www.gstatic.com
نمونه درخواست و پاسخ سیگنالینگ
مثال زیر درخواستی را نشان می دهد که Google به سرویس سیگنالینگ شما ارسال می کند و پاسخ مربوطه به Google را نشان می دهد.
Header: Authentication: Bearer <cameraStreamAuthToken> Content-Type: application/json POST body: // When camera offer SDP is provided in the execution response, Google provides an answer SDP. { "action": "answer", "deviceId": "123", "sdp": "o=- 4611731400430051336 2 IN IP4 127.0.0.1..." } // When camera offer SDP is not provided in execution response, Google generates and provides an offer SDP. { "action": "offer", "deviceId": "123", "sdp": "o=- 4611731400430051336 2 IN IP4 127.0.0.1..." } // Close the current stream session. { "action": "end" "deviceId": "123" }
// Response to accept the answer SDP in the request. Response Code : 200 {} // Response to provide the answer SDP from the service provider. Response Code : 200 { // When the camera offer SDP is not provided in the execution response, // Google provides the answer SDP via the signaling response. "action": "answer" "sdp": "o=- 4611731400430051336 2 IN IP4 127.0.0.1..." } // Response to close current session. Response Code : 200 {}