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

بخش رسانه 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.getTracks() که آرایه ای از اشیاء MediaStreamTrack را برمی گرداند، می توانید تمام آهنگ ها را از MediaStream بازیابی کنید.

MediaStreamTrack

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