@remotion/media-parser 4.0.298 → 4.0.301

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 (186) hide show
  1. package/dist/add-avc-profile-to-track.d.ts +2 -2
  2. package/dist/add-avc-profile-to-track.js +7 -1
  3. package/dist/codec-data.d.ts +29 -0
  4. package/dist/codec-data.js +2 -0
  5. package/dist/containers/aac/parse-aac.js +2 -3
  6. package/dist/containers/avc/color.d.ts +6 -6
  7. package/dist/containers/avc/color.js +53 -27
  8. package/dist/containers/avc/interpret-sps.d.ts +2 -2
  9. package/dist/containers/avc/interpret-sps.js +2 -2
  10. package/dist/containers/flac/parse-streaminfo.js +2 -3
  11. package/dist/containers/iso-base-media/collect-sample-positions-from-moof-boxes.d.ts +1 -1
  12. package/dist/containers/iso-base-media/color-to-webcodecs-colors.d.ts +2 -0
  13. package/dist/containers/iso-base-media/color-to-webcodecs-colors.js +12 -0
  14. package/dist/containers/iso-base-media/find-keyframe-before-time.d.ts +2 -2
  15. package/dist/containers/iso-base-media/find-track-to-seek.d.ts +5 -5
  16. package/dist/containers/iso-base-media/find-track-to-seek.js +18 -2
  17. package/dist/containers/iso-base-media/get-actual-number-of-channels.d.ts +3 -2
  18. package/dist/containers/iso-base-media/get-actual-number-of-channels.js +14 -3
  19. package/dist/containers/iso-base-media/get-children.d.ts +2 -2
  20. package/dist/containers/iso-base-media/get-keyframes.js +11 -2
  21. package/dist/containers/iso-base-media/get-mfra-seeking-box.d.ts +4 -4
  22. package/dist/containers/iso-base-media/get-moov-atom.js +1 -1
  23. package/dist/containers/iso-base-media/get-seeking-byte-from-fragmented-mp4.d.ts +9 -5
  24. package/dist/containers/iso-base-media/get-seeking-byte-from-fragmented-mp4.js +17 -4
  25. package/dist/containers/iso-base-media/get-seeking-byte.d.ts +2 -2
  26. package/dist/containers/iso-base-media/get-seeking-byte.js +5 -8
  27. package/dist/containers/iso-base-media/make-track.d.ts +2 -2
  28. package/dist/containers/iso-base-media/make-track.js +18 -17
  29. package/dist/containers/iso-base-media/mfra/find-best-segment-from-tfra.d.ts +2 -2
  30. package/dist/containers/iso-base-media/mfra/get-mfra-atom.d.ts +4 -4
  31. package/dist/containers/iso-base-media/mfra/get-mfro-atom.d.ts +4 -4
  32. package/dist/containers/iso-base-media/moov/moov.d.ts +2 -2
  33. package/dist/containers/iso-base-media/process-box.d.ts +5 -5
  34. package/dist/containers/iso-base-media/stsd/mebx.d.ts +2 -2
  35. package/dist/containers/iso-base-media/stsd/samples.d.ts +3 -3
  36. package/dist/containers/iso-base-media/stsd/stsd.d.ts +2 -2
  37. package/dist/containers/iso-base-media/trak/trak.d.ts +2 -2
  38. package/dist/containers/iso-base-media/traversal.d.ts +1 -0
  39. package/dist/containers/iso-base-media/traversal.js +13 -1
  40. package/dist/containers/m3u/after-manifest-fetch.d.ts +6 -6
  41. package/dist/containers/m3u/after-manifest-fetch.js +1 -1
  42. package/dist/containers/m3u/fetch-m3u8-stream.d.ts +2 -2
  43. package/dist/containers/m3u/first-sample-in-m3u-chunk.d.ts +3 -3
  44. package/dist/containers/m3u/first-sample-in-m3u-chunk.js +2 -8
  45. package/dist/containers/m3u/get-seeking-byte.d.ts +3 -3
  46. package/dist/containers/m3u/get-streams.d.ts +6 -6
  47. package/dist/containers/m3u/get-streams.js +9 -9
  48. package/dist/containers/m3u/parse-stream-inf.js +3 -3
  49. package/dist/containers/m3u/process-m3u-chunk.js +3 -3
  50. package/dist/containers/m3u/run-over-m3u.d.ts +2 -2
  51. package/dist/containers/m3u/sample-sorter.d.ts +7 -7
  52. package/dist/containers/m3u/types.d.ts +3 -3
  53. package/dist/containers/mp3/parse-mpeg-header.js +2 -3
  54. package/dist/containers/mp3/seek/audio-sample-from-cbr.d.ts +2 -2
  55. package/dist/containers/riff/get-tracks-from-avi.d.ts +4 -9
  56. package/dist/containers/riff/get-tracks-from-avi.js +19 -20
  57. package/dist/containers/riff/parse-video-section.js +1 -1
  58. package/dist/containers/riff/seek/fetch-idx1.d.ts +4 -4
  59. package/dist/containers/transport-stream/get-tracks.d.ts +2 -2
  60. package/dist/containers/transport-stream/get-tracks.js +1 -5
  61. package/dist/containers/transport-stream/handle-aac-packet.d.ts +4 -4
  62. package/dist/containers/transport-stream/handle-aac-packet.js +5 -4
  63. package/dist/containers/transport-stream/handle-avc-packet.d.ts +4 -4
  64. package/dist/containers/transport-stream/handle-avc-packet.js +10 -4
  65. package/dist/containers/transport-stream/process-audio.d.ts +5 -5
  66. package/dist/containers/transport-stream/process-stream-buffers.d.ts +8 -8
  67. package/dist/containers/transport-stream/process-video.d.ts +5 -5
  68. package/dist/containers/wav/parse-fmt.js +2 -3
  69. package/dist/containers/webm/color.d.ts +2 -2
  70. package/dist/containers/webm/color.js +6 -25
  71. package/dist/containers/webm/get-ready-tracks.d.ts +3 -3
  72. package/dist/containers/webm/get-sample-from-block.d.ts +7 -7
  73. package/dist/containers/webm/make-track.d.ts +3 -3
  74. package/dist/containers/webm/make-track.js +53 -21
  75. package/dist/containers/webm/parse-webm-header.js +5 -0
  76. package/dist/containers/webm/seek/fetch-web-cues.d.ts +4 -4
  77. package/dist/containers/webm/seek/get-seeking-byte.d.ts +2 -2
  78. package/dist/containers/webm/segments.d.ts +2 -2
  79. package/dist/containers/webm/segments.js +1 -1
  80. package/dist/containers/webm/state-for-processing.d.ts +5 -5
  81. package/dist/containers/webm/traversal.js +2 -1
  82. package/dist/controller/emitter.d.ts +2 -3
  83. package/dist/controller/seek-signal.d.ts +3 -9
  84. package/dist/controller/seek-signal.js +2 -2
  85. package/dist/convert-audio-or-video-sample.d.ts +4 -4
  86. package/dist/download-and-parse-media.js +1 -1
  87. package/dist/emit-available-info.js +9 -9
  88. package/dist/errors.d.ts +4 -18
  89. package/dist/errors.js +1 -15
  90. package/dist/esm/index.mjs +654 -544
  91. package/dist/esm/node.mjs +63 -51
  92. package/dist/esm/server-worker.mjs +13 -34
  93. package/dist/esm/universal.mjs +63 -51
  94. package/dist/esm/worker-server-entry.mjs +500 -388
  95. package/dist/esm/worker-web-entry.mjs +437 -337
  96. package/dist/esm/worker.mjs +14 -35
  97. package/dist/fields.d.ts +2 -2
  98. package/dist/file-types/bmp.d.ts +2 -2
  99. package/dist/file-types/detect-file-type.d.ts +2 -1
  100. package/dist/file-types/detect-file-type.js +1 -6
  101. package/dist/file-types/gif.d.ts +2 -0
  102. package/dist/file-types/gif.js +18 -0
  103. package/dist/file-types/index.js +4 -2
  104. package/dist/file-types/png.d.ts +2 -2
  105. package/dist/file-types/webp.d.ts +2 -2
  106. package/dist/get-audio-codec.d.ts +3 -4
  107. package/dist/get-audio-codec.js +44 -23
  108. package/dist/get-dimensions.d.ts +2 -2
  109. package/dist/get-dimensions.js +6 -3
  110. package/dist/get-duration.js +6 -7
  111. package/dist/get-fields-from-callbacks.js +1 -1
  112. package/dist/get-is-hdr.js +6 -5
  113. package/dist/get-sample-aspect-ratio.d.ts +5 -5
  114. package/dist/get-seeking-byte.d.ts +2 -2
  115. package/dist/get-tracks.d.ts +34 -44
  116. package/dist/get-tracks.js +6 -46
  117. package/dist/get-video-codec.d.ts +4 -3
  118. package/dist/get-video-codec.js +6 -6
  119. package/dist/has-all-info.js +1 -1
  120. package/dist/index.d.ts +114 -55
  121. package/dist/index.js +6 -4
  122. package/dist/init-video.js +4 -11
  123. package/dist/internal-parse-media.js +1 -1
  124. package/dist/log.d.ts +6 -6
  125. package/dist/metadata/get-metadata.js +6 -4
  126. package/dist/options.d.ts +19 -23
  127. package/dist/parse-loop.js +2 -2
  128. package/dist/parse-media-on-worker-entry.js +13 -5
  129. package/dist/parse-media.js +1 -1
  130. package/dist/perform-seek.d.ts +4 -4
  131. package/dist/readers/from-fetch.d.ts +2 -2
  132. package/dist/readers/from-node.d.ts +2 -2
  133. package/dist/readers/from-node.js +64 -55
  134. package/dist/readers/from-web-file.d.ts +2 -2
  135. package/dist/readers/reader.d.ts +5 -5
  136. package/dist/readers/universal.d.ts +2 -2
  137. package/dist/readers/web.d.ts +2 -2
  138. package/dist/register-track.d.ts +12 -12
  139. package/dist/remotion-license-acknowledge.d.ts +2 -2
  140. package/dist/seek-backwards.d.ts +4 -4
  141. package/dist/seek-forwards.d.ts +4 -4
  142. package/dist/state/can-skip-tracks.js +1 -1
  143. package/dist/state/emitted-fields.js +1 -1
  144. package/dist/state/has-tracks-section.d.ts +5 -5
  145. package/dist/state/iso-base-media/cached-sample-positions.d.ts +3 -3
  146. package/dist/state/iso-base-media/cached-sample-positions.js +16 -7
  147. package/dist/state/iso-base-media/iso-state.d.ts +4 -4
  148. package/dist/state/iso-base-media/lazy-mfra-load.d.ts +4 -4
  149. package/dist/state/m3u-state.d.ts +11 -11
  150. package/dist/state/matroska/lazy-cues-fetch.d.ts +4 -4
  151. package/dist/state/matroska/webm.d.ts +4 -4
  152. package/dist/state/matroska/webm.js +1 -1
  153. package/dist/state/may-skip-video-data.d.ts +1 -0
  154. package/dist/state/may-skip-video-data.js +23 -2
  155. package/dist/state/need-samples-for-fields.js +1 -1
  156. package/dist/state/parser-state.d.ts +67 -38
  157. package/dist/state/riff/lazy-idx1-fetch.d.ts +4 -4
  158. package/dist/state/riff/sample-counter.d.ts +3 -3
  159. package/dist/state/riff.d.ts +6 -6
  160. package/dist/state/sample-callbacks.d.ts +12 -12
  161. package/dist/state/sample-callbacks.js +2 -2
  162. package/dist/state/samples-observed/slow-duration-fps.d.ts +3 -3
  163. package/dist/state/transport-stream/last-emitted-sample.d.ts +3 -3
  164. package/dist/state/transport-stream/transport-stream.d.ts +2 -2
  165. package/dist/version.d.ts +1 -1
  166. package/dist/version.js +1 -1
  167. package/dist/webcodec-sample-types.d.ts +21 -10
  168. package/dist/work-on-seek-request.d.ts +4 -4
  169. package/dist/work-on-seek-request.js +40 -43
  170. package/dist/worker/serialize-error.d.ts +2 -2
  171. package/dist/worker/serialize-error.js +7 -25
  172. package/dist/worker/worker-types.d.ts +22 -24
  173. package/dist/worker-server.d.ts +2 -2
  174. package/dist/worker-server.js +5 -5
  175. package/dist/writers/writer.d.ts +2 -2
  176. package/package.json +3 -3
  177. package/dist/containers/iso-base-media/sample-positions.d.ts +0 -25
  178. package/dist/containers/iso-base-media/sample-positions.js +0 -37
  179. package/dist/containers/iso-base-media/turn-sample-positions-into-array.d.ts +0 -19
  180. package/dist/containers/iso-base-media/turn-sample-positions-into-array.js +0 -73
  181. package/dist/containers/m3u/iterate-over-segment-files.d.ts +0 -21
  182. package/dist/containers/m3u/iterate-over-segment-files.js +0 -132
  183. package/dist/containers/mp3/audio-sample-from-cbr.d.ts +0 -11
  184. package/dist/containers/mp3/audio-sample-from-cbr.js +0 -35
  185. package/dist/emit-audio-sample.d.ts +0 -12
  186. package/dist/emit-audio-sample.js +0 -11
