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

François Beaufort
François Beaufort

AV1 वीडियो डिकोडर

Chromestatus ट्रैकर | Chromium बग

EME: एन्क्रिप्शन स्कीम के साथ काम करने की सुविधा के लिए क्वेरी करना

कुछ प्लैटफ़ॉर्म या मुख्य सिस्टम सिर्फ़ सीईएनसी मोड के साथ काम करते हैं, जबकि दूसरे प्लैटफ़ॉर्म या कुंजी सिस्टम सिर्फ़ सीईएनसी मोड के साथ काम करते हैं सीबीसीएस मोड. फिर भी दूसरे लोग दोनों का समर्थन कर सकते हैं. एन्क्रिप्ट (सुरक्षित) करने के ये दो तरीके हैं काम नहीं करती हैं, इसलिए वेब डेवलपर को समझदारी से फ़ैसले लेने किस तरह का कॉन्टेंट दिखाया जाए.

इससे बचने के लिए, आपको यह तय करने की ज़रूरत नहीं पड़ती कि उपयोगकर्ता किस प्लैटफ़ॉर्म पर "जाना-पहचाना" है. एन्क्रिप्ट (सुरक्षित) करने की स्कीम के लिए सहायता, नई encryptionScheme कुंजी को जोड़ा गया MediaKeySystemMediaCapability शब्दकोश, ताकि वेबसाइट को अलग-अलग जानकारी देने की अनुमति मिल सके एन्क्रिप्ट किए गए मीडिया एक्सटेंशन (ईएमई) में, एन्क्रिप्ट (सुरक्षित) करने की किस स्कीम का इस्तेमाल किया जा सकता है.

नई encryptionScheme कुंजी, इन दो वैल्यू में से एक हो सकती है:

  • 'cenc' AES-CTR मोड का पूरा सैंपल और वीडियो NAL सबसैंपल एन्क्रिप्शन.
  • 'cbcs' AES-CBC मोड में आंशिक वीडियो NAL पैटर्न एन्क्रिप्ट (सुरक्षित) करने की सुविधा.

अगर इसके बारे में नहीं बताया गया है, तो इससे पता चलता है कि एन्क्रिप्ट (सुरक्षित) करने की कोई भी स्कीम इस्तेमाल की जा सकती है. नोट जोड़ें जिसके साथ Clear Key हमेशा 'cenc' स्कीम के साथ काम करती है.

नीचे दिए गए उदाहरण में, दो कॉन्फ़िगरेशन के लिए अलग-अलग क्वेरी का इस्तेमाल करने का तरीका बताया गया है एन्क्रिप्शन स्कीम. इस मामले में, सिर्फ़ एक को चुना जाएगा.

await navigator.requestMediaKeySystemAccess('org.w3.clearkey', [
    {
      label: 'configuration using the "cenc" encryption scheme',
      videoCapabilities: [{
        contentType: 'video/mp4; codecs="avc1.640028"',
        encryptionScheme: 'cenc'
      }],
      audioCapabilities: [{
        contentType: 'audio/mp4; codecs="mp4a.40.2"',
        encryptionScheme: 'cenc'
      }],
      initDataTypes: ['keyids']
    },
    {
      label: 'configuration using the "cbcs" encryption scheme',
      videoCapabilities: [{
        contentType: 'video/mp4; codecs="avc1.640028"',
        encryptionScheme: 'cbcs'
      }],
      audioCapabilities: [{
        contentType: 'audio/mp4; codecs="mp4a.40.2"',
        encryptionScheme: 'cbcs'
      }],
      initDataTypes: ['keyids']
    },
  ]);

नीचे दिए गए उदाहरण में, दो अलग-अलग एन्क्रिप्शन वाला सिर्फ़ एक कॉन्फ़िगरेशन स्कीम के लिए क्वेरी की गई है. ऐसी स्थिति में, Chrome सभी खूबियों वाले ऑब्जेक्ट को खारिज कर देगा यह काम नहीं कर सकती. इसलिए, इकट्ठा किए गए कॉन्फ़िगरेशन में एक एन्क्रिप्शन लेयर हो सकता है स्कीम या दोनों का इस्तेमाल करना.

