{"record":{"id":"fa816c30bc553a60","repo":"SubtitleEdit/subtitleedit","slug":"no-subtitle-essences-found-in-mxf-filepath","errorCode":null,"errorMessage":"No subtitle essences found in MXF: {filePath}","messagePattern":"No subtitle essences found in MXF: (.+?)","errorType":"exception","errorClass":"InvalidOperationException","httpStatus":null,"severity":"error","filePath":"src/seconv/Core/ContainerSubtitleLoader.cs","lineNumber":182,"sourceCode":"        {\n            // Not a real MXF (no Header Partition Pack signature). Fall through to the\n            // text loader — the file might just have a misleading extension.\n            return null;\n        }\n\n        var subtitleTexts = parser.GetSubtitles();\n        var images = parser.GetImages();\n\n        if (subtitleTexts.Count == 0)\n        {\n            if (images.Count > 0)\n            {\n                throw new InvalidOperationException(\n                    $\"MXF contains {images.Count} image essence(s) but no text subtitles. \"\n                    + \"Image-based MXF subtitles (PNG essences) aren't supported yet — \"\n                    + \"the parser doesn't reconstruct per-essence PTS, so the bitmaps have no timing.\");\n            }\n            throw new InvalidOperationException($\"No subtitle essences found in MXF: {filePath}\");\n        }\n\n        if (images.Count > 0)\n        {\n            AnsiConsole.MarkupLine(\n                $\"[yellow]Note: MXF also contains {images.Count} image essence(s) — skipped (no timing context).[/]\");\n        }\n\n        var tracks = new List<LoadedTrack>();\n        var trackNumber = 1;\n        foreach (var subtitleText in subtitleTexts)\n        {\n            // Honour --track-number against the 1-based essence index — mirrors how\n            // LoadMatroska / LoadMp4 filter their multi-track inputs (line ~96).\n            if (options.TrackNumbers.Count > 0 && !options.TrackNumbers.Contains(trackNumber))\n            {\n                trackNumber++;\n                continue;","sourceCodeStart":164,"sourceCodeEnd":200,"githubUrl":"https://github.com/SubtitleEdit/subtitleedit/blob/17a9f0748781032255db3526b7215d2fb891e3af/src/seconv/Core/ContainerSubtitleLoader.cs#L164-L200","documentation":"Thrown when an MXF is valid but contains neither text subtitle essences nor image essences — both GetSubtitles() and GetImages() return empty lists. The file is structurally an MXF but carries no subtitle content at all, so there is nothing to extract.","triggerScenarios":"Loading a valid MXF (parser.IsValid true) where the subtitleTexts list (line 170) is empty and images.Count is also 0 — e.g. a video/audio-only MXF, or one whose subtitle essence was stripped.","commonSituations":"Pointing seconv at a video-only or audio-only MXF master; an MXF whose subtitle track was removed during re-wrapping; an MXF with an unrecognised/non-subtitle essence that the parser ignores.","solutions":["Confirm the MXF actually contains subtitle essences with ffprobe / an MXF inspector.","If subtitles exist in another track/container, target that source instead.","Re-wrap the original to include the subtitle essence."],"exampleFix":null,"handlingStrategy":"validation","validationCode":"// Probe for subtitle essences with ffprobe before invoking the loader.\n// (No direct public API; treat ffprobe output as the validation step.)\nvar hasSubs = ProbeHasSubtitleEssence(mxfPath);\nif (!hasSubs) return Error($\"No subtitle essences in {mxfPath}\");","typeGuard":null,"tryCatchPattern":"try { tracks = ContainerSubtitleLoader.TryLoadTracks(mxfPath, options); }\ncatch (InvalidOperationException ex) when (ex.Message.Contains(\"No subtitle essences\"))\n{ Console.Error.WriteLine(ex.Message); return; }","preventionTips":["Confirm with ffprobe that the MXF carries subtitle essences before converting.","Target video-only MXFs at a video tool, not seconv.","Re-wrap originals to retain subtitle essences if they were stripped."],"tags":["mxf","no-content","subtitle","container"],"backgroundTag":null,"analyzedSha":"17a9f0748781032255db3526b7215d2fb891e3af","analyzedAt":"2026-08-13T18:11:43.374Z","schemaVersion":2},"datasetVersion":"2026-08-13T19:17:28.613Z"}