{"record":{"id":"6cc6c9de173fd04a","repo":"TeamNewPipe/NewPipe","slug":"unsupported-delivery-type","errorCode":null,"errorMessage":"Unsupported delivery type: {}","messagePattern":"Unsupported delivery type: (.+?)","errorType":"exception","errorClass":"ResolverException","httpStatus":null,"severity":"error","filePath":"app/src/main/java/org/schabi/newpipe/player/resolver/PlaybackResolver.java","lineNumber":281,"sourceCode":"                                        final String cacheKey,\n                                        final MediaItemTag metadata) throws ResolverException {\n        if (streamInfo.getService() == ServiceList.YouTube) {\n            return createYoutubeMediaSource(stream, streamInfo, dataSource, cacheKey, metadata);\n        }\n\n        final DeliveryMethod deliveryMethod = stream.getDeliveryMethod();\n        switch (deliveryMethod) {\n            case PROGRESSIVE_HTTP:\n                return buildProgressiveMediaSource(dataSource, stream, cacheKey, metadata);\n            case DASH:\n                return buildDashMediaSource(dataSource, stream, cacheKey, metadata);\n            case HLS:\n                return buildHlsMediaSource(dataSource, stream, cacheKey, metadata);\n            case SS:\n                return buildSSMediaSource(dataSource, stream, cacheKey, metadata);\n            // Torrent streams are not supported by ExoPlayer\n            default:\n                throw new ResolverException(\"Unsupported delivery type: \" + deliveryMethod);\n        }\n    }\n\n    private static ProgressiveMediaSource buildProgressiveMediaSource(\n            final PlayerDataSource dataSource,\n            final Stream stream,\n            final String cacheKey,\n            final MediaItemTag metadata) throws ResolverException {\n        if (!stream.isUrl()) {\n            throw new ResolverException(\"Non URI progressive contents are not supported\");\n        }\n        throwResolverExceptionIfUrlNullOrEmpty(stream.getContent());\n        return dataSource.getProgressiveMediaSourceFactory().createMediaSource(\n                new MediaItem.Builder()\n                        .setTag(metadata)\n                        .setUri(Uri.parse(stream.getContent()))\n                        .setCustomCacheKey(cacheKey)\n                        .build());","sourceCodeStart":263,"sourceCodeEnd":299,"githubUrl":"https://github.com/TeamNewPipe/NewPipe/blob/9e8be091560a69f35d44bd252eb00bc7911c977b/app/src/main/java/org/schabi/newpipe/player/resolver/PlaybackResolver.java#L263-L299","documentation":"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.","triggerScenarios":"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.","commonSituations":"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.","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."],"exampleFix":null,"handlingStrategy":"validation","validationCode":"final DeliveryMethod dm = stream.getDeliveryMethod();\nif (dm != DeliveryMethod.PROGRESSIVE_HTTP && dm != DeliveryMethod.DASH\n        && dm != DeliveryMethod.HLS && dm != DeliveryMethod.SS) {\n    // skip this stream; do not call buildMediaSource\n}","typeGuard":null,"tryCatchPattern":"try {\n    return buildMediaSource(dataSource, stream, streamInfo, cacheKey, metadata);\n} catch (final ResolverException e) {\n    // unsupported delivery method (e.g. Torrent); skip stream\n}","preventionTips":["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."],"tags":["playback","resolver","media-source","delivery-method"],"backgroundTag":null,"analyzedSha":"9e8be091560a69f35d44bd252eb00bc7911c977b","analyzedAt":"2026-08-14T00:11:33.519Z","schemaVersion":2},"datasetVersion":"2026-08-14T00:17:13.853Z"}