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

بخش رسانه 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 و از یک همتای راه دور آمده است یا خیر.