@remotion/media-parser 4.0.286 → 4.0.287

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 (225) hide show
  1. package/dist/containers/flac/get-channel-count.d.ts +1 -1
  2. package/dist/containers/iso-base-media/collect-sample-positions-from-moof-boxes.d.ts +2 -2
  3. package/dist/containers/iso-base-media/collect-sample-positions-from-moof-boxes.js +6 -3
  4. package/dist/containers/iso-base-media/get-keyframes.js +1 -1
  5. package/dist/containers/iso-base-media/get-sample-positions-from-track.d.ts +2 -2
  6. package/dist/containers/iso-base-media/get-seeking-byte.d.ts +15 -0
  7. package/dist/containers/iso-base-media/{get-seeking-from-mp4.js → get-seeking-byte.js} +16 -2
  8. package/dist/containers/iso-base-media/mdat/mdat.js +6 -3
  9. package/dist/containers/iso-base-media/process-box.js +5 -3
  10. package/dist/containers/iso-base-media/{get-seeking-info-from-mp4.d.ts → seeking-hints.d.ts} +8 -3
  11. package/dist/containers/iso-base-media/seeking-hints.js +52 -0
  12. package/dist/containers/iso-base-media/traversal.d.ts +4 -2
  13. package/dist/containers/iso-base-media/traversal.js +6 -5
  14. package/dist/containers/m3u/iterate-over-segment-files.js +23 -20
  15. package/dist/containers/riff/parse-video-section.js +1 -1
  16. package/dist/containers/transport-stream/handle-aac-packet.js +4 -1
  17. package/dist/containers/transport-stream/handle-avc-packet.js +4 -1
  18. package/dist/containers/transport-stream/seeking-hints.d.ts +9 -0
  19. package/dist/containers/transport-stream/seeking-hints.js +26 -0
  20. package/dist/containers/wav/get-seeking-byte.d.ts +2 -2
  21. package/dist/containers/wav/get-seeking-byte.js +2 -2
  22. package/dist/containers/wav/seeking-hints.d.ts +12 -0
  23. package/dist/containers/wav/seeking-hints.js +25 -0
  24. package/dist/containers/webm/seek/get-seeking-byte.d.ts +3 -5
  25. package/dist/containers/webm/seek/get-seeking-byte.js +5 -5
  26. package/dist/containers/webm/seek/seeking-hints.d.ts +10 -0
  27. package/dist/containers/webm/seek/seeking-hints.js +28 -0
  28. package/dist/controller/media-parser-controller.d.ts +3 -0
  29. package/dist/controller/media-parser-controller.js +15 -0
  30. package/dist/download-and-parse-media.js +2 -1
  31. package/dist/emit-available-info.js +1 -1
  32. package/dist/esm/index.mjs +430 -197
  33. package/dist/esm/node-writer.mjs +1 -2
  34. package/dist/esm/node.mjs +1 -2
  35. package/dist/esm/server-worker.mjs +46 -1
  36. package/dist/esm/universal.mjs +2 -4
  37. package/dist/esm/web.mjs +1 -2
  38. package/dist/esm/worker-server-entry.mjs +466 -204
  39. package/dist/esm/worker-web-entry.mjs +465 -202
  40. package/dist/esm/worker.mjs +46 -1
  41. package/dist/{forward-controller.d.ts → forward-controller-pause-resume-abort.d.ts} +1 -1
  42. package/dist/{forward-controller.js → forward-controller-pause-resume-abort.js} +3 -3
  43. package/dist/get-audio-codec.js +2 -2
  44. package/dist/get-dimensions.js +1 -1
  45. package/dist/get-duration.js +3 -2
  46. package/dist/get-fps.js +1 -0
  47. package/dist/get-is-hdr.js +2 -2
  48. package/dist/get-keyframes.js +1 -1
  49. package/dist/get-seeking-byte.d.ts +7 -5
  50. package/dist/get-seeking-byte.js +13 -12
  51. package/dist/{get-seeking-info.d.ts → get-seeking-hints.d.ts} +7 -3
  52. package/dist/get-seeking-hints.js +35 -0
  53. package/dist/get-tracks.d.ts +4 -4
  54. package/dist/get-tracks.js +8 -6
  55. package/dist/get-video-codec.js +2 -2
  56. package/dist/has-all-info.js +1 -1
  57. package/dist/index.d.ts +31 -3
  58. package/dist/internal-parse-media.js +16 -1
  59. package/dist/iterator/buffer-iterator.js +3 -4
  60. package/dist/metadata/metadata-from-iso.js +1 -0
  61. package/dist/options.d.ts +2 -0
  62. package/dist/parse-media-on-worker-entry.js +51 -1
  63. package/dist/parse-media.js +2 -1
  64. package/dist/samples-from-moof.d.ts +2 -2
  65. package/dist/samples-from-moof.js +5 -8
  66. package/dist/seeking-hints.d.ts +39 -0
  67. package/dist/set-seeking-hints.d.ts +6 -0
  68. package/dist/set-seeking-hints.js +27 -0
  69. package/dist/state/has-tracks-section.js +3 -1
  70. package/dist/state/iso-base-media/cached-sample-positions.js +1 -1
  71. package/dist/state/iso-base-media/iso-state.d.ts +18 -2
  72. package/dist/state/iso-base-media/iso-state.js +4 -0
  73. package/dist/state/iso-base-media/lazy-mfra-load.d.ts +3 -0
  74. package/dist/state/iso-base-media/lazy-mfra-load.js +13 -0
  75. package/dist/state/iso-base-media/moov-box.d.ts +7 -2
  76. package/dist/state/iso-base-media/moov-box.js +1 -1
  77. package/dist/state/iso-base-media/precomputed-moof.d.ts +11 -0
  78. package/dist/state/iso-base-media/precomputed-moof.js +28 -0
  79. package/dist/state/iso-base-media/precomputed-tfra.d.ts +6 -0
  80. package/dist/state/iso-base-media/precomputed-tfra.js +17 -0
  81. package/dist/state/keyframes.d.ts +2 -0
  82. package/dist/state/keyframes.js +17 -9
  83. package/dist/state/matroska/lazy-cues-fetch.d.ts +7 -1
  84. package/dist/state/matroska/lazy-cues-fetch.js +21 -0
  85. package/dist/state/matroska/webm.d.ts +7 -0
  86. package/dist/state/matroska/webm.js +9 -1
  87. package/dist/state/parser-state.d.ts +31 -3
  88. package/dist/state/samples-observed/slow-duration-fps.js +0 -3
  89. package/dist/state/transport-stream/observed-pes-header.d.ts +2 -0
  90. package/dist/state/transport-stream/observed-pes-header.js +22 -12
  91. package/dist/state/transport-stream/pts-start-offset.d.ts +4 -1
  92. package/dist/state/transport-stream/pts-start-offset.js +1 -1
  93. package/dist/state/transport-stream/transport-stream.d.ts +5 -1
  94. package/dist/version.d.ts +1 -1
  95. package/dist/version.js +1 -1
  96. package/dist/with-resolvers.d.ts +5 -0
  97. package/dist/work-on-seek-request.js +8 -5
  98. package/dist/worker/{forward-controller.js → forward-controller-to-worker.js} +17 -0
  99. package/dist/worker/serialize-error.d.ts +6 -1
  100. package/dist/worker/serialize-error.js +2 -1
  101. package/dist/worker/worker-types.d.ts +12 -2
  102. package/dist/worker-server.js +16 -5
  103. package/package.json +3 -3
  104. package/dist/containers/iso-base-media/get-mfra-atom.d.ts +0 -9
  105. package/dist/containers/iso-base-media/get-mfra-atom.js +0 -12
  106. package/dist/containers/iso-base-media/get-seeking-from-mp4.d.ts +0 -11
  107. package/dist/containers/iso-base-media/get-seeking-info-from-mp4.js +0 -25
  108. package/dist/containers/iso-base-media/mfra/mfra.d.ts +0 -2
  109. package/dist/containers/iso-base-media/mfra/mfra.js +0 -11
  110. package/dist/containers/transport-stream/get-seeking-info.d.ts +0 -4
  111. package/dist/containers/transport-stream/get-seeking-info.js +0 -17
  112. package/dist/containers/transport-stream/next-pes-header-store.d.ts +0 -6
  113. package/dist/containers/transport-stream/next-pes-header-store.js +0 -18
  114. package/dist/containers/transport-stream/start-offset.d.ts +0 -4
  115. package/dist/containers/transport-stream/start-offset.js +0 -13
  116. package/dist/containers/wav/get-seeking-info.d.ts +0 -7
  117. package/dist/containers/wav/get-seeking-info.js +0 -20
  118. package/dist/containers/wav/parse-video-section.d.ts +0 -5
  119. package/dist/containers/wav/parse-video-section.js +0 -41
  120. package/dist/containers/webm/cues/fetch-web-cues.d.ts +0 -12
  121. package/dist/containers/webm/cues/fetch-web-cues.js +0 -32
  122. package/dist/containers/webm/cues/format-cues.d.ts +0 -8
  123. package/dist/containers/webm/cues/format-cues.js +0 -41
  124. package/dist/containers/webm/cues/get-seeking-byte.d.ts +0 -14
  125. package/dist/containers/webm/cues/get-seeking-byte.js +0 -91
  126. package/dist/containers/webm/fetch-web-cues.d.ts +0 -12
  127. package/dist/containers/webm/fetch-web-cues.js +0 -29
  128. package/dist/containers/webm/get-seeking-byte.d.ts +0 -14
  129. package/dist/containers/webm/get-seeking-byte.js +0 -91
  130. package/dist/containers/webm/get-seeking-info.d.ts +0 -3
  131. package/dist/containers/webm/get-seeking-info.js +0 -17
  132. package/dist/containers/webm/seek/get-seeking-info.d.ts +0 -3
  133. package/dist/containers/webm/seek/get-seeking-info.js +0 -17
  134. package/dist/emitter.d.ts +0 -33
  135. package/dist/emitter.js +0 -65
  136. package/dist/get-sample-positions-from-lpcm.d.ts +0 -3
  137. package/dist/get-sample-positions-from-lpcm.js +0 -46
  138. package/dist/get-seeking-info.js +0 -35
  139. package/dist/media-parser-controller.d.ts +0 -21
  140. package/dist/media-parser-controller.js +0 -38
  141. package/dist/pause-signal.d.ts +0 -11
  142. package/dist/pause-signal.js +0 -38
  143. package/dist/readers/state/aac-state.d.ts +0 -13
  144. package/dist/readers/state/aac-state.js +0 -17
  145. package/dist/readers/state/can-skip-tracks.d.ts +0 -16
  146. package/dist/readers/state/can-skip-tracks.js +0 -60
  147. package/dist/readers/state/current-reader.d.ts +0 -6
  148. package/dist/readers/state/current-reader.js +0 -13
  149. package/dist/readers/state/emitted-fields.d.ts +0 -1
  150. package/dist/readers/state/emitted-fields.js +0 -37
  151. package/dist/readers/state/flac-state.d.ts +0 -4
  152. package/dist/readers/state/flac-state.js +0 -13
  153. package/dist/readers/state/has-tracks-section.d.ts +0 -14
  154. package/dist/readers/state/has-tracks-section.js +0 -37
  155. package/dist/readers/state/images.d.ts +0 -9
  156. package/dist/readers/state/images.js +0 -14
  157. package/dist/readers/state/iso-base-media/cached-sample-positions.d.ts +0 -12
  158. package/dist/readers/state/iso-base-media/cached-sample-positions.js +0 -46
  159. package/dist/readers/state/iso-base-media/iso-state.d.ts +0 -24
  160. package/dist/readers/state/iso-base-media/iso-state.js +0 -20
  161. package/dist/readers/state/iso-base-media/lazy-mfra-load.d.ts +0 -13
  162. package/dist/readers/state/iso-base-media/lazy-mfra-load.js +0 -29
  163. package/dist/readers/state/iso-base-media/moov-box.d.ts +0 -5
  164. package/dist/readers/state/iso-base-media/moov-box.js +0 -13
  165. package/dist/readers/state/keyframes.d.ts +0 -6
  166. package/dist/readers/state/keyframes.js +0 -15
  167. package/dist/readers/state/m3u-state.d.ts +0 -44
  168. package/dist/readers/state/m3u-state.js +0 -124
  169. package/dist/readers/state/may-skip-video-data.d.ts +0 -4
  170. package/dist/readers/state/may-skip-video-data.js +0 -18
  171. package/dist/readers/state/mp3.d.ts +0 -15
  172. package/dist/readers/state/mp3.js +0 -19
  173. package/dist/readers/state/need-samples-for-fields.d.ts +0 -6
  174. package/dist/readers/state/need-samples-for-fields.js +0 -39
  175. package/dist/readers/state/parser-state.d.ts +0 -252
  176. package/dist/readers/state/parser-state.js +0 -124
  177. package/dist/readers/state/riff.d.ts +0 -10
  178. package/dist/readers/state/riff.js +0 -32
  179. package/dist/readers/state/sample-callbacks.d.ts +0 -44
  180. package/dist/readers/state/sample-callbacks.js +0 -118
  181. package/dist/readers/state/seek-infinite-loop.d.ts +0 -5
  182. package/dist/readers/state/seek-infinite-loop.js +0 -22
  183. package/dist/readers/state/slow-duration-fps.d.ts +0 -11
  184. package/dist/readers/state/slow-duration-fps.js +0 -86
  185. package/dist/readers/state/structure.d.ts +0 -15
  186. package/dist/readers/state/structure.js +0 -78
  187. package/dist/readers/state/timings.d.ts +0 -8
  188. package/dist/readers/state/timings.js +0 -13
  189. package/dist/readers/state/transport-stream/last-emitted-sample.d.ts +0 -6
  190. package/dist/readers/state/transport-stream/last-emitted-sample.js +0 -16
  191. package/dist/readers/state/transport-stream/next-pes-header-store.d.ts +0 -6
  192. package/dist/readers/state/transport-stream/next-pes-header-store.js +0 -18
  193. package/dist/readers/state/transport-stream/start-offset.d.ts +0 -4
  194. package/dist/readers/state/transport-stream/start-offset.js +0 -13
  195. package/dist/readers/state/transport-stream/transport-stream.d.ts +0 -19
  196. package/dist/readers/state/transport-stream/transport-stream.js +0 -25
  197. package/dist/readers/state/video-section.d.ts +0 -33
  198. package/dist/readers/state/video-section.js +0 -65
  199. package/dist/readers/state/webm.d.ts +0 -28
  200. package/dist/readers/state/webm.js +0 -109
  201. package/dist/seek-signal.d.ts +0 -19
  202. package/dist/seek-signal.js +0 -24
  203. package/dist/seeking-info.d.ts +0 -31
  204. package/dist/server-worker.module.d.ts +0 -2
  205. package/dist/server-worker.module.js +0 -12
  206. package/dist/state/matroska/lazy-seek-fetch.d.ts +0 -1
  207. package/dist/state/matroska/lazy-seek-fetch.js +0 -5
  208. package/dist/state/matroska.d.ts +0 -0
  209. package/dist/state/matroska.js +0 -1
  210. package/dist/state/slow-duration-fps.d.ts +0 -11
  211. package/dist/state/slow-duration-fps.js +0 -86
  212. package/dist/state/transport-stream/start-offset.d.ts +0 -5
  213. package/dist/state/transport-stream/start-offset.js +0 -13
  214. package/dist/state/transport-stream.d.ts +0 -8
  215. package/dist/state/transport-stream.js +0 -11
  216. package/dist/state/uml.d.ts +0 -32
  217. package/dist/state/uml.js +0 -52
  218. package/dist/state/webm.d.ts +0 -30
  219. package/dist/state/webm.js +0 -109
  220. package/dist/state/work-on-seek-request-options.d.ts +0 -3
  221. package/dist/state/work-on-seek-request-options.js +0 -26
  222. package/dist/worker.module.d.ts +0 -4
  223. package/dist/worker.module.js +0 -12
  224. /package/dist/{seeking-info.js → seeking-hints.js} +0 -0
  225. /package/dist/worker/{forward-controller.d.ts → forward-controller-to-worker.d.ts} +0 -0
