@editframe/assets 0.49.6 → 0.49.7

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.
@@ -1,9 +1,9 @@
1
1
  import { PacketProbe } from "./Probe.js";
2
2
  import { createWriteStream } from "node:fs";
3
+ import { unlink } from "node:fs/promises";
3
4
  import debug from "debug";
4
5
  import { Transform, Writable } from "node:stream";
5
6
  import { pipeline } from "node:stream/promises";
6
- import { unlink } from "node:fs/promises";
7
7
  import { tmpdir } from "node:os";
8
8
  import { join } from "node:path";
9
9
  import { randomBytes } from "node:crypto";
@@ -1,8 +1,8 @@
1
1
  const require_runtime = require("./_virtual/_rolldown/runtime.cjs");
2
2
  const require_Probe = require("./Probe.cjs");
3
+ let node_fs_promises = require("node:fs/promises");
3
4
  let debug = require("debug");
4
5
  debug = require_runtime.__toESM(debug);
5
- let node_fs_promises = require("node:fs/promises");
6
6
  //#region src/generateWebmSegmentIndex.ts
7
7
  /**
8
8
  * WebM / Matroska segment index generator.
@@ -183,11 +183,9 @@ function parseWebmStructure(buf) {
183
183
  * More reliable than parsing SimpleBlock flags in-process for large files.
184
184
  */
185
185
  async function annotateKeyframes(clusters, absolutePath) {
186
- const keyframePositions = (await require_Probe.PacketProbe.probePath(absolutePath)).packets.filter((p) => p.flags?.includes("K") && p.pos !== void 0).map((p) => p.pos);
187
- for (const cluster of clusters) {
188
- const clusterEnd = cluster.offset + cluster.size;
189
- cluster.hasKeyframe = keyframePositions.some((pos) => pos >= cluster.offset && pos < clusterEnd);
190
- }
186
+ const probe = await require_Probe.PacketProbe.probePath(absolutePath);
187
+ const keyframeTimesMs = new Set(probe.packets.filter((p) => p.flags?.includes("K") && p.pts_time !== void 0).map((p) => Math.round(parseFloat(String(p.pts_time)) * 1e3)));
188
+ for (const cluster of clusters) cluster.hasKeyframe = keyframeTimesMs.has(cluster.timestampMs);
191
189
  }
