Chrome 69'daki medya güncellemeleri

François Beaufort
François Beaufort

AV1 video kod çözücü

Chromestatus İzleyici | Chromium Hatası

EME: Şifreleme şeması desteğini sorgulama

Bazı platformlar veya anahtar sistemler yalnızca CENC modunu desteklerken bazıları yalnızca CBCS modunu destekler. Yine de diğerleri her ikisini de destekleyebilir. Bu iki şifreleme şeması uyumsuzdur. Bu nedenle, web geliştiricilerinin hangi içeriğin yayınlanacağı konusunda akıllı seçimler yapabilmesi gerekir.

"Bilinen" şifreleme şeması desteğini kontrol etmek için hangi platformda olduklarını belirlemek zorunda kalmamak amacıyla web sitelerinin Şifrelenmiş Medya Uzantılarında (EME) hangi şifreleme düzeninin kullanılabileceğini belirlemelerine olanak tanımak için MediaKeySystemMediaCapability sözlüğe yeni bir encryptionScheme anahtarı eklenir.

Yeni encryptionScheme anahtarı şu iki değerden biri olabilir:

  • 'cenc' AES-TO modu tam örnek ve video NAL alt örnek şifrelemesi.
  • 'cbcs' AES-CBC modu kısmi video NAL kalıbı şifrelemesi.

Belirtilmezse tüm şifreleme şemalarının kabul edilebilir olduğunu gösterir. Temizleme Anahtarı'nın her zaman 'cenc' şemasını desteklediğini unutmayın.

Aşağıdaki örnekte, farklı şifreleme şemalarına sahip iki yapılandırmanın nasıl sorgulanacağı gösterilmektedir. Bu durumda yalnızca bir tanesi seçilir.

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']
    },
  ]);

Aşağıdaki örnekte, iki farklı şifreleme düzenine sahip yalnızca bir yapılandırma sorgulanmıştır. Bu durumda, Chrome destekleyemeyeceği özellik nesnesini siler. Bu nedenle, toplanan yapılandırma bir şifreleme şeması veya her ikisini de içerebilir.

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']
  }]);

Uygulama Amacı | Chromestatus Tracker | Chromium Hatası

EME: HDCP politika kontrolü

HDCP, günümüzde korunan içeriklerin yüksek çözünürlüklü akışı için yaygın bir politika gereksinimidir. HDCP politikasını uygulamak isteyen web geliştiricilerinin ise lisans değişiminin tamamlanmasını beklemesi veya düşük çözünürlükte içerik akışını başlatması gerekir. Bu, HDCP Policy Check API'nin çözmeyi hedeflediği üzücü bir durumdur.

Önerilen bu API, oynatmanın en iyi kullanıcı deneyimi için optimum çözünürlükte başlatılabilmesi amacıyla web geliştiricilerinin belirli bir HDCP politikasının uygulanıp uygulanmayacağını sorgulamalarına olanak tanır. HDCP politikasıyla ilişkilendirilmiş varsayımsal bir anahtarın durumunu, MediaKeySession oluşturmaya veya gerçek bir lisans getirmeye gerek kalmadan sorgulamak için basit bir yöntemden oluşur. Herhangi bir ses veya video öğesine MediaKeys öğesinin eklenmesine de gerek yoktur.

HDCP Policy Check API'si sadece mediaKeys.getStatusForPolicy() öğesini, minHdcpVersion anahtarı ve geçerli bir değere sahip bir nesneyle çağırarak çalışır. Belirtilen sürümde HDCP kullanılabiliyorsa döndürülen söz, 'usable' değerindeki MediaKeyStatus ile çözümlenir. Aksi takdirde, söz konusu 'output-restricted' veya 'output-downscaled' gibi MediaKeyStatus diğer hata değerleri ile çözümlenir. Anahtar sistemi HDCP Politika Kontrolü'nü hiç desteklemiyorsa (ör. Anahtar Sistemini Temizle) sözü reddeder.

Özetle, şimdilik API'nin çalışma şekli şöyledir. Tüm HDCP sürümlerini denemek için resmi örneğe göz atın.

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

Kaynak denemelerinde kullanılabilir

Web geliştiricilerinden geri bildirim almak amacıyla, Masaüstü için Chrome 69'a (ChromeOS, Linux, Mac ve Windows) HDCP Politika Kontrolü API'sı özelliğini daha önce eklemiştik.

Deneme süresi Kasım 2018'de başarıyla sona erdi.

