1

我们正在尝试用 Javascript 编写播放器,它应该在 safari 浏览器上播放 fairplay 加密内容。我们认为 Safari 浏览器不支持“加密”事件,我们为“WebKitNeedKey”事件添加了事件监听器。我们将流程编码如下。

addEventListener('webkitneedkey, onWebKitNeedKey);
onWebKitNeedKey(evt) {
    videoElement = document.getElementById('videoID');
    if (videoElement.webkitKeys) {
        videoElement.webkitSetMediaKeys(new WebKitMediaKeys('com.apple.fps.2_0'));
    }
    const session = videoElement.webkitKeys.createSession('video/mp4', event.initData);
    session.addEventListener('webkitkeymessage', onWebKitKeyMessage);
    session.addEventListener('webkitkeyerror', onWebKitKeyError);
    session.addEventListener('webkitkeyadded', onWebKitKeyAdded);
}
onWebKitKeyMessage(evt) {
    console.log(`received webkit key message : ${evt}`);
}
onWebKitKeyError(evt) {
    console.log(`received webkit key error : ${evt}`);
}
onWebKitKeyAdded(evt) {
    console.log(`received webkit key added : ${evt}`);
}

现在我得到了 webkitneedkey 事件,在设置了密钥之后,我得到了 webkitkeymessage 事件。我计划按照https://github.com/WebPlatformForEmbedded/WPEWebKit/blob/master/LayoutTests/http/tests/media/clearkey/clear-key-hls-aes128 实现联系服务器以获得许可证的逻辑。 html

我有以下问题。有人可以帮我解决以下问题吗?

 1) Do we need to set the source to '.m3u8'? Is it mandatory? I am getting the events even without setting the source to .m3u8
 2) Is my approach correct in onWebKitNeedKey? Can I send evt.initData directly to webkitSetMediaKeys without modifying? Do I need to extract the content ID from evt.initData if I use key as 'com.apple.fps.2_0' instead of 'com.apple.fps.1_0'?
4

0 回答 0