Медиа-обновления в Chrome 62

Франсуа Бофор
François Beaufort

Постоянные лицензии для Android

Постоянная лицензия в Encrypted Media Extensions (EME) означает, что лицензия может сохраняться на устройстве, чтобы приложения могли загружать лицензию в память без отправки еще одного запроса лицензии на сервер. Вот как в EME поддерживается автономное воспроизведение.

До сих пор ChromeOS была единственной платформой, поддерживающей постоянные лицензии. Это уже неправда. Воспроизведение защищенного контента через EME, когда устройство находится в автономном режиме, теперь возможно и на 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.
});

Вы можете попробовать постоянные лицензии самостоятельно, ознакомившись с образцом Media PWA и выполнив следующие действия:

  1. Перейдите на https://biograf-155113.appspot.com/ttt/episode-2/ .
  2. Нажмите «Сделать доступным офлайн» и дождитесь загрузки видео.
  3. Включите режим полета.
  4. Нажмите кнопку «Play» и наслаждайтесь видео!

Widevine L1 для Android

Как вы, возможно, уже знаете, все устройства Android должны поддерживать уровень безопасности Widevine 3 (Widevine L3). Однако существует множество устройств, которые также поддерживают самый высокий уровень безопасности: уровень безопасности Widevine 1 , где вся обработка контента, криптография и контроль выполняются в доверенной среде выполнения (TEE).

Хорошие новости! Widevine L1 теперь поддерживается в Chrome для Android, что позволяет воспроизводить мультимедиа наиболее безопасным способом. Обратите внимание, что он уже поддерживается в 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.
});

Shaka Player , библиотека JavaScript для адаптивных медиаформатов (таких как DASH и HLS), предлагает вам попробовать Widevine L1:

  1. Перейдите на https://shaka-player-demo.appspot.com/demo/ и нажмите «Разрешить» при появлении запроса.
  2. Выберите «Angel One (мультикодек, многоязычный, Widevine)».
  3. Введите HW_SECURE_ALL в поле «Надежность видео» раздела «Конфигурация».
  4. Нажмите кнопку «Загрузить» и наслаждайтесь видео!

Оптимизация фоновой видеодорожки (только MSE)

Команда Chrome всегда пытается найти новые способы увеличить время автономной работы, и Chrome 62 не является исключением.

Chrome теперь отключает видеодорожки, когда видео воспроизводится в фоновом режиме (например, на невидимой вкладке), если видео использует расширения источника мультимедиа (MSE) . Прочтите нашу предыдущую статью , чтобы узнать больше.

Настройте диапазон поиска в прямых трансляциях MSE

Как вы, возможно, уже знаете, атрибут seekable содержит диапазоны медиа-ресурсов, к которым может обращаться браузер. Обычно он содержит один временной диапазон, который начинается с 0 и заканчивается длительностью медиаресурса. Однако если продолжительность недоступна, например, при прямой трансляции, временной диапазон может постоянно меняться.

Хорошей новостью является то, что теперь вы можете более эффективно настраивать логику диапазона seekable с помощью Media Source Extensions (MSE), предоставляя или удаляя один диапазон поиска, который объединяется с текущими буферизованными диапазонами. В результате получается единый диапазон поиска, который подходит для обоих, когда продолжительность источника мультимедиа равна +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) }

Есть много случаев, которые я не рассмотрел выше, поэтому я бы посоветовал вам попробовать официальный образец , чтобы увидеть, как буферизованные и доступные для поиска временные диапазоны реагируют на различные события MSE.

Намерение отправить | Трекер Chromestatus | Ошибка хрома

FLAC в MP4 для MSE

Формат кодирования звука без потерь FLAC поддерживается при обычном воспроизведении мультимедиа, начиная с Chrome 56. Вскоре после этого была добавлена ​​поддержка FLAC в ISO-BMFF (также известная как FLAC в MP4). И теперь FLAC в MP4 доступен в Chrome 62 для Media Source Extensions (MSE) .

Для информации, ребята из Firefox — это те, кто разработал и реализовал поддержку FLAC в спецификации инкапсуляции MP4 , а BBC экспериментировала с использованием этого с MSE. Чтобы узнать больше, вы можете прочитать публикацию BBC «Delivering Radio 3 Concert Sound» .

Вот как вы можете определить, поддерживается ли FLAC в MP4 для MSE:

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

Если вы хотите увидеть полный пример, ознакомьтесь с нашим официальным образцом .

Намерение отправить | Трекер Chromestatus | Ошибка хрома

Видео автоматически переходит в полноэкранный режим при повороте устройства.

Если вы повернете устройство в горизонтальное положение во время воспроизведения видео в области просмотра, воспроизведение автоматически переключится в полноэкранный режим. Поворот устройства в книжную ориентацию возвращает видео в оконный режим. Более подробную информацию можно найти в нашей прошлой статье .