Skip to content

DASH Widevine issue when scheme specific ContentProtection is omitted #3630

Closed
@lucalooz

Description

I have a DASH content protected with Widevine that doesn't work only on ExoPlayer 2.6.0 (it works on 2.5.4).

The manifest for content protection contains only
<ContentProtection schemeIdUri="urn:mpeg:dash:mp4protection:2011" value="cenc" cenc:default_KID="fe2cbd2e-78a3-5fdd-b1f7-3b166d8abbed" />

When checking if the video format is supported 2.6.0 returns FORMAT_UNSUPPORTED_DRM.

I have debugged the ExoPlayer source of 2.5.4 and 2.6.0 to find the difference.

On 2.5.4 the previous ContentProtection tag is ignored in DashManifestParser and so drmInitData inside supportsFormat of MediaCodecRenderer is null and it assumes that there is no protection. Only later it will update drmInitData by parsing a Widevine SchemeData from the MP4 atoms and ask for the license.

On 2.6.0 the ContentProtection tag is parsed with a SchemeData having COMMON_PSSH_UUID as uuid. Because there is an existing DrmInitData the MediaVideoCodecRenderer class doesn't assume that there is no protection and checks if it's a supported DRM by calling canAcquireSession of DrmSessionManager. DefaultDrmSessionManager calls getSchemeData that will return null because there is no match with the Widevine UUID or with the CLEARKEY logic, this will finally result in FORMAT_UNSUPPORTED_DRM.

I don't know much about DASH manifest and DRM standards so currently i can't say if it's an ExoPlayer issue or it's a malformed manifest.

Unfortunately i don't have any control on these DASH manifests.

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions