סכימת תכונות של CameraStream לבית חכם
action.devices.traits.CameraStream
– תכונה זו מכסה את האופן שבו ניתן לשלוט בשידור המצלמה של מכשיר.
התכונה הזו שייכת למכשירים שיכולים לשדר פידים של וידאו למסכים חכמים, למכשירים שתומכים ב-Chromecast או לסמארטפונים. בגדול, מדובר במצלמות אבטחה או במצלמות לתינוקות. עם זאת, התכונה הזו רלוונטית גם למכשירים מורכבים יותר שיש בהם מצלמה (לדוגמה, מכשירים לשיחות ועידה בווידאו או רובוט שואב אבק עם מצלמה).
מאפייני המכשיר
מכשירים עם התכונה הזו עשויים לדווח על המאפיינים הבאים במסגרת הפעולה SYNC
. מידע נוסף על הטיפול באובייקטים מסוג Intent מסוג SYNC
זמין במאמר בנושא מילוי Intent.
מאפיינים | תיאור | התיאור |
---|---|---|
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 Progressive (משמש בעיקר לקליפים)
במהלך סטרימינג של פרוטוקולים hls
,dash
,smooth_stream
ו-progressive_mp4
למכשירי CAST (מכשירי Chromecast, מסכים חכמים וטלוויזיות חכמות שתומכות ב-Chromecast), מופעל מכשיר Cast Web Receiver כדי לעבד את השידור ולעבד אותו
במכשיר. מומלץ למפתח ליצור
Custom Web Receiver כדי
לאפשר גישה לכלים לניפוי באגים, להתאים אישית את התנהגות הנגן, להתאים אישית את המיתוג של ממשק המשתמש ולכלול
ניתוח נתונים. כדי להפעיל את השימוש במקלט המותאם אישית ולבטל את ההסכמה לשימוש במקלט שמוגדר כברירת מחדל,
צריך להגדיר את המזהה של אפליקציית המקבל שנוצר
כשרושמים את אפליקציית ההעברה
בשדה cameraStreamReceiverAppId
של התשובה EXECUTE
.
למידע נוסף על אפליקציות של Custom Web Receiver, כדאי לבקר במדריך לאתר למפתחים.
מכשיר STATES
ללא.
מכשיר COMMANDS
מכשירים עם התכונה הזו עשויים להגיב לפקודות הבאות כחלק מהפעולה EXECUTE
. מידע נוסף על הטיפול באובייקטים מסוג Intent מסוג EXECUTE
זמין במאמר בנושא מילוי Intent.
action.devices.commands.GetCameraStream
פרמטרים
פרמטרים | תיאור | התיאור |
---|---|---|
StreamToChromecast |
בוליאני |
חובה. האם השידור יופעל במכשיר Chromecast. |
SupportedStreamProtocols |
מערך |
חובה. סוגי/פורמטים של מדיה שנתמכים על ידי היעד הרצוי. |
[item, ...] |
String |
סוג מדיה. ערכים נתמכים:
|
תוצאות
תוצאות | תיאור | התיאור |
---|---|---|
cameraStreamAuthToken |
String |
אסימון אימות עבור המקבל הספציפי כדי לאשר גישה לשידור. אם הערך של |
cameraStreamProtocol |
String |
חובה. פורמט המדיה שאליו מפנה כתובת ה-URL של השידור. הוא צריך להיות אחד מהפרוטוקולים שמפורטים בפרמטר של הפקודה ערכים נתמכים:
|
תוצאות שאינן WebRTC
תוצאות | תיאור | התיאור |
---|---|---|
cameraStreamAccessUrl |
String |
חובה. נקודת הקצה של כתובת ה-URL לאחזור השידור בזמן אמת בפורמט שצוין על ידי |
cameraStreamReceiverAppId |
String |
המזהה של מקבל ההעברה לעיבוד של שידור המצלמה כאשר הפרמטר |
תוצאות WebRTC
תוצאות | תיאור | התיאור |
---|---|---|
cameraStreamSignalingUrl |
String |
חובה. נקודת קצה של כתובת URL לאחזור והחלפה של פרוטוקולים לתיאור סשן של מצלמה ולקוח (SDP). הלקוח צריך להחזיר את כתובת ה-URL שמשמשת כאות, שמשתמשת ב- |
cameraStreamOffer |
String |
פרוטוקול לתיאור סשן מבצע (SDP). |
cameraStreamIceServers |
String |
מייצג את השרתים האינטראקטיביים של הקישוריות (ICE) באמצעות מחרוזת JSON מקודדת עם התיאור של RTCIceServer. אם לא תציינו שרתי STUN (כלי עזר למעבר סשנים עבור NAT), ברירת המחדל של הפלטפורמה תהיה שרתי STUN הציבוריים של Google. TURN (מעבר באמצעות ממסר סביב שרתי NAT) נדרש רק אם לא ניתן להבטיח שכתובות ה-IP או המועמדים ל-ICE יהיו נגישים לציבור (למשל, דרך שרת מדיה, מועמד ל-ICE של מארח ציבורי, מועמד ל-ICE וכו'). |
דוגמאות
יש להציג את המצלמה הקדמית (מקלט Cast שמוגדר כברירת מחדל).
{ "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" }
מכשיר ERRORS
מומלץ לעיין ברשימה המלאה של שגיאות וחריגים.מפרטים של פרוטוקול WebRTC
יתרונות השימוש ב-WebRTC הם זמן אחזור נמוך ושיחה חד-כיוונית. ב-WebRTC נעשה שימוש בשיטת POST
עם גוף ותגובה של POST
בפורמט JSON.
WebRTC נתמך כרגע במסך החכם של Google Nest ובמכשירי Chromecast with Google TV.
בקטע הזה מתוארות הדרישות לשימוש בפרוטוקול השידור WebRTC.
סוג הנתונים | פרמטרים/הגדרות |
---|---|
כותרת בקשה לאות |
הכותרת צריכה לעמוד בדרישות הבאות:
|
פרמטרים של בקשה לאות | הבקשה יכולה לכלול את הפרמטרים הבאים:
|
אותות של פרמטרים של תגובות | התגובה יכולה לכלול את הפרמטרים הבאים:
|
דרישות והמלצות לגבי WebRTC
- Google תומכת כרגע בתקשורת חד-כיוונית (חצי דופלקס).
- צריך לתמוך בחבילות וב-rtcp-mux.
- חובה להשתמש ב-(D)TLS 1.2 ואילך.
- אין תמיכה ב-Trickle ICE. יש לאסוף תחילה את כל מועמדי ה-ICE לפני שליחת ה-SDP.
- מומלץ מאוד לכלול את המועמדים UDP/IPv4, TCP/IPv4, UDP/IPv6 ו-TCP/IPv6 ICE כדי להגדיל את הסיכוי להצלחת החיבור.
רזולוציות סרטונים נתמכות:
- מינימום: 480p
- מקסימום: 1080p
רכיבי Codec נתמכים של וידאו:
- VP8
- H.264
רכיבי Codec נתמכים של אודיו:
- 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 {}