hls-streamer 2.1.0 → 2.2.0

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,3 +1,4 @@
1
+ import fs from 'node:fs';
1
2
  export class FileLib {
2
3
  static getFileSizeInBytes(buffer) {
3
4
  if (Buffer.isBuffer(buffer)) {
@@ -7,122 +8,251 @@ export class FileLib {
7
8
  throw new Error("Input is not a buffer");
8
9
  }
9
10
  }
10
- static getMP3DurationFromBuffer(mp3Buffer) {
11
- return new Promise((resolve, reject) => {
12
- try {
13
- const duration = this.parseMP3Duration(mp3Buffer);
14
- resolve(duration);
15
- }
16
- catch (error) {
17
- reject(error);
18
- }
19
- });
11
+ static async getMP3DurationFromBuffer(mp3Buffer) {
12
+ const { duration } = this.analyzeMP3Buffer(mp3Buffer);
13
+ return duration;
20
14
  }
21
- static parseMP3Duration(buffer) {
15
+ static analyzeMP3Buffer(buffer, opts = {}) {
16
+ const warnings = [];
17
+ const size = opts.fileSize ?? buffer.length;
22
18
  if (buffer.length === 0) {
23
- return 0;
24
- }
25
- const bitrates = [
26
- [0, 0, 0, 0, 0],
27
- [32, 32, 32, 32, 8],
28
- [64, 48, 40, 48, 16],
29
- [96, 56, 48, 56, 24],
30
- [128, 64, 56, 64, 32],
31
- [160, 80, 64, 80, 40],
32
- [192, 96, 80, 96, 48],
33
- [224, 112, 96, 112, 56],
34
- [256, 128, 112, 128, 64],
35
- [288, 160, 128, 144, 80],
36
- [320, 192, 160, 160, 96],
37
- [352, 224, 192, 176, 112],
38
- [384, 256, 224, 192, 128],
39
- [416, 320, 256, 224, 144],
40
- [448, 384, 320, 256, 160]
41
- ];
42
- const sampleRates = [
43
- [44100, 22050, 11025],
44
- [48000, 24000, 12000],
45
- [32000, 16000, 8000]
46
- ];
47
- let offset = 0;
48
- let totalFrames = 0;
49
- let sampleRate = 0;
50
- let samplesPerFrame = 0;
51
- if (buffer.length > 10 && buffer.toString('ascii', 0, 3) === 'ID3') {
52
- const tagSize = ((buffer[6] & 0x7f) << 21) |
53
- ((buffer[7] & 0x7f) << 14) |
54
- ((buffer[8] & 0x7f) << 7) |
55
- (buffer[9] & 0x7f);
56
- offset = 10 + tagSize;
57
- }
58
- while (offset < buffer.length - 3) {
59
- if ((buffer[offset] === 0xFF) && ((buffer[offset + 1] & 0xE0) === 0xE0)) {
60
- if (offset + 3 >= buffer.length)
61
- break;
62
- const header = (buffer[offset] << 24) |
63
- (buffer[offset + 1] << 16) |
64
- (buffer[offset + 2] << 8) |
65
- buffer[offset + 3];
66
- const version = (header >> 19) & 0x3;
67
- const layer = (header >> 17) & 0x3;
68
- const bitrateIndex = (header >> 12) & 0xF;
69
- const sampleRateIndex = (header >> 10) & 0x3;
70
- const padding = (header >> 9) & 0x1;
71
- if (version === 1 || layer === 0 || bitrateIndex === 0 || bitrateIndex === 15 || sampleRateIndex === 3) {
72
- offset++;
73
- continue;
74
- }
75
- const versionIndex = version === 3 ? 0 : (version === 2 ? 1 : 2);
76
- const layerIndex = layer === 3 ? 0 : (layer === 2 ? 1 : 2);
77
- const bitrate = bitrates[bitrateIndex]?.[versionIndex === 0 ? layerIndex : (layerIndex === 0 ? 3 : 4)];
78
- const foundSampleRate = sampleRates[sampleRateIndex]?.[versionIndex];
79
- if (!bitrate || !foundSampleRate) {
80
- offset++;
81
- continue;
82
- }
83
- if (totalFrames === 0) {
84
- sampleRate = foundSampleRate;
85
- if (layer === 3) {
86
- samplesPerFrame = 384;
87
- }
88
- else if (layer === 2) {
89
- samplesPerFrame = 1152;
90
- }
91
- else {
92
- samplesPerFrame = version === 3 ? 1152 : 576;
93
- }
94
- }
95
- let frameLength;
96
- if (layer === 3) {
97
- frameLength = Math.floor((12 * bitrate * 1000 / foundSampleRate + padding) * 4);
98
- }
99
- else {
100
- frameLength = Math.floor(144 * bitrate * 1000 / foundSampleRate + padding);
101
- }
102
- if (frameLength <= 0) {
103
- offset++;
104
- continue;
105
- }
106
- totalFrames++;
107
- if (offset + frameLength > buffer.length) {
108
- const remainingBytes = buffer.length - offset;
109
- const avgFrameLength = offset > 0 ? offset / totalFrames : frameLength;
110
- const estimatedRemainingFrames = Math.floor(remainingBytes / avgFrameLength);
111
- totalFrames += estimatedRemainingFrames;
112
- break;
113
- }
114
- offset += frameLength;
19
+ return {
20
+ size,
21
+ duration: 0,
22
+ audioDataSize: 0,
23
+ frames: []
24
+ };
25
+ }
26
+ const offsets = this.getId3Offsets(buffer);
27
+ const frames = [];
28
+ const payloadSize = Math.max(0, offsets.audioEnd - offsets.startOffset);
29
+ let offset = offsets.startOffset;
30
+ let frameIndex = 0;
31
+ let sampleRate;
32
+ let totalDuration = 0;
33
+ let totalAudioBytes = 0;
34
+ while (offset + 4 <= offsets.audioEnd) {
35
+ if (!this.isFrameSync(buffer, offset)) {
36
+ offset++;
37
+ continue;
38
+ }
39
+ const header = buffer.readUInt32BE(offset);
40
+ const parsed = this.parseFrameHeader(header);
41
+ if (!parsed) {
42
+ offset++;
43
+ continue;
115
44
  }
116
- else {
45
+ const frameLength = this.calculateFrameLength(parsed);
46
+ if (frameLength <= 0) {
47
+ warnings.push(`Encountered zero-length frame at offset ${offset}`);
117
48
  offset++;
49
+ continue;
50
+ }
51
+ if (offset + frameLength > buffer.length) {
52
+ warnings.push(`Truncated frame at offset ${offset}`);
53
+ break;
118
54
  }
55
+ sampleRate = sampleRate ?? parsed.sampleRate;
56
+ const frameDuration = parsed.samplesPerFrame / parsed.sampleRate;
57
+ frames.push({
58
+ index: frameIndex,
59
+ offset,
60
+ length: frameLength,
61
+ duration: frameDuration,
62
+ samples: parsed.samplesPerFrame,
63
+ sampleRate: parsed.sampleRate,
64
+ bitrate: parsed.bitrate,
65
+ padding: parsed.padding
66
+ });
67
+ frameIndex++;
68
+ totalDuration += frameDuration;
69
+ totalAudioBytes += frameLength;
70
+ offset += frameLength;
119
71
  }
120
- if (totalFrames === 0 || !sampleRate || !samplesPerFrame) {
72
+ if (frames.length === 0) {
121
73
  const estimatedDuration = buffer.length / 16000;
122
- return Math.max(0.001, estimatedDuration);
74
+ warnings.push('Falling back to heuristic duration due to missing MP3 frames');
75
+ const metadata = {
76
+ size,
77
+ duration: Math.max(0.001, estimatedDuration),
78
+ audioDataSize: payloadSize,
79
+ frames: []
80
+ };
81
+ if (warnings.length) {
82
+ metadata.warnings = warnings;
83
+ }
84
+ return metadata;
85
+ }
86
+ const duration = totalDuration;
87
+ const averageBitrate = duration > 0 ? (totalAudioBytes * 8) / duration / 1000 : undefined;
88
+ const metadata = {
89
+ size,
90
+ duration,
91
+ audioDataSize: totalAudioBytes || payloadSize,
92
+ frames
93
+ };
94
+ if (sampleRate !== undefined) {
95
+ metadata.sampleRate = sampleRate;
96
+ }
97
+ if (averageBitrate !== undefined) {
98
+ metadata.averageBitrate = averageBitrate;
123
99
  }
124
- const duration = (totalFrames * samplesPerFrame) / sampleRate;
125
- return Math.max(0.001, duration);
100
+ if (offsets.id3v2Size > 0) {
101
+ metadata.id3v2Size = offsets.id3v2Size;
102
+ }
103
+ if (offsets.id3v1Size > 0) {
104
+ metadata.id3v1Size = offsets.id3v1Size;
105
+ }
106
+ if (warnings.length) {
107
+ metadata.warnings = warnings;
108
+ }
109
+ return metadata;
110
+ }
111
+ static async analyzeMP3File(filePath) {
112
+ const [buffer, stat] = await Promise.all([
113
+ fs.promises.readFile(filePath),
114
+ fs.promises.stat(filePath)
115
+ ]);
116
+ return this.analyzeMP3Buffer(buffer, { fileSize: stat.size });
117
+ }
118
+ static calculateFrameLength(frame) {
119
+ if (frame.layer === 1) {
120
+ return Math.floor(((12 * frame.bitrate * 1000) / frame.sampleRate + frame.padding) * 4);
121
+ }
122
+ const multiplier = frame.layer === 3 && frame.version !== 1 ? 72 : 144;
123
+ return Math.floor((multiplier * frame.bitrate * 1000) / frame.sampleRate + frame.padding);
124
+ }
125
+ static getId3Offsets(buffer) {
126
+ let startOffset = 0;
127
+ let id3v2Size = 0;
128
+ if (buffer.length >= 10 && buffer.toString('ascii', 0, 3) === 'ID3') {
129
+ const sizeBytes = buffer.subarray(6, 10);
130
+ id3v2Size = this.syncSafeInteger(sizeBytes);
131
+ startOffset = Math.min(buffer.length, 10 + id3v2Size);
132
+ }
133
+ let id3v1Size = 0;
134
+ let audioEnd = buffer.length;
135
+ if (buffer.length >= 128) {
136
+ const tagOffset = buffer.length - 128;
137
+ if (buffer.toString('ascii', tagOffset, tagOffset + 3) === 'TAG') {
138
+ id3v1Size = 128;
139
+ audioEnd = tagOffset;
140
+ }
141
+ }
142
+ return {
143
+ startOffset,
144
+ id3v2Size,
145
+ audioEnd,
146
+ id3v1Size
147
+ };
148
+ }
149
+ static syncSafeInteger(bytes) {
150
+ return ((bytes[0] & 0x7f) << 21) |
151
+ ((bytes[1] & 0x7f) << 14) |
152
+ ((bytes[2] & 0x7f) << 7) |
153
+ (bytes[3] & 0x7f);
154
+ }
155
+ static isFrameSync(buffer, offset) {
156
+ const byte1 = buffer[offset];
157
+ const byte2 = buffer[offset + 1];
158
+ if (byte1 === undefined || byte2 === undefined) {
159
+ return false;
160
+ }
161
+ return byte1 === 0xff && (byte2 & 0xe0) === 0xe0;
162
+ }
163
+ static parseFrameHeader(header) {
164
+ const versionBits = (header >> 19) & 0x3;
165
+ const layerBits = (header >> 17) & 0x3;
166
+ const bitrateIndex = (header >> 12) & 0xf;
167
+ const sampleRateIndex = (header >> 10) & 0x3;
168
+ const padding = ((header >> 9) & 0x1);
169
+ const version = this.decodeVersion(versionBits);
170
+ const layer = this.decodeLayer(layerBits);
171
+ if (!version || !layer) {
172
+ return null;
173
+ }
174
+ if (bitrateIndex === 0 || bitrateIndex === 15 || sampleRateIndex === 3) {
175
+ return null;
176
+ }
177
+ const bitrate = this.BITRATE_INDEX[version][layer][bitrateIndex];
178
+ const sampleRate = this.SAMPLE_RATE_INDEX[version][sampleRateIndex];
179
+ if (!bitrate || !sampleRate) {
180
+ return null;
181
+ }
182
+ const samplesPerFrame = this.getSamplesPerFrame(version, layer);
183
+ return {
184
+ version,
185
+ layer,
186
+ bitrate,
187
+ sampleRate,
188
+ padding,
189
+ samplesPerFrame
190
+ };
191
+ }
192
+ static decodeVersion(bits) {
193
+ switch (bits) {
194
+ case 0b11:
195
+ return 1;
196
+ case 0b10:
197
+ return 2;
198
+ case 0b00:
199
+ return 25;
200
+ default:
201
+ return null;
202
+ }
203
+ }
204
+ static decodeLayer(bits) {
205
+ switch (bits) {
206
+ case 0b11:
207
+ return 1;
208
+ case 0b10:
209
+ return 2;
210
+ case 0b01:
211
+ return 3;
212
+ default:
213
+ return null;
214
+ }
215
+ }
216
+ static getSamplesPerFrame(version, layer) {
217
+ if (layer === 1) {
218
+ return 384;
219
+ }
220
+ if (layer === 2) {
221
+ return 1152;
222
+ }
223
+ return version === 1 ? 1152 : 576;
126
224
  }
127
225
  }
226
+ Object.defineProperty(FileLib, "BITRATE_INDEX", {
227
+ enumerable: true,
228
+ configurable: true,
229
+ writable: true,
230
+ value: {
231
+ 1: {
232
+ 1: [0, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448],
233
+ 2: [0, 32, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 384],
234
+ 3: [0, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320]
235
+ },
236
+ 2: {
237
+ 1: [0, 32, 48, 56, 64, 80, 96, 112, 128, 144, 160, 176, 192, 224, 256],
238
+ 2: [0, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160],
239
+ 3: [0, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160]
240
+ },
241
+ 25: {
242
+ 1: [0, 32, 48, 56, 64, 80, 96, 112, 128, 144, 160, 176, 192, 224, 256],
243
+ 2: [0, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160],
244
+ 3: [0, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160]
245
+ }
246
+ }
247
+ });
248
+ Object.defineProperty(FileLib, "SAMPLE_RATE_INDEX", {
249
+ enumerable: true,
250
+ configurable: true,
251
+ writable: true,
252
+ value: {
253
+ 1: [44100, 48000, 32000],
254
+ 2: [22050, 24000, 16000],
255
+ 25: [11025, 12000, 8000]
256
+ }
257
+ });
128
258
  //# sourceMappingURL=FileLib.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FileLib.js","sourceRoot":"","sources":["../../src/Libs/FileLib.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FileLib.js","sourceRoot":"","sources":["../../src/Libs/FileLib.ts"],"names":[],"mappings":"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"}
@@ -10,8 +10,25 @@ export interface SegmentInfo {
10
10
  end: number;
11
11
  duration: number;
12
12
  }
13
+ export interface Mp3FrameInfo {
14
+ index: number;
15
+ offset: number;
16
+ length: number;
17
+ duration: number;
18
+ samples: number;
19
+ sampleRate: number;
20
+ bitrate: number;
21
+ padding: 0 | 1;
22
+ }
13
23
  export interface Mp3FileInfo {
14
24
  size: number;
15
25
  duration: number;
26
+ audioDataSize: number;
27
+ sampleRate?: number;
28
+ averageBitrate?: number;
29
+ id3v2Size?: number;
30
+ id3v1Size?: number;
31
+ frames: Mp3FrameInfo[];
32
+ warnings?: string[];
16
33
  }
17
34
  //# sourceMappingURL=HlsStreamer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"HlsStreamer.d.ts","sourceRoot":"","sources":["../../../src/Interfaces/HlsStreamer.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,kBAAkB;IAEjC,QAAQ,EAAE,MAAM,CAAC;IAEjB,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAKD,MAAM,WAAW,WAAW;IAE1B,KAAK,EAAE,MAAM,CAAC;IAEd,GAAG,EAAE,MAAM,CAAC;IAEZ,QAAQ,EAAE,MAAM,CAAC;CAClB;AAKD,MAAM,WAAW,WAAW;IAE1B,IAAI,EAAE,MAAM,CAAC;IAEb,QAAQ,EAAE,MAAM,CAAC;CAClB"}
1
+ {"version":3,"file":"HlsStreamer.d.ts","sourceRoot":"","sources":["../../../src/Interfaces/HlsStreamer.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,kBAAkB;IAEjC,QAAQ,EAAE,MAAM,CAAC;IAEjB,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAKD,MAAM,WAAW,WAAW;IAE1B,KAAK,EAAE,MAAM,CAAC;IAEd,GAAG,EAAE,MAAM,CAAC;IAEZ,QAAQ,EAAE,MAAM,CAAC;CAClB;AAQD,MAAM,WAAW,YAAY;IAI3B,KAAK,EAAE,MAAM,CAAC;IAEd,MAAM,EAAE,MAAM,CAAC;IAEf,MAAM,EAAE,MAAM,CAAC;IAEf,QAAQ,EAAE,MAAM,CAAC;IAEjB,OAAO,EAAE,MAAM,CAAC;IAEhB,UAAU,EAAE,MAAM,CAAC;IAEnB,OAAO,EAAE,MAAM,CAAC;IAEhB,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC;CAChB;AAKD,MAAM,WAAW,WAAW;IAE1B,IAAI,EAAE,MAAM,CAAC;IAEb,QAAQ,EAAE,MAAM,CAAC;IAEjB,aAAa,EAAE,MAAM,CAAC;IAEtB,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,MAAM,EAAE,YAAY,EAAE,CAAC;IAEvB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB"}
@@ -1,6 +1,20 @@
1
+ import { Mp3FileInfo } from '../Interfaces/HlsStreamer';
1
2
  export declare class FileLib {
3
+ private static readonly BITRATE_INDEX;
4
+ private static readonly SAMPLE_RATE_INDEX;
2
5
  static getFileSizeInBytes(buffer: Buffer): number;
3
6
  static getMP3DurationFromBuffer(mp3Buffer: Buffer): Promise<number>;
4
- private static parseMP3Duration;
7
+ static analyzeMP3Buffer(buffer: Buffer, opts?: {
8
+ fileSize?: number;
9
+ }): Mp3FileInfo;
10
+ static analyzeMP3File(filePath: string): Promise<Mp3FileInfo>;
11
+ private static calculateFrameLength;
12
+ private static getId3Offsets;
13
+ private static syncSafeInteger;
14
+ private static isFrameSync;
15
+ private static parseFrameHeader;
16
+ private static decodeVersion;
17
+ private static decodeLayer;
18
+ private static getSamplesPerFrame;
5
19
  }
6
20
  //# sourceMappingURL=FileLib.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FileLib.d.ts","sourceRoot":"","sources":["../../../src/Libs/FileLib.ts"],"names":[],"mappings":"AAGA,qBAAa,OAAO;IAIlB,MAAM,CAAC,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAWjD,MAAM,CAAC,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAcnE,OAAO,CAAC,MAAM,CAAC,gBAAgB;CAqIhC"}
1
+ {"version":3,"file":"FileLib.d.ts","sourceRoot":"","sources":["../../../src/Libs/FileLib.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAgB,MAAM,2BAA2B,CAAC;AAqBtE,qBAAa,OAAO;IAClB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAgBnC;IAEF,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAIvC;IAKF,MAAM,CAAC,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;WAWpC,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAQzE,MAAM,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,GAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,WAAW;WA6HzE,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IASnE,OAAO,CAAC,MAAM,CAAC,oBAAoB;IASnC,OAAO,CAAC,MAAM,CAAC,aAAa;IA8B5B,OAAO,CAAC,MAAM,CAAC,eAAe;IAO9B,OAAO,CAAC,MAAM,CAAC,WAAW;IAW1B,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAqC/B,OAAO,CAAC,MAAM,CAAC,aAAa;IAa5B,OAAO,CAAC,MAAM,CAAC,WAAW;IAa1B,OAAO,CAAC,MAAM,CAAC,kBAAkB;CAWlC"}