SubtitleEdit/subtitleedit · error · InvalidOperationException
No subtitles recognised in VobSub file: {subPath}
Error message
No subtitles recognised in VobSub file: {subPath} What it means
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.
Source
Thrown at src/seconv/Core/ContainerSubtitleLoader.cs:411
return [new LoadedTrack(subtitle, mcc, string.Empty, null)];
}
private static List<LoadedTrack> LoadBluRaySup(string filePath, ConversionOptions options)
{
var subtitle = ImageOcrLoader.LoadBluRaySup(filePath, options);
if (subtitle.Paragraphs.Count == 0)
{
throw new InvalidOperationException($"No subtitles recognised in Blu-Ray sup file: {filePath}");
}
return [new LoadedTrack(subtitle, new SubRip(), string.Empty, null)];
}
private static List<LoadedTrack> LoadVobSub(string subPath, string idxPath, ConversionOptions options)
{
var subtitle = ImageOcrLoader.LoadVobSub(subPath, idxPath, options);
if (subtitle.Paragraphs.Count == 0)
{
throw new InvalidOperationException($"No subtitles recognised in VobSub file: {subPath}");
}
return [new LoadedTrack(subtitle, new SubRip(), string.Empty, null)];
}
private static List<LoadedTrack> LoadTransportStream(string filePath, ConversionOptions options)
{
var tracks = new List<LoadedTrack>();
// 1. Teletext — already text, no OCR needed
if (!options.SkipTeletext)
{
var parser = new TransportStreamParser();
parser.Parse(filePath, null);
foreach (var pidEntry in parser.TeletextSubtitlesLookup)
{
foreach (var pageEntry in pidEntry.Value)
{
if (options.TeletextOnlyPage.HasValue && pageEntry.Key != options.TeletextOnlyPage.Value)View on GitHub (pinned to 17a9f07487)
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.
Defensive patterns
Strategy: try-catch
Validate before calling
// Confirm the .sub/.idx pair is readable before OCR.
if (!BitmapSubtitleLoader.IsBinaryVobSub(subPath))
return Error($"Not a binary VobSub .sub: {subPath}"); Try / catch
try { tracks = ContainerSubtitleLoader.TryLoadTracks(filePath, options); }
catch (InvalidOperationException ex) when (ex.Message.Contains("VobSub file"))
{ Console.Error.WriteLine(ex.Message); return; } Prevention
- 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.
When it happens
Trigger: 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).
Common situations: A truncated .sub; a .sub whose .idx timing is missing/mismatched; an MPEG-PS .sub with corrupt subpicture payloads; an empty placeholder file.
Related errors
- VobSub '.idx' input has no companion '.sub' ({Path.GetFileNa
- VobSub '.idx' input has no companion '.sub' ({Path.GetFileNa
- No VobSub subtitles in MKV track #{track.TrackNumber}.
- No VobSub subpictures found in MP4 track.
- No subtitle essences found in MXF: {filePath}
AI-assisted analysis of SubtitleEdit/subtitleedit@17a9f07487 (2026-08-13).
Data as JSON: /api/errors/0100fdb1a0527f9b.
Report an issue: GitHub.