@hyperframes/engine 0.7.59 → 0.7.61
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -4
- package/dist/config.d.ts +95 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +131 -16
- package/dist/config.js.map +1 -1
- package/dist/index.d.ts +7 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -3
- package/dist/index.js.map +1 -1
- package/dist/services/audioMixer.d.ts.map +1 -1
- package/dist/services/audioMixer.js +38 -3
- package/dist/services/audioMixer.js.map +1 -1
- package/dist/services/browserLeasePool.d.ts +48 -0
- package/dist/services/browserLeasePool.d.ts.map +1 -0
- package/dist/services/browserLeasePool.js +210 -0
- package/dist/services/browserLeasePool.js.map +1 -0
- package/dist/services/browserManager.d.ts +6 -7
- package/dist/services/browserManager.d.ts.map +1 -1
- package/dist/services/browserManager.js +134 -177
- package/dist/services/browserManager.js.map +1 -1
- package/dist/services/chunkEncoder.d.ts.map +1 -1
- package/dist/services/chunkEncoder.js +45 -134
- package/dist/services/chunkEncoder.js.map +1 -1
- package/dist/services/frameCapture.d.ts +38 -1
- package/dist/services/frameCapture.d.ts.map +1 -1
- package/dist/services/frameCapture.js +119 -8
- package/dist/services/frameCapture.js.map +1 -1
- package/dist/services/pageNavigationTimeoutErrorHint.d.ts +79 -0
- package/dist/services/pageNavigationTimeoutErrorHint.d.ts.map +1 -0
- package/dist/services/pageNavigationTimeoutErrorHint.js +112 -0
- package/dist/services/pageNavigationTimeoutErrorHint.js.map +1 -0
- package/dist/services/parallelCoordinator.d.ts +21 -0
- package/dist/services/parallelCoordinator.d.ts.map +1 -1
- package/dist/services/parallelCoordinator.js +40 -1
- package/dist/services/parallelCoordinator.js.map +1 -1
- package/dist/services/protocolTimeoutErrorHint.d.ts +28 -0
- package/dist/services/protocolTimeoutErrorHint.d.ts.map +1 -0
- package/dist/services/protocolTimeoutErrorHint.js +45 -0
- package/dist/services/protocolTimeoutErrorHint.js.map +1 -0
- package/dist/services/streamingEncoder.d.ts.map +1 -1
- package/dist/services/streamingEncoder.js +23 -58
- package/dist/services/streamingEncoder.js.map +1 -1
- package/dist/services/systemMemory.d.ts.map +1 -1
- package/dist/services/systemMemory.js +4 -1
- package/dist/services/systemMemory.js.map +1 -1
- package/dist/services/videoFrameExtractor.d.ts +4 -5
- package/dist/services/videoFrameExtractor.d.ts.map +1 -1
- package/dist/services/videoFrameExtractor.js +57 -112
- package/dist/services/videoFrameExtractor.js.map +1 -1
- package/dist/types.d.ts +28 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/ffmpegBinaries.d.ts +2 -2
- package/dist/utils/ffmpegBinaries.d.ts.map +1 -1
- package/dist/utils/ffmpegBinaries.js +8 -82
- package/dist/utils/ffmpegBinaries.js.map +1 -1
- package/dist/utils/ffprobe.d.ts +3 -1
- package/dist/utils/ffprobe.d.ts.map +1 -1
- package/dist/utils/ffprobe.js +35 -42
- package/dist/utils/ffprobe.js.map +1 -1
- package/dist/utils/gpuEncoder.d.ts.map +1 -1
- package/dist/utils/gpuEncoder.js +32 -52
- package/dist/utils/gpuEncoder.js.map +1 -1
- package/dist/utils/gpuParityDiff.d.ts +142 -0
- package/dist/utils/gpuParityDiff.d.ts.map +1 -0
- package/dist/utils/gpuParityDiff.js +205 -0
- package/dist/utils/gpuParityDiff.js.map +1 -0
- package/dist/utils/managedChildProcess.d.ts +50 -0
- package/dist/utils/managedChildProcess.d.ts.map +1 -0
- package/dist/utils/managedChildProcess.js +148 -0
- package/dist/utils/managedChildProcess.js.map +1 -0
- package/dist/utils/processTracker.js +1 -1
- package/dist/utils/runFfmpeg.d.ts +3 -0
- package/dist/utils/runFfmpeg.d.ts.map +1 -1
- package/dist/utils/runFfmpeg.js +16 -50
- package/dist/utils/runFfmpeg.js.map +1 -1
- package/package.json +3 -2
package/README.md
CHANGED
|
@@ -35,7 +35,6 @@ The engine opens your HTML composition in a headless Chrome instance, seeks fram
|
|
|
35
35
|
```typescript
|
|
36
36
|
import {
|
|
37
37
|
acquireBrowser,
|
|
38
|
-
releaseBrowser,
|
|
39
38
|
createCaptureSession,
|
|
40
39
|
initializeSession,
|
|
41
40
|
captureFrame,
|
|
@@ -43,11 +42,11 @@ import {
|
|
|
43
42
|
} from "@hyperframes/engine";
|
|
44
43
|
|
|
45
44
|
// 1. Launch browser
|
|
46
|
-
const
|
|
45
|
+
const browserLease = await acquireBrowser({ captureMode: "beginFrame" });
|
|
47
46
|
|
|
48
47
|
// 2. Open a capture session
|
|
49
48
|
const session = createCaptureSession({
|
|
50
|
-
browser:
|
|
49
|
+
browser: browserLease.browser,
|
|
51
50
|
url: "http://localhost:3000/my-composition.html",
|
|
52
51
|
width: 1920,
|
|
53
52
|
height: 1080,
|
|
@@ -62,7 +61,7 @@ for (let i = 0; i < totalFrames; i++) {
|
|
|
62
61
|
|
|
63
62
|
// 4. Clean up
|
|
64
63
|
await closeCaptureSession(session);
|
|
65
|
-
await
|
|
64
|
+
await browserLease.release();
|
|
66
65
|
```
|
|
67
66
|
|
|
68
67
|
Most users should use `@hyperframes/producer` or the `hyperframes` CLI instead of calling the engine directly.
|
package/dist/config.d.ts
CHANGED
|
@@ -133,6 +133,15 @@ export interface EngineConfig {
|
|
|
133
133
|
enableChunkedEncode: boolean;
|
|
134
134
|
chunkSizeFrames: number;
|
|
135
135
|
enableStreamingEncode: boolean;
|
|
136
|
+
/**
|
|
137
|
+
* INTERNAL. Set by `resolveConfig` when the Windows software-GPU compound
|
|
138
|
+
* heuristic (`shouldAutoDisableStreamingEncodeOnWin32Compound`) turned
|
|
139
|
+
* `enableStreamingEncode` off on the caller's behalf. Not intended to be
|
|
140
|
+
* set by callers; surfaces the auto-decision for downstream observability
|
|
141
|
+
* (log lines, telemetry) so operators can tell an auto-disable apart from
|
|
142
|
+
* an explicit user opt-out.
|
|
143
|
+
*/
|
|
144
|
+
streamingEncodeAutoDisabledOnWin32Compound?: boolean;
|
|
136
145
|
/**
|
|
137
146
|
* Max composition duration eligible for streaming encode (seconds).
|
|
138
147
|
* Mirrors GSAP rendering's 4-minute streaming guard: production has seen
|
|
@@ -241,6 +250,92 @@ export declare function scaleProtocolTimeoutForComposition(baseTimeoutMs: number
|
|
|
241
250
|
width: number;
|
|
242
251
|
height: number;
|
|
243
252
|
}): number;
|
|
253
|
+
/**
|
|
254
|
+
* Auto-disable `enableStreamingEncode` on Windows software-GPU compound.
|
|
255
|
+
*
|
|
256
|
+
* Field signal (`ts=1784131903`, win32/x64, CLI 0.7.58, 156s UI-heavy
|
|
257
|
+
* composition): the render was stable ONLY with FOUR flags together —
|
|
258
|
+
* `--workers 1 --no-browser-gpu --low-memory-mode` + explicit
|
|
259
|
+
* `PRODUCER_ENABLE_STREAMING_ENCODE=false`. Every recent Windows-related
|
|
260
|
+
* fix (#2359, #2245, #2298, #2331) already shipped in 0.7.58; the residual
|
|
261
|
+
* failure is screenshot streaming-encode via CDP `Page.captureScreenshot`
|
|
262
|
+
* on Windows even after software fallback. Since `--low-memory-mode` and
|
|
263
|
+
* `--no-browser-gpu` already imply screenshot capture, three of the four
|
|
264
|
+
* flags are structurally coupled — auto-detect the compound and disable
|
|
265
|
+
* streaming-encode automatically so callers don't have to memorize the
|
|
266
|
+
* four-flag combination.
|
|
267
|
+
*
|
|
268
|
+
* Conservative gates (all must hold):
|
|
269
|
+
* 1. `platform === "win32"` — the failure is Windows-specific to CDP's
|
|
270
|
+
* screenshot streaming path.
|
|
271
|
+
* 2. `softwareGpuForced` — the render is already on the SwiftShader /
|
|
272
|
+
* forced-screenshot path (from `--no-browser-gpu`, `disableGpu`, or
|
|
273
|
+
* `--low-memory-mode` implying screenshot capture).
|
|
274
|
+
* 3. `workers === 1` — the field signal reproduces on single-worker
|
|
275
|
+
* captures; parallel workers have a different failure surface
|
|
276
|
+
* (missing media frames) already handled by the worker-count route.
|
|
277
|
+
* 4. Composition duration >120s WHEN KNOWN. When unknown at the config
|
|
278
|
+
* layer (composition duration is parsed downstream), the guard
|
|
279
|
+
* reduces to the three-condition compound. Trade-off documented in
|
|
280
|
+
* the PR body: false positives possible for short (~<120s) Windows
|
|
281
|
+
* software-GPU single-worker renders. Mitigation: the explicit
|
|
282
|
+
* opt-in escape hatch (`PRODUCER_ENABLE_STREAMING_ENCODE=true` or
|
|
283
|
+
* `overrides.enableStreamingEncode !== undefined`) always wins.
|
|
284
|
+
*
|
|
285
|
+
* Pure function; exported for tests.
|
|
286
|
+
*/
|
|
287
|
+
export declare function shouldAutoDisableStreamingEncodeOnWin32Compound(opts: {
|
|
288
|
+
platform: NodeJS.Platform;
|
|
289
|
+
softwareGpuForced: boolean;
|
|
290
|
+
workers: number;
|
|
291
|
+
compositionDurationSec: number | undefined;
|
|
292
|
+
userExplicitlySet: boolean;
|
|
293
|
+
}): boolean;
|
|
294
|
+
/**
|
|
295
|
+
* Result of resolving the extract cache directory from the env, decoupled from
|
|
296
|
+
* the wider {@link resolveConfig} pipeline so `hyperframes doctor` (and any
|
|
297
|
+
* other diagnostic surface) can report the exact same effective value the
|
|
298
|
+
* renderer will use — including whether the user has explicitly disabled the
|
|
299
|
+
* cache via `off`/`none`/`false`/`0`.
|
|
300
|
+
*
|
|
301
|
+
* - `dir: string` + `disabled: false` → renderer will use this directory.
|
|
302
|
+
* `source` reports whether the value came from the env or the OS default.
|
|
303
|
+
* - `dir: undefined` + `disabled: true` → user explicitly turned caching off;
|
|
304
|
+
* frames extract into the per-render workDir (auto-cleaned when the render
|
|
305
|
+
* ends). `rawValue` carries the exact string the user set.
|
|
306
|
+
*/
|
|
307
|
+
export type ExtractCacheDirResolution = {
|
|
308
|
+
dir: string;
|
|
309
|
+
disabled: false;
|
|
310
|
+
source: "env" | "default";
|
|
311
|
+
rawValue?: string;
|
|
312
|
+
} | {
|
|
313
|
+
dir: undefined;
|
|
314
|
+
disabled: true;
|
|
315
|
+
source: "env";
|
|
316
|
+
rawValue: string;
|
|
317
|
+
};
|
|
318
|
+
/**
|
|
319
|
+
* Env-var values that disable the extract cache entirely. Case-insensitive;
|
|
320
|
+
* whitespace-trimmed. Kept as an exported constant so the CLI can echo the
|
|
321
|
+
* accepted alias set in `--frames-cache-dir` help text without drift.
|
|
322
|
+
*/
|
|
323
|
+
export declare const EXTRACT_CACHE_DIR_DISABLED_ALIASES: readonly string[];
|
|
324
|
+
/**
|
|
325
|
+
* Compute the default extract-cache directory when the user has NOT set
|
|
326
|
+
* `HYPERFRAMES_EXTRACT_CACHE_DIR`. Exported so downstream tests can reproduce
|
|
327
|
+
* the exact path without duplicating the uid-suffix idiom.
|
|
328
|
+
*/
|
|
329
|
+
export declare function defaultExtractCacheDir(): string;
|
|
330
|
+
/**
|
|
331
|
+
* Resolve the extract-cache directory from an environment (defaults to
|
|
332
|
+
* `process.env`). Mirrors the internal helper used by {@link resolveConfig},
|
|
333
|
+
* but returns a rich resolution object so callers can distinguish "disabled by
|
|
334
|
+
* user" from "default location" without re-parsing the env value.
|
|
335
|
+
*
|
|
336
|
+
* See {@link ExtractCacheDirResolution} for the shape and its two states.
|
|
337
|
+
*/
|
|
338
|
+
export declare function resolveExtractCacheDir(env?: Record<string, string | undefined>): ExtractCacheDirResolution;
|
|
244
339
|
/**
|
|
245
340
|
* Resolve configuration by merging: defaults ← env vars ← explicit overrides.
|
|
246
341
|
* Env vars provide backward compatibility during migration; explicit config
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/config.js
CHANGED
|
@@ -94,6 +94,97 @@ export function scaleProtocolTimeoutForComposition(baseTimeoutMs, dims) {
|
|
|
94
94
|
const ceiling = Math.max(baseTimeoutMs, MAX_SCALED_PROTOCOL_TIMEOUT_MS);
|
|
95
95
|
return Math.min(ceiling, Math.max(baseTimeoutMs, scaled));
|
|
96
96
|
}
|
|
97
|
+
/**
|
|
98
|
+
* Auto-disable `enableStreamingEncode` on Windows software-GPU compound.
|
|
99
|
+
*
|
|
100
|
+
* Field signal (`ts=1784131903`, win32/x64, CLI 0.7.58, 156s UI-heavy
|
|
101
|
+
* composition): the render was stable ONLY with FOUR flags together —
|
|
102
|
+
* `--workers 1 --no-browser-gpu --low-memory-mode` + explicit
|
|
103
|
+
* `PRODUCER_ENABLE_STREAMING_ENCODE=false`. Every recent Windows-related
|
|
104
|
+
* fix (#2359, #2245, #2298, #2331) already shipped in 0.7.58; the residual
|
|
105
|
+
* failure is screenshot streaming-encode via CDP `Page.captureScreenshot`
|
|
106
|
+
* on Windows even after software fallback. Since `--low-memory-mode` and
|
|
107
|
+
* `--no-browser-gpu` already imply screenshot capture, three of the four
|
|
108
|
+
* flags are structurally coupled — auto-detect the compound and disable
|
|
109
|
+
* streaming-encode automatically so callers don't have to memorize the
|
|
110
|
+
* four-flag combination.
|
|
111
|
+
*
|
|
112
|
+
* Conservative gates (all must hold):
|
|
113
|
+
* 1. `platform === "win32"` — the failure is Windows-specific to CDP's
|
|
114
|
+
* screenshot streaming path.
|
|
115
|
+
* 2. `softwareGpuForced` — the render is already on the SwiftShader /
|
|
116
|
+
* forced-screenshot path (from `--no-browser-gpu`, `disableGpu`, or
|
|
117
|
+
* `--low-memory-mode` implying screenshot capture).
|
|
118
|
+
* 3. `workers === 1` — the field signal reproduces on single-worker
|
|
119
|
+
* captures; parallel workers have a different failure surface
|
|
120
|
+
* (missing media frames) already handled by the worker-count route.
|
|
121
|
+
* 4. Composition duration >120s WHEN KNOWN. When unknown at the config
|
|
122
|
+
* layer (composition duration is parsed downstream), the guard
|
|
123
|
+
* reduces to the three-condition compound. Trade-off documented in
|
|
124
|
+
* the PR body: false positives possible for short (~<120s) Windows
|
|
125
|
+
* software-GPU single-worker renders. Mitigation: the explicit
|
|
126
|
+
* opt-in escape hatch (`PRODUCER_ENABLE_STREAMING_ENCODE=true` or
|
|
127
|
+
* `overrides.enableStreamingEncode !== undefined`) always wins.
|
|
128
|
+
*
|
|
129
|
+
* Pure function; exported for tests.
|
|
130
|
+
*/
|
|
131
|
+
export function shouldAutoDisableStreamingEncodeOnWin32Compound(opts) {
|
|
132
|
+
if (opts.userExplicitlySet)
|
|
133
|
+
return false;
|
|
134
|
+
if (opts.platform !== "win32")
|
|
135
|
+
return false;
|
|
136
|
+
if (!opts.softwareGpuForced)
|
|
137
|
+
return false;
|
|
138
|
+
// Strict equality: NaN (concurrency: "auto") and fractional / zero worker
|
|
139
|
+
// counts do NOT match. The field-signal compound is `--workers 1`.
|
|
140
|
+
if (opts.workers !== 1)
|
|
141
|
+
return false;
|
|
142
|
+
// Duration boundary: when known, only auto-disable if >120s (avoid
|
|
143
|
+
// over-triggering on short renders). When unknown, skip this check —
|
|
144
|
+
// the three conditions above are already conservative on their own.
|
|
145
|
+
if (opts.compositionDurationSec !== undefined && opts.compositionDurationSec <= 120) {
|
|
146
|
+
return false;
|
|
147
|
+
}
|
|
148
|
+
return true;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Env-var values that disable the extract cache entirely. Case-insensitive;
|
|
152
|
+
* whitespace-trimmed. Kept as an exported constant so the CLI can echo the
|
|
153
|
+
* accepted alias set in `--frames-cache-dir` help text without drift.
|
|
154
|
+
*/
|
|
155
|
+
export const EXTRACT_CACHE_DIR_DISABLED_ALIASES = ["off", "none", "false", "0"];
|
|
156
|
+
/**
|
|
157
|
+
* Compute the default extract-cache directory when the user has NOT set
|
|
158
|
+
* `HYPERFRAMES_EXTRACT_CACHE_DIR`. Exported so downstream tests can reproduce
|
|
159
|
+
* the exact path without duplicating the uid-suffix idiom.
|
|
160
|
+
*/
|
|
161
|
+
export function defaultExtractCacheDir() {
|
|
162
|
+
return join(tmpdir(), `hyperframes-extract-cache-${process.getuid?.() ?? "u"}`);
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Resolve the extract-cache directory from an environment (defaults to
|
|
166
|
+
* `process.env`). Mirrors the internal helper used by {@link resolveConfig},
|
|
167
|
+
* but returns a rich resolution object so callers can distinguish "disabled by
|
|
168
|
+
* user" from "default location" without re-parsing the env value.
|
|
169
|
+
*
|
|
170
|
+
* See {@link ExtractCacheDirResolution} for the shape and its two states.
|
|
171
|
+
*/
|
|
172
|
+
export function resolveExtractCacheDir(env = process.env) {
|
|
173
|
+
const raw = env["HYPERFRAMES_EXTRACT_CACHE_DIR"];
|
|
174
|
+
if (raw === undefined) {
|
|
175
|
+
return { dir: defaultExtractCacheDir(), disabled: false, source: "default" };
|
|
176
|
+
}
|
|
177
|
+
const normalized = raw.trim().toLowerCase();
|
|
178
|
+
if (EXTRACT_CACHE_DIR_DISABLED_ALIASES.includes(normalized)) {
|
|
179
|
+
return { dir: undefined, disabled: true, source: "env", rawValue: raw };
|
|
180
|
+
}
|
|
181
|
+
return { dir: raw, disabled: false, source: "env", rawValue: raw };
|
|
182
|
+
}
|
|
183
|
+
function resolveExtractCacheDirFromEnv(env) {
|
|
184
|
+
const raw = env("HYPERFRAMES_EXTRACT_CACHE_DIR");
|
|
185
|
+
return resolveExtractCacheDir(raw === undefined ? {} : { HYPERFRAMES_EXTRACT_CACHE_DIR: raw })
|
|
186
|
+
.dir;
|
|
187
|
+
}
|
|
97
188
|
function memoryAdaptiveCacheLimit() {
|
|
98
189
|
const total = getSystemTotalMb();
|
|
99
190
|
if (total < 4096)
|
|
@@ -156,21 +247,6 @@ export function resolveConfig(overrides) {
|
|
|
156
247
|
const raw = env("HF_STATIC_DEDUP")?.trim().toLowerCase();
|
|
157
248
|
return !(raw === "false" || raw === "off" || raw === "0");
|
|
158
249
|
};
|
|
159
|
-
const resolveExtractCacheDir = () => {
|
|
160
|
-
const raw = env("HYPERFRAMES_EXTRACT_CACHE_DIR");
|
|
161
|
-
if (raw === undefined) {
|
|
162
|
-
return join(tmpdir(), `hyperframes-extract-cache-${process.getuid?.() ?? "u"}`);
|
|
163
|
-
}
|
|
164
|
-
const trimmed = raw.trim();
|
|
165
|
-
const normalized = trimmed.toLowerCase();
|
|
166
|
-
if (normalized === "off" ||
|
|
167
|
-
normalized === "none" ||
|
|
168
|
-
normalized === "false" ||
|
|
169
|
-
normalized === "0") {
|
|
170
|
-
return undefined;
|
|
171
|
-
}
|
|
172
|
-
return raw;
|
|
173
|
-
};
|
|
174
250
|
// Env-var layer (backward compat)
|
|
175
251
|
const fromEnv = {
|
|
176
252
|
concurrency: env("PRODUCER_MAX_WORKERS") ? Number(env("PRODUCER_MAX_WORKERS")) : undefined,
|
|
@@ -215,7 +291,7 @@ export function resolveConfig(overrides) {
|
|
|
215
291
|
pageNavigationTimeout: envNum("PRODUCER_PAGE_NAVIGATION_TIMEOUT_MS", DEFAULT_CONFIG.pageNavigationTimeout),
|
|
216
292
|
verifyRuntime: env("PRODUCER_VERIFY_HYPERFRAME_RUNTIME") !== "false",
|
|
217
293
|
runtimeManifestPath: env("PRODUCER_HYPERFRAME_MANIFEST_PATH"),
|
|
218
|
-
extractCacheDir:
|
|
294
|
+
extractCacheDir: resolveExtractCacheDirFromEnv(env),
|
|
219
295
|
extractCacheMaxBytes: envNum("HYPERFRAMES_EXTRACT_CACHE_MAX_MB", DEFAULT_CONFIG.extractCacheMaxBytes / 1024 ** 2) *
|
|
220
296
|
1024 ** 2,
|
|
221
297
|
};
|
|
@@ -287,6 +363,45 @@ export function resolveConfig(overrides) {
|
|
|
287
363
|
!explicitForceScreenshotOptOut) {
|
|
288
364
|
merged.forceScreenshot = true;
|
|
289
365
|
}
|
|
366
|
+
// Windows software-GPU compound auto-disable for streaming-encode.
|
|
367
|
+
//
|
|
368
|
+
// Field signal ts=1784131903 (win32/x64, CLI 0.7.58, 156s UI-heavy):
|
|
369
|
+
// stable ONLY with FOUR flags — `--workers 1 --no-browser-gpu
|
|
370
|
+
// --low-memory-mode` + `PRODUCER_ENABLE_STREAMING_ENCODE=false`. Since
|
|
371
|
+
// `--no-browser-gpu` and `--low-memory-mode` already imply screenshot
|
|
372
|
+
// capture, three of the four flags are structurally coupled: auto-detect
|
|
373
|
+
// the compound and disable streaming-encode on the caller's behalf.
|
|
374
|
+
//
|
|
375
|
+
// Explicit user intent wins: if `PRODUCER_ENABLE_STREAMING_ENCODE` env
|
|
376
|
+
// is set to any value OR the caller passed `overrides.enableStreamingEncode`,
|
|
377
|
+
// this clamp is a no-op (the user's explicit choice — including
|
|
378
|
+
// `PRODUCER_ENABLE_STREAMING_ENCODE=true` — is preserved).
|
|
379
|
+
//
|
|
380
|
+
// Composition duration is not known at the config-resolution layer
|
|
381
|
+
// (the composition is parsed downstream of `resolveConfig`), so this
|
|
382
|
+
// wire-up passes `compositionDurationSec: undefined` and the helper
|
|
383
|
+
// reduces to the three-condition compound. Trade-off documented in the
|
|
384
|
+
// helper's JSDoc and the PR body: false positives possible for short
|
|
385
|
+
// Windows software-GPU single-worker renders; the explicit opt-in
|
|
386
|
+
// escape hatch is the mitigation.
|
|
387
|
+
const streamingEncodeUserExplicitlySet = env("PRODUCER_ENABLE_STREAMING_ENCODE") !== undefined ||
|
|
388
|
+
overrides?.enableStreamingEncode !== undefined;
|
|
389
|
+
const softwareGpuForced = merged.browserGpuMode === "software" || merged.disableGpu || merged.lowMemoryMode;
|
|
390
|
+
const resolvedWorkers = typeof merged.concurrency === "number" ? merged.concurrency : NaN;
|
|
391
|
+
if (merged.enableStreamingEncode &&
|
|
392
|
+
shouldAutoDisableStreamingEncodeOnWin32Compound({
|
|
393
|
+
platform: process.platform,
|
|
394
|
+
softwareGpuForced,
|
|
395
|
+
workers: resolvedWorkers,
|
|
396
|
+
compositionDurationSec: undefined,
|
|
397
|
+
userExplicitlySet: streamingEncodeUserExplicitlySet,
|
|
398
|
+
})) {
|
|
399
|
+
merged.enableStreamingEncode = false;
|
|
400
|
+
merged.streamingEncodeAutoDisabledOnWin32Compound = true;
|
|
401
|
+
console.error("[hyperframes] Windows compound-workaround auto-detected — disabling streaming-encode " +
|
|
402
|
+
"(platform=win32, software-GPU forced, workers=1). Field signal ts=1784131903. " +
|
|
403
|
+
"Override: PRODUCER_ENABLE_STREAMING_ENCODE=true.");
|
|
404
|
+
}
|
|
290
405
|
// drawElement capture and page-side shader compositing are mutually
|
|
291
406
|
// incompatible capture strategies (drawElement reads paint records directly
|
|
292
407
|
// and bypasses the page-side prepare→composite→resolve protocol). When
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -30,11 +30,13 @@
|
|
|
30
30
|
*
|
|
31
31
|
*/
|
|
32
32
|
export type { HfProtocol, HfMediaElement, HfTransitionMeta, CaptureOptions, CaptureVideoMetadataHint, CaptureResult, CaptureBufferResult, CapturePerfSummary, CaptureWarning, CaptureWarningCode, SubTimelineWaitOutcome, } from "./types.js";
|
|
33
|
-
export { resolveConfig, DEFAULT_CONFIG, scaleProtocolTimeoutForComposition, shouldClampToScreenshotForConcreteGpu, applyConcreteGpuScreenshotClamp, type EngineConfig, } from "./config.js";
|
|
33
|
+
export { resolveConfig, DEFAULT_CONFIG, scaleProtocolTimeoutForComposition, shouldClampToScreenshotForConcreteGpu, applyConcreteGpuScreenshotClamp, resolveExtractCacheDir, defaultExtractCacheDir, EXTRACT_CACHE_DIR_DISABLED_ALIASES, type EngineConfig, type ExtractCacheDirResolution, } from "./config.js";
|
|
34
34
|
export { DEFAULT_VP9_CPU_USED, MAX_VP9_CPU_USED, MIN_VP9_CPU_USED, normalizeVp9CpuUsed, } from "./services/vp9Options.js";
|
|
35
35
|
export { getSystemTotalMb, isLowMemorySystem, LOW_MEMORY_TOTAL_MB_THRESHOLD, } from "./services/systemMemory.js";
|
|
36
|
-
export { acquireBrowser, releaseBrowser, drainBrowserPool, resolveHeadlessShellPath, resolveBrowserGpuMode, buildChromeArgs, ENABLE_BROWSER_POOL, type BuildChromeArgsOptions, type CaptureMode, type AcquiredBrowser, } from "./services/browserManager.js";
|
|
37
|
-
export {
|
|
36
|
+
export { acquireBrowser, releaseBrowser, drainBrowserPool, resolveHeadlessShellPath, resolveBrowserGpuMode, buildChromeArgs, ENABLE_BROWSER_POOL, BrowserLeasePool, type BuildChromeArgsOptions, type BrowserLaunchFingerprint, type BrowserLease, type BrowserPoolState, type CaptureMode, type AcquiredBrowser, } from "./services/browserManager.js";
|
|
37
|
+
export { augmentProtocolTimeoutError, isProtocolTimeoutError, } from "./services/protocolTimeoutErrorHint.js";
|
|
38
|
+
export { augmentPageNavigationTimeoutError, isPageNavigationTimeoutError, type NavigationTimeoutHintContext, } from "./services/pageNavigationTimeoutErrorHint.js";
|
|
39
|
+
export { createCaptureSession, initializeSession, closeCaptureSession, captureFrame, captureFrameToBuffer, captureFrameToBufferPipelined, captureFramesBatchPipelined, DrawElementVerificationError, isDrawElementVerificationError, getDrawElementVerificationDetails, type DrawElementVerificationDetails, recaptureDrawElementFrameForVerify, completeDeferredDrawElementInit, writeCapturedFrame, discardWarmupCapture, getCompositionDuration, getCapturePerfSummary, percentileOf, prepareCaptureSessionForReuse, type CaptureSession, isTransientBrowserError, isMemoryExhaustionError, type BeforeCaptureHook, type DiscardWarmupInnerCapture, } from "./services/frameCapture.js";
|
|
38
40
|
export { beginFrameCapture, pageScreenshotCapture, getCdpSession, injectVideoFramesBatch, syncVideoFrameVisibility, cdpSessionCache, probeBeginFrameLiveness, initTransparentBackground, captureAlphaPng, applyDomLayerMask, removeDomLayerMask, DOM_LAYER_MASK_STYLE_ID, type BeginFrameResult, } from "./services/screenshotService.js";
|
|
39
41
|
export { buildEncoderArgs, encodeFramesFromDir, encodeFramesChunkedConcat, muxVideoWithAudio, applyFaststart, detectGpuEncoder, ENCODER_PRESETS, getEncoderPreset, type GpuEncoder, } from "./services/chunkEncoder.js";
|
|
40
42
|
export type { EncoderOptions, EncodeResult, MuxResult } from "./services/chunkEncoder.types.js";
|
|
@@ -51,10 +53,12 @@ export { readWebGlVendorInfoFromCanvas } from "./utils/readWebGlVendorInfoFromCa
|
|
|
51
53
|
export { extractMediaMetadata, extractVideoMetadata, extractAudioMetadata, analyzeKeyframeIntervals, type VideoMetadata, type AudioMetadata, type KeyframeAnalysis, } from "./utils/ffprobe.js";
|
|
52
54
|
export { assertPublicHttpsUrl, downloadToTemp, isHttpUrl } from "./utils/urlDownloader.js";
|
|
53
55
|
export { runFfmpeg, formatFfmpegError, type RunFfmpegOptions, type RunFfmpegResult, } from "./utils/runFfmpeg.js";
|
|
56
|
+
export { ManagedChildProcess, type ManagedChildProcessOptions, type ManagedChildProcessOutcome, type ManagedProcessTerminationReason, } from "./utils/managedChildProcess.js";
|
|
54
57
|
export { assertConfiguredFfmpegBinariesExist, getFfmpegBinary, getFfprobeBinary, FFMPEG_PATH_ENV, FFPROBE_PATH_ENV, } from "./utils/ffmpegBinaries.js";
|
|
55
58
|
export { trackChildProcess, killTrackedProcesses } from "./utils/processTracker.js";
|
|
56
59
|
export { decodePng, decodePngToRgb48le, blitRgba8OverRgb48le, blitRgb48leRegion, blitRgb48leAffine, parseTransformMatrix, roundedRectAlpha, resampleRgb48leObjectFit, normalizeObjectFit, type ObjectFit, } from "./utils/alphaBlit.js";
|
|
57
60
|
export { groupIntoLayers, type CompositeLayer } from "./utils/layerCompositor.js";
|
|
61
|
+
export { diffGpuParityFrames, diffGpuParityPngs, verifyGpuParity, type RgbaFrame, type GpuParityDiffOptions, type GpuParityDiffResult, type BlackOnlyInARegion, type VerifyGpuParityResult, } from "./utils/gpuParityDiff.js";
|
|
58
62
|
export { type TransitionFn, TRANSITIONS, crossfade, sampleRgb48le, hdrToLinear, linearToHdr, convertTransfer, } from "./utils/shaderTransitions.js";
|
|
59
63
|
export { initHdrReadback, uploadAndReadbackHdrFrame, float16ToPqRgb, buildHdrChromeArgs, launchHdrBrowser, } from "./services/hdrCapture.js";
|
|
60
64
|
export { captureScreenshotWithAlpha } from "./services/screenshotService.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAGH,YAAY,EACV,UAAU,EACV,cAAc,EACd,gBAAgB,EAChB,cAAc,EACd,wBAAwB,EACxB,aAAa,EACb,mBAAmB,EACnB,kBAAkB,EAClB,cAAc,EACd,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,aAAa,EACb,cAAc,EACd,kCAAkC,EAClC,qCAAqC,EACrC,+BAA+B,EAC/B,KAAK,YAAY,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -30,13 +30,15 @@
|
|
|
30
30
|
*
|
|
31
31
|
*/
|
|
32
32
|
// ── Configuration ──────────────────────────────────────────────────────────────
|
|
33
|
-
export { resolveConfig, DEFAULT_CONFIG, scaleProtocolTimeoutForComposition, shouldClampToScreenshotForConcreteGpu, applyConcreteGpuScreenshotClamp, } from "./config.js";
|
|
33
|
+
export { resolveConfig, DEFAULT_CONFIG, scaleProtocolTimeoutForComposition, shouldClampToScreenshotForConcreteGpu, applyConcreteGpuScreenshotClamp, resolveExtractCacheDir, defaultExtractCacheDir, EXTRACT_CACHE_DIR_DISABLED_ALIASES, } from "./config.js";
|
|
34
34
|
export { DEFAULT_VP9_CPU_USED, MAX_VP9_CPU_USED, MIN_VP9_CPU_USED, normalizeVp9CpuUsed, } from "./services/vp9Options.js";
|
|
35
35
|
export { getSystemTotalMb, isLowMemorySystem, LOW_MEMORY_TOTAL_MB_THRESHOLD, } from "./services/systemMemory.js";
|
|
36
36
|
// ── Browser management ─────────────────────────────────────────────────────────
|
|
37
|
-
export { acquireBrowser, releaseBrowser, drainBrowserPool, resolveHeadlessShellPath, resolveBrowserGpuMode, buildChromeArgs, ENABLE_BROWSER_POOL, } from "./services/browserManager.js";
|
|
37
|
+
export { acquireBrowser, releaseBrowser, drainBrowserPool, resolveHeadlessShellPath, resolveBrowserGpuMode, buildChromeArgs, ENABLE_BROWSER_POOL, BrowserLeasePool, } from "./services/browserManager.js";
|
|
38
|
+
export { augmentProtocolTimeoutError, isProtocolTimeoutError, } from "./services/protocolTimeoutErrorHint.js";
|
|
39
|
+
export { augmentPageNavigationTimeoutError, isPageNavigationTimeoutError, } from "./services/pageNavigationTimeoutErrorHint.js";
|
|
38
40
|
// ── Frame capture pipeline ──────────────────────────────────────────────────────
|
|
39
|
-
export { createCaptureSession, initializeSession, closeCaptureSession, captureFrame, captureFrameToBuffer, captureFrameToBufferPipelined, captureFramesBatchPipelined, DrawElementVerificationError, isDrawElementVerificationError, getDrawElementVerificationDetails, recaptureDrawElementFrameForVerify, completeDeferredDrawElementInit, writeCapturedFrame, discardWarmupCapture, getCompositionDuration, getCapturePerfSummary, prepareCaptureSessionForReuse, isTransientBrowserError, isMemoryExhaustionError, } from "./services/frameCapture.js";
|
|
41
|
+
export { createCaptureSession, initializeSession, closeCaptureSession, captureFrame, captureFrameToBuffer, captureFrameToBufferPipelined, captureFramesBatchPipelined, DrawElementVerificationError, isDrawElementVerificationError, getDrawElementVerificationDetails, recaptureDrawElementFrameForVerify, completeDeferredDrawElementInit, writeCapturedFrame, discardWarmupCapture, getCompositionDuration, getCapturePerfSummary, percentileOf, prepareCaptureSessionForReuse, isTransientBrowserError, isMemoryExhaustionError, } from "./services/frameCapture.js";
|
|
40
42
|
// ── Screenshot (BeginFrame) ─────────────────────────────────────────────────────
|
|
41
43
|
export { beginFrameCapture, pageScreenshotCapture, getCdpSession, injectVideoFramesBatch, syncVideoFrameVisibility, cdpSessionCache, probeBeginFrameLiveness, initTransparentBackground, captureAlphaPng, applyDomLayerMask, removeDomLayerMask, DOM_LAYER_MASK_STYLE_ID, } from "./services/screenshotService.js";
|
|
42
44
|
// ── Encoding ───────────────────────────────────────────────────────────────────
|
|
@@ -57,10 +59,12 @@ export { readWebGlVendorInfoFromCanvas } from "./utils/readWebGlVendorInfoFromCa
|
|
|
57
59
|
export { extractMediaMetadata, extractVideoMetadata, extractAudioMetadata, analyzeKeyframeIntervals, } from "./utils/ffprobe.js";
|
|
58
60
|
export { assertPublicHttpsUrl, downloadToTemp, isHttpUrl } from "./utils/urlDownloader.js";
|
|
59
61
|
export { runFfmpeg, formatFfmpegError, } from "./utils/runFfmpeg.js";
|
|
62
|
+
export { ManagedChildProcess, } from "./utils/managedChildProcess.js";
|
|
60
63
|
export { assertConfiguredFfmpegBinariesExist, getFfmpegBinary, getFfprobeBinary, FFMPEG_PATH_ENV, FFPROBE_PATH_ENV, } from "./utils/ffmpegBinaries.js";
|
|
61
64
|
export { trackChildProcess, killTrackedProcesses } from "./utils/processTracker.js";
|
|
62
65
|
export { decodePng, decodePngToRgb48le, blitRgba8OverRgb48le, blitRgb48leRegion, blitRgb48leAffine, parseTransformMatrix, roundedRectAlpha, resampleRgb48leObjectFit, normalizeObjectFit, } from "./utils/alphaBlit.js";
|
|
63
66
|
export { groupIntoLayers } from "./utils/layerCompositor.js";
|
|
67
|
+
export { diffGpuParityFrames, diffGpuParityPngs, verifyGpuParity, } from "./utils/gpuParityDiff.js";
|
|
64
68
|
// ── Shader transitions ────────────────────────────────────────────────────────
|
|
65
69
|
export { TRANSITIONS, crossfade, sampleRgb48le, hdrToLinear, linearToHdr, convertTransfer, } from "./utils/shaderTransitions.js";
|
|
66
70
|
export { initHdrReadback, uploadAndReadbackHdrFrame, float16ToPqRgb, buildHdrChromeArgs, launchHdrBrowser, } from "./services/hdrCapture.js";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAiBH,kFAAkF;AAClF,OAAO,EACL,aAAa,EACb,cAAc,EACd,kCAAkC,EAClC,qCAAqC,EACrC,+BAA+B,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audioMixer.d.ts","sourceRoot":"","sources":["../../src/services/audioMixer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,OAAO,EAAkB,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AAKjE,OAAO,KAAK,EAAE,YAAY,EAAc,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAGjF,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"audioMixer.d.ts","sourceRoot":"","sources":["../../src/services/audioMixer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,OAAO,EAAkB,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AAKjE,OAAO,KAAK,EAAE,YAAY,EAAc,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAGjF,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AA+KrE,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,EAAE,CAoD/D;AAsRD,wBAAsB,uBAAuB,CAC3C,QAAQ,EAAE,YAAY,EAAE,EACxB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,EACrB,MAAM,CAAC,EAAE,WAAW,EACpB,MAAM,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,sBAAsB,GAAG,WAAW,CAAC,CAAC,EAC1E,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,SAAS,CAAC,CA8IpB"}
|
|
@@ -49,6 +49,21 @@ const MAX_VOLUME_SEGMENTS = 32;
|
|
|
49
49
|
* ease-in/ease-out fade still reduces to ~25 segments, inside MAX_VOLUME_SEGMENTS.
|
|
50
50
|
*/
|
|
51
51
|
const VOLUME_SIMPLIFY_EPSILON = 0.005;
|
|
52
|
+
// `-ac 2` uses FFmpeg's default mono-to-stereo rematrix, which attenuates a
|
|
53
|
+
// mono source by 3 dB. Explicitly map front-center into both stereo channels;
|
|
54
|
+
// native stereo sources have FL/FR and pass through unchanged.
|
|
55
|
+
const STEREO_CHANNEL_FILTER = "pan=stereo|FL=FL+FC|FR=FR+FC";
|
|
56
|
+
async function stereoOutputArgs(srcPath) {
|
|
57
|
+
try {
|
|
58
|
+
const { channels } = await extractAudioMetadata(srcPath);
|
|
59
|
+
if (channels === 1)
|
|
60
|
+
return ["-af", STEREO_CHANNEL_FILTER];
|
|
61
|
+
}
|
|
62
|
+
catch {
|
|
63
|
+
// Preserve the previous FFmpeg conversion path when metadata probing fails.
|
|
64
|
+
}
|
|
65
|
+
return ["-ac", "2"];
|
|
66
|
+
}
|
|
52
67
|
/**
|
|
53
68
|
* Reduce a sorted keyframe list to a perceptually-equivalent piecewise-linear
|
|
54
69
|
* envelope with a bounded segment count.
|
|
@@ -207,7 +222,8 @@ async function extractAudioFromVideo(videoPath, outputPath, options, signal, con
|
|
|
207
222
|
args.push("-ss", String(options.startTime));
|
|
208
223
|
if (options?.duration !== undefined)
|
|
209
224
|
args.push("-t", String(options.duration));
|
|
210
|
-
|
|
225
|
+
const channelArgs = await stereoOutputArgs(videoPath);
|
|
226
|
+
args.push("-vn", "-acodec", "pcm_s16le", "-ar", "48000", ...channelArgs, "-y", outputPath);
|
|
211
227
|
const result = await runFfmpeg(args, { signal, timeout: ffmpegProcessTimeout });
|
|
212
228
|
if (signal?.aborted) {
|
|
213
229
|
return {
|
|
@@ -232,6 +248,7 @@ async function prepareAudioTrack(srcPath, outputPath, mediaStart, duration, sign
|
|
|
232
248
|
const outputDir = dirname(outputPath);
|
|
233
249
|
if (!existsSync(outputDir))
|
|
234
250
|
mkdirSync(outputDir, { recursive: true });
|
|
251
|
+
const channelArgs = await stereoOutputArgs(srcPath);
|
|
235
252
|
const args = [
|
|
236
253
|
"-ss",
|
|
237
254
|
String(mediaStart),
|
|
@@ -243,8 +260,7 @@ async function prepareAudioTrack(srcPath, outputPath, mediaStart, duration, sign
|
|
|
243
260
|
"pcm_s16le",
|
|
244
261
|
"-ar",
|
|
245
262
|
"48000",
|
|
246
|
-
|
|
247
|
-
"2",
|
|
263
|
+
...channelArgs,
|
|
248
264
|
"-y",
|
|
249
265
|
outputPath,
|
|
250
266
|
];
|
|
@@ -515,6 +531,25 @@ export async function processCompositionAudio(elements, baseDir, workDir, output
|
|
|
515
531
|
errors.push(`Error: ${element.id} — ${err instanceof Error ? err.message : String(err)}`);
|
|
516
532
|
}
|
|
517
533
|
}));
|
|
534
|
+
// Never turn a per-track preparation failure into a successful partial mix.
|
|
535
|
+
// The producer only surfaces audio failures when `success` is false; mixing
|
|
536
|
+
// the remaining tracks made the omitted cue indistinguishable from a valid
|
|
537
|
+
// render unless someone manually audited that exact audio window.
|
|
538
|
+
if (errors.length > 0) {
|
|
539
|
+
try {
|
|
540
|
+
rmSync(workDir, { recursive: true, force: true });
|
|
541
|
+
}
|
|
542
|
+
catch {
|
|
543
|
+
/* ignore */
|
|
544
|
+
}
|
|
545
|
+
return {
|
|
546
|
+
success: false,
|
|
547
|
+
outputPath,
|
|
548
|
+
durationMs: Date.now() - startMs,
|
|
549
|
+
tracksProcessed: tracks.length,
|
|
550
|
+
error: `Audio processing failed: ${errors.join(", ")}`,
|
|
551
|
+
};
|
|
552
|
+
}
|
|
518
553
|
const mixResult = await mixAudioTracks(tracks, outputPath, totalDuration, signal, config);
|
|
519
554
|
try {
|
|
520
555
|
rmSync(workDir, { recursive: true, force: true });
|