Chrome 62 में मीडिया अपडेट

फ्रांकोइस ब्यूफ़ोर्ट
फ्रांकोइस ब्यूफ़ोर्ट

Android के लिए स्थायी लाइसेंस

एन्क्रिप्टेड मीडिया एक्सटेंशन (ईएमई) में स्थायी लाइसेंस का मतलब है कि लाइसेंस को डिवाइस पर बनाए रखा जा सकता है, ताकि ऐप्लिकेशन सर्वर को दूसरा लाइसेंस अनुरोध भेजे बिना, लाइसेंस को मेमोरी में लोड कर सकें. ईएमई में इस तरह ऑफ़लाइन वीडियो चलाने की सुविधा काम करती है.

अब तक, ChromeOS ही एक ऐसा प्लैटफ़ॉर्म था जिस पर स्थायी लाइसेंस काम करते थे. अब ऐसा नहीं है. डिवाइस के ऑफ़लाइन होने पर भी अब Android पर भी सुरक्षित कॉन्टेंट को EME के ज़रिए चलाया जा सकता है.

const config = [{
  sessionTypes: ['persistent-license'],
  videoCapabilities: [{
    contentType: 'video/webm; codecs="vp09.00.10.08"',
    robustness: 'SW_SECURE_DECODE' // Widevine L3
  }]
}];

// Chrome will prompt user if website is allowed to uniquely identify
// user's device to play protected content.
navigator.requestMediaKeySystemAccess('com.widevine.alpha', config)
.then(access => {
  // User will be able to watch encrypted content while being offline when
  // license is stored locally on device and loaded later.
})
.catch(error => {
  // Persistent licenses are not supported on this platform yet.
});

स्थायी लाइसेंस को आज़माने के लिए, सैंपल मीडिया के PWA को देखें और यह तरीका अपनाएं:

  1. https://biograf-155113.appspot.com/ttt/episode-2/ पर जाएं
  2. "ऑफ़लाइन उपलब्ध कराएं" पर क्लिक करें और वीडियो डाउनलोड होने का इंतज़ार करें.
  3. हवाई जहाज़ मोड चालू करें.
  4. "चलाएं" बटन पर क्लिक करें और वीडियो का आनंद लें!

Android के लिए Widevine L1

जैसा कि आपको पहले से पता होगा, सभी Android डिवाइसों में Widevine सुरक्षा लेवल 3 (Widevine L3) काम करना ज़रूरी है. हालांकि, ऐसे कई डिवाइस उपलब्ध हैं जो सबसे बेहतर सुरक्षा लेवल पर काम करते हैं: Widevine सिक्योरिटी लेवल 1, जहां सारे कॉन्टेंट प्रोसेसिंग, क्रिप्टोग्राफ़ी, और कंट्रोल का काम ट्रस्टेड एक्ज़ीक्यूशन एनवायरमेंट (टीईई) में किया जाता है.

खुशखबरी! Widevine L1 अब Android के लिए Chrome में काम करता है, ताकि मीडिया को सबसे सुरक्षित तरीके से चलाया जा सके. ध्यान दें कि यह Chrome OS पर पहले से काम करता था.

const config = [{
  videoCapabilities: [{
    contentType: 'video/webm; codecs="vp09.00.10.08"',
    robustness: 'HW_SECURE_ALL' // Widevine L1
  }]
}];

// Chrome will prompt user if website is allowed to uniquely identify
// user's device to play protected content.
navigator.requestMediaKeySystemAccess('com.widevine.alpha', config)
.then(access => {
  // User will be able to watch encrypted content in the most secure way.
})
.catch(error => {
  // Widevine L1 is not supported on this platform yet.
});

अडैप्टिव मीडिया फ़ॉर्मैट (जैसे कि DASH और HLS) की JavaScript लाइब्रेरी, Shaka Player में एक डेमो दिया गया है. इसमें Widevine L1 को आज़माया जा सकता है:

  1. https://shaka-player-demo.appspot.com/demo/ पर जाएं और संकेत मिलने पर "अनुमति दें" पर क्लिक करें.
  2. "एंजल वन (मल्टीकोड, कई भाषाओं में, वाइडवाइन)" को चुनें.
  3. "कॉन्फ़िगरेशन" सेक्शन के "वीडियो की परफ़ॉर्मेंस" फ़ील्ड में HW_SECURE_ALL डालें.
  4. "लोड करें" बटन पर क्लिक करके वीडियो का आनंद लें!

बैकग्राउंड में वीडियो ट्रैक को ऑप्टिमाइज़ करने की सुविधा (सिर्फ़ MSE)

Chrome की टीम हमेशा बैटरी लाइफ़ बढ़ाने के लिए नए तरीके ढूंढने की कोशिश करती रहती है. हालांकि, Chrome 62 पर भी यह काम किया जा रहा है.

