הסכימה של מאפיין CameraStream לבית חכם
action.devices.traits.CameraStream
– המאפיין הזה מכיל מידע על האופן שבו אפשר לשלוט בשידור הווידאו של המצלמה במכשיר.
המאפיין הזה שייך למכשירים שיש להם יכולת להעביר סטרימינג של פידים של וידאו למסכים חכמים, למכשירים שתומכים ב-Chromecast או לסמארטפונים. בדרך כלל מדובר במצלמות אבטחה או במצלמות לתינוקות. אבל המאפיין הזה חל גם על מכשירים מורכבים יותר שיש בהם מצלמה (לדוגמה, מכשירים לשיחות וידאו או רובוטים לניקוי עם מצלמה).
מאפייני המכשיר
מכשירים עם המאפיין הזה עשויים לדווח על המאפיינים הבאים כחלק מהפעולה SYNC
. למידע נוסף על טיפול בכוונות מסוג SYNC
, ראו ביצוע כוונות.
מאפיינים | סוג | תיאור |
---|---|---|
cameraStreamSupportedProtocols |
מערך |
חובה. סוגי המדיה הנתמכים בסטרימינג מהמצלמה, לפי סדר ההעדפה. בדרך כלל, המערכת מבקשת את הפרוטוקול הראשון במערך הזה שתואם לממשק היעד. |
[item, ...] |
String |
סוג המדיה. ערכים נתמכים:
|
cameraStreamNeedAuthToken |
בוליאני |
חובה. מציין אם נדרש אסימון אימות כדי להעביר את הפיד של המצלמה בסטרימינג. |
דוגמאות
מצלמה עם תמיכה בכמה פרוטוקולים, ללא צורך בטוקן אימות.
{ "cameraStreamSupportedProtocols": [ "webrtc", "hls", "dash", "smooth_stream", "progressive_mp4" ], "cameraStreamNeedAuthToken": false }
מצלמה שתומכת בפרוטוקול אחד, ונדרש לה טוקן אימות.
{ "cameraStreamSupportedProtocols": [ "hls" ], "cameraStreamNeedAuthToken": true }
פרוטוקולים נתמכים לסטרימינג
המאפיין הזה תומך בפרוטוקולי הסטרימינג הבאים:
webrtc
: WebRTChls
: HTTP Live Streamingdash
: שידור דינמי שניתן להתאמה באמצעות HTTP (DASH)smooth_stream
: סטרימינג חלקprogressive_mp4
: קובץ MP4 מתקדם (משמש בעיקר לקליפסים)
כשמשדרים בסטרימינג את הפרוטוקולים hls
, dash
, smooth_stream
ו-progressive_mp4
למכשירי Cast (מכשירי Chromecast, מסכים חכמים וטלוויזיות חכמות שתומכות ב-Chromecast), מופעל מקלט אינטרנט של Cast כדי לעבד את הסטרימינג ולעבד אותו במכשיר. מומלץ למפתח ליצור Custom Web Receiver כדי לאפשר גישה לכלים לניפוי באגים, להתאמה אישית של התנהגות הנגן, להתאמה אישית של מיתוג ממשק המשתמש ולכלול ניתוח נתונים. כדי להפעיל את השימוש במכשיר המקבל המותאם אישית ולבטל את השימוש במכשיר המקבל שמוגדר כברירת מחדל, צריך להגדיר את מזהה האפליקציה של המכשיר המקבל שנוצר כאשר רושמים את אפליקציית ה-Cast בשדה cameraStreamReceiverAppId
בתגובה EXECUTE
.
למידע נוסף על אפליקציות של מקלט אינטרנט בהתאמה אישית, אפשר לעיין במדריך באתר למפתחים.
מצבי המכשיר
ללא.
פקודות למכשיר
מכשירים עם המאפיין הזה עשויים להגיב לפקודות הבאות כחלק מהפעולה EXECUTE
. למידע נוסף על טיפול בכוונות מסוג EXECUTE
, ראו ביצוע כוונות.
action.devices.commands.GetCameraStream
פרמטרים
פרמטרים | סוג | תיאור |
---|---|---|
StreamToChromecast |
בוליאני |
חובה. אם הסטרימינג יופעל במכשיר Chromecast. |
SupportedStreamProtocols |
מערך |
חובה. סוגי המדיה או הפורמטים הנתמכים ביעד הרצוי. |
[item, ...] |
String |
סוג המדיה. ערכים נתמכים:
|
תוצאות
תוצאות | סוג | תיאור |
---|---|---|
cameraStreamAuthToken |
String |
אסימון אימות למקלט הספציפי כדי לאשר גישה לסטרימינג. השדה |
cameraStreamProtocol |
String |
חובה. פורמט המדיה שאליו מפנה כתובת ה-URL של הסטרימינג. הוא צריך להיות אחד מהפרוטוקולים שמפורטים בפרמטר הפקודה ערכים נתמכים:
|
תוצאות שאינן WebRTC
תוצאות | סוג | תיאור |
---|---|---|
cameraStreamAccessUrl |
String |
חובה. נקודת קצה של כתובת URL לאחזור הסטרימינג בזמן אמת בפורמט שצוין ב- |
cameraStreamReceiverAppId |
String |
מזהה מקלט ההעברה (cast) לעיבוד של מקור הנתונים של המצלמה כשהפרמטר |
תוצאות WebRTC
תוצאות | סוג | תיאור |
---|---|---|
cameraStreamSignalingUrl |
String |
חובה. נקודת קצה של כתובת URL לאחזור ולהעברה של פרוטוקולים של תיאור סשנים (SDP) של מצלמה ושל לקוח. הלקוח צריך להחזיר את כתובת ה-URL לסימון שבה נעשה שימוש ב- |
cameraStreamOffer |
String |
פרוטוקול תיאור סשן (SDP) של הצעה. |
cameraStreamIceServers |
String |
מייצג את שרתי Interactive Connectivity Establishment (ICE) באמצעות מחרוזת JSON מקודדת עם תיאור של RTCIceServer. אם לא מציינים שרתי STUN (Session Traversal Utilities for NAT), ברירת המחדל של הפלטפורמה היא שרתי STUN הציבוריים של Google. שרתי TURN (Traversal Using Relays around NAT) נדרשים רק אם אי אפשר להבטיח שכתובות ה-IP או המועמדים ל-ICE שסופקו יהיו נגישים לציבור (למשל, דרך שרת מדיה, מועמד ICE של מארח ציבורי, מועמד ICE של ממסר וכו'). |
דוגמאות
Show the front door camera (default Cast receiver)
{ "cameraStreamAccessUrl": "https://fluffysheep.com/baaaaa.mp4", "cameraStreamProtocol": "progressive_mp4" }
הצגת מצלמת הדלת הקדמית (מקלט Cast מותאם אישית).
{ "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 with Google TV.
בקטע הזה מתוארות הדרישות לשימוש בפרוטוקול הסטרימינג של WebRTC.
סוג הנתונים | פרמטרים/הגדרות |
---|---|
כותרת הבקשה של האות |
הכותרת צריכה לעמוד בדרישות הבאות:
|
פרמטרים של בקשות איתות | הבקשה יכולה לכלול את הפרמטרים הבאים:
|
פרמטרים של תגובת איתות | התשובה יכולה לכלול את הפרמטרים הבאים:
|
דרישות והמלצות ל-WebRTC
- בשלב זה, Google תומכת בתקשורת חד-כיוונית (חצי דופלקס).
- חובה לתמוך ב-bundling וב-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)
שיתוף משאבים בין מקורות (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 {}