audio-snip 0.2.0 → 0.3.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,7 +1,10 @@
1
- import { BasePlugin, fetchRange, fetchContentLength, trimBySamples, } from '../core.js';
2
- // eslint-disable-next-line @typescript-eslint/no-require-imports
1
+ import { BasePlugin, RemoteFile, trimBySamples, } from '../core.js';
3
2
  import MP4BoxFactory from 'mp4box';
4
- const MP4BoxLib = MP4BoxFactory;
3
+ const MP4Box = MP4BoxFactory;
4
+ const AAC_LC_PRIMING_SAMPLES = 2112;
5
+ const MOOV_TIMEOUT_MS = 30000;
6
+ const MOOV_INITIAL_BYTES = 2 * 1024 * 1024;
7
+ const RANGE_MERGE_GAP = 64 * 1024;
5
8
  // ─── ADTS header construction ────────────────────────────────────────────────
6
9
  function makeAdtsHeader(frameLength, audioObjectType, samplingFrequencyIndex, channelConfiguration) {
7
10
  const header = new Uint8Array(7);
@@ -39,21 +42,24 @@ function getSamplingFrequencyIndex(sampleRate) {
39
42
  // ─── Mp4Plugin ───────────────────────────────────────────────────────────────
40
43
  export class Mp4Plugin extends BasePlugin {
41
44
  canHandle(url) {
42
- try {
43
- const path = new URL(url, 'https://dummy').pathname.toLowerCase();
44
- return (path.endsWith('.m4a') ||
45
- path.endsWith('.mp4') ||
46
- path.endsWith('.aac') ||
47
- path.endsWith('.m4b'));
48
- }
49
- catch {
50
- const lower = url.toLowerCase();
51
- return lower.endsWith('.m4a') || lower.endsWith('.mp4') || lower.endsWith('.aac') || lower.endsWith('.m4b');
52
- }
45
+ const path = url.split('?')[0].split('#')[0].toLowerCase();
46
+ return path.endsWith('.m4a') || path.endsWith('.mp4') || path.endsWith('.aac') || path.endsWith('.m4b');
53
47
  }
54
48
  async getInfo(url) {
55
- const { info, audioTrack } = await this.loadMoov(url);
49
+ const file = new RemoteFile(url);
50
+ const { info, audioTrack } = await this.loadMoovForDecode(file);
56
51
  const duration = info.duration / info.timescale;
52
+ // Parse encoder delay from edit list (elst atom)
53
+ let encoderDelay;
54
+ const edits = audioTrack.edits;
55
+ if (edits && edits.length > 0 && edits[0].media_time > 0) {
56
+ const mediaTime = edits[0].media_time;
57
+ encoderDelay = Math.round(mediaTime * audioTrack.audio.sample_rate / audioTrack.timescale);
58
+ }
59
+ else {
60
+ // Default priming for AAC-LC: 1024 * 2 + 64 = 2112
61
+ encoderDelay = AAC_LC_PRIMING_SAMPLES;
62
+ }
57
63
  return {
58
64
  duration,
59
65
  sampleRate: audioTrack.audio.sample_rate,
@@ -61,14 +67,25 @@ export class Mp4Plugin extends BasePlugin {
61
67
  bitrate: audioTrack.bitrate,
62
68
  codec: audioTrack.codec,
63
69
  isVbr: true, // AAC is always VBR conceptually
64
- encoderDelay: 0,
70
+ encoderDelay,
65
71
  };
66
72
  }
67
73
  async decode(ctx, url, startTime, endTime) {
68
74
  // Step 1: Load moov atom only (a few MB) to get metadata + sample table
69
- const { audioTrack, mp4 } = await this.loadMoovForDecode(url);
75
+ const file = new RemoteFile(url);
76
+ const { audioTrack, mp4 } = await this.loadMoovForDecode(file);
70
77
  const sampleRate = audioTrack.audio.sample_rate;
71
78
  const timescale = audioTrack.timescale;
79
+ // Parse encoder delay from edit list
80
+ let encoderDelay;
81
+ const edits = audioTrack.edits;
82
+ if (edits && edits.length > 0 && edits[0].media_time > 0) {
83
+ const mediaTime = edits[0].media_time;
84
+ encoderDelay = Math.round(mediaTime * sampleRate / timescale);
85
+ }
86
+ else {
87
+ encoderDelay = AAC_LC_PRIMING_SAMPLES; // Default AAC-LC priming
88
+ }
72
89
  // Step 2: Use sample table to find which samples fall in [startTime, endTime]
73
90
  const allSamples = mp4.getTrackSamplesInfo(audioTrack.id);
74
91
  if (allSamples.length === 0) {
@@ -98,7 +115,7 @@ export class Mp4Plugin extends BasePlugin {
98
115
  // We read sample data directly from the fetched bytes — no onSamples needed.
99
116
  const rangeData = new Map(); // range.start → data
100
117
  for (const range of ranges) {
101
- const data = await fetchRange(url, range.start, range.end);
118
+ const data = await file.getRange(range.start, range.end);
102
119
  rangeData.set(range.start, data);
103
120
  }
104
121
  // Step 5: Extract raw AAC frame data for each needed sample
@@ -112,8 +129,9 @@ export class Mp4Plugin extends BasePlugin {
112
129
  for (const si of neededSamples) {
113
130
  // Find which fetched range contains this sample
114
131
  const rawData = this.readSampleFromRanges(si.offset, si.size, ranges, rangeData);
115
- if (!rawData)
116
- continue; // skip if data not available (shouldn't happen)
132
+ if (!rawData) {
133
+ throw new Error(`Failed to read sample at offset ${si.offset}, size ${si.size} — byte range not fetched`);
134
+ }
117
135
  const adtsHeader = makeAdtsHeader(rawData.length, audioObjectType, samplingFreqIndex, channelConfig);
118
136
  const frame = new Uint8Array(adtsHeader.length + rawData.length);
119
137
  frame.set(adtsHeader, 0);
@@ -135,7 +153,7 @@ export class Mp4Plugin extends BasePlugin {
135
153
  const decodedRate = decoded.sampleRate;
136
154
  const rangeStartTime = neededSamples[0].cts / timescale;
137
155
  const trimStartSeconds = startTime - rangeStartTime;
138
- const trimStartSamples = Math.round(trimStartSeconds * decodedRate);
156
+ const trimStartSamples = Math.round(trimStartSeconds * decodedRate) + encoderDelay;
139
157
  const wantedSamples = Math.round((endTime - startTime) * decodedRate);
140
158
  const startSample = Math.max(0, trimStartSamples);
141
159
  const endSample = Math.min(decoded.length, startSample + wantedSamples);
@@ -170,7 +188,7 @@ export class Mp4Plugin extends BasePlugin {
170
188
  const sampleStart = sorted[i].offset;
171
189
  const sampleEnd = sampleStart + sorted[i].size - 1;
172
190
  // Merge if gap is < 64KB (cheaper to over-fetch than make another request)
173
- if (sampleStart <= cur.end + 65536) {
191
+ if (sampleStart <= cur.end + RANGE_MERGE_GAP) {
174
192
  cur.end = Math.max(cur.end, sampleEnd);
175
193
  }
176
194
  else {
@@ -182,49 +200,68 @@ export class Mp4Plugin extends BasePlugin {
182
200
  return ranges;
183
201
  }
184
202
  // ─── Internal helpers ────────────────────────────────────────────────────
185
- async loadMoov(url) {
186
- const { info, audioTrack } = await this.loadMoovForDecode(url);
187
- return { info, audioTrack };
188
- }
189
- async loadMoovForDecode(url) {
190
- const MP4Box = MP4BoxLib;
203
+ async loadMoovForDecode(file) {
191
204
  const mp4 = MP4Box.createFile();
192
- const fileSize = await fetchContentLength(url);
193
- const info = await new Promise((resolve, reject) => {
205
+ const fileSize = await file.fetchSize();
206
+ let timer;
207
+ const infoPromise = new Promise((resolve, reject) => {
194
208
  mp4.onReady = resolve;
195
209
  mp4.onError = reject;
196
- this.streamToMP4Box(mp4, url, fileSize).catch(reject);
210
+ this.streamToMP4Box(mp4, file, fileSize).catch(reject);
211
+ });
212
+ const timeout = new Promise((_, reject) => {
213
+ timer = setTimeout(() => reject(new Error('Timeout: could not parse MP4 metadata')), MOOV_TIMEOUT_MS);
197
214
  });
215
+ let info;
216
+ try {
217
+ info = await Promise.race([infoPromise, timeout]);
218
+ }
219
+ finally {
220
+ clearTimeout(timer);
221
+ }
198
222
  const audioTrack = info.tracks.find((t) => t.type === 'audio');
199
223
  if (!audioTrack)
200
224
  throw new Error('No audio track found in MP4');
201
225
  return { info, audioTrack, mp4 };
202
226
  }
203
- async streamToMP4Box(mp4, url, fileSize) {
227
+ async streamToMP4Box(mp4, file, fileSize) {
204
228
  const chunkSize = 256 * 1024;
205
- const totalSize = fileSize ?? 10 * 1024 * 1024; // fallback 10MB
229
+ if (!fileSize)
230
+ throw new Error('Cannot determine file size — needed for MP4 parsing');
231
+ // mp4box calls onReady when moov is parsed. We track that to stop early.
232
+ let moovFound = false;
233
+ const origOnReady = mp4.onReady;
234
+ mp4.onReady = (info) => {
235
+ moovFound = true;
236
+ origOnReady?.(info);
237
+ };
238
+ // Stream from start until moov is found or we hit MOOV_INITIAL_BYTES
206
239
  let offset = 0;
207
- while (offset < totalSize) {
208
- const end = Math.min(offset + chunkSize - 1, totalSize - 1);
209
- const data = await fetchRange(url, offset, end);
240
+ while (offset < fileSize && !moovFound) {
241
+ const end = Math.min(offset + chunkSize - 1, fileSize - 1);
242
+ const data = await file.getRange(offset, end);
210
243
  const ab = data.buffer.slice(data.byteOffset, data.byteOffset + data.byteLength);
211
244
  ab.fileStart = offset;
212
245
  mp4.appendBuffer(ab);
213
246
  offset = end + 1;
214
- // Check if we have enough info - mp4box will call onReady
215
- // For large files, we may need to stop early once we have what we need
216
- if (offset > 2 * 1024 * 1024 && offset < totalSize - chunkSize) {
217
- // For the moov-at-end case, try the tail
247
+ // After reading MOOV_INITIAL_BYTES from start without finding moov,
248
+ // jump to the tail (moov-at-end layout)
249
+ if (!moovFound && offset >= MOOV_INITIAL_BYTES && offset < fileSize - chunkSize) {
218
250
  break;
219
251
  }
220
252
  }
221
- // If moov is at the end, fetch the tail
222
- if (fileSize && offset < fileSize) {
223
- const tailStart = Math.max(offset, fileSize - 2 * 1024 * 1024);
224
- const tailData = await fetchRange(url, tailStart, fileSize - 1);
225
- const ab = tailData.buffer.slice(tailData.byteOffset, tailData.byteOffset + tailData.byteLength);
226
- ab.fileStart = tailStart;
227
- mp4.appendBuffer(ab);
253
+ // If moov wasn't in the head, try the tail
254
+ if (!moovFound && offset < fileSize) {
255
+ const tailStart = Math.max(offset, fileSize - MOOV_INITIAL_BYTES);
256
+ let tailOffset = tailStart;
257
+ while (tailOffset < fileSize && !moovFound) {
258
+ const end = Math.min(tailOffset + chunkSize - 1, fileSize - 1);
259
+ const data = await file.getRange(tailOffset, end);
260
+ const ab = data.buffer.slice(data.byteOffset, data.byteOffset + data.byteLength);
261
+ ab.fileStart = tailOffset;
262
+ mp4.appendBuffer(ab);
263
+ tailOffset = end + 1;
264
+ }
228
265
  }
229
266
  mp4.flush();
230
267
  }
@@ -1 +1 @@
1
- {"version":3,"file":"mp4.js","sourceRoot":"","sources":["../../../src/plugins/mp4.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mp4.js","sourceRoot":"","sources":["../../../src/plugins/mp4.ts"],"names":[],"mappings":"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"}
@@ -14,6 +14,27 @@ export declare abstract class BasePlugin {
14
14
  }
15
15
  export declare function fetchRange(url: string, start: number, end: number): Promise<Uint8Array>;
16
16
  export declare function fetchContentLength(url: string): Promise<number | null>;
17
+ /**
18
+ * Wraps a URL for efficient byte access. On the first getRange() call it probes
19
+ * whether the server supports HTTP Range requests. If the server returns 200
20
+ * (full file), the data is kept in memory and all subsequent getRange() calls
21
+ * are served locally — the file is never re-downloaded.
22
+ *
23
+ * Create one RemoteFile per decode() call, let it go when done.
24
+ */
25
+ export declare class RemoteFile {
26
+ private url;
27
+ private fullData;
28
+ private _size;
29
+ private _rangeSupported;
30
+ constructor(url: string);
31
+ get rangeSupported(): boolean | null;
32
+ get size(): number | null;
33
+ /** Fetch content length via HEAD (does not download body). */
34
+ fetchSize(): Promise<number | null>;
35
+ /** Read a byte range. Detects Range support on first call. */
36
+ getRange(start: number, end: number): Promise<Uint8Array>;
37
+ }
17
38
  export declare function trimBySamples(ctx: BaseAudioContext, buffer: AudioBuffer, startSample: number, endSample: number): AudioBuffer;
18
39
  declare class AudioSnip {
19
40
  private plugins;
@@ -1,2 +1,2 @@
1
- export { audioSnip, BasePlugin, fetchRange, fetchContentLength, trimBySamples, } from './core.js';
1
+ export { audioSnip, BasePlugin, RemoteFile, fetchRange, fetchContentLength, trimBySamples, } from './core.js';
2
2
  export type { AudioFileInfo } from './core.js';
@@ -12,7 +12,6 @@ export declare class Mp4Plugin extends BasePlugin {
12
12
  * Adjacent or overlapping ranges are merged to reduce HTTP requests.
13
13
  */
14
14
  private collapseRanges;
15
- private loadMoov;
16
15
  private loadMoovForDecode;
17
16
  private streamToMP4Box;
18
17
  }
package/package.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "audio-snip",
3
- "version": "0.2.0",
3
+ "version": "0.3.0",
4
4
  "description": "Decode audio segments from remote files via HTTP Range requests",
5
5
  "license": "MIT",
6
- "author": "Stepan Mikhailiuk",
6
+ "author": "Stepan Mikhailiuk (stepancar)",
7
7
  "repository": {
8
8
  "type": "git",
9
9
  "url": "git+https://github.com/stepancar/audio-snip.git"