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() কল করে MediaStream থেকে সমস্ত ট্র্যাক পুনরুদ্ধার করতে পারেন, যা MediaStreamTrack অবজেক্টের একটি অ্যারে ফেরত দেয়।
মিডিয়াস্ট্রিমট্র্যাক
একটি MediaStreamTrack একটি kind বৈশিষ্ট্য থাকে যা হয় audio অথবা video , যা এটি কোন ধরণের মিডিয়া প্রতিনিধিত্ব করে তা নির্দেশ করে। প্রতিটি ট্র্যাককে তার enabled বৈশিষ্ট্য টগল করে নিঃশব্দ করা যেতে পারে। একটি ট্র্যাকের একটি বুলিয়ান বৈশিষ্ট্য remote থাকে যা নির্দেশ করে যে এটি একটি RTCPeerConnection দ্বারা সোর্স করা হয়েছে এবং একটি দূরবর্তী পিয়ার থেকে আসছে কিনা।