{"record":{"id":"321a328b8ddb3850","repo":"remotion-dev/remotion","slug":"no-src-passed","errorCode":null,"errorMessage":"No src passed","messagePattern":"No src passed","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"packages/core/src/audio/AudioForRendering.tsx","lineNumber":101,"sourceCode":"\t\tvolume: volumeProp,\n\t\tframe: volumePropFrame,\n\t\tmediaVolume: 1,\n\t});\n\twarnAboutTooHighVolume(volume);\n\tconst audioEnabled = useAudioEnabled();\n\tconst {shouldUseAudio} = useMediaAudioState({\n\t\tmuted: props.muted ?? false,\n\t\tvolume,\n\t\taudioEnabled,\n\t});\n\n\tuseImperativeHandle(ref, () => {\n\t\treturn audioRef.current as HTMLVideoElement;\n\t}, []);\n\n\tuseEffect(() => {\n\t\tif (!props.src) {\n\t\t\tthrow new Error('No src passed');\n\t\t}\n\n\t\tif (!shouldUseAudio) {\n\t\t\treturn;\n\t\t}\n\n\t\tregisterRenderAsset({\n\t\t\ttype: 'audio',\n\t\t\tsrc: getAbsoluteSrc(props.src),\n\t\t\tid,\n\t\t\tframe: absoluteFrame,\n\t\t\tvolume,\n\t\t\tmediaFrame: frame,\n\t\t\tplaybackRate: props.playbackRate ?? 1,\n\t\t\ttoneFrequency: toneFrequency ?? 1,\n\t\t\taudioStartFrame: Math.max(\n\t\t\t\t0,\n\t\t\t\t-(sequenceContext?.cumulatedNegativeFrom ?? 0),","sourceCodeStart":83,"sourceCodeEnd":119,"githubUrl":"https://github.com/remotion-dev/remotion/blob/46a3a6bf13ca367376ff18bbb06dae2e87e0d068/packages/core/src/audio/AudioForRendering.tsx#L83-L119","documentation":"Thrown inside the render-path AudioForRendering useEffect when props.src is falsy. During server-side rendering Remotion must register a render asset for each audio tag; a missing src makes registration impossible.","triggerScenarios":"Rendering a composition that contains <Audio> with no src, or where src resolves to undefined at render time.","commonSituations":"Dynamic src that is undefined when rendering (e.g. import not bundled), conditional audio that still mounts during render, prop drilling that lost the value.","solutions":["Ensure src is a valid string before the composition renders.","Conditionally render <Audio> only when src exists.","If src is imported, confirm the bundler resolves it to a URL."],"exampleFix":"// before\n<Audio src={audioSrc} />\n\n// after\n{audioSrc ? <Audio src={audioSrc} /> : null}","handlingStrategy":"type-guard","validationCode":"if (!props.src || typeof props.src !== 'string') {\n  // skip mounting the audio component during render\n}","typeGuard":"const hasRenderAudioSrc = (v: unknown): v is string =>\n  typeof v === 'string' && v.length > 0;","tryCatchPattern":null,"preventionTips":["Ensure src resolves before render starts.","Conditionally render audio when src is confirmed present."],"tags":["audio","src","rendering","validation"],"backgroundTag":null,"analyzedSha":"46a3a6bf13ca367376ff18bbb06dae2e87e0d068","analyzedAt":"2026-09-18T00:12:20.256Z","contentChangedAt":"2026-09-18T00:12:20.256Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}