媒体密钥

安全上下文: 此功能仅在安全上下文(HTTPS)中可用,在某些或所有支持的浏览器中可用。

MediaKeys 接口加密媒体扩展 API 表示一组密钥,关联的HTMLMediaElement 可以使用这些密钥在播放期间解密媒体数据。

实例属性

无。

实例方法

MediaKeys.createSession()

返回一个新的MediaKeySession 对象,它代表与内容解密模块 (CDM) 交换消息的上下文。

MediaKeys.getStatusForPolicy()

返回一个Promise,该 Promise 解析为一个状态字符串,指示 CDM 是否允许根据指定的策略要求使用密钥呈现加密的媒体数据。

MediaKeys.setServerCertificate()

返回一个Promise,该 Promise 解析为服务器证书,用于加密发送到许可证服务器的消息。

示例

检查密钥是否可用于 HDCP 限制

此示例演示如何使用 getStatusForPolicy() 检查密钥是否可以在最小 HDCP 版本为 2.2 的设置中解密特定视频格式。有关更多信息,请参阅MediaKeys:getStatusForPolicy() 方法 文档。

HTML

html
<pre id="log"></pre>

JavaScript

js
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 usuable
    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

浏览器兼容性

BCD 表仅在启用 JavaScript 的浏览器中加载。