remotion-dev/remotion · error · Error

Multiple frame ranges are not supported on Cloud Run. Use re

Error message

Multiple frame ranges are not supported on Cloud Run. Use renderMedia() locally to render multiple ranges.

What it means

Thrown by renderMediaOnCloudRun() when the frameRange parameter is a nested array (e.g., [[0,10],[20,30]]), indicating multiple frame ranges. Cloud Run rendering only supports a single contiguous frame range per render job.

Source

Thrown at packages/cloudrun/src/api/render-media-on-cloudrun.ts:370

	logLevel,
	delayRenderTimeoutInMilliseconds,
	concurrency,
	enforceAudioTrack,
	preferLossless,
	offthreadVideoCacheSizeInBytes,
	colorSpace,
	downloadBehavior,
	metadata,
	renderIdOverride,
	renderStatusWebhook,
	offthreadVideoThreads,
	mediaCacheSizeInBytes,
	sampleRate,
}: RenderMediaOnCloudrunInput): Promise<
	RenderMediaOnCloudrunOutput | CloudRunCrashResponse
> => {
	if (Array.isArray(frameRange) && Array.isArray(frameRange[0])) {
		throw new Error(
			'Multiple frame ranges are not supported on Cloud Run. Use renderMedia() locally to render multiple ranges.',
		);
	}

	return internalRenderMediaOnCloudrun({
		cloudRunUrl: cloudRunUrl ?? undefined,
		serviceName: serviceName ?? undefined,
		region,
		serveUrl,
		composition,
		inputProps: inputProps ?? {},
		codec,
		forceBucketName: forceBucketName ?? undefined,
		privacy: privacy ?? undefined,
		outName: outName ?? undefined,
		updateRenderProgress: updateRenderProgress ?? undefined,
		jpegQuality: jpegQuality ?? 80,
		audioCodec: audioCodec ?? undefined,

View on GitHub (pinned to 78fe4bb3fd)

Solutions

  1. Pass a single range: frameRange: [0, 60] or frameRange: 30.
  2. Render each range in a separate Cloud Run render call.
  3. Use renderMedia() locally if you truly need multi-range rendering in one job.

Example fix

// before
await renderMediaOnCloudRun({frameRange: [[0,30],[40,60]], ...});
// after
await renderMediaOnCloudRun({frameRange: [0, 60], ...});
// or render ranges separately
Defensive patterns

Strategy: validation

Validate before calling

function isSingleRange(r): boolean {
  return !Array.isArray(r) || !Array.isArray(r[0]);
}
if (!isSingleRange(frameRange)) {
  throw new Error('Cloud Run supports only a single frame range');
}
await renderMediaOnCloudRun({frameRange, ...});

Type guard

type SingleFrameRange = number | [number, number];
const isSingleFrameRange = (r): r is SingleFrameRange =>
  typeof r === 'number' || (Array.isArray(r) && typeof r[0] === 'number');

Prevention

When it happens

Trigger: Calling renderMediaOnCloudRun({frameRange: [[0,30], [40,60]], ...}) with an array-of-arrays structure.

Common situations: Copying a frameRange config from a local renderMedia() call that uses multi-range splitting, or programmatically generating ranges without flattening for the Cloud Run path.

Related errors


AI-assisted analysis of remotion-dev/remotion@78fe4bb3fd (2026-08-12). Data as JSON: /api/errors/ff2f527fbe42a44a. Report an issue: GitHub.