@editframe/assets 0.7.0-beta.6 → 0.8.0-beta.1

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.
Files changed (51) hide show
  1. package/dist/EncodedAsset.d.ts +102 -0
  2. package/dist/EncodedAsset.js +564 -0
  3. package/dist/MP4File.d.ts +31 -0
  4. package/dist/{packages/assets/src/Probe.d.ts → Probe.d.ts} +45 -41
  5. package/dist/{packages/assets/src/Probe.js → Probe.js} +54 -5
  6. package/dist/index.d.ts +9 -0
  7. package/dist/index.js +24 -0
  8. package/dist/{packages/assets/src/md5.d.ts → md5.d.ts} +1 -0
  9. package/dist/{packages/assets/src/md5.js → md5.js} +6 -0
  10. package/dist/memoize.d.ts +2 -0
  11. package/dist/memoize.js +14 -0
  12. package/dist/{packages/assets/src/mp4FileWritable.d.ts → mp4FileWritable.d.ts} +1 -1
  13. package/dist/tasks/cacheImage.d.ts +1 -0
  14. package/dist/tasks/findOrCreateCaptions.d.ts +2 -0
  15. package/dist/tasks/findOrCreateCaptions.js +30 -0
  16. package/dist/tasks/generateTrack.d.ts +5 -0
  17. package/dist/{packages/assets/src/tasks → tasks}/generateTrack.js +26 -23
  18. package/dist/tasks/generateTrackFragmentIndex.d.ts +4 -0
  19. package/dist/{packages/assets/src/tasks → tasks}/generateTrackFragmentIndex.js +12 -6
  20. package/package.json +14 -10
  21. package/src/tasks/cacheImage.ts +1 -1
  22. package/src/tasks/findOrCreateCaptions.ts +18 -11
  23. package/src/tasks/generateTrack.ts +36 -31
  24. package/src/tasks/generateTrackFragmentIndex.ts +16 -9
  25. package/dist/lib/av/MP4File.cjs +0 -187
  26. package/dist/lib/util/execPromise.cjs +0 -6
  27. package/dist/lib/util/execPromise.js +0 -6
  28. package/dist/packages/assets/src/Probe.cjs +0 -224
  29. package/dist/packages/assets/src/VideoRenderOptions.cjs +0 -36
  30. package/dist/packages/assets/src/idempotentTask.cjs +0 -57
  31. package/dist/packages/assets/src/index.cjs +0 -20
  32. package/dist/packages/assets/src/index.d.ts +0 -9
  33. package/dist/packages/assets/src/index.js +0 -20
  34. package/dist/packages/assets/src/md5.cjs +0 -60
  35. package/dist/packages/assets/src/mp4FileWritable.cjs +0 -21
  36. package/dist/packages/assets/src/tasks/cacheImage.cjs +0 -22
  37. package/dist/packages/assets/src/tasks/cacheImage.d.ts +0 -1
  38. package/dist/packages/assets/src/tasks/findOrCreateCaptions.cjs +0 -26
  39. package/dist/packages/assets/src/tasks/findOrCreateCaptions.d.ts +0 -1
  40. package/dist/packages/assets/src/tasks/findOrCreateCaptions.js +0 -26
  41. package/dist/packages/assets/src/tasks/generateTrack.cjs +0 -52
  42. package/dist/packages/assets/src/tasks/generateTrack.d.ts +0 -1
  43. package/dist/packages/assets/src/tasks/generateTrackFragmentIndex.cjs +0 -105
  44. package/dist/packages/assets/src/tasks/generateTrackFragmentIndex.d.ts +0 -1
  45. /package/dist/{lib/av/MP4File.js → MP4File.js} +0 -0
  46. /package/dist/{packages/assets/src/VideoRenderOptions.d.ts → VideoRenderOptions.d.ts} +0 -0
  47. /package/dist/{packages/assets/src/VideoRenderOptions.js → VideoRenderOptions.js} +0 -0
  48. /package/dist/{packages/assets/src/idempotentTask.d.ts → idempotentTask.d.ts} +0 -0
  49. /package/dist/{packages/assets/src/idempotentTask.js → idempotentTask.js} +0 -0
  50. /package/dist/{packages/assets/src/mp4FileWritable.js → mp4FileWritable.js} +0 -0
  51. /package/dist/{packages/assets/src/tasks → tasks}/cacheImage.js +0 -0
