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.
package/dist/cjs/index.js CHANGED
@@ -60,17 +60,11 @@ class HlsStreamer {
60
60
  writable: true,
61
61
  value: void 0
62
62
  });
63
- Object.defineProperty(this, "segmentCache", {
63
+ Object.defineProperty(this, "segments", {
64
64
  enumerable: true,
65
65
  configurable: true,
66
66
  writable: true,
67
- value: new Map()
68
- });
69
- Object.defineProperty(this, "frameAlignedSegments", {
70
- enumerable: true,
71
- configurable: true,
72
- writable: true,
73
- value: new Map()
67
+ value: void 0
74
68
  });
75
69
  this.validateOptions(options);
76
70
  this.validateFile(options.filePath);
@@ -107,18 +101,12 @@ class HlsStreamer {
107
101
  }
108
102
  async getFileInfo() {
109
103
  if (!this.fileInfo) {
110
- const stat = await node_fs_1.default.promises.stat(this.filePath);
111
- const size = stat.size;
112
- if (size <= 0) {
104
+ const analysis = await FileLib_1.FileLib.analyzeMP3File(this.filePath);
105
+ if (analysis.size <= 0) {
113
106
  throw new HlsStreamerErrors_1.InvalidFileError('File is empty');
114
107
  }
115
- if (this.segmentSize > size) {
116
- throw new HlsStreamerErrors_1.InvalidFileError('Segment size is larger than file size');
117
- }
118
- this.fileInfo = {
119
- size,
120
- duration: 0
121
- };
108
+ this.fileInfo = analysis;
109
+ this.segments = undefined;
122
110
  }
123
111
  return this.fileInfo;
124
112
  }
@@ -130,26 +118,14 @@ class HlsStreamer {
130
118
  if (endByte > fileInfo.size) {
131
119
  throw new HlsStreamerErrors_1.InvalidRangeError(startByte, endByte);
132
120
  }
133
- const searchBufferSize = Math.min(8192, fileInfo.size);
134
- const searchStartByte = Math.max(0, startByte - 1024);
135
- const searchEndByte = Math.min(fileInfo.size, startByte + searchBufferSize);
121
+ const length = endByte - startByte;
136
122
  const fd = node_fs_1.default.openSync(this.filePath, "r");
137
123
  try {
138
- const searchBuffer = Buffer.alloc(searchEndByte - searchStartByte);
139
- node_fs_1.default.readSync(fd, searchBuffer, 0, searchBuffer.length, searchStartByte);
140
- const targetOffsetInSearch = startByte - searchStartByte;
141
- const frameAlignedOffsetInSearch = this.findNextMp3Frame(searchBuffer, Math.max(0, targetOffsetInSearch));
142
- const actualStartByte = searchStartByte + frameAlignedOffsetInSearch;
143
- const actualEndByte = Math.min(endByte, fileInfo.size);
144
- const bufferLength = actualEndByte - actualStartByte;
145
- if (bufferLength <= 0) {
146
- const fallbackLength = endByte - startByte;
147
- const fallbackBuffer = Buffer.alloc(fallbackLength);
148
- const bytesRead = node_fs_1.default.readSync(fd, fallbackBuffer, 0, fallbackLength, startByte);
149
- return fallbackBuffer.subarray(0, bytesRead);
124
+ if (length === 0) {
125
+ return Buffer.alloc(0);
150
126
  }
151
- const buffer = Buffer.alloc(bufferLength);
152
- const bytesRead = node_fs_1.default.readSync(fd, buffer, 0, bufferLength, actualStartByte);
127
+ const buffer = Buffer.alloc(length);
128
+ const bytesRead = node_fs_1.default.readSync(fd, buffer, 0, length, startByte);
153
129
  return buffer.subarray(0, bytesRead);
154
130
  }
155
131
  finally {
@@ -157,32 +133,131 @@ class HlsStreamer {
157
133
  }
158
134
  }
159
135
  async createM3U8() {
160
- const fileInfo = await this.getFileInfo();
161
- const segmentCount = this.calculateSegmentCount(fileInfo.size);
136
+ const [fileInfo, segments] = await Promise.all([
137
+ this.getFileInfo(),
138
+ this.getSegments()
139
+ ]);
140
+ if (!segments.length) {
141
+ throw new HlsStreamerErrors_1.InvalidFileError('Unable to generate segments for MP3 file');
142
+ }
143
+ const maxSegmentDuration = segments.reduce((max, segment) => Math.max(max, segment.duration), 0);
144
+ const targetDurationSeconds = Math.max(1, Math.ceil(maxSegmentDuration || fileInfo.duration || 1));
162
145
  const m3u8 = [
163
146
  '#EXTM3U',
164
147
  '#EXT-X-VERSION:6',
165
148
  '#EXT-X-PLAYLIST-TYPE:VOD',
166
- '#EXT-X-TARGETDURATION:14',
149
+ `#EXT-X-TARGETDURATION:${targetDurationSeconds}`,
167
150
  '#EXT-X-MEDIA-SEQUENCE:0',
168
151
  ];
169
- for (let i = 0; i < segmentCount; i++) {
170
- const { start, end } = await this.getFrameAlignedSegment(i, fileInfo.size);
171
- const estimatedDuration = this.estimateSegmentDuration(end - start);
172
- const segmentUrl = this.buildSegmentUrl(start, end, i);
173
- m3u8.push(`#EXTINF:${estimatedDuration.toFixed(3)}`);
152
+ segments.forEach((segment, index) => {
153
+ const segmentUrl = this.buildSegmentUrl(segment.start, segment.end, index);
154
+ m3u8.push(`#EXTINF:${segment.duration.toFixed(3)}`);
174
155
  m3u8.push(segmentUrl);
175
- }
156
+ });
176
157
  m3u8.push('#EXT-X-ENDLIST');
177
158
  return m3u8.join('\n');
178
159
  }
179
- calculateSegmentCount(fileSize) {
180
- if (!this.enableFastStart) {
181
- return Math.ceil(fileSize / this.segmentSize);
160
+ async getSegments() {
161
+ if (this.segments) {
162
+ return this.segments;
163
+ }
164
+ const fileInfo = await this.getFileInfo();
165
+ if (!fileInfo.frames.length) {
166
+ this.segments = this.buildSegmentsWithoutFrameTable(fileInfo);
167
+ return this.segments;
168
+ }
169
+ const targetSizes = this.computeTargetSizes(fileInfo);
170
+ const segments = [];
171
+ const frames = fileInfo.frames;
172
+ let frameCursor = 0;
173
+ const consumeFrames = (targetBytes) => {
174
+ if (frameCursor >= frames.length) {
175
+ return;
176
+ }
177
+ const startFrameIndex = frameCursor;
178
+ let consumedBytes = 0;
179
+ let duration = 0;
180
+ while (frameCursor < frames.length) {
181
+ const frame = frames[frameCursor];
182
+ const nextBytes = consumedBytes + frame.length;
183
+ if (consumedBytes > 0 && nextBytes > targetBytes) {
184
+ break;
185
+ }
186
+ consumedBytes = nextBytes;
187
+ duration += frame.duration;
188
+ frameCursor++;
189
+ if (consumedBytes >= targetBytes) {
190
+ break;
191
+ }
192
+ }
193
+ if (frameCursor === startFrameIndex && frameCursor < frames.length) {
194
+ const frame = frames[frameCursor];
195
+ consumedBytes += frame.length;
196
+ duration += frame.duration;
197
+ frameCursor++;
198
+ }
199
+ if (frameCursor === startFrameIndex) {
200
+ return;
201
+ }
202
+ const start = frames[startFrameIndex].offset;
203
+ const lastFrame = frames[frameCursor - 1];
204
+ const end = lastFrame.offset + lastFrame.length;
205
+ segments.push({
206
+ start,
207
+ end,
208
+ duration
209
+ });
210
+ };
211
+ targetSizes.forEach(consumeFrames);
212
+ while (frameCursor < frames.length) {
213
+ consumeFrames(this.segmentSize);
214
+ }
215
+ if (!segments.length) {
216
+ this.segments = this.buildSegmentsWithoutFrameTable(fileInfo);
217
+ }
218
+ else {
219
+ this.segments = segments;
220
+ }
221
+ return this.segments;
222
+ }
223
+ computeTargetSizes(fileInfo) {
224
+ const totalBytes = fileInfo.audioDataSize || fileInfo.size;
225
+ return this.computeTargetSizesFromBytes(totalBytes);
226
+ }
227
+ computeTargetSizesFromBytes(totalBytes) {
228
+ if (totalBytes <= 0) {
229
+ return [];
182
230
  }
183
- const firstTwoSegmentsSize = this.calculatefirst2SegmentSize();
184
- const remainingSize = fileSize - firstTwoSegmentsSize;
185
- return Math.ceil(remainingSize / this.segmentSize) + 2;
231
+ const targets = [];
232
+ let remaining = totalBytes;
233
+ let index = 0;
234
+ while (remaining > 0) {
235
+ const targetSize = Math.min(this.calculateSegmentSize(index), remaining);
236
+ targets.push(targetSize);
237
+ remaining -= targetSize;
238
+ index++;
239
+ }
240
+ return targets.length ? targets : [totalBytes];
241
+ }
242
+ buildSegmentsWithoutFrameTable(fileInfo) {
243
+ const segments = [];
244
+ const totalBytes = Math.max(fileInfo.size, fileInfo.audioDataSize);
245
+ if (totalBytes <= 0) {
246
+ return segments;
247
+ }
248
+ const targets = this.computeTargetSizesFromBytes(totalBytes);
249
+ let start = 0;
250
+ targets.forEach((targetSize) => {
251
+ const end = Math.min(totalBytes, start + targetSize);
252
+ const duration = this.estimateSegmentDuration(end - start);
253
+ segments.push({ start, end, duration });
254
+ start = end;
255
+ });
256
+ if (start < totalBytes) {
257
+ const duration = this.estimateSegmentDuration(totalBytes - start);
258
+ segments.push({ start, end: totalBytes, duration });
259
+ }
260
+ return segments;
186
261
  }
187
262
  estimateSegmentDuration(segmentSize) {
188
263
  const estimatedBytesPerSecond = 16000;
@@ -205,94 +280,19 @@ class HlsStreamer {
205
280
  return this.segmentSize;
206
281
  }
207
282
  }
208
- calculateSegment(segmentIndex, fileSize) {
209
- let start = 0;
210
- if (this.enableFastStart && segmentIndex < 2) {
211
- start = segmentIndex * (this.segmentSize / 4);
212
- }
213
- else if (this.enableFastStart) {
214
- start = (3 * this.segmentSize) / 4 + (segmentIndex - 2) * this.segmentSize;
215
- }
216
- else {
217
- start = segmentIndex * this.segmentSize;
218
- }
219
- const segmentSize = this.calculateSegmentSize(segmentIndex);
220
- const end = Math.min(start + segmentSize, fileSize);
221
- return { start: Math.floor(start), end: Math.floor(end) };
222
- }
223
- async getFrameAlignedSegment(segmentIndex, fileSize) {
224
- if (this.frameAlignedSegments.has(segmentIndex)) {
225
- return this.frameAlignedSegments.get(segmentIndex);
226
- }
227
- const rawSegment = this.calculateSegment(segmentIndex, fileSize);
228
- if (segmentIndex === 0) {
229
- const fd = node_fs_1.default.openSync(this.filePath, "r");
230
- try {
231
- const headerBuffer = Buffer.alloc(Math.min(8192, fileSize));
232
- node_fs_1.default.readSync(fd, headerBuffer, 0, headerBuffer.length, 0);
233
- const frameStart = this.findNextMp3Frame(headerBuffer, 0);
234
- const alignedSegment = { start: frameStart, end: rawSegment.end };
235
- this.frameAlignedSegments.set(segmentIndex, alignedSegment);
236
- return alignedSegment;
237
- }
238
- finally {
239
- node_fs_1.default.closeSync(fd);
240
- }
241
- }
242
- this.frameAlignedSegments.set(segmentIndex, rawSegment);
243
- return rawSegment;
244
- }
245
- findNextMp3Frame(buffer, startPos) {
246
- let pos = startPos;
247
- if (pos === 0 && buffer.length > 10 && buffer.toString('ascii', 0, 3) === 'ID3') {
248
- const tagSize = ((buffer[6] & 0x7f) << 21) |
249
- ((buffer[7] & 0x7f) << 14) |
250
- ((buffer[8] & 0x7f) << 7) |
251
- (buffer[9] & 0x7f);
252
- pos = 10 + tagSize;
253
- }
254
- while (pos < buffer.length - 1) {
255
- if (buffer[pos] === 0xFF && (buffer[pos + 1] & 0xE0) === 0xE0) {
256
- if (pos + 3 < buffer.length) {
257
- const header = (buffer[pos] << 24) |
258
- (buffer[pos + 1] << 16) |
259
- (buffer[pos + 2] << 8) |
260
- buffer[pos + 3];
261
- const version = (header >> 19) & 0x3;
262
- const layer = (header >> 17) & 0x3;
263
- const bitrateIndex = (header >> 12) & 0xF;
264
- const sampleRateIndex = (header >> 10) & 0x3;
265
- if (version !== 1 && layer !== 0 && bitrateIndex !== 0 &&
266
- bitrateIndex !== 15 && sampleRateIndex !== 3) {
267
- return pos;
268
- }
269
- }
270
- }
271
- pos++;
272
- }
273
- return startPos;
274
- }
275
- calculatefirst2SegmentSize() {
276
- return (this.segmentSize / 4) * 3;
277
- }
278
283
  padNumber(value, padding) {
279
284
  return value.toString().padStart(padding, '0');
280
285
  }
281
286
  async getSegmentDuration(segmentIndex) {
282
- const cachedSegment = this.segmentCache.get(segmentIndex);
283
- if (cachedSegment) {
284
- return cachedSegment.duration;
287
+ if (!Number.isInteger(segmentIndex) || segmentIndex < 0) {
288
+ throw new HlsStreamerErrors_1.InvalidParameterError('segmentIndex', segmentIndex);
285
289
  }
286
- const fileInfo = await this.getFileInfo();
287
- const { start, end } = this.calculateSegment(segmentIndex, fileInfo.size);
288
- const segmentBuffer = await this.getFileBuffer(start, end);
289
- const duration = await FileLib_1.FileLib.getMP3DurationFromBuffer(segmentBuffer);
290
- this.segmentCache.set(segmentIndex, {
291
- start,
292
- end,
293
- duration
294
- });
295
- return duration;
290
+ const segments = await this.getSegments();
291
+ const segment = segments[segmentIndex];
292
+ if (!segment) {
293
+ throw new HlsStreamerErrors_1.InvalidParameterError('segmentIndex', segmentIndex);
294
+ }
295
+ return segment.duration;
296
296
  }
297
297
  }
298
298
  exports.HlsStreamer = HlsStreamer;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -6,22 +6,20 @@ export declare class HlsStreamer {
6
6
  private readonly baseUrl;
7
7
  private readonly enableFastStart;
8
8
  private fileInfo?;
9
- private segmentCache;
10
- private frameAlignedSegments;
9
+ private segments;
11
10
  constructor(options: HlsStreamerOptions);
12
11
  private validateOptions;
13
12
  private validateFile;
14
13
  private getFileInfo;
15
14
  getFileBuffer(startByte: number, endByte: number): Promise<Buffer>;
16
15
  createM3U8(): Promise<string>;
17
- private calculateSegmentCount;
16
+ private getSegments;
17
+ private computeTargetSizes;
18
+ private computeTargetSizesFromBytes;
19
+ private buildSegmentsWithoutFrameTable;
18
20
  private estimateSegmentDuration;
19
21
  private buildSegmentUrl;
20
22
  private calculateSegmentSize;
21
- private calculateSegment;
22
- private getFrameAlignedSegment;
23
- private findNextMp3Frame;
24
- private calculatefirst2SegmentSize;
25
23
  private padNumber;
26
24
  getSegmentDuration(segmentIndex: number): Promise<number>;
27
25
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAA4B,MAAM,0BAA0B,CAAC;AAYxF,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAU;IAC1C,OAAO,CAAC,QAAQ,CAAC,CAAc;IAC/B,OAAO,CAAC,YAAY,CAAkC;IACtD,OAAO,CAAC,oBAAoB,CAAqD;gBAKrE,OAAO,EAAE,kBAAkB;IAWvC,OAAO,CAAC,eAAe;IAevB,OAAO,CAAC,YAAY;YAgBN,WAAW;IA2BnB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAmDlE,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;IA6BnC,OAAO,CAAC,qBAAqB;IAW7B,OAAO,CAAC,uBAAuB;IAO/B,OAAO,CAAC,eAAe;IAKvB,OAAO,CAAC,oBAAoB;IAe5B,OAAO,CAAC,gBAAgB;YAuBV,sBAAsB;IA+BpC,OAAO,CAAC,gBAAgB;IAwCxB,OAAO,CAAC,0BAA0B;IAIlC,OAAO,CAAC,SAAS;IAOX,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAoBhE;AAGD,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAA4B,MAAM,0BAA0B,CAAC;AAYxF,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAU;IAC1C,OAAO,CAAC,QAAQ,CAAC,CAAc;IAC/B,OAAO,CAAC,QAAQ,CAA4B;gBAKhC,OAAO,EAAE,kBAAkB;IAWvC,OAAO,CAAC,eAAe;IAevB,OAAO,CAAC,YAAY;YAgBN,WAAW;IAkBnB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA4BlE,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;YA+BrB,WAAW;IAiFzB,OAAO,CAAC,kBAAkB;IAK1B,OAAO,CAAC,2BAA2B;IAmBnC,OAAO,CAAC,8BAA8B;IA0BtC,OAAO,CAAC,uBAAuB;IAO/B,OAAO,CAAC,eAAe;IAKvB,OAAO,CAAC,oBAAoB;IAgB5B,OAAO,CAAC,SAAS;IAOX,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAchE;AAGD,cAAc,0BAA0B,CAAC;AACzC,cAAc,4BAA4B,CAAC"}