androidx / androidx/media

Repeated live DASH Source errors: DashManifestParser ParserException contentIsMalformed dataType=4

Open
#3,418 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Java
Stars
3k
Forks
955
Avg merge
12d 14h
Merged PRs (30d)
2

Description

Media3 version

1.7.1 (androidx.media3:media3-exoplayer / media3-exoplayer-dash)

Devices that reproduce the issue

Samsung SM-S921B, Android 16

Devices that do not reproduce the issue

Not isolated to one OEM. Same ExoPlaybackException: Source error / DashManifestParser stack seen on other Android devices on this live DASH feed.

Reproducible in the demo app?

Cannot provide a public URL. Stream is authenticated live DASH (SSAI). Repro is: play live DASH for an extended period; MPD reload occasionally fails.

Reproduction steps

  1. Play a live DASH stream (application/dash+xml / master.mpd).
  2. Leave playback running (manifest refreshes).
  3. Observe repeated TYPE_SOURCE failures in one session (examples below: 19:05, 19:18, 20:07 on 2026-09-13).

Expected result

MPD refresh either succeeds, or a failed HTTP load is reported as an IO / HTTP error (HttpDataSourceException / response code) without DashManifestParser treating the payload as a malformed MPD.

Actual result

Repeated:

androidx.media3.exoplayer.ExoPlaybackException: Source error
Caused by: androidx.media3.common.ParserException:
  inputStream does not contain a valid media presentation description
  {contentIsMalformed=true, dataType=4}
    at androidx.media3.exoplayer.dash.manifest.DashManifestParser.parse(DashManifestParser.java:124)
    at androidx.media3.exoplayer.dash.manifest.DashManifestParser.parse(DashManifestParser.java:69)
    at androidx.media3.exoplayer.upstream.ParsingLoadable.load(ParsingLoadable.java:185)

Same session, three times:

Time Load failure immediately before Then Exo
19:05:32 / 19:05:41 HTTP 500 on .../DASH_ENC/master.mpd Source error + ParserException
19:18:36 / 19:18:59 HTTP 500 on master.mpd (other region) same
20:06:16 / 20:07:13 UnknownHostException for the MPD host same

In another session, initialize GET on .../master.mpd returned HTTP 504, empty body (~6.4s); Exo still surfaced the same ParserException / contentIsMalformed=true / dataType=4 on the play MPD.

We do not have the response body for a 3002-after-HTTP-200 case. Bodies were not captured in logcat.

Question

Is contentIsMalformed=true / DashManifestParser.parse expected when:

  • the MPD URL returns HTTP 500 (non-MPD or error body), or
  • the body is empty (504), or
  • DNS fails then a later parse runs?

If yes, we will treat this as working as designed and handle 5xx/empty at the data source. If not, we can recapture a Charles HAR with response.content when we next hit HTTP 200 + this exception.

Media

Redacted log + stub HAR (no PII, no full query string, no MPD XML — bodies were never logged):

  • media3-repeated-source-manifest-errors-redacted.log
  • media3-mpd-http-500-redacted.har

Bug Report Checklist

  • Searched existing issues for DashManifestParser / contentIsMalformed / Source error on live DASH
  • Media3 version listed
  • Device listed
  • Demo app (private live stream)
  • Steps / expected / actual
  • Stack traces (redacted log attached)

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with DashManifestParser.java:124 and ParsingLoadable.java:185, then trace how HTTP 500, 504, empty responses, and DNS failures reach parsing. Review the attached redacted log and stub HAR, noting that response bodies are unavailable. Done means establishing whether the reported ParserException is expected and identifying the appropriate handling or documentation change.

Written by the indexing model from the issue text.

Assessment

Tech stack
android, java
Domain
audio-video-rtc, mobile-dev
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.