@hyperframes/engine 0.7.87 → 0.7.89
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/utils/ffprobe.d.ts +39 -0
- package/dist/utils/ffprobe.d.ts.map +1 -1
- package/dist/utils/ffprobe.js +240 -42
- package/dist/utils/ffprobe.js.map +1 -1
- package/package.json +3 -3
package/dist/utils/ffprobe.d.ts
CHANGED
|
@@ -38,6 +38,45 @@ interface StillImageMetadata {
|
|
|
38
38
|
colorSpace: VideoColorSpace | null;
|
|
39
39
|
}
|
|
40
40
|
export declare function extractPngMetadataFromBuffer(buf: Buffer): StillImageMetadata | null;
|
|
41
|
+
/**
|
|
42
|
+
* Does this pix_fmt carry an alpha channel?
|
|
43
|
+
*
|
|
44
|
+
* Exported so the test asserts the shipped predicate rather than a copy of
|
|
45
|
+
* the pattern. Anchored at the start, matching studio-server's
|
|
46
|
+
* mediaMetadata.ts: the previous inline pattern bound its `(^|[^a-z])` anchor
|
|
47
|
+
* to the first alternative only — `|` is looser than concatenation — so the
|
|
48
|
+
* guard was decorative for every other name. It also missed abgr, ya8/ya16
|
|
49
|
+
* and ayuv64, and its `gray[a-z0-9]*a` branch matched only gray8a/gray16a,
|
|
50
|
+
* names FFmpeg renamed to ya8/ya16 in 2013. A `ya8` grayscale-plus-alpha PNG
|
|
51
|
+
* reported hasAlpha:false, resolveFrameFormat picked jpg, and the overlay
|
|
52
|
+
* flattened to an opaque rectangle.
|
|
53
|
+
*/
|
|
54
|
+
export declare function pixelFormatHasAlpha(pixelFormat: string): boolean;
|
|
55
|
+
/**
|
|
56
|
+
* Parse an ffprobe rational frame rate ("30000/1001") or plain number.
|
|
57
|
+
*
|
|
58
|
+
* Returns 0 for anything not a usable positive rate. Exported so tests
|
|
59
|
+
* exercise the shipped function directly instead of re-importing the module
|
|
60
|
+
* behind a spawn mock.
|
|
61
|
+
*
|
|
62
|
+
* Every guard here is load-bearing, because a bad value is NOT caught
|
|
63
|
+
* downstream: callers use `meta.fps || 30`, which only rescues 0 and NaN.
|
|
64
|
+
* Infinity and negatives are truthy and flow into buildEncoderArgs as
|
|
65
|
+
* `-r Infinity` / `-r -30`, which ffmpeg rejects mid-render, and into
|
|
66
|
+
* frameCount arithmetic that then goes negative or non-finite.
|
|
67
|
+
*
|
|
68
|
+
* - the QUOTIENT is checked, not just the operands: "1e308/1e-10" and
|
|
69
|
+
* "2/1e-320" have finite parts and an infinite result;
|
|
70
|
+
* - the sign is checked: "-30/1", "30/-1" and "-60" all parsed clean;
|
|
71
|
+
* - more than two parts is rejected: "30/1/2" used to fall through to the
|
|
72
|
+
* bare parseFloat below and return 30, as did "60fps", because parseFloat
|
|
73
|
+
* stops at trailing garbage;
|
|
74
|
+
* - sub-0.005 rates round to 0 at 2dp and would be replaced by the caller's
|
|
75
|
+
* 30fps default, re-encoding a 300-second 1/300-fps timelapse as a
|
|
76
|
+
* ~1/30-second clip. Kept as 0 is wrong too, so they are floored to the
|
|
77
|
+
* smallest representable 2dp rate instead.
|
|
78
|
+
*/
|
|
79
|
+
export declare function parseFrameRate(frameRateStr: string | undefined): number;
|
|
41
80
|
/**
|
|
42
81
|
* Probe a media file (video, image, or container) and return normalized metadata.
|
|
43
82
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ffprobe.d.ts","sourceRoot":"","sources":["../../src/utils/ffprobe.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ffprobe.d.ts","sourceRoot":"","sources":["../../src/utils/ffprobe.ts"],"names":[],"mappings":"AA6IA,MAAM,WAAW,eAAe;IAC9B,gFAAgF;IAChF,aAAa,EAAE,MAAM,CAAC;IACtB,8CAA8C;IAC9C,cAAc,EAAE,MAAM,CAAC;IACvB,mDAAmD;IACnD,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,eAAe,EAAE,MAAM,CAAC;IACxB,0BAA0B,EAAE,MAAM,CAAC;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,6GAA6G;IAC7G,KAAK,EAAE,OAAO,CAAC;IACf,qDAAqD;IACrD,QAAQ,EAAE,OAAO,CAAC;IAClB,gFAAgF;IAChF,UAAU,EAAE,eAAe,GAAG,IAAI,CAAC;CACpC;AAED,MAAM,WAAW,aAAa;IAC5B,eAAe,EAAE,MAAM,CAAC;IACxB;;4DAEwD;IACxD,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAkCD,UAAU,kBAAkB;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,eAAe,GAAG,IAAI,CAAC;CACpC;AAkCD,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI,CAkFnF;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAEhE;AA2BD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAmCvE;AAED;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CA8GnF;AAED;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,6BAAuB,CAAC;AAEzD,wBAAsB,oBAAoB,CACxC,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,WAAW,CAAA;CAAE,GACjC,OAAO,CAAC,aAAa,CAAC,CA+FxB;AAED,MAAM,WAAW,gBAAgB;IAC/B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,OAAO,CAAC;CACxB;AAID;;;;GAIG;AACH,wBAAsB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAY1F"}
|
package/dist/utils/ffprobe.js
CHANGED
|
@@ -1,12 +1,17 @@
|
|
|
1
1
|
// fallow-ignore-file code-duplication complexity
|
|
2
2
|
import { spawn } from "child_process";
|
|
3
3
|
import { readFileSync } from "fs";
|
|
4
|
+
import * as zlib from "node:zlib";
|
|
5
|
+
import { StringDecoder } from "node:string_decoder";
|
|
4
6
|
import { basename, extname } from "path";
|
|
5
7
|
import { redactTelemetryString } from "@hyperframes/core";
|
|
6
8
|
import { FFPROBE_PATH_ENV, getFfprobeBinary } from "./ffmpegBinaries.js";
|
|
7
9
|
import { ManagedChildProcess } from "./managedChildProcess.js";
|
|
8
10
|
import { trackChildProcess } from "./processTracker.js";
|
|
9
11
|
const FFPROBE_STDERR_MAX_BYTES = 8 * 1024;
|
|
12
|
+
/** Bound on collected stdout. Generous — real -show_streams JSON is well
|
|
13
|
+
* under this — but finite, unlike the previous unbounded accumulation. */
|
|
14
|
+
const FFPROBE_STDOUT_MAX_CHARS = 8_000_000;
|
|
10
15
|
const FFPROBE_ERROR_MAX_CHARS = 4 * 1024;
|
|
11
16
|
function redactFfprobeInput(stderr, filePath) {
|
|
12
17
|
if (!filePath)
|
|
@@ -41,12 +46,44 @@ function sanitizeFfprobeDiagnostic(stderr, filePath) {
|
|
|
41
46
|
}
|
|
42
47
|
/** Spawn ffprobe with given args, return stdout. Throws on non-zero exit or missing binary. */
|
|
43
48
|
async function runFfprobe(filePath, argsWithoutInput, signal) {
|
|
49
|
+
// `--` stops option parsing so a path like "-intro.mp4" is a filename, but
|
|
50
|
+
// it does NOT cover a path of exactly "-": ffprobe rewrites that to `fd:`
|
|
51
|
+
// AFTER option parsing and then reads stdin. Since stdin here is a pipe the
|
|
52
|
+
// parent never writes to and never ends, the probe hangs for the full 30s
|
|
53
|
+
// deadline and fails with an empty diagnostic (ffprobe never errored, so
|
|
54
|
+
// stderr is blank). Reject it up front with something a caller can read.
|
|
55
|
+
if (filePath === "-") {
|
|
56
|
+
throw new Error('[FFmpeg] Refusing to probe "-": stdin is not a supported input path.');
|
|
57
|
+
}
|
|
44
58
|
const command = getFfprobeBinary();
|
|
45
|
-
const proc = spawn(command, ["-v", "error", ...argsWithoutInput, "--", filePath]
|
|
59
|
+
const proc = spawn(command, ["-v", "error", ...argsWithoutInput, "--", filePath], {
|
|
60
|
+
// Nothing is ever written to the child's stdin; leaving it as a pipe is
|
|
61
|
+
// what lets a stdin-reading invocation block indefinitely.
|
|
62
|
+
stdio: ["ignore", "pipe", "pipe"],
|
|
63
|
+
});
|
|
46
64
|
trackChildProcess(proc);
|
|
65
|
+
// Decoded through StringDecoder rather than per-chunk toString(): a
|
|
66
|
+
// multi-byte character split across a 64 KiB pipe boundary decodes to U+FFFD
|
|
67
|
+
// on both sides. -show_format output above ~64 KiB with non-ASCII tag text
|
|
68
|
+
// (an MKV with many chapters, or title/artist tags) came back silently
|
|
69
|
+
// mangled — JSON.parse still succeeds, so nothing surfaced it, and tag
|
|
70
|
+
// lookups like alpha_mode could miss.
|
|
71
|
+
const decoder = new StringDecoder("utf8");
|
|
47
72
|
let stdout = "";
|
|
73
|
+
let stdoutTruncated = false;
|
|
48
74
|
proc.stdout.on("data", (data) => {
|
|
49
|
-
stdout
|
|
75
|
+
// stderr is capped by ManagedChildProcess; stdout had no bound at all, and
|
|
76
|
+
// analyzeKeyframeIntervals emits one line per frame — an all-intra ProRes
|
|
77
|
+
// proxy can produce an unbounded string.
|
|
78
|
+
if (stdoutTruncated)
|
|
79
|
+
return;
|
|
80
|
+
stdout += decoder.write(data);
|
|
81
|
+
// Checked AFTER appending: a single chunk can already exceed the bound,
|
|
82
|
+
// so a pre-append check only ever stops the second one.
|
|
83
|
+
if (stdout.length > FFPROBE_STDOUT_MAX_CHARS) {
|
|
84
|
+
stdoutTruncated = true;
|
|
85
|
+
stdout = "";
|
|
86
|
+
}
|
|
50
87
|
});
|
|
51
88
|
const managed = new ManagedChildProcess(proc, {
|
|
52
89
|
signal,
|
|
@@ -54,6 +91,10 @@ async function runFfprobe(filePath, argsWithoutInput, signal) {
|
|
|
54
91
|
stderrMaxBytes: FFPROBE_STDERR_MAX_BYTES,
|
|
55
92
|
});
|
|
56
93
|
const outcome = await managed.wait();
|
|
94
|
+
stdout += decoder.end();
|
|
95
|
+
if (stdoutTruncated) {
|
|
96
|
+
throw new Error(`[FFmpeg] ffprobe output exceeded ${FFPROBE_STDOUT_MAX_CHARS} characters; refusing to parse a truncated result.`);
|
|
97
|
+
}
|
|
57
98
|
if (outcome.reason === "spawn_error") {
|
|
58
99
|
if (outcome.error?.code === "ENOENT") {
|
|
59
100
|
const configured = process.env[FFPROBE_PATH_ENV]?.trim();
|
|
@@ -81,10 +122,23 @@ const videoMetadataCache = new Map();
|
|
|
81
122
|
const audioMetadataCache = new Map();
|
|
82
123
|
// FFmpeg's built-in AAC encoder emits AAC-LC, which has 1024 samples per packet.
|
|
83
124
|
const AAC_LC_SAMPLES_PER_PACKET = 1024;
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
125
|
+
// node:zlib's crc32 is native and takes a running seed, so the chunk type and
|
|
126
|
+
// the chunk data can be CRC'd in sequence without concatenating them into a
|
|
127
|
+
// throwaway buffer: ~210 ms -> ~1.3 ms on a 12 MiB PNG.
|
|
128
|
+
//
|
|
129
|
+
// It landed in Node 22.2.0, and this repo declares `"node": ">=22"` with a
|
|
130
|
+
// major-only runtime gate, so 22.0 and 22.1 are still supported. A NAMED
|
|
131
|
+
// import of a missing export throws at module evaluation — i.e. `ffprobe.ts`
|
|
132
|
+
// would fail to load at all on those, long before any PNG is parsed — so the
|
|
133
|
+
// namespace import plus this capability check is deliberate. Raising the
|
|
134
|
+
// floor to 22.2.0 instead would be a user-facing support change, which does
|
|
135
|
+
// not belong in a PNG bug fix.
|
|
136
|
+
const nativeCrc32 = typeof zlib.crc32 === "function" ? zlib.crc32 : undefined;
|
|
137
|
+
/** Bit-at-a-time fallback for Node 22.0/22.1. Correct, just slower. */
|
|
138
|
+
function crc32Fallback(data, seed) {
|
|
139
|
+
let crc = seed ^ 0xffffffff;
|
|
140
|
+
for (let i = 0; i < data.length; i++) {
|
|
141
|
+
crc ^= data[i] ?? 0;
|
|
88
142
|
for (let bit = 0; bit < 8; bit++) {
|
|
89
143
|
const mask = -(crc & 1);
|
|
90
144
|
crc = (crc >>> 1) ^ (0xedb88320 & mask);
|
|
@@ -92,6 +146,12 @@ function crc32(buf) {
|
|
|
92
146
|
}
|
|
93
147
|
return (crc ^ 0xffffffff) >>> 0;
|
|
94
148
|
}
|
|
149
|
+
function chunkCrc32(chunkType, chunkData) {
|
|
150
|
+
const typeBytes = Buffer.from(chunkType, "ascii");
|
|
151
|
+
if (nativeCrc32)
|
|
152
|
+
return nativeCrc32(chunkData, nativeCrc32(typeBytes));
|
|
153
|
+
return crc32Fallback(chunkData, crc32Fallback(typeBytes, 0));
|
|
154
|
+
}
|
|
95
155
|
export function extractPngMetadataFromBuffer(buf) {
|
|
96
156
|
if (buf.length < 8 ||
|
|
97
157
|
buf[0] !== 137 ||
|
|
@@ -116,10 +176,14 @@ export function extractPngMetadataFromBuffer(buf) {
|
|
|
116
176
|
return null;
|
|
117
177
|
const chunkData = buf.subarray(pos + 8, pos + 8 + chunkLen);
|
|
118
178
|
const chunkCrc = buf.readUInt32BE(pos + 8 + chunkLen);
|
|
119
|
-
|
|
120
|
-
if (crc32(chunkBytes) !== chunkCrc)
|
|
179
|
+
if (chunkCrc32(chunkType, chunkData) !== chunkCrc)
|
|
121
180
|
return null;
|
|
122
|
-
|
|
181
|
+
// First IHDR only. PNG permits exactly one and it must come first, but a
|
|
182
|
+
// malformed file can carry more — without this anchor a trailing
|
|
183
|
+
// [IHDR 1x1] silently replaced the real 4K dimensions, and the producer
|
|
184
|
+
// laid out a one-pixel image. `>= 13` is the spec length; the old `>= 8`
|
|
185
|
+
// accepted a truncated header and read height out of the CRC bytes.
|
|
186
|
+
if (chunkType === "IHDR" && chunkLen >= 13 && width === 0 && height === 0) {
|
|
123
187
|
width = buf.readUInt32BE(pos + 8);
|
|
124
188
|
height = buf.readUInt32BE(pos + 12);
|
|
125
189
|
}
|
|
@@ -146,12 +210,38 @@ export function extractPngMetadataFromBuffer(buf) {
|
|
|
146
210
|
colorSpace: matrixCode === 9 ? "bt2020nc" : matrixCode === 0 ? "gbr" : `unknown-${matrixCode}`,
|
|
147
211
|
};
|
|
148
212
|
}
|
|
213
|
+
// Everything this parser extracts has been found, so stop walking.
|
|
214
|
+
//
|
|
215
|
+
// Not just an optimisation: cICP must precede IDAT (enforced above), so
|
|
216
|
+
// continuing only ever visits chunks we ignore — while making whole-file
|
|
217
|
+
// integrity a precondition for returning anything. A truncated or
|
|
218
|
+
// bad-CRC trailing chunk in an otherwise-good HDR PNG used to null the
|
|
219
|
+
// entire result, and the caller then re-throws the swallowed ffprobe
|
|
220
|
+
// error instead of using the fallback it just computed.
|
|
221
|
+
if (width > 0 && height > 0 && colorSpaceFromCicp !== null)
|
|
222
|
+
break;
|
|
149
223
|
if (chunkType === "IEND")
|
|
150
224
|
break;
|
|
151
225
|
pos += 12 + chunkLen;
|
|
152
226
|
}
|
|
153
227
|
return width > 0 && height > 0 ? { width, height, colorSpace: colorSpaceFromCicp } : null;
|
|
154
228
|
}
|
|
229
|
+
/**
|
|
230
|
+
* Does this pix_fmt carry an alpha channel?
|
|
231
|
+
*
|
|
232
|
+
* Exported so the test asserts the shipped predicate rather than a copy of
|
|
233
|
+
* the pattern. Anchored at the start, matching studio-server's
|
|
234
|
+
* mediaMetadata.ts: the previous inline pattern bound its `(^|[^a-z])` anchor
|
|
235
|
+
* to the first alternative only — `|` is looser than concatenation — so the
|
|
236
|
+
* guard was decorative for every other name. It also missed abgr, ya8/ya16
|
|
237
|
+
* and ayuv64, and its `gray[a-z0-9]*a` branch matched only gray8a/gray16a,
|
|
238
|
+
* names FFmpeg renamed to ya8/ya16 in 2013. A `ya8` grayscale-plus-alpha PNG
|
|
239
|
+
* reported hasAlpha:false, resolveFrameFormat picked jpg, and the overlay
|
|
240
|
+
* flattened to an opaque rectangle.
|
|
241
|
+
*/
|
|
242
|
+
export function pixelFormatHasAlpha(pixelFormat) {
|
|
243
|
+
return /^(?:yuva|rgba|argb|bgra|abgr|gbrap|ya|ayuv)/i.test(pixelFormat);
|
|
244
|
+
}
|
|
155
245
|
function extractStillImageMetadata(filePath) {
|
|
156
246
|
if (extname(filePath).toLowerCase() !== ".png")
|
|
157
247
|
return null;
|
|
@@ -178,20 +268,62 @@ function readTagCI(tags, name) {
|
|
|
178
268
|
}
|
|
179
269
|
return "";
|
|
180
270
|
}
|
|
181
|
-
|
|
271
|
+
/**
|
|
272
|
+
* Parse an ffprobe rational frame rate ("30000/1001") or plain number.
|
|
273
|
+
*
|
|
274
|
+
* Returns 0 for anything not a usable positive rate. Exported so tests
|
|
275
|
+
* exercise the shipped function directly instead of re-importing the module
|
|
276
|
+
* behind a spawn mock.
|
|
277
|
+
*
|
|
278
|
+
* Every guard here is load-bearing, because a bad value is NOT caught
|
|
279
|
+
* downstream: callers use `meta.fps || 30`, which only rescues 0 and NaN.
|
|
280
|
+
* Infinity and negatives are truthy and flow into buildEncoderArgs as
|
|
281
|
+
* `-r Infinity` / `-r -30`, which ffmpeg rejects mid-render, and into
|
|
282
|
+
* frameCount arithmetic that then goes negative or non-finite.
|
|
283
|
+
*
|
|
284
|
+
* - the QUOTIENT is checked, not just the operands: "1e308/1e-10" and
|
|
285
|
+
* "2/1e-320" have finite parts and an infinite result;
|
|
286
|
+
* - the sign is checked: "-30/1", "30/-1" and "-60" all parsed clean;
|
|
287
|
+
* - more than two parts is rejected: "30/1/2" used to fall through to the
|
|
288
|
+
* bare parseFloat below and return 30, as did "60fps", because parseFloat
|
|
289
|
+
* stops at trailing garbage;
|
|
290
|
+
* - sub-0.005 rates round to 0 at 2dp and would be replaced by the caller's
|
|
291
|
+
* 30fps default, re-encoding a 300-second 1/300-fps timelapse as a
|
|
292
|
+
* ~1/30-second clip. Kept as 0 is wrong too, so they are floored to the
|
|
293
|
+
* smallest representable 2dp rate instead.
|
|
294
|
+
*/
|
|
295
|
+
export function parseFrameRate(frameRateStr) {
|
|
182
296
|
if (!frameRateStr)
|
|
183
297
|
return 0;
|
|
184
298
|
const parts = frameRateStr.split("/");
|
|
185
|
-
if (parts.length
|
|
186
|
-
const num = parseFloat(parts[0] ?? "");
|
|
187
|
-
const den = parseFloat(parts[1] ?? "");
|
|
188
|
-
if (Number.isFinite(num) && Number.isFinite(den) && den !== 0) {
|
|
189
|
-
return Math.round((num / den) * 100) / 100;
|
|
190
|
-
}
|
|
299
|
+
if (parts.length > 2)
|
|
191
300
|
return 0;
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
301
|
+
// Number(), never parseFloat — on BOTH the rational operands and the plain
|
|
302
|
+
// form. parseFloat stops at trailing garbage, so "60fps" parsed as 60 and,
|
|
303
|
+
// once the plain path was fixed but the operands were not, "60fps/1" and
|
|
304
|
+
// "30garbage/1garbage" still slipped through the rational branch.
|
|
305
|
+
const strict = (part) => part === undefined || part.trim() === "" ? NaN : Number(part.trim());
|
|
306
|
+
const raw = parts.length === 2
|
|
307
|
+
? (() => {
|
|
308
|
+
const num = strict(parts[0]);
|
|
309
|
+
const den = strict(parts[1]);
|
|
310
|
+
if (!Number.isFinite(num) || !Number.isFinite(den) || den === 0)
|
|
311
|
+
return NaN;
|
|
312
|
+
return num / den;
|
|
313
|
+
})()
|
|
314
|
+
: strict(frameRateStr);
|
|
315
|
+
if (!Number.isFinite(raw) || raw <= 0)
|
|
316
|
+
return 0;
|
|
317
|
+
// Checked AFTER rounding as well as before. `raw * 100` overflows for a
|
|
318
|
+
// finite-but-huge rate ("1e307", "1e307/1"), so `rounded` became Infinity
|
|
319
|
+
// and sailed past the positivity check — reaching exactly the `-r Infinity`
|
|
320
|
+
// failure the finite guard above exists to prevent.
|
|
321
|
+
const rounded = Math.round(raw * 100) / 100;
|
|
322
|
+
if (!Number.isFinite(rounded))
|
|
323
|
+
return 0;
|
|
324
|
+
// A real but very slow rate must not collapse to 0 and inherit the
|
|
325
|
+
// caller's 30fps default.
|
|
326
|
+
return rounded > 0 ? rounded : 0.01;
|
|
195
327
|
}
|
|
196
328
|
/**
|
|
197
329
|
* Probe a media file (video, image, or container) and return normalized metadata.
|
|
@@ -205,7 +337,18 @@ export async function extractMediaMetadata(filePath) {
|
|
|
205
337
|
if (cached)
|
|
206
338
|
return cached;
|
|
207
339
|
const probePromise = (async () => {
|
|
208
|
-
|
|
340
|
+
// Lazily memoized. This is a pure fallback, but it used to run eagerly
|
|
341
|
+
// and synchronously BEFORE the first await: readFileSync plus a CRC walk
|
|
342
|
+
// per file, so a caller fanning out over composition.images with
|
|
343
|
+
// Promise.all executed every parse back-to-back before a single ffprobe
|
|
344
|
+
// was spawned (12 4K PNGs: 2649 ms vs 170 ms probe-only) — event-loop
|
|
345
|
+
// stall that also blocks Puppeteer IPC and progress reporting. On the
|
|
346
|
+
// happy path the result was then discarded.
|
|
347
|
+
let stillImageMetaMemo;
|
|
348
|
+
const stillImage = () => {
|
|
349
|
+
stillImageMetaMemo ??= extractStillImageMetadata(filePath);
|
|
350
|
+
return stillImageMetaMemo;
|
|
351
|
+
};
|
|
209
352
|
let output = null;
|
|
210
353
|
try {
|
|
211
354
|
const stdout = await runFfprobe(filePath, [
|
|
@@ -217,11 +360,12 @@ export async function extractMediaMetadata(filePath) {
|
|
|
217
360
|
output = parseProbeJson(stdout);
|
|
218
361
|
}
|
|
219
362
|
catch (error) {
|
|
220
|
-
if (!
|
|
363
|
+
if (!stillImage())
|
|
221
364
|
throw error;
|
|
222
365
|
}
|
|
223
366
|
const videoStream = output?.streams.find((s) => s.codec_type === "video");
|
|
224
367
|
if (!videoStream) {
|
|
368
|
+
const stillImageMeta = stillImage();
|
|
225
369
|
if (stillImageMeta) {
|
|
226
370
|
return {
|
|
227
371
|
durationSeconds: 0,
|
|
@@ -246,20 +390,37 @@ export async function extractMediaMetadata(filePath) {
|
|
|
246
390
|
const colorTransfer = videoStream.color_transfer || "";
|
|
247
391
|
const colorPrimaries = videoStream.color_primaries || "";
|
|
248
392
|
const colorSpaceVal = videoStream.color_space || "";
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
393
|
+
// Merged per field, not whole-object. ffprobe emits color_space "gbr" for
|
|
394
|
+
// every PNG — even a plain rgb24 with no colour metadata — so a
|
|
395
|
+
// whole-object `??` meant the cICP fallback was discarded whenever
|
|
396
|
+
// ffprobe ran at all, which is exactly the build it exists to cover: one
|
|
397
|
+
// that reports gbr but does not decode cICP. An HDR PQ PNG then resolved
|
|
398
|
+
// colorTransfer "" and graded SDR.
|
|
399
|
+
const cicp = colorTransfer && colorPrimaries && colorSpaceVal ? null : stillImage()?.colorSpace;
|
|
400
|
+
const merged = {
|
|
401
|
+
colorTransfer: colorTransfer || cicp?.colorTransfer || "",
|
|
402
|
+
colorPrimaries: colorPrimaries || cicp?.colorPrimaries || "",
|
|
403
|
+
colorSpace: colorSpaceVal || cicp?.colorSpace || "",
|
|
404
|
+
};
|
|
405
|
+
const colorSpace = merged.colorTransfer || merged.colorPrimaries || merged.colorSpace ? merged : null;
|
|
253
406
|
const pixelFormat = videoStream.pix_fmt || "";
|
|
254
407
|
const alphaMode = readTagCI(videoStream.tags, "alpha_mode");
|
|
255
|
-
const hasAlpha =
|
|
408
|
+
const hasAlpha = pixelFormatHasAlpha(pixelFormat) || alphaMode === "1";
|
|
409
|
+
// Anchored at the start, matching studio-server's mediaMetadata.ts. The
|
|
410
|
+
// previous pattern bound its `(^|[^a-z])` anchor to the FIRST alternative
|
|
411
|
+
// only — `|` is looser than concatenation — so the guard was decorative
|
|
412
|
+
// for every other name. It also missed abgr, ya8/ya16 and ayuv64, and its
|
|
413
|
+
// `gray[a-z0-9]*a` branch matched only gray8a/gray16a, names FFmpeg
|
|
414
|
+
// renamed to ya8/ya16 in 2013. A `ya8` grayscale-plus-alpha PNG reported
|
|
415
|
+
// hasAlpha:false, resolveFrameFormat picked jpg, and the overlay
|
|
416
|
+
// flattened to an opaque rectangle.
|
|
256
417
|
const containerDuration = output?.format.duration ? parseFloat(output.format.duration) : 0;
|
|
257
418
|
const streamDuration = videoStream.duration ? parseFloat(videoStream.duration) : 0;
|
|
258
419
|
return {
|
|
259
420
|
durationSeconds: containerDuration,
|
|
260
421
|
videoStreamDurationSeconds: streamDuration > 0 ? streamDuration : containerDuration,
|
|
261
|
-
width: videoStream.width ||
|
|
262
|
-
height: videoStream.height ||
|
|
422
|
+
width: videoStream.width || stillImage()?.width || 0,
|
|
423
|
+
height: videoStream.height || stillImage()?.height || 0,
|
|
263
424
|
fps,
|
|
264
425
|
videoCodec: videoStream.codec_name || "unknown",
|
|
265
426
|
hasAudio: output?.streams.some((s) => s.codec_type === "audio") ?? false,
|
|
@@ -300,20 +461,57 @@ export async function extractAudioMetadata(filePath, options) {
|
|
|
300
461
|
const streamDuration = audioStream.duration ? parseFloat(audioStream.duration) : undefined;
|
|
301
462
|
const sampleRate = audioStream.sample_rate ? parseInt(audioStream.sample_rate) : 44100;
|
|
302
463
|
const audioCodec = audioStream.codec_name || "unknown";
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
464
|
+
// AAC-LC container durations are often slightly wrong, so the packet
|
|
465
|
+
// count gives a better one. Three constraints on that refinement:
|
|
466
|
+
//
|
|
467
|
+
// 1. It must never fail the call. durationSeconds is ALREADY correct from
|
|
468
|
+
// format.duration at this point. `-count_packets` demuxes the whole
|
|
469
|
+
// container against runFfprobe's fixed 30s deadline, so a long file on
|
|
470
|
+
// slow or network storage times out — and the caller in htmlCompiler
|
|
471
|
+
// catches that under "Source file has no audio stream", returns
|
|
472
|
+
// duration 0, drops the audio element and ships a silent render.
|
|
473
|
+
// 2. It must honour the caller's AbortSignal. Only the first probe
|
|
474
|
+
// received it, so aborting during this one was ignored and the call
|
|
475
|
+
// resolved with full metadata long after cancellation.
|
|
476
|
+
// 3. It must apply ONLY to profiles whose 1024-sample framing is
|
|
477
|
+
// established. ffprobe reports codec_name "aac" for every AAC
|
|
478
|
+
// variant — the framing lives in the profile:
|
|
479
|
+
//
|
|
480
|
+
// LC 1024 samples/frame <- the only one this maths fits
|
|
481
|
+
// HE-AAC v1/v2 2048 output samples against a doubled sample_rate
|
|
482
|
+
// LD 512
|
|
483
|
+
// ELD 480
|
|
484
|
+
// Main/SSR/LTP 1024 nominally, but not verified here
|
|
485
|
+
// xHE-AAC (USAC) variable
|
|
486
|
+
//
|
|
487
|
+
// An ALLOWLIST, not a HE-AAC denylist. The denylist form let LD/ELD
|
|
488
|
+
// through (halving to a third of the true duration), and let an
|
|
489
|
+
// unknown or missing profile through too — so an unrecognised HE
|
|
490
|
+
// spelling preserved the exact truncation this is meant to close.
|
|
491
|
+
// A skipped refinement is harmless: format.duration is already correct.
|
|
492
|
+
const isAacLc = /^\s*LC\s*$/i.test(audioStream.profile ?? "");
|
|
493
|
+
if (audioCodec === "aac" && isAacLc && sampleRate > 0) {
|
|
494
|
+
try {
|
|
495
|
+
const packetStdout = await runFfprobe(filePath, [
|
|
496
|
+
"-select_streams",
|
|
497
|
+
"a:0",
|
|
498
|
+
"-count_packets",
|
|
499
|
+
"-show_entries",
|
|
500
|
+
"stream=nb_read_packets",
|
|
501
|
+
"-print_format",
|
|
502
|
+
"json",
|
|
503
|
+
], options?.signal);
|
|
504
|
+
const packetOutput = parseProbeJson(packetStdout);
|
|
505
|
+
const packetCount = Number(packetOutput.streams[0]?.nb_read_packets);
|
|
506
|
+
if (Number.isFinite(packetCount) && packetCount > 0) {
|
|
507
|
+
durationSeconds = (packetCount * AAC_LC_SAMPLES_PER_PACKET) / sampleRate;
|
|
508
|
+
}
|
|
509
|
+
}
|
|
510
|
+
catch (error) {
|
|
511
|
+
// An abort is the caller's intent, not a refinement failure — let it
|
|
512
|
+
// through. Anything else keeps the container duration we already have.
|
|
513
|
+
if (options?.signal?.aborted)
|
|
514
|
+
throw error;
|
|
317
515
|
}
|
|
318
516
|
}
|
|
319
517
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ffprobe.js","sourceRoot":"","sources":["../../src/utils/ffprobe.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ffprobe.js","sourceRoot":"","sources":["../../src/utils/ffprobe.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hyperframes/engine",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.89",
|
|
4
4
|
"description": "Seekable web page to video rendering engine (Puppeteer + FFmpeg)",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -38,8 +38,8 @@
|
|
|
38
38
|
"linkedom": "^0.18.12",
|
|
39
39
|
"puppeteer": "^25.2.1",
|
|
40
40
|
"puppeteer-core": "^25.2.1",
|
|
41
|
-
"@hyperframes/core": "^0.7.
|
|
42
|
-
"@hyperframes/parsers": "^0.7.
|
|
41
|
+
"@hyperframes/core": "^0.7.89",
|
|
42
|
+
"@hyperframes/parsers": "^0.7.89"
|
|
43
43
|
},
|
|
44
44
|
"devDependencies": {
|
|
45
45
|
"@types/node": "^25.0.10",
|