مخطط ميزة SmartStream CameraStream
action.devices.traits.CameraStream
- تتناول هذه السمة كيفية التحكّم في البث المباشر لجهاز معيّن.
تنطبق هذه السمة على الأجهزة التي يمكنها بث خلاصات الفيديو إلى شاشات ذكية أو أجهزة مزوّدة بتكنولوجيا Chromecast أو هواتف ذكية. على العموم، هذه هي كاميرات المراقبة أو كاميرات مراقبة الأطفال. غير أن هذه الميزة تنطبق أيضًا على الأجهزة الأكثر تعقيدًا التي تتضمن كاميرا (مثل أجهزة مؤتمرات الفيديو أو الروبوت الفراغي الذي تتضمن كاميرا).
الجهاز ATTRIBUTES
ويمكن للأجهزة التي تتضمّن هذه السمة الإبلاغ عن السمات التالية كجزء من عملية SYNC
. لمزيد من المعلومات حول التعامل مع إجراءات SYNC
، يُرجى الاطّلاع على تنفيذ الإجراء.
السمات | النوع | الوصف |
---|---|---|
cameraStreamSupportedProtocols |
المصفوفة |
مطلوبة. أنواع الوسائط المتوافقة للبث المباشر للكاميرا، مرتّبة حسب التفضيل عادةً ما يتم طلب البروتوكول الأول في هذه المصفوفة الذي يتوافق مع السطح الهدف. |
[item, ...] |
سلسلة |
نوع الوسائط. القيم المسموح بها:
|
cameraStreamNeedAuthToken |
منطقي |
مطلوبة. لتحديد ما إذا كان سيتم توفير رمز مصادقة مميز عبر |
أمثلة
كاميرا مزودة بعدة بروتوكولات، ولا تتطلب رمز مصادقة مميزًا.
{ "cameraStreamSupportedProtocols": [ "webrtc", "hls", "dash", "smooth_stream", "progressive_mp4" ], "cameraStreamNeedAuthToken": false }
الكاميرا متوافقة مع بروتوكول واحد وتتطلب رمز مصادقة مميزًا.
{ "cameraStreamSupportedProtocols": [ "hls" ], "cameraStreamNeedAuthToken": true }
بروتوكولات البث المتوافقة
تتوافق هذه السمة مع بروتوكولات البث التالية:
webrtc
: WebRTChls
: البث المباشر عبر HTTPdash
: البث الديناميكي التكيُّفي عبر HTTPsmooth_stream
: بث سلسprogressive_mp4
: MP4 تقدمي (يستخدم في الغالب للمقاطع)
حالة الجهاز STATES
بلا عري
مفاتيح COMMAND
قد تستجيب الأجهزة التي تتضمّن هذه السمة للأوامر
التالية كجزء من عملية EXECUTE
. لمزيد من المعلومات حول التعامل مع إجراءات EXECUTE
، يُرجى الاطّلاع على تنفيذ الإجراء.
action.devices.commands.GetCameraStream
المَعلمات
المَعلمات | النوع | الوصف |
---|---|---|
StreamToChromecast |
منطقي |
مطلوبة. لتحديد ما إذا كان سيتم تشغيل البث على جهاز Chromecast. |
SupportedStreamProtocols |
المصفوفة |
مطلوبة. أنواع الوسائط/التنسيقات المتوافقة مع الوجهة المطلوبة. |
[item, ...] |
سلسلة |
نوع الوسائط. القيم المسموح بها:
|
النتائج
النتائج | النوع | الوصف |
---|---|---|
cameraStreamAuthToken |
سلسلة |
رمز مصادقة مميز للمستلم المحدد للسماح بالدخول إلى البث. إذا تم ضبط السياسة على " |
cameraStreamProtocol |
سلسلة |
مطلوبة. تمثل هذه الخاصية تنسيق الوسائط الذي يشير إليه عنوان URL للبث. ويجب أن يكون أحد البروتوكولات المُدرَجة في مَعلمة الأمر القيم المسموح بها:
|
نتائج غير WebRTC
النتائج | النوع | الوصف |
---|---|---|
cameraStreamAccessUrl |
سلسلة |
مطلوبة. نقطة نهاية عنوان URL لاسترداد البث في الوقت الفعلي بالتنسيق المحدّد في |
cameraStreamReceiverAppId |
سلسلة |
معرّف جهاز استقبال البث لمعالجة بث الكاميرا عندما تكون المعلمة |
نتائج WebRTC
النتائج | النوع | الوصف |
---|---|---|
cameraStreamSignalingUrl |
سلسلة |
مطلوبة. عنوان URL لنقطة نهاية لاسترداد وتبادل بروتوكولات وصف الجلسة (SDP) للكاميرا والعميل. يجب على العميل عرض عنوان URL للإشارة الذي يستخدم |
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.
نوع البيانات | المعلّمات/التعريفات |
---|---|
عنوان طلب الإشارة |
يجب أن يستوفي العنوان المتطلبات التالية:
|
معلمات طلب الإشارة | يمكن أن يتضمن الطلب هذه المعلمات:
|
معلمات استجابة الإشارة | يمكن أن تتضمن الاستجابة هذه المعلمات:
|
متطلبات واقتراحات 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 {}