@remotion/media-parser 4.0.227 → 4.0.228
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/webm/ebml.d.ts +1 -1
- package/dist/create/create-media.d.ts +5 -1
- package/dist/create/create-media.js +6 -1
- package/dist/esm/from-fetch.mjs +1 -1
- package/dist/esm/index.mjs +47 -3
- package/dist/esm/web-fs.mjs +6 -0
- package/dist/index.d.ts +16 -2
- package/dist/index.js +2 -0
- package/dist/log.d.ts +10 -0
- package/dist/log.js +37 -0
- package/dist/options.d.ts +6 -3
- package/dist/readers/from-fetch.js +1 -1
- package/dist/writers/web-fs.js +6 -0
- package/package.json +3 -3
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const measureEBMLVarInt: (value: number) =>
|
|
1
|
+
export declare const measureEBMLVarInt: (value: number) => 1 | 2 | 5 | 3 | 6 | 4;
|
|
2
2
|
export declare const getVariableInt: (value: number, minWidth: number | null) => Uint8Array;
|
|
@@ -12,4 +12,8 @@ export type MediaFn = {
|
|
|
12
12
|
addWaitForFinishPromise: (promise: () => Promise<void>) => void;
|
|
13
13
|
waitForFinish: () => Promise<void>;
|
|
14
14
|
};
|
|
15
|
-
export declare const createMedia: (writer
|
|
15
|
+
export declare const createMedia: ({ writer, onBytesProgress, onMillisecondsProgress, }: {
|
|
16
|
+
writer: WriterInterface;
|
|
17
|
+
onBytesProgress: (totalBytes: number) => void;
|
|
18
|
+
onMillisecondsProgress: (totalMilliseconds: number) => void;
|
|
19
|
+
}) => Promise<MediaFn>;
|
|
@@ -13,7 +13,7 @@ const matroska_seek_1 = require("./matroska-seek");
|
|
|
13
13
|
const matroska_segment_1 = require("./matroska-segment");
|
|
14
14
|
const matroska_trackentry_1 = require("./matroska-trackentry");
|
|
15
15
|
const timescale_1 = require("./timescale");
|
|
16
|
-
const createMedia = async (writer) => {
|
|
16
|
+
const createMedia = async ({ writer, onBytesProgress, onMillisecondsProgress, }) => {
|
|
17
17
|
var _a, _b, _c, _d, _e, _f, _g;
|
|
18
18
|
const header = (0, matroska_header_1.makeMatroskaHeader)();
|
|
19
19
|
const w = await writer.createContent();
|
|
@@ -59,11 +59,13 @@ const createMedia = async (writer) => {
|
|
|
59
59
|
const updateSeekWrite = async () => {
|
|
60
60
|
const updatedSeek = (0, matroska_seek_1.createMatroskaSeekHead)(seeks);
|
|
61
61
|
await w.updateDataAt(seekHeadOffset, (0, make_header_1.combineUint8Arrays)(updatedSeek.map((b) => b.bytes)));
|
|
62
|
+
onBytesProgress(w.getWrittenByteCount());
|
|
62
63
|
};
|
|
63
64
|
const segmentOffset = w.getWrittenByteCount();
|
|
64
65
|
const updateSegmentSize = async (size) => {
|
|
65
66
|
const data = (0, ebml_1.getVariableInt)(size, matroska_segment_1.MATROSKA_SEGMENT_MIN_VINT_WIDTH);
|
|
66
67
|
await w.updateDataAt(segmentOffset + (0, make_header_1.matroskaToHex)(all_segments_1.matroskaElements.Segment).byteLength, data);
|
|
68
|
+
onBytesProgress(w.getWrittenByteCount());
|
|
67
69
|
};
|
|
68
70
|
await w.write(matroskaSegment.bytes);
|
|
69
71
|
const clusterOffset = w.getWrittenByteCount();
|
|
@@ -88,6 +90,7 @@ const createMedia = async (writer) => {
|
|
|
88
90
|
const updateDuration = async (newDuration) => {
|
|
89
91
|
const blocks = (0, make_duration_with_padding_1.makeDurationWithPadding)(newDuration);
|
|
90
92
|
await w.updateDataAt(durationOffset, blocks.bytes);
|
|
93
|
+
onBytesProgress(w.getWrittenByteCount());
|
|
91
94
|
};
|
|
92
95
|
const addSample = async (chunk, trackNumber, isVideo) => {
|
|
93
96
|
var _a;
|
|
@@ -108,6 +111,8 @@ const createMedia = async (writer) => {
|
|
|
108
111
|
trackNumber,
|
|
109
112
|
});
|
|
110
113
|
}
|
|
114
|
+
onBytesProgress(w.getWrittenByteCount());
|
|
115
|
+
onMillisecondsProgress(newDuration);
|
|
111
116
|
};
|
|
112
117
|
const addTrack = async (track) => {
|
|
113
118
|
currentTracks.push(track);
|
package/dist/esm/from-fetch.mjs
CHANGED
|
@@ -55,7 +55,7 @@ var fetchReader = {
|
|
|
55
55
|
const parsedContentRange = contentRange ? parseContentRange(contentRange) : null;
|
|
56
56
|
const { supportsContentRange } = validateContentRangeAndDetectIfSupported(actualRange, parsedContentRange, res.status);
|
|
57
57
|
signal?.addEventListener("abort", () => {
|
|
58
|
-
controller.abort();
|
|
58
|
+
controller.abort(new Error("Aborted by user"));
|
|
59
59
|
}, { once: true });
|
|
60
60
|
if (res.status.toString().startsWith("4") || res.status.toString().startsWith("5")) {
|
|
61
61
|
throw new Error(`Server returned status code ${res.status} for ${src} and range ${actualRange}`);
|
package/dist/esm/index.mjs
CHANGED
|
@@ -55,7 +55,7 @@ var fetchReader = {
|
|
|
55
55
|
const parsedContentRange = contentRange ? parseContentRange(contentRange) : null;
|
|
56
56
|
const { supportsContentRange } = validateContentRangeAndDetectIfSupported(actualRange, parsedContentRange, res.status);
|
|
57
57
|
signal?.addEventListener("abort", () => {
|
|
58
|
-
controller.abort();
|
|
58
|
+
controller.abort(new Error("Aborted by user"));
|
|
59
59
|
}, { once: true });
|
|
60
60
|
if (res.status.toString().startsWith("4") || res.status.toString().startsWith("5")) {
|
|
61
61
|
throw new Error(`Server returned status code ${res.status} for ${src} and range ${actualRange}`);
|
|
@@ -1815,7 +1815,11 @@ var makeMatroskaTracks = (tracks2) => {
|
|
|
1815
1815
|
};
|
|
1816
1816
|
|
|
1817
1817
|
// src/create/create-media.ts
|
|
1818
|
-
var createMedia = async (
|
|
1818
|
+
var createMedia = async ({
|
|
1819
|
+
writer,
|
|
1820
|
+
onBytesProgress,
|
|
1821
|
+
onMillisecondsProgress
|
|
1822
|
+
}) => {
|
|
1819
1823
|
const header = makeMatroskaHeader();
|
|
1820
1824
|
const w = await writer.createContent();
|
|
1821
1825
|
await w.write(header.bytes);
|
|
@@ -1859,11 +1863,13 @@ var createMedia = async (writer) => {
|
|
|
1859
1863
|
const updateSeekWrite = async () => {
|
|
1860
1864
|
const updatedSeek = createMatroskaSeekHead(seeks);
|
|
1861
1865
|
await w.updateDataAt(seekHeadOffset, combineUint8Arrays(updatedSeek.map((b) => b.bytes)));
|
|
1866
|
+
onBytesProgress(w.getWrittenByteCount());
|
|
1862
1867
|
};
|
|
1863
1868
|
const segmentOffset = w.getWrittenByteCount();
|
|
1864
1869
|
const updateSegmentSize = async (size) => {
|
|
1865
1870
|
const data = getVariableInt(size, MATROSKA_SEGMENT_MIN_VINT_WIDTH);
|
|
1866
1871
|
await w.updateDataAt(segmentOffset + matroskaToHex(matroskaElements.Segment).byteLength, data);
|
|
1872
|
+
onBytesProgress(w.getWrittenByteCount());
|
|
1867
1873
|
};
|
|
1868
1874
|
await w.write(matroskaSegment.bytes);
|
|
1869
1875
|
const clusterOffset = w.getWrittenByteCount();
|
|
@@ -1891,6 +1897,7 @@ var createMedia = async (writer) => {
|
|
|
1891
1897
|
const updateDuration = async (newDuration) => {
|
|
1892
1898
|
const blocks = makeDurationWithPadding(newDuration);
|
|
1893
1899
|
await w.updateDataAt(durationOffset, blocks.bytes);
|
|
1900
|
+
onBytesProgress(w.getWrittenByteCount());
|
|
1894
1901
|
};
|
|
1895
1902
|
const addSample = async (chunk, trackNumber2, isVideo) => {
|
|
1896
1903
|
trackNumberProgresses[trackNumber2] = chunk.timestamp;
|
|
@@ -1909,6 +1916,8 @@ var createMedia = async (writer) => {
|
|
|
1909
1916
|
trackNumber: trackNumber2
|
|
1910
1917
|
});
|
|
1911
1918
|
}
|
|
1919
|
+
onBytesProgress(w.getWrittenByteCount());
|
|
1920
|
+
onMillisecondsProgress(newDuration);
|
|
1912
1921
|
};
|
|
1913
1922
|
const addTrack = async (track) => {
|
|
1914
1923
|
currentTracks.push(track);
|
|
@@ -1959,6 +1968,40 @@ var createMedia = async (writer) => {
|
|
|
1959
1968
|
};
|
|
1960
1969
|
};
|
|
1961
1970
|
|
|
1971
|
+
// src/log.ts
|
|
1972
|
+
var logLevels = ["trace", "verbose", "info", "warn", "error"];
|
|
1973
|
+
var getNumberForLogLevel = (level) => {
|
|
1974
|
+
return logLevels.indexOf(level);
|
|
1975
|
+
};
|
|
1976
|
+
var isEqualOrBelowLogLevel = (currentLevel, level) => {
|
|
1977
|
+
return getNumberForLogLevel(currentLevel) <= getNumberForLogLevel(level);
|
|
1978
|
+
};
|
|
1979
|
+
var Log = {
|
|
1980
|
+
trace: (logLevel, ...args) => {
|
|
1981
|
+
if (isEqualOrBelowLogLevel(logLevel, "trace")) {
|
|
1982
|
+
return console.log(...args);
|
|
1983
|
+
}
|
|
1984
|
+
},
|
|
1985
|
+
verbose: (logLevel, ...args) => {
|
|
1986
|
+
if (isEqualOrBelowLogLevel(logLevel, "verbose")) {
|
|
1987
|
+
return console.log(...args);
|
|
1988
|
+
}
|
|
1989
|
+
},
|
|
1990
|
+
info: (logLevel, ...args) => {
|
|
1991
|
+
if (isEqualOrBelowLogLevel(logLevel, "info")) {
|
|
1992
|
+
return console.log(...args);
|
|
1993
|
+
}
|
|
1994
|
+
},
|
|
1995
|
+
warn: (logLevel, ...args) => {
|
|
1996
|
+
if (isEqualOrBelowLogLevel(logLevel, "warn")) {
|
|
1997
|
+
return console.warn(...args);
|
|
1998
|
+
}
|
|
1999
|
+
},
|
|
2000
|
+
error: (...args) => {
|
|
2001
|
+
return console.error(...args);
|
|
2002
|
+
}
|
|
2003
|
+
};
|
|
2004
|
+
|
|
1962
2005
|
// src/boxes/iso-base-media/traversal.ts
|
|
1963
2006
|
var getMoovBox = (segments) => {
|
|
1964
2007
|
const moovBox = segments.find((s) => s.type === "moov-box");
|
|
@@ -6818,7 +6861,8 @@ var parseMedia = async ({
|
|
|
6818
6861
|
};
|
|
6819
6862
|
// src/index.ts
|
|
6820
6863
|
var MediaParserInternals = {
|
|
6821
|
-
createMedia
|
|
6864
|
+
createMedia,
|
|
6865
|
+
Log
|
|
6822
6866
|
};
|
|
6823
6867
|
export {
|
|
6824
6868
|
parseMedia,
|
package/dist/esm/web-fs.mjs
CHANGED
|
@@ -54,6 +54,12 @@ var webFsWriter = {
|
|
|
54
54
|
createContent
|
|
55
55
|
};
|
|
56
56
|
var canUseWebFsWriter = async () => {
|
|
57
|
+
if (!("storage" in navigator)) {
|
|
58
|
+
return false;
|
|
59
|
+
}
|
|
60
|
+
if (!("getDirectory" in navigator.storage)) {
|
|
61
|
+
return false;
|
|
62
|
+
}
|
|
57
63
|
const directoryHandle = await navigator.storage.getDirectory();
|
|
58
64
|
const fileHandle = await directoryHandle.getFileHandle("remotion-probe-web-fs-support", {
|
|
59
65
|
create: true
|
package/dist/index.d.ts
CHANGED
|
@@ -1,10 +1,24 @@
|
|
|
1
|
+
import type { LogLevel } from './log';
|
|
2
|
+
export { WriterInterface } from './writers/writer';
|
|
1
3
|
export { AudioTrack, MediaParserAudioCodec, MediaParserVideoCodec, OtherTrack, Track, VideoTrack, VideoTrackColorParams, } from './get-tracks';
|
|
2
|
-
export type { Options, ParseMediaContainer, ParseMediaFields, ParseMediaResult, TracksField, } from './options';
|
|
4
|
+
export type { Options, ParseMediaContainer, ParseMediaDynamicOptions, ParseMediaFields, ParseMediaOptions, ParseMediaResult, TracksField, } from './options';
|
|
3
5
|
export { parseMedia } from './parse-media';
|
|
4
6
|
export { AudioSample, OnAudioSample, OnAudioTrack, OnVideoSample, OnVideoTrack, VideoSample, } from './webcodec-sample-types';
|
|
5
7
|
export type { MediaFn } from './create/create-media';
|
|
6
8
|
export { Dimensions } from './get-dimensions';
|
|
7
9
|
export type { ReaderInterface } from './readers/reader';
|
|
10
|
+
export type { LogLevel };
|
|
8
11
|
export declare const MediaParserInternals: {
|
|
9
|
-
createMedia: (
|
|
12
|
+
createMedia: ({ writer, onBytesProgress, onMillisecondsProgress, }: {
|
|
13
|
+
writer: import("./writers/writer").WriterInterface;
|
|
14
|
+
onBytesProgress: (totalBytes: number) => void;
|
|
15
|
+
onMillisecondsProgress: (totalMilliseconds: number) => void;
|
|
16
|
+
}) => Promise<import("./create/create-media").MediaFn>;
|
|
17
|
+
Log: {
|
|
18
|
+
trace: (logLevel: LogLevel, ...args: Parameters<typeof console.log>) => void;
|
|
19
|
+
verbose: (logLevel: LogLevel, ...args: Parameters<typeof console.log>) => void;
|
|
20
|
+
info: (logLevel: LogLevel, ...args: Parameters<typeof console.log>) => void;
|
|
21
|
+
warn: (logLevel: LogLevel, ...args: Parameters<typeof console.log>) => void;
|
|
22
|
+
error: (...args: Parameters<typeof console.log>) => void;
|
|
23
|
+
};
|
|
10
24
|
};
|
package/dist/index.js
CHANGED
|
@@ -2,8 +2,10 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.MediaParserInternals = exports.parseMedia = void 0;
|
|
4
4
|
const create_media_1 = require("./create/create-media");
|
|
5
|
+
const log_1 = require("./log");
|
|
5
6
|
var parse_media_1 = require("./parse-media");
|
|
6
7
|
Object.defineProperty(exports, "parseMedia", { enumerable: true, get: function () { return parse_media_1.parseMedia; } });
|
|
7
8
|
exports.MediaParserInternals = {
|
|
8
9
|
createMedia: create_media_1.createMedia,
|
|
10
|
+
Log: log_1.Log,
|
|
9
11
|
};
|
package/dist/log.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare const logLevels: readonly ["trace", "verbose", "info", "warn", "error"];
|
|
2
|
+
export type LogLevel = (typeof logLevels)[number];
|
|
3
|
+
export declare const isEqualOrBelowLogLevel: (currentLevel: LogLevel, level: LogLevel) => boolean;
|
|
4
|
+
export declare const Log: {
|
|
5
|
+
trace: (logLevel: LogLevel, ...args: Parameters<typeof console.log>) => void;
|
|
6
|
+
verbose: (logLevel: LogLevel, ...args: Parameters<typeof console.log>) => void;
|
|
7
|
+
info: (logLevel: LogLevel, ...args: Parameters<typeof console.log>) => void;
|
|
8
|
+
warn: (logLevel: LogLevel, ...args: Parameters<typeof console.log>) => void;
|
|
9
|
+
error: (...args: Parameters<typeof console.log>) => void;
|
|
10
|
+
};
|
package/dist/log.js
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Log = exports.isEqualOrBelowLogLevel = exports.logLevels = void 0;
|
|
4
|
+
/* eslint-disable no-console */
|
|
5
|
+
exports.logLevels = ['trace', 'verbose', 'info', 'warn', 'error'];
|
|
6
|
+
const getNumberForLogLevel = (level) => {
|
|
7
|
+
return exports.logLevels.indexOf(level);
|
|
8
|
+
};
|
|
9
|
+
const isEqualOrBelowLogLevel = (currentLevel, level) => {
|
|
10
|
+
return getNumberForLogLevel(currentLevel) <= getNumberForLogLevel(level);
|
|
11
|
+
};
|
|
12
|
+
exports.isEqualOrBelowLogLevel = isEqualOrBelowLogLevel;
|
|
13
|
+
exports.Log = {
|
|
14
|
+
trace: (logLevel, ...args) => {
|
|
15
|
+
if ((0, exports.isEqualOrBelowLogLevel)(logLevel, 'trace')) {
|
|
16
|
+
return console.log(...args);
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
verbose: (logLevel, ...args) => {
|
|
20
|
+
if ((0, exports.isEqualOrBelowLogLevel)(logLevel, 'verbose')) {
|
|
21
|
+
return console.log(...args);
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
info: (logLevel, ...args) => {
|
|
25
|
+
if ((0, exports.isEqualOrBelowLogLevel)(logLevel, 'info')) {
|
|
26
|
+
return console.log(...args);
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
warn: (logLevel, ...args) => {
|
|
30
|
+
if ((0, exports.isEqualOrBelowLogLevel)(logLevel, 'warn')) {
|
|
31
|
+
return console.warn(...args);
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
error: (...args) => {
|
|
35
|
+
return console.error(...args);
|
|
36
|
+
},
|
|
37
|
+
};
|
package/dist/options.d.ts
CHANGED
|
@@ -107,11 +107,14 @@ export type ParseMediaResult<Fields extends Options<ParseMediaFields>> = (Fields
|
|
|
107
107
|
} : {}) & (Fields['container'] extends true ? {
|
|
108
108
|
container: ParseMediaContainer | null;
|
|
109
109
|
} : {});
|
|
110
|
-
export type
|
|
111
|
-
src: string | File;
|
|
110
|
+
export type ParseMediaDynamicOptions<F extends Options<ParseMediaFields>> = {
|
|
112
111
|
fields?: F;
|
|
112
|
+
} & ParseMediaCallbacks<F>;
|
|
113
|
+
export type ParseMediaOptions<F extends Options<ParseMediaFields>> = {
|
|
114
|
+
src: string | File;
|
|
113
115
|
reader?: ReaderInterface;
|
|
114
116
|
onAudioTrack?: OnAudioTrack;
|
|
115
117
|
onVideoTrack?: OnVideoTrack;
|
|
116
118
|
signal?: AbortSignal;
|
|
117
|
-
} &
|
|
119
|
+
} & ParseMediaDynamicOptions<F>;
|
|
120
|
+
export type ParseMedia = <F extends Options<ParseMediaFields>>(options: ParseMediaOptions<F>) => Promise<ParseMediaResult<F>>;
|
|
@@ -80,7 +80,7 @@ exports.fetchReader = {
|
|
|
80
80
|
: null;
|
|
81
81
|
const { supportsContentRange } = validateContentRangeAndDetectIfSupported(actualRange, parsedContentRange, res.status);
|
|
82
82
|
signal === null || signal === void 0 ? void 0 : signal.addEventListener('abort', () => {
|
|
83
|
-
controller.abort();
|
|
83
|
+
controller.abort(new Error('Aborted by user'));
|
|
84
84
|
}, { once: true });
|
|
85
85
|
if (res.status.toString().startsWith('4') ||
|
|
86
86
|
res.status.toString().startsWith('5')) {
|
package/dist/writers/web-fs.js
CHANGED
|
@@ -58,6 +58,12 @@ exports.webFsWriter = {
|
|
|
58
58
|
createContent,
|
|
59
59
|
};
|
|
60
60
|
const canUseWebFsWriter = async () => {
|
|
61
|
+
if (!('storage' in navigator)) {
|
|
62
|
+
return false;
|
|
63
|
+
}
|
|
64
|
+
if (!('getDirectory' in navigator.storage)) {
|
|
65
|
+
return false;
|
|
66
|
+
}
|
|
61
67
|
const directoryHandle = await navigator.storage.getDirectory();
|
|
62
68
|
const fileHandle = await directoryHandle.getFileHandle('remotion-probe-web-fs-support', {
|
|
63
69
|
create: true,
|
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.228",
|
|
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/renderer": "4.0.
|
|
13
|
-
"@remotion/eslint-config-internal": "4.0.
|
|
12
|
+
"@remotion/renderer": "4.0.228",
|
|
13
|
+
"@remotion/eslint-config-internal": "4.0.228"
|
|
14
14
|
},
|
|
15
15
|
"publishConfig": {
|
|
16
16
|
"access": "public"
|