@@ -1,105 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const idempotentTask = require("../idempotentTask.cjs");
4
- const MP4File = require("../../../../lib/av/MP4File.cjs");
5
- const debug = require("debug");
6
- const mp4FileWritable = require("../mp4FileWritable.cjs");
7
- const path = require("node:path");
8
- const Probe = require("../Probe.cjs");
9
- const generateTrackFragmentIndexFromPath = async (absolutePath) => {
10
- const log = debug("ef:generateTrackFragment");
11
- const probe = await Probe.Probe.probePath(absolutePath);
12
- const readStream = probe.createConformingReadstream();
13
- const mp4File = new MP4File.MP4File();
14
- log(`Generating track fragment index for ${absolutePath}`);
15
- readStream.pipe(mp4FileWritable.mp4FileWritable(mp4File));
16
- await new Promise((resolve, reject) => {
17
- readStream.on("end", resolve);
18
- readStream.on("error", reject);
19
- });
20
- const trackFragmentIndexes = {};
21
- const trackByteOffsets = {};
22
- for await (const fragment of mp4File.fragmentIterator()) {
23
- const track = mp4File.getInfo().tracks.find((track2) => track2.id === fragment.track);
24
- if (!track) {
25
- throw new Error("Track not found");
26
- }
27
- if (fragment.segment === "init") {
28
- trackByteOffsets[fragment.track] = fragment.data.byteLength;
29
- if (track?.type === "video") {
30
- const videoTrack = mp4File.getInfo().videoTracks.find((track2) => track2.id === fragment.track);
31
- if (!videoTrack) {
32
- throw new Error("Video track not found");
33
- }
34
- trackFragmentIndexes[fragment.track] = {
35
- track: fragment.track,
36
- type: "video",
37
- width: videoTrack.video.width,
38
- height: videoTrack.video.height,
39
- timescale: track.timescale,
40
- sample_count: videoTrack.nb_samples,
41
- duration: 0,
42
- initSegment: {
43
- offset: 0,
44
- size: fragment.data.byteLength
45
- },
46
- segments: []
47
- };
48
- }
49
- if (track?.type === "audio") {
50
- const audioTrack = mp4File.getInfo().audioTracks.find((track2) => track2.id === fragment.track);
51
- if (!audioTrack) {
52
- throw new Error("Audio track not found");
53
- }
54
- trackFragmentIndexes[fragment.track] = {
55
- track: fragment.track,
56
- type: "audio",
57
- channel_count: audioTrack.audio.channel_count,
58
- sample_rate: audioTrack.audio.sample_rate,
59
- sample_size: audioTrack.audio.sample_size,
60
- sample_count: audioTrack.nb_samples,
61
- timescale: track.timescale,
62
- duration: 0,
63
- initSegment: {
64
- offset: 0,
65
- size: fragment.data.byteLength
66
- },
67
- segments: []
68
- };
69
- }
70
- } else {
71
- const fragmentIndex = trackFragmentIndexes[fragment.track];
72
- if (trackByteOffsets[fragment.track] === void 0) {
73
- throw new Error("Fragment index not found");
74
- }
75
- if (!fragmentIndex) {
76
- throw new Error("Fragment index not found");
77
- }
78
- fragmentIndex.duration += fragment.duration;
79
- fragmentIndex.segments.push({
80
- cts: fragment.cts,
81
- dts: fragment.dts,
82
- duration: fragment.duration,
83
- // biome-ignore lint/style/noNonNullAssertion: This was checked above
84
- offset: trackByteOffsets[fragment.track],
85
- size: fragment.data.byteLength
86
- });
87
- trackByteOffsets[fragment.track] += fragment.data.byteLength;
88
- }
89
- }
90
- return JSON.stringify(trackFragmentIndexes, null, 2);
91
- };
92
- const generateTrackFragmentIndexTask = idempotentTask.idempotentTask({
93
- label: "trackFragmentIndex",
94
- filename: (absolutePath) => `${path.basename(absolutePath)}.tracks.json`,
95
- runner: generateTrackFragmentIndexFromPath
96
- });
97
- const generateTrackFragmentIndex = async (cacheRoot, absolutePath) => {
98
- try {
99
- return await generateTrackFragmentIndexTask(cacheRoot, absolutePath);
100
- } catch (error) {
101
- console.trace("Error generating track fragment index", error);
102
- throw error;
103
- }
104
- };
105
- exports.generateTrackFragmentIndex = generateTrackFragmentIndex;
@@ -1 +0,0 @@
1
- export declare const generateTrackFragmentIndex: (cacheRoot: string, absolutePath: string) => Promise<import('../idempotentTask').TaskResult>;
File without changes