TeamNewPipe/NewPipe · error · ResolverException
Unsupported delivery type: {}
Error message
Unsupported delivery type: {} What it means
Thrown by PlaybackResolver.buildMediaSource when a (non-YouTube) stream's DeliveryMethod is not PROGRESSIVE_HTTP, DASH, HLS, or SS. The default branch of the delivery-method switch raises the ResolverException. The code comment notes that Torrent streams (and any other delivery method) are not supported by ExoPlayer.
Source
Thrown at app/src/main/java/org/schabi/newpipe/player/resolver/PlaybackResolver.java:281
final String cacheKey,
final MediaItemTag metadata) throws ResolverException {
if (streamInfo.getService() == ServiceList.YouTube) {
return createYoutubeMediaSource(stream, streamInfo, dataSource, cacheKey, metadata);
}
final DeliveryMethod deliveryMethod = stream.getDeliveryMethod();
switch (deliveryMethod) {
case PROGRESSIVE_HTTP:
return buildProgressiveMediaSource(dataSource, stream, cacheKey, metadata);
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());View on GitHub (pinned to 9e8be09156)
Solutions
- Check the stream's DeliveryMethod before requesting playback and skip/notify the user for unsupported methods like TORRENT.
- Update the extractor and NewPipe to the latest version if a new delivery method was added that should be supported.
- Filter streams in the UI so only playable delivery methods are offered to the user.
Defensive patterns
Strategy: validation
Validate before calling
final DeliveryMethod dm = stream.getDeliveryMethod();
if (dm != DeliveryMethod.PROGRESSIVE_HTTP && dm != DeliveryMethod.DASH
&& dm != DeliveryMethod.HLS && dm != DeliveryMethod.SS) {
// skip this stream; do not call buildMediaSource
} Try / catch
try {
return buildMediaSource(dataSource, stream, streamInfo, cacheKey, metadata);
} catch (final ResolverException e) {
// unsupported delivery method (e.g. Torrent); skip stream
} Prevention
- Filter streams by DeliveryMethod in the UI so only playable ones reach the resolver.
- Keep the extractor updated so delivery methods are reported correctly.
- Surface unsupported delivery methods to the user instead of attempting playback.
When it happens
Trigger: buildMediaSource is called with a Stream whose getDeliveryMethod() returns a value outside the four supported methods (e.g. TORRENT). This is the generic (non-YouTube) stream resolution path.
Common situations: A service returns a torrent-delivered stream, or a new delivery method is introduced by an extractor that NewPipe does not yet handle. Also when a malformed/partial StreamInfo yields an unexpected delivery method enum value.
Related errors
- Unsupported delivery method for YouTube contents: {}
- Unsupported type: {}
- Non URI progressive contents are not supported
- Could not create a DASH media source/manifest from the manif
- Error when parsing manual SS manifest
AI-assisted analysis of TeamNewPipe/NewPipe@9e8be09156 (2026-08-14).
Data as JSON: /api/errors/6cc6c9de173fd04a.
Report an issue: GitHub.