TeamNewPipe/NewPipe · error · ResolverException

Error when generating the DASH manifest of YouTube OTF strea

Error message

Error when generating the DASH manifest of YouTube OTF stream

What it means

Thrown by PlaybackResolver.createYoutubeMediaSourceOfVideoStreamType when generating the DASH manifest for a YouTube OTF (On-The-Fly) stream fails. The code calls YoutubeOtfDashManifestCreator.fromOtfStreamingUrl and wraps any CreationException, IOException, or NullPointerException (from a null ItagItem) into this ResolverException. Unlike the progressive path, there is no fallback here; the error is logged and rethrown.

Source

Thrown at app/src/main/java/org/schabi/newpipe/player/resolver/PlaybackResolver.java:494

                }
            case DASH:
                // If the content is not a URL, uses the DASH delivery method and if the stream
                // type of the stream is a video stream, it means the content is an OTF stream
                // so we need to generate the manifest corresponding to the content (which is
                // the base URL of the OTF stream).

                try {
                    final String manifestString = YoutubeOtfDashManifestCreator
                            .fromOtfStreamingUrl(stream.getContent(),
                                    Objects.requireNonNull(stream.getItagItem()),
                                    streamInfo.getDuration());
                    return buildYoutubeManualDashMediaSource(dataSource,
                            createDashManifest(manifestString, stream), stream, cacheKey,
                            metadata);
                } catch (final CreationException | IOException | NullPointerException e) {
                    Log.e(TAG,
                            "Error when generating the DASH manifest of YouTube OTF stream", e);
                    throw new ResolverException(
                            "Error when generating the DASH manifest of YouTube OTF stream", e);
                }
            case HLS:
                return dataSource.getYoutubeHlsMediaSourceFactory().createMediaSource(
                        new MediaItem.Builder()
                                .setTag(metadata)
                                .setUri(Uri.parse(stream.getContent()))
                                .setCustomCacheKey(cacheKey)
                                .build());
            default:
                throw new ResolverException("Unsupported delivery method for YouTube contents: "
                        + deliveryMethod);
        }
    }

    private static DashMediaSource buildYoutubeManualDashMediaSource(
            final PlayerDataSource dataSource,
            final DashManifest dashManifest,

View on GitHub (pinned to 9e8be09156)

Solutions

  1. Update the NewPipe extractor and YoutubeOtfDashManifestCreator to match YouTube's current OTF URL scheme.
  2. Validate stream.getItagItem() is non-null and stream.getContent() is a valid OTF URL before manifest generation.
  3. Retry playback on re-resolve; transient OTF failures can clear.
  4. Fall back to an alternate itag or delivery method (e.g. HLS) for the same video.
Defensive patterns

Strategy: validation

Validate before calling

if (stream.getItagItem() == null || stream.getContent() == null) {
    // cannot generate OTF manifest; skip or fall back
}

Try / catch

try {
    return createYoutubeMediaSourceOfVideoStreamType(dataSource, stream, streamInfo, cacheKey, metadata);
} catch (final ResolverException e) {
    // OTF manifest generation failed; try another itag or HLS
}

Prevention

When it happens

Trigger: A YouTube OTF-channel stream (delivery method DASH with non-URL content) where manifest creation fails: ItagItem is null, the OTF URL is malformed/changed, or the creator cannot build the manifest. CreationException, IOException, or NPE in the try block all map here.

Common situations: The extractor did not attach an ItagItem, YouTube changed the OTF URL format so YoutubeOtfDashManifestCreator cannot parse it, or stream.getContent() is invalid/null. OTF streams are format-sensitive, so YouTube-side changes frequently break this after updates.

Related errors


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