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

François Beaufort
François Beaufort

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

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

अब तक, सिर्फ़ 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 Security Level 3 (Widevine L3) की सुविधा होनी चाहिए. हालांकि, ऐसे कई डिवाइस भी हैं जो सबसे बेहतर सुरक्षा लेवल के साथ काम करते हैं: Widevine सिक्योरिटी लेवल 1. इनमें कॉन्टेंट प्रोसेसिंग, क्रिप्टोग्राफ़ी, और कंट्रोल, ट्रस्टेड एक्ज़ीक्यूशन एनवायरमेंट (टीईई) में किया जाता है.

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

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.
});

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

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

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

Chrome की टीम हमेशा बैटरी लाइफ़ को बेहतर बनाने के नए तरीके ढूंढती रहती है. इसमें Chrome 62 भी कोई अपवाद नहीं है.

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

लाइव एमएसई स्ट्रीम पर, वीडियो पर आगे-पीछे जाने की सीमा को पसंद के मुताबिक बनाना

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

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

नीचे दिए गए कोड में, मीडिया सोर्स को पहले से ही किसी मीडिया एलिमेंट से अटैच किया जा चुका है और इसमें सिर्फ़ उसका शुरुआती सेगमेंट शामिल है:

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) }

ऐसे कई मामले हैं जिनके बारे में मैंने ऊपर नहीं बताया है. इसलिए, हमारा सुझाव है कि आप आधिकारिक सैंपल को आज़माएं.

शिप करने का इंटेंट | Chromestatus ट्रैकर | Chromium बग

MSE के लिए MP4 में FLAC

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

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

एमएसई के लिए, MP4 में FLAC का इस्तेमाल किया जा सकता है या नहीं, यह पता लगाने का तरीका यहां बताया गया है:

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

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

शिप करने की इच्छा | Chromestatus ट्रैकर | Chromium गड़बड़ी

डिवाइस को घुमाने पर, वीडियो अपने-आप फ़ुल स्क्रीन मोड में चलना

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