remotion-dev/remotion · error · Error
No tracks segment
Error message
No tracks segment
What it means
After locating the main Segment, getTracksFromMatroska looks inside it for a Tracks element (ID 0x1654AE6B). If getTracksSegment returns null it throws 'No tracks segment' — the Segment exists but has no Tracks child, so no tracks can be resolved. This indicates a truncated/malformed Matroska or a stream parsed before Tracks arrived.
Source
Thrown at packages/media-parser/src/containers/webm/get-ready-tracks.ts:32
};
export const getTracksFromMatroska = ({
structureState,
webmState,
}: {
structureState: StructureState;
webmState: WebmState;
}): ResolvedAndUnresolvedTracks => {
const structure = structureState.getMatroskaStructure();
const mainSegment = getMainSegment(structure.boxes);
if (!mainSegment) {
throw new Error('No main segment');
}
const tracksSegment = getTracksSegment(mainSegment);
if (!tracksSegment) {
throw new Error('No tracks segment');
}
const resolvedTracks: MediaParserTrack[] = [];
const missingInfo: MediaParserTrack[] = [];
for (const trackEntrySegment of tracksSegment.value) {
if (trackEntrySegment.type === 'Crc32') {
continue;
}
if (trackEntrySegment.type !== 'TrackEntry') {
throw new Error('Expected track entry segment');
}
const track = getTrack({
track: trackEntrySegment,
timescale: webmState.getTimescale(),
});View on GitHub (pinned to 78fe4bb3fd)
Solutions
- Check with ffprobe that tracks are present.
- Re-mux: ffmpeg -i in.mkv -c copy out.mkv.
- Use Mediabunny; try/catch parseMedia().
Example fix
# validate tracks exist, then re-mux
ffprobe -v error -show_streams in.mkv && ffmpeg -i in.mkv -c copy out.mkv
await parseMedia({ src: 'out.mkv' }); Defensive patterns
Strategy: try-catch
Validate before calling
// confirm tracks exist before parsing // ffprobe -v error -show_streams in.mkv (prints streams => Tracks element present)
Try / catch
try {
await parseMedia({ src: 'in.mkv' });
} catch (err) {
if (err instanceof Error && /No tracks segment/.test(err.message)) {
// Segment has no Tracks — re-mux or skip
} else throw err;
} Prevention
- Re-mux truncated MKV/WebM with ffmpeg so Tracks is written.
- Validate with ffprobe -show_streams before parsing.
- Use Mediabunny.
When it happens
Trigger: parseMedia() on a Matroska/WebM whose Segment lacks a Tracks element: truncated file (cut before Tracks), a muxer that wrote Segment info but no Tracks, or a live stream parsed too early.
Common situations: Truncated download; incomplete mux; live stream read before Tracks; corrupted EBML tree.
Related errors
- No main segment
- Expected av1 private data to be version 1
- Expected av1 private data to be version 1, got ${version}
- Expected vorbis private data version 2
- Error parsing vorbis codec private
AI-assisted analysis of remotion-dev/remotion@78fe4bb3fd (2026-08-12).
Data as JSON: /api/errors/31eb7e37d2f01c87.
Report an issue: GitHub.