MediaKeys
Baseline 广泛可用 *
MediaKeys 接口属于加密媒体扩展 API(Encrypted Media Extensions API),代表了一组密钥,相关联的 HTMLMediaElement 可以在播放期间使用这些密钥来解密媒体数据。
实例属性
无。
实例方法
MediaKeys.createSession()-
返回一个新的
MediaKeySession对象,它代表了与内容解密模块 (CDM) 进行消息交换的上下文。 MediaKeys.getStatusForPolicy()-
返回一个
Promise,该 Promise 解析为一个状态字符串,指示 CDM 是否会根据指定的策略要求允许使用这些密钥播放加密媒体数据。 MediaKeys.setServerCertificate()-
返回一个
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 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 |
浏览器兼容性
加载中…