我正在尝试使用Exoplayer在Android电视应用程序上播放Widevine加密内容。我有我的视频URL,它是从CDN提供的,并且是通过票证获得的。我有我的widevine许可证URL、许可证服务器的票证和身份验证令牌。
我正在创建一个drmSessionManager,将许可证服务器所需的必要标头放入其中,如下所示:
UUID drmSchemeUuid = C.WIDEVINE_UUID;
mediaDrm = FrameworkMediaDrm.newInstance(drmSchemeUuid);
static final String USER_AGENT = "user-agent";
HttpMediaDrmCallback drmCallback = new HttpMediaDrmCallback("my-license-server", new DefaultHttpDataSourceFactory(USER_AGENT));
keyRequestProperties.put("ticket-header", ticket);
keyRequestProperties.put("token-header", token);
drmCallback.setKeyRequestProperty("ticket-header", ticket);
drmCallback.setKeyRequestProperty("token-header", token);
new DefaultDrmSessionManager(drmSchemeUuid, mediaDrm, drmCallback, keyRequestProperties)
在这个Exoplayer处理了大部分内容之后,将命中以下断点。
response = callback.executeKeyRequest(uuid, (KeyRequest) request);
in class DefaultDrmSession
return executePost(dataSourceFactory, url, request.getData(), requestProperties) in HttpMediaDrmCallback
我可以观察到,在这一点之前,一切都很好,URL是正确的,标题设置很好。
在下面的代码中,我可以观察到dataSpec很好,尝试使用正确的数据向许可证服务器发布请求,但在建立连接时,响应代码返回405。
类中:DefaultHttpDataSource
在方法中:
public long open(DataSpec dataSpec)
this.dataSpec = dataSpec;
this.bytesRead = 0;
this.bytesSkipped = 0;
transferInitializing(dataSpec);
try {
connection = makeConnection(dataSpec);
} catch (IOException e) {
throw new HttpDataSourceException("Unable to connect to " + dataSpec.uri.toString(), e,
dataSpec, HttpDataSourceException.TYPE_OPEN);
}
try {
responseCode = connection.getResponseCode();
responseMessage = connection.getResponseMessage();
} catch (IOException e) {
closeConnectionQuietly();
throw new HttpDataSourceException("Unable to connect to " + dataSpec.uri.toString(), e,
dataSpec, HttpDataSourceException.TYPE_OPEN);
}
使用postman向URL发出请求时,GET请求返回以下主体,响应代码为405。
{“Message”:“请求的资源不支持http方法“GET”。”}
POST请求还返回响应代码405,但返回空正文。
在这两种情况下,还会返回以下标头,我认为请求必须接受GET和POST请求。
Access-Control-Allow-Methods →GET, POST
我无权访问DRM服务器的配置,负责DRM服务器的联系人告诉我,POST请求必须正常工作,因为有些客户端已成功从同一DRM服务器获取播放内容。
我现在很困惑,我想也许我在exoplayer中缺少了某种配置,因为我对DRMs的概念很陌生。
任何帮助都将不胜感激。
我们找到了解决办法。为DRM许可证服务器提供的票证错误。现在,它按预期工作,内容正在播放。如果有人遇到了同样的问题,或者需要一个基本的Widevine内容播放代码,那么现在就可以了。
最好的问候。
我去了src目录,查看了zlib文件夹,然后看到…。它是空的... 现在,当我转到https://github.com/wxwidgets/wxwidgets/tree/master/src并浏览到zlib文件夹时,它不是空的。但是,在上面的链接中,zlib文件夹被标记了类似“@5888671”的东西。在expat、jpeg、png和tiff文件夹上也有类似的标记。当我克隆存储库时,所有提到的文件
出现此错误,JSP页面变为空白(白色): Jan9, 2013 7:30:39PMorg.apache.catalina.loader.WebappClassLoader clearThreadLocalMap SEVERE:Web应用程序[/MyWebApp]创建了一个ThreadLocal,其中键的类型为[net.sourceforge.jtds.jdbc.DateTime1美元](值[net
问题内容: python的内存有限制吗?我一直在使用python脚本从最小150mb大的文件中计算平均值。 根据文件的大小,我有时会遇到一个。 可以为python分配更多的内存,这样我就不会遇到错误吗? 编辑:下面的代码 注意:文件大小可能相差很大(最大20GB),文件的最小大小为150mb 问题答案: (这是我的第三个答案,因为我误解了您的代码在原始代码中所做的事情,然后在第二个错误中犯了一个小
在主轴上,作为或看起来很直观。 对于以下元素, 在横轴上设置样式, 下面是两个的输出 在上述输出中, 周围的空间是什么
我正在建立一个简单的可编辑组合框与自动完成。我想根据内部TextField的内容筛选组合框的内容。 我设法使其工作,但当从TextField中删除字符时,我面临一个重新应用自动完成逻辑的问题。 从我所看到的情况来看,在按下键的事件上,文本字段的内容还不包含添加的字符。 所以我只是做了一个简单的逻辑来添加KeyEvent的字符串版本来模拟TextField的内容。我制作了这个灯塔,我需要有全文来应用
问题内容: 我的问题很简单: 为什么在Firefox中,内联元素的边距顶部被忽略? 有人知道吗? 问题答案: 这不仅限于Firefox,而且在CSS 2.1规范中进行了定义: ### 8.3边距属性:“ margin-top”,“ margin-right”,“ margin-bottom”,“ margin-left”和“margin” 边距属性指定框的边距区域的宽度。’margin’速记属性设