remotion-dev/remotion · error

${support.detailedReason}

Error message

${support.detailedReason}

What it means

The video matting queue verifies WebGPU support (including the selected model) via canUseVideoMatting({model}) before loading the model. If unsupported, support.detailedReason is thrown as the job's error.

Source

Thrown at packages/studio/src/components/RenderQueue/VideoMattingQueueProcessor.tsx:35

		markVideoMattingJobFailed,
		setProcessVideoMattingJobCallback,
		updateVideoMattingJobProgress,
	} = useContext(RenderQueueContext);

	const processJob = useCallback(
		async (job: VideoMattingJob) => {
			let outputs: Awaited<ReturnType<typeof separateVideoLayers>> | null =
				null;
			let processingError: Error | null = null;
			try {
				updateVideoMattingJobProgress(job.id, {
					detail: null,
					message: 'Checking WebGPU support...',
					value: 0,
				});
				const support = await canUseVideoMatting({model: job.model});
				if (!support.supported) {
					throw new Error(support.detailedReason);
				}

				await loadModelForJob({
					model: job.model,
					progressStart: 0,
					progressSpan: 0.2,
					isModelCached: (model) => isVideoMattingModelCached({model}),
					loadModel: (model, onProgress) =>
						loadVideoMattingModel({
							model,
							onProgress: (progress) => onProgress(progress.progress),
						}),
					updateProgress: (progress) =>
						updateVideoMattingJobProgress(job.id, {
							...progress,
							detail: null,
						}),
				});

View on GitHub (pinned to b2f4e34732)

Solutions

  1. Open the Studio in a WebGPU-capable browser (latest Chrome/Edge) with hardware acceleration enabled
  2. Read detailedReason to identify whether it is a browser, driver, or model-specific limitation and address it
  3. Choose a smaller/supported matting model for the available hardware
  4. Update GPU drivers / unblock WebGPU in browser settings

Example fix

// before
const support = await canUseVideoMatting({model: job.model});
await runMatting(job);
// after
const support = await canUseVideoMatting({model: job.model});
if (support.supported) {
  await runMatting(job);
} else {
  console.warn(`Video matting unavailable: ${support.detailedReason}`);
}
Defensive patterns

Strategy: validation

Validate before calling

const support = await canUseVideoMatting({model: job.model});
if (!support.supported) {
  throw new Error(`Matting unavailable: ${support.detailedReason}`);
}

Type guard

const mattingReady = async (model: string): Promise<boolean> => (await canUseVideoMatting({model})).supported;

Try / catch

try {
  await runMattingJob(job);
} catch (e) {
  markJobFailed(job.id, (e as Error).message);
}

Prevention

When it happens

Trigger: canUseVideoMatting({model: job.model}) returns {supported: false} — no WebGPU in the browser, insufficient GPU, or the specific model not supported in the current environment.

Common situations: Browser without WebGPU support; older Safari; GPU-disallowed contexts; selecting a heavy model on unsupported hardware; remote/headless Studio sessions.

Related errors


AI-assisted analysis of remotion-dev/remotion@b2f4e34732 (2026-09-09). Data as JSON: /api/errors/59d58de785392b91. Report an issue: GitHub.