Repeated live DASH Source errors: DashManifestParser ParserException contentIsMalformed dataType=4
Los mantenedores suelen responder en 4 días
@tonihei ya está trabajando en esto.
Desde el 24/9/2026.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 35/100
- Tipo de issue
- Error
- Claridad
- Necesita aclaración
- Estado de actividad
- Activo
- Área
- audio-video-rtc, mobile-dev
Línea de trabajo
Comienza con DashManifestParser.java:124 y ParsingLoadable.java:185, y luego sigue cómo HTTP 500, 504, las respuestas vacías y los fallos de DNS llegan al procesamiento. Revisa el log redactado adjunto y el HAR de prueba, teniendo en cuenta que los cuerpos de las respuestas no están disponibles. Se considerará terminado cuando se establezca si la ParserException notificada es esperada y se identifique el cambio adecuado en el manejo o la documentación.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
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
- Play a live DASH stream (
application/dash+xml/master.mpd). - Leave playback running (manifest refreshes).
- Observe repeated
TYPE_SOURCEfailures 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.logmedia3-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)
- Lenguaje dominante
- Java
- Estrellas
- 3.1k
- Forks
- 998
- Merge medio
- 6 d 8 h
- PR fusionados (30 d)
- 2
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de androidx/media
-
Waive ads when seek/start at the beginningPosiblemente ocupada @microkatz la tomó hoy. Abiertoenhancement
androidx/media#3496 · 2 comentarios · 1 asignado ·
Los mantenedores suelen responder en 4 días
-
Since 1.9.0, skip buttons in SLOT_BACK / SLOT_FORWARD reach legacy controllers as custom actionsPosiblemente ocupada @marcbaechinger la tomó hoy. Abiertobug
androidx/media#3495 · 1 comentario · 1 asignado ·
Los mantenedores suelen responder en 4 días
-
Allow configuring asset-list prefetch timing per HLS interstitialPosiblemente ocupada @marcbaechinger la tomó hoy. Abiertoenhancement needs triage
androidx/media#3494 · 1 asignado ·
Los mantenedores suelen responder en 4 días
-
Offloaded audio left paused keeps AudioFlinger's AudioOffload wake lock forever, device never suspendsPosiblemente ocupada @microkatz la tomó hoy. Abierto
androidx/media#3493 · 1 asignado ·
Los mantenedores suelen responder en 4 días
-
Allow opting into frame-index seeking for MP3s without reliable seek metadataPosiblemente ocupada @icbaker la tomó hoy. Abierto
Dificultad 4/5 3-5 días Aptitud para principiantes 48/100
androidx/media#3492 · 1 asignado ·
Los mantenedores suelen responder en 4 días
Todos los issues de androidx/media
Issues similares
-
priority: p2 type: bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
googleapis/java-genai#1372 ·
Los mantenedores suelen responder en 1 día
-
GeoSeries scale and skew tests fail with pytest 9.2.0Posiblemente ocupada @jiayuasu la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
Los mantenedores suelen responder en 1 día
-
Preventions: a dose saved without a unit reopens blank, and an unchanged save then erases itAbiertopriority: medium Review effort [1-5]: 3 status: needs-triage type: bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
carlos-emr/carlos#5431 ·
Los mantenedores suelen responder en 1 día
-
Integration tests: jetty:run fails with WELD-001408 for CountryJpaServicePosiblemente ocupada @viniciusmachak la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 66/100
primefaces/primefaces#15431 ·
Los mantenedores suelen responder en 1 día
-
test(multi-tenancy): assert cross-tenant vulnerability reads are refused in the CWE isolation testAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
OpenAEV-Platform/openaev#8792 ·
Los mantenedores suelen responder en 2 días