我正在使用libwidevinecdm.so
chrome 来处理受 DRM 保护的数据。我目前正在成功设置从许可证服务器获得的 Widevine 服务器证书。我还可以使用我试图解码的媒体的 pssh 框创建一个会话。到目前为止,一切都很成功(所有承诺都可以解决)。
(会话是这样创建的_cdm->CreateSessionAndGenerateRequest(promise_id, cdm::SessionType::kTemporary, cdm::InitDataType::kCenc, pssh_box.data(), static_cast<uint32_t>(pssh_box.size()));
:)
然后我会收到一个类型的会话消息,kLicenseRequest
我将其转发到相应的许可证服务器。许可证服务器以有效响应和与我在使用 Chrome 时在浏览器中看到的相同数量的数据进行响应。然后我将它传递给我的会话,如下所示:
_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
一遍又一遍地将消息发布到我的会话中,而从未返回。这是否意味着我的反应是错误的?或者这是别的什么?
亚尼克