192
190
  function buildSegments(clusters, timescale, totalDurationMs) {
193
191
  const segments = [];
@@ -251,7 +249,7 @@ async function generateWebmSegmentIndex(absolutePath, startTimeOffsetMs) {
251
249
  if (videoPackets && videoPackets.length > 0) {
252
250
  const lastPkt = videoPackets[videoPackets.length - 1];
253
251
  const ptsMs = Math.round(parseFloat(String(lastPkt.pts_time ?? 0)) * 1e3);
254
- const durMs = Math.round(parseFloat(String(lastPkt.duration ?? 0)) * 1e3);
252
+ const durMs = Math.round(parseFloat(String(lastPkt.duration_time ?? 0)) * 1e3);
255
253
  if (ptsMs + durMs > 0) finalDurationMs = ptsMs + durMs;
256
254
  }
257
255
  }
@@ -288,8 +286,83 @@ async function generateWebmSegmentIndex(absolutePath, startTimeOffsetMs) {
288
286
  return { 1: trackIndex };
289
287
  }
290
288
  const ID_SEEKHEAD = 290298740;
289
+ const ID_TRACKS = 374648427;
290
+ const ID_TRACK_ENTRY = 174;
291
+ const ID_VIDEO = 224;
292
+ const ID_COLOUR = 21936;
291
293
  const EBML_VOID_ID = 236;
292
294
  /**
295
+ * Encode a Void element header (id + size VINT) such that the entire
296
+ * element occupies exactly `totalBytes` bytes. Returns the [id, ...vintBytes]
297
+ * prefix; the caller fills the remaining `totalBytes - prefix.length` with zeros.
298
+ */
299
+ function encodeVoidHeader(totalBytes) {
300
+ const c1 = totalBytes - 2;
301
+ if (c1 >= 0 && c1 <= 126) return [EBML_VOID_ID, 128 | c1];
302
+ const c2 = totalBytes - 3;
303
+ if (c2 >= 0 && c2 <= 16382) return [
304
+ EBML_VOID_ID,
305
+ 64 | c2 >> 8,
306
+ c2 & 255
307
+ ];
308
+ const c3 = totalBytes - 4;
309
+ return [
310
+ EBML_VOID_ID,
311
+ 32 | c3 >> 16,
312
+ c3 >> 8 & 255,
313
+ c3 & 255
314
+ ];
315
+ }
316
+ /**
317
+ * Replace the Colour element inside the video TrackEntry with an EBML Void
318
+ * of identical byte length. We do this because ffmpeg's matroska muxer always
319
+ * emits a Colour element with `MatrixCoefficients=bt470bg, Range=full` derived
320
+ * from `format=yuva420p` filter output, but the actual VP9 bitstream encodes
321
+ * `color_space=BT.601` — the mismatch causes Chrome's WebCodecs VideoDecoder
322
+ * to silently drop every delta frame after the keyframe (issue surfaces as
323
+ * "only 1 sample emitted from a 49-frame segment"). With no Colour element
324
+ * mediabunny passes `colorSpace: undefined` to the decoder and Chrome decodes
325
+ * normally.
326
+ */
327
+ function stripColourElement(buf, tracksStart, tracksEnd) {
328
+ let pos = tracksStart;
329
+ while (pos < tracksEnd) {
330
+ const { id: childId, width: childIdW } = readElementId(buf, pos);
331
+ const { value: childSize, width: childSizeW } = readVintSize(buf, pos + childIdW);
332
+ if (childSize === null) return;
333
+ const childContentStart = pos + childIdW + childSizeW;
334
+ const childEnd = childContentStart + childSize;
335
+ if (childId === ID_TRACK_ENTRY) {
336
+ let tepos = childContentStart;
337
+ while (tepos < childEnd) {
338
+ const { id: teid, width: teidW } = readElementId(buf, tepos);
339
+ const { value: tesize, width: tesizeW } = readVintSize(buf, tepos + teidW);
340
+ if (tesize === null) break;
341
+ const teContentStart = tepos + teidW + tesizeW;
342
+ const teEnd = teContentStart + tesize;
343
+ if (teid === ID_VIDEO) {
344
+ let vpos = teContentStart;
345
+ while (vpos < teEnd) {
346
+ const { id: vid, width: vidW } = readElementId(buf, vpos);
347
+ const { value: vsize, width: vsizeW } = readVintSize(buf, vpos + vidW);
348
+ if (vsize === null) break;
349
+ const totalElementSize = vidW + vsizeW + vsize;
350
+ if (vid === ID_COLOUR) {
351
+ const header = encodeVoidHeader(totalElementSize);
352
+ for (let i = 0; i < header.length; i++) buf[vpos + i] = header[i];
353
+ buf.fill(0, vpos + header.length, vpos + totalElementSize);
354
+ return;
355
+ }
356
+ vpos += totalElementSize;
357
+ }
358
+ }
359
+ tepos = teContentStart + tesize;
360
+ }
361
+ }
362
+ pos = childContentStart + childSize;
363
+ }
364
+ }
365
+ /**
293
366
  * Patch a WebM buffer in-place to make it safe for partial (segment-sliced) serving:
294
367
  *
295
368
  * 1. Segment-element size VINT → EBML unknown-size (0x01FFFFFFFFFFFFFF).
@@ -301,7 +374,10 @@ const EBML_VOID_ID = 236;
301
374
  * falls off the end of the buffer, causing seek errors and de-sync. Replacing
302
375
  * it with a Void element forces linear parsing: EBML → Info → Tracks → Clusters.
303
376
  *
304
- * Both patches are applied to a Buffer copy; the source file on disk is not modified.
377
+ * 3. Colour element inside Video TrackEntry EBML Void of the same byte length.
378
+ * See stripColourElement() for rationale.
379
+ *
380
+ * All patches are applied to a Buffer copy; the source file on disk is not modified.
305
381
  */
306
382
  function patchWebmForSegmentedServing(buf) {
307
383
  try {
@@ -332,18 +408,12 @@ function patchWebmForSegmentedServing(buf) {
332
408
  if (childSize === null) break;
333
409
  const totalElementSize = childIdWidth + childSizeWidth + childSize;
334
410
  if (childId === ID_SEEKHEAD) {
335
- const voidContentSize = totalElementSize - 1;
336
- let vintBytes;
337
- if (voidContentSize <= 126) vintBytes = [128 | voidContentSize];
338
- else if (voidContentSize <= 16382) vintBytes = [64 | voidContentSize >> 8, voidContentSize & 255];
339
- else vintBytes = [
340
- 32 | voidContentSize >> 16,
341
- voidContentSize >> 8 & 255,
342
- voidContentSize & 255
343
- ];
344
- buf[pos] = EBML_VOID_ID;
345
- for (let i = 0; i < vintBytes.length; i++) buf[pos + 1 + i] = vintBytes[i];
346
- buf.fill(0, pos + 1 + vintBytes.length, pos + totalElementSize);
411
+ const header = encodeVoidHeader(totalElementSize);
412
+ for (let i = 0; i < header.length; i++) buf[pos + i] = header[i];
413
+ buf.fill(0, pos + header.length, pos + totalElementSize);
414
+ } else if (childId === ID_TRACKS) {
415
+ const tracksStart = pos + childIdWidth + childSizeWidth;
416
+ stripColourElement(buf, tracksStart, tracksStart + childSize);
347
417
  break;
348
418
  }
349
419
  pos += totalElementSize;
@@ -1 +1 @@
1
- {"version":3,"file":"generateWebmSegmentIndex.cjs","names":["PacketProbe"],"sources":["../src/generateWebmSegmentIndex.ts"],"mappings":"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"}
1
+ {"version":3,"file":"generateWebmSegmentIndex.cjs","names":["PacketProbe"],"sources":["../src/generateWebmSegmentIndex.ts"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { PacketProbe } from "./Probe.js";
2
- import debug from "debug";
3
2
  import { readFile } from "node:fs/promises";
3
+ import debug from "debug";
4
4
  //#region src/generateWebmSegmentIndex.ts
5
5
  /**
6
6
  * WebM / Matroska segment index generator.
@@ -181,11 +181,9 @@ function parseWebmStructure(buf) {
181
181
  * More reliable than parsing SimpleBlock flags in-process for large files.
182
182
  */
183
183
  async function annotateKeyframes(clusters, absolutePath) {
184
- const keyframePositions = (await PacketProbe.probePath(absolutePath)).packets.filter((p) => p.flags?.includes("K") && p.pos !== void 0).map((p) => p.pos);
185
- for (const cluster of clusters) {
186
- const clusterEnd = cluster.offset + cluster.size;
187
- cluster.hasKeyframe = keyframePositions.some((pos) => pos >= cluster.offset && pos < clusterEnd);
188
- }
184
+ const probe = await PacketProbe.probePath(absolutePath);
185
+ const keyframeTimesMs = new Set(probe.packets.filter((p) => p.flags?.includes("K") && p.pts_time !== void 0).map((p) => Math.round(parseFloat(String(p.pts_time)) * 1e3)));
186
+ for (const cluster of clusters) cluster.hasKeyframe = keyframeTimesMs.has(cluster.timestampMs);
189
187
  }
190
188
  function buildSegments(clusters, timescale, totalDurationMs) {
191
189
  const segments = [];
@@ -249,7 +247,7 @@ async function generateWebmSegmentIndex(absolutePath, startTimeOffsetMs) {
249
247
  if (videoPackets && videoPackets.length > 0) {
250
248
  const lastPkt = videoPackets[videoPackets.length - 1];
251
249
  const ptsMs = Math.round(parseFloat(String(lastPkt.pts_time ?? 0)) * 1e3);
252
- const durMs = Math.round(parseFloat(String(lastPkt.duration ?? 0)) * 1e3);
250
+ const durMs = Math.round(parseFloat(String(lastPkt.duration_time ?? 0)) * 1e3);
253
251
  if (ptsMs + durMs > 0) finalDurationMs = ptsMs + durMs;
254
252
  }
255
253
  }
@@ -286,8 +284,83 @@ async function generateWebmSegmentIndex(absolutePath, startTimeOffsetMs) {
286
284
  return { 1: trackIndex };
287
285
  }
288
286
  const ID_SEEKHEAD = 290298740;
287
+ const ID_TRACKS = 374648427;
288
+ const ID_TRACK_ENTRY = 174;
289
+ const ID_VIDEO = 224;
290
+ const ID_COLOUR = 21936;
289
291
  const EBML_VOID_ID = 236;
290
292
  /**
293
+ * Encode a Void element header (id + size VINT) such that the entire
294
+ * element occupies exactly `totalBytes` bytes. Returns the [id, ...vintBytes]
295
+ * prefix; the caller fills the remaining `totalBytes - prefix.length` with zeros.
296
+ */
297
+ function encodeVoidHeader(totalBytes) {
298
+ const c1 = totalBytes - 2;
299
+ if (c1 >= 0 && c1 <= 126) return [EBML_VOID_ID, 128 | c1];
300
+ const c2 = totalBytes - 3;
301
+ if (c2 >= 0 && c2 <= 16382) return [
302
+ EBML_VOID_ID,
303
+ 64 | c2 >> 8,
304
+ c2 & 255
305
+ ];
306
+ const c3 = totalBytes - 4;
307
+ return [
308
+ EBML_VOID_ID,
309
+ 32 | c3 >> 16,
310
+ c3 >> 8 & 255,
311
+ c3 & 255
312
+ ];
313
+ }
314
+ /**
315
+ * Replace the Colour element inside the video TrackEntry with an EBML Void
316
+ * of identical byte length. We do this because ffmpeg's matroska muxer always
317
+ * emits a Colour element with `MatrixCoefficients=bt470bg, Range=full` derived
318
+ * from `format=yuva420p` filter output, but the actual VP9 bitstream encodes
319
+ * `color_space=BT.601` — the mismatch causes Chrome's WebCodecs VideoDecoder
320
+ * to silently drop every delta frame after the keyframe (issue surfaces as
321
+ * "only 1 sample emitted from a 49-frame segment"). With no Colour element
322
+ * mediabunny passes `colorSpace: undefined` to the decoder and Chrome decodes
323
+ * normally.
324
+ */
325
+ function stripColourElement(buf, tracksStart, tracksEnd) {
326
+ let pos = tracksStart;
327
+ while (pos < tracksEnd) {
328
+ const { id: childId, width: childIdW } = readElementId(buf, pos);
329
+ const { value: childSize, width: childSizeW } = readVintSize(buf, pos + childIdW);
330
+ if (childSize === null) return;
331
+ const childContentStart = pos + childIdW + childSizeW;
332
+ const childEnd = childContentStart + childSize;
333
+ if (childId === ID_TRACK_ENTRY) {
334
+ let tepos = childContentStart;
335
+ while (tepos < childEnd) {
336
+ const { id: teid, width: teidW } = readElementId(buf, tepos);
337
+ const { value: tesize, width: tesizeW } = readVintSize(buf, tepos + teidW);
338
+ if (tesize === null) break;
339
+ const teContentStart = tepos + teidW + tesizeW;
340
+ const teEnd = teContentStart + tesize;
341
+ if (teid === ID_VIDEO) {
342
+ let vpos = teContentStart;
343
+ while (vpos < teEnd) {
344
+ const { id: vid, width: vidW } = readElementId(buf, vpos);
345
+ const { value: vsize, width: vsizeW } = readVintSize(buf, vpos + vidW);
346
+ if (vsize === null) break;
347
+ const totalElementSize = vidW + vsizeW + vsize;
348
+ if (vid === ID_COLOUR) {
349
+ const header = encodeVoidHeader(totalElementSize);
350
+ for (let i = 0; i < header.length; i++) buf[vpos + i] = header[i];
351
+ buf.fill(0, vpos + header.length, vpos + totalElementSize);
352
+ return;
353
+ }
354
+ vpos += totalElementSize;
355
+ }
356
+ }
357
+ tepos = teContentStart + tesize;
358
+ }
359
+ }
360
+ pos = childContentStart + childSize;
361
+ }
362
+ }
363
+ /**
291
364
  * Patch a WebM buffer in-place to make it safe for partial (segment-sliced) serving:
292
365
  *
293
366
  * 1. Segment-element size VINT → EBML unknown-size (0x01FFFFFFFFFFFFFF).
@@ -299,7 +372,10 @@ const EBML_VOID_ID = 236;
299
372
  * falls off the end of the buffer, causing seek errors and de-sync. Replacing
300
373
  * it with a Void element forces linear parsing: EBML → Info → Tracks → Clusters.
301
374
  *
302
- * Both patches are applied to a Buffer copy; the source file on disk is not modified.
375
+ * 3. Colour element inside Video TrackEntry EBML Void of the same byte length.
376
+ * See stripColourElement() for rationale.
377
+ *
378
+ * All patches are applied to a Buffer copy; the source file on disk is not modified.
303
379
  */
304
380
  function patchWebmForSegmentedServing(buf) {
305
381
  try {
@@ -330,18 +406,12 @@ function patchWebmForSegmentedServing(buf) {
330
406
  if (childSize === null) break;
331
407
  const totalElementSize = childIdWidth + childSizeWidth + childSize;
332
408
  if (childId === ID_SEEKHEAD) {
333
- const voidContentSize = totalElementSize - 1;
334
- let vintBytes;
335
- if (voidContentSize <= 126) vintBytes = [128 | voidContentSize];
336
- else if (voidContentSize <= 16382) vintBytes = [64 | voidContentSize >> 8, voidContentSize & 255];
337
- else vintBytes = [
338
- 32 | voidContentSize >> 16,
339
- voidContentSize >> 8 & 255,
340
- voidContentSize & 255
341
- ];
342
- buf[pos] = EBML_VOID_ID;
343
- for (let i = 0; i < vintBytes.length; i++) buf[pos + 1 + i] = vintBytes[i];
344
- buf.fill(0, pos + 1 + vintBytes.length, pos + totalElementSize);
409
+ const header = encodeVoidHeader(totalElementSize);
410
+ for (let i = 0; i < header.length; i++) buf[pos + i] = header[i];
411
+ buf.fill(0, pos + header.length, pos + totalElementSize);
412
+ } else if (childId === ID_TRACKS) {
413
+ const tracksStart = pos + childIdWidth + childSizeWidth;
414
+ stripColourElement(buf, tracksStart, tracksStart + childSize);
345
415
  break;
346
416
  }
347
417
  pos += totalElementSize;
@@ -1 +1 @@
1
- {"version":3,"file":"generateWebmSegmentIndex.js","names":[],"sources":["../src/generateWebmSegmentIndex.ts"],"mappings":"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"}
1
+ {"version":3,"file":"generateWebmSegmentIndex.js","names":[],"sources":["../src/generateWebmSegmentIndex.ts"],"mappings":"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"}
@@ -1,10 +1,10 @@
1
1
  const require_runtime = require("./_virtual/_rolldown/runtime.cjs");
2
2
  const require_md5 = require("./md5.cjs");
3
3
  let node_fs = require("node:fs");
4
+ let node_fs_promises = require("node:fs/promises");
4
5
  let debug = require("debug");
5
6
  debug = require_runtime.__toESM(debug);
6
7
  let node_stream = require("node:stream");
7
- let node_fs_promises = require("node:fs/promises");
8
8
  let node_path = require("node:path");
9
9
  node_path = require_runtime.__toESM(node_path);
10
10
  let node_url = require("node:url");
@@ -1,8 +1,8 @@
1
1
  import { md5FilePath } from "./md5.js";
2
2
  import { createWriteStream, existsSync, readFileSync } from "node:fs";
3
+ import { mkdir, readFile, readdir, rename, rm, stat, writeFile } from "node:fs/promises";
3
4
  import debug from "debug";
4
5
  import { Readable } from "node:stream";
5
- import { mkdir, readFile, readdir, rename, rm, stat, writeFile } from "node:fs/promises";
6
6
  import path, { join } from "node:path";
7
7
  import { fileURLToPath } from "node:url";
8
8
  //#region src/idempotentTask.ts
package/dist/index.cjs CHANGED
@@ -2,8 +2,8 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_Probe = require("./Probe.cjs");
3
3
  const require_generateFragmentIndex = require("./generateFragmentIndex.cjs");
4
4
  const require_md5 = require("./md5.cjs");
5
- const require_generateTrackFragmentIndex = require("./tasks/generateTrackFragmentIndex.cjs");
6
5
  const require_generateTrack = require("./tasks/generateTrack.cjs");
6
+ const require_generateTrackFragmentIndex = require("./tasks/generateTrackFragmentIndex.cjs");
7
7
  const require_generateScrubTrack = require("./tasks/generateScrubTrack.cjs");
8
8
  const require_findOrCreateCaptions = require("./tasks/findOrCreateCaptions.cjs");
9
9
  const require_cacheImage = require("./tasks/cacheImage.cjs");
package/dist/index.js CHANGED
@@ -1,8 +1,8 @@
1
1
  import { PacketProbe, Probe } from "./Probe.js";
2
2
  import { generateFragmentIndex } from "./generateFragmentIndex.js";
3
3
  import { md5Buffer, md5Directory, md5FilePath, md5ReadStream } from "./md5.js";
4
- import { generateTrackFragmentIndex, generateTrackFragmentIndexFromPath } from "./tasks/generateTrackFragmentIndex.js";
5
4
  import { generateTrack, generateTrackFromPath } from "./tasks/generateTrack.js";
5
+ import { generateTrackFragmentIndex, generateTrackFragmentIndexFromPath } from "./tasks/generateTrackFragmentIndex.js";
6
6
  import { generateScrubTrack, generateScrubTrackFromPath } from "./tasks/generateScrubTrack.js";
7
7
  import { findOrCreateCaptions, generateCaptionDataFromPath } from "./tasks/findOrCreateCaptions.js";
8
8
  import { cacheImage } from "./tasks/cacheImage.js";
@@ -3,10 +3,10 @@ const require_Probe = require("../Probe.cjs");
3
3
  const require_generateFragmentIndex = require("../generateFragmentIndex.cjs");
4
4
  const require_idempotentTask = require("../idempotentTask.cjs");
5
5
  const require_generateWebmSegmentIndex = require("../generateWebmSegmentIndex.cjs");
6
+ let node_fs_promises = require("node:fs/promises");
6
7
  let debug = require("debug");
7
8
  debug = require_runtime.__toESM(debug);
8
9
  let node_stream = require("node:stream");
9
- let node_fs_promises = require("node:fs/promises");
10
10
  let node_os = require("node:os");
11
11
  let node_path = require("node:path");
12
12
  //#region src/tasks/generateScrubTrack.ts
@@ -1 +1 @@
1
- {"version":3,"file":"generateScrubTrack.cjs","names":["Probe","generateWebmSegmentIndex","Readable","PassThrough","generateFragmentIndex","idempotentTask"],"sources":["../../src/tasks/generateScrubTrack.ts"],"mappings":"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"}
1
+ {"version":3,"file":"generateScrubTrack.cjs","names":["Probe","generateWebmSegmentIndex","Readable","PassThrough","generateFragmentIndex","idempotentTask"],"sources":["../../src/tasks/generateScrubTrack.ts"],"mappings":"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"}
@@ -2,9 +2,9 @@ import { Probe } from "../Probe.js";
2
2
  import { generateFragmentIndex } from "../generateFragmentIndex.js";
3
3
  import { idempotentTask } from "../idempotentTask.js";
4
4
  import { generateWebmSegmentIndex, patchWebmForSegmentedServing } from "../generateWebmSegmentIndex.js";
5
+ import { mkdtemp, readFile, rm } from "node:fs/promises";
5
6
  import debug from "debug";
6
7
  import { PassThrough, Readable } from "node:stream";
7
- import { mkdtemp, readFile, rm } from "node:fs/promises";
8
8
  import { tmpdir } from "node:os";
9
9
  import { basename, join } from "node:path";
10
10
  //#region src/tasks/generateScrubTrack.ts
@@ -1 +1 @@
1
- {"version":3,"file":"generateScrubTrack.js","names":[],"sources":["../../src/tasks/generateScrubTrack.ts"],"mappings":"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"}
1
+ {"version":3,"file":"generateScrubTrack.js","names":[],"sources":["../../src/tasks/generateScrubTrack.ts"],"mappings":"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"}
@@ -3,28 +3,45 @@ const require_Probe = require("../Probe.cjs");
3
3
  const require_idempotentTask = require("../idempotentTask.cjs");
4
4
  const require_generateWebmSegmentIndex = require("../generateWebmSegmentIndex.cjs");
5
5
  const require_generateSingleTrack = require("../generateSingleTrack.cjs");
6
+ let node_fs_promises = require("node:fs/promises");
6
7
  let debug = require("debug");
7
8
  debug = require_runtime.__toESM(debug);
8
9
  let node_stream = require("node:stream");
9
- let node_fs_promises = require("node:fs/promises");
10
+ let node_os = require("node:os");
10
11
  let node_path = require("node:path");
11
12
  //#region src/tasks/generateTrack.ts
13
+ /** Target segment duration for keyframe-aligned WebM. Each cluster in the
14
+ * output is independently decodable, so the segment carving in
15
+ * generateWebmSegmentIndex can produce safe byte-range slices. */
16
+ const VP9_ALPHA_SEGMENT_MS = 2e3;
12
17
  const generateTrackFromPath = async (absolutePath, trackId) => {
13
18
  const log = (0, debug.default)("ef:generateTrackFragment");
14
19
  log(`Generating track ${trackId} for ${absolutePath}`);
15
- if ((await require_Probe.Probe.probePath(absolutePath)).hasAlphaVideo) {
16
- log(`VP9 alpha WebM: copying source with Segment size + SeekHead patched`);
17
- const buf = await (0, node_fs_promises.readFile)(absolutePath);
18
- require_generateWebmSegmentIndex.patchWebmForSegmentedServing(buf);
19
- return node_stream.Readable.from(buf);
20
+ const probe = await require_Probe.Probe.probePath(absolutePath);
21
+ if (probe.hasAlphaVideo) {
22
+ log(`VP9 alpha WebM: re-encoding with forced keyframes every ${VP9_ALPHA_SEGMENT_MS}ms`);
23
+ const tmpDir = await (0, node_fs_promises.mkdtemp)((0, node_path.join)((0, node_os.tmpdir)(), "ef-vp9-alpha-"));
24
+ const tmpPath = (0, node_path.join)(tmpDir, "track.webm");
25
+ try {
26
+ await probe.transcodeWebmKeyframeAligned(tmpPath, VP9_ALPHA_SEGMENT_MS);
27
+ const buf = await (0, node_fs_promises.readFile)(tmpPath);
28
+ require_generateWebmSegmentIndex.patchWebmForSegmentedServing(buf);
29
+ return node_stream.Readable.from(buf);
30
+ } finally {
31
+ (0, node_fs_promises.rm)(tmpDir, {
32
+ recursive: true,
33
+ force: true
34
+ }).catch(() => {});
35
+ }
20
36
  }
21
37
  return (await require_generateSingleTrack.generateSingleTrackFromPath(absolutePath, trackId)).stream;
22
38
  };
23
39
  const generateTrackTask = require_idempotentTask.idempotentTask({
24
40
  label: "track",
25
41
  filename: (absolutePath, _trackId) => {
26
- const ext = absolutePath.endsWith(".webm") ? "webm" : "mp4";
27
- return `${(0, node_path.basename)(absolutePath)}.track-1.${ext}`;
42
+ const lower = absolutePath.toLowerCase();
43
+ const isWebm = lower.endsWith(".webm") || /[._]webm[._]/.test(lower);
44
+ return `${(0, node_path.basename)(absolutePath)}.track-1.${isWebm ? "webm" : "mp4"}`;
28
45
  },
29
46
  runner: generateTrackFromPath
30
47
  });
@@ -42,5 +59,6 @@ const generateTrack = async (cacheRoot, absolutePath, url) => {
42
59
  //#endregion
43
60
  exports.generateTrack = generateTrack;
44
61
  exports.generateTrackFromPath = generateTrackFromPath;
62
+ exports.generateTrackTask = generateTrackTask;
45
63
 
46
64
  //# sourceMappingURL=generateTrack.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"generateTrack.cjs","names":["Probe","Readable","generateSingleTrackFromPath","idempotentTask"],"sources":["../../src/tasks/generateTrack.ts"],"mappings":";;;;;;;;;;;AASA,MAAa,wBAAwB,OAAO,cAAsB,YAAoB;CACpF,MAAM,OAAA,GAAA,MAAA,SAAY,2BAA2B;AAC7C,KAAI,oBAAoB,QAAQ,OAAO,eAAe;AAYtD,MAVc,MAAMA,cAAAA,MAAM,UAAU,aAAa,EAUvC,eAAe;AACvB,MAAI,sEAAsE;EAC1E,MAAM,MAAM,OAAA,GAAA,iBAAA,UAAe,aAAa;AACxC,mCAAA,6BAA6B,IAAI;AACjC,SAAOC,YAAAA,SAAS,KAAK,IAAI;;AAI3B,SADe,MAAMC,4BAAAA,4BAA4B,cAAc,QAAQ,EACzD;;AAGhB,MAAa,oBAAoBC,uBAAAA,eAAe;CAC9C,OAAO;CACP,WAAW,cAAsB,aAAqB;EAEpD,MAAM,MAAM,aAAa,SAAS,QAAQ,GAAG,SAAS;AACtD,SAAO,IAAA,GAAA,UAAA,UAAY,aAAa,CAAC,WAAW;;CAE9C,QAAQ;CACT,CAAC;AAEF,MAAa,gBAAgB,OAAO,WAAmB,cAAsB,QAAgB;AAC3F,KAAI;EACF,MAAM,UAAU,IAAI,IAAI,mBAAmB,MAAM,CAAC,aAAa,IAAI,UAAU;AAC7E,MAAI,YAAY,KACd,OAAM,IAAI,MACR,kHACD;AAEH,SAAO,MAAM,kBAAkB,WAAW,cAAc,OAAO,QAAQ,CAAC;UACjE,OAAO;AACd,UAAQ,MAAM,MAAM;AACpB,UAAQ,MAAM,0BAA0B,MAAM;AAC9C,QAAM"}
1
+ {"version":3,"file":"generateTrack.cjs","names":["Probe","Readable","generateSingleTrackFromPath","idempotentTask"],"sources":["../../src/tasks/generateTrack.ts"],"mappings":";;;;;;;;;;;;;;;AAaA,MAAM,uBAAuB;AAE7B,MAAa,wBAAwB,OAAO,cAAsB,YAAoB;CACpF,MAAM,OAAA,GAAA,MAAA,SAAY,2BAA2B;AAC7C,KAAI,oBAAoB,QAAQ,OAAO,eAAe;CAEtD,MAAM,QAAQ,MAAMA,cAAAA,MAAM,UAAU,aAAa;AAYjD,KAAI,MAAM,eAAe;AACvB,MAAI,2DAA2D,qBAAqB,IAAI;EACxF,MAAM,SAAS,OAAA,GAAA,iBAAA,UAAA,GAAA,UAAA,OAAA,GAAA,QAAA,SAA2B,EAAE,gBAAgB,CAAC;EAC7D,MAAM,WAAA,GAAA,UAAA,MAAe,QAAQ,aAAa;AAC1C,MAAI;AACF,SAAM,MAAM,6BAA6B,SAAS,qBAAqB;GACvE,MAAM,MAAM,OAAA,GAAA,iBAAA,UAAe,QAAQ;AACnC,oCAAA,6BAA6B,IAAI;AACjC,UAAOC,YAAAA,SAAS,KAAK,IAAI;YACjB;AACR,IAAA,GAAA,iBAAA,IAAG,QAAQ;IAAE,WAAW;IAAM,OAAO;IAAM,CAAC,CAAC,YAAY,GAAG;;;AAKhE,SADe,MAAMC,4BAAAA,4BAA4B,cAAc,QAAQ,EACzD;;AAGhB,MAAa,oBAAoBC,uBAAAA,eAAe;CAC9C,OAAO;CACP,WAAW,cAAsB,aAAqB;EAKpD,MAAM,QAAQ,aAAa,aAAa;EACxC,MAAM,SAAS,MAAM,SAAS,QAAQ,IAAI,eAAe,KAAK,MAAM;AACpE,SAAO,IAAA,GAAA,UAAA,UAAY,aAAa,CAAC,WAAW,SAAS,SAAS;;CAEhE,QAAQ;CACT,CAAC;AAEF,MAAa,gBAAgB,OAAO,WAAmB,cAAsB,QAAgB;AAC3F,KAAI;EACF,MAAM,UAAU,IAAI,IAAI,mBAAmB,MAAM,CAAC,aAAa,IAAI,UAAU;AAC7E,MAAI,YAAY,KACd,OAAM,IAAI,MACR,kHACD;AAEH,SAAO,MAAM,kBAAkB,WAAW,cAAc,OAAO,QAAQ,CAAC;UACjE,OAAO;AACd,UAAQ,MAAM,MAAM;AACpB,UAAQ,MAAM,0BAA0B,MAAM;AAC9C,QAAM"}