@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.
- package/dist/add-avc-profile-to-track.d.ts +2 -2
- package/dist/add-avc-profile-to-track.js +7 -1
- package/dist/codec-data.d.ts +29 -0
- package/dist/codec-data.js +2 -0
- package/dist/containers/aac/parse-aac.js +2 -3
- package/dist/containers/avc/color.d.ts +6 -6
- package/dist/containers/avc/color.js +53 -27
- package/dist/containers/avc/interpret-sps.d.ts +2 -2
- package/dist/containers/avc/interpret-sps.js +2 -2
- package/dist/containers/flac/parse-streaminfo.js +2 -3
- package/dist/containers/iso-base-media/collect-sample-positions-from-moof-boxes.d.ts +1 -1
- package/dist/containers/iso-base-media/color-to-webcodecs-colors.d.ts +2 -0
- package/dist/containers/iso-base-media/color-to-webcodecs-colors.js +12 -0
- package/dist/containers/iso-base-media/find-keyframe-before-time.d.ts +2 -2
- package/dist/containers/iso-base-media/find-track-to-seek.d.ts +5 -5
- package/dist/containers/iso-base-media/find-track-to-seek.js +18 -2
- package/dist/containers/iso-base-media/get-actual-number-of-channels.d.ts +3 -2
- package/dist/containers/iso-base-media/get-actual-number-of-channels.js +14 -3
- package/dist/containers/iso-base-media/get-children.d.ts +2 -2
- package/dist/containers/iso-base-media/get-keyframes.js +11 -2
- package/dist/containers/iso-base-media/get-mfra-seeking-box.d.ts +4 -4
- package/dist/containers/iso-base-media/get-moov-atom.js +1 -1
- package/dist/containers/iso-base-media/get-seeking-byte-from-fragmented-mp4.d.ts +9 -5
- package/dist/containers/iso-base-media/get-seeking-byte-from-fragmented-mp4.js +17 -4
- package/dist/containers/iso-base-media/get-seeking-byte.d.ts +2 -2
- package/dist/containers/iso-base-media/get-seeking-byte.js +5 -8
- package/dist/containers/iso-base-media/make-track.d.ts +2 -2
- package/dist/containers/iso-base-media/make-track.js +18 -17
- package/dist/containers/iso-base-media/mfra/find-best-segment-from-tfra.d.ts +2 -2
- package/dist/containers/iso-base-media/mfra/get-mfra-atom.d.ts +4 -4
- package/dist/containers/iso-base-media/mfra/get-mfro-atom.d.ts +4 -4
- package/dist/containers/iso-base-media/moov/moov.d.ts +2 -2
- package/dist/containers/iso-base-media/process-box.d.ts +5 -5
- package/dist/containers/iso-base-media/stsd/mebx.d.ts +2 -2
- package/dist/containers/iso-base-media/stsd/samples.d.ts +3 -3
- package/dist/containers/iso-base-media/stsd/stsd.d.ts +2 -2
- package/dist/containers/iso-base-media/trak/trak.d.ts +2 -2
- package/dist/containers/iso-base-media/traversal.d.ts +1 -0
- package/dist/containers/iso-base-media/traversal.js +13 -1
- package/dist/containers/m3u/after-manifest-fetch.d.ts +6 -6
- package/dist/containers/m3u/after-manifest-fetch.js +1 -1
- package/dist/containers/m3u/fetch-m3u8-stream.d.ts +2 -2
- package/dist/containers/m3u/first-sample-in-m3u-chunk.d.ts +3 -3
- package/dist/containers/m3u/first-sample-in-m3u-chunk.js +2 -8
- package/dist/containers/m3u/get-seeking-byte.d.ts +3 -3
- package/dist/containers/m3u/get-streams.d.ts +6 -6
- package/dist/containers/m3u/get-streams.js +9 -9
- package/dist/containers/m3u/parse-stream-inf.js +3 -3
- package/dist/containers/m3u/process-m3u-chunk.js +3 -3
- package/dist/containers/m3u/run-over-m3u.d.ts +2 -2
- package/dist/containers/m3u/sample-sorter.d.ts +7 -7
- package/dist/containers/m3u/types.d.ts +3 -3
- package/dist/containers/mp3/parse-mpeg-header.js +2 -3
- package/dist/containers/mp3/seek/audio-sample-from-cbr.d.ts +2 -2
- package/dist/containers/riff/get-tracks-from-avi.d.ts +4 -9
- package/dist/containers/riff/get-tracks-from-avi.js +19 -20
- package/dist/containers/riff/parse-video-section.js +1 -1
- package/dist/containers/riff/seek/fetch-idx1.d.ts +4 -4
- package/dist/containers/transport-stream/get-tracks.d.ts +2 -2
- package/dist/containers/transport-stream/get-tracks.js +1 -5
- package/dist/containers/transport-stream/handle-aac-packet.d.ts +4 -4
- package/dist/containers/transport-stream/handle-aac-packet.js +5 -4
- package/dist/containers/transport-stream/handle-avc-packet.d.ts +4 -4
- package/dist/containers/transport-stream/handle-avc-packet.js +10 -4
- package/dist/containers/transport-stream/process-audio.d.ts +5 -5
- package/dist/containers/transport-stream/process-stream-buffers.d.ts +8 -8
- package/dist/containers/transport-stream/process-video.d.ts +5 -5
- package/dist/containers/wav/parse-fmt.js +2 -3
- package/dist/containers/webm/color.d.ts +2 -2
- package/dist/containers/webm/color.js +6 -25
- package/dist/containers/webm/get-ready-tracks.d.ts +3 -3
- package/dist/containers/webm/get-sample-from-block.d.ts +7 -7
- package/dist/containers/webm/make-track.d.ts +3 -3
- package/dist/containers/webm/make-track.js +53 -21
- package/dist/containers/webm/parse-webm-header.js +5 -0
- package/dist/containers/webm/seek/fetch-web-cues.d.ts +4 -4
- package/dist/containers/webm/seek/get-seeking-byte.d.ts +2 -2
- package/dist/containers/webm/segments.d.ts +2 -2
- package/dist/containers/webm/segments.js +1 -1
- package/dist/containers/webm/state-for-processing.d.ts +5 -5
- package/dist/containers/webm/traversal.js +2 -1
- package/dist/controller/emitter.d.ts +2 -3
- package/dist/controller/seek-signal.d.ts +3 -9
- package/dist/controller/seek-signal.js +2 -2
- package/dist/convert-audio-or-video-sample.d.ts +4 -4
- package/dist/download-and-parse-media.js +1 -1
- package/dist/emit-available-info.js +9 -9
- package/dist/errors.d.ts +4 -18
- package/dist/errors.js +1 -15
- package/dist/esm/index.mjs +654 -544
- package/dist/esm/node.mjs +63 -51
- package/dist/esm/server-worker.mjs +13 -34
- package/dist/esm/universal.mjs +63 -51
- package/dist/esm/worker-server-entry.mjs +500 -388
- package/dist/esm/worker-web-entry.mjs +437 -337
- package/dist/esm/worker.mjs +14 -35
- package/dist/fields.d.ts +2 -2
- package/dist/file-types/bmp.d.ts +2 -2
- package/dist/file-types/detect-file-type.d.ts +2 -1
- package/dist/file-types/detect-file-type.js +1 -6
- package/dist/file-types/gif.d.ts +2 -0
- package/dist/file-types/gif.js +18 -0
- package/dist/file-types/index.js +4 -2
- package/dist/file-types/png.d.ts +2 -2
- package/dist/file-types/webp.d.ts +2 -2
- package/dist/get-audio-codec.d.ts +3 -4
- package/dist/get-audio-codec.js +44 -23
- package/dist/get-dimensions.d.ts +2 -2
- package/dist/get-dimensions.js +6 -3
- package/dist/get-duration.js +6 -7
- package/dist/get-fields-from-callbacks.js +1 -1
- package/dist/get-is-hdr.js +6 -5
- package/dist/get-sample-aspect-ratio.d.ts +5 -5
- package/dist/get-seeking-byte.d.ts +2 -2
- package/dist/get-tracks.d.ts +34 -44
- package/dist/get-tracks.js +6 -46
- package/dist/get-video-codec.d.ts +4 -3
- package/dist/get-video-codec.js +6 -6
- package/dist/has-all-info.js +1 -1
- package/dist/index.d.ts +114 -55
- package/dist/index.js +6 -4
- package/dist/init-video.js +4 -11
- package/dist/internal-parse-media.js +1 -1
- package/dist/log.d.ts +6 -6
- package/dist/metadata/get-metadata.js +6 -4
- package/dist/options.d.ts +19 -23
- package/dist/parse-loop.js +2 -2
- package/dist/parse-media-on-worker-entry.js +13 -5
- package/dist/parse-media.js +1 -1
- package/dist/perform-seek.d.ts +4 -4
- package/dist/readers/from-fetch.d.ts +2 -2
- package/dist/readers/from-node.d.ts +2 -2
- package/dist/readers/from-node.js +64 -55
- package/dist/readers/from-web-file.d.ts +2 -2
- package/dist/readers/reader.d.ts +5 -5
- package/dist/readers/universal.d.ts +2 -2
- package/dist/readers/web.d.ts +2 -2
- package/dist/register-track.d.ts +12 -12
- package/dist/remotion-license-acknowledge.d.ts +2 -2
- package/dist/seek-backwards.d.ts +4 -4
- package/dist/seek-forwards.d.ts +4 -4
- package/dist/state/can-skip-tracks.js +1 -1
- package/dist/state/emitted-fields.js +1 -1
- package/dist/state/has-tracks-section.d.ts +5 -5
- package/dist/state/iso-base-media/cached-sample-positions.d.ts +3 -3
- package/dist/state/iso-base-media/cached-sample-positions.js +16 -7
- package/dist/state/iso-base-media/iso-state.d.ts +4 -4
- package/dist/state/iso-base-media/lazy-mfra-load.d.ts +4 -4
- package/dist/state/m3u-state.d.ts +11 -11
- package/dist/state/matroska/lazy-cues-fetch.d.ts +4 -4
- package/dist/state/matroska/webm.d.ts +4 -4
- package/dist/state/matroska/webm.js +1 -1
- package/dist/state/may-skip-video-data.d.ts +1 -0
- package/dist/state/may-skip-video-data.js +23 -2
- package/dist/state/need-samples-for-fields.js +1 -1
- package/dist/state/parser-state.d.ts +67 -38
- package/dist/state/riff/lazy-idx1-fetch.d.ts +4 -4
- package/dist/state/riff/sample-counter.d.ts +3 -3
- package/dist/state/riff.d.ts +6 -6
- package/dist/state/sample-callbacks.d.ts +12 -12
- package/dist/state/sample-callbacks.js +2 -2
- package/dist/state/samples-observed/slow-duration-fps.d.ts +3 -3
- package/dist/state/transport-stream/last-emitted-sample.d.ts +3 -3
- package/dist/state/transport-stream/transport-stream.d.ts +2 -2
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/webcodec-sample-types.d.ts +21 -10
- package/dist/work-on-seek-request.d.ts +4 -4
- package/dist/work-on-seek-request.js +40 -43
- package/dist/worker/serialize-error.d.ts +2 -2
- package/dist/worker/serialize-error.js +7 -25
- package/dist/worker/worker-types.d.ts +22 -24
- package/dist/worker-server.d.ts +2 -2
- package/dist/worker-server.js +5 -5
- package/dist/writers/writer.d.ts +2 -2
- package/package.json +3 -3
- package/dist/containers/iso-base-media/sample-positions.d.ts +0 -25
- package/dist/containers/iso-base-media/sample-positions.js +0 -37
- package/dist/containers/iso-base-media/turn-sample-positions-into-array.d.ts +0 -19
- package/dist/containers/iso-base-media/turn-sample-positions-into-array.js +0 -73
- package/dist/containers/m3u/iterate-over-segment-files.d.ts +0 -21
- package/dist/containers/m3u/iterate-over-segment-files.js +0 -132
- package/dist/containers/mp3/audio-sample-from-cbr.d.ts +0 -11
- package/dist/containers/mp3/audio-sample-from-cbr.js +0 -35
- package/dist/emit-audio-sample.d.ts +0 -12
- 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;
|