مخطط ميزة "البث عبر كاميرا المنزل" الذكية
action.devices.traits.CameraStream
: تتناول هذه السمة كيفية التحكّم في بث الكاميرا على الجهاز.
تنتمي هذه السمة إلى الأجهزة التي يمكنها بث خلاصات الفيديو إلى شاشات ذكية أو أجهزة مزوّدة بتكنولوجيا Chromecast أو هواتف ذكية. هذه الكاميرات الكبيرة أو الكبيرة هي كاميرات المراقبة أو كاميرات الأطفال. تنطبق هذه السمة أيضًا على الأجهزة الأكثر تعقيدًا التي تتضمن كاميرا عليها (على سبيل المثال، أجهزة اجتماعات الفيديو أو روبوت كهربائي مع كاميرا).
سمات الجهاز
قد تُبلغ الأجهزة التي تتضمّن هذه السمة عن السمات
التالية كجزء من عملية SYNC
. للاطّلاع على مزيد من المعلومات حول التعامل مع عناصر intent في SYNC
، يُرجى الاطّلاع على تنفيذ النية بالشراء.
السمات | Type | الوصف |
---|---|---|
cameraStreamSupportedProtocols |
مصفوفة |
مطلوب: أنواع الوسائط المتوافقة مع بث الكاميرا، والتي يتم ترتيبها حسب الخيار المفضّل عادةً ما يتم طلب البروتوكول الأول المتوافق مع العرض على هذه المصفوفة. |
[item, ...] |
String |
نوع الوسائط القيم المسموح بها:
|
cameraStreamNeedAuthToken |
منطقي |
مطلوب: ما إذا كان سيتم توفير رمز مصادقة مميز عبر |
أمثلة
كاميرا تستخدم بروتوكولات متعددة، ولا تتطلّب رمزًا مميّزًا للمصادقة.
{ "cameraStreamSupportedProtocols": [ "webrtc", "hls", "dash", "smooth_stream", "progressive_mp4" ], "cameraStreamNeedAuthToken": false }
الكاميرا التي تتوافق مع بروتوكول واحد، تتطلّب رمزًا مميّزًا للمصادقة.
{ "cameraStreamSupportedProtocols": [ "hls" ], "cameraStreamNeedAuthToken": true }
بروتوكولات البث المتوافقة
تتيح هذه السمة بروتوكولات البث التالية:
webrtc
: WebRTChls
: البث المباشر عبر HTTPdash
: البث الديناميكي التكيُّفي عبر HTTPsmooth_stream
: بث سلسprogressive_mp4
: تنسيق MP4 التقدمي (يتم استخدامه في الغالب للمقاطع)
حالات الجهاز
غير مسموح بأي رسائل
حوالات الجهاز
قد تستجيب الأجهزة التي تستخدم هذه السمة للأوامر
التالية كجزء من عملية EXECUTE
. للاطّلاع على مزيد من المعلومات حول التعامل مع عناصر intent في EXECUTE
، يُرجى الاطّلاع على تنفيذ النية بالشراء.
action.devices.commands.GetCameraStream
المَعلمات
المَعلمات | Type | الوصف |
---|---|---|
StreamToChromecast |
منطقي |
مطلوب: لتحديد ما إذا كان سيتم تشغيل البث على جهاز Chromecast. |
SupportedStreamProtocols |
مصفوفة |
مطلوب: أنواع الوسائط/التنسيقات المتوافقة مع الوجهة المطلوبة. |
[item, ...] |
String |
نوع الوسائط القيم المسموح بها:
|
النتائج
النتائج | Type | الوصف |
---|---|---|
cameraStreamAuthToken |
String |
رمز مميَّز للمصادقة للمستلِم المحدد للسماح بالوصول إلى البث إذا كانت السياسة |
cameraStreamProtocol |
String |
مطلوب: تنسيق الوسائط الذي يشير إليه عنوان URL للبث. ويجب أن يكون أحد البروتوكولات المدرَجة في مَعلمة أمر القيم المسموح بها:
|
نتائج غير WebRTC
النتائج | Type | الوصف |
---|---|---|
cameraStreamAccessUrl |
String |
مطلوب: نقطة نهاية عنوان URL لاسترداد البث في الوقت الفعلي بالتنسيق الذي تحدّده |
cameraStreamReceiverAppId |
String |
رقم تعريف جهاز استقبال البث لمعالجة بث الكاميرا عندما تكون المَعلمة |
نتائج WebRTC
النتائج | Type | الوصف |
---|---|---|
cameraStreamSignalingUrl |
String |
مطلوب: نقطة نهاية عنوان URL لاسترداد وتبادل بروتوكولات وصف الجلسة (SDP) للكاميرا والعميل يجب أن يعرض العميل عنوان URL للإشارة الذي يستخدم |
cameraStreamOffer |
String |
بروتوكول وصف جلسة العرض (SDP) |
cameraStreamIceServers |
String |
تمثل خوادم مؤسسة الاتصال التفاعلي (ICE) باستخدام سلسلة JSON مشفّرة مع وصف RTCIceServer. إذا لم تحدِّد خوادم STUN (برامج الخدمات لتحويل الجلسات إلى NAT) في الشبكة الافتراضية الخاصة (NAT)، سيتم ضبط المنصة تلقائيًا على خوادم STUN العامة في Google. ولا يُطلب من خوادم turn (Traversal using Relays about 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 الذكية وChromecast مع Google TV.
يصف هذا القسم المتطلبات عند استخدام بروتوكول بث WebRTC.
نوع البيانات | المعلّمات/التعريفات |
---|---|
عنوان طلب الإشارة |
يجب أن يستوفي العنوان المتطلبات التالية:
|
مَعلمات طلب التوقيع | يمكن أن يتضمّن الطلب المعلّمات التالية:
|
مَعلمات استجابة الإشارة | يمكن أن تتضمّن الإجابة المعلّمات التالية:
|
متطلبات واقتراحات WebRTC
- توفّر Google حاليًا الاتصال باتجاه واحد (نصف مزدوج).
- يجب أن تتوفّر إمكانية التجميع وrtcp-mux.
- يجب استخدام الإصدار 1.2 (D) من بروتوكول أمان طبقة النقل (TLS) أو إصدار أحدث.
- وبالتالي، لا تتوفّر ميزة Trickle ICE. يجب تجميع كل مرشحي ICE أولاً قبل إرسال بروتوكول وصف الجلسة (SDP).
- ننصح بشدة بتضمين المرشّحين لبروتوكول UDP/IPv4 وTCP/IPv4 وUDP/IPv6 وTCP/IPv6 ICE لزيادة احتمالية الاتصال الناجح.
درجة دقة الفيديوهات المتوافقة:
- الحد الأدنى: 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 {}