Media Constraints এবং MediaTrackSettings দুটি গুরুত্বপূর্ণ উপাদান যা WebRTC এ getUserMedia() API এবং অন্যান্য মিডিয়া সম্পর্কিত কার্যক্রমে ব্যবহৃত হয়। এগুলি ক্যামেরা এবং মাইক্রোফোনের মাধ্যমে প্রাপ্ত মিডিয়া স্ট্রিমের জন্য কনফিগারেশন বা সীমাবদ্ধতা (constraints) নির্ধারণ করতে সাহায্য করে।
Media Constraints
Media Constraints একটি অবজেক্ট যা getUserMedia() ফাংশনে ব্যবহারকারীর ক্যামেরা এবং মাইক্রোফোন থেকে মিডিয়া স্ট্রিম নেওয়ার সময় বিভিন্ন সীমাবদ্ধতা এবং কনফিগারেশন নির্ধারণ করতে ব্যবহৃত হয়। এর মাধ্যমে, আপনি ভিডিও এবং অডিও স্ট্রিমের গুণগত মান, রেজোলিউশন, ফ্রেম রেট, বা অন্যান্য সেটিংস কাস্টমাইজ করতে পারেন।
Media Constraints এর গঠন
Media Constraints সাধারণত দুটি প্রধান সেকশনে ভাগ করা হয়:
- Video Constraints: ভিডিও স্ট্রিমের জন্য নির্ধারিত কনফিগারেশন যেমন রেজোলিউশন, ফ্রেম রেট ইত্যাদি।
- Audio Constraints: অডিও স্ট্রিমের জন্য নির্ধারিত কনফিগারেশন যেমন মাইক্রোফোনের সংবেদনশীলতা, সাউন্ড ক্লিয়ারিটি ইত্যাদি।
উদাহরণ: getUserMedia() এর মাধ্যমে ক্যামেরা ও মাইক্রোফোনের অ্যাক্সেস
navigator.mediaDevices.getUserMedia({
video: {
width: 1280,
height: 720,
frameRate: { ideal: 30, max: 60 }
},
audio: {
echoCancellation: true,
noiseSuppression: true
}
})
.then((stream) => {
const videoElement = document.querySelector('video');
videoElement.srcObject = stream;
})
.catch((error) => {
console.error('Error accessing media devices:', error);
});
এই কোডের মাধ্যমে:
- video কনস্ট্রেইন্টে width, height, এবং frameRate নির্ধারণ করা হয়েছে।
- audio কনস্ট্রেইন্টে echoCancellation এবং noiseSuppression সক্রিয় করা হয়েছে, যাতে অডিওর ক্লিয়ারিটি বাড়ে।
Video Constraints
ভিডিও স্ট্রিমের জন্য আপনি বিভিন্ন কনফিগারেশন অ্যাট্রিবিউট ব্যবহার করতে পারেন:
- width: ভিডিওর প্রস্থ (পিক্সেলে)
- height: ভিডিওর উচ্চতা (পিক্সেলে)
- frameRate: ভিডিওর ফ্রেম রেট (FPS)
- facingMode: ক্যামেরার দিক নির্ধারণ (যেমন, "user" বা "environment" ক্যামেরার সামনে বা পিছনে হতে পারে)
- aspectRatio: ভিডিওর অ্যাস্পেক্ট রেশিও
উদাহরণ:
navigator.mediaDevices.getUserMedia({
video: {
width: { ideal: 1280 },
height: { ideal: 720 },
facingMode: "environment"
}
})
.then((stream) => {
const videoElement = document.querySelector('video');
videoElement.srcObject = stream;
})
.catch((error) => {
console.error('Error accessing video:', error);
});
এই উদাহরণে, ভিডিওর রেজোলিউশন 1280x720 নির্ধারণ করা হয়েছে এবং ক্যামেরার পিছনের (environment) ক্যামেরা ব্যবহারের জন্য facingMode সেট করা হয়েছে।
Audio Constraints
অডিও স্ট্রিমের জন্য কিছু সাধারণ কনফিগারেশন অপশন রয়েছে:
- echoCancellation: এই অপশনটি সক্রিয় হলে, এটি অডিওর ইকোকে বাতিল করে।
- noiseSuppression: এটি শব্দের অবাঞ্ছিত অবদানগুলো, যেমন ব্যাকগ্রাউন্ড নoise, কমাতে সাহায্য করে।
- autoGainControl: অডিওর গেইন বা ভলিউম স্বয়ংক্রিয়ভাবে নিয়ন্ত্রণ করে।
- sampleRate: অডিওর স্যাম্পল রেট।
উদাহরণ:
navigator.mediaDevices.getUserMedia({
audio: {
echoCancellation: true,
noiseSuppression: true,
autoGainControl: true
}
})
.then((stream) => {
// অডিও স্ট্রিম ব্যবহার করতে পারেন
})
.catch((error) => {
console.error('Error accessing audio:', error);
});
এই উদাহরণে, অডিও স্ট্রিমের জন্য echoCancellation, noiseSuppression, এবং autoGainControl সক্রিয় করা হয়েছে।
MediaTrackSettings
MediaTrackSettings হল একটি অবজেক্ট যা মিডিয়া ট্র্যাকের কনফিগারেশন বা সেটিংস সংক্রান্ত তথ্য ধারণ করে। এটি মিডিয়া স্ট্রিমে অংশ নেওয়া মিডিয়া ট্র্যাকের বর্তমান সেটিংস সংক্রান্ত তথ্য প্রদান করে। যেমন, একটি ভিডিও ট্র্যাকের জন্য রেজোলিউশন বা ফ্রেম রেট, এবং একটি অডিও ট্র্যাকের জন্য মাইক্রোফোনের সেটিংস।
MediaTrackSettings এর উদাহরণ:
একবার আপনি getUserMedia() ফাংশন ব্যবহার করে মিডিয়া স্ট্রিম গ্রহণ করলে, আপনি সেই স্ট্রিমের ট্র্যাক থেকে MediaTrackSettings পেতে পারেন।
navigator.mediaDevices.getUserMedia({ video: true, audio: true })
.then((stream) => {
const videoTrack = stream.getVideoTracks()[0];
const audioTrack = stream.getAudioTracks()[0];
const videoSettings = videoTrack.getSettings();
const audioSettings = audioTrack.getSettings();
console.log('Video Settings:', videoSettings);
console.log('Audio Settings:', audioSettings);
})
.catch((error) => {
console.error('Error accessing media devices:', error);
});
উদাহরণে, getSettings() ব্যবহার করে আমরা ভিডিও এবং অডিও ট্র্যাকের বর্তমান সেটিংস দেখাচ্ছি।
MediaTrackSettings এর কিছু সাধারণ প্রপার্টি:
- videoTrack:
- width: ভিডিওর প্রস্থ (পিক্সেল)
- height: ভিডিওর উচ্চতা (পিক্সেল)
- frameRate: ফ্রেম রেট (FPS)
- facingMode: ক্যামেরার দিক
- audioTrack:
- sampleRate: অডিওর স্যাম্পল রেট
- echoCancellation: ইকো ক্যান্সেলেশন সক্রিয় কিনা
- noiseSuppression: শব্দ দূষণ কমানোর অপশন
সারাংশ
Media Constraints WebRTC অ্যাপ্লিকেশনগুলিতে মিডিয়া স্ট্রিমের কনফিগারেশন এবং সীমাবদ্ধতা নির্ধারণ করার জন্য ব্যবহৃত হয়। এর মাধ্যমে ভিডিও এবং অডিও স্ট্রিমের গুণগত মান নিয়ন্ত্রণ করা যায়, যেমন রেজোলিউশন, ফ্রেম রেট এবং সাউন্ড ক্লিয়ারিটি। MediaTrackSettings ব্যবহার করে আপনি প্রাপ্ত মিডিয়া ট্র্যাকের কনফিগারেশন ও সেটিংস দেখতে পারেন, যা আপনাকে ট্র্যাকের বর্তমান অবস্থার উপর নিয়ন্ত্রণ প্রদান করে। WebRTC অ্যাপ্লিকেশন তৈরির সময় এই দুটি উপাদান ব্যবহারে আপনি আপনার অ্যাপ্লিকেশনটি আরও কার্যকরী এবং কাস্টমাইজড করতে পারবেন।
Read more