首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Azure媒体服务的令牌回放宽带

用Azure媒体服务的令牌回放宽带
EN

Stack Overflow用户
提问于 2020-10-02 10:03:29
回答 2查看 414关注 0票数 0

大家早上好,我很难尝试添加一个简单的授权令牌来使用react本地视频从蓝色媒体服务中播放受保护的内容。这是我的代码:

代码语言:javascript
复制
   ref={(ref: Video) => { this.video = ref }}
    source={{
      uri: "https://swannmediaservice-euwe.streaming.media.azure.net/95aae6ef-55a4-411d-9706-73890f5d2ba5/L'Homme qui courait après le Te.ism/manifest(format=mpd-time-cmaf,encryption=cenc)",type: 'mpd', 
      drm: {
        type: 'widevine', 
        headers: {
            'Authorization': 'Bearer=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3d3dy5zYXRvcmlwb3AuY29tLyIsImF1ZCI6InVybjpzYXRvcmlwb3AiLCJleHAiOjE3MTA4MDczODksIm5iZiI6MTYwMTMwMDA3OH0.O_41HbAcE8kFDivOM9Q4AL2z-4TMUTLchuUoyxCdDKY'
          }
    }
    }}

此ofc仅用于测试目的。

当我在Android :引起的: java.lang.IllegalStateException: Media上测试日志输出时,总是会出现这样的错误:媒体需要一个DrmSessionManager,我假设这是因为视频不能播放。

我在蔚蓝媒体播放器中测试了这一点,一切都正常。以下是这方面的链接:

https://aka.ms/azuremediaplayer?url=https%3A%2F%2Fswannmediaservice-euwe.streaming.media.azure.net%2F057936a3-2899-4d63-b287-3c50976c1bc4%2FFrench%20audiobook%20The%20Caliph%20A2x_.ism%2Fmanifest(format%3Dmpd-time-csf%2Cencryption%3Dcenc)&widevine=true&widevinetoken=Bearer%3DeyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3d3dy5zYXRvcmlwb3AuY29tLyIsImF1ZCI6InVybjpzYXRvcmlwb3AiLCJleHAiOjE3MTA4MDczODksIm5iZiI6MTYwMTMwMDA3OH0.O_41HbAcE8kFDivOM9Q4AL2z-4TMUTLchuUoyxCdDKY

而且效果很好。这里有我遗漏的东西吗?

平台

iOS Android ExoPlayer

视频样本

URI:https://swannmediaservice-euwe.streaming.media.azure.net/95aae6ef-55a4-411d-9706-73890f5d2ba5/L'Homme qui courait aprè的le Te.ism/清单(format=mpd cmaf,encryption=cenc)

标题: Bearer=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL3d3dy5zYXRvcmlwb3AuY29tLyIsImF1ZCI6InVybjpzYXRvcmlwb3AiLCJleHAiOjE3MTA4MDczODksIm5iZiI6MTYwMTMwMDA3OH0.O_41HbAcE8kFDivOM9Q4AL2z-4TMUTLchuUoyxCdDKY

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-10-06 21:12:50

既然找到了我自己的问题,下面是解决方案:

由于蔚蓝媒体服务咨询自己的许可服务部门来播放媒体(而不是使用3d派对许可服务),系外玩家没有意识到这一点,因此尝试播放视频,即使响应中有licenseServer (显式设置),也不管它期望在其DRM设置中粘贴一个licenseService,以便使用它获取许可并传递一个标头。因此,基本上,当我不使用licensServer并认为一切都自动工作时,我就错了。因此,我的代码所做的是:它请求一个许可证,而不是在哪里,而且它不起作用。因此,您必须解析来自链接的数据,手动提取许可服务器并将其添加到请求中,如下所示:

代码语言:javascript
复制
 ref={(ref: Video) => { this.video = ref }}
    source={{
      uri: "your mpd url",type: 'mpd', 
      drm: {
        type: 'widevine', 
        licenseServer: 'the Parsed license server form the mpd file',
        headers: {
            'Authorization': 'Bearer=yourtoken'
          }
    }
    }}

实现这一点,现在一切都很好。

票数 1
EN

Stack Overflow用户

发布于 2020-10-02 11:49:28

它可能来自清单名称,这可能是有问题的。我建议不要使用重音字符或像‘这样的特殊字符,因为名称是在流Url中公开的。在可能的情况下也移除空格。要做到这一点,请重命名源文件,重新编码内容并再次尝试。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64169733

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档