hls-streamer 2.2.0 → 3.0.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.
Files changed (94) hide show
  1. package/README.md +84 -24
  2. package/dist/Interfaces/HlsStreamer.d.ts +4 -1
  3. package/dist/Interfaces/HlsStreamer.d.ts.map +1 -1
  4. package/dist/Libs/FileLib.d.ts +8 -1
  5. package/dist/Libs/FileLib.d.ts.map +1 -1
  6. package/dist/Libs/FileLib.js +35 -0
  7. package/dist/Libs/FileLib.js.map +1 -1
  8. package/dist/Libs/FormatDetector.d.ts +8 -0
  9. package/dist/Libs/FormatDetector.d.ts.map +1 -0
  10. package/dist/Libs/FormatDetector.js +63 -0
  11. package/dist/Libs/FormatDetector.js.map +1 -0
  12. package/dist/Parsers/AacParser.d.ts +15 -0
  13. package/dist/Parsers/AacParser.d.ts.map +1 -0
  14. package/dist/Parsers/AacParser.js +246 -0
  15. package/dist/Parsers/AacParser.js.map +1 -0
  16. package/dist/Parsers/FlacParser.d.ts +13 -0
  17. package/dist/Parsers/FlacParser.d.ts.map +1 -0
  18. package/dist/Parsers/FlacParser.js +200 -0
  19. package/dist/Parsers/FlacParser.js.map +1 -0
  20. package/dist/Parsers/IAudioParser.d.ts +31 -0
  21. package/dist/Parsers/IAudioParser.d.ts.map +1 -0
  22. package/dist/Parsers/IAudioParser.js +2 -0
  23. package/dist/Parsers/IAudioParser.js.map +1 -0
  24. package/dist/Parsers/Mp3Parser.d.ts +19 -0
  25. package/dist/Parsers/Mp3Parser.d.ts.map +1 -0
  26. package/dist/Parsers/Mp3Parser.js +270 -0
  27. package/dist/Parsers/Mp3Parser.js.map +1 -0
  28. package/dist/Parsers/OggParser.d.ts +11 -0
  29. package/dist/Parsers/OggParser.d.ts.map +1 -0
  30. package/dist/Parsers/OggParser.js +160 -0
  31. package/dist/Parsers/OggParser.js.map +1 -0
  32. package/dist/Parsers/ParserFactory.d.ts +10 -0
  33. package/dist/Parsers/ParserFactory.d.ts.map +1 -0
  34. package/dist/Parsers/ParserFactory.js +43 -0
  35. package/dist/Parsers/ParserFactory.js.map +1 -0
  36. package/dist/Parsers/WavParser.d.ts +9 -0
  37. package/dist/Parsers/WavParser.d.ts.map +1 -0
  38. package/dist/Parsers/WavParser.js +135 -0
  39. package/dist/Parsers/WavParser.js.map +1 -0
  40. package/dist/cjs/Interfaces/HlsStreamer.d.ts +4 -1
  41. package/dist/cjs/Interfaces/HlsStreamer.d.ts.map +1 -1
  42. package/dist/cjs/Libs/FileLib.d.ts +8 -1
  43. package/dist/cjs/Libs/FileLib.d.ts.map +1 -1
  44. package/dist/cjs/Libs/FileLib.js +35 -0
  45. package/dist/cjs/Libs/FileLib.js.map +1 -1
  46. package/dist/cjs/Libs/FormatDetector.d.ts +8 -0
  47. package/dist/cjs/Libs/FormatDetector.d.ts.map +1 -0
  48. package/dist/cjs/Libs/FormatDetector.js +67 -0
  49. package/dist/cjs/Libs/FormatDetector.js.map +1 -0
  50. package/dist/cjs/Parsers/AacParser.d.ts +15 -0
  51. package/dist/cjs/Parsers/AacParser.d.ts.map +1 -0
  52. package/dist/cjs/Parsers/AacParser.js +250 -0
  53. package/dist/cjs/Parsers/AacParser.js.map +1 -0
  54. package/dist/cjs/Parsers/FlacParser.d.ts +13 -0
  55. package/dist/cjs/Parsers/FlacParser.d.ts.map +1 -0
  56. package/dist/cjs/Parsers/FlacParser.js +204 -0
  57. package/dist/cjs/Parsers/FlacParser.js.map +1 -0
  58. package/dist/cjs/Parsers/IAudioParser.d.ts +31 -0
  59. package/dist/cjs/Parsers/IAudioParser.d.ts.map +1 -0
  60. package/dist/cjs/Parsers/IAudioParser.js +3 -0
  61. package/dist/cjs/Parsers/IAudioParser.js.map +1 -0
  62. package/dist/cjs/Parsers/Mp3Parser.d.ts +19 -0
  63. package/dist/cjs/Parsers/Mp3Parser.d.ts.map +1 -0
  64. package/dist/cjs/Parsers/Mp3Parser.js +274 -0
  65. package/dist/cjs/Parsers/Mp3Parser.js.map +1 -0
  66. package/dist/cjs/Parsers/OggParser.d.ts +11 -0
  67. package/dist/cjs/Parsers/OggParser.d.ts.map +1 -0
  68. package/dist/cjs/Parsers/OggParser.js +164 -0
  69. package/dist/cjs/Parsers/OggParser.js.map +1 -0
  70. package/dist/cjs/Parsers/ParserFactory.d.ts +10 -0
  71. package/dist/cjs/Parsers/ParserFactory.d.ts.map +1 -0
  72. package/dist/cjs/Parsers/ParserFactory.js +47 -0
  73. package/dist/cjs/Parsers/ParserFactory.js.map +1 -0
  74. package/dist/cjs/Parsers/WavParser.d.ts +9 -0
  75. package/dist/cjs/Parsers/WavParser.d.ts.map +1 -0
  76. package/dist/cjs/Parsers/WavParser.js +139 -0
  77. package/dist/cjs/Parsers/WavParser.js.map +1 -0
  78. package/dist/cjs/errors/HlsStreamerErrors.d.ts +3 -0
  79. package/dist/cjs/errors/HlsStreamerErrors.d.ts.map +1 -1
  80. package/dist/cjs/errors/HlsStreamerErrors.js +8 -1
  81. package/dist/cjs/errors/HlsStreamerErrors.js.map +1 -1
  82. package/dist/cjs/index.d.ts +1 -0
  83. package/dist/cjs/index.d.ts.map +1 -1
  84. package/dist/cjs/index.js +34 -11
  85. package/dist/cjs/index.js.map +1 -1
  86. package/dist/errors/HlsStreamerErrors.d.ts +3 -0
  87. package/dist/errors/HlsStreamerErrors.d.ts.map +1 -1
  88. package/dist/errors/HlsStreamerErrors.js +6 -0
  89. package/dist/errors/HlsStreamerErrors.js.map +1 -1
  90. package/dist/index.d.ts +1 -0
  91. package/dist/index.d.ts.map +1 -1
  92. package/dist/index.js +35 -12
  93. package/dist/index.js.map +1 -1
  94. package/package.json +10 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AacParser.js","sourceRoot":"","sources":["../../../src/Parsers/AacParser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { IAudioParser, AudioFileInfo, AudioFormat } from './IAudioParser';
