remotion-dev/remotion · error

No src passed

Error message

No src passed

What it means

OffthreadVideoForRendering validates its `src` prop inside a useEffect and throws 'No src passed' when src is falsy (undefined, null, or empty string). The <OffthreadVideo> API requires a src pointing at the video asset to extract frames from.

Solutions

  1. Always pass a non-empty src, e.g. <OffthreadVideo src={staticFile('video.mp4')} />.
  2. Guard with a check before rendering: only mount OffthreadVideo when src is truthy.
  3. Verify dynamic data (JSON/API) actually contains the URL; add a fallback or throw a clearer error upstream.
  4. Check that imports of asset URLs are correct and not undefined.

Example fix

// before
<OffthreadVideo src={item.videoUrl} />
// after
{item.videoUrl ? <OffthreadVideo src={staticFile(item.videoUrl)} /> : null}
Defensive patterns

Strategy: validation

Validate before calling

if (!src) {
  throw new Error('OffthreadVideo requires a non-empty src');
}
return <OffthreadVideo src={src} />;

Type guard

const hasSrc = (src: unknown): src is string =>
  typeof src === 'string' && src.length > 0;

Try / catch

// Error is thrown in useEffect during render; validate props instead.
if (!hasSrc(src)) {
  return null; // or a placeholder
}
return <OffthreadVideo src={src} />;

Prevention

When it happens

Trigger: Rendering `<OffthreadVideo />` or `<OffthreadVideo src={undefined} />`, passing a variable that is empty/undefined at render time (e.g. staticFile result not yet computed, missing asset field in data), or conditionally building the src and accidentally passing ''.

Common situations: Data-driven videos where a JSON entry lacks a video URL, forgetting to wrap a local path with staticFile(), or an import resolving to undefined.

Understand the failure class

Background: "missing required argument" and "the following required arguments were not provided": what required-argument errors mean and how to fix them — this error's family across 20 libraries.

Related errors


AI-assisted analysis of remotion-dev/remotion@46a3a6bf13 (2026-09-18). Data as JSON: /api/errors/cb3db115ca121c21. Report an issue: GitHub.

Appendix: source

Thrown at packages/core/src/video/OffthreadVideoForRendering.tsx:111

		frame: volumePropsFrame,
		mediaVolume: 1,
	});

	warnAboutTooHighVolume(volume);
	const audioEnabled = useAudioEnabled();
	const {shouldUseAudio} = useMediaAudioState({
		muted,
		volume,
		audioEnabled,
	});

	if (!videoConfig) {
		throw new Error('No video config found');
	}

	useEffect(() => {
		if (!src) {
			throw new Error('No src passed');
		}

		if (!shouldUseAudio) {
			return;
		}

		registerRenderAsset({
			type: 'video',
			src: getAbsoluteSrc(src),
			id,
			frame: absoluteFrame,
			volume,
			mediaFrame: frame,
			playbackRate,
			toneFrequency,
			audioStartFrame: Math.max(
				0,
				-(sequenceContext?.cumulatedNegativeFrom ?? 0),

View on GitHub (pinned to 46a3a6bf13)