مخطّط سمة بث الكاميرا الذكية للمنزل

action.devices.traits.CameraStream: تتناول هذه السمة كيفية التحكّم في بث كاميرا أحد الأجهزة.

تنطبق هذه السمة على الأجهزة التي يمكنها بث خلاصات الفيديو إلى الشاشات الذكية أو الأجهزة المزوّدة بتكنولوجيا Chromecast أو الهواتف الذكية. وغالبًا ما تكون هذه الكاميرات كاميرات مراقبة أو كاميرات مراقبة الأطفال. تنطبق هذه السمة أيضًا على الأجهزة الأكثر تعقيدًا التي تحتوي على كاميرا (مثل أجهزة مكالمات الفيديو أو الروبوتات المزوّدة بمكنسة كهربائية وكاميرا).

سمات الجهاز

قد تُبلغ الأجهزة التي تتضمّن هذه السمة عن السمات التالية كجزء من عملية SYNC. للاطّلاع على مزيد من المعلومات عن معالجة SYNC intents، اطّلِع على تلبية النية.

السمات النوع الوصف
cameraStreamSupportedProtocols صفيف

مطلوبة

أنواع الوسائط المتوافقة مع بث الكاميرا، مرتبة حسب الإعداد المفضّل يتم عادةً طلب أول بروتوكول في هذه المصفوفة المتوافق مع المساحة المستهدَفة.

[item, ...] String

نوع الوسائط

القيم المسموح بها:

hls
البث المباشر عبر بروتوكول HTTP
dash
البث الديناميكي التكيُّفي عبر HTTP
smooth_stream
البث السلس
progressive_mp4
MP4 التقدّمي (يُستخدَم في الغالب للمقاطع)
webrtc
WebRTC
cameraStreamNeedAuthToken صحيح/خطأ

مطلوبة

يشير ذلك إلى ما إذا كان رمز التفويض مطلوبًا لبث خلاصة الكاميرا.

أمثلة

كاميرا متوافقة مع بروتوكولات متعددة، ولا تتطلّب رمز مصادقة

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

كاميرا تتيح بروتوكولًا واحدًا وتتطلّب رمز مصادقة

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

بروتوكولات البث المتوافقة

تتيح هذه السمة بروتوكولات البث التالية:

عند بث بروتوكولات hls وdash وsmooth_stream و progressive_mp4 إلى أجهزة البث (أجهزة Chromecast والشاشات الذكية وأجهزة التلفزيون الذكية المزوّدة بتقنية Chromecast)، يتم تشغيل برنامج Cast Web Receiver لمعالجة البث وعرضه على الجهاز. ننصح المطوّر بإنشاء Web Receiver مخصّص ل تفعيل الوصول إلى أدوات تصحيح الأخطاء وتخصيص سلوك المشغّل وتخصيص العلامة التجارية لواجهة المستخدم وتضمين الإحصاءات. لتفعيل استخدام جهاز الاستقبال المخصّص وإيقاف استخدام جهاز الاستقبال التلقائي، اضبط رقم تعريف تطبيق جهاز الاستقبال الذي تم إنشاؤه عند تسجيل تطبيق البث في الحقل cameraStreamReceiverAppId في الاستجابة EXECUTE.

للاطّلاع على مزيد من المعلومات عن تطبيقات Custom Web Receiver، يُرجى الانتقال إلى دليل الموقع الإلكتروني للمطوّر.

حالات الجهاز

بلا عُري

أوامر الجهاز

قد تستجيب الأجهزة التي تتضمّن هذه السمة للأوامر التالية كجزء من عملية EXECUTE. للاطّلاع على مزيد من المعلومات عن معالجة EXECUTE intents، اطّلِع على تلبية النية.

action.devices.commands.GetCameraStream

المعلمات

المعلمات النوع الوصف
StreamToChromecast صحيح/خطأ

مطلوبة

ما إذا كان سيتم تشغيل البث على جهاز Chromecast

SupportedStreamProtocols صفيف

مطلوبة

أنواع/تنسيقات الوسائط المتوافقة مع الوجهة المطلوبة

[item, ...] String

نوع الوسائط

القيم المسموح بها:

hls
البث المباشر عبر بروتوكول HTTP
dash
البث الديناميكي التكيُّفي عبر HTTP
smooth_stream
البث السلس
progressive_mp4
MP4 التقدّمي (يُستخدَم في الغالب للمقاطع)
webrtc
WebRTC

النتائج

النتائج النوع الوصف
cameraStreamAuthToken String

رمز مصادقة للمستلِم المحدّد لتفويض الوصول إلى البث يجب إدخال cameraStreamAuthToken إذا كانت قيمة cameraStreamNeedAuthToken صحيحة، ويجب حصر نطاق الرمز المميّز بالجهاز المستهدَف فقط.

cameraStreamProtocol String

مطلوبة

تنسيق الوسائط الذي يشير إليه عنوان URL للبث يجب أن يكون أحد البروتوكولات المدرَجة في مَعلمة الأمر SupportedStreamProtocols.

القيم المسموح بها:

