جذب رسانه ها و محدودیت ها

بخش رسانه‌ای 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 استفاده کند. تابع getDisplayMedia() (که بخشی از navigator.mediaDevices است) مشابه getUserMedia() عمل می‌کند و برای باز کردن محتوای صفحه نمایش (یا بخشی از آن، مانند یک پنجره) استفاده می‌شود. MediaStream برگردانده شده مانند زمانی که از getUserMedia() استفاده می‌شود، عمل می‌کند.

محدودیت‌های تابع getDisplayMedia() با محدودیت‌هایی که برای ورودی‌های معمولی ویدیو یا صدا استفاده می‌شوند، متفاوت است.

{
    video: {
        cursor: 'always' | 'motion' | 'never',
        displaySurface: 'application' | 'browser' | 'monitor' | 'window'
    }
}

قطعه کد بالا نحوه عملکرد محدودیت‌های ویژه برای ضبط صفحه نمایش را نشان می‌دهد. توجه داشته باشید که این موارد ممکن است توسط همه مرورگرهایی که از رسانه‌های نمایشی پشتیبانی می‌کنند، پشتیبانی نشوند.

جریان‌ها و آهنگ‌ها

یک MediaStream نشان دهنده جریانی از محتوای رسانه‌ای است که شامل آهنگ‌های ( MediaStreamTrack ) صوتی و تصویری است. شما می‌توانید با فراخوانی MediaStream.getTracks() که آرایه‌ای از اشیاء MediaStreamTrack را برمی‌گرداند، تمام آهنگ‌ها را از MediaStream بازیابی کنید.

مدیااستریم ترک

یک MediaStreamTrack دارای یک ویژگی kind است که می‌تواند audio یا video باشد و نوع رسانه‌ای را که نشان می‌دهد، مشخص می‌کند. هر آهنگ را می‌توان با فعال کردن ویژگی enabled آن، بی‌صدا کرد. یک آهنگ دارای یک ویژگی بولی remote است که نشان می‌دهد آیا توسط RTCPeerConnection منبع‌گیری شده و از یک همتای راه دور می‌آید یا خیر.