MediaKeys
Базовая Широко поддерживается *
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она поддерживается браузерами с марта 2019 года.
* Некоторые части этой функции могут иметь различный уровень поддержки.
Безопасный контекст: Эта функция доступна только в безопасных контекстах (HTTPS) в некоторых или всех поддерживающих браузерах.
Интерфейс MediaKeys API расширений шифрования медиаданных представляет собой набор ключей, которые связанный HTMLMediaElement может использовать для дешифрования данных медиа во время воспроизведения.
Свойства экземпляра
Нет.
Методы экземпляра
MediaKeys.createSession()-
Возвращает новый объект
MediaKeySession, представляющий контекст для обмена сообщениями с модулем дешифрования контента (CDM). MediaKeys.getStatusForPolicy()-
Возвращает
Promise, который разрешается в строку состояния, указывающую, разрешит ли CDM представление зашифрованных данных медиа с использованием ключей на основе заданных требований политики. MediaKeys.setServerCertificate()-
Возвращает
Promiseдо сертификата сервера, который будет использоваться для шифрования сообщений серверу лицензирования.
Примеры
Проверка возможности использования ключей с ограничением HDCP
Этот пример демонстрирует, как getStatusForPolicy() можно использовать для проверки, могут ли ключи дешифровать определенный формат видео в настройках, имеющих минимальную версию HDCP 2.2. Для получения дополнительной информации см. документацию к методу MediaKeys: getStatusForPolicy().
HTML
<pre id="log"></pre>
JavaScript
const config = [
{
videoCapabilities: [
{
contentType: 'video/mp4; codecs="avc1.640028"',
encryptionScheme: "cenc",
robustness: "SW_SECURE_DECODE", // Widevine L3
},
],
},
];
getMediaStatus(config);
async function getMediaStatus(config) {
try {
const mediaKeySystemAccess = await navigator.requestMediaKeySystemAccess(
"com.widevine.alpha",
config,
);
const mediaKeys = await mediaKeySystemAccess.createMediaKeys();
const mediaStatus = await mediaKeys.getStatusForPolicy({
minHdcpVersion: "2.2",
});
log(mediaStatus);
// Get the content or fallback to an alternative if the
// keys are not usable
if (mediaStatus === "usable") {
console.log("HDCP 2.2 can be enforced.");
// Fetch the high resolution protected content
} else {
log("HDCP 2.2 cannot be enforced");
// Fallback other content, get license, etc.
}
} catch (error) {
log(error);
}
}
Результаты
Спецификации
| Спецификация |
|---|
| Расширения шифрования медиа # mediakeys-interface |
Совместимость с браузерами
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на IOS | Samsung Internet | WebView Android | |
MediaKeys |
42 | 13 | 38 | 29 | 12.1 | 42 | 38 | 29 | 12.2 | 4.0 | 43 |
createSession |
42 | 13 | 38 | 29 | 12.1 | 42 | 38 | 29 | 12.2 | 4.0 | 43 |
getStatusForPolicy |
73 | 79 | 128 | 60 | Нет | 73 | 128 | 52 | Нет | 11.0 | 73 |
setServerCertificate |
42 | 13 | 38 | 29 | 12.1 | 42 | 38 | 29 | 12.2 | 4.0 | 43 |
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/MediaKeys