await navigator.requestMediaKeySystemAccess('org.w3.clearkey', [{
    videoCapabilities: [
      { // A video capability using the "cenc" encryption scheme
        contentType: 'video/mp4; codecs="avc1.640028"',
        encryptionScheme: 'cenc'
      },
      { // A video capability using the "cbcs" encryption scheme
        contentType: 'video/mp4; codecs="avc1.640028"',
        encryptionScheme: 'cbcs'
      },
    ],
    audioCapabilities: [
      { // An audio capability using the "cenc" encryption scheme
        contentType: 'audio/mp4; codecs="mp4a.40.2"',
        encryptionScheme: 'cenc'
      },
      { // An audio capability using the "cbcs" encryption scheme
        contentType: 'audio/mp4; codecs="mp4a.40.2"',
        encryptionScheme: 'cbcs'
      },
    ],
    initDataTypes: ['keyids']
  }]);

लागू करने का इरादा | Chromestatus ट्रैकर | Chromium बग

EME: एचडीसीपी नीति की जांच

हाई रिज़ॉल्यूशन में वीडियो स्ट्रीम करने के लिए, अब HDCP नीति से जुड़ी एक सामान्य शर्त है. सुरक्षित कॉन्टेंट का ऐक्सेस होना चाहिए. इसके अलावा, ऐसे वेब डेवलपर जो HDCP वाली नीति लागू करना चाहते हैं को या तो लाइसेंस एक्सचेंज के पूरा होने या स्ट्रीमिंग शुरू होने का इंतज़ार करना होगा कम रिज़ॉल्यूशन में कॉन्टेंट को प्रोसेस करना. यह दुख की बात है कि एचडीसीपी नीति Check API का मकसद हल करना है.

इस प्रस्तावित एपीआई की मदद से वेब डेवलपर यह क्वेरी कर सकते हैं कि क्या कोई खास HDCP नीति को लागू किया जा सके, ताकि प्लेबैक को उपयोगकर्ताओं को बेहतरीन अनुभव मिले. इसमें इसकी स्थिति के बारे में क्वेरी करने का एक आसान तरीका शामिल है एक काल्पनिक कुंजी है जो HDCP नीति से जुड़ी होती है. साथ ही, उस कुंजी को बनाने की ज़रूरत नहीं होती MediaKeySession या असली लाइसेंस फ़ेच करें. MediaKeys के लिए यह ज़रूरी नहीं है कि ऑडियो या वीडियो एलिमेंट से भी जोड़ा जा सकता है.

HDCP Policy Check API सिर्फ़ कॉल करके काम करता है mediaKeys.getStatusForPolicy() में ऐसे ऑब्जेक्ट है जिसमें minHdcpVersion कुंजी है और एक मान्य मान होना चाहिए. यदि HDCP बताए गए वर्शन में उपलब्ध है, तो प्रॉमिस 'usable' के MediaKeyStatus के साथ पूरा हो जाएगा. अगर ऐसा नहीं होता है, तो वादा MediaKeyStatus की अन्य गड़बड़ी वैल्यू के साथ ठीक करता है, जैसे कि 'output-restricted' या 'output-downscaled'. अगर कुंजी सिस्टम एचडीसीपी नीति जांच (जैसे कि क्लियर की सिस्टम) के साथ काम करेगा, लेकिन प्रॉमिस अस्वीकार कर दिया जाएगा.

कम शब्दों में यहां बताया गया है कि फ़िलहाल एपीआई कैसे काम करता है. आधिकारिक सैंपल देखें के सभी वर्शन आज़मा सकते हैं.

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

navigator.requestMediaKeySystemAccess('com.widevine.alpha', config)
.then(mediaKeySystemAccess => mediaKeySystemAccess.createMediaKeys())
.then(mediaKeys => {

  // Get status for HDCP 2.2
  return mediaKeys.getStatusForPolicy({ minHdcpVersion: '2.2' })
  .then(status => {
    if (status !== 'usable')
      return Promise.reject(status);

    console.log('HDCP 2.2 can be enforced.');
    // TODO: Fetch high resolution protected content...
  });
})
.catch(error => {
  // TODO: Fallback to fetch license or stream low-resolution content...
});

ऑरिजिन ट्रायल के लिए उपलब्ध है

वेब डेवलपर से सुझाव पाने के लिए, हमने HDCP नीति जोड़ी है डेस्कटॉप (ChromeOS, Linux, Mac, और Windows) के लिए, Chrome 69 में एपीआई की सुविधा देखें.

नवंबर 2018 में ट्रायल खत्म हो गया.

प्रयोग करने की इच्छा | Chromestatus ट्रैकर | Chromium बग

MSE PTS/DTS का अनुपालन

