@remotion/media-parser 4.0.289 → 4.0.291
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/flac/get-channel-count.d.ts +1 -1
- package/dist/containers/iso-base-media/base-media-box.d.ts +0 -1
- package/dist/containers/iso-base-media/collect-sample-positions-from-moof-boxes.d.ts +4 -1
- package/dist/containers/iso-base-media/collect-sample-positions-from-moof-boxes.js +9 -5
- package/dist/containers/iso-base-media/find-keyframe-before-time.js +16 -11
- package/dist/containers/iso-base-media/find-track-to-seek.d.ts +14 -0
- package/dist/containers/iso-base-media/find-track-to-seek.js +39 -0
- package/dist/containers/iso-base-media/get-children.js +2 -2
- package/dist/containers/iso-base-media/get-keyframes.js +6 -1
- package/dist/containers/iso-base-media/get-mfra-seeking-box.d.ts +3 -1
- package/dist/containers/iso-base-media/get-mfra-seeking-box.js +5 -1
- package/dist/containers/iso-base-media/get-moov-atom.js +6 -3
- package/dist/containers/iso-base-media/get-sample-position-bounds.js +3 -1
- package/dist/containers/iso-base-media/get-sample-positions-from-track.js +1 -1
- package/dist/containers/iso-base-media/get-seeking-byte-from-fragmented-mp4.d.ts +14 -0
- package/dist/containers/iso-base-media/get-seeking-byte-from-fragmented-mp4.js +89 -0
- package/dist/containers/iso-base-media/get-seeking-byte.d.ts +3 -3
- package/dist/containers/iso-base-media/get-seeking-byte.js +32 -96
- package/dist/containers/iso-base-media/get-video-codec-from-iso-track.d.ts +1 -1
- package/dist/containers/iso-base-media/mdat/calculate-jump-marks.d.ts +6 -0
- package/dist/containers/iso-base-media/mdat/calculate-jump-marks.js +131 -0
- package/dist/containers/iso-base-media/mdat/mdat.d.ts +2 -2
- package/dist/containers/iso-base-media/mdat/mdat.js +18 -2
- package/dist/containers/iso-base-media/mfra/find-best-segment-from-tfra.d.ts +3 -3
- package/dist/containers/iso-base-media/mfra/find-best-segment-from-tfra.js +2 -2
- package/dist/containers/iso-base-media/mfra/get-mfra-atom.d.ts +5 -1
- package/dist/containers/iso-base-media/mfra/get-mfra-atom.js +3 -1
- package/dist/containers/iso-base-media/mfra/get-mfro-atom.d.ts +5 -1
- package/dist/containers/iso-base-media/mfra/get-mfro-atom.js +3 -1
- package/dist/containers/iso-base-media/parse-boxes.js +5 -2
- package/dist/containers/iso-base-media/process-box.d.ts +16 -5
- package/dist/containers/iso-base-media/process-box.js +206 -118
- package/dist/containers/iso-base-media/sample-positions.d.ts +25 -0
- package/dist/containers/iso-base-media/sample-positions.js +37 -0
- package/dist/containers/iso-base-media/seeking-hints.d.ts +1 -1
- package/dist/containers/iso-base-media/stsd/samples.js +1 -0
- package/dist/containers/iso-base-media/stsd/stsc.d.ts +1 -6
- package/dist/containers/iso-base-media/stsd/stsc.js +2 -5
- package/dist/containers/iso-base-media/stsd/stss.d.ts +1 -1
- package/dist/containers/iso-base-media/stsd/stss.js +2 -2
- package/dist/containers/iso-base-media/turn-sample-positions-into-array.d.ts +19 -0
- package/dist/containers/iso-base-media/turn-sample-positions-into-array.js +73 -0
- package/dist/containers/m3u/after-manifest-fetch.d.ts +5 -1
- package/dist/containers/m3u/after-manifest-fetch.js +3 -1
- package/dist/containers/m3u/first-sample-in-m3u-chunk.d.ts +13 -0
- package/dist/containers/m3u/first-sample-in-m3u-chunk.js +31 -0
- package/dist/containers/m3u/get-seeking-byte.d.ts +13 -0
- package/dist/containers/m3u/get-seeking-byte.js +32 -0
- package/dist/containers/m3u/get-streams.d.ts +1 -0
- package/dist/containers/m3u/get-streams.js +1 -0
- package/dist/containers/m3u/iterate-over-segment-files.d.ts +5 -3
- package/dist/containers/m3u/iterate-over-segment-files.js +11 -1
- package/dist/containers/m3u/parse-m3u-media-directive.js +1 -0
- package/dist/containers/m3u/parse-m3u.js +8 -0
- package/dist/containers/m3u/process-m3u-chunk.d.ts +12 -0
- package/dist/containers/m3u/process-m3u-chunk.js +274 -0
- package/dist/containers/m3u/run-over-m3u.js +7 -80
- package/dist/containers/m3u/sample-sorter.d.ts +1 -0
- package/dist/containers/m3u/sample-sorter.js +4 -1
- package/dist/containers/m3u/seek/get-chunk-to-seek-to.d.ts +5 -0
- package/dist/containers/m3u/seek/get-chunk-to-seek-to.js +14 -0
- package/dist/containers/m3u/seeking-hints.d.ts +2 -0
- package/dist/containers/m3u/seeking-hints.js +9 -0
- package/dist/containers/m3u/select-stream.d.ts +2 -1
- package/dist/containers/m3u/select-stream.js +7 -2
- package/dist/containers/m3u/types.d.ts +1 -0
- package/dist/containers/mp3/get-duration.d.ts +5 -0
- package/dist/containers/riff/seek/fetch-idx1.d.ts +3 -1
- package/dist/containers/riff/seek/fetch-idx1.js +3 -1
- package/dist/containers/transport-stream/handle-aac-packet.d.ts +2 -2
- package/dist/containers/transport-stream/handle-avc-packet.d.ts +2 -2
- package/dist/containers/transport-stream/process-audio.d.ts +2 -2
- package/dist/containers/transport-stream/process-stream-buffers.d.ts +3 -3
- package/dist/containers/transport-stream/process-video.d.ts +2 -2
- package/dist/containers/wav/get-duration-from-wav.d.ts +0 -1
- package/dist/containers/webm/get-sample-from-block.d.ts +12 -2
- package/dist/containers/webm/get-sample-from-block.js +40 -9
- package/dist/containers/webm/parse-ebml.js +28 -10
- package/dist/containers/webm/seek/fetch-web-cues.d.ts +3 -1
- package/dist/containers/webm/seek/fetch-web-cues.js +3 -1
- package/dist/containers/webm/state-for-processing.d.ts +2 -2
- package/dist/controller/media-parser-controller.d.ts +1 -1
- package/dist/controller/media-parser-controller.js +6 -2
- package/dist/controller/seek-signal.d.ts +1 -5
- package/dist/download-and-parse-media.js +1 -1
- package/dist/esm/index.mjs +1400 -611
- package/dist/esm/node.mjs +23 -3
- package/dist/esm/server-worker.mjs +8 -1
- package/dist/esm/universal.mjs +168 -15
- package/dist/esm/web.mjs +145 -13
- package/dist/esm/worker-server-entry.mjs +1467 -635
- package/dist/esm/worker-web-entry.mjs +1439 -634
- package/dist/esm/worker.mjs +8 -1
- package/dist/get-audio-codec.js +3 -0
- package/dist/get-duration.js +2 -1
- package/dist/get-fps.js +2 -1
- package/dist/get-sample-positions-from-mp4.js +10 -5
- package/dist/get-sample-positions.js +4 -4
- package/dist/get-seeking-byte.d.ts +5 -3
- package/dist/get-seeking-byte.js +19 -10
- package/dist/get-seeking-hints.d.ts +3 -3
- package/dist/get-seeking-hints.js +18 -13
- package/dist/get-tracks.d.ts +9 -1
- package/dist/get-tracks.js +13 -6
- package/dist/index.d.ts +21 -5
- package/dist/init-video.js +3 -2
- package/dist/internal-parse-media.js +13 -4
- package/dist/iterator/buffer-iterator.js +5 -3
- package/dist/metadata/metadata-from-iso.js +2 -1
- package/dist/options.d.ts +6 -1
- package/dist/parse-loop.js +22 -6
- package/dist/parse-media-on-worker-entry.js +1 -0
- package/dist/parse-media.js +1 -1
- package/dist/parse-result.d.ts +2 -2
- package/dist/perform-seek.d.ts +3 -1
- package/dist/perform-seek.js +3 -1
- package/dist/readers/fetch/get-body-and-reader.js +17 -2
- package/dist/readers/from-fetch.d.ts +17 -1
- package/dist/readers/from-fetch.js +68 -13
- package/dist/readers/from-node.js +24 -2
- package/dist/readers/from-web-file.js +3 -0
- package/dist/readers/reader.d.ts +19 -2
- package/dist/readers/universal.js +9 -0
- package/dist/readers/web.js +6 -0
- package/dist/register-track.d.ts +3 -3
- package/dist/seek-backwards.d.ts +3 -1
- package/dist/seek-backwards.js +4 -1
- package/dist/seek-forwards.d.ts +3 -1
- package/dist/seek-forwards.js +3 -1
- package/dist/seeking-hints.d.ts +4 -1
- package/dist/set-seeking-hints.js +4 -0
- package/dist/skip.d.ts +5 -0
- package/dist/skip.js +6 -1
- package/dist/state/can-skip-tracks.d.ts +1 -0
- package/dist/state/can-skip-tracks.js +10 -6
- package/dist/state/iso-base-media/cached-sample-positions.d.ts +15 -1
- package/dist/state/iso-base-media/cached-sample-positions.js +9 -4
- package/dist/state/iso-base-media/iso-state.d.ts +5 -1
- package/dist/state/iso-base-media/iso-state.js +2 -1
- package/dist/state/iso-base-media/lazy-mfra-load.d.ts +3 -1
- package/dist/state/iso-base-media/lazy-mfra-load.js +2 -1
- package/dist/state/keyframes.js +1 -0
- package/dist/state/m3u-state.d.ts +15 -4
- package/dist/state/m3u-state.js +20 -0
- package/dist/state/matroska/lazy-cues-fetch.d.ts +3 -1
- package/dist/state/matroska/lazy-cues-fetch.js +2 -1
- package/dist/state/matroska/webm.d.ts +3 -1
- package/dist/state/matroska/webm.js +2 -1
- package/dist/state/mp3.d.ts +16 -5
- package/dist/state/mp3.js +7 -5
- package/dist/state/parser-state.d.ts +31 -15
- package/dist/state/parser-state.js +19 -5
- package/dist/state/riff/lazy-idx1-fetch.d.ts +5 -3
- package/dist/state/riff/lazy-idx1-fetch.js +2 -1
- package/dist/state/riff.d.ts +5 -3
- package/dist/state/riff.js +2 -1
- package/dist/state/sample-callbacks.d.ts +3 -2
- package/dist/state/sample-callbacks.js +3 -3
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/work-on-seek-request.d.ts +6 -3
- package/dist/work-on-seek-request.js +13 -13
- package/dist/worker/forward-controller-to-worker.js +1 -1
- package/dist/worker/serialize-error.js +26 -3
- package/dist/worker/worker-types.d.ts +7 -1
- package/dist/worker-server.js +2 -2
- package/package.json +3 -3
package/dist/state/riff.d.ts
CHANGED
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
import type { MediaParserController } from '../controller/media-parser-controller';
|
|
2
|
+
import type { PrefetchCache } from '../fetch';
|
|
2
3
|
import type { LogLevel } from '../log';
|
|
3
4
|
import type { ParseMediaSrc } from '../options';
|
|
4
5
|
import type { ReaderInterface } from '../readers/reader';
|
|
5
6
|
import type { SpsAndPps } from './parser-state';
|
|
6
7
|
type AvcProfileInfoCallback = (profile: SpsAndPps) => Promise<void>;
|
|
7
|
-
export declare const riffSpecificState: ({ controller, logLevel, readerInterface, src, }: {
|
|
8
|
+
export declare const riffSpecificState: ({ controller, logLevel, readerInterface, src, prefetchCache, }: {
|
|
8
9
|
controller: MediaParserController;
|
|
9
10
|
logLevel: LogLevel;
|
|
10
11
|
readerInterface: ReaderInterface;
|
|
11
12
|
src: ParseMediaSrc;
|
|
13
|
+
prefetchCache: PrefetchCache;
|
|
12
14
|
}) => {
|
|
13
15
|
getAvcProfile: () => SpsAndPps | null;
|
|
14
16
|
onProfile: (profile: SpsAndPps) => Promise<void>;
|
|
@@ -29,10 +31,10 @@ export declare const riffSpecificState: ({ controller, logLevel, readerInterface
|
|
|
29
31
|
videoTrackIndex: number | null;
|
|
30
32
|
} | null;
|
|
31
33
|
setFromSeekingHints: (hints: import("../containers/riff/seeking-hints").RiffSeekingHints) => void;
|
|
32
|
-
waitForLoaded: () => Promise<
|
|
34
|
+
waitForLoaded: () => Promise<{
|
|
33
35
|
entries: import("../containers/riff/riff-box").Idx1Entry[];
|
|
34
36
|
videoTrackIndex: number | null;
|
|
35
|
-
}>;
|
|
37
|
+
}> | Promise<null>;
|
|
36
38
|
};
|
|
37
39
|
sampleCounter: {
|
|
38
40
|
onAudioSample: (trackId: number, audioSample: import("..").AudioOrVideoSample) => void;
|
package/dist/state/riff.js
CHANGED
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.riffSpecificState = void 0;
|
|
4
4
|
const lazy_idx1_fetch_1 = require("./riff/lazy-idx1-fetch");
|
|
5
5
|
const sample_counter_1 = require("./riff/sample-counter");
|
|
6
|
-
const riffSpecificState = ({ controller, logLevel, readerInterface, src, }) => {
|
|
6
|
+
const riffSpecificState = ({ controller, logLevel, readerInterface, src, prefetchCache, }) => {
|
|
7
7
|
let avcProfile = null;
|
|
8
8
|
let nextTrackIndex = 0;
|
|
9
9
|
const profileCallbacks = [];
|
|
@@ -22,6 +22,7 @@ const riffSpecificState = ({ controller, logLevel, readerInterface, src, }) => {
|
|
|
22
22
|
logLevel,
|
|
23
23
|
readerInterface,
|
|
24
24
|
src,
|
|
25
|
+
prefetchCache,
|
|
25
26
|
});
|
|
26
27
|
const sampleCounter = (0, sample_counter_1.riffSampleCounter)();
|
|
27
28
|
return {
|
|
@@ -7,7 +7,7 @@ import type { AudioOrVideoSample, OnAudioSample, OnVideoSample } from '../webcod
|
|
|
7
7
|
import { type KeyframesState } from './keyframes';
|
|
8
8
|
import type { SamplesObservedState } from './samples-observed/slow-duration-fps';
|
|
9
9
|
import type { StructureState } from './structure';
|
|
10
|
-
export declare const
|
|
10
|
+
export declare const callbacksState: ({ controller, hasAudioTrackHandlers, hasVideoTrackHandlers, fields, keyframes, emittedFields, samplesObserved, structure, src, seekSignal, logLevel, }: {
|
|
11
11
|
controller: MediaParserController;
|
|
12
12
|
hasAudioTrackHandlers: boolean;
|
|
13
13
|
hasVideoTrackHandlers: boolean;
|
|
@@ -24,6 +24,7 @@ export declare const sampleCallback: ({ controller, hasAudioTrackHandlers, hasVi
|
|
|
24
24
|
onAudioSample: (trackId: number, audioSample: AudioOrVideoSample) => Promise<void>;
|
|
25
25
|
onVideoSample: (trackId: number, videoSample: AudioOrVideoSample) => Promise<void>;
|
|
26
26
|
canSkipTracksState: {
|
|
27
|
+
doFieldsNeedTracks: () => boolean;
|
|
27
28
|
canSkipTracks: () => boolean;
|
|
28
29
|
};
|
|
29
30
|
registerAudioSampleCallback: (id: number, callback: OnAudioSample | null) => Promise<void>;
|
|
@@ -40,4 +41,4 @@ export declare const sampleCallback: ({ controller, hasAudioTrackHandlers, hasVi
|
|
|
40
41
|
hasAudioTrackHandlers: boolean;
|
|
41
42
|
hasVideoTrackHandlers: boolean;
|
|
42
43
|
};
|
|
43
|
-
export type
|
|
44
|
+
export type CallbacksState = ReturnType<typeof callbacksState>;
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.callbacksState = void 0;
|
|
4
4
|
const log_1 = require("../log");
|
|
5
5
|
const can_skip_tracks_1 = require("./can-skip-tracks");
|
|
6
6
|
const has_tracks_section_1 = require("./has-tracks-section");
|
|
7
7
|
const need_samples_for_fields_1 = require("./need-samples-for-fields");
|
|
8
|
-
const
|
|
8
|
+
const callbacksState = ({ controller, hasAudioTrackHandlers, hasVideoTrackHandlers, fields, keyframes, emittedFields, samplesObserved, structure, src, seekSignal, logLevel, }) => {
|
|
9
9
|
const videoSampleCallbacks = {};
|
|
10
10
|
const audioSampleCallbacks = {};
|
|
11
11
|
const queuedAudioSamples = {};
|
|
@@ -102,4 +102,4 @@ const sampleCallback = ({ controller, hasAudioTrackHandlers, hasVideoTrackHandle
|
|
|
102
102
|
hasVideoTrackHandlers,
|
|
103
103
|
};
|
|
104
104
|
};
|
|
105
|
-
exports.
|
|
105
|
+
exports.callbacksState = callbacksState;
|
package/dist/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const VERSION = "4.0.
|
|
1
|
+
export declare const VERSION = "4.0.291";
|
package/dist/version.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import type { MediaParserController } from './controller/media-parser-controller';
|
|
2
|
+
import type { PrefetchCache } from './fetch';
|
|
2
3
|
import type { AllOptions, ParseMediaFields } from './fields';
|
|
3
4
|
import type { BufferIterator } from './iterator/buffer-iterator';
|
|
4
5
|
import type { LogLevel } from './log';
|
|
5
|
-
import type { ParseMediaMode, ParseMediaSrc } from './options';
|
|
6
|
-
import type { IsoBaseMediaStructure } from './parse-result';
|
|
6
|
+
import type { M3uPlaylistContext, ParseMediaMode, ParseMediaSrc } from './options';
|
|
7
7
|
import type { ReaderInterface } from './readers/reader';
|
|
8
8
|
import type { AacState } from './state/aac-state';
|
|
9
9
|
import type { CurrentReader } from './state/current-reader';
|
|
@@ -11,6 +11,7 @@ import type { FlacState } from './state/flac-state';
|
|
|
11
11
|
import type { TracksState } from './state/has-tracks-section';
|
|
12
12
|
import type { IsoBaseMediaState } from './state/iso-base-media/iso-state';
|
|
13
13
|
import type { KeyframesState } from './state/keyframes';
|
|
14
|
+
import type { M3uState } from './state/m3u-state';
|
|
14
15
|
import type { WebmState } from './state/matroska/webm';
|
|
15
16
|
import type { Mp3State } from './state/mp3';
|
|
16
17
|
import type { ParserState } from './state/parser-state';
|
|
@@ -30,7 +31,7 @@ export type WorkOnSeekRequestOptions = {
|
|
|
30
31
|
contentLength: number;
|
|
31
32
|
readerInterface: ReaderInterface;
|
|
32
33
|
mediaSection: MediaSectionState;
|
|
33
|
-
|
|
34
|
+
m3uPlaylistContext: M3uPlaylistContext | null;
|
|
34
35
|
transportStream: TransportStreamState;
|
|
35
36
|
mode: ParseMediaMode;
|
|
36
37
|
seekInfiniteLoop: SeekInfiniteLoop;
|
|
@@ -45,6 +46,8 @@ export type WorkOnSeekRequestOptions = {
|
|
|
45
46
|
riffState: RiffState;
|
|
46
47
|
mp3State: Mp3State;
|
|
47
48
|
aacState: AacState;
|
|
49
|
+
m3uState: M3uState;
|
|
50
|
+
prefetchCache: PrefetchCache;
|
|
48
51
|
};
|
|
49
52
|
export declare const getWorkOnSeekRequestOptions: (state: ParserState) => WorkOnSeekRequestOptions;
|
|
50
53
|
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,
|
|
8
|
+
const turnSeekIntoByte = async ({ seek, mediaSectionState, logLevel, iterator, structureState, m3uPlaylistContext, isoState, transportStream, tracksState, webmState, keyframes, flacState, samplesObserved, riffState, mp3State, contentLength, aacState, m3uState, }) => {
|
|
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');
|
|
@@ -21,7 +21,6 @@ const turnSeekIntoByte = async ({ seek, mediaSectionState, logLevel, iterator, s
|
|
|
21
21
|
riffState,
|
|
22
22
|
samplesObserved,
|
|
23
23
|
structureState,
|
|
24
|
-
mp4HeaderSegment,
|
|
25
24
|
mediaSectionState,
|
|
26
25
|
isoState,
|
|
27
26
|
transportStream,
|
|
@@ -32,6 +31,7 @@ const turnSeekIntoByte = async ({ seek, mediaSectionState, logLevel, iterator, s
|
|
|
32
31
|
mp3State,
|
|
33
32
|
contentLength,
|
|
34
33
|
aacState,
|
|
34
|
+
m3uPlaylistContext,
|
|
35
35
|
});
|
|
36
36
|
if (!seekingHints) {
|
|
37
37
|
log_1.Log.trace(logLevel, 'No seeking info, cannot seek yet');
|
|
@@ -48,18 +48,13 @@ const turnSeekIntoByte = async ({ seek, mediaSectionState, logLevel, iterator, s
|
|
|
48
48
|
transportStream,
|
|
49
49
|
webmState,
|
|
50
50
|
mediaSection: mediaSectionState,
|
|
51
|
-
|
|
51
|
+
m3uPlaylistContext,
|
|
52
52
|
structure: structureState,
|
|
53
53
|
riffState,
|
|
54
|
+
m3uState,
|
|
54
55
|
});
|
|
55
56
|
return seekingByte;
|
|
56
57
|
}
|
|
57
|
-
if (seek.type === 'byte') {
|
|
58
|
-
return {
|
|
59
|
-
type: 'do-seek',
|
|
60
|
-
byte: seek.byte,
|
|
61
|
-
};
|
|
62
|
-
}
|
|
63
58
|
throw new Error(`Cannot process seek request for ${seek}: ${JSON.stringify(seek)}`);
|
|
64
59
|
};
|
|
65
60
|
const getWorkOnSeekRequestOptions = (state) => {
|
|
@@ -73,7 +68,7 @@ const getWorkOnSeekRequestOptions = (state) => {
|
|
|
73
68
|
contentLength: state.contentLength,
|
|
74
69
|
readerInterface: state.readerInterface,
|
|
75
70
|
mediaSection: state.mediaSection,
|
|
76
|
-
|
|
71
|
+
m3uPlaylistContext: state.m3uPlaylistContext,
|
|
77
72
|
mode: state.mode,
|
|
78
73
|
seekInfiniteLoop: state.seekInfiniteLoop,
|
|
79
74
|
currentReader: state.currentReader,
|
|
@@ -88,23 +83,25 @@ const getWorkOnSeekRequestOptions = (state) => {
|
|
|
88
83
|
riffState: state.riff,
|
|
89
84
|
mp3State: state.mp3,
|
|
90
85
|
aacState: state.aac,
|
|
86
|
+
m3uState: state.m3u,
|
|
87
|
+
prefetchCache: state.prefetchCache,
|
|
91
88
|
};
|
|
92
89
|
};
|
|
93
90
|
exports.getWorkOnSeekRequestOptions = getWorkOnSeekRequestOptions;
|
|
94
91
|
const workOnSeekRequest = async (options) => {
|
|
95
|
-
const { logLevel, controller, mediaSection,
|
|
92
|
+
const { logLevel, controller, mediaSection, m3uPlaylistContext, isoState, iterator, structureState, src, contentLength, readerInterface, mode, seekInfiniteLoop, currentReader, discardReadBytes, fields, transportStream, tracksState, webmState, keyframes, flacState, samplesObserved, riffState, mp3State, aacState, prefetchCache, m3uState, } = options;
|
|
96
93
|
const seek = controller._internals.seekSignal.getSeek();
|
|
97
94
|
if (!seek) {
|
|
98
95
|
return;
|
|
99
96
|
}
|
|
100
|
-
log_1.Log.trace(logLevel, `Has seek request: ${JSON.stringify(seek)}`);
|
|
97
|
+
log_1.Log.trace(logLevel, `Has seek request for ${src}: ${JSON.stringify(seek)}`);
|
|
101
98
|
const resolution = await turnSeekIntoByte({
|
|
102
99
|
seek,
|
|
103
100
|
mediaSectionState: mediaSection,
|
|
104
101
|
logLevel,
|
|
105
102
|
iterator,
|
|
106
103
|
structureState,
|
|
107
|
-
|
|
104
|
+
m3uPlaylistContext,
|
|
108
105
|
isoState,
|
|
109
106
|
transportStream,
|
|
110
107
|
tracksState,
|
|
@@ -116,6 +113,7 @@ const workOnSeekRequest = async (options) => {
|
|
|
116
113
|
mp3State,
|
|
117
114
|
contentLength,
|
|
118
115
|
aacState,
|
|
116
|
+
m3uState,
|
|
119
117
|
});
|
|
120
118
|
log_1.Log.trace(logLevel, `Seek action: ${JSON.stringify(resolution)}`);
|
|
121
119
|
if (resolution.type === 'intermediary-seek') {
|
|
@@ -134,6 +132,7 @@ const workOnSeekRequest = async (options) => {
|
|
|
134
132
|
src,
|
|
135
133
|
discardReadBytes,
|
|
136
134
|
fields,
|
|
135
|
+
prefetchCache,
|
|
137
136
|
});
|
|
138
137
|
return;
|
|
139
138
|
}
|
|
@@ -153,6 +152,7 @@ const workOnSeekRequest = async (options) => {
|
|
|
153
152
|
src,
|
|
154
153
|
discardReadBytes,
|
|
155
154
|
fields,
|
|
155
|
+
prefetchCache,
|
|
156
156
|
});
|
|
157
157
|
const { hasChanged } = controller._internals.seekSignal.clearSeekIfStillSame(seek);
|
|
158
158
|
if (hasChanged) {
|
|
@@ -9,7 +9,7 @@ const forwardMediaParserControllerToWorker = (controller) => {
|
|
|
9
9
|
return;
|
|
10
10
|
}
|
|
11
11
|
if (message.type === 'request-seek') {
|
|
12
|
-
controller.
|
|
12
|
+
controller.seek(message.payload);
|
|
13
13
|
return;
|
|
14
14
|
}
|
|
15
15
|
if (message.type === 'request-get-seeking-hints') {
|
|
@@ -4,7 +4,7 @@ exports.deserializeError = exports.serializeError = void 0;
|
|
|
4
4
|
const errors_1 = require("../errors");
|
|
5
5
|
const log_1 = require("../log");
|
|
6
6
|
const serializeError = ({ error, logLevel, seekingHints, }) => {
|
|
7
|
-
var _a, _b, _c, _d, _e;
|
|
7
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
8
8
|
if (error instanceof errors_1.IsAGifError) {
|
|
9
9
|
return {
|
|
10
10
|
type: 'response-error',
|
|
@@ -49,6 +49,22 @@ const serializeError = ({ error, logLevel, seekingHints, }) => {
|
|
|
49
49
|
seekingHints,
|
|
50
50
|
};
|
|
51
51
|
}
|
|
52
|
+
if (error.name === 'AbortError') {
|
|
53
|
+
return {
|
|
54
|
+
type: 'response-error',
|
|
55
|
+
errorName: 'AbortError',
|
|
56
|
+
errorMessage: error.message,
|
|
57
|
+
errorStack: (_e = error.stack) !== null && _e !== void 0 ? _e : '',
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
if (error.name === 'NotReadableError') {
|
|
61
|
+
return {
|
|
62
|
+
type: 'response-error',
|
|
63
|
+
errorName: 'NotReadableError',
|
|
64
|
+
errorMessage: error.message,
|
|
65
|
+
errorStack: (_f = error.stack) !== null && _f !== void 0 ? _f : '',
|
|
66
|
+
};
|
|
67
|
+
}
|
|
52
68
|
if (error.name !== 'Error') {
|
|
53
69
|
log_1.Log.warn(logLevel, `Original error was of type ${error.name} did not properly propagate`);
|
|
54
70
|
}
|
|
@@ -56,7 +72,7 @@ const serializeError = ({ error, logLevel, seekingHints, }) => {
|
|
|
56
72
|
type: 'response-error',
|
|
57
73
|
errorName: 'Error',
|
|
58
74
|
errorMessage: error.message,
|
|
59
|
-
errorStack: (
|
|
75
|
+
errorStack: (_g = error.stack) !== null && _g !== void 0 ? _g : '',
|
|
60
76
|
};
|
|
61
77
|
};
|
|
62
78
|
exports.serializeError = serializeError;
|
|
@@ -94,8 +110,15 @@ const deserializeError = (error) => {
|
|
|
94
110
|
});
|
|
95
111
|
case 'MediaParserAbortError':
|
|
96
112
|
return new errors_1.MediaParserAbortError(error.errorMessage);
|
|
97
|
-
|
|
113
|
+
case 'Error':
|
|
98
114
|
return new Error(error.errorMessage);
|
|
115
|
+
case 'AbortError':
|
|
116
|
+
return new Error(error.errorMessage);
|
|
117
|
+
// TODO: Document 2GB limit
|
|
118
|
+
case 'NotReadableError':
|
|
119
|
+
return new Error(error.errorMessage);
|
|
120
|
+
default:
|
|
121
|
+
throw new Error(`Unknown error name: ${error}`);
|
|
99
122
|
}
|
|
100
123
|
};
|
|
101
124
|
exports.deserializeError = deserializeError;
|
|
@@ -79,9 +79,15 @@ type BaseError = {
|
|
|
79
79
|
errorStack: string;
|
|
80
80
|
errorMessage: string;
|
|
81
81
|
};
|
|
82
|
+
type AbortError = BaseError & {
|
|
83
|
+
errorName: 'AbortError';
|
|
84
|
+
};
|
|
82
85
|
type GenericError = BaseError & {
|
|
83
86
|
errorName: 'Error';
|
|
84
87
|
};
|
|
88
|
+
type NotReadableError = BaseError & {
|
|
89
|
+
errorName: 'NotReadableError';
|
|
90
|
+
};
|
|
85
91
|
type IsAGifError = BaseError & {
|
|
86
92
|
errorName: 'IsAGifError';
|
|
87
93
|
mimeType: string | null;
|
|
@@ -112,7 +118,7 @@ type MediaParserAbortError = BaseError & {
|
|
|
112
118
|
errorName: 'MediaParserAbortError';
|
|
113
119
|
seekingHints: SeekingHints | null;
|
|
114
120
|
};
|
|
115
|
-
type AnyError = GenericError | IsAGifError | IsAnImageError | IsAPdfError | IsAnUnsupportedFileTypeError | MediaParserAbortError;
|
|
121
|
+
type AnyError = GenericError | IsAGifError | IsAnImageError | IsAPdfError | IsAnUnsupportedFileTypeError | MediaParserAbortError | AbortError | NotReadableError;
|
|
116
122
|
export type ResponseError = {
|
|
117
123
|
type: 'response-error';
|
|
118
124
|
} & AnyError;
|
package/dist/worker-server.js
CHANGED
|
@@ -42,7 +42,7 @@ const executeCallback = (payload) => {
|
|
|
42
42
|
};
|
|
43
43
|
const startParsing = async (message, reader) => {
|
|
44
44
|
const { payload, src } = message;
|
|
45
|
-
const { fields, acknowledgeRemotionLicense, logLevel: userLogLevel, progressIntervalInMs,
|
|
45
|
+
const { fields, acknowledgeRemotionLicense, logLevel: userLogLevel, progressIntervalInMs, m3uPlaylistContext, seekingHints, makeSamplesStartAtZero, } = payload;
|
|
46
46
|
const { postAudioCodec, postContainer, postDimensions, postFps, postImages, postInternalStats, postIsHdr, postKeyframes, postLocation, postM3uStreams, postMetadata, postMimeType, postName, postNumberOfAudioChannels, postRotation, postSampleRate, postSlowAudioBitrate, postSlowNumberOfFrames, postSlowFps, postSlowDurationInSeconds, postSlowVideoBitrate, postStructure, postTracks, postUnrotatedDimensions, postVideoCodec, postSize, postSlowKeyframes, postDurationInSeconds, postParseProgress, postM3uStreamSelection, postM3uAssociatedPlaylistsSelection, postOnAudioTrack, postOnVideoTrack, } = message;
|
|
47
47
|
const logLevel = userLogLevel !== null && userLogLevel !== void 0 ? userLogLevel : 'info';
|
|
48
48
|
try {
|
|
@@ -301,7 +301,7 @@ const startParsing = async (message, reader) => {
|
|
|
301
301
|
return res.value;
|
|
302
302
|
}
|
|
303
303
|
: select_stream_1.defaultSelectM3uStreamFn,
|
|
304
|
-
|
|
304
|
+
m3uPlaylistContext: m3uPlaylistContext !== null && m3uPlaylistContext !== void 0 ? m3uPlaylistContext : null,
|
|
305
305
|
selectM3uAssociatedPlaylists: postM3uAssociatedPlaylistsSelection
|
|
306
306
|
? async (playlists) => {
|
|
307
307
|
const res = await executeCallback({
|
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.291",
|
|
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.291",
|
|
14
|
+
"@remotion/eslint-config-internal": "4.0.291"
|
|
15
15
|
},
|
|
16
16
|
"publishConfig": {
|
|
17
17
|
"access": "public"
|