@hyperframes/engine 0.6.1 → 0.6.3
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/services/chunkEncoder.d.ts.map +1 -1
- package/dist/services/chunkEncoder.js +38 -3
- package/dist/services/chunkEncoder.js.map +1 -1
- package/dist/services/chunkEncoder.types.d.ts +19 -0
- package/dist/services/chunkEncoder.types.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/services/chunkEncoder.test.ts +239 -0
- package/src/services/chunkEncoder.ts +56 -3
- package/src/services/chunkEncoder.types.ts +19 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chunkEncoder.d.ts","sourceRoot":"","sources":["../../src/services/chunkEncoder.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,EAAkB,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AACjE,OAAO,EACL,KAAK,UAAU,EAIhB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,KAAK,WAAW,EAA4B,MAAM,iBAAiB,CAAC;AAG7E,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEvF,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEvF,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;CAI3B,CAAC;AAEF,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAC;IAC1C,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE;QAAE,QAAQ,EAAE,WAAW,CAAA;KAAE,CAAC;CACjC;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,OAAO,GAAG,UAAU,GAAG,MAAM,EACtC,MAAM,GAAE,KAAK,GAAG,MAAM,GAAG,KAAa,EACtC,GAAG,CAAC,EAAE;IAAE,QAAQ,EAAE,WAAW,CAAA;CAAE,GAC9B,aAAa,CA4Bf;AAGD,OAAO,EAAE,gBAAgB,EAAE,KAAK,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAE3E,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,cAAc,EACvB,SAAS,EAAE,MAAM,EAAE,EACnB,UAAU,EAAE,MAAM,EAClB,UAAU,GAAE,UAAiB,GAC5B,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"chunkEncoder.d.ts","sourceRoot":"","sources":["../../src/services/chunkEncoder.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,EAAkB,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AACjE,OAAO,EACL,KAAK,UAAU,EAIhB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,KAAK,WAAW,EAA4B,MAAM,iBAAiB,CAAC;AAG7E,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEvF,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEvF,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;CAI3B,CAAC;AAEF,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAC;IAC1C,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE;QAAE,QAAQ,EAAE,WAAW,CAAA;KAAE,CAAC;CACjC;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,OAAO,GAAG,UAAU,GAAG,MAAM,EACtC,MAAM,GAAE,KAAK,GAAG,MAAM,GAAG,KAAa,EACtC,GAAG,CAAC,EAAE;IAAE,QAAQ,EAAE,WAAW,CAAA;CAAE,GAC9B,aAAa,CA4Bf;AAGD,OAAO,EAAE,gBAAgB,EAAE,KAAK,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAE3E,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,cAAc,EACvB,SAAS,EAAE,MAAM,EAAE,EACnB,UAAU,EAAE,MAAM,EAClB,UAAU,GAAE,UAAiB,GAC5B,MAAM,EAAE,CAqPV;AAED,wBAAsB,mBAAmB,CACvC,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,cAAc,EACvB,MAAM,CAAC,EAAE,WAAW,EACpB,MAAM,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,qBAAqB,CAAC,CAAC,GAC1D,OAAO,CAAC,YAAY,CAAC,CAiGvB;AAED,wBAAsB,yBAAyB,CAC7C,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,cAAc,EACvB,eAAe,EAAE,MAAM,EACvB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,YAAY,CAAC,CAmIvB;AAED,wBAAsB,iBAAiB,CACrC,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE,WAAW,EACpB,MAAM,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,sBAAsB,CAAC,CAAC,GAC3D,OAAO,CAAC,SAAS,CAAC,CAqCpB;AAED,wBAAsB,cAAc,CAClC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE,WAAW,EACpB,MAAM,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,sBAAsB,CAAC,CAAC,GAC3D,OAAO,CAAC,SAAS,CAAC,CA0BpB"}
|
|
@@ -127,6 +127,22 @@ export function buildEncoderArgs(options, inputArgs, outputPath, gpuEncoder = nu
|
|
|
127
127
|
args.push("-b:v", bitrate);
|
|
128
128
|
else
|
|
129
129
|
args.push("-crf", String(quality));
|
|
130
|
+
// Closed-GOP / forced-keyframe args so an external orchestrator can
|
|
131
|
+
// ffmpeg-concat chunk files with `-c copy`. Without these, libx264 /
|
|
132
|
+
// libx265 emit open-GOP frames with mid-chunk scenecut keyframes; the
|
|
133
|
+
// first frame of each chunk isn't an independently-decodable IDR and
|
|
134
|
+
// concat-copy playback freezes at chunk seams on some decoders.
|
|
135
|
+
const lockGop = options.lockGopForChunkConcat === true;
|
|
136
|
+
let gop = 0;
|
|
137
|
+
if (lockGop) {
|
|
138
|
+
if (typeof options.gopSize !== "number" ||
|
|
139
|
+
!Number.isFinite(options.gopSize) ||
|
|
140
|
+
options.gopSize <= 0) {
|
|
141
|
+
throw new Error(`[chunkEncoder] lockGopForChunkConcat=true requires a positive integer gopSize (received ${String(options.gopSize)})`);
|
|
142
|
+
}
|
|
143
|
+
gop = Math.floor(options.gopSize);
|
|
144
|
+
args.push("-g", String(gop), "-keyint_min", String(gop), "-sc_threshold", "0", "-force_key_frames", `expr:eq(mod(n,${gop}),0)`);
|
|
145
|
+
}
|
|
130
146
|
// Disable B-frames. Standard h264 with B-frames produces negative DTS
|
|
131
147
|
// at the start of the stream (the first B-frame's decode order is
|
|
132
148
|
// "before" the first I-frame's presentation time). VS Code's video
|
|
@@ -135,7 +151,12 @@ export function buildEncoderArgs(options, inputArgs, outputPath, gpuEncoder = nu
|
|
|
135
151
|
// -bf 0 makes PTS == DTS at every frame, eliminating the issue at the
|
|
136
152
|
// source. Quality cost is ~5–10% larger files at the same CRF — a
|
|
137
153
|
// worthwhile trade for "the file plays everywhere".
|
|
138
|
-
|
|
154
|
+
//
|
|
155
|
+
// Also emit `-bf 0` for h265 when closed-GOP is locked: chunked
|
|
156
|
+
// concat-copy of h265 with B-frames hits the same negative-DTS hazard
|
|
157
|
+
// at every chunk boundary, even though single-stream h265 normally
|
|
158
|
+
// tolerates B-frames fine.
|
|
159
|
+
if (codec === "h264" || (codec === "h265" && lockGop)) {
|
|
139
160
|
args.push("-bf", "0");
|
|
140
161
|
}
|
|
141
162
|
// Encoder-specific params: anti-banding + color space tagging.
|
|
@@ -143,15 +164,29 @@ export function buildEncoderArgs(options, inputArgs, outputPath, gpuEncoder = nu
|
|
|
143
164
|
// For HDR x265 paths we additionally embed BT.2020 + transfer + HDR static
|
|
144
165
|
// mastering metadata via x265-params; libx264 only carries BT.709 tags
|
|
145
166
|
// since HDR through H.264 is not supported by this encoder path.
|
|
167
|
+
//
|
|
168
|
+
// When closed-GOP is locked we additionally bake the keyint/scenecut
|
|
169
|
+
// controls into the codec param string so libx264's slice-type decisions
|
|
170
|
+
// and libx265's rate-control respect the IDR cadence end-to-end (without
|
|
171
|
+
// these, ffmpeg's `-force_key_frames` is honored but the underlying
|
|
172
|
+
// encoder may still insert mini-GOPs with open-GOP references that
|
|
173
|
+
// break concat-copy on some decoders). `repeat-headers=1` writes SPS/PPS
|
|
174
|
+
// at every keyframe so each chunk file is self-contained.
|
|
146
175
|
const xParamsFlag = codec === "h264" ? "-x264-params" : "-x265-params";
|
|
147
176
|
const colorParams = codec === "h265" && options.hdr
|
|
148
177
|
? getHdrEncoderColorParams(options.hdr.transfer).x265ColorParams
|
|
149
178
|
: "colorprim=bt709:transfer=bt709:colormatrix=bt709";
|
|
179
|
+
let gopParams = "";
|
|
180
|
+
if (lockGop) {
|
|
181
|
+
const shared = "scenecut=0:open-gop=0:repeat-headers=1";
|
|
182
|
+
gopParams = codec === "h264" ? shared : `keyint=${gop}:min-keyint=${gop}:${shared}`;
|
|
183
|
+
}
|
|
184
|
+
const joinParams = (...parts) => parts.filter((p) => p.length > 0).join(":");
|
|
150
185
|
if (preset === "ultrafast") {
|
|
151
|
-
args.push(xParamsFlag,
|
|
186
|
+
args.push(xParamsFlag, joinParams("aq-mode=3", colorParams, gopParams));
|
|
152
187
|
}
|
|
153
188
|
else {
|
|
154
|
-
args.push(xParamsFlag,
|
|
189
|
+
args.push(xParamsFlag, joinParams("aq-mode=3", "aq-strength=0.8", "deblock=1,1", colorParams, gopParams));
|
|
155
190
|
}
|
|
156
191
|
}
|
|
157
192
|
// Apple devices require hvc1 tag for HEVC playback (default hev1 won't open in QuickTime)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chunkEncoder.js","sourceRoot":"","sources":["../../src/services/chunkEncoder.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"chunkEncoder.js","sourceRoot":"","sources":["../../src/services/chunkEncoder.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,6 +14,25 @@ export interface EncoderOptions {
|
|
|
14
14
|
hdr?: {
|
|
15
15
|
transfer: HdrTransfer;
|
|
16
16
|
};
|
|
17
|
+
/**
|
|
18
|
+
* When `true`, force closed-GOP encoding with a keyframe at every
|
|
19
|
+
* `gopSize` boundary so the resulting chunk file can be losslessly
|
|
20
|
+
* concatenated (`ffmpeg -f concat -c copy`) with sibling chunks.
|
|
21
|
+
*
|
|
22
|
+
* Default `false`: GOP placement is left to libx264/libx265 defaults
|
|
23
|
+
* (open-GOP, scenecut-driven keyframes), preserving the in-process
|
|
24
|
+
* renderer's byte-identical output.
|
|
25
|
+
*
|
|
26
|
+
* Only honored by the SW libx264 / libx265 paths. GPU encoders, vp9, and
|
|
27
|
+
* prores ignore the flag (their concat-copy story is separate).
|
|
28
|
+
*/
|
|
29
|
+
lockGopForChunkConcat?: boolean;
|
|
30
|
+
/**
|
|
31
|
+
* Required when `lockGopForChunkConcat` is `true`. Number of frames per
|
|
32
|
+
* GOP — set to `chunkSize` so every chunk starts on an IDR keyframe and
|
|
33
|
+
* concat-copy boundaries land on independently-decodable frames.
|
|
34
|
+
*/
|
|
35
|
+
gopSize?: number;
|
|
17
36
|
}
|
|
18
37
|
export interface EncodeResult {
|
|
19
38
|
success: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chunkEncoder.types.d.ts","sourceRoot":"","sources":["../../src/services/chunkEncoder.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAE7C,MAAM,WAAW,cAAc;IAC7B,uEAAuE;IACvE,GAAG,EAAE,GAAG,CAAC;IACT,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAC;IAC3C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,GAAG,CAAC,EAAE;QAAE,QAAQ,EAAE,WAAW,CAAA;KAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"chunkEncoder.types.d.ts","sourceRoot":"","sources":["../../src/services/chunkEncoder.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAE7C,MAAM,WAAW,cAAc;IAC7B,uEAAuE;IACvE,GAAG,EAAE,GAAG,CAAC;IACT,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAC;IAC3C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,GAAG,CAAC,EAAE;QAAE,QAAQ,EAAE,WAAW,CAAA;KAAE,CAAC;IAChC;;;;;;;;;;;OAWG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hyperframes/engine",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.3",
|
|
4
4
|
"description": "Seekable web page to video rendering engine (Puppeteer + FFmpeg)",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -19,10 +19,10 @@
|
|
|
19
19
|
"linkedom": "^0.18.12",
|
|
20
20
|
"puppeteer": "^24.0.0",
|
|
21
21
|
"puppeteer-core": "^24.39.1",
|
|
22
|
-
"@hyperframes/core": "^0.6.
|
|
22
|
+
"@hyperframes/core": "^0.6.3"
|
|
23
23
|
},
|
|
24
24
|
"devDependencies": {
|
|
25
|
-
"@types/node": "^
|
|
25
|
+
"@types/node": "^25.0.10",
|
|
26
26
|
"@webgpu/types": "^0.1.69",
|
|
27
27
|
"typescript": "^5.7.2",
|
|
28
28
|
"vitest": "^3.2.4"
|
|
@@ -391,6 +391,245 @@ describe("getEncoderPreset HDR", () => {
|
|
|
391
391
|
});
|
|
392
392
|
});
|
|
393
393
|
|
|
394
|
+
describe("buildEncoderArgs lockGopForChunkConcat", () => {
|
|
395
|
+
const baseOptions = { fps: { num: 30, den: 1 }, width: 1920, height: 1080 };
|
|
396
|
+
const inputArgs = ["-framerate", "30", "-i", "frames/%04d.png"];
|
|
397
|
+
|
|
398
|
+
// Default path must emit zero closed-GOP args — in-process renders rely on
|
|
399
|
+
// libx264/libx265 defaults to stay byte-identical with their PSNR baselines.
|
|
400
|
+
it("default (false) omits closed-GOP args for libx264", () => {
|
|
401
|
+
const args = buildEncoderArgs(
|
|
402
|
+
{ ...baseOptions, codec: "h264", preset: "medium", quality: 23 },
|
|
403
|
+
inputArgs,
|
|
404
|
+
"out.mp4",
|
|
405
|
+
);
|
|
406
|
+
expect(args).not.toContain("-g");
|
|
407
|
+
expect(args).not.toContain("-keyint_min");
|
|
408
|
+
expect(args).not.toContain("-force_key_frames");
|
|
409
|
+
expect(args).not.toContain("-sc_threshold");
|
|
410
|
+
const paramIdx = args.indexOf("-x264-params");
|
|
411
|
+
expect(args[paramIdx + 1]).not.toContain("scenecut=0");
|
|
412
|
+
expect(args[paramIdx + 1]).not.toContain("open-gop=0");
|
|
413
|
+
expect(args[paramIdx + 1]).not.toContain("repeat-headers=1");
|
|
414
|
+
});
|
|
415
|
+
|
|
416
|
+
it("default (false) omits closed-GOP args for libx265", () => {
|
|
417
|
+
const args = buildEncoderArgs(
|
|
418
|
+
{ ...baseOptions, codec: "h265", preset: "medium", quality: 23 },
|
|
419
|
+
inputArgs,
|
|
420
|
+
"out.mp4",
|
|
421
|
+
);
|
|
422
|
+
expect(args).not.toContain("-g");
|
|
423
|
+
expect(args).not.toContain("-keyint_min");
|
|
424
|
+
expect(args).not.toContain("-force_key_frames");
|
|
425
|
+
expect(args).not.toContain("-sc_threshold");
|
|
426
|
+
const paramIdx = args.indexOf("-x265-params");
|
|
427
|
+
expect(args[paramIdx + 1]).not.toContain("scenecut=0");
|
|
428
|
+
expect(args[paramIdx + 1]).not.toContain("keyint=");
|
|
429
|
+
expect(args[paramIdx + 1]).not.toContain("open-gop=0");
|
|
430
|
+
expect(args[paramIdx + 1]).not.toContain("repeat-headers=1");
|
|
431
|
+
});
|
|
432
|
+
|
|
433
|
+
it("true appends closed-GOP ffmpeg flags and x264-params for libx264", () => {
|
|
434
|
+
const args = buildEncoderArgs(
|
|
435
|
+
{
|
|
436
|
+
...baseOptions,
|
|
437
|
+
codec: "h264",
|
|
438
|
+
preset: "medium",
|
|
439
|
+
quality: 23,
|
|
440
|
+
lockGopForChunkConcat: true,
|
|
441
|
+
gopSize: 240,
|
|
442
|
+
},
|
|
443
|
+
inputArgs,
|
|
444
|
+
"out.mp4",
|
|
445
|
+
);
|
|
446
|
+
expect(args[args.indexOf("-g") + 1]).toBe("240");
|
|
447
|
+
expect(args[args.indexOf("-keyint_min") + 1]).toBe("240");
|
|
448
|
+
expect(args[args.indexOf("-sc_threshold") + 1]).toBe("0");
|
|
449
|
+
expect(args[args.indexOf("-force_key_frames") + 1]).toBe("expr:eq(mod(n,240),0)");
|
|
450
|
+
const paramIdx = args.indexOf("-x264-params");
|
|
451
|
+
expect(args[paramIdx + 1]).toContain("scenecut=0");
|
|
452
|
+
expect(args[paramIdx + 1]).toContain("open-gop=0");
|
|
453
|
+
expect(args[paramIdx + 1]).toContain("repeat-headers=1");
|
|
454
|
+
// -bf 0 was already present for h264; closed-GOP doesn't change that.
|
|
455
|
+
expect(args).toContain("-bf");
|
|
456
|
+
expect(args[args.indexOf("-bf") + 1]).toBe("0");
|
|
457
|
+
// 90000 timescale is required for clean concat-copy — already enforced for h264/h265.
|
|
458
|
+
expect(args[args.indexOf("-video_track_timescale") + 1]).toBe("90000");
|
|
459
|
+
});
|
|
460
|
+
|
|
461
|
+
it("true appends closed-GOP x265-params keyint controls for libx265", () => {
|
|
462
|
+
const args = buildEncoderArgs(
|
|
463
|
+
{
|
|
464
|
+
...baseOptions,
|
|
465
|
+
codec: "h265",
|
|
466
|
+
preset: "medium",
|
|
467
|
+
quality: 23,
|
|
468
|
+
lockGopForChunkConcat: true,
|
|
469
|
+
gopSize: 360,
|
|
470
|
+
},
|
|
471
|
+
inputArgs,
|
|
472
|
+
"out.mp4",
|
|
473
|
+
);
|
|
474
|
+
expect(args[args.indexOf("-g") + 1]).toBe("360");
|
|
475
|
+
expect(args[args.indexOf("-keyint_min") + 1]).toBe("360");
|
|
476
|
+
expect(args[args.indexOf("-sc_threshold") + 1]).toBe("0");
|
|
477
|
+
expect(args[args.indexOf("-force_key_frames") + 1]).toBe("expr:eq(mod(n,360),0)");
|
|
478
|
+
const paramIdx = args.indexOf("-x265-params");
|
|
479
|
+
expect(args[paramIdx + 1]).toContain("keyint=360");
|
|
480
|
+
expect(args[paramIdx + 1]).toContain("min-keyint=360");
|
|
481
|
+
expect(args[paramIdx + 1]).toContain("scenecut=0");
|
|
482
|
+
expect(args[paramIdx + 1]).toContain("open-gop=0");
|
|
483
|
+
expect(args[paramIdx + 1]).toContain("repeat-headers=1");
|
|
484
|
+
// h265 normally tolerates B-frames; closed-GOP concat-copy doesn't.
|
|
485
|
+
expect(args[args.indexOf("-bf") + 1]).toBe("0");
|
|
486
|
+
});
|
|
487
|
+
|
|
488
|
+
it("true preserves the x264-params anti-banding controls", () => {
|
|
489
|
+
// The closed-GOP params join onto the existing aq-mode/deblock string —
|
|
490
|
+
// make sure we didn't accidentally drop the anti-banding tuning.
|
|
491
|
+
const args = buildEncoderArgs(
|
|
492
|
+
{
|
|
493
|
+
...baseOptions,
|
|
494
|
+
codec: "h264",
|
|
495
|
+
preset: "medium",
|
|
496
|
+
quality: 23,
|
|
497
|
+
lockGopForChunkConcat: true,
|
|
498
|
+
gopSize: 240,
|
|
499
|
+
},
|
|
500
|
+
inputArgs,
|
|
501
|
+
"out.mp4",
|
|
502
|
+
);
|
|
503
|
+
const paramIdx = args.indexOf("-x264-params");
|
|
504
|
+
expect(args[paramIdx + 1]).toContain("aq-mode=3");
|
|
505
|
+
expect(args[paramIdx + 1]).toContain("aq-strength=0.8");
|
|
506
|
+
expect(args[paramIdx + 1]).toContain("deblock=1,1");
|
|
507
|
+
expect(args[paramIdx + 1]).toContain("colorprim=bt709");
|
|
508
|
+
});
|
|
509
|
+
|
|
510
|
+
it("true with ultrafast preset still emits closed-GOP params and skips deblock", () => {
|
|
511
|
+
const args = buildEncoderArgs(
|
|
512
|
+
{
|
|
513
|
+
...baseOptions,
|
|
514
|
+
codec: "h264",
|
|
515
|
+
preset: "ultrafast",
|
|
516
|
+
quality: 28,
|
|
517
|
+
lockGopForChunkConcat: true,
|
|
518
|
+
gopSize: 240,
|
|
519
|
+
},
|
|
520
|
+
inputArgs,
|
|
521
|
+
"out.mp4",
|
|
522
|
+
);
|
|
523
|
+
expect(args[args.indexOf("-g") + 1]).toBe("240");
|
|
524
|
+
const paramIdx = args.indexOf("-x264-params");
|
|
525
|
+
expect(args[paramIdx + 1]).toContain("aq-mode=3");
|
|
526
|
+
expect(args[paramIdx + 1]).toContain("scenecut=0");
|
|
527
|
+
expect(args[paramIdx + 1]).not.toContain("deblock");
|
|
528
|
+
});
|
|
529
|
+
|
|
530
|
+
it("true is a no-op on GPU encoders", () => {
|
|
531
|
+
// GPU encoders take a separate code path; lockGopForChunkConcat does not
|
|
532
|
+
// wire `-g` / `-keyint_min` into nvenc/qsv/vaapi.
|
|
533
|
+
const args = buildEncoderArgs(
|
|
534
|
+
{
|
|
535
|
+
...baseOptions,
|
|
536
|
+
codec: "h264",
|
|
537
|
+
preset: "medium",
|
|
538
|
+
quality: 23,
|
|
539
|
+
useGpu: true,
|
|
540
|
+
lockGopForChunkConcat: true,
|
|
541
|
+
gopSize: 240,
|
|
542
|
+
},
|
|
543
|
+
inputArgs,
|
|
544
|
+
"out.mp4",
|
|
545
|
+
"nvenc",
|
|
546
|
+
);
|
|
547
|
+
expect(args).not.toContain("-g");
|
|
548
|
+
expect(args).not.toContain("-keyint_min");
|
|
549
|
+
expect(args).not.toContain("-force_key_frames");
|
|
550
|
+
expect(args).not.toContain("-sc_threshold");
|
|
551
|
+
expect(args.indexOf("-x264-params")).toBe(-1);
|
|
552
|
+
});
|
|
553
|
+
|
|
554
|
+
it("true is a no-op on VP9", () => {
|
|
555
|
+
const args = buildEncoderArgs(
|
|
556
|
+
{
|
|
557
|
+
...baseOptions,
|
|
558
|
+
codec: "vp9",
|
|
559
|
+
preset: "good",
|
|
560
|
+
quality: 23,
|
|
561
|
+
lockGopForChunkConcat: true,
|
|
562
|
+
gopSize: 240,
|
|
563
|
+
},
|
|
564
|
+
inputArgs,
|
|
565
|
+
"out.webm",
|
|
566
|
+
);
|
|
567
|
+
expect(args).not.toContain("-g");
|
|
568
|
+
expect(args).not.toContain("-keyint_min");
|
|
569
|
+
expect(args).not.toContain("-force_key_frames");
|
|
570
|
+
});
|
|
571
|
+
|
|
572
|
+
it("true is a no-op on ProRes (intra-only — no GOP forcing needed)", () => {
|
|
573
|
+
const args = buildEncoderArgs(
|
|
574
|
+
{
|
|
575
|
+
...baseOptions,
|
|
576
|
+
codec: "prores",
|
|
577
|
+
preset: "4444",
|
|
578
|
+
quality: 23,
|
|
579
|
+
lockGopForChunkConcat: true,
|
|
580
|
+
gopSize: 240,
|
|
581
|
+
},
|
|
582
|
+
inputArgs,
|
|
583
|
+
"out.mov",
|
|
584
|
+
);
|
|
585
|
+
expect(args).not.toContain("-g");
|
|
586
|
+
expect(args).not.toContain("-keyint_min");
|
|
587
|
+
expect(args).not.toContain("-force_key_frames");
|
|
588
|
+
});
|
|
589
|
+
|
|
590
|
+
it("true with missing or invalid gopSize throws", () => {
|
|
591
|
+
for (const bad of [undefined, 0, -10, NaN, Infinity]) {
|
|
592
|
+
expect(() =>
|
|
593
|
+
buildEncoderArgs(
|
|
594
|
+
{
|
|
595
|
+
...baseOptions,
|
|
596
|
+
codec: "h264",
|
|
597
|
+
preset: "medium",
|
|
598
|
+
quality: 23,
|
|
599
|
+
lockGopForChunkConcat: true,
|
|
600
|
+
gopSize: bad as number | undefined,
|
|
601
|
+
},
|
|
602
|
+
inputArgs,
|
|
603
|
+
"out.mp4",
|
|
604
|
+
),
|
|
605
|
+
).toThrow(/lockGopForChunkConcat=true requires a positive integer gopSize/);
|
|
606
|
+
}
|
|
607
|
+
});
|
|
608
|
+
|
|
609
|
+
it("HDR + closed-GOP keeps HDR mastering metadata in x265-params", () => {
|
|
610
|
+
const args = buildEncoderArgs(
|
|
611
|
+
{
|
|
612
|
+
...baseOptions,
|
|
613
|
+
codec: "h265",
|
|
614
|
+
preset: "medium",
|
|
615
|
+
quality: 23,
|
|
616
|
+
hdr: { transfer: "pq" },
|
|
617
|
+
lockGopForChunkConcat: true,
|
|
618
|
+
gopSize: 240,
|
|
619
|
+
},
|
|
620
|
+
inputArgs,
|
|
621
|
+
"out.mp4",
|
|
622
|
+
);
|
|
623
|
+
const paramIdx = args.indexOf("-x265-params");
|
|
624
|
+
expect(args[paramIdx + 1]).toContain("colorprim=bt2020");
|
|
625
|
+
expect(args[paramIdx + 1]).toContain("transfer=smpte2084");
|
|
626
|
+
expect(args[paramIdx + 1]).toContain("master-display=");
|
|
627
|
+
expect(args[paramIdx + 1]).toContain("max-cll=");
|
|
628
|
+
expect(args[paramIdx + 1]).toContain("keyint=240");
|
|
629
|
+
expect(args[paramIdx + 1]).toContain("scenecut=0");
|
|
630
|
+
});
|
|
631
|
+
});
|
|
632
|
+
|
|
394
633
|
describe("buildEncoderArgs HDR color space", () => {
|
|
395
634
|
const baseOptions = { fps: { num: 30, den: 1 }, width: 1920, height: 1080 };
|
|
396
635
|
const inputArgs = ["-framerate", "30", "-i", "frames/%04d.png"];
|
|
@@ -165,6 +165,36 @@ export function buildEncoderArgs(
|
|
|
165
165
|
if (bitrate) args.push("-b:v", bitrate);
|
|
166
166
|
else args.push("-crf", String(quality));
|
|
167
167
|
|
|
168
|
+
// Closed-GOP / forced-keyframe args so an external orchestrator can
|
|
169
|
+
// ffmpeg-concat chunk files with `-c copy`. Without these, libx264 /
|
|
170
|
+
// libx265 emit open-GOP frames with mid-chunk scenecut keyframes; the
|
|
171
|
+
// first frame of each chunk isn't an independently-decodable IDR and
|
|
172
|
+
// concat-copy playback freezes at chunk seams on some decoders.
|
|
173
|
+
const lockGop = options.lockGopForChunkConcat === true;
|
|
174
|
+
let gop = 0;
|
|
175
|
+
if (lockGop) {
|
|
176
|
+
if (
|
|
177
|
+
typeof options.gopSize !== "number" ||
|
|
178
|
+
!Number.isFinite(options.gopSize) ||
|
|
179
|
+
options.gopSize <= 0
|
|
180
|
+
) {
|
|
181
|
+
throw new Error(
|
|
182
|
+
`[chunkEncoder] lockGopForChunkConcat=true requires a positive integer gopSize (received ${String(options.gopSize)})`,
|
|
183
|
+
);
|
|
184
|
+
}
|
|
185
|
+
gop = Math.floor(options.gopSize);
|
|
186
|
+
args.push(
|
|
187
|
+
"-g",
|
|
188
|
+
String(gop),
|
|
189
|
+
"-keyint_min",
|
|
190
|
+
String(gop),
|
|
191
|
+
"-sc_threshold",
|
|
192
|
+
"0",
|
|
193
|
+
"-force_key_frames",
|
|
194
|
+
`expr:eq(mod(n,${gop}),0)`,
|
|
195
|
+
);
|
|
196
|
+
}
|
|
197
|
+
|
|
168
198
|
// Disable B-frames. Standard h264 with B-frames produces negative DTS
|
|
169
199
|
// at the start of the stream (the first B-frame's decode order is
|
|
170
200
|
// "before" the first I-frame's presentation time). VS Code's video
|
|
@@ -173,7 +203,12 @@ export function buildEncoderArgs(
|
|
|
173
203
|
// -bf 0 makes PTS == DTS at every frame, eliminating the issue at the
|
|
174
204
|
// source. Quality cost is ~5–10% larger files at the same CRF — a
|
|
175
205
|
// worthwhile trade for "the file plays everywhere".
|
|
176
|
-
|
|
206
|
+
//
|
|
207
|
+
// Also emit `-bf 0` for h265 when closed-GOP is locked: chunked
|
|
208
|
+
// concat-copy of h265 with B-frames hits the same negative-DTS hazard
|
|
209
|
+
// at every chunk boundary, even though single-stream h265 normally
|
|
210
|
+
// tolerates B-frames fine.
|
|
211
|
+
if (codec === "h264" || (codec === "h265" && lockGop)) {
|
|
177
212
|
args.push("-bf", "0");
|
|
178
213
|
}
|
|
179
214
|
|
|
@@ -182,15 +217,33 @@ export function buildEncoderArgs(
|
|
|
182
217
|
// For HDR x265 paths we additionally embed BT.2020 + transfer + HDR static
|
|
183
218
|
// mastering metadata via x265-params; libx264 only carries BT.709 tags
|
|
184
219
|
// since HDR through H.264 is not supported by this encoder path.
|
|
220
|
+
//
|
|
221
|
+
// When closed-GOP is locked we additionally bake the keyint/scenecut
|
|
222
|
+
// controls into the codec param string so libx264's slice-type decisions
|
|
223
|
+
// and libx265's rate-control respect the IDR cadence end-to-end (without
|
|
224
|
+
// these, ffmpeg's `-force_key_frames` is honored but the underlying
|
|
225
|
+
// encoder may still insert mini-GOPs with open-GOP references that
|
|
226
|
+
// break concat-copy on some decoders). `repeat-headers=1` writes SPS/PPS
|
|
227
|
+
// at every keyframe so each chunk file is self-contained.
|
|
185
228
|
const xParamsFlag = codec === "h264" ? "-x264-params" : "-x265-params";
|
|
186
229
|
const colorParams =
|
|
187
230
|
codec === "h265" && options.hdr
|
|
188
231
|
? getHdrEncoderColorParams(options.hdr.transfer).x265ColorParams
|
|
189
232
|
: "colorprim=bt709:transfer=bt709:colormatrix=bt709";
|
|
233
|
+
let gopParams = "";
|
|
234
|
+
if (lockGop) {
|
|
235
|
+
const shared = "scenecut=0:open-gop=0:repeat-headers=1";
|
|
236
|
+
gopParams = codec === "h264" ? shared : `keyint=${gop}:min-keyint=${gop}:${shared}`;
|
|
237
|
+
}
|
|
238
|
+
const joinParams = (...parts: string[]): string =>
|
|
239
|
+
parts.filter((p) => p.length > 0).join(":");
|
|
190
240
|
if (preset === "ultrafast") {
|
|
191
|
-
args.push(xParamsFlag,
|
|
241
|
+
args.push(xParamsFlag, joinParams("aq-mode=3", colorParams, gopParams));
|
|
192
242
|
} else {
|
|
193
|
-
args.push(
|
|
243
|
+
args.push(
|
|
244
|
+
xParamsFlag,
|
|
245
|
+
joinParams("aq-mode=3", "aq-strength=0.8", "deblock=1,1", colorParams, gopParams),
|
|
246
|
+
);
|
|
194
247
|
}
|
|
195
248
|
}
|
|
196
249
|
// Apple devices require hvc1 tag for HEVC playback (default hev1 won't open in QuickTime)
|
|
@@ -13,6 +13,25 @@ export interface EncoderOptions {
|
|
|
13
13
|
pixelFormat?: string;
|
|
14
14
|
useGpu?: boolean;
|
|
15
15
|
hdr?: { transfer: HdrTransfer };
|
|
16
|
+
/**
|
|
17
|
+
* When `true`, force closed-GOP encoding with a keyframe at every
|
|
18
|
+
* `gopSize` boundary so the resulting chunk file can be losslessly
|
|
19
|
+
* concatenated (`ffmpeg -f concat -c copy`) with sibling chunks.
|
|
20
|
+
*
|
|
21
|
+
* Default `false`: GOP placement is left to libx264/libx265 defaults
|
|
22
|
+
* (open-GOP, scenecut-driven keyframes), preserving the in-process
|
|
23
|
+
* renderer's byte-identical output.
|
|
24
|
+
*
|
|
25
|
+
* Only honored by the SW libx264 / libx265 paths. GPU encoders, vp9, and
|
|
26
|
+
* prores ignore the flag (their concat-copy story is separate).
|
|
27
|
+
*/
|
|
28
|
+
lockGopForChunkConcat?: boolean;
|
|
29
|
+
/**
|
|
30
|
+
* Required when `lockGopForChunkConcat` is `true`. Number of frames per
|
|
31
|
+
* GOP — set to `chunkSize` so every chunk starts on an IDR keyframe and
|
|
32
|
+
* concat-copy boundaries land on independently-decodable frames.
|
|
33
|
+
*/
|
|
34
|
+
gopSize?: number;
|
|
16
35
|
}
|
|
17
36
|
|
|
18
37
|
export interface EncodeResult {
|