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

  1. Extract one essence's raw text and inspect its structure to identify the format.
  2. If it is a known format LibSE supports, ensure the version of Nikse.SubtitleEdit.Core bundled with seconv recognises it.
  3. 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

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


AI-assisted analysis of SubtitleEdit/subtitleedit@17a9f07487 (2026-08-13). Data as JSON: /api/errors/81a6053d1737fb7f. Report an issue: GitHub.