Проблемы при воспроизведении зашифрованного контента Fairplay в браузере Safari

Мы пытаемся написать проигрыватель на Javascript, который должен воспроизводить зашифрованный контент fairplay в браузере Safari. Мы решили, что событие "зашифровано" не поддерживается в браузере 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'?

0 ответов

Другие вопросы по тегам