אילוץ מדיה ואילוצים

חלק המדיה ב-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 ומגיע מעמית מרוחק.