@editframe/assets 0.6.0-beta.1 → 0.6.0-beta.11
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/lib/av/MP4File.cjs +1 -1
- package/dist/lib/av/MP4File.js +1 -1
- package/dist/packages/assets/src/Probe.cjs +3 -1
- package/dist/packages/assets/src/Probe.d.ts +21 -2
- package/dist/packages/assets/src/Probe.js +3 -1
- package/dist/packages/assets/src/tasks/generateTrackFragmentIndex.cjs +41 -11
- package/dist/packages/assets/src/tasks/generateTrackFragmentIndex.js +41 -11
- package/package.json +4 -4
package/dist/lib/av/MP4File.cjs
CHANGED
|
@@ -152,7 +152,7 @@ class MP4File extends MP4Box__namespace.ISOFile {
|
|
|
152
152
|
complete: trackInfoForFrag.complete,
|
|
153
153
|
cts: startSample.cts,
|
|
154
154
|
dts: startSample.dts,
|
|
155
|
-
duration: endSample.
|
|
155
|
+
duration: endSample.cts - startSample.cts + endSample.duration
|
|
156
156
|
};
|
|
157
157
|
trackInfoForFrag.index += 1;
|
|
158
158
|
fragTrak.segmentStream = null;
|
package/dist/lib/av/MP4File.js
CHANGED
|
@@ -133,7 +133,7 @@ class MP4File extends MP4Box.ISOFile {
|
|
|
133
133
|
complete: trackInfoForFrag.complete,
|
|
134
134
|
cts: startSample.cts,
|
|
135
135
|
dts: startSample.dts,
|
|
136
|
-
duration: endSample.
|
|
136
|
+
duration: endSample.cts - startSample.cts + endSample.duration
|
|
137
137
|
};
|
|
138
138
|
trackInfoForFrag.index += 1;
|
|
139
139
|
fragTrak.segmentStream = null;
|
|
@@ -114,7 +114,9 @@ class Probe {
|
|
|
114
114
|
return this.data.format;
|
|
115
115
|
}
|
|
116
116
|
get mustReencodeAudio() {
|
|
117
|
-
return this.audioStreams.some(
|
|
117
|
+
return this.audioStreams.some(
|
|
118
|
+
(stream) => stream.codec_name !== "aac" || stream.sample_rate !== "48000"
|
|
119
|
+
);
|
|
118
120
|
}
|
|
119
121
|
get mustReencodeVideo() {
|
|
120
122
|
return false;
|
|
@@ -539,17 +539,36 @@ export interface TrackSegment {
|
|
|
539
539
|
offset: number;
|
|
540
540
|
size: number;
|
|
541
541
|
}
|
|
542
|
-
|
|
542
|
+
interface AudioTrackFragmentIndex {
|
|
543
543
|
track: number;
|
|
544
|
-
type: "audio"
|
|
544
|
+
type: "audio";
|
|
545
545
|
timescale: number;
|
|
546
546
|
duration: number;
|
|
547
|
+
channel_count: number;
|
|
548
|
+
sample_rate: number;
|
|
549
|
+
sample_size: number;
|
|
550
|
+
sample_count: number;
|
|
547
551
|
initSegment: {
|
|
548
552
|
offset: 0;
|
|
549
553
|
size: number;
|
|
550
554
|
};
|
|
551
555
|
segments: Array<TrackSegment>;
|
|
552
556
|
}
|
|
557
|
+
interface VideoTrackFragmentIndex {
|
|
558
|
+
track: number;
|
|
559
|
+
type: "video";
|
|
560
|
+
timescale: number;
|
|
561
|
+
duration: number;
|
|
562
|
+
width: number;
|
|
563
|
+
height: number;
|
|
564
|
+
sample_count: number;
|
|
565
|
+
initSegment: {
|
|
566
|
+
offset: 0;
|
|
567
|
+
size: number;
|
|
568
|
+
};
|
|
569
|
+
segments: Array<TrackSegment>;
|
|
570
|
+
}
|
|
571
|
+
export type TrackFragmentIndex = AudioTrackFragmentIndex | VideoTrackFragmentIndex;
|
|
553
572
|
export declare class Probe {
|
|
554
573
|
private absolutePath;
|
|
555
574
|
data: z.infer<typeof ProbeSchema>;
|
|
@@ -95,7 +95,9 @@ class Probe {
|
|
|
95
95
|
return this.data.format;
|
|
96
96
|
}
|
|
97
97
|
get mustReencodeAudio() {
|
|
98
|
-
return this.audioStreams.some(
|
|
98
|
+
return this.audioStreams.some(
|
|
99
|
+
(stream) => stream.codec_name !== "aac" || stream.sample_rate !== "48000"
|
|
100
|
+
);
|
|
99
101
|
}
|
|
100
102
|
get mustReencodeVideo() {
|
|
101
103
|
return false;
|
|
@@ -26,17 +26,47 @@ const generateTrackFragmentIndexFromPath = async (absolutePath) => {
|
|
|
26
26
|
}
|
|
27
27
|
if (fragment.segment === "init") {
|
|
28
28
|
trackByteOffsets[fragment.track] = fragment.data.byteLength;
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
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
|
+
}
|
|
40
70
|
} else {
|
|
41
71
|
const fragmentIndex = trackFragmentIndexes[fragment.track];
|
|
42
72
|
if (trackByteOffsets[fragment.track] === void 0) {
|
|
@@ -24,17 +24,47 @@ const generateTrackFragmentIndexFromPath = async (absolutePath) => {
|
|
|
24
24
|
}
|
|
25
25
|
if (fragment.segment === "init") {
|
|
26
26
|
trackByteOffsets[fragment.track] = fragment.data.byteLength;
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
27
|
+
if (track?.type === "video") {
|
|
28
|
+
const videoTrack = mp4File.getInfo().videoTracks.find((track2) => track2.id === fragment.track);
|
|
29
|
+
if (!videoTrack) {
|
|
30
|
+
throw new Error("Video track not found");
|
|
31
|
+
}
|
|
32
|
+
trackFragmentIndexes[fragment.track] = {
|
|
33
|
+
track: fragment.track,
|
|
34
|
+
type: "video",
|
|
35
|
+
width: videoTrack.video.width,
|
|
36
|
+
height: videoTrack.video.height,
|
|
37
|
+
timescale: track.timescale,
|
|
38
|
+
sample_count: videoTrack.nb_samples,
|
|
39
|
+
duration: 0,
|
|
40
|
+
initSegment: {
|
|
41
|
+
offset: 0,
|
|
42
|
+
size: fragment.data.byteLength
|
|
43
|
+
},
|
|
44
|
+
segments: []
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
if (track?.type === "audio") {
|
|
48
|
+
const audioTrack = mp4File.getInfo().audioTracks.find((track2) => track2.id === fragment.track);
|
|
49
|
+
if (!audioTrack) {
|
|
50
|
+
throw new Error("Audio track not found");
|
|
51
|
+
}
|
|
52
|
+
trackFragmentIndexes[fragment.track] = {
|
|
53
|
+
track: fragment.track,
|
|
54
|
+
type: "audio",
|
|
55
|
+
channel_count: audioTrack.audio.channel_count,
|
|
56
|
+
sample_rate: audioTrack.audio.sample_rate,
|
|
57
|
+
sample_size: audioTrack.audio.sample_size,
|
|
58
|
+
sample_count: audioTrack.nb_samples,
|
|
59
|
+
timescale: track.timescale,
|
|
60
|
+
duration: 0,
|
|
61
|
+
initSegment: {
|
|
62
|
+
offset: 0,
|
|
63
|
+
size: fragment.data.byteLength
|
|
64
|
+
},
|
|
65
|
+
segments: []
|
|
66
|
+
};
|
|
67
|
+
}
|
|
38
68
|
} else {
|
|
39
69
|
const fragmentIndex = trackFragmentIndexes[fragment.track];
|
|
40
70
|
if (trackByteOffsets[fragment.track] === void 0) {
|
package/package.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@editframe/assets",
|
|
3
|
-
"version": "0.6.0-beta.
|
|
3
|
+
"version": "0.6.0-beta.11",
|
|
4
4
|
"description": "",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": {
|
|
7
|
-
"
|
|
8
|
-
"require": "./dist/packages/assets/src/index.
|
|
7
|
+
"import": "./dist/packages/assets/src/index.js",
|
|
8
|
+
"require": "./dist/packages/assets/src/index.cjs"
|
|
9
9
|
}
|
|
10
10
|
},
|
|
11
11
|
"type": "module",
|
|
@@ -28,4 +28,4 @@
|
|
|
28
28
|
"vite-plugin-dts": "^3.9.1",
|
|
29
29
|
"vite-tsconfig-paths": "^4.3.2"
|
|
30
30
|
}
|
|
31
|
-
}
|
|
31
|
+
}
|