2
+ export declare class FlacParser implements IAudioParser {
3
+ private static readonly FLAC_SIGNATURE;
4
+ getFormat(): AudioFormat;
5
+ canParse(buffer: Buffer): boolean;
6
+ analyze(buffer: Buffer, opts?: {
7
+ fileSize?: number;
8
+ }): AudioFileInfo;
9
+ private parseStreamInfo;
10
+ private findNextFrameSync;
11
+ private parseFrameHeader;
12
+ }
13
+ //# sourceMappingURL=FlacParser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FlacParser.d.ts","sourceRoot":"","sources":["../../../src/Parsers/FlacParser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAkB,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAK1F,qBAAa,UAAW,YAAW,YAAY;IAC7C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAU;IAEhD,SAAS,IAAI,WAAW;IAIxB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAIjC,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,GAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,aAAa;IAgLxE,OAAO,CAAC,eAAe;IA+BvB,OAAO,CAAC,iBAAiB;IAUzB,OAAO,CAAC,gBAAgB;CA6BzB"}
@@ -0,0 +1,204 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FlacParser = void 0;
4
+ class FlacParser {
5
+ getFormat() {
6
+ return 'flac';
7
+ }
8
+ canParse(buffer) {
9
+ return buffer.length >= 4 && buffer.toString('ascii', 0, 4) === FlacParser.FLAC_SIGNATURE;
10
+ }
11
+ analyze(buffer, opts = {}) {
12
+ const warnings = [];
13
+ const size = opts.fileSize ?? buffer.length;
14
+ if (!this.canParse(buffer)) {
15
+ return {
16
+ format: 'flac',
17
+ size,
18
+ duration: 0,
19
+ audioDataSize: 0,
20
+ frames: [],
21
+ warnings: ['Not a valid FLAC file']
22
+ };
23
+ }
24
+ let offset = 4;
25
+ let streamInfo = null;
26
+ let audioDataOffset = -1;
27
+ while (offset + 4 <= buffer.length) {
28
+ const blockHeader = buffer[offset];
29
+ if (blockHeader === undefined)
30
+ break;
31
+ const isLast = (blockHeader & 0x80) !== 0;
32
+ const blockType = blockHeader & 0x7f;
33
+ const blockLength = (buffer[offset + 1] << 16) | (buffer[offset + 2] << 8) | buffer[offset + 3];
34
+ offset += 4;
35
+ if (blockType === 0) {
36
+ if (blockLength < 34) {
37
+ warnings.push('Invalid STREAMINFO block size');
38
+ break;
39
+ }
40
+ streamInfo = this.parseStreamInfo(buffer, offset);
41
+ }
42
+ offset += blockLength;
43
+ if (isLast) {
44
+ audioDataOffset = offset;
45
+ break;
46
+ }
47
+ }
48
+ if (!streamInfo) {
49
+ return {
50
+ format: 'flac',
51
+ size,
52
+ duration: 0,
53
+ audioDataSize: 0,
54
+ frames: [],
55
+ warnings: ['Missing STREAMINFO block']
56
+ };
57
+ }
58
+ const duration = streamInfo.sampleRate > 0
59
+ ? Number(streamInfo.totalSamples) / streamInfo.sampleRate
60
+ : 0;
61
+ const audioDataSize = audioDataOffset > 0 ? size - audioDataOffset : 0;
62
+ const averageBitrate = duration > 0 ? (audioDataSize * 8) / duration / 1000 : undefined;
63
+ const frames = [];
64
+ if (audioDataOffset > 0 && audioDataOffset < buffer.length) {
65
+ let frameOffset = audioDataOffset;
66
+ let frameIndex = 0;
67
+ const maxFrames = 10000;
68
+ while (frameOffset + 4 <= buffer.length && frameIndex < maxFrames) {
69
+ const frameHeader = this.findNextFrameSync(buffer, frameOffset);
70
+ if (frameHeader === -1) {
71
+ break;
72
+ }
73
+ frameOffset = frameHeader;
74
+ const frameInfo = this.parseFrameHeader(buffer, frameOffset, streamInfo);
75
+ if (!frameInfo) {
76
+ frameOffset++;
77
+ continue;
78
+ }
79
+ const estimatedFrameSize = streamInfo.maxFrameSize > 0
80
+ ? streamInfo.maxFrameSize
81
+ : Math.ceil((streamInfo.maxBlockSize * streamInfo.bitsPerSample * streamInfo.channels) / 8) + 16;
82
+ const frameDuration = frameInfo.blockSize / streamInfo.sampleRate;
83
+ frames.push({
84
+ index: frameIndex,
85
+ offset: frameOffset,
86
+ length: estimatedFrameSize,
87
+ duration: frameDuration,
88
+ samples: frameInfo.blockSize,
89
+ sampleRate: streamInfo.sampleRate,
90
+ bitrate: Math.round(averageBitrate || 0)
91
+ });
92
+ frameIndex++;
93
+ frameOffset += estimatedFrameSize;
94
+ }
95
+ }
96
+ if (frames.length === 0 && duration > 0) {
97
+ warnings.push('Could not parse FLAC frames, using estimated segmentation');
98
+ const framesPerSecond = streamInfo.sampleRate / streamInfo.maxBlockSize;
99
+ const totalFrames = Math.ceil(duration * framesPerSecond);
100
+ const avgFrameSize = audioDataSize / totalFrames;
101
+ let frameOffset = audioDataOffset;
102
+ for (let i = 0; i < totalFrames; i++) {
103
+ const frameDuration = streamInfo.maxBlockSize / streamInfo.sampleRate;
104
+ frames.push({
105
+ index: i,
106
+ offset: frameOffset,
107
+ length: Math.floor(avgFrameSize),
108
+ duration: frameDuration,
109
+ samples: streamInfo.maxBlockSize,
110
+ sampleRate: streamInfo.sampleRate,
111
+ bitrate: Math.round(averageBitrate || 0)
112
+ });
113
+ frameOffset += avgFrameSize;
114
+ }
115
+ }
116
+ const metadata = {
117
+ format: 'flac',
118
+ size,
119
+ duration,
120
+ audioDataSize,
121
+ sampleRate: streamInfo.sampleRate,
122
+ channels: streamInfo.channels,
123
+ bitDepth: streamInfo.bitsPerSample,
124
+ frames
125
+ };
126
+ if (averageBitrate !== undefined) {
127
+ metadata.averageBitrate = averageBitrate;
128
+ }
129
+ if (warnings.length > 0) {
130
+ metadata.warnings = warnings;
131
+ }
132
+ metadata.metadata = {
133
+ minBlockSize: streamInfo.minBlockSize,
134
+ maxBlockSize: streamInfo.maxBlockSize,
135
+ minFrameSize: streamInfo.minFrameSize,
136
+ maxFrameSize: streamInfo.maxFrameSize,
137
+ totalSamples: streamInfo.totalSamples.toString()
138
+ };
139
+ return metadata;
140
+ }
141
+ parseStreamInfo(buffer, offset) {
142
+ const minBlockSize = buffer.readUInt16BE(offset);
143
+ const maxBlockSize = buffer.readUInt16BE(offset + 2);
144
+ const minFrameSize = (buffer[offset + 4] << 16) | (buffer[offset + 5] << 8) | buffer[offset + 6];
145
+ const maxFrameSize = (buffer[offset + 7] << 16) | (buffer[offset + 8] << 8) | buffer[offset + 9];
146
+ const word1 = buffer.readUInt32BE(offset + 10);
147
+ const word2 = buffer.readUInt32BE(offset + 14);
148
+ const sampleRate = (word1 >> 12) & 0xfffff;
149
+ const channels = ((word1 >> 9) & 0x7) + 1;
150
+ const bitsPerSample = ((word1 >> 4) & 0x1f) + 1;
151
+ const totalSamplesHigh = BigInt(word1 & 0xf);
152
+ const totalSamplesLow = BigInt(word2);
153
+ const totalSamples = (totalSamplesHigh << 32n) | totalSamplesLow;
154
+ return {
155
+ minBlockSize,
156
+ maxBlockSize,
157
+ minFrameSize,
158
+ maxFrameSize,
159
+ sampleRate,
160
+ channels,
161
+ bitsPerSample,
162
+ totalSamples
163
+ };
164
+ }
165
+ findNextFrameSync(buffer, startOffset) {
166
+ for (let i = startOffset; i < buffer.length - 1; i++) {
167
+ if (buffer[i] === 0xff && (buffer[i + 1] & 0xfc) === 0xf8) {
168
+ return i;
169
+ }
170
+ }
171
+ return -1;
172
+ }
173
+ parseFrameHeader(buffer, offset, streamInfo) {
174
+ if (offset + 4 > buffer.length) {
175
+ return null;
176
+ }
177
+ if (buffer[offset] !== 0xff || (buffer[offset + 1] & 0xfc) !== 0xf8) {
178
+ return null;
179
+ }
180
+ const byte2 = buffer[offset + 2];
181
+ if (byte2 === undefined)
182
+ return null;
183
+ const blockSizeCode = (byte2 >> 4) & 0x0f;
184
+ let blockSize = streamInfo.maxBlockSize;
185
+ if (blockSizeCode >= 1 && blockSizeCode <= 5) {
186
+ blockSize = 192 * (1 << (blockSizeCode - 1));
187
+ }
188
+ else if (blockSizeCode === 6 || blockSizeCode === 7) {
189
+ blockSize = streamInfo.maxBlockSize;
190
+ }
191
+ else if (blockSizeCode >= 8 && blockSizeCode <= 15) {
192
+ blockSize = 256 * (1 << (blockSizeCode - 8));
193
+ }
194
+ return { blockSize };
195
+ }
196
+ }
197
+ exports.FlacParser = FlacParser;
198
+ Object.defineProperty(FlacParser, "FLAC_SIGNATURE", {
199
+ enumerable: true,
200
+ configurable: true,
201
+ writable: true,
202
+ value: 'fLaC'
203
+ });
204
+ //# sourceMappingURL=FlacParser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FlacParser.js","sourceRoot":"","sources":["../../../src/Parsers/FlacParser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ export type AudioFormat = 'mp3' | 'aac' | 'm4a' | 'ogg' | 'flac' | 'wav';
2
+ export interface AudioFrameInfo {
3
+ index: number;
4
+ offset: number;
5
+ length: number;
6
+ duration: number;
7
+ samples: number;
8
+ sampleRate: number;
9
+ bitrate: number;
10
+ }
11
+ export interface AudioFileInfo {
12
+ format: AudioFormat;
13
+ size: number;
14
+ duration: number;
15
+ audioDataSize: number;
16
+ sampleRate?: number;
17
+ averageBitrate?: number;
18
+ bitDepth?: number;
19
+ channels?: number;
20
+ frames: AudioFrameInfo[];
21
+ warnings?: string[];
22
+ metadata?: Record<string, any>;
23
+ }
24
+ export interface IAudioParser {
25
+ analyze(buffer: Buffer, opts?: {
26
+ fileSize?: number;
27
+ }): AudioFileInfo;
28
+ getFormat(): AudioFormat;
29
+ canParse(buffer: Buffer): boolean;
30
+ }
31
+ //# sourceMappingURL=IAudioParser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IAudioParser.d.ts","sourceRoot":"","sources":["../../../src/Parsers/IAudioParser.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,WAAW,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,CAAC;AAKzE,MAAM,WAAW,cAAc;IAE7B,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;CACjB;AAKD,MAAM,WAAW,aAAa;IAE5B,MAAM,EAAE,WAAW,CAAC;IAEpB,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,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,MAAM,EAAE,cAAc,EAAE,CAAC;IAEzB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IAEpB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAChC;AAKD,MAAM,WAAW,YAAY;IAM3B,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,aAAa,CAAC;IAKrE,SAAS,IAAI,WAAW,CAAC;IAMzB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;CACnC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=IAudioParser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IAudioParser.js","sourceRoot":"","sources":["../../../src/Parsers/IAudioParser.ts"],"names":[],"mappings":""}
@@ -0,0 +1,19 @@
1
+ import { IAudioParser, AudioFileInfo, AudioFormat } from './IAudioParser';
2
+ export declare class Mp3Parser implements IAudioParser {
3
+ private static readonly BITRATE_INDEX;
4
+ private static readonly SAMPLE_RATE_INDEX;
5
+ getFormat(): AudioFormat;
6
+ canParse(buffer: Buffer): boolean;
7
+ analyze(buffer: Buffer, opts?: {
8
+ fileSize?: number;
9
+ }): AudioFileInfo;
10
+ private calculateFrameLength;
11
+ private getId3Offsets;
12
+ private syncSafeInteger;
13
+ private isFrameSync;
14
+ private parseFrameHeader;
15
+ private decodeVersion;
16
+ private decodeLayer;
17
+ private getSamplesPerFrame;
18
+ }
19
+ //# sourceMappingURL=Mp3Parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Mp3Parser.d.ts","sourceRoot":"","sources":["../../../src/Parsers/Mp3Parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAkB,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAsB1F,qBAAa,SAAU,YAAW,YAAY;IAC5C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAgBnC;IAEF,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAIvC;IAEF,SAAS,IAAI,WAAW;IAIxB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAsBjC,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,GAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,aAAa;IAyIxE,OAAO,CAAC,oBAAoB;IAS5B,OAAO,CAAC,aAAa;IA8BrB,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,WAAW;IAWnB,OAAO,CAAC,gBAAgB;IAqCxB,OAAO,CAAC,aAAa;IAarB,OAAO,CAAC,WAAW;IAanB,OAAO,CAAC,kBAAkB;CAW3B"}
@@ -0,0 +1,274 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Mp3Parser = void 0;
4
+ class Mp3Parser {
5
+ getFormat() {
6
+ return 'mp3';
7
+ }
8
+ canParse(buffer) {
9
+ if (buffer.length < 10) {
10
+ return false;
11
+ }
12
+ if (buffer.toString('ascii', 0, 3) === 'ID3') {
13
+ return true;
14
+ }
15
+ if (buffer.length >= 2) {
16
+ const byte1 = buffer[0];
17
+ const byte2 = buffer[1];
18
+ if (byte1 === 0xff && (byte2 & 0xe0) === 0xe0) {
19
+ return true;
20
+ }
21
+ }
22
+ return false;
23
+ }
24
+ analyze(buffer, opts = {}) {
25
+ const warnings = [];
26
+ const size = opts.fileSize ?? buffer.length;
27
+ if (buffer.length === 0) {
28
+ return {
29
+ format: 'mp3',
30
+ size,
31
+ duration: 0,
32
+ audioDataSize: 0,
33
+ frames: []
34
+ };
35
+ }
36
+ const offsets = this.getId3Offsets(buffer);
37
+ const frames = [];
38
+ const payloadSize = Math.max(0, offsets.audioEnd - offsets.startOffset);
39
+ let offset = offsets.startOffset;
40
+ let frameIndex = 0;
41
+ let sampleRate;
42
+ let channels;
43
+ let totalDuration = 0;
44
+ let totalAudioBytes = 0;
45
+ while (offset + 4 <= offsets.audioEnd) {
46
+ if (!this.isFrameSync(buffer, offset)) {
47
+ offset++;
48
+ continue;
49
+ }
50
+ const header = buffer.readUInt32BE(offset);
51
+ const parsed = this.parseFrameHeader(header);
52
+ if (!parsed) {
53
+ offset++;
54
+ continue;
55
+ }
56
+ const frameLength = this.calculateFrameLength(parsed);
57
+ if (frameLength <= 0) {
58
+ warnings.push(`Encountered zero-length frame at offset ${offset}`);
59
+ offset++;
60
+ continue;
61
+ }
62
+ if (offset + frameLength > buffer.length) {
63
+ warnings.push(`Truncated frame at offset ${offset}`);
64
+ break;
65
+ }
66
+ sampleRate = sampleRate ?? parsed.sampleRate;
67
+ if (channels === undefined) {
68
+ const channelMode = (header >> 6) & 0x3;
69
+ channels = channelMode === 3 ? 1 : 2;
70
+ }
71
+ const frameDuration = parsed.samplesPerFrame / parsed.sampleRate;
72
+ frames.push({
73
+ index: frameIndex,
74
+ offset,
75
+ length: frameLength,
76
+ duration: frameDuration,
77
+ samples: parsed.samplesPerFrame,
78
+ sampleRate: parsed.sampleRate,
79
+ bitrate: parsed.bitrate
80
+ });
81
+ frameIndex++;
82
+ totalDuration += frameDuration;
83
+ totalAudioBytes += frameLength;
84
+ offset += frameLength;
85
+ }
86
+ if (frames.length === 0) {
87
+ const estimatedDuration = buffer.length / 16000;
88
+ warnings.push('Falling back to heuristic duration due to missing MP3 frames');
89
+ const metadata = {
90
+ format: 'mp3',
91
+ size,
92
+ duration: Math.max(0.001, estimatedDuration),
93
+ audioDataSize: payloadSize,
94
+ frames: []
95
+ };
96
+ if (warnings.length) {
97
+ metadata.warnings = warnings;
98
+ }
99
+ return metadata;
100
+ }
101
+ const duration = totalDuration;
102
+ const averageBitrate = duration > 0 ? (totalAudioBytes * 8) / duration / 1000 : undefined;
103
+ const metadata = {
104
+ format: 'mp3',
105
+ size,
106
+ duration,
107
+ audioDataSize: totalAudioBytes || payloadSize,
108
+ frames
109
+ };
110
+ if (sampleRate !== undefined) {
111
+ metadata.sampleRate = sampleRate;
112
+ }
113
+ if (channels !== undefined) {
114
+ metadata.channels = channels;
115
+ }
116
+ if (averageBitrate !== undefined) {
117
+ metadata.averageBitrate = averageBitrate;
118
+ }
119
+ if (offsets.id3v2Size > 0 || offsets.id3v1Size > 0) {
120
+ metadata.metadata = {};
121
+ if (offsets.id3v2Size > 0) {
122
+ metadata.metadata['id3v2Size'] = offsets.id3v2Size;
123
+ }
124
+ if (offsets.id3v1Size > 0) {
125
+ metadata.metadata['id3v1Size'] = offsets.id3v1Size;
126
+ }
127
+ }
128
+ if (warnings.length) {
129
+ metadata.warnings = warnings;
130
+ }
131
+ return metadata;
132
+ }
133
+ calculateFrameLength(frame) {
134
+ if (frame.layer === 1) {
135
+ return Math.floor(((12 * frame.bitrate * 1000) / frame.sampleRate + frame.padding) * 4);
136
+ }
137
+ const multiplier = frame.layer === 3 && frame.version !== 1 ? 72 : 144;
138
+ return Math.floor((multiplier * frame.bitrate * 1000) / frame.sampleRate + frame.padding);
139
+ }
140
+ getId3Offsets(buffer) {
141
+ let startOffset = 0;
142
+ let id3v2Size = 0;
143
+ if (buffer.length >= 10 && buffer.toString('ascii', 0, 3) === 'ID3') {
144
+ const sizeBytes = buffer.subarray(6, 10);
145
+ id3v2Size = this.syncSafeInteger(sizeBytes);
146
+ startOffset = Math.min(buffer.length, 10 + id3v2Size);
147
+ }
148
+ let id3v1Size = 0;
149
+ let audioEnd = buffer.length;
150
+ if (buffer.length >= 128) {
151
+ const tagOffset = buffer.length - 128;
152
+ if (buffer.toString('ascii', tagOffset, tagOffset + 3) === 'TAG') {
153
+ id3v1Size = 128;
154
+ audioEnd = tagOffset;
155
+ }
156
+ }
157
+ return {
158
+ startOffset,
159
+ id3v2Size,
160
+ audioEnd,
161
+ id3v1Size
162
+ };
163
+ }
164
+ syncSafeInteger(bytes) {
165
+ return ((bytes[0] & 0x7f) << 21) |
166
+ ((bytes[1] & 0x7f) << 14) |
167
+ ((bytes[2] & 0x7f) << 7) |
168
+ (bytes[3] & 0x7f);
169
+ }
170
+ isFrameSync(buffer, offset) {
171
+ const byte1 = buffer[offset];
172
+ const byte2 = buffer[offset + 1];
173
+ if (byte1 === undefined || byte2 === undefined) {
174
+ return false;
175
+ }
176
+ return byte1 === 0xff && (byte2 & 0xe0) === 0xe0;
177
+ }
178
+ parseFrameHeader(header) {
179
+ const versionBits = (header >> 19) & 0x3;
180
+ const layerBits = (header >> 17) & 0x3;
181
+ const bitrateIndex = (header >> 12) & 0xf;
182
+ const sampleRateIndex = (header >> 10) & 0x3;
183
+ const padding = ((header >> 9) & 0x1);
184
+ const version = this.decodeVersion(versionBits);
185
+ const layer = this.decodeLayer(layerBits);
186
+ if (!version || !layer) {
187
+ return null;
188
+ }
189
+ if (bitrateIndex === 0 || bitrateIndex === 15 || sampleRateIndex === 3) {
190
+ return null;
191
+ }
192
+ const bitrate = Mp3Parser.BITRATE_INDEX[version][layer][bitrateIndex];
193
+ const sampleRate = Mp3Parser.SAMPLE_RATE_INDEX[version][sampleRateIndex];
194
+ if (!bitrate || !sampleRate) {
195
+ return null;
196
+ }
197
+ const samplesPerFrame = this.getSamplesPerFrame(version, layer);
198
+ return {
199
+ version,
200
+ layer,
201
+ bitrate,
202
+ sampleRate,
203
+ padding,
204
+ samplesPerFrame
205
+ };
206
+ }
207
+ decodeVersion(bits) {
208
+ switch (bits) {
209
+ case 0b11:
210
+ return 1;
211
+ case 0b10:
212
+ return 2;
213
+ case 0b00:
214
+ return 25;
215
+ default:
216
+ return null;
217
+ }
218
+ }
219
+ decodeLayer(bits) {
220
+ switch (bits) {
221
+ case 0b11:
222
+ return 1;
223
+ case 0b10:
224
+ return 2;
225
+ case 0b01:
226
+ return 3;
227
+ default:
228
+ return null;
229
+ }
230
+ }
231
+ getSamplesPerFrame(version, layer) {
232
+ if (layer === 1) {
233
+ return 384;
234
+ }
235
+ if (layer === 2) {
236
+ return 1152;
237
+ }
238
+ return version === 1 ? 1152 : 576;
239
+ }
240
+ }
241
+ exports.Mp3Parser = Mp3Parser;
242
+ Object.defineProperty(Mp3Parser, "BITRATE_INDEX", {
243
+ enumerable: true,
244
+ configurable: true,
245
+ writable: true,
246
+ value: {
247
+ 1: {
248
+ 1: [0, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448],
249
+ 2: [0, 32, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 384],
250
+ 3: [0, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320]
251
+ },
252
+ 2: {
253
+ 1: [0, 32, 48, 56, 64, 80, 96, 112, 128, 144, 160, 176, 192, 224, 256],
254
+ 2: [0, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160],
255
+ 3: [0, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160]
256
+ },
257
+ 25: {
258
+ 1: [0, 32, 48, 56, 64, 80, 96, 112, 128, 144, 160, 176, 192, 224, 256],
259
+ 2: [0, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160],
260
+ 3: [0, 8, 16, 24, 32, 40, 48, 56, 64, 80, 96, 112, 128, 144, 160]
261
+ }
262
+ }
263
+ });
264
+ Object.defineProperty(Mp3Parser, "SAMPLE_RATE_INDEX", {
265
+ enumerable: true,
266
+ configurable: true,
267
+ writable: true,
268
+ value: {
269
+ 1: [44100, 48000, 32000],
270
+ 2: [22050, 24000, 16000],
271
+ 25: [11025, 12000, 8000]
272
+ }
273
+ });
274
+ //# sourceMappingURL=Mp3Parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Mp3Parser.js","sourceRoot":"","sources":["../../../src/Parsers/Mp3Parser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { IAudioParser, AudioFileInfo, AudioFormat } from './IAudioParser';
2
+ export declare class OggParser implements IAudioParser {
3
+ private static readonly OGG_SIGNATURE;
4
+ getFormat(): AudioFormat;
5
+ canParse(buffer: Buffer): boolean;
6
+ analyze(buffer: Buffer, opts?: {
7
+ fileSize?: number;
8
+ }): AudioFileInfo;
9
+ private parseVorbisIdHeader;
10
+ }
11
+ //# sourceMappingURL=OggParser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OggParser.d.ts","sourceRoot":"","sources":["../../../src/Parsers/OggParser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAkB,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAM1F,qBAAa,SAAU,YAAW,YAAY;IAC5C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAU;IAE/C,SAAS,IAAI,WAAW;IAIxB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAIjC,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,GAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,aAAa;IAwKxE,OAAO,CAAC,mBAAmB;CAkC5B"}