{"record":{"id":"386049f540a1d743","repo":"TeamNewPipe/NewPipe","slug":"error-when-parsing-manual-ss-manifest","errorCode":null,"errorMessage":"Error when parsing manual SS manifest","messagePattern":"Error when parsing manual SS manifest","errorType":"exception","errorClass":"ResolverException","httpStatus":null,"severity":"error","filePath":"app/src/main/java/org/schabi/newpipe/player/resolver/PlaybackResolver.java","lineNumber":389,"sourceCode":"            throwResolverExceptionIfUrlNullOrEmpty(stream.getContent());\n            return dataSource.getSSMediaSourceFactory().createMediaSource(\n                    new MediaItem.Builder()\n                            .setTag(metadata)\n                            .setUri(Uri.parse(stream.getContent()))\n                            .setCustomCacheKey(cacheKey)\n                            .build());\n        }\n\n        final Uri manifestUri = manifestUrlToUri(stream.getManifestUrl());\n\n        final SsManifest smoothStreamingManifest;\n        try {\n            final ByteArrayInputStream smoothStreamingManifestInput = new ByteArrayInputStream(\n                    stream.getContent().getBytes(StandardCharsets.UTF_8));\n            smoothStreamingManifest = new SsManifestParser().parse(manifestUri,\n                    smoothStreamingManifestInput);\n        } catch (final IOException e) {\n            throw new ResolverException(\"Error when parsing manual SS manifest\", e);\n        }\n\n        return dataSource.getSSMediaSourceFactory().createMediaSource(\n                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,","sourceCodeStart":371,"sourceCodeEnd":407,"githubUrl":"https://github.com/TeamNewPipe/NewPipe/blob/9e8be091560a69f35d44bd252eb00bc7911c977b/app/src/main/java/org/schabi/newpipe/player/resolver/PlaybackResolver.java#L371-L407","documentation":"Thrown by PlaybackResolver.buildSSMediaSource when the inline SmoothStreaming manifest content cannot be parsed by SsManifestParser. The method reads stream.getContent() bytes and parses them; an IOException from the parser is wrapped as a ResolverException. Taken when an SS stream's content is inline text (not a URL).","triggerScenarios":"An SS (Smooth Streaming) stream whose content is an inline manifest string where SsManifestParser.parse throws an IOException while parsing the XML.","commonSituations":"Corrupt or malformed SmoothStreaming manifest generated/forwarded by the extractor, a parser/manifest version mismatch, truncated content, or an extractor bug producing invalid XML. SmoothStreaming is uncommon, so this usually appears for specific services that still serve it.","solutions":["Log and inspect the manifest string to locate the malformed element.","Update the extractor and ExoPlayer to align the manifest format with parser expectations.","Retry the fetch in case of transient truncation.","Fall back to HLS/DASH/progressive if SS playback consistently fails."],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":"try {\n    new SsManifestParser().parse(manifestUri,\n        new ByteArrayInputStream(stream.getContent().getBytes(UTF_8)));\n} catch (final IOException e) {\n    // SS manifest invalid; choose another stream\n}","typeGuard":null,"tryCatchPattern":"try {\n    return buildSSMediaSource(dataSource, stream, cacheKey, metadata);\n} catch (final ResolverException e) {\n    // SS parse failed; fall back to HLS/DASH/progressive\n}","preventionTips":["Inspect the manifest text when parsing fails.","Keep extractor and ExoPlayer versions aligned.","Provide a fallback delivery method when SS is unavailable or corrupt."],"tags":["playback","resolver","smooth-streaming","manifest-parsing","media-source"],"backgroundTag":null,"analyzedSha":"9e8be091560a69f35d44bd252eb00bc7911c977b","analyzedAt":"2026-08-14T00:11:33.519Z","schemaVersion":2},"datasetVersion":"2026-08-14T00:17:13.853Z"}