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

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

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

سمات الجهاز

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

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

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

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

[item, ...] String

نوع الوسائط

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

hls
البث المباشر عبر HTTP
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 على أجهزة البث (أجهزة Chromecast والشاشات الذكية وأجهزة التلفزيون الذكية المزوّدة بتكنولوجيا Chromecast)، يتم تشغيل جهاز استقبال الويب الذي يعمل بتكنولوجيا Google Cast لمعالجة البث وعرضه على الجهاز. وننصح المطوّر بإنشاء جهاز استقبال ويب مخصّص لإتاحة الوصول إلى أدوات تصحيح الأخطاء وتخصيص سلوك المشغّل وتخصيص العلامة التجارية لواجهة المستخدم وتضمين الإحصاءات. لتفعيل استخدام جهاز الاستقبال المخصّص وإيقاف استخدام جهاز الاستقبال التلقائي، اضبط رقم تعريف تطبيق جهاز الاستقبال الذي تم إنشاؤه عند تسجيل تطبيق البث في الحقل cameraStreamReceiverAppId في الاستجابة EXECUTE.

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

حالات الجهاز

بلا عُري

أوامر الجهاز

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

action.devices.commands.GetCameraStream

المعلمات

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

مطلوبة

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

SupportedStreamProtocols صفيف

مطلوبة

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

[item, ...] String

نوع الوسائط

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

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

النتائج

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

رمز مصادقة للمستلِم المحدّد لتفويض الوصول إلى البث إذا كانت cameraStreamNeedAuthToken صحيحة ولم يتم تقديم هذه القيمة، فسيتم استخدام بيانات اعتماد OAuth للمستخدم كرمز مميز للمصادقة. تبلغ مدة صلاحية الرمز المميّز 12 ساعة.

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.
  • نوع المحتوى: 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
{}