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

  1. Free disk space and retry the render
  2. Update Remotion so the bundled compositor/ffmpeg binaries are current
  3. Render without fast start (disable the option) to isolate whether the faststart step is the culprit
  4. 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

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


AI-assisted analysis of remotion-dev/remotion@8f97758157 (2026-08-28). Data as JSON: /api/errors/28d9b93585d7fac0. Report an issue: GitHub.