{"record":{"id":"c05b83736e730e5a","repo":"remotion-dev/remotion","slug":"mp3-files-with-vbri-are-currently-unsupported-beca","errorCode":null,"errorMessage":"MP3 files with VBRI are currently unsupported because we have no sample file. Submit this file at remotion.dev/report if you would like us to support this file.","messagePattern":"MP3 files with VBRI are currently unsupported because we have no sample file\\. Submit this file at remotion\\.dev/report if you would like us to support this file\\.","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/media-parser/src/containers/mp3/parse-mpeg-header.ts","lineNumber":57,"sourceCode":"\t\t\tthrow new Error(\n\t\t\t\t`Bitrate mismatch at offset ${initialOffset}: ${bitrateInKbit} !== ${cbrMp3Info.bitrateInKbit}`,\n\t\t\t);\n\t\t}\n\t}\n\n\tconst offsetNow = iterator.counter.getOffset();\n\titerator.counter.decrement(offsetNow - initialOffset);\n\tconst data = iterator.getSlice(frameLength);\n\n\tif (state.callbacks.tracks.getTracks().length === 0) {\n\t\tconst info: Mp3Info = {\n\t\t\tlayer,\n\t\t\tmpegVersion,\n\t\t\tsampleRate,\n\t\t};\n\t\tconst asText = new TextDecoder().decode(data);\n\t\tif (asText.includes('VBRI')) {\n\t\t\tthrow new Error(\n\t\t\t\t'MP3 files with VBRI are currently unsupported because we have no sample file. Submit this file at remotion.dev/report if you would like us to support this file.',\n\t\t\t);\n\t\t}\n\n\t\tif (asText.includes('Info')) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst isVbr = asText.includes('Xing');\n\t\tif (isVbr) {\n\t\t\tconst xingData = parseXing(data);\n\t\t\tLog.verbose(\n\t\t\t\tstate.logLevel,\n\t\t\t\t'MP3 has variable bit rate. Requiring whole file to be read',\n\t\t\t);\n\t\t\tstate.mp3.setMp3BitrateInfo({\n\t\t\t\ttype: 'variable',\n\t\t\t\txingData,","sourceCodeStart":39,"sourceCodeEnd":75,"githubUrl":"https://github.com/remotion-dev/remotion/blob/78fe4bb3fdb5a2cd68724393d63cb223db333fa7/packages/media-parser/src/containers/mp3/parse-mpeg-header.ts#L39-L75","documentation":"Thrown when an MP3 file's first frame contains a `VBRI` header (the Fraunhofer Encoder variable-bitrate format). The library currently supports only Xing headers for VBR detection and has no sample VBRI file to implement or test against, so it explicitly rejects these files with a request to submit them.","triggerScenarios":"During first-frame parsing in `parseMpegHeader`, the decoded frame text includes the string `'VBRI'` (checked at `parse-mpeg-header.ts:56`). This indicates the file uses the Fraunhofer VBR header format rather than the Xing format the parser supports.","commonSituations":"MP3 files produced by the Fraunhofer encoder or certain older professional audio tools. Files exported from specific DAWs or broadcasting software that default to VBRI. Rare in consumer-grade encoders like LAME (which use Xing).","solutions":["Re-encode the MP3 using LAME or ffmpeg so it uses a Xing header instead of VBRI: `ffmpeg -i input.mp3 -codec:a libmp3lame -qscale:a 2 output.mp3`.","Convert the file to a different supported format (AAC/M4A, WAV, Ogg Vorbis).","Submit the file at remotion.dev/report so the library can add VBRI support.","Use an alternative media parsing library that supports VBRI headers."],"exampleFix":"# re-encode to replace VBRI with Xing header\nffmpeg -i input.mp3 -codec:a libmp3lame -qscale:a 2 output.mp3","handlingStrategy":"try-catch","validationCode":"// Check for VBRI header before parsing\nasync function hasVbriNotXing(file: File): Promise<boolean> {\n  const buf = await file.slice(0, 4096).arrayBuffer();\n  const text = new TextDecoder().decode(new Uint8Array(buf));\n  return text.includes('VBRI') && !text.includes('Xing');\n}","typeGuard":null,"tryCatchPattern":"try {\n  await parseMedia({src, fields: {durationInSeconds: true}});\n} catch (e) {\n  if (e instanceof Error && e.message.includes('VBRI')) {\n    console.error('VBRI VBR MP3 is unsupported. Re-encode with LAME/ffmpeg.');\n  }\n  throw e;\n}","preventionTips":["Re-encode MP3 files with LAME or ffmpeg to replace VBRI headers with Xing.","Use ffmpeg -i input.mp3 -codec:a libmp3lame -qscale:a 2 output.mp3.","If VBRI is from the Fraunhofer encoder, switch to a LAME-based encoder.","Submit VBRI files at remotion.dev/report to help add support."],"tags":["mp3","vbr","vbri-header","unsupported-format","fraunhofer"],"backgroundTag":null,"analyzedSha":"78fe4bb3fdb5a2cd68724393d63cb223db333fa7","analyzedAt":"2026-08-12T17:18:50.444Z","schemaVersion":2},"datasetVersion":"2026-08-12T18:17:37.767Z"}