مخطط سمة CameraStream في المنزل المزوّد بأجهزة ذكية

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

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

صفات الجهاز

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

السمات Type الوصف
cameraStreamSupportedProtocols صفيف

يجب ملء هذا الحقل.

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

[item, ...] String

نوع الوسائط

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

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

يجب ملء هذا الحقل.

ما إذا كان سيتم تقديم رمز مصادقة مميز من خلال cameraStreamAuthToken لمساحة العرض المستهدفة لبث خلاصة الكاميرا.

أمثلة

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

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

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

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

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

تتوافق هذه السمة مع بروتوكولات البث التالية:

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

للاطّلاع على مزيد من المعلومات حول تطبيقات "أجهزة استقبال الويب المخصّصة"، يُرجى الانتقال إلى دليل الموقع الإلكتروني للمطوّر.

STATES للجهاز

بلا عُري

تعليمات الجهاز

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

action.devices.commands.GetCameraStream

المَعلمات

المَعلمات Type الوصف
StreamToChromecast منطقي

يجب ملء هذا الحقل.

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

SupportedStreamProtocols صفيف

يجب ملء هذا الحقل.

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

[item, ...] String

نوع الوسائط

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

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

النتائج

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

رمز مصادقة مميز للمستلم المحدد من أجل منح الإذن بالوصول إلى البث. إذا كانت قيمة cameraStreamNeedAuthToken صحيحة ولم يتم تقديم هذه القيمة، سيتم استخدام بيانات اعتماد OAuth للمستخدم كرمز للمصادقة.

cameraStreamProtocol String

يجب ملء هذا الحقل.

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

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

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

نتائج لا تتوافق مع WebRTC

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

يجب ملء هذا الحقل.

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

cameraStreamReceiverAppId String

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

نتائج WebRTC

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

يجب ملء هذا الحقل.

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

cameraStreamOffer String

بروتوكول وصف جلسة العرض (SDP).

cameraStreamIceServers String

يُمثِّل ذلك خوادم منشأة الاتصال التفاعلي (ICE) باستخدام سلسلة JSON مرمَّزة مع وصف RTCIceServer. إذا لم تحدد خوادم STUN (أدوات اجتياز جلسات NAT) لخوادم STUN، فالإعداد الافتراضي هو خوادم 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.
  • نوع المحتوى: application/json.
مَعلمات طلب الإشارة

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

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

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

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

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

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

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

  • الحدّ الأدنى: 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
{}