@hyperframes/producer 0.8.191 → 0.8.193
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/dist/distributed.d.ts +1 -0
- package/dist/distributed.js +300 -109
- package/dist/hyperframe.manifest.json +1 -1
- package/dist/hyperframe.runtime.iife.js +62 -62
- package/dist/index.js +503 -456
- package/dist/public-server.js +333 -299
- package/dist/services/distributed/plan.d.ts +2 -0
- package/dist/services/distributed/probeFacts.d.ts +4 -0
- package/dist/services/render/perfSummary.d.ts +6 -0
- package/dist/services/render/stages/audioStage.d.ts +3 -1
- package/dist/services/render/stages/extractVideosStage.d.ts +17 -2
- package/dist/services/renderOrchestrator.d.ts +2 -0
- package/package.json +7 -7
|
@@ -219,6 +219,8 @@ export interface RemoteProjectFile {
|
|
|
219
219
|
readonly url: string;
|
|
220
220
|
/** A file of only this video's audio, when one was stored: the audio mix reads it, not the video. */
|
|
221
221
|
readonly audioSidecarUrl?: string;
|
|
222
|
+
/** The file's stored ffprobe JSON: the plan reads it instead of probing the file over the network. */
|
|
223
|
+
readonly probeFactsUrl?: string;
|
|
222
224
|
readonly sha256: string;
|
|
223
225
|
readonly sizeBytes: number;
|
|
224
226
|
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export declare function wantsProbeFacts(path: string): boolean;
|
|
2
|
+
/** `unavailable`: no ffprobe on this machine. `none`: the file cannot be probed. */
|
|
3
|
+
export type ProbeFactsOutcome = "built" | "none" | "unavailable";
|
|
4
|
+
export declare function buildProbeFacts(inputPath: string, outputPath: string, signal?: AbortSignal): Promise<ProbeFactsOutcome>;
|
|
@@ -24,6 +24,12 @@ export declare function worstSubTimelineWaitOutcome(perfs: CapturePerfSummary[])
|
|
|
24
24
|
export declare function pushWorkerDedupPerfs(results: ReadonlyArray<{
|
|
25
25
|
perf?: CapturePerfSummary;
|
|
26
26
|
}>, sink: CapturePerfSummary[]): void;
|
|
27
|
+
/** Adds each worker's page-error console lines to `sink`, once per distinct line. */
|
|
28
|
+
export declare function pushWorkerPageErrors(results: ReadonlyArray<{
|
|
29
|
+
pageErrorLines?: string[];
|
|
30
|
+
}>, sink: string[]): void;
|
|
31
|
+
/** The console lines plus the workers' page-error lines the console does not already hold. */
|
|
32
|
+
export declare function withWorkerPageErrors(consoleLines: string[], workerLines: string[]): string[];
|
|
27
33
|
/**
|
|
28
34
|
* Collapse per-session/per-worker static-dedup perf into one render-level
|
|
29
35
|
* outcome. enabled/armed = OR across workers (they run the same gates on the
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
* - `perfStages.audioProcessMs` is set whether or not the call ran.
|
|
18
18
|
*/
|
|
19
19
|
import type { Fps } from "@hyperframes/core";
|
|
20
|
-
import { type AudioProcessingFailure } from "@hyperframes/engine";
|
|
20
|
+
import { type AudioProcessingFailure, type MixResult } from "@hyperframes/engine";
|
|
21
21
|
import type { CompositionMetadata } from "../shared.js";
|
|
22
22
|
import type { ProducerLogger } from "../../../logger.js";
|
|
23
23
|
export interface AudioStageInput {
|
|
@@ -59,5 +59,7 @@ export interface AudioStageResult {
|
|
|
59
59
|
audioError?: string;
|
|
60
60
|
/** Bounded typed causes for policy, telemetry, and caller classification. */
|
|
61
61
|
audioFailures?: AudioProcessingFailure[];
|
|
62
|
+
/** Wall ms per phase of the audio mix. */
|
|
63
|
+
audioPhaseMs?: MixResult["phaseMs"];
|
|
62
64
|
}
|
|
63
65
|
export declare function runAudioStage(input: AudioStageInput): Promise<AudioStageResult>;
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
* machines (symlinks don't survive S3 / GCS round-trips). Default
|
|
28
28
|
* `false` preserves the in-process renderer's symlink behavior.
|
|
29
29
|
*/
|
|
30
|
-
import { type CaptureVideoMetadataHint, type EngineConfig, type
|
|
30
|
+
import { type CaptureVideoMetadataHint, type EngineConfig, type ExtractionResult, type FrameLookupTable, type HdrTransfer, type VideoExtractionFailureKind, type VideoColorSpace, classifyVideoExtractionError, extractAllVideoFrames } from "@hyperframes/engine";
|
|
31
31
|
import { type RenderJob } from "../../renderOrchestrator.js";
|
|
32
32
|
import { type CompositionMetadata } from "../shared.js";
|
|
33
33
|
import type { ProducerLogger } from "../../../logger.js";
|
|
@@ -127,4 +127,19 @@ export declare function runExtractVideosStage(input: ExtractVideosStageInput): P
|
|
|
127
127
|
* to composition.audios. Both the file AND the element must declare audio —
|
|
128
128
|
* a muted <video> whose source contains audio should not leak into the render.
|
|
129
129
|
*/
|
|
130
|
-
export declare function appendAutoDetectedVideoAudio(composition: Pick<CompositionMetadata, "videos" | "audios">, extracted:
|
|
130
|
+
export declare function appendAutoDetectedVideoAudio(composition: Pick<CompositionMetadata, "videos" | "audios">, extracted: ReadonlyArray<{
|
|
131
|
+
videoId: string;
|
|
132
|
+
metadata: {
|
|
133
|
+
hasAudio: boolean;
|
|
134
|
+
};
|
|
135
|
+
}>): void;
|
|
136
|
+
/**
|
|
137
|
+
* The audio-only form of the extract stage: which videos carry sound takes a probe per source, not their frames.
|
|
138
|
+
* Each video is moved to its extraction window first, as extraction does, so its sound lands where its picture does.
|
|
139
|
+
*/
|
|
140
|
+
export declare function appendVideoAudioFromProbe(input: {
|
|
141
|
+
projectDir: string;
|
|
142
|
+
compiledDir: string;
|
|
143
|
+
composition: CompositionMetadata;
|
|
144
|
+
urlByAbsentLocalPath?: ReadonlyMap<string, string>;
|
|
145
|
+
}): Promise<void>;
|
|
@@ -603,6 +603,8 @@ export declare function executeDiskCaptureWithAdaptiveRetry(options: {
|
|
|
603
603
|
frameRangeStart?: number;
|
|
604
604
|
/** Mutated in place — replaced each attempt so only the final attempt's worker perf survives (see retry reset below). */
|
|
605
605
|
dedupPerfs: CapturePerfSummary[];
|
|
606
|
+
/** Mutated in place: the workers' page-error console lines, for the render's error count. */
|
|
607
|
+
pageErrorLines?: string[];
|
|
606
608
|
}): Promise<CaptureAttemptSummary[]>;
|
|
607
609
|
export type RenderConfigInput = Omit<RenderConfig, "fps"> & {
|
|
608
610
|
fps: FpsInput;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hyperframes/producer",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.193",
|
|
4
4
|
"description": "HTML-to-video rendering engine using Chrome's BeginFrame API",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -35,11 +35,11 @@
|
|
|
35
35
|
"postcss": "^8.4.0",
|
|
36
36
|
"puppeteer": "^25.2.1",
|
|
37
37
|
"puppeteer-core": "^25.2.1",
|
|
38
|
-
"@hyperframes/
|
|
39
|
-
"@hyperframes/core": "0.8.
|
|
40
|
-
"@hyperframes/parsers": "0.8.
|
|
41
|
-
"@hyperframes/
|
|
42
|
-
"@hyperframes/
|
|
38
|
+
"@hyperframes/engine": "0.8.193",
|
|
39
|
+
"@hyperframes/core": "0.8.193",
|
|
40
|
+
"@hyperframes/parsers": "0.8.193",
|
|
41
|
+
"@hyperframes/lint": "0.8.193",
|
|
42
|
+
"@hyperframes/studio-server": "0.8.193"
|
|
43
43
|
},
|
|
44
44
|
"devDependencies": {
|
|
45
45
|
"@types/node": "^25.0.10",
|
|
@@ -48,7 +48,7 @@
|
|
|
48
48
|
"tsx": "^4.21.0",
|
|
49
49
|
"typescript": "^5.7.2",
|
|
50
50
|
"vitest": "^4.1.11",
|
|
51
|
-
"@hyperframes/aws-lambda": "0.8.
|
|
51
|
+
"@hyperframes/aws-lambda": "0.8.193"
|
|
52
52
|
},
|
|
53
53
|
"engines": {
|
|
54
54
|
"node": ">=22"
|