طرحواره ویژگی جریان دوربین خانه هوشمند

action.devices.traits.CameraStream - این ویژگی نحوه کنترل جریان دوربین یک دستگاه را پوشش می دهد.

این ویژگی متعلق به دستگاه‌هایی است که قابلیت پخش جریانی فیدهای ویدیویی را به نمایشگرهای هوشمند، دستگاه‌های دارای Chromecast یا گوشی‌های هوشمند دارند. به طور کلی، اینها دوربین های امنیتی یا دوربین های کودک هستند. اما این ویژگی در مورد دستگاه‌های پیچیده‌تری که دوربین روی آن‌ها دارند نیز صدق می‌کند (به عنوان مثال، دستگاه‌های کنفرانس ویدیویی یا یک ربات خلاء با دوربین روی آن).

ویژگی های دستگاه

دستگاه های دارای این ویژگی ممکن است ویژگی های زیر را به عنوان بخشی از عملیات SYNC گزارش کنند. برای کسب اطلاعات بیشتر در مورد مدیریت مقاصد SYNC ، به تحقق هدف مراجعه کنید.

صفات تایپ کنید توضیحات
cameraStreamSupportedProtocols آرایه

مورد نیاز.

انواع رسانه های پشتیبانی شده برای جریان دوربین، به ترتیب اولویت. به طور معمول، اولین پروتکل در این آرایه که با سطح هدف سازگار است درخواست می شود.

[ item, ... ] رشته

نوع رسانه

مقادیر پشتیبانی شده:

hls
HTTP Live Streaming
dash
پخش جریانی تطبیقی ​​پویا از طریق HTTP
smooth_stream
جریان روان
progressive_mp4
MP4 پیشرو (بیشتر برای کلیپ استفاده می شود)
webrtc
WebRTC
cameraStreamNeedAuthToken بولی

مورد نیاز.

آیا یک نشانه تأیید از طریق cameraStreamAuthToken برای سطح هدف برای پخش جریانی فید دوربین ارائه می شود یا خیر. طول عمر توکن 12 ساعت است.

نمونه ها

دوربینی با پروتکل‌های متعدد پشتیبانی می‌کند، بدون نیاز به رمز تأیید.

{
  "cameraStreamSupportedProtocols": [
    "webrtc",
    "hls",
    "dash",
    "smooth_stream",
    "progressive_mp4"
  ],
  "cameraStreamNeedAuthToken": false
}

دوربینی که از یک پروتکل واحد پشتیبانی می‌کند و به یک رمز تأیید نیاز دارد.

{
  "cameraStreamSupportedProtocols": [
    "hls"
  ],
  "cameraStreamNeedAuthToken": true
}

پشتیبانی از پروتکل های جریان

این ویژگی از پروتکل های جریان زیر پشتیبانی می کند:

هنگام پخش جریانی پروتکل‌های 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, ... ] رشته

نوع رسانه

مقادیر پشتیبانی شده:

hls
HTTP Live Streaming
dash
پخش جریانی تطبیقی ​​پویا از طریق HTTP
smooth_stream
جریان روان
progressive_mp4
MP4 پیشرو (بیشتر برای کلیپ استفاده می شود)
webrtc
WebRTC

نتایج

نتایج تایپ کنید توضیحات
cameraStreamAuthToken رشته

یک نشانه تأیید اعتبار برای گیرنده خاص برای اجازه دسترسی به جریان. اگر cameraStreamNeedAuthToken درست باشد و این مقدار ارائه نشود، از اعتبارنامه OAuth کاربر به عنوان نشانه تأیید استفاده می شود. طول عمر توکن 12 ساعت است.

cameraStreamProtocol رشته

مورد نیاز.

قالب رسانه ای که آدرس URL جریان به آن اشاره می کند. این باید یکی از پروتکل های فهرست شده در پارامتر فرمان SupportedStreamProtocols باشد.

مقادیر پشتیبانی شده:

hls
HTTP Live Streaming
dash
پخش جریانی تطبیقی ​​پویا از طریق HTTP
smooth_stream
جریان روان
progressive_mp4
MP4 پیشرو (بیشتر برای کلیپ استفاده می شود)
webrtc
WebRTC

نتایج غیر WebRTC

نتایج تایپ کنید توضیحات
cameraStreamAccessUrl رشته

مورد نیاز.

نقطه پایانی URL برای بازیابی جریان بیدرنگ در قالب مشخص شده توسط cameraStreamProtocol .

cameraStreamReceiverAppId رشته

شناسه گیرنده Cast برای پردازش جریان دوربین زمانی که پارامتر StreamToChromecast درست است. گیرنده پیش فرض در صورت عدم ارائه استفاده خواهد شد.

نتایج WebRTC

نتایج تایپ کنید توضیحات
cameraStreamSignalingUrl رشته

مورد نیاز.

نقطه پایانی URL برای بازیابی و تبادل پروتکل های توضیحات جلسه دوربین و مشتری (SDP). مشتری باید URL سیگنالینگ را که از cameraStreamAuthToken به عنوان نشانه احراز هویت در هدر درخواست استفاده می کند، برگرداند.

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 را شرح می دهد.

نوع داده پارامترها / تعاریف
هدر درخواست سیگنالینگ

هدر باید این شرایط را برآورده کند:

  • احراز هویت : سربرگ احراز هویت باید از نشانه تأیید از مقدار بازگشتی GetCameraStream برای cameraStreamAuthToken با نوع توکن Bearer استفاده کند.
  • نوع محتوا : application/json .
پارامترهای درخواست سیگنالینگ

درخواست می تواند شامل این پارامترها باشد:

  • action : رشته مقادیر معتبر عبارتند از:
    • offer : پیام SDP را از ارائه دهنده ارائه دهید.
    • answer : به پیام SDP از ارائه دهنده پاسخ دهید.
    • end : جلسه جاری را ببندید.
  • deviceId : رشته شناسه دستگاه همانطور که در یک درخواست SYNC یا EXECUTE گزارش شده است.
  • sdp : رشته حاوی پیام پروتکل توضیحات جلسه برای اتصال همتا است. محتوا بر اساس مقدار پارامتر action است. اگر action "پایان" باشد، این پارامتر می تواند خالی باشد.
پارامترهای پاسخ سیگنالینگ

پاسخ می تواند شامل این پارامترها باشد:

  • action : رشته مقدار پاسخ باید از نوع answer باشد.
  • sdp : رشته پیام SDP برای پاسخ پاسخ.

الزامات و توصیه های 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
{}