Closed
Description
ExoPlayer Version
2.17.1
Devices that reproduce the issue
Pixel 5
Devices that do not reproduce the issue
No response
Reproducible in the demo app?
Yes
Reproduction steps
Added
{
"name": "CLEARKEY (cenc)",
"uri": "https://media.axprod.net/TestVectors/v7-MultiDRM-SingleKey/Manifest_1080p_ClearKey.mpd",
"drm_scheme": "clearkey"
},
to media.exolist.json.
Works if I specify the drm license uri
{
"name": "CLEARKEY (cenc)",
"uri": "https://media.axprod.net/TestVectors/v7-MultiDRM-SingleKey/Manifest_1080p_ClearKey.mpd",
"drm_scheme": "clearkey",
"drm_license_uri": "https://drm-clearkey-testvectors.axtest.net/AcquireLicense"
},
Expected result
The media plays successfully.
Actual result
Playback crashes with the following error:
E/EventLogger: playerFailed [eventTime=4.38, mediaPos=0.00, window=0, period=0, errorCode=ERROR_CODE_DRM_LICENSE_ACQUISITION_FAILED
One workaround is
in DashManifestParser.java
- in parseContentProtection(),
- add the case to parse clearkey
case "urn:uuid:e2719d58-a985-b3c9-781a-b030af78d30e":
uuid = C.CLEARKEY_UUID;
schemeType = "clearkey";
break;
- Parse the clearkey url in the same method
if (XmlPullParserUtil.isStartTag(xpp, "clearkey:Laurl")) {
if (xpp.next() == XmlPullParser.TEXT) {
licenseServerUrl = xpp.getText();
}
}
- In parseAdaptationSet(), after line 416 while parsing the Content Protection, add
} else if (XmlPullParserUtil.isStartTag(xpp, "ContentProtection")) {
Pair contentProtection = parseContentProtection(xpp);
if (contentProtection.first != null) {
drmSchemeType = contentProtection.first;
}
if (contentProtection.second != null) {
if (drmSchemeType != null && drmSchemeType == "clearkey") {
// update the license url of cenc
for (int i = 0;i
Please let me know what you think OR if I am missing anything.
Thanks.
Media
https://media.axprod.net/TestVectors/v7-MultiDRM-SingleKey/Manifest_1080p_ClearKey.mpd
Bug Report
- You will email the zip file produced by
adb bugreport
to [email protected] after filing this issue.