remotion-dev/remotion · error · TypeError
No `src` was passed to <Video>.
Error message
No `src` was passed to <Video>.
What it means
Thrown by <Video> (video-for-rendering) in @remotion/media when `src` is falsy during a server render. The render path requires a concrete URL to register the video asset for ffmpeg muxing, so an undefined or empty source aborts the render.
Source
Thrown at packages/media/src/video/video-for-rendering.tsx:100
style,
className,
fallbackOffthreadVideoProps,
audioStreamIndex,
disallowFallbackToOffthreadVideo,
_remotionInternalStack,
toneFrequency,
trimAfterValue,
trimBeforeValue,
headless,
onError,
credentials,
requestInit,
objectFit: objectFitProp,
effects,
...props
}) => {
if (!src) {
throw new TypeError('No `src` was passed to <Video>.');
}
const frame = useCurrentFrame();
const absoluteFrame = Internals.useTimelinePosition();
const {fps} = useVideoConfig();
const {registerRenderAsset, unregisterRenderAsset} = useContext(
Internals.RenderAssetManager,
);
const startsAt = Internals.useMediaStartsAt();
const sequenceContext = useContext(Internals.SequenceContext);
// Generate a string that's as unique as possible for this asset
// but at the same time the same on all threads
const id = useMemo(
() =>
`media-video-${random(
src,View on GitHub (pinned to 78fe4bb3fd)
Solutions
- Pass a valid video URL: <Video src={staticFile('clip.mp4')} /> or a remote URL.
- Conditionally render: {src && <Video src={src} />} to omit video when no source exists.
- Verify input props passed via --props or the render config include the expected src.
Example fix
// before
<Video src={props.videoUrl} /> // undefined at render
// after
{props.videoUrl ? <Video src={props.videoUrl} /> : null} Defensive patterns
Strategy: validation
Validate before calling
const videoSrc = typeof src === 'string' && src.length > 0 ? src : null;
return videoSrc ? <Video src={videoSrc} /> : null; Type guard
const isNonEmptyString = (v: unknown): v is string => typeof v === 'string' && v.trim().length > 0;
Prevention
- Validate that input props include a video src before rendering.
- Conditionally render <Video> when src may be absent.
- Resolve staticFile() paths eagerly at module scope.
When it happens
Trigger: Rendering <Video src={undefined} /> or <Video src={''} /> and running `remotion render`. The check fires on the render path specifically, after the component destructures props.
Common situations: Binding video src to input props that are missing in the render invocation, building src conditionally such that it is empty for the rendered composition, or forgetting staticFile() for a public/ asset.
Related errors
- No `src` was passed to <Audio>.
- The `<Video>` tag requires a string for `src`, but got ${JSO
- No src passed
- No src passed
- No `src` was passed to <NewAudioForPreview>.
AI-assisted analysis of remotion-dev/remotion@78fe4bb3fd (2026-08-12).
Data as JSON: /api/errors/768b45a071f31d7c.
Report an issue: GitHub.