我正在使用Exoplayer来播放受Wine DRM保护的广泛流媒体。我制作了MediaDrmCallback,它实现了以下两种方法:
MediaDrmCallback mediaDrmCallback = new MediaDrmCallback() {
@Override
public byte[] executeProvisionRequest (UUID uuid, ExoMediaDrm.ProvisionRequest request) throws Exception {
String url = request.getDefaultUrl() + "&signedRequest=" + new String(request.getData());
return executePost(dataSourceFactory, url, null, null);
}
@Override
public byte[] executeKeyRequest(UUID uuid, ExoMediaDrm.KeyRequest request) throws Exception {
if (flag) {
try {
flag = false;
String payload = Base64.encodeToString(request.getData(), Base64.DEFAULT);
LogCS.e("payload", payload.trim().replaceAll("\n", ""));
DRMLicensePresenterImpl drmLicensePresenter = new DRMLicensePresenterImpl(ExoplayerActivity.this, ExoplayerActivity.this, payload.trim().replaceAll("\n", ""), ticketToStream);
drmLicensePresenter.getDRMLicenseDetail(UrlUtil.getAltBalajiUrl(ExoplayerActivity.this, UrlUtil.DRM_LICENSE));
} catch (Exception e) {
e.printStackTrace();
}
LogCS.e("license is" + count++ + "----", license);
}
// get license
return Base64.decode(license, Base64.DEFAULT);
}
};
我正在像下面这样使用此drmCallbackObject:
private DefaultDrmSessionManager getDrmSessionManager() {
DefaultDrmSessionManager drmSessionManager = null;
try {
drmSessionManager = new DefaultDrmSessionManager<>(C.WIDEVINE_UUID, FrameworkMediaDrm.newInstance(C.WIDEVINE_UUID), mediaDrmCallback, null, false);
} catch (UnsupportedDrmException e) {
e.printStackTrace();
}
return drmSessionManager;
}
executeKeyRequest被调用,但是executeProvisionRequest从不被调用。什么时候调用此方法?