TeamNewPipe/NewPipe · error · ResolverException
DASH manifest generation of YouTube livestreams is not suppo
Error message
DASH manifest generation of YouTube livestreams is not supported
What it means
Thrown by PlaybackResolver.createYoutubeMediaSource when the YouTube stream's StreamType is neither VIDEO_STREAM nor POST_LIVE_STREAM. For other stream types (e.g. an active LIVE_STREAM or AUDIO_STREAM routed here), NewPipe has no DASH manifest generation path, so the resolver rejects it. This is the else branch after the two supported types.
Source
Thrown at app/src/main/java/org/schabi/newpipe/player/resolver/PlaybackResolver.java:440
// livestream so we need to generate the manifest corresponding to the content
// (which is the last segment of the stream)
try {
final ItagItem itagItem = Objects.requireNonNull(stream.getItagItem());
final String manifestString = YoutubePostLiveStreamDvrDashManifestCreator
.fromPostLiveStreamDvrStreamingUrl(stream.getContent(),
itagItem,
itagItem.getTargetDurationSec(),
streamInfo.getDuration());
return buildYoutubeManualDashMediaSource(dataSource,
createDashManifest(manifestString, stream), stream, cacheKey,
metadata);
} catch (final CreationException | IOException | NullPointerException e) {
throw new ResolverException(
"Error when generating the DASH manifest of YouTube ended live stream", e);
}
} else {
throw new ResolverException(
"DASH manifest generation of YouTube livestreams is not supported");
}
}
private static MediaSource createYoutubeMediaSourceOfVideoStreamType(
final PlayerDataSource dataSource,
final Stream stream,
final StreamInfo streamInfo,
final String cacheKey,
final MediaItemTag metadata) throws ResolverException {
final DeliveryMethod deliveryMethod = stream.getDeliveryMethod();
switch (deliveryMethod) {
case PROGRESSIVE_HTTP:
if ((stream instanceof VideoStream && ((VideoStream) stream).isVideoOnly())
|| stream instanceof AudioStream) {
try {
final String manifestString = YoutubeProgressiveDashManifestCreator
.fromProgressiveStreamingUrl(stream.getContent(),View on GitHub (pinned to 9e8be09156)
Solutions
- Ensure active live streams go through buildLiveMediaSource (HLS/DASH live) rather than createYoutubeMediaSource.
- Check the StreamType reported by the extractor and route accordingly before calling createYoutubeMediaSource.
- Update the extractor if it mislabels the stream type.
- Surface a user-facing message for genuinely unsupported stream types.
Defensive patterns
Strategy: validation
Validate before calling
final StreamType st = streamInfo.getStreamType();
if (st != StreamType.VIDEO_STREAM && st != StreamType.POST_LIVE_STREAM) {
// do not call createYoutubeMediaSource; use live path or notify user
} Try / catch
try {
return createYoutubeMediaSource(stream, streamInfo, dataSource, cacheKey, metadata);
} catch (final ResolverException e) {
// unsupported stream type for YouTube DASH; route to live resolver if applicable
} Prevention
- Dispatch active live streams to the live resolver instead of createYoutubeMediaSource.
- Check StreamType before choosing the resolver path.
- Update the extractor if stream types are mislabeled.
When it happens
Trigger: createYoutubeMediaSource receives a YouTube stream whose streamInfo.getStreamType() is a value other than VIDEO_STREAM or POST_LIVE_STREAM (for example LIVE_STREAM). Neither handled branch matches, so the else throws.
Common situations: An active YouTube livestream (StreamType.LIVE_STREAM) routed into createYoutubeMediaSource instead of the live-stream path, or an extractor reporting an unexpected StreamType. Indicates a routing/classification issue in how streams are dispatched to resolvers.
Related errors
- Error when generating the DASH manifest of YouTube ended liv
- Unsupported type: {}
- Generation of YouTube DASH manifest for {} is not supported
- Error when generating the DASH manifest of YouTube OTF strea
- Unsupported delivery method for YouTube contents: {}
AI-assisted analysis of TeamNewPipe/NewPipe@9e8be09156 (2026-08-14).
Data as JSON: /api/errors/f454267a7b4eb0d6.
Report an issue: GitHub.