diff --git a/packages/producer/src/services/htmlCompiler.ts b/packages/producer/src/services/htmlCompiler.ts index 557ec2dee..54f297c48 100644 --- a/packages/producer/src/services/htmlCompiler.ts +++ b/packages/producer/src/services/htmlCompiler.ts @@ -167,10 +167,19 @@ async function resolveMediaDuration( return { duration: 0, resolvedPath: filePath }; } - const metadata = - tagName === "video" - ? await extractMediaMetadata(filePath) - : await extractAudioMetadata(filePath); + let metadata: { durationSeconds: number }; + if (tagName === "video") { + metadata = await extractMediaMetadata(filePath); + } else { + try { + metadata = await extractAudioMetadata(filePath); + } catch { + // Source file has no audio stream (e.g. a silent video used as an audio src). + // Return duration 0 so the element is excluded from the composition gracefully, + // matching how missing files and failed downloads are already handled above. + return { duration: 0, resolvedPath: filePath }; + } + } const fileDuration = metadata.durationSeconds; const effectiveDuration = fileDuration - mediaStart;