@remotion/media-parser 4.0.232 → 4.0.234
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/boxes/iso-base-media/esds/decoder-specific-config.d.ts +1 -2
- package/dist/boxes/iso-base-media/esds/decoder-specific-config.js +1 -5
- package/dist/boxes/iso-base-media/esds/esds-descriptors.d.ts +2 -4
- package/dist/boxes/iso-base-media/esds/esds-descriptors.js +3 -4
- package/dist/boxes/iso-base-media/esds/esds.d.ts +1 -3
- package/dist/boxes/iso-base-media/esds/esds.js +2 -2
- package/dist/boxes/iso-base-media/get-sample-positions-from-track.js +7 -1
- package/dist/boxes/iso-base-media/process-box.js +0 -1
- package/dist/boxes/iso-base-media/stsd/samples.js +6 -5
- package/dist/create/event-emitter.d.ts +31 -0
- package/dist/create/event-emitter.js +25 -0
- package/dist/create/iso-base-media/create-iso-base-media.d.ts +1 -1
- package/dist/create/iso-base-media/create-iso-base-media.js +3 -1
- package/dist/create/matroska/cluster.js +1 -1
- package/dist/create/matroska/create-matroska-media.d.ts +1 -1
- package/dist/create/matroska/create-matroska-media.js +7 -10
- package/dist/create/media-fn.d.ts +2 -0
- package/dist/create/progress-tracker.d.ts +7 -0
- package/dist/create/progress-tracker.js +43 -0
- package/dist/create/wav/create-wav.d.ts +1 -1
- package/dist/create/wav/create-wav.js +3 -1
- package/dist/create/with-resolvers.d.ts +10 -0
- package/dist/create/with-resolvers.js +28 -0
- package/dist/emit-available-info.js +11 -2
- package/dist/esm/index.mjs +235 -68
- package/dist/get-audio-codec.d.ts +1 -0
- package/dist/get-audio-codec.js +15 -1
- package/dist/get-is-hdr.d.ts +4 -0
- package/dist/get-is-hdr.js +18 -0
- package/dist/get-sample-positions-from-lpcm.d.ts +3 -0
- package/dist/get-sample-positions-from-lpcm.js +46 -0
- package/dist/get-tracks.d.ts +3 -3
- package/dist/get-video-codec.js +9 -3
- package/dist/has-all-info.js +6 -1
- package/dist/index.d.ts +23 -4
- package/dist/index.js +7 -0
- package/dist/options.d.ts +7 -0
- package/dist/parse-media.js +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +3 -3
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// If an audio is of type, LPCM, the data structure will include 44100-48000 samples per second
|
|
3
|
+
// We need to handle this case differently and treat each chunk as a sample instead
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.getSamplePositionsFromLpcm = void 0;
|
|
6
|
+
const traversal_1 = require("./boxes/iso-base-media/traversal");
|
|
7
|
+
// example video: mehmet.mov
|
|
8
|
+
const getSamplePositionsFromLpcm = (trakBox) => {
|
|
9
|
+
const stscBox = (0, traversal_1.getStscBox)(trakBox);
|
|
10
|
+
const stszBox = (0, traversal_1.getStszBox)(trakBox);
|
|
11
|
+
const stcoBox = (0, traversal_1.getStcoBox)(trakBox);
|
|
12
|
+
if (!stscBox) {
|
|
13
|
+
throw new Error('Expected stsc box in trak box');
|
|
14
|
+
}
|
|
15
|
+
if (!stcoBox) {
|
|
16
|
+
throw new Error('Expected stco box in trak box');
|
|
17
|
+
}
|
|
18
|
+
if (!stszBox) {
|
|
19
|
+
throw new Error('Expected stsz box in trak box');
|
|
20
|
+
}
|
|
21
|
+
if (stszBox.countType !== 'fixed') {
|
|
22
|
+
throw new Error('Only supporting fixed count type in stsz box');
|
|
23
|
+
}
|
|
24
|
+
const samples = [];
|
|
25
|
+
let timestamp = 0;
|
|
26
|
+
for (let i = 0; i < stcoBox.entries.length; i++) {
|
|
27
|
+
const entry = stcoBox.entries[i];
|
|
28
|
+
const chunk = i + 1;
|
|
29
|
+
const stscEntry = stscBox.entries.findLast((e) => e.firstChunk <= chunk);
|
|
30
|
+
if (!stscEntry) {
|
|
31
|
+
throw new Error('should not be');
|
|
32
|
+
}
|
|
33
|
+
samples.push({
|
|
34
|
+
chunk,
|
|
35
|
+
cts: timestamp,
|
|
36
|
+
dts: timestamp,
|
|
37
|
+
offset: Number(entry),
|
|
38
|
+
size: stszBox.sampleSize * stscEntry.samplesPerChunk,
|
|
39
|
+
duration: stscEntry.samplesPerChunk,
|
|
40
|
+
isKeyframe: true,
|
|
41
|
+
});
|
|
42
|
+
timestamp += stscEntry.samplesPerChunk;
|
|
43
|
+
}
|
|
44
|
+
return samples;
|
|
45
|
+
};
|
|
46
|
+
exports.getSamplePositionsFromLpcm = getSamplePositionsFromLpcm;
|
package/dist/get-tracks.d.ts
CHANGED
|
@@ -8,9 +8,9 @@ type SampleAspectRatio = {
|
|
|
8
8
|
denominator: number;
|
|
9
9
|
};
|
|
10
10
|
export type VideoTrackColorParams = {
|
|
11
|
-
transferCharacteristics: 'bt709' | 'smpte170m' | 'iec61966-2-1' | null;
|
|
12
|
-
matrixCoefficients: 'bt709' | 'bt470bg' | 'rgb' | 'smpte170m' | null;
|
|
13
|
-
primaries: 'bt709' | 'smpte170m' | 'bt470bg' | null;
|
|
11
|
+
transferCharacteristics: 'bt709' | 'smpte170m' | 'iec61966-2-1' | 'arib-std-b67' | null;
|
|
12
|
+
matrixCoefficients: 'bt709' | 'bt470bg' | 'rgb' | 'smpte170m' | 'bt2020' | null;
|
|
13
|
+
primaries: 'bt709' | 'smpte170m' | 'bt470bg' | 'bt2020' | null;
|
|
14
14
|
fullRange: boolean | null;
|
|
15
15
|
};
|
|
16
16
|
export type MediaParserVideoCodec = 'vp8' | 'vp9' | 'h264' | 'av1' | 'h265' | 'prores';
|
package/dist/get-video-codec.js
CHANGED
|
@@ -172,21 +172,27 @@ const getIsoBmColrConfig = (trakBox) => {
|
|
|
172
172
|
? 'bt470bg'
|
|
173
173
|
: colrAtom.matrixIndex === 6
|
|
174
174
|
? 'smpte170m'
|
|
175
|
-
:
|
|
175
|
+
: colrAtom.matrixIndex === 9
|
|
176
|
+
? 'bt2020'
|
|
177
|
+
: null,
|
|
176
178
|
primaries: colrAtom.primaries === 1
|
|
177
179
|
? 'bt709'
|
|
178
180
|
: colrAtom.primaries === 5
|
|
179
181
|
? 'bt470bg'
|
|
180
182
|
: colrAtom.primaries === 6
|
|
181
183
|
? 'smpte170m'
|
|
182
|
-
:
|
|
184
|
+
: colrAtom.primaries === 9
|
|
185
|
+
? 'bt2020'
|
|
186
|
+
: null,
|
|
183
187
|
transferCharacteristics: colrAtom.transfer === 1
|
|
184
188
|
? 'bt709'
|
|
185
189
|
: colrAtom.transfer === 6
|
|
186
190
|
? 'smpte170m'
|
|
187
191
|
: colrAtom.transfer === 13
|
|
188
192
|
? 'iec61966-2-1'
|
|
189
|
-
:
|
|
193
|
+
: colrAtom.transfer === 18
|
|
194
|
+
? 'arib-std-b67'
|
|
195
|
+
: null,
|
|
190
196
|
};
|
|
191
197
|
};
|
|
192
198
|
exports.getIsoBmColrConfig = getIsoBmColrConfig;
|
package/dist/has-all-info.js
CHANGED
|
@@ -6,11 +6,13 @@ const get_container_1 = require("./get-container");
|
|
|
6
6
|
const get_dimensions_1 = require("./get-dimensions");
|
|
7
7
|
const get_duration_1 = require("./get-duration");
|
|
8
8
|
const get_fps_1 = require("./get-fps");
|
|
9
|
+
const get_is_hdr_1 = require("./get-is-hdr");
|
|
9
10
|
const get_tracks_1 = require("./get-tracks");
|
|
10
11
|
const get_video_codec_1 = require("./get-video-codec");
|
|
11
12
|
const getAvailableInfo = (options, parseResult, state) => {
|
|
12
13
|
const keys = Object.entries(options).filter(([, value]) => value);
|
|
13
|
-
const infos = keys.map(([
|
|
14
|
+
const infos = keys.map(([_key]) => {
|
|
15
|
+
const key = _key;
|
|
14
16
|
if (key === 'structure') {
|
|
15
17
|
return Boolean(parseResult && parseResult.status === 'done');
|
|
16
18
|
}
|
|
@@ -25,6 +27,9 @@ const getAvailableInfo = (options, parseResult, state) => {
|
|
|
25
27
|
if (key === 'fps') {
|
|
26
28
|
return Boolean(parseResult && (0, get_fps_1.hasFps)(parseResult.segments));
|
|
27
29
|
}
|
|
30
|
+
if (key === 'isHdr') {
|
|
31
|
+
return Boolean(parseResult && (0, get_is_hdr_1.hasHdr)(parseResult.segments, state));
|
|
32
|
+
}
|
|
28
33
|
if (key === 'videoCodec') {
|
|
29
34
|
return Boolean(parseResult && (0, get_video_codec_1.hasVideoCodec)(parseResult.segments, state));
|
|
30
35
|
}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { IoEventEmitter } from './create/event-emitter';
|
|
2
|
+
import type { ProgressTracker } from './create/progress-tracker';
|
|
1
3
|
import type { LogLevel } from './log';
|
|
2
4
|
export { WriterInterface } from './writers/writer';
|
|
3
5
|
export { AudioTrack, MediaParserAudioCodec, MediaParserVideoCodec, OtherTrack, Track, VideoTrack, VideoTrackColorParams, } from './get-tracks';
|
|
@@ -7,11 +9,10 @@ export { AudioOrVideoSample, OnAudioSample, OnAudioTrack, OnVideoSample, OnVideo
|
|
|
7
9
|
export type { MediaFn } from './create/media-fn';
|
|
8
10
|
export { Dimensions } from './get-dimensions';
|
|
9
11
|
export type { ReaderInterface } from './readers/reader';
|
|
10
|
-
export type { LogLevel };
|
|
11
12
|
export declare const MediaParserInternals: {
|
|
12
|
-
createMatroskaMedia: ({ writer, onBytesProgress, onMillisecondsProgress, filename, logLevel, }: import("./create/media-fn").MediaFnGeneratorInput) => Promise<import("./create/media-fn").MediaFn>;
|
|
13
|
-
createIsoBaseMedia: ({ writer, onBytesProgress, onMillisecondsProgress, logLevel, filename, }: import("./create/media-fn").MediaFnGeneratorInput) => Promise<import("./create/media-fn").MediaFn>;
|
|
14
|
-
createWav: ({ filename, logLevel, onBytesProgress, onMillisecondsProgress, writer, }: import("./create/media-fn").MediaFnGeneratorInput) => Promise<import("./create/media-fn").MediaFn>;
|
|
13
|
+
createMatroskaMedia: ({ writer, onBytesProgress, onMillisecondsProgress, filename, logLevel, progressTracker, }: import("./create/media-fn").MediaFnGeneratorInput) => Promise<import("./create/media-fn").MediaFn>;
|
|
14
|
+
createIsoBaseMedia: ({ writer, onBytesProgress, onMillisecondsProgress, logLevel, filename, progressTracker, }: import("./create/media-fn").MediaFnGeneratorInput) => Promise<import("./create/media-fn").MediaFn>;
|
|
15
|
+
createWav: ({ filename, logLevel, onBytesProgress, onMillisecondsProgress, writer, progressTracker, }: import("./create/media-fn").MediaFnGeneratorInput) => Promise<import("./create/media-fn").MediaFn>;
|
|
15
16
|
Log: {
|
|
16
17
|
trace: (logLevel: LogLevel, ...args: Parameters<typeof console.log>) => void;
|
|
17
18
|
verbose: (logLevel: LogLevel, ...args: Parameters<typeof console.log>) => void;
|
|
@@ -19,5 +20,23 @@ export declare const MediaParserInternals: {
|
|
|
19
20
|
warn: (logLevel: LogLevel, ...args: Parameters<typeof console.log>) => void;
|
|
20
21
|
error: (...args: Parameters<typeof console.log>) => void;
|
|
21
22
|
};
|
|
23
|
+
IoEventEmitter: typeof IoEventEmitter;
|
|
24
|
+
makeProgressTracker: () => {
|
|
25
|
+
registerTrack: (trackNumber: number) => void;
|
|
26
|
+
getSmallestProgress: () => number;
|
|
27
|
+
updateTrackProgress: (trackNumber: number, progress: number) => void;
|
|
28
|
+
waitForProgress: () => Promise<void>;
|
|
29
|
+
};
|
|
30
|
+
withResolvers: <T>() => {
|
|
31
|
+
promise: Promise<T>;
|
|
32
|
+
resolve: (value: T | PromiseLike<T>) => void;
|
|
33
|
+
reject: (reason?: any) => void;
|
|
34
|
+
};
|
|
35
|
+
withResolversAndWaitForReturn: <T>() => {
|
|
36
|
+
getPromiseToImmediatelyReturn: () => Promise<T>;
|
|
37
|
+
reject: (reason: unknown) => void;
|
|
38
|
+
resolve: (value: T | PromiseLike<T>) => void;
|
|
39
|
+
};
|
|
22
40
|
};
|
|
41
|
+
export type { IoEventEmitter, LogLevel, ProgressTracker };
|
|
23
42
|
export { VERSION } from './version';
|
package/dist/index.js
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.VERSION = exports.MediaParserInternals = exports.parseMedia = void 0;
|
|
4
|
+
const event_emitter_1 = require("./create/event-emitter");
|
|
4
5
|
const create_iso_base_media_1 = require("./create/iso-base-media/create-iso-base-media");
|
|
5
6
|
const create_matroska_media_1 = require("./create/matroska/create-matroska-media");
|
|
7
|
+
const progress_tracker_1 = require("./create/progress-tracker");
|
|
6
8
|
const create_wav_1 = require("./create/wav/create-wav");
|
|
9
|
+
const with_resolvers_1 = require("./create/with-resolvers");
|
|
7
10
|
const log_1 = require("./log");
|
|
8
11
|
var parse_media_1 = require("./parse-media");
|
|
9
12
|
Object.defineProperty(exports, "parseMedia", { enumerable: true, get: function () { return parse_media_1.parseMedia; } });
|
|
@@ -12,6 +15,10 @@ exports.MediaParserInternals = {
|
|
|
12
15
|
createIsoBaseMedia: create_iso_base_media_1.createIsoBaseMedia,
|
|
13
16
|
createWav: create_wav_1.createWav,
|
|
14
17
|
Log: log_1.Log,
|
|
18
|
+
IoEventEmitter: event_emitter_1.IoEventEmitter,
|
|
19
|
+
makeProgressTracker: progress_tracker_1.makeProgressTracker,
|
|
20
|
+
withResolvers: with_resolvers_1.withResolvers,
|
|
21
|
+
withResolversAndWaitForReturn: with_resolvers_1.withResolversAndWaitForReturn,
|
|
15
22
|
};
|
|
16
23
|
var version_1 = require("./version");
|
|
17
24
|
Object.defineProperty(exports, "VERSION", { enumerable: true, get: function () { return version_1.VERSION; } });
|
package/dist/options.d.ts
CHANGED
|
@@ -20,6 +20,7 @@ export type ParseMediaFields = {
|
|
|
20
20
|
size: boolean;
|
|
21
21
|
name: boolean;
|
|
22
22
|
container: boolean;
|
|
23
|
+
isHdr: boolean;
|
|
23
24
|
};
|
|
24
25
|
export type AllParseMediaFields = {
|
|
25
26
|
dimensions: true;
|
|
@@ -35,6 +36,7 @@ export type AllParseMediaFields = {
|
|
|
35
36
|
size: true;
|
|
36
37
|
name: true;
|
|
37
38
|
container: true;
|
|
39
|
+
isHdr: true;
|
|
38
40
|
};
|
|
39
41
|
export type Options<Fields extends ParseMediaFields> = {
|
|
40
42
|
dimensions?: Fields['dimensions'];
|
|
@@ -50,6 +52,7 @@ export type Options<Fields extends ParseMediaFields> = {
|
|
|
50
52
|
size?: Fields['size'];
|
|
51
53
|
name?: Fields['name'];
|
|
52
54
|
container?: Fields['container'];
|
|
55
|
+
isHdr?: Fields['isHdr'];
|
|
53
56
|
};
|
|
54
57
|
export type TracksField = {
|
|
55
58
|
videoTracks: VideoTrack[];
|
|
@@ -74,6 +77,8 @@ export type ParseMediaCallbacks<Fields extends Options<ParseMediaFields>> = (Fie
|
|
|
74
77
|
onRotation?: (rotation: number | null) => void;
|
|
75
78
|
} : {}) & (Fields['unrotatedDimensions'] extends true ? {
|
|
76
79
|
onUnrotatedDimensions?: (dimensions: Dimensions) => void;
|
|
80
|
+
} : {}) & (Fields['isHdr'] extends true ? {
|
|
81
|
+
onIsHdr?: (isHdr: boolean) => void;
|
|
77
82
|
} : {}) & (Fields['internalStats'] extends true ? {
|
|
78
83
|
onInternalStats?: (stats: InternalStats) => void;
|
|
79
84
|
} : {}) & (Fields['size'] extends true ? {
|
|
@@ -99,6 +104,8 @@ export type ParseMediaResult<Fields extends Options<ParseMediaFields>> = (Fields
|
|
|
99
104
|
rotation: number | null;
|
|
100
105
|
} : {}) & (Fields['unrotatedDimensions'] extends true ? {
|
|
101
106
|
unrotatedDimensions: Dimensions;
|
|
107
|
+
} : {}) & (Fields['isHdr'] extends true ? {
|
|
108
|
+
isHdr: boolean;
|
|
102
109
|
} : {}) & (Fields['internalStats'] extends true ? {
|
|
103
110
|
internalStats: InternalStats;
|
|
104
111
|
} : {}) & (Fields['size'] extends true ? {
|
package/dist/parse-media.js
CHANGED
|
@@ -99,7 +99,7 @@ const parseMedia = async ({ src, fields, reader: readerInterface = from_fetch_1.
|
|
|
99
99
|
}));
|
|
100
100
|
triggerInfoEmit();
|
|
101
101
|
if (parseResult && parseResult.status === 'incomplete') {
|
|
102
|
-
log_1.Log.verbose(logLevel, 'Continuing parsing of file, currently at position', iterator.counter.getOffset()
|
|
102
|
+
log_1.Log.verbose(logLevel, 'Continuing parsing of file, currently at position', iterator.counter.getOffset());
|
|
103
103
|
parseResult = await parseResult.continueParsing();
|
|
104
104
|
}
|
|
105
105
|
else {
|
package/dist/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const VERSION = "4.0.
|
|
1
|
+
export declare const VERSION = "4.0.234";
|
package/dist/version.js
CHANGED
package/package.json
CHANGED
|
@@ -3,14 +3,14 @@
|
|
|
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.234",
|
|
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.14.0",
|
|
12
|
-
"@remotion/example-videos": "4.0.
|
|
13
|
-
"@remotion/eslint-config-internal": "4.0.
|
|
12
|
+
"@remotion/example-videos": "4.0.234",
|
|
13
|
+
"@remotion/eslint-config-internal": "4.0.234"
|
|
14
14
|
},
|
|
15
15
|
"publishConfig": {
|
|
16
16
|
"access": "public"
|