{"record":{"id":"ebba712ec2b0fcc8","repo":"SubtitleEdit/subtitleedit","slug":"no-vobsub-subtitle-packets-found-in-the-input-vob","errorCode":null,"errorMessage":"No VobSub subtitle packets found in the input VOB(s). DVD audio-only chunks (VTS_xx_0.VOB) carry no subtitles — subtitles live in VTS_xx_1.VOB and later.","messagePattern":"No VobSub subtitle packets found in the input VOB\\(s\\)\\. DVD audio-only chunks \\(VTS_xx_0\\.VOB\\) carry no subtitles — subtitles live in VTS_xx_1\\.VOB and later\\.","errorType":"exception","errorClass":"InvalidOperationException","httpStatus":null,"severity":"error","filePath":"src/seconv/Core/VobSubExtractor.cs","lineNumber":63,"sourceCode":"            // here and the .idx ends up at the wrong path (e.g. movie → \"vie\"+\"idx\"\n            // = \"vieidx\"). Caller normalises, but assert just in case.\n            throw new ArgumentException(\"subOutputPath must end in '.sub'\", nameof(subOutputPath));\n        }\n\n        // Parse every VOB into per-stream merged packs. DVDs assign continuous PTS\n        // across VOB chunks of the same title, so packs from later VOBs naturally\n        // land after earlier ones in playback time.\n        var allPacks = new List<VobSubMergedPack>();\n        foreach (var vob in vobFiles)\n        {\n            var parser = new VobSubParser(isPal);\n            parser.Open(vob);\n            allPacks.AddRange(parser.MergeVobSubPacks());\n        }\n\n        if (allPacks.Count == 0)\n        {\n            throw new InvalidOperationException(\n                \"No VobSub subtitle packets found in the input VOB(s). \"\n                + \"DVD audio-only chunks (VTS_xx_0.VOB) carry no subtitles — subtitles live in VTS_xx_1.VOB and later.\");\n        }\n\n        // Group by DVD subpicture stream ID (one stream ≙ one subtitle language).\n        // Sorting by Key keeps the per-stream output indices stable across reruns.\n        var streams = allPacks\n            .GroupBy(p => p.StreamId)\n            .OrderBy(g => g.Key)\n            .ToList();\n\n        var outputs = new List<StreamOutput>(streams.Count);\n        for (var i = 0; i < streams.Count; i++)\n        {\n            var streamId = streams[i].Key;\n            var streamPacks = streams[i].OrderBy(p => p.StartTime.Ticks).ToList();\n\n            var outputPath = streams.Count == 1","sourceCodeStart":45,"sourceCodeEnd":81,"githubUrl":"https://github.com/SubtitleEdit/subtitleedit/blob/17a9f0748781032255db3526b7215d2fb891e3af/src/seconv/Core/VobSubExtractor.cs#L45-L81","documentation":"Thrown by VobSubExtractor.Extract after parsing every supplied VOB produced zero VobSubMergedPacks. The most common cause named in the message: the supplied file is the DVD's audio-only menu chunk (VTS_xx_0.VOB), which carries no subpictures. Subtitles live in VTS_xx_1.VOB and later.","triggerScenarios":"All supplied VOBs were parsed by VobSubParser/MergeVobSubPacks and allPacks.Count == 0.","commonSituations":"User pointed the extractor at VTS_01_0.VOB (menu/audio) instead of VTS_01_1.VOB..VTS_01_n.VOB; the VOB is from a title with no subtitles; corrupt/incomplete rip with the subtitle stream stripped.","solutions":["Supply VTS_xx_1.VOB through VTS_xx_n.VOB for the title (the subtitle-bearing chunks), not VTS_xx_0.VOB.","If you only have a single concatenated VOB, make sure it is the movie title, not the menu.","Verify with a tool like `vobsub2srt`/`mkvextract`/`lsdvd` that the title actually has subtitle streams; re-rip if stripped."],"exampleFix":"// before\nseconv VTS_01_0.VOB vobsub ...     // audio/menu chunk\n// after\nseconv VTS_01_1.VOB VTS_01_2.VOB vobsub ...","handlingStrategy":"validation","validationCode":"// Quick pre-check: warn the user if they only passed VTS_xx_0.VOB\nif (vobFiles.All(f => Regex.IsMatch(Path.GetFileName(f), @\"VTS_[0-9]+_[0-9]0.VOB\", RegexOptions.IgnoreCase)))\n    warnings.Add(\"Only VTS_xx_0.VOB supplied — these are audio/menu chunks. Use VTS_xx_1.VOB and later.\");","typeGuard":"null","tryCatchPattern":"null","preventionTips":["Supply VTS_xx_1.VOB..VTS_xx_n.VOB for the movie title.","Use lsdvd / MediaInfo to confirm a title has subtitle streams before ripping.","Avoid pointing the extractor at menu (0) chunks."],"tags":["seconv","vobsub","dvd","wrong-file","empty-result"],"backgroundTag":null,"analyzedSha":"17a9f0748781032255db3526b7215d2fb891e3af","analyzedAt":"2026-08-13T18:11:43.374Z","schemaVersion":2},"datasetVersion":"2026-08-13T19:17:28.613Z"}