Update media di Chrome 62

François Beaufort
François Beaufort

Lisensi persisten untuk Android

Lisensi persisten di Encrypted Media Extensions (EME) berarti lisensi dapat dipertahankan di perangkat sehingga aplikasi dapat memuat lisensi ke memori tanpa mengirim permintaan lisensi lain ke server. Ini adalah cara pemutaran offline didukung di EME.

Hingga saat ini, ChromeOS adalah satu-satunya platform yang mendukung lisensi persisten. Hal ini tidak berlaku lagi. Memutar konten yang dilindungi melalui EME saat perangkat offline kini juga dapat dilakukan di Android.

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

Anda dapat mencoba lisensi persisten sendiri dengan melihat Contoh PWA Media dan mengikuti langkah-langkah berikut:

  1. Buka https://biograf-155113.appspot.com/ttt/episode-2/
  2. Klik "Sediakan saat offline" dan tunggu hingga video didownload.
  3. Aktifkan mode pesawat.
  4. Klik tombol "Putar" dan nikmati videonya.

Widevine L1 untuk Android

Seperti yang mungkin sudah Anda ketahui, semua perangkat Android diwajibkan untuk mendukung Widevine Security Level 3 (Widevine L3). Namun, ada banyak perangkat di luar sana yang juga mendukung tingkat keamanan tertinggi: Widevine Security Level 1 tempat semua pemrosesan konten, kriptografi, dan kontrol dilakukan dalam Trusted Execution Environment (TEE).

Kabar baik! Widevine L1 kini didukung di Chrome untuk Android sehingga media dapat diputar dengan cara yang paling aman. Perhatikan bahwa fitur ini sudah didukung di 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, library JavaScript untuk format media adaptif (seperti DASH dan HLS) memiliki demo untuk Anda mencoba Widevine L1:

  1. Buka https://shaka-player-demo.appspot.com/demo/, lalu klik "Izinkan" saat diminta.
  2. Pilih "Angel One (multicodec, multilingual, Widevine)".
  3. Masukkan HW_SECURE_ALL di kolom "Video Robustness" pada bagian "Configuration".
  4. Klik tombol "Muat" dan nikmati videonya.

Pengoptimalan trek video latar belakang (khusus MSE)

Tim Chrome selalu berusaha menemukan cara baru untuk meningkatkan masa pakai baterai dan Chrome 62 tidak terkecuali.

Chrome kini menonaktifkan trek video saat video diputar di latar belakang (misalnya, di tab yang tidak terlihat) jika video menggunakan Media Source Extensions (MSE). Lihat artikel sebelumnya untuk mempelajari lebih lanjut.

Menyesuaikan rentang yang dapat dicari di streaming MSE live

Seperti yang mungkin sudah Anda ketahui, atribut seekable berisi rentang resource media yang dapat dicari browser. Biasanya, ini berisi satu rentang waktu yang dimulai dari 0 dan berakhir pada durasi resource media. Namun, jika durasi tidak tersedia, seperti live stream, rentang waktu dapat terus berubah.

Kabar baiknya adalah Anda kini dapat menyesuaikan logika rentang seekable dengan Media Source Extensions (MSE) secara lebih efektif dengan menyediakan atau menghapus satu rentang yang dapat dicari yang digabungkan dengan rentang buffering saat ini. Hal ini menghasilkan satu rentang yang dapat dicari yang sesuai dengan keduanya, jika durasi sumber media adalah +Infinity.

Dalam kode di bawah, sumber media telah dilampirkan ke elemen media dan hanya berisi segmen init-nya:

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

Ada banyak kasus yang tidak saya bahas di atas, jadi sebaiknya Anda mencoba contoh resmi untuk melihat bagaimana rentang waktu yang di-buffer dan dapat dicari bereaksi terhadap berbagai peristiwa MSE.

Intent to Ship | Chromestatus Tracker | Chromium Bug

FLAC dalam MP4 untuk MSE

Format coding audio lossless FLAC telah didukung dalam pemutaran media reguler sejak Chrome 56. Dukungan FLAC dalam ISO-BMFF (alias FLAC dalam MP4) ditambahkan segera setelahnya. Sekarang, FLAC dalam MP4 tersedia di Chrome 62 untuk Ekstensi Media Source (MSE).

Sebagai informasi, orang-orang Firefox adalah orang yang mengembangkan dan menerapkan dukungan untuk spesifikasi enkapsulasi FLAC dalam MP4, dan BBC telah bereksperimen dengan menggunakannya dengan MSE. Anda dapat membaca postingan "Delivering Radio 3 Concert Sound" dari BBC untuk mempelajari lebih lanjut.

Berikut cara mendeteksi apakah FLAC dalam MP4 didukung untuk MSE:

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

Jika Anda ingin melihat contoh lengkap, lihat contoh resmi kami.

Intent to Ship | Chromestatus Tracker | Chromium Bug

Video otomatis beralih ke layar penuh saat perangkat diputar

Jika Anda memutar perangkat ke lanskap saat video diputar di area pandang, pemutaran akan otomatis beralih ke mode layar penuh. Memutar perangkat ke mode potret akan mengembalikan video ke mode jendela. Lihat artikel sebelumnya untuk mengetahui detail selengkapnya.