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.

Solutions

  1. Check the stream's DeliveryMethod before requesting playback and skip/notify the user for unsupported methods like TORRENT.
  2. Update the extractor and NewPipe to the latest version if a new delivery method was added that should be supported.
  3. 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

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


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

Appendix: 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)