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
- Update the NewPipe extractor and YoutubeOtfDashManifestCreator to match YouTube's current OTF URL scheme.
- Validate stream.getItagItem() is non-null and stream.getContent() is a valid OTF URL before manifest generation.
- Retry playback on re-resolve; transient OTF failures can clear.
- 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
- Validate stream.getItagItem() is non-null before OTF manifest generation.
- Keep YoutubeOtfDashManifestCreator updated as YouTube's OTF URL scheme changes.
- Provide an alternate itag/delivery fallback when OTF fails.
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
- Error when generating the DASH manifest of YouTube ended liv
- Could not create a DASH media source/manifest from the manif
- Generation of YouTube DASH manifest for {} is not supported
- DASH manifest generation of YouTube livestreams is not suppo
- Unsupported delivery method for YouTube contents: {}
AI-assisted analysis of TeamNewPipe/NewPipe@9e8be09156 (2026-08-14).
Data as JSON: /api/errors/9e5b783530c8217f.
Report an issue: GitHub.