{"record":{"id":"0100fdb1a0527f9b","repo":"SubtitleEdit/subtitleedit","slug":"no-subtitles-recognised-in-vobsub-file-subpath","errorCode":null,"errorMessage":"No subtitles recognised in VobSub file: {subPath}","messagePattern":"No subtitles recognised in VobSub file: (.+?)","errorType":"exception","errorClass":"InvalidOperationException","httpStatus":null,"severity":"error","filePath":"src/seconv/Core/ContainerSubtitleLoader.cs","lineNumber":411,"sourceCode":"        return [new LoadedTrack(subtitle, mcc, string.Empty, null)];\n    }\n\n    private static List<LoadedTrack> LoadBluRaySup(string filePath, ConversionOptions options)\n    {\n        var subtitle = ImageOcrLoader.LoadBluRaySup(filePath, options);\n        if (subtitle.Paragraphs.Count == 0)\n        {\n            throw new InvalidOperationException($\"No subtitles recognised in Blu-Ray sup file: {filePath}\");\n        }\n        return [new LoadedTrack(subtitle, new SubRip(), string.Empty, null)];\n    }\n\n    private static List<LoadedTrack> LoadVobSub(string subPath, string idxPath, ConversionOptions options)\n    {\n        var subtitle = ImageOcrLoader.LoadVobSub(subPath, idxPath, options);\n        if (subtitle.Paragraphs.Count == 0)\n        {\n            throw new InvalidOperationException($\"No subtitles recognised in VobSub file: {subPath}\");\n        }\n        return [new LoadedTrack(subtitle, new SubRip(), string.Empty, null)];\n    }\n\n    private static List<LoadedTrack> LoadTransportStream(string filePath, ConversionOptions options)\n    {\n        var tracks = new List<LoadedTrack>();\n\n        // 1. Teletext — already text, no OCR needed\n        if (!options.SkipTeletext)\n        {\n            var parser = new TransportStreamParser();\n            parser.Parse(filePath, null);\n            foreach (var pidEntry in parser.TeletextSubtitlesLookup)\n            {\n                foreach (var pageEntry in pidEntry.Value)\n                {\n                    if (options.TeletextOnlyPage.HasValue && pageEntry.Key != options.TeletextOnlyPage.Value)","sourceCodeStart":393,"sourceCodeEnd":429,"githubUrl":"https://github.com/SubtitleEdit/subtitleedit/blob/17a9f0748781032255db3526b7215d2fb891e3af/src/seconv/Core/ContainerSubtitleLoader.cs#L393-L429","documentation":"Thrown by LoadVobSub when ImageOcrLoader.LoadVobSub(subPath, idxPath, options) returned a Subtitle with zero paragraphs. The .sub was opened but no renderable/decodable subpicture events were produced, so conversion cannot proceed.","triggerScenarios":"Passing a .sub (with or without .idx) where the MPEG-PS subpicture stream has no usable packs, or OCR/timecode extraction yielded no paragraphs (ContainerSubtitleLoader.cs:409). Reached via the .sub route (line 79) or the .idx route (line 117).","commonSituations":"A truncated .sub; a .sub whose .idx timing is missing/mismatched; an MPEG-PS .sub with corrupt subpicture payloads; an empty placeholder file.","solutions":["Verify the .sub/.idx pair opens in a VobSub-capable player or BDSup2Sub.","Re-extract the VobSub from the original DVD/VOB with a reliable tool.","Ensure the .idx and .sub basenames match and are in the same directory."],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":"// Confirm the .sub/.idx pair is readable before OCR.\nif (!BitmapSubtitleLoader.IsBinaryVobSub(subPath))\n    return Error($\"Not a binary VobSub .sub: {subPath}\");","typeGuard":null,"tryCatchPattern":"try { tracks = ContainerSubtitleLoader.TryLoadTracks(filePath, options); }\ncatch (InvalidOperationException ex) when (ex.Message.Contains(\"VobSub file\"))\n{ Console.Error.WriteLine(ex.Message); return; }","preventionTips":["Verify the .sub/.idx pair opens in a VobSub-capable tool before conversion.","Keep .idx and .sub basenames matching and co-located.","Re-extract VobSub from the original DVD/VOB when the .sub is truncated."],"tags":["vobsub","sub","idx","subtitle","no-content"],"backgroundTag":null,"analyzedSha":"17a9f0748781032255db3526b7215d2fb891e3af","analyzedAt":"2026-08-13T18:11:43.374Z","schemaVersion":2},"datasetVersion":"2026-08-13T19:17:28.613Z"}