diff --git a/packages/engine/src/services/audioMixer.ts b/packages/engine/src/services/audioMixer.ts index 60221e6a9..2a928776f 100644 --- a/packages/engine/src/services/audioMixer.ts +++ b/packages/engine/src/services/audioMixer.ts @@ -308,6 +308,7 @@ export async function processCompositionAudio( totalDuration: number, signal?: AbortSignal, config?: Partial>, + compiledDir?: string, ): Promise { const startMs = Date.now(); const tracks: AudioTrack[] = []; @@ -324,7 +325,9 @@ export async function processCompositionAudio( try { let srcPath = element.src; if (!srcPath.startsWith("/") && !isHttpUrl(srcPath)) { - srcPath = join(baseDir, srcPath); + const fromCompiled = compiledDir ? join(compiledDir, srcPath) : null; + srcPath = + fromCompiled && existsSync(fromCompiled) ? fromCompiled : join(baseDir, srcPath); } if (isHttpUrl(srcPath)) { @@ -339,7 +342,7 @@ export async function processCompositionAudio( } if (!existsSync(srcPath)) { - errors.push(`Source not found: ${element.id}`); + errors.push(`Source not found: ${element.id} (${element.src})`); return; } diff --git a/packages/engine/src/services/videoFrameExtractor.ts b/packages/engine/src/services/videoFrameExtractor.ts index e66ec2f73..d9ffc2649 100644 --- a/packages/engine/src/services/videoFrameExtractor.ts +++ b/packages/engine/src/services/videoFrameExtractor.ts @@ -201,6 +201,7 @@ export async function extractAllVideoFrames( options: ExtractionOptions, signal?: AbortSignal, config?: Partial>, + compiledDir?: string, ): Promise { const startTime = Date.now(); const extracted: ExtractedFrames[] = []; @@ -216,7 +217,9 @@ export async function extractAllVideoFrames( try { let videoPath = video.src; if (!videoPath.startsWith("/") && !isHttpUrl(videoPath)) { - videoPath = join(baseDir, videoPath); + const fromCompiled = compiledDir ? join(compiledDir, videoPath) : null; + videoPath = + fromCompiled && existsSync(fromCompiled) ? fromCompiled : join(baseDir, videoPath); } if (isHttpUrl(videoPath)) { diff --git a/packages/producer/src/services/renderOrchestrator.ts b/packages/producer/src/services/renderOrchestrator.ts index 8bc14558a..69a86a72f 100644 --- a/packages/producer/src/services/renderOrchestrator.ts +++ b/packages/producer/src/services/renderOrchestrator.ts @@ -692,6 +692,7 @@ export async function executeRenderJob( updateJobStatus(job, "preprocessing", "Extracting video frames", 10, onProgress); let frameLookup: FrameLookupTable | null = null; + const compiledDir = join(workDir, "compiled"); if (composition.videos.length > 0) { const extractionResult = await extractAllVideoFrames( @@ -699,6 +700,8 @@ export async function executeRenderJob( projectDir, { fps: job.config.fps, outputDir: join(workDir, "video-frames") }, abortSignal, + undefined, + compiledDir, ); assertNotAborted(); @@ -747,6 +750,8 @@ export async function executeRenderJob( audioOutputPath, job.duration, abortSignal, + undefined, + compiledDir, ); assertNotAborted();