diff --git a/packages/producer/src/services/renderOrchestrator.ts b/packages/producer/src/services/renderOrchestrator.ts
index 5670de9ab..db2f22020 100644
--- a/packages/producer/src/services/renderOrchestrator.ts
+++ b/packages/producer/src/services/renderOrchestrator.ts
@@ -79,12 +79,7 @@ import {
VIRTUAL_TIME_SHIM,
} from "./fileServer.js";
import { defaultLogger, type ProducerLogger } from "../logger.js";
-import {
- createCompiledFrameSrcResolver,
- createMemorySampler,
- type MemorySampler,
- updateJobStatus,
-} from "./render/shared.js";
+import { createMemorySampler, type MemorySampler, updateJobStatus } from "./render/shared.js";
import { buildRenderErrorDetails, cleanupRenderResources, safeCleanup } from "./render/cleanup.js";
import { normalizeErrorMessage } from "../utils/errorMessage.js";
import { formatCaptureFrameName } from "../utils/paths.js";
@@ -1210,12 +1205,40 @@ export async function executeRenderJob(
videoMetadataHints,
skipReadinessVideoIds: videoReadinessSkipIds,
});
- const frameSrcResolver = createCompiledFrameSrcResolver(compiledDir);
+ // The URL-served frame path (PR #596) hands each injected `
` a
+ // fileServer URL instead of a base64 data URI, on the theory that
+ // shipping a short URL through `page.evaluate` beats shipping a
+ // multi-MB base64 string per frame. That holds when the fileServer
+ // is otherwise idle — but on video-heavy compositions, the same
+ // fileServer also serves every `