{"record":{"id":"8b58ff6e676c5669","repo":"TeamNewPipe/NewPipe","slug":"non-uri-progressive-contents-are-not-supported","errorCode":null,"errorMessage":"Non URI progressive contents are not supported","messagePattern":"Non URI progressive contents are not supported","errorType":"exception","errorClass":"ResolverException","httpStatus":null,"severity":"error","filePath":"app/src/main/java/org/schabi/newpipe/player/resolver/PlaybackResolver.java","lineNumber":291,"sourceCode":"            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());\n    }\n\n    private static DashMediaSource buildDashMediaSource(final PlayerDataSource dataSource,\n                                                        final Stream stream,\n                                                        final String cacheKey,\n                                                        final MediaItemTag metadata)\n            throws ResolverException {\n\n        if (stream.isUrl()) {\n            throwResolverExceptionIfUrlNullOrEmpty(stream.getContent());","sourceCodeStart":273,"sourceCodeEnd":309,"githubUrl":"https://github.com/TeamNewPipe/NewPipe/blob/9e8be091560a69f35d44bd252eb00bc7911c977b/app/src/main/java/org/schabi/newpipe/player/resolver/PlaybackResolver.java#L273-L309","documentation":"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.","triggerScenarios":"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.","commonSituations":"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.","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."],"exampleFix":null,"handlingStrategy":"validation","validationCode":"if (stream.getDeliveryMethod() == DeliveryMethod.PROGRESSIVE_HTTP && !stream.isUrl()) {\n    // skip; progressive content must be a URL\n}","typeGuard":null,"tryCatchPattern":"try {\n    return buildProgressiveMediaSource(dataSource, stream, cacheKey, metadata);\n} catch (final ResolverException e) {\n    // non-URL progressive content; fall back to another stream\n}","preventionTips":["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."],"tags":["playback","resolver","media-source","progressive","validation"],"backgroundTag":null,"analyzedSha":"9e8be091560a69f35d44bd252eb00bc7911c977b","analyzedAt":"2026-08-14T00:11:33.519Z","schemaVersion":2},"datasetVersion":"2026-08-14T00:17:13.853Z"}