TeamNewPipe/NewPipe · error · ResolverException
Non URI progressive contents are not supported
Error message
Non URI progressive contents are not supported
What it means
Thrown by PlaybackResolver.buildProgressiveMediaSource when a stream whose DeliveryMethod is PROGRESSIVE_HTTP does not satisfy stream.isUrl(). Progressive playback in ExoPlayer requires a URL it can fetch as a byte stream; a progressive stream with non-URL (e.g. embedded/inline) content cannot be played this way.
Source
Thrown at app/src/main/java/org/schabi/newpipe/player/resolver/PlaybackResolver.java:291
case DASH:
return buildDashMediaSource(dataSource, stream, cacheKey, metadata);
case HLS:
return buildHlsMediaSource(dataSource, stream, cacheKey, metadata);
case SS:
return buildSSMediaSource(dataSource, stream, cacheKey, metadata);
// Torrent streams are not supported by ExoPlayer
default:
throw new ResolverException("Unsupported delivery type: " + deliveryMethod);
}
}
private static ProgressiveMediaSource buildProgressiveMediaSource(
final PlayerDataSource dataSource,
final Stream stream,
final String cacheKey,
final MediaItemTag metadata) throws ResolverException {
if (!stream.isUrl()) {
throw new ResolverException("Non URI progressive contents are not supported");
}
throwResolverExceptionIfUrlNullOrEmpty(stream.getContent());
return dataSource.getProgressiveMediaSourceFactory().createMediaSource(
new MediaItem.Builder()
.setTag(metadata)
.setUri(Uri.parse(stream.getContent()))
.setCustomCacheKey(cacheKey)
.build());
}
private static DashMediaSource buildDashMediaSource(final PlayerDataSource dataSource,
final Stream stream,
final String cacheKey,
final MediaItemTag metadata)
throws ResolverException {
if (stream.isUrl()) {
throwResolverExceptionIfUrlNullOrEmpty(stream.getContent());View on GitHub (pinned to 9e8be09156)
Solutions
- Validate stream.isUrl() before attempting progressive playback and skip the stream if false.
- Update the extractor for the affected service so progressive streams carry proper URLs.
- Surface a user-facing message that this stream type cannot be played rather than failing silently.
Defensive patterns
Strategy: validation
Validate before calling
if (stream.getDeliveryMethod() == DeliveryMethod.PROGRESSIVE_HTTP && !stream.isUrl()) {
// skip; progressive content must be a URL
} Try / catch
try {
return buildProgressiveMediaSource(dataSource, stream, cacheKey, metadata);
} catch (final ResolverException e) {
// non-URL progressive content; fall back to another stream
} Prevention
- Verify stream.isUrl() is true for progressive streams before attempting playback.
- Keep the extractor updated so progressive streams carry valid URLs.
- Offer an alternate stream/itag when a progressive stream is non-URL.
When it happens
Trigger: buildProgressiveMediaSource receives a Stream where stream.isUrl() is false, meaning getContent() holds data that is not a URL. The guard fires before any MediaSource is built.
Common situations: An extractor mistakenly marks non-URL content as PROGRESSIVE_HTTP, or a stream object's content field contains raw data/a malformed identifier rather than a URL. Indicates an extractor bug or an unexpected stream shape for the service.
Related errors
- Null stream URL
- Empty stream URL
- Unsupported type: {}
- Unsupported delivery type: {}
- Could not create a DASH media source/manifest from the manif
AI-assisted analysis of TeamNewPipe/NewPipe@9e8be09156 (2026-08-14).
Data as JSON: /api/errors/8b58ff6e676c5669.
Report an issue: GitHub.