Spec-Zone.ru › Web APIs

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

Результаты

Спецификации

Спецификация
Расширения защищенных медиа
# dom-mediakeys-getstatusforpolicy

Совместимость с браузерами

Рабочий стол Мобильные устройства
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

См. также

  • MediaKeyStatusMap.get()

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API