@@ -1,132 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.iteratorOverSegmentFiles = void 0;
4
- const media_parser_controller_1 = require("../../controller/media-parser-controller");
5
- const forward_controller_pause_resume_abort_1 = require("../../forward-controller-pause-resume-abort");
6
- const parse_media_1 = require("../../parse-media");
7
- const with_resolvers_1 = require("../../with-resolvers");
8
- const get_chunks_1 = require("./get-chunks");
9
- const get_playlist_1 = require("./get-playlist");
10
- const iteratorOverSegmentFiles = async ({ structure, onVideoTrack, m3uState, onAudioTrack, onDoneWithTracks, playlistUrl, logLevel, parentController, onInitialProgress, readerInterface, prefetchCache, }) => {
11
- const playlist = (0, get_playlist_1.getPlaylist)(structure, playlistUrl);
12
- const chunks = (0, get_chunks_1.getChunks)(playlist);
13
- let resolver = onInitialProgress;
14
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
15
- let rejector = (_e) => { };
16
- for (const chunk of chunks) {
17
- resolver = onInitialProgress;
18
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
19
- rejector = (_e) => { };
20
- const childController = (0, media_parser_controller_1.mediaParserController)();
21
- const forwarded = (0, forward_controller_pause_resume_abort_1.forwardMediaParserControllerPauseResume)({
22
- childController,
23
- parentController,
24
- });
25
- const nextChunk = chunks[chunks.indexOf(chunk) + 1];
26
- if (nextChunk) {
27
- const nextChunkSource = readerInterface.createAdjacentFileSource(nextChunk.url, playlistUrl);
28
- readerInterface.preload({
29
- logLevel,
30
- range: null,
31
- src: nextChunkSource,
32
- prefetchCache,
33
- });
34
- }
35
- const makeContinuationFn = () => {
36
- return {
37
- continue() {
38
- const { promise, reject, resolve } = (0, with_resolvers_1.withResolvers)();
39
- resolver = resolve;
40
- rejector = reject;
41
- childController.resume();
42
- return promise;
43
- },
44
- abort() {
45
- childController.abort();
46
- },
47
- };
48
- };
49
- const isLastChunk = chunk === chunks[chunks.length - 1];
50
- await childController._internals.checkForAbortAndPause();
51
- const src = readerInterface.createAdjacentFileSource(chunk.url, playlistUrl);
52
- try {
53
- const mp4HeaderSegment = m3uState.getMp4HeaderSegment(playlistUrl);
54
- const data = await (0, parse_media_1.parseMedia)({
55
- src,
56
- acknowledgeRemotionLicense: true,
57
- logLevel,
58
- controller: childController,
59
- progressIntervalInMs: 0,
60
- onParseProgress: () => {
61
- childController.pause();
62
- resolver(makeContinuationFn());
63
- },
64
- fields: chunk.isHeader ? { structure: true } : undefined,
65
- onTracks: () => {
66
- if (!m3uState.hasEmittedDoneWithTracks(playlistUrl)) {
67
- m3uState.setHasEmittedDoneWithTracks(playlistUrl);
68
- onDoneWithTracks();
69
- return null;
70
- }
71
- },
72
- onAudioTrack: onAudioTrack === null
73
- ? null
74
- : async ({ track }) => {
75
- const callbackOrFalse = m3uState.hasEmittedAudioTrack(playlistUrl);
76
- if (callbackOrFalse === false) {
77
- const callback = await onAudioTrack(track);
78
- if (!callback) {
79
- m3uState.setHasEmittedAudioTrack(playlistUrl, null);
80
- return null;
81
- }
82
- m3uState.setHasEmittedAudioTrack(playlistUrl, callback);
83
- return (sample) => {
84
- return callback(sample);
85
- };
86
- }
87
- return callbackOrFalse;
88
- },
89
- onVideoTrack: onVideoTrack === null
90
- ? null
91
- : async ({ track }) => {
92
- const callbackOrFalse = m3uState.hasEmittedVideoTrack(playlistUrl);
93
- if (callbackOrFalse === false) {
94
- const callback = await onVideoTrack({
95
- ...track,
96
- m3uStreamFormat: chunk.isHeader || mp4HeaderSegment ? 'mp4' : 'ts',
97
- });
98
- if (!callback) {
99
- m3uState.setHasEmittedVideoTrack(playlistUrl, null);
100
- return null;
101
- }
102
- m3uState.setHasEmittedVideoTrack(playlistUrl, callback);
103
- return (sample) => {
104
- return callback(sample);
105
- };
106
- }
107
- return callbackOrFalse;
108
- },
109
- reader: readerInterface,
110
- mp4HeaderSegment,
111
- makeSamplesStartAtZero: false,
112
- });
113
- if (chunk.isHeader) {
114
- if (data.structure.type !== 'iso-base-media') {
115
- throw new Error('Expected an mp4 file');
116
- }
117
- m3uState.setMp4HeaderSegment(playlistUrl, data.structure);
118
- }
119
- }
120
- catch (e) {
121
- rejector(e);
122
- throw e;
123
- }
124
- forwarded.cleanup();
125
- if (!isLastChunk) {
126
- childController.pause();
127
- resolver(makeContinuationFn());
128
- }
129
- }
130
- resolver(null);
131
- };
132
- exports.iteratorOverSegmentFiles = iteratorOverSegmentFiles;
@@ -1,11 +0,0 @@
1
- import type { ParserState } from '../../state/parser-state';
2
- import type { AudioOrVideoSample } from '../../webcodec-sample-types';
3
- export declare const getAudioSampleFromCbr: ({ bitrateInKbit, initialOffset, layer, sampleRate, samplesPerFrame, data, state, }: {
4
- bitrateInKbit: number;
5
- layer: number;
6
- samplesPerFrame: number;
7
- sampleRate: number;
8
- initialOffset: number;
9
- data: Uint8Array;
10
- state: ParserState;
11
- }) => AudioOrVideoSample;
@@ -1,35 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getAudioSampleFromCbr = void 0;
4
- const get_frame_length_1 = require("./get-frame-length");
5
- const getAudioSampleFromCbr = ({ bitrateInKbit, initialOffset, layer, sampleRate, samplesPerFrame, data, state, }) => {
6
- const avgLength = (0, get_frame_length_1.getAverageMpegFrameLength)({
7
- bitrateKbit: bitrateInKbit,
8
- layer,
9
- samplesPerFrame,
10
- samplingFrequency: sampleRate,
11
- });
12
- const mp3Info = state.mp3.getMp3Info();
13
- if (!mp3Info) {
14
- throw new Error('No MP3 info');
15
- }
16
- const nthFrame = Math.round((initialOffset - state.mediaSection.getMediaSectionAssertOnlyOne().start) /
17
- avgLength);
18
- const durationInSeconds = samplesPerFrame / sampleRate;
19
- const timeInSeconds = (nthFrame * samplesPerFrame) / sampleRate;
20
- const timestamp = Math.round(timeInSeconds * 1000000);
21
- const duration = Math.round(durationInSeconds * 1000000);
22
- const audioSample = {
23
- data,
24
- cts: timestamp,
25
- dts: timestamp,
26
- duration,
27
- offset: initialOffset,
28
- timescale: 1000000,
29
- timestamp,
30
- trackId: 0,
31
- type: 'key',
32
- };
33
- return audioSample;
34
- };
35
- exports.getAudioSampleFromCbr = getAudioSampleFromCbr;
@@ -1,12 +0,0 @@
1
- import type { SampleCallbacks } from './state/sample-callbacks';
2
- import type { AudioOrVideoSample } from './webcodec-sample-types';
3
- export declare const emitAudioSample: ({ trackId, audioSample, callbacks, }: {
4
- trackId: number;
5
- audioSample: AudioOrVideoSample;
6
- callbacks: SampleCallbacks;
7
- }) => Promise<void>;
8
- export declare const emitVideoSample: ({ trackId, videoSample, callbacks, }: {
9
- trackId: number;
10
- videoSample: AudioOrVideoSample;
11
- callbacks: SampleCallbacks;
12
- }) => Promise<void>;
@@ -1,11 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.emitVideoSample = exports.emitAudioSample = void 0;
4
- const emitAudioSample = async ({ trackId, audioSample, callbacks, }) => {
5
- await callbacks.onAudioSample(trackId, audioSample);
6
- };
7
- exports.emitAudioSample = emitAudioSample;
8
- const emitVideoSample = async ({ trackId, videoSample, callbacks, }) => {
9
- await callbacks.onVideoSample(trackId, videoSample);
10
- };
11
- exports.emitVideoSample = emitVideoSample;