@remotion/media-parser 4.0.287 → 4.0.289
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/containers/aac/get-seeking-byte.d.ts +6 -0
- package/dist/containers/aac/get-seeking-byte.js +30 -0
- package/dist/containers/aac/parse-aac.js +23 -18
- package/dist/containers/aac/seeking-hints.d.ts +13 -0
- package/dist/containers/aac/seeking-hints.js +14 -0
- package/dist/containers/flac/get-channel-count.d.ts +1 -1
- package/dist/containers/flac/get-seeking-byte.d.ts +5 -0
- package/dist/containers/flac/get-seeking-byte.js +30 -0
- package/dist/containers/flac/parse-flac-frame.js +18 -17
- package/dist/containers/flac/parse-flac.js +5 -25
- package/dist/containers/flac/parse-meta.d.ts +6 -0
- package/dist/containers/flac/parse-meta.js +31 -0
- package/dist/containers/flac/seeking-hints.d.ts +18 -0
- package/dist/containers/flac/seeking-hints.js +20 -0
- package/dist/containers/iso-base-media/collect-sample-positions-from-trak.js +7 -5
- package/dist/containers/iso-base-media/get-children.d.ts +2 -1
- package/dist/containers/iso-base-media/get-children.js +2 -1
- package/dist/containers/iso-base-media/get-mfra-seeking-box.js +1 -0
- package/dist/containers/iso-base-media/get-moov-atom.js +2 -1
- package/dist/containers/iso-base-media/get-video-codec-from-iso-track.d.ts +1 -1
- package/dist/containers/iso-base-media/mdat/mdat.js +33 -35
- package/dist/containers/iso-base-media/mdat/postprocess-bytes.d.ts +5 -0
- package/dist/containers/iso-base-media/mdat/postprocess-bytes.js +25 -0
- package/dist/containers/iso-base-media/moov/moov.d.ts +2 -1
- package/dist/containers/iso-base-media/moov/moov.js +2 -1
- package/dist/containers/iso-base-media/parse-boxes.js +1 -0
- package/dist/containers/iso-base-media/process-box.d.ts +2 -1
- package/dist/containers/iso-base-media/process-box.js +10 -4
- package/dist/containers/iso-base-media/seeking-hints.js +6 -5
- package/dist/containers/iso-base-media/should-group-audio-samples.d.ts +6 -0
- package/dist/containers/iso-base-media/should-group-audio-samples.js +16 -0
- package/dist/containers/iso-base-media/stsd/mebx.d.ts +2 -1
- package/dist/containers/iso-base-media/stsd/mebx.js +2 -1
- package/dist/containers/iso-base-media/stsd/samples.d.ts +4 -2
- package/dist/containers/iso-base-media/stsd/samples.js +7 -2
- package/dist/containers/iso-base-media/stsd/stsd.d.ts +2 -1
- package/dist/containers/iso-base-media/stsd/stsd.js +2 -1
- package/dist/containers/iso-base-media/trak/trak.d.ts +2 -1
- package/dist/containers/iso-base-media/trak/trak.js +2 -1
- package/dist/containers/mp3/audio-sample-from-cbr.d.ts +11 -0
- package/dist/containers/mp3/audio-sample-from-cbr.js +35 -0
- package/dist/containers/mp3/get-duration.js +33 -6
- package/dist/containers/mp3/get-seeking-byte.d.ts +6 -0
- package/dist/containers/mp3/get-seeking-byte.js +49 -0
- package/dist/containers/mp3/parse-mp3.js +9 -0
- package/dist/containers/mp3/parse-mpeg-header.js +74 -263
- package/dist/containers/mp3/parse-packet-header.d.ts +30 -0
- package/dist/containers/mp3/parse-packet-header.js +258 -0
- package/dist/containers/mp3/parse-xing.d.ts +19 -0
- package/dist/containers/mp3/parse-xing.js +120 -0
- package/dist/containers/mp3/seek/audio-sample-from-cbr.d.ts +16 -0
- package/dist/containers/mp3/seek/audio-sample-from-cbr.js +35 -0
- package/dist/containers/mp3/seek/audio-sample-from-vbr.d.ts +8 -0
- package/dist/containers/mp3/seek/audio-sample-from-vbr.js +47 -0
- package/dist/containers/mp3/seek/get-approximate-byte-from-bitrate.d.ts +9 -0
- package/dist/containers/mp3/seek/get-approximate-byte-from-bitrate.js +28 -0
- package/dist/containers/mp3/seek/get-byte-from-observed-samples.d.ts +6 -0
- package/dist/containers/mp3/seek/get-byte-from-observed-samples.js +27 -0
- package/dist/containers/mp3/seek/get-seek-point-from-xing.d.ts +7 -0
- package/dist/containers/mp3/seek/get-seek-point-from-xing.js +29 -0
- package/dist/containers/mp3/seek/wait-until-syncword.d.ts +4 -0
- package/dist/containers/mp3/seek/wait-until-syncword.js +25 -0
- package/dist/containers/mp3/seeking-hints.d.ts +24 -0
- package/dist/containers/mp3/seeking-hints.js +21 -0
- package/dist/containers/riff/expect-riff-box.d.ts +6 -1
- package/dist/containers/riff/expect-riff-box.js +37 -27
- package/dist/containers/riff/get-seeking-byte.d.ts +8 -0
- package/dist/containers/riff/get-seeking-byte.js +56 -0
- package/dist/containers/riff/has-index.d.ts +2 -0
- package/dist/containers/riff/has-index.js +8 -0
- package/dist/containers/riff/parse-avih.js +3 -0
- package/dist/containers/riff/parse-idx1.d.ts +6 -0
- package/dist/containers/riff/parse-idx1.js +47 -0
- package/dist/containers/riff/parse-list-box.d.ts +4 -2
- package/dist/containers/riff/parse-list-box.js +8 -3
- package/dist/containers/riff/parse-movi.js +35 -40
- package/dist/containers/riff/parse-riff-body.js +5 -1
- package/dist/containers/riff/parse-riff-box.d.ts +4 -2
- package/dist/containers/riff/parse-riff-box.js +10 -3
- package/dist/containers/riff/riff-box.d.ts +14 -1
- package/dist/containers/riff/seek/fetch-idx1.d.ts +15 -0
- package/dist/containers/riff/seek/fetch-idx1.js +38 -0
- package/dist/containers/riff/seeking-hints.d.ts +23 -0
- package/dist/containers/riff/seeking-hints.js +36 -0
- package/dist/containers/transport-stream/handle-aac-packet.js +4 -8
- package/dist/containers/transport-stream/handle-avc-packet.js +4 -8
- package/dist/containers/wav/get-duration-from-wav.js +1 -10
- package/dist/containers/wav/parse-media-section.js +14 -18
- package/dist/containers/webm/parse-ebml.js +3 -16
- package/dist/containers/webm/seek/seeking-hints.js +1 -1
- package/dist/emit-available-info.js +8 -8
- package/dist/esm/index.mjs +1549 -403
- package/dist/esm/worker-server-entry.mjs +1543 -397
- package/dist/esm/worker-web-entry.mjs +1543 -397
- package/dist/find-last-keyframe.d.ts +5 -0
- package/dist/find-last-keyframe.js +18 -0
- package/dist/get-audio-codec.d.ts +1 -0
- package/dist/get-audio-codec.js +13 -2
- package/dist/get-sample-positions-from-mp4.d.ts +4 -1
- package/dist/get-sample-positions-from-mp4.js +3 -1
- package/dist/get-sample-positions.d.ts +2 -0
- package/dist/get-sample-positions.js +2 -0
- package/dist/get-seeking-byte.d.ts +3 -1
- package/dist/get-seeking-byte.js +45 -7
- package/dist/get-seeking-hints.d.ts +12 -1
- package/dist/get-seeking-hints.js +40 -9
- package/dist/index.d.ts +56 -8
- package/dist/internal-parse-media.js +6 -0
- package/dist/parse-loop.js +15 -0
- package/dist/samples-from-moof.js +2 -0
- package/dist/seeking-hints.d.ts +5 -1
- package/dist/set-seeking-hints.js +28 -8
- package/dist/state/aac-state.d.ts +6 -0
- package/dist/state/aac-state.js +7 -2
- package/dist/state/audio-sample-map.d.ts +11 -0
- package/dist/state/audio-sample-map.js +21 -0
- package/dist/state/flac-state.d.ts +6 -0
- package/dist/state/flac-state.js +3 -0
- package/dist/state/keyframes.d.ts +1 -2
- package/dist/state/keyframes.js +2 -2
- package/dist/state/matroska/lazy-cues-fetch.js +13 -1
- package/dist/state/parser-state.d.ts +52 -6
- package/dist/state/parser-state.js +6 -6
- package/dist/state/riff/lazy-idx1-fetch.d.ts +30 -0
- package/dist/state/riff/lazy-idx1-fetch.js +63 -0
- package/dist/state/riff/riff-keyframes.d.ts +10 -0
- package/dist/state/riff/riff-keyframes.js +26 -0
- package/dist/state/riff/sample-counter.d.ts +12 -0
- package/dist/state/riff/sample-counter.js +52 -0
- package/dist/state/riff.d.ts +41 -1
- package/dist/state/riff.js +12 -1
- package/dist/state/sample-callbacks.d.ts +3 -4
- package/dist/state/sample-callbacks.js +3 -16
- package/dist/state/samples-observed/slow-duration-fps.d.ts +3 -1
- package/dist/state/samples-observed/slow-duration-fps.js +7 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/work-on-seek-request.d.ts +10 -0
- package/dist/work-on-seek-request.js +20 -2
- package/package.json +3 -3
|
@@ -7,5 +7,7 @@ export declare const samplesObservedState: () => {
|
|
|
7
7
|
getSlowNumberOfFrames: () => number;
|
|
8
8
|
getAudioBitrate: () => number | null;
|
|
9
9
|
getVideoBitrate: () => number | null;
|
|
10
|
+
getLastSampleObserved: () => boolean;
|
|
11
|
+
setLastSampleObserved: () => void;
|
|
10
12
|
};
|
|
11
|
-
export type
|
|
13
|
+
export type SamplesObservedState = ReturnType<typeof samplesObservedState>;
|
|
@@ -6,6 +6,7 @@ const samplesObservedState = () => {
|
|
|
6
6
|
let largestVideoSample;
|
|
7
7
|
let smallestAudioSample;
|
|
8
8
|
let largestAudioSample;
|
|
9
|
+
let lastSampleObserved = false;
|
|
9
10
|
const videoSamples = new Map();
|
|
10
11
|
const audioSamples = new Map();
|
|
11
12
|
const getSlowVideoDurationInSeconds = () => {
|
|
@@ -76,6 +77,10 @@ const samplesObservedState = () => {
|
|
|
76
77
|
const videoSizesInBytes = Array.from(videoSamples.values()).reduce((acc, size) => acc + size, 0);
|
|
77
78
|
return (videoSizesInBytes * 8) / videoDuration;
|
|
78
79
|
};
|
|
80
|
+
const getLastSampleObserved = () => lastSampleObserved;
|
|
81
|
+
const setLastSampleObserved = () => {
|
|
82
|
+
lastSampleObserved = true;
|
|
83
|
+
};
|
|
79
84
|
return {
|
|
80
85
|
addVideoSample,
|
|
81
86
|
addAudioSample,
|
|
@@ -84,6 +89,8 @@ const samplesObservedState = () => {
|
|
|
84
89
|
getSlowNumberOfFrames,
|
|
85
90
|
getAudioBitrate,
|
|
86
91
|
getVideoBitrate,
|
|
92
|
+
getLastSampleObserved,
|
|
93
|
+
setLastSampleObserved,
|
|
87
94
|
};
|
|
88
95
|
};
|
|
89
96
|
exports.samplesObservedState = samplesObservedState;
|
package/dist/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const VERSION = "4.0.
|
|
1
|
+
export declare const VERSION = "4.0.289";
|
package/dist/version.js
CHANGED
|
@@ -5,12 +5,17 @@ import type { LogLevel } from './log';
|
|
|
5
5
|
import type { ParseMediaMode, ParseMediaSrc } from './options';
|
|
6
6
|
import type { IsoBaseMediaStructure } from './parse-result';
|
|
7
7
|
import type { ReaderInterface } from './readers/reader';
|
|
8
|
+
import type { AacState } from './state/aac-state';
|
|
8
9
|
import type { CurrentReader } from './state/current-reader';
|
|
10
|
+
import type { FlacState } from './state/flac-state';
|
|
9
11
|
import type { TracksState } from './state/has-tracks-section';
|
|
10
12
|
import type { IsoBaseMediaState } from './state/iso-base-media/iso-state';
|
|
11
13
|
import type { KeyframesState } from './state/keyframes';
|
|
12
14
|
import type { WebmState } from './state/matroska/webm';
|
|
15
|
+
import type { Mp3State } from './state/mp3';
|
|
13
16
|
import type { ParserState } from './state/parser-state';
|
|
17
|
+
import type { RiffState } from './state/riff';
|
|
18
|
+
import type { SamplesObservedState } from './state/samples-observed/slow-duration-fps';
|
|
14
19
|
import type { SeekInfiniteLoop } from './state/seek-infinite-loop';
|
|
15
20
|
import type { StructureState } from './state/structure';
|
|
16
21
|
import type { TransportStreamState } from './state/transport-stream/transport-stream';
|
|
@@ -35,6 +40,11 @@ export type WorkOnSeekRequestOptions = {
|
|
|
35
40
|
tracksState: TracksState;
|
|
36
41
|
webmState: WebmState;
|
|
37
42
|
keyframes: KeyframesState;
|
|
43
|
+
flacState: FlacState;
|
|
44
|
+
samplesObserved: SamplesObservedState;
|
|
45
|
+
riffState: RiffState;
|
|
46
|
+
mp3State: Mp3State;
|
|
47
|
+
aacState: AacState;
|
|
38
48
|
};
|
|
39
49
|
export declare const getWorkOnSeekRequestOptions: (state: ParserState) => WorkOnSeekRequestOptions;
|
|
40
50
|
export declare const workOnSeekRequest: (options: WorkOnSeekRequestOptions) => Promise<void>;
|
|
@@ -5,7 +5,7 @@ const get_seeking_byte_1 = require("./get-seeking-byte");
|
|
|
5
5
|
const get_seeking_hints_1 = require("./get-seeking-hints");
|
|
6
6
|
const log_1 = require("./log");
|
|
7
7
|
const perform_seek_1 = require("./perform-seek");
|
|
8
|
-
const turnSeekIntoByte = async ({ seek, mediaSectionState, logLevel, iterator, structureState, mp4HeaderSegment, isoState, transportStream, tracksState, webmState, keyframes, }) => {
|
|
8
|
+
const turnSeekIntoByte = async ({ seek, mediaSectionState, logLevel, iterator, structureState, mp4HeaderSegment, isoState, transportStream, tracksState, webmState, keyframes, flacState, samplesObserved, riffState, mp3State, contentLength, aacState, }) => {
|
|
9
9
|
const mediaSections = mediaSectionState.getMediaSections();
|
|
10
10
|
if (mediaSections.length === 0) {
|
|
11
11
|
log_1.Log.trace(logLevel, 'No media sections defined, cannot seek yet');
|
|
@@ -18,6 +18,8 @@ const turnSeekIntoByte = async ({ seek, mediaSectionState, logLevel, iterator, s
|
|
|
18
18
|
throw new Error(`Cannot seek to a negative time: ${JSON.stringify(seek)}`);
|
|
19
19
|
}
|
|
20
20
|
const seekingHints = (0, get_seeking_hints_1.getSeekingHints)({
|
|
21
|
+
riffState,
|
|
22
|
+
samplesObserved,
|
|
21
23
|
structureState,
|
|
22
24
|
mp4HeaderSegment,
|
|
23
25
|
mediaSectionState,
|
|
@@ -26,6 +28,10 @@ const turnSeekIntoByte = async ({ seek, mediaSectionState, logLevel, iterator, s
|
|
|
26
28
|
tracksState,
|
|
27
29
|
keyframesState: keyframes,
|
|
28
30
|
webmState,
|
|
31
|
+
flacState,
|
|
32
|
+
mp3State,
|
|
33
|
+
contentLength,
|
|
34
|
+
aacState,
|
|
29
35
|
});
|
|
30
36
|
if (!seekingHints) {
|
|
31
37
|
log_1.Log.trace(logLevel, 'No seeking info, cannot seek yet');
|
|
@@ -44,6 +50,7 @@ const turnSeekIntoByte = async ({ seek, mediaSectionState, logLevel, iterator, s
|
|
|
44
50
|
mediaSection: mediaSectionState,
|
|
45
51
|
mp4HeaderSegment,
|
|
46
52
|
structure: structureState,
|
|
53
|
+
riffState,
|
|
47
54
|
});
|
|
48
55
|
return seekingByte;
|
|
49
56
|
}
|
|
@@ -76,11 +83,16 @@ const getWorkOnSeekRequestOptions = (state) => {
|
|
|
76
83
|
tracksState: state.callbacks.tracks,
|
|
77
84
|
webmState: state.webm,
|
|
78
85
|
keyframes: state.keyframes,
|
|
86
|
+
flacState: state.flac,
|
|
87
|
+
samplesObserved: state.samplesObserved,
|
|
88
|
+
riffState: state.riff,
|
|
89
|
+
mp3State: state.mp3,
|
|
90
|
+
aacState: state.aac,
|
|
79
91
|
};
|
|
80
92
|
};
|
|
81
93
|
exports.getWorkOnSeekRequestOptions = getWorkOnSeekRequestOptions;
|
|
82
94
|
const workOnSeekRequest = async (options) => {
|
|
83
|
-
const { logLevel, controller, mediaSection, mp4HeaderSegment, isoState, iterator, structureState, src, contentLength, readerInterface, mode, seekInfiniteLoop, currentReader, discardReadBytes, fields, transportStream, tracksState, webmState, keyframes, } = options;
|
|
95
|
+
const { logLevel, controller, mediaSection, mp4HeaderSegment, isoState, iterator, structureState, src, contentLength, readerInterface, mode, seekInfiniteLoop, currentReader, discardReadBytes, fields, transportStream, tracksState, webmState, keyframes, flacState, samplesObserved, riffState, mp3State, aacState, } = options;
|
|
84
96
|
const seek = controller._internals.seekSignal.getSeek();
|
|
85
97
|
if (!seek) {
|
|
86
98
|
return;
|
|
@@ -98,6 +110,12 @@ const workOnSeekRequest = async (options) => {
|
|
|
98
110
|
tracksState,
|
|
99
111
|
webmState,
|
|
100
112
|
keyframes,
|
|
113
|
+
flacState,
|
|
114
|
+
samplesObserved,
|
|
115
|
+
riffState,
|
|
116
|
+
mp3State,
|
|
117
|
+
contentLength,
|
|
118
|
+
aacState,
|
|
101
119
|
});
|
|
102
120
|
log_1.Log.trace(logLevel, `Seek action: ${JSON.stringify(resolution)}`);
|
|
103
121
|
if (resolution.type === 'intermediary-seek') {
|
package/package.json
CHANGED
|
@@ -3,15 +3,15 @@
|
|
|
3
3
|
"url": "https://github.com/remotion-dev/remotion/tree/main/packages/media-parser"
|
|
4
4
|
},
|
|
5
5
|
"name": "@remotion/media-parser",
|
|
6
|
-
"version": "4.0.
|
|
6
|
+
"version": "4.0.289",
|
|
7
7
|
"main": "dist/index.js",
|
|
8
8
|
"sideEffects": false,
|
|
9
9
|
"devDependencies": {
|
|
10
10
|
"@types/wicg-file-system-access": "2023.10.5",
|
|
11
11
|
"eslint": "9.19.0",
|
|
12
12
|
"@types/bun": "1.2.8",
|
|
13
|
-
"@remotion/example-videos": "4.0.
|
|
14
|
-
"@remotion/eslint-config-internal": "4.0.
|
|
13
|
+
"@remotion/example-videos": "4.0.289",
|
|
14
|
+
"@remotion/eslint-config-internal": "4.0.289"
|
|
15
15
|
},
|
|
16
16
|
"publishConfig": {
|
|
17
17
|
"access": "public"
|