MediaKeys: getStatusForPolicy() метод
Безопасный контекст: Данная функция доступна только в безопасных контекстах (HTTPS), в некоторых или во всех поддерживающих браузерах.
Метод getStatusForPolicy() интерфейса MediaKeys используется для проверки, позволит ли Модуль дешифрования контента (CDM) представить зашифрованные данные медиа с использованием ключей, на основе заданных требований политики.
Метод возвращает Promise, который разрешается строкой, указывающей статус ключа относительно всех заданных требований политики. Если значение разрешается в "usable", то контент может быть расшифрован и представлен в идеальном качестве. Другие значения указывают причины, по которым ключи не могут быть использованы для представления контента; в некоторых случаях они указывают на варианты резервного копирования, например, воспроизведение контента в более низком качестве.
Ограничения политики в настоящее время включают только ограничение на минимальную поддерживаемую версию HDCP.
Обратите внимание, что метод проверяет «гипотетический ключ» по ограничениям. Приложению не нужно сначала создать реальный ключ и получить реальную лицензию, используя MediaKeySession, и MediaKeys даже не должен быть прикреплён к элементам аудио или видео.
Синтаксис
getStatusForPolicy(policy)
Параметры
policyНеобязательно-
Объект со следующими необязательными свойствами:
minHdcpVersionНеобязательно-
Строка, указывающая семантическую версию минимальной версии HDCP для проверки пригодности, например,
1.0,1.4,2.2,2.3.
Примечание: Должно быть указано хотя бы одно ограничение политики, поэтому minHdcpVersion является только «технически» необязательным.
Возвращаемое значение
A Promise, который разрешается строкой, указывающей, может ли ключ быть использован для дешифрования с учётом заданной политики.
Строка может иметь одно из следующих значений:
usable-
Ключ в настоящее время пригоден для дешифрования.
expired-
Ключ больше не пригоден для дешифрования, так как истекло время его действия.
released-
Ключ был высвобожден и больше недоступен для CDM. Однако информация о ключе доступна, например, запись о уничтожении лицензии.
output-restricted-
Ключ имеет ограничения на вывод, основанные на заданной политике. Данные медиа, расшифрованные с помощью этого ключа, могут быть заблокированы для представления. Статус указывает, что соединение между источником и выводом (например, ваш компьютер и внешний дисплей) не надёжно. Это может указывать на несоответствие версий HDCP между источником, промежуточными устройствами и выводом, или на повреждение или несоответствие стандартам промежуточных устройств, таких как HDMI-кабели или видеоразветвители. Приложение может выбрать использование более высокой версии HDCP, контент, не требующий такой высокой версии. Также необходимо проверить, что промежуточные устройства и кабели поддерживают HDCP, подключены надёжно и не повреждены.
output-downscaled-
Ключ имеет ограничения на вывод, основанные на заданной политике, однако эти ограничения могут быть смягчены, если контент воспроизводится в более низком качестве. Если возвращается это значение, приложение может воспроизвести контент в более низком разрешении, или оно может выбрать использование более высокой версии HDCP, или использовать другой контент, не требующий такой высокой версии HDCP.
usable-in-future-
Ключ станет пригоден для дешифрования в будущем, после достижения времени начала его действия.
status-pending-
Статус ключа ещё неизвестен и определяется.
internal-error-
Ключ в настоящее время не пригоден для дешифрования из-за ошибки в CDM. Приложение ничего не может сделать, чтобы справиться с этим случаем.
Исключения
TypeError-
У
policyнет определённых свойств (ограничений политики), или ключ свойства недействителен. NotSupportedError-
CDM не может определить статус для любого или всех ограничений политики.
Примеры
Проверка пригодности ключей с ограничением HDCP
В этом примере проверяется, пригодны ли ключи для дешифрования определённого формата видео при использовании минимальной версии HDCP 2.2.
Примечание: Статус output-restricted при использовании внешнего дисплея может быть вызван проблемами несовместимости HDCP оборудования. Если вы используете ноутбук, вы можете «исправить» это, отключив внешний дисплей.
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);
}
}
Результаты
Спецификации
Совместимость с браузерами
| Рабочий стол | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
getStatusForPolicy |
73 | 79 | 128 | 60 | Нет | 73 | 128 | 52 | Нет | 11.0 | 73 |
См. также
© 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/getStatusForPolicy