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

  1. Log and inspect the manifest string to locate the malformed element.
  2. Update the extractor and ExoPlayer to align the manifest format with parser expectations.
  3. Retry the fetch in case of transient truncation.
  4. 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

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


AI-assisted analysis of TeamNewPipe/NewPipe@9e8be09156 (2026-08-14). Data as JSON: /api/errors/386049f540a1d743. Report an issue: GitHub.