הסכימה של מאפיין 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
.
למידע נוסף על אפליקציות של מקלט אינטרנט בהתאמה אישית, אפשר לעיין במדריך באתר למפתחים.
מצבי המכשיר
ללא.
CommandS במכשיר
מכשירים עם המאפיין הזה עשויים להגיב לפקודות הבאות כחלק מהפעולה 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 {}