remotion-dev/remotion · error · Error
Expected av1 private data to be version 1, got
Error message
Expected av1 private data to be version 1, got ${version} What it means
After the leading marker bit, parseAv1PrivateData reads the next 7 bits as the AV1 codec-private version, which the spec fixes at 1. Any other version is rejected. The thrown value is the parsed version so you can see what was found.
Solutions
- Re-mux with a current ffmpeg/av1 toolchain.
- Validate headers with ffprobe.
- Use Mediabunny; try/catch fallback.
Example fix
# re-mux with current ffmpeg
ffmpeg -i in.webm -c copy out.webm
await parseMedia({ src: 'out.webm' }); Defensive patterns
Strategy: try-catch
Validate before calling
// ffprobe validates AV1 codec-private headers // ffprobe -v error -show_streams in.mkv
Try / catch
try {
await parseMedia({ src: 'in.mkv' });
} catch (err) {
if (err instanceof Error && /av1 private data to be version/i.test(err.message)) {
// re-mux with current toolchain
} else throw err;
} Prevention
- Keep your muxer/ffmpeg current for AV1 packaging.
- Probe files before parsing.
- Use Mediabunny.
When it happens
Trigger: An AV1 track whose CodecPrivate version field (bits 1-7) is not 1: a future/draft codec-private version, a corrupted header, or a non-conformant muxer.
Common situations: Newer AV1 packaging draft; corrupted bytes; older or non-standard muxers.
Related errors
- Expected av1 private data to be version 1
- Error parsing vorbis codec private
- Expected vorbis private data version 2
- No main segment
- No tracks segment
AI-assisted analysis of remotion-dev/remotion@78fe4bb3fd (2026-08-12).
Data as JSON: /api/errors/97f71d99188b6417.
Report an issue: GitHub.
Appendix: source
Thrown at packages/media-parser/src/containers/webm/av1-codec-private.ts:22
export const parseAv1PrivateData = (
data: Uint8Array,
colrAtom: ColorParameterBox | null,
) => {
const iterator = getArrayBufferIterator({
initialData: data,
maxBytes: data.byteLength,
logLevel: 'error',
});
iterator.startReadingBits();
if (iterator.getBits(1) !== 1) {
iterator.destroy();
throw new Error('Expected av1 private data to be version 1');
}
const version = iterator.getBits(7);
if (version !== 1) {
iterator.destroy();
throw new Error(
`Expected av1 private data to be version 1, got ${version}`,
);
}
let str = 'av01.';
// https://aomediacodec.github.io/av1-isobmff/#codecsparam
const seqProfile = iterator.getBits(3);
// Profile
str += seqProfile;
str += '.';
const seq_level_idx = iterator.getBits(5);
const seq_tier_0 = iterator.getBits(1);
// Level
// The level parameter value SHALL equal the first level value indicated by seq_level_idx in the Sequence Header OBU
str += String(seq_level_idx).padStart(2, '0');View on GitHub (pinned to 78fe4bb3fd)