Deneme Amacı | Chromestatus İzleyici | Chromium Hatası

MSE PTS/DTS uygunluğu

Arabelleğe alınan aralıklar ve süre değerleri artık Medya Kaynağı Uzantılarında (MSE) Kod Çözme Zaman Damgası (DTS) aralıkları yerine Sunu Zaman Damgası (PTS) aralıklarına göre raporlanıyor.

MSE yeni olduğunda Chrome'un uygulaması, PTS ile DTS arasında farkın bulunmadığı bazı medya akışı biçimleri olan WebM ve MP3'e göre test edildi. ISO BMFF (diğer adıyla MP4) eklenene kadar sistem düzgün çalışıyordu. Bu container, sıklıkla sıra dışı sunum ve kod çözme zaman akışları içerdiğinden (örneğin, H.264 gibi codec'ler için) DTS ve PTS'nin farklı olmasına yol açar. Bu durum, Chrome'un beklenenden biraz farklı arabelleğe alınmış aralıklar ve süre değerleri raporlamasına neden oldu (genellikle biraz). Bu yeni davranış Chrome 69'da kademeli olarak kullanıma sunulacak ve MSE uygulamasını MSE spesifikasyonu ile uyumlu hale getirecektir.

PTS/DTS
PTS/DTS

Bu değişiklik MediaSource.duration (ve dolayısıyla HTMLMediaElement.duration), SourceBuffer.buffered (ve sonuç olarak HTMLMediaElement.buffered) ile SourceBuffer.remove(start, end)) alanlarını etkiler.

Arabelleğe alınan aralıkları ve süre değerlerini raporlamak için hangi yöntemin kullanıldığından emin değilseniz dahili chrome://media-internals sayfasına gidip günlüklerde "ChunkDemuxer: PTS tarafından arabelleğe alınıyor" veya "ChunkDemuxer: DTS tarafından arabelleğe alınıyor" ifadesini arayabilirsiniz.

Uygulama Amacı | Chromium Hatası

Android Go'da medya görüntüleme amaçlarını işleme

Android Go, Android'in giriş seviyesi akıllı telefonlar için tasarlanmış hafif bir sürümüdür. Bu açıdan, bazı medya görüntüleme uygulamalarıyla birlikte gönderilmesi gerekmez. Dolayısıyla, örneğin bir kullanıcı indirilen bir videoyu açmaya çalışırsa bu amacı gerçekleştirecek herhangi bir uygulaması olmaz.

Bu sorunu düzeltmek için Android Go'daki Chrome 69 artık medya görüntüleme amaçlarını dinliyor. Böylece kullanıcılar indirilen ses, video ve resimleri görüntüleyebilir. Başka bir deyişle, eksik görüntüleme uygulamalarının yerini alır.

ALT_TEXT_HERE
Medya amacı işleyici

Bu Chrome özelliğinin, Android O ve sonraki sürümleri çalıştıran ve en fazla 1 GB RAM'e sahip tüm Android cihazlarda etkinleştirildiğini unutmayın.

Chromium Hatası

MSE kullanan medya öğeleri için "durdurulmuş" etkinliklerin kaldırılması

Medya verileri indirme işlemi yaklaşık 3 saniye boyunca başarısız olursa medya öğesinde "durduruldu" etkinliği gösterilir. Medya Kaynağı Uzantıları (MSE) kullanıldığında, web uygulaması indirme işlemini yönetir ve medya öğesi ilerleme durumunu fark etmez. Bu durum, web sitesinin son 3 saniyede SourceBuffer.appendBuffer() içeren yeni medya veri parçaları eklemediği durumlarda Chrome'un uygun olmayan zamanlarda "durduruldu" etkinliklerini yükseltmesine neden oldu.

Web siteleri büyük veri parçalarını düşük sıklıkta eklemeye karar verebileceğinden bu durum, arabelleğe alma durumu hakkında yararlı bir sinyal değildir. MSE kullanarak medya öğeleri için "durdurulmuş" etkinliklerin kaldırılması, karışıklığı ortadan kaldırır ve Chrome'un MSE spesifikasyonuyla daha uyumlu olmasını sağlar. MSE kullanmayan medya öğelerinin, "durdurulmuş" etkinlikleri şu anda olduğu gibi yükseltmeye devam edeceğini unutmayın.

Kullanımdan Kaldırma ve Kaldırma Amacı | Chromestatus Tracker | Chromium Bug