סכימה של תכונות סטרימינג מהמצלמה בבית החכם
action.devices.traits.CameraStream
– התכונה הזו קובעת איך לשלוט בשידור המצלמה של מכשיר.
התכונה הזו שייכת למכשירים שיכולים לשדר פידים של סרטונים למסכים חכמים, למכשירים שתומכים ב-Chromecast או לסמארטפונים. באופן כללי, אלה מצלמות אבטחה או מצלמות לתינוקות. אבל התכונה הזו חלה גם על מכשירים מורכבים יותר שיש בהם מצלמה (לדוגמה, מכשירים לשיחות ועידה בווידאו או רובוט ואקום עם מצלמה).
ATTRIBUTES במכשיר
מכשירים עם התכונה הזו עשויים לדווח על המאפיינים הבאים כחלק מהפעולה של SYNC
. מידע נוסף על טיפול ב-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
. מידע נוסף על טיפול ב-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 לאחזור והחלפה של פרוטוקולים לתיאור סשן ושל מצלמות ולקוחות. הלקוח צריך להחזיר את כתובת ה-URL לאותות שמשתמשת ב- |
cameraStreamOffer |
String |
הפרוטוקול של תיאור הסשן של המבצע (SDP). |
cameraStreamIceServers |
String |
מצב זה מייצג את שרתי הקישוריות האינטראקטיבית (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" }
ERRORS מכשיר
לצפייה ברשימה המלאה של השגיאות והחריגיםהמפרטים של פרוטוקול WebRTC
יתרונות השימוש ב-WebRTC הם זמן אחזור קצר ודיבור חד-כיווני. WebRTC משתמש בשיטה POST
עם גוף POST
ותגובה בפורמט JSON.
WebRTC נתמך כרגע במסך החכם של Google Nest וב-Chromecast עם מכשירי Google TV.
בקטע הזה מתוארות הדרישות לשימוש בפרוטוקול הסטרימינג של WebRTC.
סוג הנתונים | פרמטרים/הגדרות |
---|---|
כותרת של בקשת חתימה |
הכותרת צריכה לעמוד בדרישות הבאות:
|
פרמטרים של בקשת אותות | הבקשה יכולה לכלול את הפרמטרים האלה:
|
פרמטרים של תגובות אותות | התשובה יכולה לכלול את הפרמטרים האלה:
|
דרישות והמלצות של WebRTC
- Google תומכת בשלב זה בתקשורת חד-כיוונית (חצי דו-צדדית).
- עליך לתמוך בחבילה וב-rtcp-mux.
- צריך להשתמש ב-(D)TLS 1.2 ואילך.
- אין תמיכה ב-Itrque 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 {}