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