navigator.requestMediaKeySystemAccess("org.w3.clearkey", [{
initDataTypes: ['webm'],
audioCapabilities: [{
contentType: 'audio/webm; codecs="opus"'
}],
videoCapabilities: [{
contentType: 'video/webm; codecs="vp8"'
},
{
contentType: 'video/webm; codecs="vp9"'
}
],
}]).then((keySystemAccess) => {
return keySystemAccess.createMediaKeys();
}).then((mediaKeys) => {
var session = mediaKeys.createSession("temporary");
var keyId = "VHM2iIMGiSg";
var initData = '{"kids":["' + keyId + '"]}';
console.log(keyId);
session.addEventListener('message', (evt) => {
var requestJson = new TextDecoder().decode(evt.message);
var request = JSON.parse(requestJson);
console.log(request.kids[0]);
});
this.session.generateRequest("webm", new TextEncoder().encode(initData));
});
产出:
VHM2iIMGiSg eyJraWRzIjpbIlZITTJpSU1HaVNnIl19
第二行的预期输出也是VHM2iIMGiSg
发布于 2017-06-05 15:09:38
eyJraWRzIjpbIlZITTJpSU1HaVNnIl19是传递给generateRequest的initData的base64url编码值。
request.kids[0]是initData的全部值而不是keyId的值的原因是,调用generateRequest时将initDataType参数设置为webm。如果initDataType参数被设置为keyids,那么request.kids[0]将是keyId的值。
当initDataType参数设置为webm时,预期initData参数为一个或多个字节的单键ID。然而,当initDataType参数设置为keyids时,initData参数应该是它是base64url编码的密钥ID的数组。。
https://stackoverflow.com/questions/44365436
复制相似问题