hls
البث المباشر عبر بروتوكول HTTP
dash
البث الديناميكي التكيُّفي عبر HTTP
smooth_stream
البث السلس
progressive_mp4
MP4 التقدّمي (يُستخدَم في الغالب للمقاطع)
webrtc
WebRTC

النتائج غير المستندة إلى WebRTC

النتائج النوع الوصف
cameraStreamAccessUrl String

مطلوبة

نقطة نهاية عنوان URL لاسترداد البث المباشر بالتنسيق المحدّد في cameraStreamProtocol

cameraStreamReceiverAppId String

رقم تعريف جهاز الاستقبال لبث الكاميرا عندما تكون المَعلمة StreamToChromecast صحيحة. سيتم استخدام جهاز الاستقبال التلقائي في حال عدم تقديمه.

نتائج WebRTC

النتائج النوع الوصف
cameraStreamSignalingUrl String

مطلوبة

نقطة نهاية عنوان URL لاسترداد بروتوكولات وصف الجلسة (SDP) للكاميرا والعميل وتبادلها. يجب أن يعرض العميل عنوان URL لإشارة الربط الذي يستخدم cameraStreamAuthToken كرمز مميّز للمصادقة في عنوان الطلب.

cameraStreamOffer String

تقديم بروتوكول وصف الجلسة (SDP)

cameraStreamIceServers String

يمثّل خوادم Interactive Connectivity Establishment (ICE) باستخدام سلسلة JSON مُشفَّرة مع وصف RTCIceServer. إذا لم تحدِّد خوادم STUN (Session Traversal Utilities for NAT)، ستستخدم المنصة تلقائيًا خوادم STUN العامة من Google. لا تكون خوادم TURN (التنقّل باستخدام الوسائط حول آلية NAT) مطلوبة إلا إذا لم تتمكّن من ضمان إمكانية وصول الجميع إلى عناوين IP أو مرشّحي ICE المقدَّمين (على سبيل المثال، من خلال خادم وسائط أو مرشّح ICE للمضيف العام أو مرشّح ICE للوسيط وما إلى ذلك).

أمثلة

عرض كاميرا الباب الأمامي (جهاز استقبال البث التلقائي)

{
  "cameraStreamAccessUrl": "https://fluffysheep.com/baaaaa.mp4",
  "cameraStreamProtocol": "progressive_mp4"
}

عرض كاميرا الباب الأمامي (جهاز استقبال بث مخصّص)

{
  "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.
  • Content-Type: application/json.
مَعلمات طلب الإرسال

يمكن أن يتضمّن الطلب المَعلمات التالية:

  • action: سلسلة. في ما يلي القيم الصالحة:
    • offer: عرض رسالة SDP من مقدّم الخدمة
    • answer: يجب الردّ على رسالة وصف الجلسة (SDP) الواردة من موفِّر الخدمة.
    • end: إغلاق الجلسة الحالية
  • deviceId: سلسلة. رقم تعريف الجهاز كما هو موضّح في طلب SYNC أو EXECUTE
  • sdp: سلسلة. يحتوي على رسالة بروتوكول وصف الجلسة لربط الأجهزة المشابهة. يستند المحتوى إلى قيمة المَعلمة action. إذا كانت قيمة action هي "end"، يمكن أن تكون هذه المَعلمة فارغة.
مَعلمات الاستجابة للإشارات

يمكن أن يتضمّن الردّ المَعلمات التالية:

  • action: سلسلة. يجب أن تكون قيمة الاستجابة من النوع answer.
  • sdp: سلسلة. رسالة SDP للإجابة التي يتم الردّ عليها

متطلبات WebRTC واقتراحات بشأنه

  • تتيح Google حاليًا الاتصال أحادي الاتجاه (نصف مزدوج).
  • يجب أن تتيح ميزة تجميع المحتوى وrtcp-mux.
  • يجب استخدام بروتوكول (D)TLS 1.2 أو إصدار أحدث.
  • ميزة Trickle ICE غير متاحة. يجب جمع جميع مرشحي ICE أولاً قبل إرسال ملف SDP.
  • ننصحك بشدة بتضمين مرشحي ICE لبروتوكول UDP/IPv4 وTCP/IPv4 وUDP/IPv6 وTCP/IPv6 لزيادة احتمالية إجراء اتصال ناجح.

درجات دقة الفيديو المتوافقة:

  • الحد الأدنى: 480p
  • الحد الأقصى: 1080p

برامج ترميز الفيديو المتوافقة:

  • VP8
  • H.264

برامج ترميز الصوت المتوافقة:

  • Opus (برنامج الترميز المفضّل)
  • ‫G.711/PCMU
  • G.722

مشاركة الموارد المشتركة النطاق

مشاركة الموارد المشتركة المنشأ (CORS) هي آلية تستخدِم عناوين HTTP إضافية لإخبار browsers (المتصفّحات) بالسماح لتطبيق ويب يتم تشغيله من مصدر واحد بالوصول إلى موارد محدّدة من مصدر مختلف. يجب أن يستجيب الخادم الذي يستضيف 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
{}