חלק המדיה של WebRTC כולל הנחיות גישה לחומרה המסוגלת לצלם וידאו ואודיו, כמו מצלמות ומיקרופונים, כמו גם אופן הפעולה של זרימות מדיה. הוא כולל גם מדיה ברשת המדיה, שמאפשרת לאפליקציה לצלם את המסך.
מכשירים לאחסון מדיה
הגישה לכל המצלמות והמיקרופונים שנתמכים על ידי הדפדפן
ומנוהלת באמצעות האובייקט navigator.mediaDevices
. אפליקציות יכולות לאחזר
את הרשימה הנוכחית של המכשירים המחוברים ולהאזין לשינויים, כי
מצלמות ומיקרו-בקרים רבים מתחברים באמצעות USB וניתן לחבר אותם
ולנתק אותם במהלך מחזור החיים של האפליקציה. המצב של מכשיר
המדיה יכול להשתנות בכל שלב, לכן מומלץ שאפליקציות יירשמו
לשינויים במכשיר כדי לטפל באופן תקין בשינויים.
מגבלות
כשניגשים למכשירי מדיה, מומלץ לספק מגבלות מפורטות ככל האפשר. אפשר לפתוח את המצלמה והמיקרופון בברירת מחדל עם אילוץ פשוט, אבל יכול להיות ששידור המדיה הזה יהיה רחוק יותר מהאופטימיזציה האופטימלית של האפליקציה.
אילוצים ספציפיים מוגדרים באובייקט MediaTrackConstraint
, אחד לאודיו ואחד לווידאו. המאפיינים באובייקט הזה הם מהסוג
ConstraintLong
, ConstraintBoolean
, ConstraintDouble
או
ConstraintDOMString
. אלה יכולים להיות ערך ספציפי (למשל מספר, בוליאני או מחרוזת), טווח (LongRange
או DoubleRange
עם ערך מינימלי ומקסימום) או אובייקט עם הגדרה של ideal
או exact
. בערך ספציפי, הדפדפן ינסה לבחור פריט קרוב ככל האפשר.
עבור טווח, המערכת תשתמש בערך הגבוה ביותר בטווח הזה. אם צוין exact
, יוחזרו רק ערוצי מדיה שתואמים להגבלה הזו בדיוק.
קרוב
// Camera with a resolution as close to 640x480 as possible
{
"video": {
"width": 640,
"height": 480
}
}
טווח
// Camera with a resolution in the range 640x480 to 1024x768
{
"video": {
"width": {
"min": 640,
"max": 1024
},
"height": {
"min": 480,
"max": 768
}
}
}
מדויקת
// Camera with the exact resolution of 1024x768
{
"video": {
"width": {
"exact": 1024
},
"height": {
"exact": 768
}
}
}
כדי לקבוע את התצורה בפועל של טראק מסוים של שידור מדיה,
אנחנו יכולים להתקשר אל MediaStreamTrack.getSettings()
שמחזיר את
MediaTrackSettings
שמוחל כרגע.
אפשר גם לעדכן את האילוצים של טראק ממכשיר מדיה
שפותחים, על ידי התקשרות ל-applyConstraints()
במסלול. פעולה זו מאפשרת
לאפליקציה להגדיר מחדש מכשיר מדיה בלי שיהיה צורך קודם לסגור את
השידור הקיים.
מדיה ברשת המדיה
אפליקציה שרוצים להיות מסוגלת לבצע צילום והקלטה של מסך
חייבת להשתמש ב-Display Media API. הפונקציה getDisplayMedia()
(שהיא חלק מ-navigator.mediaDevices
דומה ל-getUserMedia()
) ומשמשת לפתיחת התוכן של המסך (או חלק ממנו, כמו חלון). הפונקציה MediaStream
שהחזירה פועלת באותו אופן כמו השימוש
getUserMedia()
.
המגבלות על getDisplayMedia()
שונות מאלה המשמשות לקלט רגיל של וידאו או אודיו.
{
video: {
cursor: 'always' | 'motion' | 'never',
displaySurface: 'application' | 'browser' | 'monitor' | 'window'
}
}
קטע הקוד שלמעלה מראה איך ההגבלות המיוחדות להקלטת מסך פועלות. שים לב, ייתכן שדפדפנים אלה אינם נתמכים על ידי כל הדפדפנים בעלי תמיכה במדיה ברשת המדיה.
שידורים וטראקים
MediaStream
מייצג זרם של תוכן מדיה, שמורכב מטראקים
(MediaStreamTrack
) של אודיו ווידאו. ניתן לאחזר את כל הטראקים
מ-MediaStream
בקריאה ל-MediaStream.getTracks()
, שמחזירה מערך של
MediaStreamTrack
אובייקטים.
טראק של מדיה
לMediaStreamTrack
יש נכס kind
שהוא audio
או video
, המציין את סוג המדיה שהוא מייצג. אפשר להשתיק כל טראק
על ידי החלפת המצב של הנכס enabled
. למסלול יש מאפיין בוליאני remote
, המציין אם הוא הגיע מ-RTCPeerConnection
ומגיע מעמית מרוחק.