חלק המדיה ב-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
ל-MediaStreamTrack
יש נכס kind
שהוא audio
או video
,
שמציין את סוג המדיה שהוא מייצג. אפשר להשתיק כל טראק על ידי החלפת המצב
לנכס enabled
שלו. לטראק יש נכס בוליאני remote
שמציין
אם הוא מגיע מ-RTCPeerConnection
ומגיע מעמית מרוחק.