微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Android Exoplayer DownloadTracker:无法获取离线 DRM 许可证

如何解决Android Exoplayer DownloadTracker:无法获取离线 DRM 许可证

我需要离线播放受 DRM 保护的内容

但是,在建立 DRM 会话后,抛出以下错误

无法获取离线 DRM 许可证 com.google.android.exoplayer2.drm.DrmSession$DrmSessionException: com.google.android.exoplayer2.upstream.HttpDataSource$InvalidResponseCodeException:响应代码:403 在 com.google.android.exoplayer2.drm.DefaultDrmSession.onError(DefaultDrmSession.java:524) 在 com.google.android.exoplayer2.drm.DefaultDrmSession.onKeysError(DefaultDrmSession.java:519) 在 com.google.android.exoplayer2.drm.DefaultDrmSession.onKeyResponse(DefaultDrmSession.java:482) 在 com.google.android.exoplayer2.drm.DefaultDrmSession.access$100(DefaultDrmSession.java:58) 在 com.google.android.exoplayer2.drm.DefaultDrmSession$ResponseHandler.handleMessage(DefaultDrmSession.java:563) 在 android.os.Handler.dispatchMessage(Handler.java:106) 在 android.os.Looper.loop(Looper.java:164) 在 android.os.HandlerThread.run(HandlerThread.java:65) 引起:com.google.android.exoplayer2.drm.MediaDrmCallbackException:com.google.android.exoplayer2.upstream.HttpDataSource$InvalidResponseCodeException:响应代码:403 在 com.google.android.exoplayer2.drm.HttpMediaDrmCallback.executePost(HttpMediaDrmCallback.java:194) 在 com.google.android.exoplayer2.drm.HttpMediaDrmCallback.executeKeyRequest(HttpMediaDrmCallback.java:153) 在 com.google.android.exoplayer2.drm.DefaultDrmSession$RequestHandler.handleMessage(DefaultDrmSession.java:602) 在 android.os.Handler.dispatchMessage(Handler.java:106) 在 android.os.Looper.loop(Looper.java:164) 在 android.os.HandlerThread.run(HandlerThread.java:65) 引起:com.google.android.exoplayer2.upstream.HttpDataSource$InvalidResponseCodeException:响应代码:403 在 com.google.android.exoplayer2.ext.cronet.cronetDataSource.open(cronetDataSource.java:588) 在 com.google.android.exoplayer2.upstream.StatsDataSource.open(StatsDataSource.java:84) 在 com.google.android.exoplayer2.upstream.DataSourceInputStream.checkOpened(DataSourceInputStream.java:101) 在 com.google.android.exoplayer2.upstream.DataSourceInputStream.read(DataSourceInputStream.java:81) 在 com.google.android.exoplayer2.upstream.DataSourceInputStream.read(DataSourceInputStream.java:75) 在 com.google.android.exoplayer2.util.Util.toByteArray(Util.java:174) 在 com.google.android.exoplayer2.drm.HttpMediaDrmCallback.executePost(HttpMediaDrmCallback.java:177) 在 com.google.android.exoplayer2.drm.HttpMediaDrmCallback.executeKeyRequest(HttpMediaDrmCallback.java:153) 在 com.google.android.exoplayer2.drm.DefaultDrmSession$RequestHandler.handleMessage(DefaultDrmSession.java:602) 在 android.os.Handler.dispatchMessage(Handler.java:106) 在 android.os.Looper.loop(Looper.java:164) 在 android.os.HandlerThread.run(HandlerThread.java:65)

解决方法

此错误表明 DRM 服务器以 403 响应进行响应。

此响应代码的意思是:

6.5.3。 403禁止

403 (Forbidden) 状态码表示服务器理解 请求,但拒绝授权。希望的服务器 公开请求被禁止的原因可以描述 响应负载中的原因(如果有)。

(https://tools.ietf.org/html/rfc7231#page-59)

因此,您的请求已正确发送到 DRM 服务器并且 DRM 服务器理解它,但它没有向您发送许可证作为响应。通常,DRM 服务器不会提供拒绝请求的详细信息,以尽量减少信息收集攻击。

DRM 服务器 403 响应的常见原因是请求中缺少身份验证信息,或者包含的身份验证信息不允许该用户查看该特定内容。

此时最好的方法通常是与您的 DRM 服务器提供商交谈,并与他们分享详细的请求和响应。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?