{"record":{"id":"24ff8bf065b48191","repo":"TeamNewPipe/NewPipe","slug":"generation-of-youtube-dash-manifest-for-is-not","errorCode":null,"errorMessage":"Generation of YouTube DASH manifest for {} is not supported","messagePattern":"Generation of YouTube DASH manifest for (.+?) is not supported","errorType":"exception","errorClass":"ResolverException","httpStatus":null,"severity":"error","filePath":"app/src/main/java/org/schabi/newpipe/player/resolver/PlaybackResolver.java","lineNumber":411,"sourceCode":"                smoothStreamingManifest,\n                new MediaItem.Builder()\n                        .setTag(metadata)\n                        .setUri(manifestUri)\n                        .setCustomCacheKey(cacheKey)\n                        .build());\n    }\n    //endregion\n\n\n    //region YouTube media sources\n    private static MediaSource createYoutubeMediaSource(final Stream stream,\n                                                        final StreamInfo streamInfo,\n                                                        final PlayerDataSource dataSource,\n                                                        final String cacheKey,\n                                                        final MediaItemTag metadata)\n            throws ResolverException {\n        if (!(stream instanceof AudioStream || stream instanceof VideoStream)) {\n            throw new ResolverException(\"Generation of YouTube DASH manifest for \"\n                    + stream.getClass().getSimpleName() + \" is not supported\");\n        }\n\n        final StreamType streamType = streamInfo.getStreamType();\n        if (streamType == StreamType.VIDEO_STREAM) {\n            return createYoutubeMediaSourceOfVideoStreamType(dataSource, stream, streamInfo,\n                    cacheKey, metadata);\n        } else if (streamType == StreamType.POST_LIVE_STREAM) {\n            // If the content is not an URL, uses the DASH delivery method and if the stream type\n            // of the stream is a post live stream, it means that the content is an ended\n            // livestream so we need to generate the manifest corresponding to the content\n            // (which is the last segment of the stream)\n\n            try {\n                final ItagItem itagItem = Objects.requireNonNull(stream.getItagItem());\n                final String manifestString = YoutubePostLiveStreamDvrDashManifestCreator\n                        .fromPostLiveStreamDvrStreamingUrl(stream.getContent(),\n                                itagItem,","sourceCodeStart":393,"sourceCodeEnd":429,"githubUrl":"https://github.com/TeamNewPipe/NewPipe/blob/9e8be091560a69f35d44bd252eb00bc7911c977b/app/src/main/java/org/schabi/newpipe/player/resolver/PlaybackResolver.java#L393-L429","documentation":"Thrown by PlaybackResolver.createYoutubeMediaSource when the given stream is neither an AudioStream nor a VideoStream. YouTube DASH manifest generation is only implemented for audio and video streams; other stream types (e.g. subtitle streams) are rejected upfront. The exception message names the offending class.","triggerScenarios":"createYoutubeMediaSource is invoked with a Stream that is not an instance of AudioStream or VideoStream (for example a SubtitleStream). The instanceof guard fails and the exception is raised before any manifest logic runs.","commonSituations":"The resolver receives a subtitle or other non-A/V stream routed to the YouTube media-source path, or the extractor/service mismatch causes a wrong stream type to reach this method. Generally a logic/routing error rather than a server issue.","solutions":["Filter streams so only AudioStream/VideoStream are passed to createYoutubeMediaSource; route subtitles separately.","Review the call site in buildMediaSource to ensure only audio/video streams reach createYoutubeMediaSource.","Update the extractor if it is producing unexpected stream types for YouTube."],"exampleFix":null,"handlingStrategy":"validation","validationCode":"if (!(stream instanceof AudioStream) && !(stream instanceof VideoStream)) {\n    // do not route this stream to createYoutubeMediaSource\n}","typeGuard":"static boolean isYoutubePlayableStream(final Stream stream) {\n    return stream instanceof AudioStream || stream instanceof VideoStream;\n}","tryCatchPattern":"try {\n    return createYoutubeMediaSource(stream, streamInfo, dataSource, cacheKey, metadata);\n} catch (final ResolverException e) {\n    // non A/V stream cannot produce a YouTube DASH manifest; skip\n}","preventionTips":["Route only AudioStream/VideoStream to the YouTube media-source path.","Handle subtitles and other stream types through their own resolvers.","Review the dispatch logic in buildMediaSource to ensure correct typing."],"tags":["playback","resolver","youtube","media-source","type-check"],"backgroundTag":null,"analyzedSha":"9e8be091560a69f35d44bd252eb00bc7911c977b","analyzedAt":"2026-08-14T00:11:33.519Z","schemaVersion":2},"datasetVersion":"2026-08-14T00:17:13.853Z"}