बफ़र की गई रेंज और अवधि की वैल्यू, अब प्रज़ेंटेशन के समय के स्टैंप के ज़रिए रिपोर्ट की जाती हैं मीडिया में डीकोड टाइम स्टैंप (डीटीएस) के बजाय, (पीटीएस) इंटरवल सोर्स एक्सटेंशन (MSE).

जब MSE नया था, तब WebM और MP3 के हिसाब से Chrome के लागू करने की प्रोसेस की जांच की गई थी. मीडिया स्ट्रीम के ऐसे फ़ॉर्मैट जिनमें PTS और DTS के बीच कोई अंतर नहीं था. और जब तक ISO BMFF (यानी MP4) को नहीं जोड़ा गया, तब तक यह ठीक से काम कर रहा था. यह कंटेनर इसमें अक्सर ऐसे प्रज़ेंटेशन दिखते हैं जो क्रम से नहीं दिखते हैं बनाम टाइम स्ट्रीम को डिकोड करता है ( उदाहरण के लिए, H.264 जैसे कोडेक) की वजह से डीटीएस और पीटीएस में अंतर हो सकता है. इसकी वजह से अलग-अलग बफ़र की गई सीमाओं और अवधि की रिपोर्ट करने के लिए Chrome (आम तौर पर सिर्फ़ थोड़ी सी) उम्मीद से ज़्यादा वैल्यू. यह नई सुविधा Chrome 69 में धीरे-धीरे रोल आउट होगी और इसके MSE लागू करने की प्रक्रिया को MSE स्पेसिफ़िकेशन के मुताबिक बनाएं.

PTS/DTS
PTS/DTS

यह बदलाव MediaSource.duration को प्रभावित करता है (और इसके कारण HTMLMediaElement.duration), SourceBuffer.buffered (और इसकी वजह से HTMLMediaElement.buffered) और SourceBuffer.remove(start, end).

अगर आपको पक्के तौर पर नहीं पता कि बफ़र की गई रेंज और अवधि की रिपोर्ट करने के लिए, कौनसा तरीका इस्तेमाल किया जाता है मान, आप आंतरिक chrome://media-internals पेज पर जाकर "ChunkDemuxer: पीटीएस से बफ़र हो रहा है" या "ChunkDemuxer: डीटीएस से बफ़र हो रहा है" में लॉग.

लागू करने का इरादा | Chromium बग

Android Go पर मीडिया व्यू इंटेंट मैनेज करना

Android Go, Android का एक लाइटवेट वर्शन है, जिसे किसी भी व्यक्ति के लिए डिज़ाइन किया गया है है. इसके लिए, ज़रूरी नहीं है कि इसे कुछ मीडिया के साथ शेयर किया जाए इसलिए, अगर कोई उपयोगकर्ता डाउनलोड किए गए वीडियो को खोलने की कोशिश करता है, तो उस इंटेंट को हैंडल करने के लिए कोई ऐप्लिकेशन नहीं होगा.

इसे ठीक करने के लिए, Android Go पर Chrome 69 अब मीडिया देखने के इंटेंट को सुनता है, उपयोगकर्ता डाउनलोड किए गए ऑडियो, वीडियो, और इमेज देख सकते हैं. दूसरे शब्दों में, यह ज़रूरी है कि दिखाई न देने वाले आवेदनों की जगह.

ALT_TEXT_HERE
मीडिया इंटेंट हैंडलर

ध्यान दें कि Chrome की यह सुविधा Android पर चलने वाले सभी Android डिवाइसों पर चालू है O और उसके बाद के वर्शन में 1 जीबी या इससे कम रैम.

Chromium बग

"बंद हो गया" को हटाया गया MSE का इस्तेमाल करने वाले मीडिया एलिमेंट के इवेंट

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

ऐसा हो सकता है कि वेबसाइटें कम फ़्रीक्वेंसी पर डेटा के बड़े हिस्से जोड़ने का फ़ैसला लें, इसलिए बफ़रिंग की परफ़ॉर्मेंस के बारे में सही सिग्नल नहीं है. "बंद हो गया" निकाला जा रहा है के लिए इवेंट MSE का इस्तेमाल करने वाले मीडिया एलिमेंट, भ्रम की स्थिति को दूर करते हैं और Chrome को बेहतर बनाते हैं के लिए उपलब्ध हैं. ध्यान दें कि MSE का इस्तेमाल नहीं करने वाले मीडिया एलिमेंट "बंद हो गया" को बढ़ाना जारी रखें में कर सकती हैं.

का इस्तेमाल बंद करने और उसे हटाने का इरादा | Chromestatus ट्रैकर | Chromium बग