javascript - 现在如何知道在 SHAKA PLAYER 中传递 ContentProtectionCallback?
问题描述
谁能帮我知道现在通过ContentProtectionCallback
,以便我可以preProcessor
在 shaka 播放器中处理 drm 许可证 url
[ http://v1-6-2.shaka-player-demo.appspot.com/docs/tutorial-network.html][1]
var manifestUri =
'<mpd url>';
function initApp() {
// Install built-in polyfills to patch browser incompatibilities.
shaka.polyfill.installAll();
// Check to see if the browser supports the basic APIs Shaka needs.
if (shaka.Player.isBrowserSupported()) {
// Everything looks good!
initPlayer();
} else {
// This browser does not have the minimum set of APIs we need.
console.error('Browser not supported!');
}
}
function initPlayer() {
// Create a Player instance.
var video = document.getElementById('video');
var player = new shaka.Player(video);
player.configure({
drm: {
servers: {
'com.widevine.alpha': '<server url>',
}
}
});
// Attach player to the window to make it easy to access in the JS console.
window.player = player;
// Listen for error events.
player.addEventListener('error', onErrorEvent);
// Try to load a manifest.
// This is an asynchronous process.
player.load(manifestUri).then(function () {
// This runs if the asynchronous load is successful.
console.log('The video has now been loaded!');
}).catch(onError); // onError is executed if the asynchronous load fails.
}
function onErrorEvent(event) {
// Extract the shaka.util.Error object from the event.
onError(event.detail);
}
function onError(error) {
// Log the error.
console.error('Error code', error.code, 'object', error);
}
document.addEventListener('DOMContentLoaded', initApp);
[1]: http://v1-6-2.shaka-player-demo.appspot.com/docs/tutorial-network.html
解决方案
请阅读本教程。在此页面中,解释了如何在请求之前或之后处理许可证。我假设 ContentProtectionCallback 是一个处理程序,用于在向服务器发出许可证请求之前对其进行操作。对于这种情况:
player.getNetworkingEngine().registerRequestFilter(function(type, request) {
// Manipulate request before is sent.
if (type == shaka.net.NetworkingEngine.RequestType.LICENSE) {
const body = request.body;
// Do something with the body. Then, assign it back.
request.body = manipulateBody(body)
}
});
registerResponseFilter
您也可以使用方法对响应应用相同的过程
推荐阅读
- javascript - 如何逐步删除课程
- python - Book object is not iterable: 试图根据一个字段显示一个实例的相似对象
- python - 无法从 kubernetes python 客户端连接 GKE 自动驾驶集群
- python - 尝试获取用户的警告数量并将其发送 discord.py
- java - 如何确保在 Android Studio/Java 中不会多次调用导航操作?
- javascript - Reactstrap 工具提示:无法设置动态 id 和目标:SyntaxError:无法在“文档”上执行“querySelectorAll”:“5f54e5d61ec2c635f81f0e6a”
- javascript - 带有 javascript 调试的 Visual Studio 在直接运行和在调试模式下运行时显示不同的行为
- python - QTreeView 中的列对齐 | PyQt5
- php - 表单无法将数据插入我的数据库
- android - DataOutputStream.writeBytes,同时打开了太多套接字文件