VP9 এখন WebRTC-এ উপলব্ধ

দুই বছর আগে ক্রোম VP9 কোডেকের জন্য সমর্থন সক্ষম করেছিল। ডেস্কটপ এবং অ্যান্ড্রয়েডে Chrome 48 থেকে, WebRTC ব্যবহার করে ভিডিও কলের জন্য VP9 একটি ঐচ্ছিক ভিডিও কোডেক হবে।

যদিও VP9 আগের কোডেকগুলির মতো একই মৌলিক ব্লুপ্রিন্ট ব্যবহার করে, WebM টিম ভিডিওর প্রতিটি বাইট থেকে আরও গুণমান পেতে VP9-এ উন্নতি করেছে৷ উদাহরণস্বরূপ, এনকোডারটি সবচেয়ে তীক্ষ্ণ চিত্র বৈশিষ্ট্যগুলিকে অগ্রাধিকার দেয়, এবং কোডেক এখন অসমমিত রূপান্তরগুলি ব্যবহার করে এমনকি সবচেয়ে চ্যালেঞ্জিং দৃশ্যগুলিকে ক্রিস্প এবং ব্লক-মুক্ত রাখতে সাহায্য করে৷

VP9-এর সাথে, যে ইন্টারনেট সংযোগগুলি বর্তমানে প্যাকেট হারানো বা বিলম্ব ছাড়াই 720p পরিবেশন করতে সক্ষম তারা একই ব্যান্ডউইথ-এ একটি 1080p ভিডিও কল সমর্থন করতে সক্ষম হবে। VP9 দুর্বল সংযোগ বা ব্যয়বহুল ডেটা প্ল্যানের ব্যবহারকারীদের জন্য ডেটা ব্যবহার কমাতে পারে, সবচেয়ে ভাল ক্ষেত্রে VP8-এর বিটরেটের মাত্র 40% প্রয়োজন।

আমরা ওয়েবআরটিসি এনকোডার সেটিংসের সাথে 30% বিটরেট সঞ্চয় দেখিয়ে নীচের রেকর্ডিংয়ের স্ক্রিনশটে VP8 কলগুলি কীভাবে VP9-এর সাথে তুলনা করে তা দেখতে পারেন:

ভিডিওর স্ক্রিনশট VP8 এবং VP9 WebRTC কলগুলি পাশাপাশি দেখাচ্ছে৷

একটি WebRTC কলের কোডেক, বিটরেটের মতো অন্যান্য মিডিয়া সেটিংস সহ, সেশন ডেসক্রিপশন প্রোটোকল (SDP) মেটাডেটা বার্তা বিনিময় করার মাধ্যমে কলার এবং কলীর মধ্যে আলোচনা করা হয় যা ক্লায়েন্টের মিডিয়া ক্ষমতা বর্ণনা করে।

এই হ্যান্ডশেকিং প্রক্রিয়া — মিডিয়া ক্ষমতা বিনিময় — অফার/উত্তর হিসাবে পরিচিত। উদাহরণস্বরূপ, একজন কলার একটি অফার (একটি SDP বার্তা) পাঠাতে পারে যাতে VP9-এর জন্য একটি পছন্দ উল্লেখ করা হয়, VP8 একটি ফলব্যাক হিসাবে। যদি উত্তরটি নিশ্চিত করে যে কলকারী VP9 পরিচালনা করতে পারে, তাহলে ভিডিও কলটি VP9 ব্যবহার করে এগিয়ে যেতে পারে। যদি কলকারী একটি উত্তর দিয়ে উত্তর দেয় যে এটি শুধুমাত্র VP8 ব্যবহার করতে পারে, তাহলে কলটি VP8 দিয়ে এগিয়ে যাবে।

এটি কার্যকরভাবে দেখতে, ক্যানোনিকাল WebRTC ভিডিও চ্যাট অ্যাপ্লিকেশন appr.tc এর কোডটি দেখুন।

appcontroller.js- এ, VP9 পছন্দের কোডেক হিসাবে সেট করা হয় যদি না URL-এ একটি vsc বা vrc প্যারামিটার নির্দিষ্ট করা থাকে:

AppController.prototype.loadUrlParams_ = function() {
    // ...
    var DEFAULT_VIDEO_CODEC = 'VP9';
    // …
    this.loadingParams_.videoSendCodec = urlParams['vsc'];
    // ...
    this.loadingParams_.videoRecvCodec = urlParams['vrc'] || DEFAULT_VIDEO_CODEC;
}

sdputils.js- এ কাস্টম কোডেক মান (যদি নির্দিষ্ট করা থাকে) তারপর SDP মেটাডেটার জন্য ব্যবহার করা হয়:

function maybePreferVideoSendCodec(sdp, params) {
    return maybePreferCodec(sdp, 'video', 'send', params.videoSendCodec);
}

function maybePreferVideoReceiveCodec(sdp, params) {
    return maybePreferCodec(sdp, 'video', 'receive', params.videoRecvCodec);
}

এখানে ব্যবহৃত হয়তপ্রেফারকোডেক() ফাংশনটি এসডিপি মেটাডেটার পাঠ্যে অনুরোধ করা কোডেকটির মান সেট করে। SDP ভার্বোস এবং মানুষের পঠনযোগ্য হওয়ার জন্য ডিজাইন করা হয়নি, তবে আপনি একবার কল করার পরে DevTools কনসোল থেকে appr.tc- এর ব্যবহৃত SDP দেখতে পারেন। কোডেক সংক্রান্ত গুরুত্বপূর্ণ অংশ হল m লাইন :

{
    "sdp": "v=0\r\no=- 9188830394109743399 2 IN IP4 127.0.0.1\r\ns … m=video ...",
    "type": "offer"
}

Chrome এর সাম্প্রতিক সংস্করণে এর ডিফল্ট সেটিংস সহ appr.tc ব্যবহার করে, আপনি দেখতে পাবেন যে VP9 হল SDP m লাইনে তালিকাভুক্ত প্রথম কোডেক — এরপর VP8, যা Chromeও ব্যবহার করতে পারে৷ আপনি যদি VP8 কে পছন্দের কোডেক হিসাবে সেট করেন (উদাহরণস্বরূপ, appr.tc এ URL প্যারামিটারের মাধ্যমে) VP8 এর পরিবর্তে প্রথমে তালিকাভুক্ত করা হবে।

আরও খোঁজ