- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 libwidevinecdm.so
从 chrome 处理 DRM 保护的数据。我目前正在成功设置从许可证服务器获得的 Widevine 服务器证书。我还可以使用我试图解码的媒体的 pssh 框创建一个 session 。到目前为止,一切都很成功(所有 promise 都可以解决)。
( session 创建如下:_cdm->CreateSessionAndGenerateRequest(promise_id, cdm::SessionType::kTemporary, cdm::InitDataType::kCenc, pssh_box.data(), static_cast<uint32_t>(pssh_box.size()));
)
然后我收到类型为 kLicenseRequest
的 session 消息我将其转发到相应的许可证服务器。许可证服务器以有效响应和与我在使用 Chrome 时在浏览器中看到的相同数量的数据进行响应。然后我将它传递给我的 session ,如下所示:
_cdm->UpdateSession(promise_id, session_id.data(), static_cast<uint32_t>(session_id.size()),
license_response.data(), static_cast<uint32_t>(license_response.size()));
kLicenseRequest
一遍又一遍地向我的 session 发送消息,而从未返回。这是否意味着我的 react 是错误的?或者这是别的什么?
最佳答案
问题是由 CreateSessionAndGenerateRequest
中的所有内容引起的。同步完成 - 这意味着到 CreateSessionAndGenerateRequest
返回您的 promise 将始终得到解决。
CDM 将发出 kLicenseRequest
里面 CreateSessionAndGenerateRequest
并且它不会以“fire & forget”的方式执行此操作,但该函数会在那里等待,直到您从 cdm::Host_10::OnSessionMessage
返回。 .自从我实现 OnSessionMessage
之前正在创建对许可证服务器的同步 HTTP 请求 - 也是同步的 - 调用 UpdateSession
整个链条最终都被阻塞了。
所以最终我调用UpdateSession
还在里面CreateSessionAndGenerateRequest
我假设 CDM 无法处理此问题,并通过使用给定 ID 创建新 session 并再次生成请求来使用react,这当然触发了另一个 UpdateSession
等等。
最终,打破循环的最简单方法是使某些东西异步。我决定在收到 kLicenseRequest
时启动一个单独的线程, 等待几毫秒以确保 CreateSessionAndGenerateRequest
有时间完成(不确定是否真的需要),然后向许可证服务器发出请求。
我必须做的唯一更改是添加周围的 std::thread
:
void WidevineSession::forward_license_request(const std::vector<uint8_t> &data) {
std::thread{
[=]() {
std::this_thread::sleep_for(std::chrono::milliseconds{100});
net::HttpRequest request{"POST", _license_server_url};
request.add_header("Authorization", fmt::format("Bearer {}", _access_token))
.byte_body(data);
const auto response = _client.execute(request);
if (response.status_code() != 200) {
log->error("Widevine license request not accepted by license server: {} {} ({})", response.status_code(), response.status_text(), utils::bytes_to_utf8(response.body()));
throw std::runtime_error{"Error requesting widevine license"};
}
log->info("Successfully requested widevine license from license server");
_adapter->update_session(this, _session_id, response.body());
}
}.detach();
}
关于c++ - Widevine session 更新无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59653928/
假设有人下载了我的 Widevine DRM 流的多个片段: Segment01.m4s Segment02.m4s 段...n.m4s 他不知怎么弄到了解码初始化头数据对于那个特定的流,他能用它做什
它如何影响安卓手机 DRM 内容流。当我在 android 设备中检查 DRMinfo 时,一些手机显示 HDCP 级别未 protected 。有些显示 HDCP 级别已断开连接。它们之间有什么区别
我有兴趣在我的Samsung TV的Samsung应用程序中播放受WideVine保护的视频流。有人知道我可以使用的示例宽带视频流的免费网址吗?我在哪里可以找到这些流?谢谢你。 最佳答案 我唯一能找到
chromecast sdk 声明支持 widevine 内容。通过测试,我确定 widevine 浏览器插件没有安装在 chromecast 设备上运行的浏览器上。知道了这一点,如何使用 chrom
我正在使用 libwidevinecdm.so从 chrome 处理 DRM 保护的数据。我目前正在成功设置从许可证服务器获得的 Widevine 服务器证书。我还可以使用我试图解码的媒体的 pssh
我正在尝试在 Chrome 中启用 Azure 托管的视频,以便在“租用期”内离线观看,以便其在几天后过期。我从 OfflinePlayReadyAndWidevine 开始java 示例项目。我更新
我正在创建一个视频播放器,它可以播放广泛的视频内容。我找到了以下流 流 1:http://commondatastorage.googleapis.com/wvmedia/sintel_main_72
实现目标:我需要像 Netflix 一样在 Android 设备上支持离线视频,并禁止使用 DRM 支持分发它。 到目前为止我所做的:我已经使用 Shaka Packager 将示例视频转换为 m3u
我正在 Exoplayer Android 上实现一个 OTT 应用程序。我们正在使用 Widewine DRM 保护我们的内容。但是我们收到如下所示的错误。 06-13 17:31:53.641
当我尝试在 OOyala 播放器 中使用嵌入 ID 来运行视频 时,我感觉 “Widevine 可以仅在 ARMv7 上运行”。 NSLog(@"video id= %@ ",videoID); se
Google 收购了 Widevine 公司,这家公司提供 DRM 支持以保护例如HLS H.264/AAC 流。 根据http://www.widevine.com/不仅支持 Android,还支持
我目前正在切换到使用 Dash/Widevine DRM 的 ExoPlayer。通过测试,我遇到了很大比例的设备没有启用 HDCP 保护。由于契约(Contract)协议(protocol),这是一
我想使用 Azure 媒体服务来提供内容保护许可证。我使用 PHP SDK 创建了 ContentKey,并获取了 Widevine 的许可证 URL。我正在使用packager在我这边加密视频。 我
我想使用 Azure 媒体服务来提供内容保护许可证。我使用 PHP SDK 创建了 ContentKey,并获取了 Widevine 的许可证 URL。我正在使用packager在我这边加密视频。 我
我一直在阅读有关在设备连接到 chromecast 后让 widevine 播放发生的信息。我已经在 android 和 ios 中为电影片名工作了,我不知道从哪里开始,至于我应该将什么作为我的自定义
我正在制作一个应用程序,我必须在其中检查 Android 设备中是否存在 Google Widevine DRM。如何以编程方式检查? 提前致谢 最佳答案 Android DRM 框架提供了一种方法来
如标题所述,PlayReady/Widevine 和 ClearKey 之间有什么区别? PlayReady/Widevine 比 ClearKey 好吗? 最佳答案 ClearKey 是针对 MPE
我希望找到类似于 ExoPlayer for iOS 的东西。 目标是在 iOS 上播放/流式传输受 Widevine DRM 保护的视频。我有我需要的所有服务器端,但我找不到合适的播放器。 有没有人
我创建了一个能够播放受 DRM(Widevine 模块化)保护的电影的 Android 应用程序。视频采用 MPEG-DASH 标准。如果该设备在线,一切正常。 现在我需要添加在离线模式下播放视频的功
我正在尝试为 ExoPlayer 2 实现离线 DRM 支持,但我遇到了一些问题。 我找到了这个 conversation .有一些 ExoPlayer 1.x 的实现以及一些如何使用 ExoPlay
我是一名优秀的程序员,十分优秀!