remotion-dev/remotion · error
Unsupported track type ${strh.fccType}
Error message
Unsupported track type ${strh.fccType} What it means
Thrown in getTracksFromAvi() after a stream is checked: the parser handles video streams (strf.type === 'strf-box-video') and audio streams (fccType === 'auds'). Any other RIFF stream type — 'txts' (text/subtitles), 'mids' (MIDI), 'ibus' (ibus), 'jpeg', etc. — reaches the else branch and throws.
Source
Thrown at packages/media-parser/src/containers/riff/get-tracks-from-avi.ts:136
for (const box of boxes) {
const strh = getStrhBox(box.children);
if (!strh) {
continue;
}
const {strf} = strh;
if (strf.type === 'strf-box-video') {
tracks.push(
addAvcProfileToTrack(
makeAviVideoTrack({strh, strf, index: i}),
state.riff.getAvcProfile(),
),
);
} else if (strh.fccType === 'auds') {
tracks.push(makeAviAudioTrack({strf, index: i}));
} else {
throw new Error(`Unsupported track type ${strh.fccType}`);
}
i++;
}
return tracks;
};
export const hasAllTracksFromAvi = (state: ParserState): boolean => {
try {
const structure = state.structure.getRiffStructure();
const numberOfTracks = getNumberOfTracks(structure);
const tracks = getTracksFromAvi(structure, state);
return (
tracks.length === numberOfTracks &&
!tracks.find(
(t) => t.type === 'video' && t.codec === TO_BE_OVERRIDDEN_LATER,
)View on GitHub (pinned to 78fe4bb3fd)
Solutions
- Remux the AVI and drop non-AV streams: ffmpeg -i in.avi -map 0:v -map 0:a -c copy out.avi
- Transcode to a cleaner container: ffmpeg -i in.avi -map 0:v -map 0:a -c:v libx264 -c:a aac out.mp4 (MP4 is better supported).
- Pre-scan streams with ffprobe and reject AVIs that contain auxiliary stream types.
Example fix
// before
await parseMediaStream({src: 'multistream.avi'}); // has txts stream
// after: drop non-AV streams
// ffmpeg -i multistream.avi -map 0:v -map 0:a -c copy out.avi
await parseMediaStream({src: 'out.avi'}); Defensive patterns
Strategy: validation
Validate before calling
// Pre-check with ffprobe that only video/audio streams exist in the AVI. // ffprobe -v error -show_entries stream=codec_type -of csv in.avi // Expect only 'video' and 'audio' lines.
Type guard
type SupportedAviFccType = 'vids' | 'auds';
function isSupportedAviStreamType(t: string): t is SupportedAviFccType {
return t === 'vids' || t === 'auds';
} Try / catch
try {
await parseMediaStream({src: 'in.avi'});
} catch (err) {
if (err instanceof Error && err.message.startsWith('Unsupported track type')) {
// remux dropping non-AV streams: ffmpeg -i in.avi -map 0:v -map 0:a -c copy out.avi
} else throw err;
} Prevention
- Strip subtitle/data streams from AVIs before parsing.
- Prefer remuxing to MP4 which handles auxiliary streams differently.
- Inspect codec_type list with ffprobe before parsing.
When it happens
Trigger: An AVI containing a non-audio/non-video stream: embedded subtitles, MIDI, custom data streams, or vendor extension chunks mistakenly typed as a stream.
Common situations: AVIs with embedded subtitle streams (common in fansub/dual-audio releases); AVIs with attached chapter/text data; AVIs produced by capture tools that write auxiliary streams.
Related errors
- File type ${fileType} not supported
- Unsupported audio format ${strf.formatTag}
- Unsupported video codec ${strh.handler}
- Unsupported fccType: ${fccType}
- Not a RIFF file
AI-assisted analysis of remotion-dev/remotion@78fe4bb3fd (2026-08-12).
Data as JSON: /api/errors/6659e6ff703972b4.
Report an issue: GitHub.