@@ -41,8 +41,7 @@ var createContent = (filename) => {
41
41
  let writPromise = Promise.resolve();
42
42
  const remove = async () => {
43
43
  Log.verbose(logLevel, "Removing file", filename);
44
- await fs.promises.unlink(filename).catch(() => {
45
- });
44
+ await fs.promises.unlink(filename).catch(() => {});
46
45
  };
47
46
  await remove();
48
47
  if (!fs.existsSync(filename)) {
package/dist/esm/node.mjs CHANGED
@@ -19,8 +19,7 @@ var nodeReadContent = ({ src, range, controller }) => {
19
19
  const reader = Readable.toWeb(stream).getReader();
20
20
  if (controller) {
21
21
  controller._internals.signal.addEventListener("abort", () => {
22
- reader.cancel().catch(() => {
23
- });
22
+ reader.cancel().catch(() => {});
24
23
  }, { once: true });
25
24
  }
26
25
  return Promise.resolve({
@@ -235,6 +235,7 @@ var parseMediaOnWorkerImplementation = async ({ controller, reader, ...params },
235
235
  throw new Error(`\`reader\` should not be provided to \`${apiName}\`. If you want to use it in the browser, use parseMediaOnWorker(). If you also want to read files from the file system, use parseMediaOnServerWorker().`);
236
236
  }
237
237
  post(worker, convertToWorkerPayload(params));
238
+ let workerTerminated = false;
238
239
  const { promise, resolve, reject } = withResolvers();
239
240
  const onAbort = () => {
240
241
  post(worker, { type: "request-abort" });
@@ -249,15 +250,48 @@ var parseMediaOnWorkerImplementation = async ({ controller, reader, ...params },
249
250
  post(worker, { type: "request-seek", payload: seek });
250
251
  controller?._internals.seekSignal.clearSeekIfStillSame(seek);
251
252
  };
253
+ const seekingHintPromises = [];
254
+ let finalSeekingHints = null;
255
+ controller?._internals.attachSeekingHintResolution(() => {
256
+ if (finalSeekingHints) {
257
+ return Promise.resolve(finalSeekingHints);
258
+ }
259
+ if (workerTerminated) {
260
+ return Promise.reject(new Error("Worker terminated"));
261
+ }
262
+ const prom = withResolvers();
263
+ post(worker, { type: "request-get-seeking-hints" });
264
+ seekingHintPromises.push(prom);
265
+ return prom.promise;
266
+ });
252
267
  const callbacks = {};
253
268
  function onMessage(message) {
254
269
  const data = message.data;
255
270
  if (data.type === "response-done") {
256
271
  resolve(data.payload);
272
+ if (data.seekingHints) {
273
+ finalSeekingHints = data.seekingHints;
274
+ for (const prom of seekingHintPromises) {
275
+ prom.resolve(finalSeekingHints);
276
+ }
277
+ }
278
+ return;
257
279
  }
258
280
  if (data.type === "response-error") {
259
281
  cleanup();
260
- reject(deserializeError(data));
282
+ const error = deserializeError(data);
283
+ reject(error);
284
+ if (data.errorName === "MediaParserAbortError") {
285
+ finalSeekingHints = data.seekingHints;
286
+ for (const prom of seekingHintPromises) {
287
+ prom.resolve(finalSeekingHints);
288
+ }
289
+ } else {
290
+ for (const prom of seekingHintPromises) {
291
+ prom.reject(error);
292
+ }
293
+ }
294
+ return;
261
295
  }
262
296
  if (data.type === "response-on-callback-request") {
263
297
  Promise.resolve().then(async () => {
@@ -430,7 +464,17 @@ var parseMediaOnWorkerImplementation = async ({ controller, reader, ...params },
430
464
  nonce: data.nonce
431
465
  });
432
466
  });
467
+ return;
468
+ }
469
+ if (data.type === "response-get-seeking-hints") {
470
+ const firstPromise = seekingHintPromises.shift();
471
+ if (!firstPromise) {
472
+ throw new Error("No seeking hint promise found");
473
+ }
474
+ firstPromise.resolve(data.payload);
475
+ return;
433
476
  }
477
+ throw new Error(`Unknown response type: ${JSON.stringify(data)}`);
434
478
  }
435
479
  worker.addEventListener("message", onMessage);
436
480
  controller?.addEventListener("abort", onAbort);
@@ -443,6 +487,7 @@ var parseMediaOnWorkerImplementation = async ({ controller, reader, ...params },
443
487
  controller?.removeEventListener("resume", onResume);
444
488
  controller?.removeEventListener("pause", onPause);
445
489
  controller?.removeEventListener("seek", onSeek);
490
+ workerTerminated = true;
446
491
  worker.terminate();
447
492
  }
448
493
  controller?._internals.markAsReadyToEmitEvents();
@@ -151,8 +151,7 @@ var fetchReadContent = async ({
151
151
  });
152
152
  if (controller) {
153
153
  controller._internals.signal.addEventListener("abort", () => {
154
- reader.reader.cancel().catch(() => {
155
- });
154
+ reader.reader.cancel().catch(() => {});
156
155
  }, { once: true });
157
156
  }
158
157
  return {
@@ -202,8 +201,7 @@ var nodeReadContent = ({ src, range, controller }) => {
202
201
  const reader = Readable.toWeb(stream).getReader();
203
202
  if (controller) {
204
203
  controller._internals.signal.addEventListener("abort", () => {
205
- reader.cancel().catch(() => {
206
- });
204
+ reader.cancel().catch(() => {});
207
205
  }, { once: true });
208
206
  }
209
207
  return Promise.resolve({
package/dist/esm/web.mjs CHANGED
@@ -151,8 +151,7 @@ var fetchReadContent = async ({
151
151
  });
152
152
  if (controller) {
153
153
  controller._internals.signal.addEventListener("abort", () => {
154
- reader.reader.cancel().catch(() => {
155
- });
154
+ reader.reader.cancel().catch(() => {});
156
155
  }, { once: true });
157
156
  }
158
157
  return {