remotion-dev/remotion · error · Error
The start time for inline audio asset ${asset.id} changed fr
Error message
The start time for inline audio asset ${asset.id} changed from ${startTimesInSamples[filePath]} to ${startInSamples} samples What it means
finalizeFastStart retries the faststart (moov relocation) post-processing up to 3 attempts. If after all retries no output file was produced (the tool never wrote the expected file), it throws this terminal error.
Source
Thrown at packages/renderer/src/assets/inline-audio-mixing.ts:213
const fileDescriptor = openFiles[filePath];
toneFrequencies[filePath] = asset.toneFrequency;
const assetStartInVideo = asset.startInVideo ?? firstFrame;
const firstFrameForAsset = Math.max(assetStartInVideo, firstFrame);
const startInSamples = Math.max(
0,
Math.floor(
correctFloatingPointError(
((firstFrameForAsset - firstFrame) / fps - trimLeftOffset) *
sampleRate,
),
),
);
if (
startTimesInSamples[filePath] !== undefined &&
startTimesInSamples[filePath] !== startInSamples
) {
throw new Error(
`The start time for inline audio asset ${asset.id} changed from ${startTimesInSamples[filePath]} to ${startInSamples} samples`,
);
}
startTimesInSamples[filePath] = startInSamples;
let arr = new Int16Array(asset.audio);
const isFirst = asset.frame === firstFrame;
const isLast = asset.frame === totalNumberOfFrames + firstFrame - 1;
const samplesToShaveFromStart = trimLeftOffset * sampleRate;
const samplesToShaveFromEnd = trimRightOffset * sampleRate;
// Higher tolerance is needed for floating point videos
// Rendering https://github.com/remotion-dev/remotion/pull/5920 in native frame rate
// could hit this case
if (isFirst) {
arr = arr.slice(View on GitHub (pinned to 8f97758157)
Solutions
- Free disk space and retry the render
- Update Remotion so the bundled compositor/ffmpeg binaries are current
- Render without fast start (disable the option) to isolate whether the faststart step is the culprit
- Check that the output directory is writable and not shared by concurrent renders
Defensive patterns
Strategy: retry
Validate before calling
import {promises} from 'fs';
try { await promises.access(outDir); } catch { /* ensure output dir exists */ } Try / catch
for (let i = 0; i < 3; i++) { try { return await finalizeFastStart(...); } catch (e) { if (!e.message.includes('Fast Start finalization')) throw e; await sleep(1000 * (i + 1)); } } Prevention
- Monitor disk space in the output directory
- Keep compositor binaries updated with Remotion releases
- Avoid concurrent renders sharing one output path
When it happens
Trigger: Rendering with fast start enabled when the ffmpeg/compositor faststart step exits without error but also without emitting the output file, e.g. due to disk issues, a corrupted intermediate file, or a compositor binary bug.
Common situations: Running out of disk space in the output directory, a broken/outdated Rust compositor binary, or concurrent renders racing over the same intermediate files.
Related errors
- FFmpeg stdin is not available while trying to pipe frame ${f
- Could not find ${library} DLL for ${arch}
- No audio stream found in '${input_path}'. Ensure the video c
- Not enough planes or linesizes
- Could not find audio stream in ${src}
AI-assisted analysis of remotion-dev/remotion@8f97758157 (2026-08-28).
Data as JSON: /api/errors/28d9b93585d7fac0.
Report an issue: GitHub.