TeamNewPipe/NewPipe · error · ResolverException
Error when parsing manual SS manifest
Error message
Error when parsing manual SS manifest
What it means
Thrown by PlaybackResolver.buildSSMediaSource when the inline SmoothStreaming manifest content cannot be parsed by SsManifestParser. The method reads stream.getContent() bytes and parses them; an IOException from the parser is wrapped as a ResolverException. Taken when an SS stream's content is inline text (not a URL).
Source
Thrown at app/src/main/java/org/schabi/newpipe/player/resolver/PlaybackResolver.java:389
throwResolverExceptionIfUrlNullOrEmpty(stream.getContent());
return dataSource.getSSMediaSourceFactory().createMediaSource(
new MediaItem.Builder()
.setTag(metadata)
.setUri(Uri.parse(stream.getContent()))
.setCustomCacheKey(cacheKey)
.build());
}
final Uri manifestUri = manifestUrlToUri(stream.getManifestUrl());
final SsManifest smoothStreamingManifest;
try {
final ByteArrayInputStream smoothStreamingManifestInput = new ByteArrayInputStream(
stream.getContent().getBytes(StandardCharsets.UTF_8));
smoothStreamingManifest = new SsManifestParser().parse(manifestUri,
smoothStreamingManifestInput);
} catch (final IOException e) {
throw new ResolverException("Error when parsing manual SS manifest", e);
}
return dataSource.getSSMediaSourceFactory().createMediaSource(
smoothStreamingManifest,
new MediaItem.Builder()
.setTag(metadata)
.setUri(manifestUri)
.setCustomCacheKey(cacheKey)
.build());
}
//endregion
//region YouTube media sources
private static MediaSource createYoutubeMediaSource(final Stream stream,
final StreamInfo streamInfo,
final PlayerDataSource dataSource,
final String cacheKey,View on GitHub (pinned to 9e8be09156)
Solutions
- Log and inspect the manifest string to locate the malformed element.
- Update the extractor and ExoPlayer to align the manifest format with parser expectations.
- Retry the fetch in case of transient truncation.
- Fall back to HLS/DASH/progressive if SS playback consistently fails.
Defensive patterns
Strategy: try-catch
Validate before calling
try {
new SsManifestParser().parse(manifestUri,
new ByteArrayInputStream(stream.getContent().getBytes(UTF_8)));
} catch (final IOException e) {
// SS manifest invalid; choose another stream
} Try / catch
try {
return buildSSMediaSource(dataSource, stream, cacheKey, metadata);
} catch (final ResolverException e) {
// SS parse failed; fall back to HLS/DASH/progressive
} Prevention
- Inspect the manifest text when parsing fails.
- Keep extractor and ExoPlayer versions aligned.
- Provide a fallback delivery method when SS is unavailable or corrupt.
When it happens
Trigger: An SS (Smooth Streaming) stream whose content is an inline manifest string where SsManifestParser.parse throws an IOException while parsing the XML.
Common situations: Corrupt or malformed SmoothStreaming manifest generated/forwarded by the extractor, a parser/manifest version mismatch, truncated content, or an extractor bug producing invalid XML. SmoothStreaming is uncommon, so this usually appears for specific services that still serve it.
Related errors
- Could not create a DASH media source/manifest from the manif
- Unsupported type: {}
- Unsupported delivery type: {}
- Non URI progressive contents are not supported
- Generation of YouTube DASH manifest for {} is not supported
AI-assisted analysis of TeamNewPipe/NewPipe@9e8be09156 (2026-08-14).
Data as JSON: /api/errors/386049f540a1d743.
Report an issue: GitHub.