我有一位客户,他几年前要求我提供一个用于播放流媒体视频的Android应用程序。他拥有视频的链接和DRM许可证的url,其中包括这样一个对象:
"n": {
"drm_license_url": "\thttps://sp-supplier.supplier.com/?deviceId=SoMeALphaNUmericakStuFF=",
"drm_scheme": "widevine",
"icon": "https://blogger.googleusercontent.com/img/some-logo.png",
"name": "ANY NAME",
"uri": "https://supplier-supplier-sl.supplier.com/live/c6eds/VIDEO/SA_Live_dash_enc_2A/SOMEVIDEO.mpd"
},在阅读了一些ExoPlayer库之后,我成功地播放了这些视频。
现在他也想在网络上播放同样的视频,所以读了一些之后,我意识到我需要使用dash.js或类似的MPD / m3u0播放器,后者也接受DRM许可证保护。我已经阅读了制作它的文档,但问题是,为了通过DRM许可证,我必须创建以下内容:
var protData = {
"com.widevine.alpha": {
"serverURL": "https://drm-widevine-licensing.axtest.net/AcquireLicense",
"httpRequestHeaders": {
"X-AxDRM-Message": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ2ZXJzaW9uIjoxLCJjb21fa2V5X2lkIjoiYjMzNjRlYjUtNTFmNi00YWUzLThjOTgtMzNjZWQ1ZTMxYzc4IiwibWVzc2FnZSI6eyJ0eXBlIjoiZW50aXRsZW1lbnRfbWVzc2FnZSIsImZpcnN0X3BsYXlfZXhwaXJhdGlvbiI6NjAsInBsYXlyZWFkeSI6eyJyZWFsX3RpbWVfZXhwaXJhdGlvbiI6dHJ1ZX0sImtleXMiOlt7ImlkIjoiOWViNDA1MGQtZTQ0Yi00ODAyLTkzMmUtMjdkNzUwODNlMjY2IiwiZW5jcnlwdGVkX2tleSI6ImxLM09qSExZVzI0Y3Iya3RSNzRmbnc9PSJ9XX19.FAbIiPxX8BHi9RwfzD7Yn-wugU19ghrkBFKsaCPrZmU"
},
priority: 0
}(资料来源:https://reference.dashif.org/dash.js/latest/samples/drm/widevine.html)
现在,我知道我必须在键serverUrl中传递相同的许可URL,但是关于头文件,我不知道必须传递给键X-AxDRM-Message的值,因为我没有这个值,客户也没有。
我尝试使用dash提供的预构建播放器进行测试,在其中您可以选择params,包括DRM许可证,但是得到了以下错误:
DRM:许可程序错误!--com.widevine.alpha更新,XHR错误。状态为"“(0),readyState为4
我的问题是:
谢谢!马蒂亚斯
发布于 2022-06-24 19:14:12
该服务很可能需要用户身份验证和/或在许可请求中包含一个令牌。
此功能很可能内置到应用程序中,因此它在身份验证后包含令牌。在这种情况下,您不能简单地复制和粘贴许可证请求。
为了进行更多的探索和验证,Microsoft提供了关于DRM集成的良好文档,不仅为它自己的PlayReady DRM,而且也为Widevine提供了良好的文档。
您可以在它们的页面上看到令牌身份验证的示例:

如果您阅读了附带的文档,就可以看到令牌在各种场景中的使用情况:https://learn.microsoft.com/en-us/azure/media-services/previous/media-services-protect-with-playready-widevine
https://stackoverflow.com/questions/72575578
复制相似问题