مرحبًا بك في "مركز مطوّري برامج Google Home"، وجهتك الجديدة لتعلّم كيفية تطوير إجراءات منزلية ذكية. ملاحظة: ستواصل إنشاء الإجراءات في وحدة تحكم الإجراءات.
تنظيم صفحاتك في مجموعات يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.

مخطط ميزة SmartStream CameraStream

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

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

الجهاز ATTRIBUTES

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

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

مطلوبة.

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

[item, ...] سلسلة

نوع الوسائط.

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

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
}

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

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

حالة الجهاز STATES

بلا عري

مفاتيح COMMAND

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

action.devices.commands.GetCameraStream

المَعلمات

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

مطلوبة.

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

SupportedStreamProtocols المصفوفة

مطلوبة.

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

[item, ...] سلسلة

نوع الوسائط.

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

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

النتائج

النتائج النوع الوصف
cameraStreamAuthToken سلسلة

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

cameraStreamProtocol سلسلة

مطلوبة.

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

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

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

نتائج غير WebRTC

النتائج النوع الوصف
cameraStreamAccessUrl سلسلة

مطلوبة.

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

cameraStreamReceiverAppId سلسلة

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

نتائج WebRTC

النتائج النوع الوصف
cameraStreamSignalingUrl سلسلة

مطلوبة.

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

cameraStreamOffer سلسلة

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

cameraStreamIceServers سلسلة

يمثل خوادم "مؤسسة الاتصال التفاعلية" (ICE) باستخدام سلسلة JSON مرمّزة مع وصف RTCIceServer. إذا لم تحدد خوادم STUN (أدوات مساعدة لمسح الجلسات في 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.
  • يجب استخدام الإصدار 1.2 من طبقة النقل الآمنة (D) أو إصدار أحدث.
  • Trickle ICE غير متاح. يجب جمع كل المرشحين من ICE أولاً قبل إرسال مزوّد البيانات الاجتماعية.
  • يوصى بشدة بتضمين فلاتر UDP/IPv4 وTCP/IPv4 وUDP/IPv6 وTCP/IPv6 ICE لزيادة احتمالية نجاح الاتصال.

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

  • الحد الأدنى: 480 بكسل
  • الحد الأقصى: 1080 بكسل

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

  • VP8
  • H.264

برامج ترميز الصوت المعتمدة:

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

مشاركة الموارد المشتركة المنشأ

إنّ ميزة مشاركة الموارد متعددة المصادر (CORS) هي آلية تستخدم عناوين HTTP إضافية لإعلام المتصفّحات بالسماح لتطبيق ويب يعمل في مصدر واحد بالوصول إلى الموارد المحدّدة من مصدر مختلف. يجب أن يستجيب الخادم الذي يستضيف cameraStreamSignalingUrl بالرأس التالي:

Access-Control-Allow-Origin: https://www.gstatic.com

نموذج لطلب الإشارة والرد عليه

يوضّح المثال التالي طلبًا ترسله 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
{}