TeamNewPipe/NewPipe · error · ResolverException
Could not create a DASH media source/manifest from the manif
Error message
Could not create a DASH media source/manifest from the manifest text
What it means
Thrown by PlaybackResolver.buildDashMediaSource when the DASH manifest content embedded in the stream cannot be parsed into a DashManifest. The method calls createDashManifest (which runs DashManifestParser over the content bytes) and catches IOException, wrapping it as a ResolverException. This path is taken when the stream's DASH content is inline text (stream.isUrl() is false) rather than a remote manifest URL.
Source
Thrown at app/src/main/java/org/schabi/newpipe/player/resolver/PlaybackResolver.java:327
throwResolverExceptionIfUrlNullOrEmpty(stream.getContent());
return dataSource.getDashMediaSourceFactory().createMediaSource(
new MediaItem.Builder()
.setTag(metadata)
.setUri(Uri.parse(stream.getContent()))
.setCustomCacheKey(cacheKey)
.build());
}
try {
return dataSource.getDashMediaSourceFactory().createMediaSource(
createDashManifest(stream.getContent(), stream),
new MediaItem.Builder()
.setTag(metadata)
.setUri(manifestUrlToUri(stream.getManifestUrl()))
.setCustomCacheKey(cacheKey)
.build());
} catch (final IOException e) {
throw new ResolverException(
"Could not create a DASH media source/manifest from the manifest text", e);
}
}
private static DashManifest createDashManifest(final String manifestContent,
final Stream stream) throws IOException {
return new DashManifestParser().parse(manifestUrlToUri(stream.getManifestUrl()),
new ByteArrayInputStream(manifestContent.getBytes(StandardCharsets.UTF_8)));
}
private static HlsMediaSource buildHlsMediaSource(final PlayerDataSource dataSource,
final Stream stream,
final String cacheKey,
final MediaItemTag metadata)
throws ResolverException {
if (stream.isUrl()) {
throwResolverExceptionIfUrlNullOrEmpty(stream.getContent());
return dataSource.getHlsMediaSourceFactory(null).createMediaSource(View on GitHub (pinned to 9e8be09156)
Solutions
- Log and inspect the manifest string being parsed to find the malformed element.
- Update the extractor and ExoPlayer so the manifest format matches what the parser expects.
- Retry fetching the manifest; transient truncation can resolve on the next attempt.
- Fall back to a different stream/itag or delivery method if DASH parsing consistently fails.
Defensive patterns
Strategy: try-catch
Validate before calling
try {
createDashManifest(stream.getContent(), stream); // validate parseability first
} catch (final IOException e) {
// manifest text invalid; choose another stream
} Try / catch
try {
return buildDashMediaSource(dataSource, stream, cacheKey, metadata);
} catch (final ResolverException e) {
// DASH manifest parse failed; fall back to HLS/progressive if available
} Prevention
- Log the manifest text when parsing fails to locate malformed elements.
- Keep the extractor and ExoPlayer versions aligned so manifest formats are understood.
- Retry once on transient truncation before giving up.
When it happens
Trigger: A DASH stream whose content is an inline manifest string (not a URL) where DashManifestParser.parse throws an IOException during XML parsing of that string. The malformed manifest causes the parser to fail.
Common situations: Corrupt or incomplete DASH manifest text provided by the extractor, a manifest whose schema the bundled ExoPlayer DashManifestParser does not understand (version mismatch), truncated content, or an extractor bug generating invalid XML.
Related errors
- Error when parsing manual SS manifest
- Error when generating the DASH manifest of YouTube ended liv
- Error when generating the DASH manifest of YouTube OTF strea
- Unsupported type: {}
- Unsupported delivery type: {}
AI-assisted analysis of TeamNewPipe/NewPipe@9e8be09156 (2026-08-14).
Data as JSON: /api/errors/f28246ca10c1ef4e.
Report an issue: GitHub.