মিডিয়াস্ট্রিম অবচয়

আপনি যদি getUserMedia() বা WebRTC-এর সাথে কাজ করেন, তাহলে আপনাকে Chrome 45 এবং পরবর্তীতে আপনার কোড সামঞ্জস্য করতে হতে পারে।

MediaStream API মিডিয়ার সিঙ্ক্রোনাইজড স্ট্রীম উপস্থাপন করে। উদাহরণস্বরূপ, ক্যামেরা এবং মাইক্রোফোন ইনপুট থেকে নেওয়া একটি স্ট্রিম ভিডিও এবং অডিও ট্র্যাক সিঙ্ক্রোনাইজ করেছে। প্রতিটি ট্র্যাক একটি MediaStreamTrack দ্বারা প্রতিনিধিত্ব করা হয়। ( <track> উপাদানের সাথে বিভ্রান্ত হবেন না!)

Chrome 45-এ তিনটি MediaStream অবচয় রয়েছে:

  • MediaStream.ended
  • MediaStream.label
  • MediaStream.stop()

সমান্তরালে দুটি সংযোজন রয়েছে:

  • MediaStream.active
  • MediaStreamTrack.stop()

এগুলির জন্য নিম্নলিখিত পরিবর্তনগুলি প্রয়োজন:

  • MediaStream.ended নয়, MediaStream স্ট্রিম হচ্ছে কিনা তা পরীক্ষা করতে MediaStream.active ব্যবহার করুন।
  • স্ট্রিমিং বন্ধ করতে MediaStreamTrack.stop() ব্যবহার করুন, MediaStream.stop() নয়।
  • আপনার যদি MediaStream এর জন্য একটি অনন্য শনাক্তকারীর প্রয়োজন হয় MediaStream.label এর পরিবর্তে MediaStream.id ব্যবহার করুন। MediaStreamTrack.label একটি স্ট্রীমের জন্য উৎস ডিভাইসের জন্য একটি মানব-পাঠযোগ্য নাম প্রদান করে, যেমন FaceTime HD ক্যামেরা (বিল্ট-ইন) (05ac:8510)

আপনি এগুলি কাজ করে দেখতে পারেন: Chrome এ simpl.info/gum খুলুন (ক্যামেরা সহ একটি ডিভাইসে) এবং Chrome DevTools কনসোল দেখুন৷ এই ডেমোতে getUserMedia() কলব্যাকে পাস করা MediaStream অবজেক্ট stream বিশ্বব্যাপী, তাই আপনি কনসোল থেকে এটি পরিদর্শন করতে পারেন। এই স্ট্রীমের জন্য MediaStreamTrack দেখতে stream.getTracks()[0] এ কল করুন।

Chrome DevTools কনসোলে MediaStream এবং MediaStreamTrack দেখানো স্ক্রিনশট

Stop(), শেষ এবং সক্রিয়

মিডিয়া ক্যাপচার এবং স্ট্রীম W3C ওয়ার্কিং গ্রুপ যখন আপনি একটি MediaStream এ নতুন ট্র্যাক যোগ করলে কী হয় এবং একটি খালি MediaStream শেষ হয় কিনা সেই সমস্যার দিকে নজর দিয়েছিল, তারা বুঝতে পেরেছিল যে MediaStream ended বাস্তবায়ন করার কোন বুদ্ধিমান উপায় নেই (যেমন 'আর কখনো শুরু হবে না')। HTML5 এর অন্যান্য অংশে 'শেষ হয়েছে' মানে 'এটি শেষ হয়েছে এবং আর কখনোই শুরু হবে না'। 'সক্রিয়' এই ধরনের কোনো প্রভাব বহন করে না: একটি নিষ্ক্রিয় স্ট্রীম আবার সক্রিয় হতে পারে, উদাহরণস্বরূপ যদি এটিতে একটি নতুন ট্র্যাক যোগ করা হয়। একটি বিভ্রান্তিকর বৈশিষ্ট্য এবং ফাংশন বজায় রাখার পরিবর্তে, ওয়ার্কিং গ্রুপ এটি অপসারণের সিদ্ধান্ত নিয়েছে।

একটি স্ট্রিমের স্থিতি পরীক্ষা করতে কীভাবে 'MediaStream.active' ব্যবহার করবেন তার একটি উদাহরণ এখানে দেওয়া হল:

var gumStream;

navigator.getUserMedia({audio: false, video: true},
    function(stream) {
            gumStream = stream;
        // ...
    },
    function(error) {
        console.log('getUserMedia() error', error);
    });

// …

if (gumStream.active) {
    // do something with the stream
}

MediaStream থেকে stop() সরানো কোনো বাস্তব কার্যকারিতাকে সরিয়ে দেয়নি: সোর্স ডিভাইসগুলিকে বিচ্ছিন্ন করার জন্য প্রক্রিয়াগুলি এবং তাই যেভাবেই হোক MediaStreamTrack এ করতে হবে। পরিবর্তে MediaStreamTrackstop() ব্যবহার করুন:

navigator.getUserMedia({audio: false, video: true},
    function(stream) {
            // can also use getAudioTracks() or getVideoTracks()
        var track = stream.getTracks()[0];  // if only one media track
        // ...
        track.stop();
    },
    function(error){
        console.log('getUserMedia() error', error);
    });

লেবেল

দেখা যাচ্ছে যে কেউ এই সম্পত্তির জন্য ব্যবহার করতে পারেনি!

MediaStream.label স্পেকের প্রথম সংস্করণে যোগ করা হয়েছিল, কিন্তু label কীসের জন্য তা সত্যিই কেউ জানত না। RTCPeerConnection মাধ্যমে একটি স্ট্রীম পাঠানো হলে label কী ঘটেছিল তাও স্পষ্ট নয়।

W3C ওয়ার্কিং গ্রুপ চারপাশে জিজ্ঞাসা করেছিল , এবং কেউ এটি চায়নি, তাই তারা এটি সরিয়ে দিয়েছে।

পুনরাবৃত্তি করার জন্য: MediaStream.id একটি MediaStream এর জন্য একটি অনন্য শনাক্তকারী প্রদান করে এবং MediaStreamTrack.label একটি স্ট্রিমের উৎসের নাম প্রদান করে, যেমন ক্যামেরা বা মাইক্রোফোনের ধরন।

MediaStream এবং MediaStreamTrack সম্পর্কে আরও তথ্য Mozilla Developer Network থেকে পাওয়া যায়, এবং HTML5 Rocks অডিও ও ভিডিও ক্যাপচার করার ক্ষেত্রে getUserMedia() এর একটি চমৎকার ভূমিকা প্রদান করে।

বরাবরের মতো, আমরা Chrome-এ পরিবর্তনের বিষয়ে আপনার প্রতিক্রিয়ার প্রশংসা করি। আপনি এই অবমূল্যায়নগুলির জন্য বাগগুলি অনুসরণ করতে পারেন ( এখানে এবং এখানে ) এবং বাস্তবায়নের অভিপ্রায়ে আরও আলোচনা এবং বিশদ খুঁজে পেতে পারেন৷