अगर वीडियो में मीडिया सोर्स एक्सटेंशन (MSE) का इस्तेमाल किया जाता है, तो Chrome अब वीडियो को बैकग्राउंड में चलाने पर (जैसे, न दिखने वाले टैब में) वीडियो ट्रैक बंद कर देता है. ज़्यादा जानने के लिए, हमारा पिछला लेख देखें.

लाइव MSE स्ट्रीम के लिए, लाइव स्ट्रीमिंग की सीमा को अपने हिसाब से सेट करें

जैसा कि आपको पहले से पता होगा, seekable एट्रिब्यूट में मीडिया संसाधन की रेंज होती हैं जिन्हें ब्राउज़र खोज सकता है. आम तौर पर, इसमें एक समयसीमा होती है जो 0 से शुरू होती है और मीडिया रिसॉर्स अवधि पर खत्म होती है. अगर अवधि उपलब्ध नहीं है, जैसे कि लाइव स्ट्रीम, तो समयसीमा लगातार बदल सकती है.

अच्छी खबर यह है कि अब मीडिया सोर्स एक्सटेंशन (MSE) की मदद से seekable रेंज लॉजिक को बेहतर तरीके से कस्टमाइज़ किया जा सकता है. ऐसा करने के लिए, ऐसी सिंगल रेंज को दें या हटाएं जो बफ़र की मौजूदा रेंज से जुड़ी है. इसका नतीजा ऐसी एक ही रेंज में होता है जिसे खोजा जा सकता है. यह रेंज दोनों के लिए सही होती है, जबकि मीडिया सोर्स की अवधि +Infinity होती है.

नीचे दिए गए कोड में, मीडिया सोर्स को पहले ही किसी मीडिया एलिमेंट से अटैच कर दिया गया है. साथ ही, उसमें सिर्फ़ उसका init सेगमेंट मौजूद है:

const mediaSource = new MediaSource();
...

mediaSource.duration = +Infinity;
// Seekable time ranges: { }
// Buffered time ranges: { }

mediaSource.setLiveSeekableRange(1 /* start */, 4 /* end */);
// Seekable time ranges: { [1.000, 4.000) }
// Buffered time ranges: { }

// Let's append a media segment that starts at 3 seconds and ends at 6.
mediaSource.sourceBuffers[0].appendBuffer(someData);
// Seekable time ranges: { [1.000, 6.000) }
// Buffered time ranges: { [3.000, 6.000) }

mediaSource.clearLiveSeekableRange();
// Seekable time ranges: { [0.000, 6.000) }
// Buffered time ranges: { [3.000, 6.000) }

ऐसे कई मामले हैं जिन्हें मैंने ऊपर नहीं बताया है, इसलिए मेरा सुझाव है कि आप आधिकारिक सैंपल को आज़माएं, ताकि आप यह देख सकें कि अलग-अलग MSE इवेंट के लिए, बफ़रिंग और ढूंढने लायक समय सीमाएं किस तरह काम करती हैं.

शिप करने की इच्छा | Chromestatus Tracker | Chromium बग

MSE के लिए MP4 में FLAC

लॉसलेस ऑडियो कोडिंग फ़ॉर्मैट FLAC, Chrome 56 के बाद से सामान्य मीडिया प्लेबैक में काम करता है. ISO-BMFF सहायता में FLAC को कुछ समय बाद जोड़ दिया गया. इसे MP4 में FLAC भी कहा जाता है. अब मीडिया सोर्स एक्सटेंशन (MSE) के लिए Chrome 62 में MP4 में FLAC उपलब्ध है.

जानकारी के लिए बता दें कि Firefox में ये ऐसे लोग हैं जिन्होंने MP4 एनकैप्सुलेशन स्पेसिफ़िकेशन में FLAC के लिए सहायता डेवलप की है और उसे लागू किया है. BBC, इसका इस्तेमाल करके MSE को आज़मा रहा है. ज़्यादा जानने के लिए, BBC की "Deliverying Radio 3 टेंपरेचर साउंड" पोस्ट पढ़ें.

यहां बताया गया है कि आप कैसे पता लगा सकते हैं कि MP4 में FLAC, MSE के लिए काम करता है या नहीं:

if (MediaSource.isTypeSupported('audio/mp4; codecs="flac"')) {
  // TODO: Fetch data and feed it to a media source.
}

अगर आपको पूरा उदाहरण देखना है, तो हमारा आधिकारिक सैंपल देखें.

शिप करने की इच्छा | Chromestatus Tracker | Chromium बग

डिवाइस को घुमाने पर, अपने-आप वीडियो दिखने की सुविधा फ़ुल स्क्रीन पर चली जाती है

व्यूपोर्ट में वीडियो चलने के दौरान, अगर आप किसी डिवाइस को लैंडस्केप मोड में घुमाते हैं, तो वीडियो चलाने की सुविधा अपने-आप फ़ुलस्क्रीन मोड में बदल जाएगी. डिवाइस को पोर्ट्रेट मोड में घुमाने पर, वीडियो वापस विंडो मोड में चला जाता है. ज़्यादा जानकारी के लिए, हमारा पिछला लेख देखें.