VP9 अब WebRTC में उपलब्ध है

दो साल पहले Chrome ने VP9 कोडेक के लिए सहायता चालू की है. डेस्कटॉप और Android पर Chrome 48 से, WebRTC का इस्तेमाल करके वीडियो कॉल करने के लिए VP9 एक वैकल्पिक वीडियो कोडेक होगा.

हालांकि, VP9 ठीक उसी तरह के बेसिक ब्लूप्रिंट का इस्तेमाल करता है जिसका इस्तेमाल पुराने कोडेक है, लेकिन WebM टीम ने वीडियो के हर बाइट से ज़्यादा क्वालिटी पाने के लिए, VP9 में कुछ सुधार किए हैं. उदाहरण के लिए, एन्कोडर सबसे साफ़ इमेज फ़ीचर को प्राथमिकता देता है और अब कोडेक, एसिमेट्रिक ट्रांसफ़ॉर्म का इस्तेमाल करता है, ताकि सबसे मुश्किल सीन को भी आसान और ब्लॉक न किया जा सके.

VP9 फ़ॉर्मैट की मदद से, जो इंटरनेट कनेक्शन फ़िलहाल 720 पिक्सल में बिना पैकेट लॉस या देरी के 720 पिक्सल स्ट्रीम कर सकते हैं वे उसी बैंडविड्थ पर 1080p वीडियो कॉल की सुविधा दे पाएंगे. VP9, खराब कनेक्शन या महंगे डेटा प्लान का इस्तेमाल करने वाले उपयोगकर्ताओं के लिए, डेटा खर्च को कम कर सकता है. हालांकि, ज़्यादातर मामलों में VP8 के बिटरेट का सिर्फ़ 40% हिस्सा ज़रूरी होता है.

नीचे दिए गए स्क्रीनशॉट में, नीचे दिए गए स्क्रीनशॉट में यह देखा जा सकता है कि VP8 कॉल की तुलना, VP9 से कैसे की जाती है. यह रिकॉर्डिंग, WebRTC की एन्कोडर सेटिंग की मदद से बनाई गई है और इससे बिटरेट की 30% बचत हो रही है:

वीडियो का स्क्रीनशॉट, जिसमें VP8 और VP9 WebRTC कॉल को साथ-साथ दिखाया गया है

WebRTC कॉल के कोडेक के लिए, बिटरेट जैसी अन्य मीडिया सेटिंग के साथ-साथ, कॉल करने वाले (कॉलर) और कॉली (कॉली) के बीच, सेशन डिस्क्रिप्शन प्रोटोकॉल (एसडीपी) के मेटाडेटा मैसेज की अदला-बदली की जाती है. यह सेशन, क्लाइंट की मीडिया क्षमताओं के बारे में बताता है.

मीडिया से जुड़ी सुविधाओं की अदला-बदली करने की इस प्रोसेस को ऑफ़र/जवाब कहा जाता है. उदाहरण के लिए, कोई कॉलर ऐसा ऑफ़र (एसडीपी मैसेज) भेज सकता है जिसमें VP9 को प्राथमिकता दी जाती है और VP8 को फ़ॉलबैक के तौर पर भेजा जाता है. अगर जवाब से यह पुष्टि होती है कि कॉल करने वाला व्यक्ति, VP9 को हैंडल कर सकता है, तो वीडियो कॉल को VP9 का इस्तेमाल करके आगे बढ़ाया जा सकता है. अगर कॉल करने वाला व्यक्ति जवाब देता है कि वह सिर्फ़ VP8 का इस्तेमाल कर सकता है, तो कॉल VP8 के साथ चलेगा.

इसे इस्तेमाल करने के लिए, कैननिकल WebRTC वीडियो चैट ऐप्लिकेशन appr.tc के कोड पर एक नज़र डालें.

appcontroller.js में, VP9 को पसंदीदा कोडेक के तौर पर सेट किया जाता है. ऐसा तब तक होता है, जब तक यूआरएल में 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 में कस्टम कोडेक वैल्यू (अगर बताया गया है) का इस्तेमाल इसके बाद एसडीपी मेटाडेटा के लिए किया जाता है:

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

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

यहां इस्तेमाल किया गया maybePreferCodec() फ़ंक्शन, अनुरोध किए गए कोडेक के लिए वैल्यू को एसडीपी मेटाडेटा के टेक्स्ट में सेट करता है. एसडीपी शब्दों में बताया जाता है और इसे इस तरह से डिज़ाइन नहीं किया गया है कि लोग इसे आसानी से पढ़ सकें. हालांकि, कॉल करने के बाद, आप DevTools कंसोल से appr.tc में इस्तेमाल किया गया एसडीपी देख सकते हैं. कोडेक के लिए सबसे अहम हिस्सा m लाइन है:

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

Chrome के नए वर्शन में, डिफ़ॉल्ट सेटिंग के साथ appr.tc का इस्तेमाल करने पर, आपको दिखेगा कि VP9, एसडीपी m लाइन में लिस्ट किया गया पहला कोडेक है. इसके बाद, VP8 है, जिसका इस्तेमाल Chrome भी कर सकता है. अगर आपने VP8 को पसंदीदा कोडेक के तौर पर सेट किया है (उदाहरण के लिए, appr.tc में यूआरएल पैरामीटर के ज़रिए) तो VP8 को पहले दिखाया जाएगा.

ज़्यादा जानें

  • WebM प्रोजेक्ट: VP9 संसाधन
  • webrtc.org: WebRTC प्रोजेक्ट का होम
  • g.co/webrtc: अन्य WebRTC संसाधनों के लिंक
  • webrtc.github.io/samples: WebRTC के सैंपल लाइव
  • test.webrtc.org: ओपन सोर्स डिवाइस और नेटवर्क टेस्टिंग टूल और गड़बड़ी की रिपोर्टिंग वाला फ़्रेमवर्क