SubtitleEdit/subtitleedit · error · InvalidOperationException
MXF contained {subtitleTexts.Count} candidate subtitle essen
Error message
MXF contained {subtitleTexts.Count} candidate subtitle essence(s) but none parsed as a known format: {filePath} What it means
Thrown when an MXF contains candidate subtitle essences (non-empty GetSubtitles()) and no track-number filter is active, yet none of those essences parsed as any known subtitle format. Each essence's content was tried against the format detectors and all failed, so the tracks list stayed empty.
Source
Thrown at src/seconv/Core/ContainerSubtitleLoader.cs:229
$"[yellow]Warning: MXF essence #{trackNumber} doesn't parse as a known subtitle format; skipped.[/]");
trackNumber++;
continue;
}
subtitle.Renumber();
// Use "mxf_track{n}" as the language-suffix slot so multi-track MXFs produce
// stably-named outputs (mirrors the teletext_<page> / dvb_pid<n> conventions).
tracks.Add(new LoadedTrack(subtitle, format, $"mxf_track{trackNumber}", trackNumber));
trackNumber++;
}
if (tracks.Count == 0)
{
if (options.TrackNumbers.Count > 0)
{
throw new InvalidOperationException(
$"MXF contained {subtitleTexts.Count} essence(s) but none matched --track-number ({string.Join(",", options.TrackNumbers)}): {filePath}");
}
throw new InvalidOperationException(
$"MXF contained {subtitleTexts.Count} candidate subtitle essence(s) but none parsed as a known format: {filePath}");
}
return tracks;
}
private static List<LoadedTrack> LoadMatroska(string filePath, ConversionOptions options)
{
var tracks = new List<LoadedTrack>();
using var matroska = new MatroskaFile(filePath);
if (!matroska.IsValid)
{
throw new InvalidOperationException($"Invalid Matroska file: {filePath}");
}
var subtitleTracks = matroska.GetTracks(true);
if (subtitleTracks.Count == 0)
{View on GitHub (pinned to 17a9f07487)
Solutions
- Extract one essence's raw text and inspect its structure to identify the format.
- If it is a known format LibSE supports, ensure the version of Nikse.SubtitleEdit.Core bundled with seconv recognises it.
- If it is unsupported, pre-convert the essence to SRT/ASS with another tool, then run seconv on the converted file.
Defensive patterns
Strategy: try-catch
Validate before calling
// Extract one essence's raw text and try a known format parser manually before bulk load. // (No public pre-detection API; the loader's per-essence detection is authoritative.)
Try / catch
try { tracks = ContainerSubtitleLoader.TryLoadTracks(mxfPath, options); }
catch (InvalidOperationException ex) when (ex.Message.Contains("none parsed as a known format"))
{ Console.Error.WriteLine($"Unrecognised subtitle format in {mxfPath}; pre-convert to SRT/ASS."); return; } Prevention
- Pre-convert MXF subtitle essences to SRT/ASS with a supported tool when the format is exotic.
- Catch the 'none parsed' InvalidOperationException and route to a format-conversion step.
- Keep LibSE/seconv updated so newly supported formats are recognised.
When it happens
Trigger: Loading an MXF whose text essences hold subtitle data in a format seconv/LibSE does not recognise — the per-essence format detection (ContainerSubtitleLoader.cs around the subtitle.Renumber() block) returns no match for any essence.
Common situations: A proprietary or new subtitle syntax inside the MXF; an essence that is actually non-subtitle text (metadata, SDP, etc.); a malformed/corrupted text essence that no format recognises.
Related errors
- Failed to parse MXF file '{filePath}': {ex.Message}
- No subtitle essences found in MXF: {filePath}
- MXF contains {images.Count} image essence(s) but no text sub
- MXF contained {subtitleTexts.Count} essence(s) but none matc
- No subtitle tracks in MP4 file: {filePath}
AI-assisted analysis of SubtitleEdit/subtitleedit@17a9f07487 (2026-08-13).
Data as JSON: /api/errors/81a6053d1737fb7f.
Report an issue: GitHub.