SubtitleEdit/subtitleedit · error · InvalidOperationException
No subtitles recognised in Blu-Ray sup file: {filePath}
Error message
No subtitles recognised in Blu-Ray sup file: {filePath} What it means
Thrown by LoadBluRaySup when ImageOcrLoader.LoadBluRaySup returned a Subtitle whose Paragraphs list is empty. The .sup was parsed (BluRaySupParser did not throw) but yielded zero presentation composition segments, so there is nothing to convert.
Source
Thrown at src/seconv/Core/ContainerSubtitleLoader.cs:401
private static List<LoadedTrack> LoadMcc(string filePath)
{
var mcc = new MacCaption10();
if (!mcc.IsMine(null, filePath))
{
throw new InvalidOperationException($"File is not a valid MCC subtitle: {filePath}");
}
var subtitle = new Subtitle();
mcc.LoadSubtitle(subtitle, null, filePath);
subtitle.Renumber();
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>();
View on GitHub (pinned to 17a9f07487)
Solutions
- Validate the .sup with a BD/PGS tool (BDSup2Sub, ffmpeg) to confirm it has PCS entries.
- Re-demux the PGS from the original Blu-ray source (MakeMKV/eac3to).
- If the file is a different image format (.idx/.sub), pass the correct extension.
Defensive patterns
Strategy: try-catch
Validate before calling
// Pre-validate the .sup has PCS entries via the parser's log/output.
var log = new StringBuilder();
if (BluRaySupParser.ParseBluRaySup(filePath, log).Count == 0)
return Error($"No PCS entries in {filePath}"); Try / catch
try { tracks = ContainerSubtitleLoader.TryLoadTracks(filePath, options); }
catch (InvalidOperationException ex) when (ex.Message.Contains("Blu-Ray sup"))
{ Console.Error.WriteLine(ex.Message); return; } Prevention
- Validate the PGS .sup with BDSup2Sub/ffmpeg before conversion.
- Re-demux PGS from the original Blu-ray if PCS entries are missing.
- Catch the 'No subtitles recognised in Blu-Ray sup' exception and skip the file.
When it happens
Trigger: Passing a .sup file (ContainerSubtitleLoader.cs:74-76 routes .sup here) that BluRaySupParser.ParseBluRaySup reads but finds no valid PCS entries, or where OCR produced no paragraphs; the post-check at line 399 sees Paragraphs.Count == 0.
Common situations: A corrupt/truncated BD .sup; a .sup that is actually another format mis-named; a PGS file with only display/Windows segments and no composition segments; an empty placeholder.
Related errors
- No Blu-Ray sup subtitles found in: {filePath}
- Unable to access bitmap pixel data.
- No PGS subtitles in MKV track #{track.TrackNumber}.
- No Blu-Ray sup subtitles found in: {filePath}
- No subtitle essences found in MXF: {filePath}
AI-assisted analysis of SubtitleEdit/subtitleedit@17a9f07487 (2026-08-13).
Data as JSON: /api/errors/ffde4b38c1c7aa37.
Report an issue: GitHub.