Skip to content

Error 4038 (Inconsistent DRM across periods) on dynamic live DASH stream with consistent DRM configuration #8559

@asnbd

Description

@asnbd

Have you read the FAQ and checked for duplicate open issues?
Yes

If the problem is related to FairPlay, have you read the tutorial?

N/A

What version of Shaka Player are you using?

4.14.10

Can you reproduce the issue with our latest release version?
Yes

Can you reproduce the issue with the latest code from main?
Not checked.

Are you using the demo app or your own custom app?
Custom app

If custom app, can you reproduce the issue using our demo app?
Yes

What browser and OS are you using?
Chrome 135 on Windows 10 x64

For embedded devices (smart TVs, etc.), what model and firmware version are you using?
N/A

What are the manifest and license server URIs?

Sample Manifest Contents:

Demo Stream for Reproduction:
To help reproduce the issue, I’ve created a simplified demo stream that dynamically inserts new periods. The stream uses a looping video as content. It's not a production stream and may not be perfect, but it triggers the same 4038 error during period transitions.

Demo Stream URL: https://www.asno.live/s/test/v4/manifest.mpd

And for the demo stream I've used following extra config for clear key DRM:

{
  "drm": {
    "clearKeys": {
      "0123456789abcdef0123456789abcdef": "0123456789abcdef0123456789abcdef"
    }
  }
}

What configuration are you using? What is the output of player.getNonDefaultConfiguration()?

{
    "drm": {
        "clearKeys": {
            "0123456789abcdef0123456789abcdef": "0123456789abcdef0123456789abcdef"
        }
    },
    "streaming": {
        "retryParameters": {
            "maxAttempts": 10,
            "backoffFactor": 1.5
        }
    }
}

What did you do?

I'm using Shaka Player to play a live dynamic DASH stream. The manifest dynamically inserts new periods during the live stream. Every period uses the same DRM system, and each period's ContentProtection and pssh box data are identical.
However, when Shaka switches from one period to the next during playback, it sometimes throws 4038 error.

What did you expect to happen?
I expected seamless playback with no DRM errors since the ContentProtection and pssh data are consistent across all periods.

What actually happened?

Playback fails at period boundaries with the above error, despite identical DRM configuration. The error occurs specifically when a new period is inserted dynamically into the manifest.

Notes:

  • All periods contain identical DRM configuration (including schemeIdUri, keyId, and pssh box).
  • Manifest is dynamic, using type="dynamic" with segment timelines updated regularly.
  • The issue only happens at period transitions - not during segment playback within a period.

Are you planning to send a PR to fix it?
No

Metadata

Metadata

Assignees

Labels

component: DASHThe issue involves the MPEG DASH manifest formatpriority: P1Big impact or workaround impractical; resolve before feature releasestatus: archivedArchived and locked; will not be updatedtype: bugSomething isn't working correctly

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions