সরাসরি ব্রাউজারে আপনার ওয়েবক্যাম এবং মাইক্রোফোন থেকে ভিডিও রেকর্ড করুন, তারপর ফাইলটি ডাউনলোড করুন -- কোনো আপলোড নয়, কোনো সার্ভার নেই।
সরাসরি ব্রাউজারে আপনার ওয়েবক্যাম এবং মাইক্রোফোন থেকে ভিডিও রেকর্ড করুন, তারপর ফাইলটি ডাউনলোড করুন -- কোনো আপলোড নয়, কোনো সার্ভার নেই। সরাসরি ব্রাউজারে আপনার ওয়েবক্যাম এবং মাইক্রোফোন থেকে ভিডিও রেকর্ড করুন, তারপর ফাইলটি ডাউনলোড করুন -- কোনো আপলোড নয়, কোনো সার্ভার নেই।
আপনার ব্রাউজার getUserMedia বা MediaRecorder সমর্থন করে না। HTTPS-এর উপর Chrome, Firefox, Edge, বা Safari-এর সাম্প্রতিক সংস্করণ চেষ্টা করুন।
ব্রাউজারে রেকর্ডিং একটি তিন-ধাপের পাইপলাইন। প্রথমে, আপনি অনুমতি দেওয়ার পরে
getUserMedia() ক্যামেরা এবং মাইক্রোফোন থেকে একটি MediaStream ধারণ করে --
ব্রাউজার সবসময় জিজ্ঞেস করে, এবং তাদের একটি নিরাপদ প্রসঙ্গ (HTTPS বা
localhost) প্রয়োজন। দ্বিতীয়ত, একটি MediaRecorder সেই স্ট্রিম গ্রহণ করে এবং
আগত ফ্রেমগুলোকে WebM-এর মতো একটি কন্টেইনার ফরম্যাটে এনকোড করে, চলতে চলতে
ডেটা টুকরো করে। তৃতীয়ত, আপনি থামালে, টুকরোগুলো একটি একক Blob-এ একত্রিত হয়
যা প্লে ব্যাক ও ডাউনলোড করা যায়। কিছুই প্রেরণ করা হয় না: এনকোডিং আপনার
ডিভাইসে ঘটে, তাই নেটওয়ার্ক বন্ধ থাকলেও ব্রাউজার রেকর্ডার একটি ফাইল তৈরি
করতে পারে।
কন্টেইনার এবং কোডেক
কন্টেইনার এবং কোডেক আপনার ব্রাউজার ও প্ল্যাটফর্মের উপর নির্ভর করে। VP8
বা VP9 ভিডিও এবং Opus অডিওসহ WebM সবচেয়ে নিরাপদ বিকল্প এবং Chrome, Firefox,
Edge, এবং Safari-তে কাজ করে। ব্রাউজার সমর্থন জানালে MP4 দেওয়া হয়, যা নতুন
ডিভাইসে ক্রমবর্ধমান সাধারণ তবে সর্বজনীন নয়। ব্রাউজার এনকোড করতে পারে না এমন
একটি ফরম্যাট বেছে নিলে, এই পেজটি স্বয়ংক্রিয়ভাবে WebM-এ ফিরে যায়। রেকর্ডিং
শেষ হলে, আসলে যা তৈরি হয়েছে তার সাথে মিলে যাওয়া সঠিক এক্সটেনশন (.webm বা
.mp4) নিয়ে ডাউনলোড বাটন দেখা যায়।
গোপনীয়তা এবং অনুমতি
স্ট্রিম শুরুর আগে, ব্রাউজার একটি অনুমতি প্রম্পট দেখায় যা আপনাকে কোন ক্যামেরা
ও মাইক্রোফোন শেয়ার করতে হবে তা বেছে নিতে দেয় -- এই পেজের ডিভাইস ড্রপডাউনগুলো
enumerateDevices() থেকে পূরণ করা হয়, এবং আপনি ডিভাইস পরিবর্তন করে স্ট্রিম
আবার খুলতে পারেন। সমস্ত প্রক্রিয়াকরণ স্থানীয়: ভিডিও বাইট কখনো আপনার
মেশিন ছেড়ে যায় না, এবং পেজ নিজে কিছু সংরক্ষণ করে না। রেকর্ডিং থামালে,
ক্যামেরার ইন্ডিকেটর লাইট নিভে যায় এবং স্ট্রিমের ট্র্যাকগুলো মুক্তি পায়,
তাই শেষের পর কোনো রিসোর্স ধরে থাকে না। কিছু সিস্টেমে পেজ যতক্ষণ কোনো স্ট্রিম
ধরে রাখে ততক্ষণ ক্যামেরার লাইট জ্বলে থাকে, এমনকি মিউট করা থাকলেও।
ব্যবহারিক নোট
প্রিভিউ সঠিকভাবে মিরর করে (মিউটেড প্লেব্যাক ইকো এড়ায়), এবং টাইমার রেকর্ডিংয়ের
সময় অতিবাহিত সময় ট্র্যাক করে। দীর্ঘ রেকর্ডিংয়ের জন্য, মনে রাখবেন ইন-মেমোরি
টুকরো সময়ের সাথে বাড়ে, তাই খুব দীর্ঘ সেশন বেশি মেমোরি ব্যবহার করে। ক্যামেরার
পরিবর্তে স্ক্রিন রেকর্ড করতে হলে, সেটির জন্য একটি ভিন্ন API (getDisplayMedia)
প্রয়োজন এবং এটি এখানে অন্তর্ভুক্ত নয়। একবার অনুমতি প্রম্পট অস্বীকার করা হলে,
ব্রাউজার সাধারণত সাইট সেটিংস পরিষ্কার না করা পর্যন্ত সেই পছন্দ লক করে।
প্রায়শই জিজ্ঞাসিত প্রশ্ন
পেজ কেন ক্যামেরা/মাইক্রোফোন অনুমতি চায়?
getUserMedia() গোপনীয়তার জন্য সবসময় স্পষ্ট ব্যবহারকারী সম্মতি প্রয়োজন। ব্রাউজার কোন ডিভাইস শেয়ার করা হবে তা তালিকাভুক্ত একটি প্রম্পট দেখায়; আপনি একবার অনুমতি দিলে স্ট্রিম সাথে সাথে শুরু হয়।
আমার রেকর্ডিং কেন .webm হিসেবে সংরক্ষিত হয়?
WebM (VP8/VP9 + Opus) হলো কন্টেইনার যা প্রতিটি প্রধান ব্রাউজার নেটিভভাবে এনকোড করতে পারে। MP4 শুধুমাত্র সেখানে দেওয়া হয় যেখানে ব্রাউজার সমর্থন জানায়; অন্যথায় পেজ স্বয়ংক্রিয়ভাবে WebM-এ ফিরে যায়।
আমার ভিডিও কি সার্ভারে আপলোড হয়?
না। এনকোডিং MediaRecorder দিয়ে স্থানীয়ভাবে ঘটে এবং ফলাফল আপনার ব্রাউজারের মেমোরিতে একটি Blob। কিছুই প্রেরণ হয় না এবং পেজ কিছু সংরক্ষণ করে না; নেটওয়ার্ক বন্ধ রেখেও রেকর্ড করতে পারেন।
ক্যামেরার আলো কেন জ্বলে থাকে?
আলো নির্দেশ করে পেজ একটি লাইভ ক্যামেরা স্ট্রিম ধরে রেখেছে। রেকর্ডিং থামালে এবং ট্র্যাকগুলো মুক্তি পেলে এটি নিভে যায়। কিছু সিস্টেমে যেকোনো স্ট্রিম সক্রিয় থাকলে আলো জ্বলে থাকে, এমনকি মিউট বা রেকর্ডিং না করলেও।
সেশনের মাঝে ডিভাইস পরিবর্তন করতে পারি?
হ্যাঁ। ড্রপডাউনে ভিন্ন ক্যামেরা বা মাইক্রোফোন বেছে নিয়ে নতুন রেকর্ডিং শুরু করুন; পেজ পরবর্তী শুরুতে নতুন ডিভাইস নির্বাচনের সাথে স্ট্রিম পুনরায় সমন্বয় করে।
রেকর্ডার কাজ করতে কী দরকার?
getUserMedia এবং MediaRecorder সমর্থনকারী একটি ব্রাউজার (সব আধুনিক ব্রাউজার), একটি ক্যামেরা ও মাইক্রোফোন, এবং একটি নিরাপদ প্রসঙ্গ: HTTPS বা localhost। সমর্থন না থাকলে পেজ কন্ট্রোলের বদলে একটি নোটিশ দেখায়।