@remotion/media-parser 4.0.229 → 4.0.230
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 +3 -2
- package/dist/boxes/iso-base-media/esds/decoder-specific-config.js +7 -8
- package/dist/boxes/iso-base-media/esds/esds-descriptors.d.ts +4 -2
- package/dist/boxes/iso-base-media/esds/esds-descriptors.js +5 -4
- package/dist/boxes/iso-base-media/esds/esds.d.ts +3 -1
- package/dist/boxes/iso-base-media/esds/esds.js +2 -2
- package/dist/boxes/iso-base-media/make-track.js +2 -1
- package/dist/boxes/iso-base-media/mdat/mdat.js +13 -7
- package/dist/boxes/iso-base-media/moov/moov.d.ts +3 -1
- package/dist/boxes/iso-base-media/moov/moov.js +2 -2
- package/dist/boxes/iso-base-media/mvhd.js +11 -9
- package/dist/boxes/iso-base-media/parse-icc-profile.d.ts +36 -0
- package/dist/boxes/iso-base-media/parse-icc-profile.js +115 -0
- package/dist/boxes/iso-base-media/process-box.d.ts +5 -4
- package/dist/boxes/iso-base-media/process-box.js +17 -14
- package/dist/boxes/iso-base-media/stsd/colr.d.ts +14 -4
- package/dist/boxes/iso-base-media/stsd/colr.js +13 -1
- package/dist/boxes/iso-base-media/stsd/mebx.d.ts +1 -2
- package/dist/boxes/iso-base-media/stsd/mebx.js +2 -2
- package/dist/boxes/iso-base-media/stsd/samples.d.ts +5 -2
- package/dist/boxes/iso-base-media/stsd/samples.js +7 -6
- package/dist/boxes/iso-base-media/stsd/stsd.js +1 -0
- package/dist/boxes/iso-base-media/to-date.d.ts +1 -0
- package/dist/boxes/iso-base-media/to-date.js +9 -1
- package/dist/boxes/iso-base-media/trak/trak.d.ts +3 -1
- package/dist/boxes/iso-base-media/trak/trak.js +2 -2
- package/dist/boxes/webm/av1-codec-private.js +1 -1
- package/dist/boxes/webm/ebml.d.ts +1 -1
- package/dist/boxes/webm/get-sample-from-block.d.ts +4 -4
- package/dist/boxes/webm/get-sample-from-block.js +4 -2
- package/dist/boxes/webm/make-track.js +1 -0
- package/dist/buffer-iterator.d.ts +1 -1
- package/dist/buffer-iterator.js +1 -8
- package/dist/create/iso-base-media/codec-specific/avc1.d.ts +2 -0
- package/dist/create/iso-base-media/codec-specific/avc1.js +48 -0
- package/dist/create/iso-base-media/codec-specific/create-codec-specific-data.d.ts +22 -0
- package/dist/create/iso-base-media/codec-specific/create-codec-specific-data.js +36 -0
- package/dist/create/iso-base-media/codec-specific/mp4a.d.ts +2 -0
- package/dist/create/iso-base-media/codec-specific/mp4a.js +90 -0
- package/dist/create/iso-base-media/create-colr.d.ts +6 -0
- package/dist/create/iso-base-media/create-colr.js +26 -0
- package/dist/create/iso-base-media/create-ftyp.d.ts +10 -0
- package/dist/create/iso-base-media/create-ftyp.js +22 -0
- package/dist/create/iso-base-media/create-ilst.d.ts +1 -0
- package/dist/create/iso-base-media/create-ilst.js +14 -0
- package/dist/create/iso-base-media/create-iso-base-media.d.ts +2 -0
- package/dist/create/iso-base-media/create-iso-base-media.js +168 -0
- package/dist/create/iso-base-media/create-mdia.d.ts +5 -0
- package/dist/create/iso-base-media/create-mdia.js +18 -0
- package/dist/create/iso-base-media/create-moov.d.ts +5 -0
- package/dist/create/iso-base-media/create-moov.js +18 -0
- package/dist/create/iso-base-media/create-mvhd.d.ts +10 -0
- package/dist/create/iso-base-media/create-mvhd.js +48 -0
- package/dist/create/iso-base-media/create-trak.d.ts +4 -0
- package/dist/create/iso-base-media/create-trak.js +17 -0
- package/dist/create/iso-base-media/create-udta.d.ts +1 -0
- package/dist/create/iso-base-media/create-udta.js +14 -0
- package/dist/create/iso-base-media/create-url.d.ts +1 -0
- package/dist/create/iso-base-media/create-url.js +16 -0
- package/dist/create/iso-base-media/example-stts.d.ts +3 -0
- package/dist/create/iso-base-media/example-stts.js +2797 -0
- package/dist/create/iso-base-media/ilst/create-cmt.d.ts +1 -0
- package/dist/create/iso-base-media/ilst/create-cmt.js +26 -0
- package/dist/create/iso-base-media/ilst/create-too.d.ts +1 -0
- package/dist/create/iso-base-media/ilst/create-too.js +27 -0
- package/dist/create/iso-base-media/mdia/create-mdhd.d.ts +6 -0
- package/dist/create/iso-base-media/mdia/create-mdhd.js +33 -0
- package/dist/create/iso-base-media/mp4-header.d.ts +6 -0
- package/dist/create/iso-base-media/mp4-header.js +47 -0
- package/dist/create/iso-base-media/primitives.d.ts +15 -0
- package/dist/create/iso-base-media/primitives.js +133 -0
- package/dist/create/iso-base-media/serialize-track.d.ts +9 -0
- package/dist/create/iso-base-media/serialize-track.js +63 -0
- package/dist/create/iso-base-media/trak/create-tkhd.d.ts +27 -0
- package/dist/create/iso-base-media/trak/create-tkhd.js +97 -0
- package/dist/create/iso-base-media/trak/mdia/create-minf.d.ts +4 -0
- package/dist/create/iso-base-media/trak/mdia/create-minf.js +19 -0
- package/dist/create/iso-base-media/trak/mdia/minf/create-dinf.d.ts +1 -0
- package/dist/create/iso-base-media/trak/mdia/minf/create-dinf.js +22 -0
- package/dist/create/iso-base-media/trak/mdia/minf/create-smhd.d.ts +1 -0
- package/dist/create/iso-base-media/trak/mdia/minf/create-smhd.js +20 -0
- package/dist/create/iso-base-media/trak/mdia/minf/create-stbl.d.ts +6 -0
- package/dist/create/iso-base-media/trak/mdia/minf/create-stbl.js +35 -0
- package/dist/create/iso-base-media/trak/mdia/minf/create-vmhd.d.ts +1 -0
- package/dist/create/iso-base-media/trak/mdia/minf/create-vmhd.js +20 -0
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-ctts.d.ts +2 -0
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-ctts.js +45 -0
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stco.d.ts +2 -0
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stco.js +28 -0
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stsc.d.ts +2 -0
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stsc.js +56 -0
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stss.d.ts +2 -0
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stss.js +23 -0
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stsz.d.ts +2 -0
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stsz.js +25 -0
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stts.d.ts +2 -0
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stts.js +48 -0
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/stsd/create-avc1.d.ts +1 -0
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/stsd/create-avc1.js +20 -0
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/stsd/create-avcc.d.ts +1 -0
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/stsd/create-avcc.js +16 -0
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/stsd/create-pasp.d.ts +1 -0
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/stsd/create-pasp.js +13 -0
- package/dist/create/iso-base-media/udta/create-meta.d.ts +4 -0
- package/dist/create/iso-base-media/udta/create-meta.js +20 -0
- package/dist/create/iso-base-media/udta/meta/create-hdlr.d.ts +1 -0
- package/dist/create/iso-base-media/udta/meta/create-hdlr.js +32 -0
- package/dist/create/make-track-info.d.ts +20 -0
- package/dist/create/make-track-info.js +2 -0
- package/dist/create/{cluster-segment.d.ts → matroska/cluster-segment.d.ts} +1 -1
- package/dist/create/{cluster-segment.js → matroska/cluster-segment.js} +2 -2
- package/dist/create/{cluster.d.ts → matroska/cluster.d.ts} +6 -5
- package/dist/create/{cluster.js → matroska/cluster.js} +16 -16
- package/dist/create/matroska/create-matroska-media.d.ts +2 -0
- package/dist/create/{create-media.js → matroska/create-matroska-media.js} +25 -18
- package/dist/create/matroska/make-duration-with-padding.d.ts +1 -0
- package/dist/create/{make-duration-with-padding.js → matroska/make-duration-with-padding.js} +1 -1
- package/dist/create/{matroska-cues.d.ts → matroska/matroska-cues.d.ts} +1 -1
- package/dist/create/{matroska-cues.js → matroska/matroska-cues.js} +1 -1
- package/dist/create/matroska/matroska-header.d.ts +1 -0
- package/dist/create/{matroska-header.js → matroska/matroska-header.js} +1 -1
- package/dist/create/{matroska-info.d.ts → matroska/matroska-info.d.ts} +1 -1
- package/dist/create/{matroska-info.js → matroska/matroska-info.js} +1 -1
- package/dist/create/matroska/matroska-seek.d.ts +6 -0
- package/dist/create/{matroska-seek.js → matroska/matroska-seek.js} +1 -1
- package/dist/create/{matroska-segment.d.ts → matroska/matroska-segment.d.ts} +1 -1
- package/dist/create/{matroska-segment.js → matroska/matroska-segment.js} +1 -1
- package/dist/create/matroska/matroska-trackentry.d.ts +10 -0
- package/dist/create/{matroska-trackentry.js → matroska/matroska-trackentry.js} +9 -3
- package/dist/create/{create-media.d.ts → media-fn.d.ts} +16 -4
- package/dist/create/media-fn.js +2 -0
- package/dist/create/timescale.d.ts +1 -1
- package/dist/create/timescale.js +2 -2
- package/dist/esm/buffer.mjs +1 -1
- package/dist/esm/index.mjs +1452 -209
- package/dist/get-audio-codec.d.ts +1 -0
- package/dist/get-audio-codec.js +27 -3
- package/dist/get-fps.d.ts +1 -0
- package/dist/get-fps.js +17 -13
- package/dist/get-sample-positions.d.ts +1 -0
- package/dist/get-sample-positions.js +1 -0
- package/dist/get-tracks.d.ts +1 -0
- package/dist/get-video-codec.js +4 -0
- package/dist/index.d.ts +4 -7
- package/dist/index.js +4 -2
- package/dist/options.d.ts +2 -0
- package/dist/parse-media.js +2 -1
- package/dist/parse-video.d.ts +3 -1
- package/dist/parse-video.js +3 -14
- package/dist/parser-state.d.ts +3 -3
- package/dist/samples-from-moof.js +1 -0
- package/dist/webcodec-sample-types.d.ts +7 -20
- package/dist/writers/buffer-implementation/writer.js +1 -1
- package/package.json +3 -3
- package/dist/create/make-duration-with-padding.d.ts +0 -1
- package/dist/create/matroska-header.d.ts +0 -1
- package/dist/create/matroska-seek.d.ts +0 -6
- package/dist/create/matroska-trackentry.d.ts +0 -27
- package/dist/create/polyfill-audio-sample.d.ts +0 -3
- package/dist/create/polyfill-audio-sample.js +0 -15
- package/dist/writers/buffer-implementation/multi-buffer.d.ts +0 -0
- package/dist/writers/buffer-implementation/multi-buffer.js +0 -1
|
@@ -11,6 +11,7 @@ type AudioCodecInfo = {
|
|
|
11
11
|
secondarySpecificator: number | null;
|
|
12
12
|
description: Uint8Array | undefined;
|
|
13
13
|
};
|
|
14
|
+
export declare const getCodecPrivateFromTrak: (trakBox: TrakBox) => Uint8Array | null;
|
|
14
15
|
export declare const getNumberOfChannelsFromTrak: (trak: TrakBox) => number | null;
|
|
15
16
|
export declare const getSampleRate: (trak: TrakBox) => number | null;
|
|
16
17
|
export declare const getAudioCodecFromTrak: (trak: TrakBox) => AudioCodecInfo | null;
|
package/dist/get-audio-codec.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getAudioCodecFromTrack = exports.getAudioCodecStringFromTrak = exports.getAudioCodecFromIso = exports.getAudioCodecFromTrak = exports.getSampleRate = exports.getNumberOfChannelsFromTrak = exports.hasAudioCodec = exports.getAudioCodec = void 0;
|
|
3
|
+
exports.getAudioCodecFromTrack = exports.getAudioCodecStringFromTrak = exports.getAudioCodecFromIso = exports.getAudioCodecFromTrak = exports.getSampleRate = exports.getNumberOfChannelsFromTrak = exports.getCodecPrivateFromTrak = exports.hasAudioCodec = exports.getAudioCodec = void 0;
|
|
4
4
|
const traversal_1 = require("./boxes/iso-base-media/traversal");
|
|
5
5
|
const get_fps_1 = require("./get-fps");
|
|
6
6
|
const get_tracks_1 = require("./get-tracks");
|
|
@@ -47,10 +47,10 @@ const getCodecSpecificatorFromEsdsBox = ({ child, }) => {
|
|
|
47
47
|
};
|
|
48
48
|
}
|
|
49
49
|
const audioSpecificConfig = descriptor.decoderSpecificConfigs.find((d) => {
|
|
50
|
-
return d.type === '
|
|
50
|
+
return d.type === 'mp4a-specific-config' ? d : null;
|
|
51
51
|
});
|
|
52
52
|
if (!audioSpecificConfig ||
|
|
53
|
-
audioSpecificConfig.type !== '
|
|
53
|
+
audioSpecificConfig.type !== 'mp4a-specific-config') {
|
|
54
54
|
throw new Error('No audio-specific-config');
|
|
55
55
|
}
|
|
56
56
|
return {
|
|
@@ -59,6 +59,30 @@ const getCodecSpecificatorFromEsdsBox = ({ child, }) => {
|
|
|
59
59
|
description: audioSpecificConfig.asBytes,
|
|
60
60
|
};
|
|
61
61
|
};
|
|
62
|
+
const getCodecPrivateFromTrak = (trakBox) => {
|
|
63
|
+
const stsdBox = (0, traversal_1.getStsdBox)(trakBox);
|
|
64
|
+
if (!stsdBox) {
|
|
65
|
+
return null;
|
|
66
|
+
}
|
|
67
|
+
const audioSample = stsdBox.samples.find((s) => s.type === 'audio');
|
|
68
|
+
if (!audioSample || audioSample.type !== 'audio') {
|
|
69
|
+
return null;
|
|
70
|
+
}
|
|
71
|
+
const esds = audioSample.children.find((b) => b.type === 'esds-box');
|
|
72
|
+
if (!esds || esds.type !== 'esds-box') {
|
|
73
|
+
return null;
|
|
74
|
+
}
|
|
75
|
+
const decoderConfigDescriptor = esds.descriptors.find((d) => d.type === 'decoder-config-descriptor');
|
|
76
|
+
if (!decoderConfigDescriptor) {
|
|
77
|
+
return null;
|
|
78
|
+
}
|
|
79
|
+
const mp4a = decoderConfigDescriptor.decoderSpecificConfigs.find((d) => d.type === 'mp4a-specific-config');
|
|
80
|
+
if (!mp4a) {
|
|
81
|
+
return null;
|
|
82
|
+
}
|
|
83
|
+
return mp4a.asBytes;
|
|
84
|
+
};
|
|
85
|
+
exports.getCodecPrivateFromTrak = getCodecPrivateFromTrak;
|
|
62
86
|
const onSample = (sample, children) => {
|
|
63
87
|
const child = children.find((c) => c.type === 'esds-box');
|
|
64
88
|
if (child && child.type === 'esds-box') {
|
package/dist/get-fps.d.ts
CHANGED
|
@@ -7,6 +7,7 @@ type TimescaleAndDuration = {
|
|
|
7
7
|
export declare const trakBoxContainsAudio: (trakBox: TrakBox) => boolean;
|
|
8
8
|
export declare const trakBoxContainsVideo: (trakBox: TrakBox) => boolean;
|
|
9
9
|
export declare const getTimescaleAndDuration: (trakBox: TrakBox) => TimescaleAndDuration | null;
|
|
10
|
+
export declare const getFpsFromMp4TrakBox: (trakBox: TrakBox) => number | null;
|
|
10
11
|
export declare const getFps: (segments: AnySegment[]) => number | null;
|
|
11
12
|
export declare const hasFps: (boxes: AnySegment[]) => boolean;
|
|
12
13
|
export {};
|
package/dist/get-fps.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.hasFps = exports.getFps = exports.getTimescaleAndDuration = exports.trakBoxContainsVideo = exports.trakBoxContainsAudio = void 0;
|
|
3
|
+
exports.hasFps = exports.getFps = exports.getFpsFromMp4TrakBox = exports.getTimescaleAndDuration = exports.trakBoxContainsVideo = exports.trakBoxContainsAudio = void 0;
|
|
4
4
|
const traversal_1 = require("./boxes/iso-base-media/traversal");
|
|
5
5
|
const calculateFps = ({ sttsBox, timeScale, durationInSamples, }) => {
|
|
6
6
|
let totalSamples = 0;
|
|
@@ -43,21 +43,12 @@ const getTimescaleAndDuration = (trakBox) => {
|
|
|
43
43
|
return null;
|
|
44
44
|
};
|
|
45
45
|
exports.getTimescaleAndDuration = getTimescaleAndDuration;
|
|
46
|
-
const
|
|
47
|
-
const
|
|
48
|
-
if (!moovBox) {
|
|
49
|
-
return null;
|
|
50
|
-
}
|
|
51
|
-
const trackBoxes = (0, traversal_1.getTraks)(moovBox);
|
|
52
|
-
const trackBox = trackBoxes.find(exports.trakBoxContainsVideo);
|
|
53
|
-
if (!trackBox) {
|
|
54
|
-
return null;
|
|
55
|
-
}
|
|
56
|
-
const timescaleAndDuration = (0, exports.getTimescaleAndDuration)(trackBox);
|
|
46
|
+
const getFpsFromMp4TrakBox = (trakBox) => {
|
|
47
|
+
const timescaleAndDuration = (0, exports.getTimescaleAndDuration)(trakBox);
|
|
57
48
|
if (!timescaleAndDuration) {
|
|
58
49
|
return null;
|
|
59
50
|
}
|
|
60
|
-
const sttsBox = (0, traversal_1.getSttsBox)(
|
|
51
|
+
const sttsBox = (0, traversal_1.getSttsBox)(trakBox);
|
|
61
52
|
if (!sttsBox) {
|
|
62
53
|
return null;
|
|
63
54
|
}
|
|
@@ -67,6 +58,19 @@ const getFps = (segments) => {
|
|
|
67
58
|
durationInSamples: timescaleAndDuration.duration,
|
|
68
59
|
});
|
|
69
60
|
};
|
|
61
|
+
exports.getFpsFromMp4TrakBox = getFpsFromMp4TrakBox;
|
|
62
|
+
const getFps = (segments) => {
|
|
63
|
+
const moovBox = (0, traversal_1.getMoovBox)(segments);
|
|
64
|
+
if (!moovBox) {
|
|
65
|
+
return null;
|
|
66
|
+
}
|
|
67
|
+
const trackBoxes = (0, traversal_1.getTraks)(moovBox);
|
|
68
|
+
const trackBox = trackBoxes.find(exports.trakBoxContainsVideo);
|
|
69
|
+
if (!trackBox) {
|
|
70
|
+
return null;
|
|
71
|
+
}
|
|
72
|
+
return (0, exports.getFpsFromMp4TrakBox)(trackBox);
|
|
73
|
+
};
|
|
70
74
|
exports.getFps = getFps;
|
|
71
75
|
const hasFps = (boxes) => {
|
|
72
76
|
try {
|
package/dist/get-tracks.d.ts
CHANGED
package/dist/get-video-codec.js
CHANGED
|
@@ -135,6 +135,10 @@ const getIsoBmColrConfig = (trakBox) => {
|
|
|
135
135
|
if (!colrAtom) {
|
|
136
136
|
return null;
|
|
137
137
|
}
|
|
138
|
+
// TODO: Not doing anything with a in ICC color profile yet
|
|
139
|
+
if (colrAtom.colorType !== 'transfer-characteristics') {
|
|
140
|
+
return null;
|
|
141
|
+
}
|
|
138
142
|
// https://github.com/bbc/qtff-parameter-editor
|
|
139
143
|
return {
|
|
140
144
|
fullRange: colrAtom.fullRangeFlag,
|
package/dist/index.d.ts
CHANGED
|
@@ -3,17 +3,14 @@ export { WriterInterface } from './writers/writer';
|
|
|
3
3
|
export { AudioTrack, MediaParserAudioCodec, MediaParserVideoCodec, OtherTrack, Track, VideoTrack, VideoTrackColorParams, } from './get-tracks';
|
|
4
4
|
export type { Options, ParseMediaContainer, ParseMediaDynamicOptions, ParseMediaFields, ParseMediaOptions, ParseMediaResult, TracksField, } from './options';
|
|
5
5
|
export { parseMedia } from './parse-media';
|
|
6
|
-
export { AudioOrVideoSample,
|
|
7
|
-
export type { MediaFn } from './create/
|
|
6
|
+
export { AudioOrVideoSample, OnAudioSample, OnAudioTrack, OnVideoSample, OnVideoTrack, } from './webcodec-sample-types';
|
|
7
|
+
export type { MediaFn } from './create/media-fn';
|
|
8
8
|
export { Dimensions } from './get-dimensions';
|
|
9
9
|
export type { ReaderInterface } from './readers/reader';
|
|
10
10
|
export type { LogLevel };
|
|
11
11
|
export declare const MediaParserInternals: {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
onBytesProgress: (totalBytes: number) => void;
|
|
15
|
-
onMillisecondsProgress: (totalMilliseconds: number) => void;
|
|
16
|
-
}) => Promise<import("./create/create-media").MediaFn>;
|
|
12
|
+
createMatroskaMedia: ({ writer, onBytesProgress, onMillisecondsProgress, }: import("./create/media-fn").MediaFnGeneratorInput) => Promise<import("./create/media-fn").MediaFn>;
|
|
13
|
+
createIsoBaseMedia: ({ writer, onBytesProgress, onMillisecondsProgress, logLevel, }: import("./create/media-fn").MediaFnGeneratorInput) => Promise<import("./create/media-fn").MediaFn>;
|
|
17
14
|
Log: {
|
|
18
15
|
trace: (logLevel: LogLevel, ...args: Parameters<typeof console.log>) => void;
|
|
19
16
|
verbose: (logLevel: LogLevel, ...args: Parameters<typeof console.log>) => void;
|
package/dist/index.js
CHANGED
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.MediaParserInternals = exports.parseMedia = void 0;
|
|
4
|
-
const
|
|
4
|
+
const create_iso_base_media_1 = require("./create/iso-base-media/create-iso-base-media");
|
|
5
|
+
const create_matroska_media_1 = require("./create/matroska/create-matroska-media");
|
|
5
6
|
const log_1 = require("./log");
|
|
6
7
|
var parse_media_1 = require("./parse-media");
|
|
7
8
|
Object.defineProperty(exports, "parseMedia", { enumerable: true, get: function () { return parse_media_1.parseMedia; } });
|
|
8
9
|
exports.MediaParserInternals = {
|
|
9
|
-
|
|
10
|
+
createMatroskaMedia: create_matroska_media_1.createMatroskaMedia,
|
|
11
|
+
createIsoBaseMedia: create_iso_base_media_1.createIsoBaseMedia,
|
|
10
12
|
Log: log_1.Log,
|
|
11
13
|
};
|
package/dist/options.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { Dimensions } from './get-dimensions';
|
|
2
2
|
import type { AudioTrack, MediaParserAudioCodec, MediaParserVideoCodec, VideoTrack } from './get-tracks';
|
|
3
|
+
import type { LogLevel } from './log';
|
|
3
4
|
import type { AnySegment } from './parse-result';
|
|
4
5
|
import type { InternalStats } from './parser-state';
|
|
5
6
|
import type { ReaderInterface } from './readers/reader';
|
|
@@ -116,5 +117,6 @@ export type ParseMediaOptions<F extends Options<ParseMediaFields>> = {
|
|
|
116
117
|
onAudioTrack?: OnAudioTrack;
|
|
117
118
|
onVideoTrack?: OnVideoTrack;
|
|
118
119
|
signal?: AbortSignal;
|
|
120
|
+
logLevel?: LogLevel;
|
|
119
121
|
} & ParseMediaDynamicOptions<F>;
|
|
120
122
|
export type ParseMedia = <F extends Options<ParseMediaFields>>(options: ParseMediaOptions<F>) => Promise<ParseMediaResult<F>>;
|
package/dist/parse-media.js
CHANGED
|
@@ -7,7 +7,7 @@ const has_all_info_1 = require("./has-all-info");
|
|
|
7
7
|
const parse_video_1 = require("./parse-video");
|
|
8
8
|
const parser_state_1 = require("./parser-state");
|
|
9
9
|
const from_fetch_1 = require("./readers/from-fetch");
|
|
10
|
-
const parseMedia = async ({ src, fields, reader: readerInterface = from_fetch_1.fetchReader, onAudioTrack, onVideoTrack, signal, ...more }) => {
|
|
10
|
+
const parseMedia = async ({ src, fields, reader: readerInterface = from_fetch_1.fetchReader, onAudioTrack, onVideoTrack, signal, logLevel = 'info', ...more }) => {
|
|
11
11
|
const state = (0, parser_state_1.makeParserState)({
|
|
12
12
|
hasAudioCallbacks: onAudioTrack !== null,
|
|
13
13
|
hasVideoCallbacks: onVideoTrack !== null,
|
|
@@ -68,6 +68,7 @@ const parseMedia = async ({ src, fields, reader: readerInterface = from_fetch_1.
|
|
|
68
68
|
iterator,
|
|
69
69
|
options,
|
|
70
70
|
signal: signal !== null && signal !== void 0 ? signal : null,
|
|
71
|
+
logLevel,
|
|
71
72
|
});
|
|
72
73
|
}
|
|
73
74
|
const availableInfo = (0, has_all_info_1.getAvailableInfo)(fields !== null && fields !== void 0 ? fields : {}, parseResult, state);
|
package/dist/parse-video.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { BufferIterator } from './buffer-iterator';
|
|
2
|
+
import type { LogLevel } from './log';
|
|
2
3
|
import type { IsoBaseMediaBox, ParseResult } from './parse-result';
|
|
3
4
|
import type { ParserContext } from './parser-context';
|
|
4
5
|
export type PartialMdatBox = {
|
|
@@ -14,8 +15,9 @@ export type BoxAndNext = {
|
|
|
14
15
|
} | {
|
|
15
16
|
type: 'incomplete';
|
|
16
17
|
} | PartialMdatBox;
|
|
17
|
-
export declare const parseVideo: ({ iterator, options, signal, }: {
|
|
18
|
+
export declare const parseVideo: ({ iterator, options, signal, logLevel, }: {
|
|
18
19
|
iterator: BufferIterator;
|
|
19
20
|
options: ParserContext;
|
|
20
21
|
signal: AbortSignal | null;
|
|
22
|
+
logLevel: LogLevel;
|
|
21
23
|
}) => Promise<ParseResult>;
|
package/dist/parse-video.js
CHANGED
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.parseVideo = void 0;
|
|
4
4
|
const process_box_1 = require("./boxes/iso-base-media/process-box");
|
|
5
5
|
const parse_webm_header_1 = require("./boxes/webm/parse-webm-header");
|
|
6
|
-
const parseVideo = ({ iterator, options, signal, }) => {
|
|
6
|
+
const parseVideo = ({ iterator, options, signal, logLevel, }) => {
|
|
7
7
|
if (iterator.bytesRemaining() === 0) {
|
|
8
8
|
return Promise.resolve({
|
|
9
9
|
status: 'incomplete',
|
|
@@ -13,6 +13,7 @@ const parseVideo = ({ iterator, options, signal, }) => {
|
|
|
13
13
|
iterator,
|
|
14
14
|
options,
|
|
15
15
|
signal,
|
|
16
|
+
logLevel,
|
|
16
17
|
});
|
|
17
18
|
},
|
|
18
19
|
skipTo: null,
|
|
@@ -20,18 +21,6 @@ const parseVideo = ({ iterator, options, signal, }) => {
|
|
|
20
21
|
}
|
|
21
22
|
if (iterator.isRiff()) {
|
|
22
23
|
throw new Error('AVI files are not yet supported');
|
|
23
|
-
/*
|
|
24
|
-
iterator.discard(4);
|
|
25
|
-
return parseBoxes({
|
|
26
|
-
iterator,
|
|
27
|
-
maxBytes: Infinity,
|
|
28
|
-
allowIncompleteBoxes: true,
|
|
29
|
-
initialBoxes: [],
|
|
30
|
-
options,
|
|
31
|
-
continueMdat: false,
|
|
32
|
-
littleEndian: true,
|
|
33
|
-
});
|
|
34
|
-
*/
|
|
35
24
|
}
|
|
36
25
|
if (iterator.isIsoBaseMedia()) {
|
|
37
26
|
return (0, process_box_1.parseBoxes)({
|
|
@@ -41,8 +30,8 @@ const parseVideo = ({ iterator, options, signal, }) => {
|
|
|
41
30
|
initialBoxes: [],
|
|
42
31
|
options,
|
|
43
32
|
continueMdat: false,
|
|
44
|
-
littleEndian: false,
|
|
45
33
|
signal,
|
|
34
|
+
logLevel,
|
|
46
35
|
});
|
|
47
36
|
}
|
|
48
37
|
if (iterator.isWebm()) {
|
package/dist/parser-state.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { OnTrackEntrySegment } from './boxes/webm/segments';
|
|
2
2
|
import type { TrackInfo } from './boxes/webm/segments/track-entry';
|
|
3
|
-
import type {
|
|
3
|
+
import type { AudioOrVideoSample, OnAudioSample, OnVideoSample } from './webcodec-sample-types';
|
|
4
4
|
export type InternalStats = {};
|
|
5
5
|
export declare const makeParserState: ({ hasAudioCallbacks, hasVideoCallbacks, signal, }: {
|
|
6
6
|
hasAudioCallbacks: boolean;
|
|
@@ -13,8 +13,8 @@ export declare const makeParserState: ({ hasAudioCallbacks, hasVideoCallbacks, s
|
|
|
13
13
|
setTimestampOffset: (byteOffset: number, timestamp: number) => void;
|
|
14
14
|
getTimestampOffsetForByteOffset: (byteOffset: number) => number | undefined;
|
|
15
15
|
registerAudioSampleCallback: (id: number, callback: OnAudioSample | null) => Promise<void>;
|
|
16
|
-
onAudioSample: (trackId: number, audioSample:
|
|
17
|
-
onVideoSample: (trackId: number, videoSample:
|
|
16
|
+
onAudioSample: (trackId: number, audioSample: AudioOrVideoSample) => Promise<void>;
|
|
17
|
+
onVideoSample: (trackId: number, videoSample: AudioOrVideoSample) => Promise<void>;
|
|
18
18
|
getInternalStats: () => {};
|
|
19
19
|
getTimescale: () => number;
|
|
20
20
|
setTimescale: (newTimescale: number) => void;
|
|
@@ -1,27 +1,14 @@
|
|
|
1
1
|
import type { AudioTrack, VideoTrack } from './get-tracks';
|
|
2
|
-
export type
|
|
3
|
-
|
|
4
|
-
timestamp: number;
|
|
5
|
-
trackId: number;
|
|
6
|
-
type: 'key' | 'delta';
|
|
7
|
-
duration: number | undefined;
|
|
8
|
-
};
|
|
9
|
-
export type VideoSample = {
|
|
10
|
-
data: Uint8Array;
|
|
11
|
-
timestamp: number;
|
|
12
|
-
duration: number | undefined;
|
|
13
|
-
trackId: number;
|
|
14
|
-
type: 'key' | 'delta';
|
|
15
|
-
cts: number | null;
|
|
16
|
-
dts: number | null;
|
|
17
|
-
};
|
|
18
|
-
export type OnAudioSample = (sample: AudioSample) => void | Promise<void>;
|
|
19
|
-
export type OnVideoSample = (sample: VideoSample) => void | Promise<void>;
|
|
2
|
+
export type OnAudioSample = (sample: AudioOrVideoSample) => void | Promise<void>;
|
|
3
|
+
export type OnVideoSample = (sample: AudioOrVideoSample) => void | Promise<void>;
|
|
20
4
|
export type OnAudioTrack = (track: AudioTrack) => OnAudioSample | Promise<OnAudioSample | null> | null;
|
|
21
5
|
export type OnVideoTrack = (track: VideoTrack) => OnVideoSample | Promise<OnVideoSample | null> | null;
|
|
22
6
|
export type AudioOrVideoSample = {
|
|
23
|
-
timestamp: number;
|
|
24
|
-
type: 'key' | 'delta';
|
|
25
7
|
data: Uint8Array;
|
|
8
|
+
timestamp: number;
|
|
26
9
|
duration: number | undefined;
|
|
10
|
+
trackId: number;
|
|
11
|
+
type: 'key' | 'delta';
|
|
12
|
+
cts: number;
|
|
13
|
+
dts: number;
|
|
27
14
|
};
|
|
@@ -4,7 +4,7 @@ exports.createContent = void 0;
|
|
|
4
4
|
const createContent = () => {
|
|
5
5
|
const buf = new ArrayBuffer(0, {
|
|
6
6
|
// TODO: Educate that the buffer is limited to 2GB
|
|
7
|
-
maxByteLength:
|
|
7
|
+
maxByteLength: 2000000000,
|
|
8
8
|
});
|
|
9
9
|
if (!buf.resize) {
|
|
10
10
|
throw new Error('Could not create buffer writer');
|
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.230",
|
|
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.230",
|
|
13
|
+
"@remotion/eslint-config-internal": "4.0.230"
|
|
14
14
|
},
|
|
15
15
|
"publishConfig": {
|
|
16
16
|
"access": "public"
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare const makeDurationWithPadding: (newDuration: number) => import("../boxes/webm/segments/all-segments").BytesAndOffset;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare const makeMatroskaHeader: () => import("../boxes/webm/segments/all-segments").BytesAndOffset;
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import type { MatroskaElement } from '../boxes/webm/segments/all-segments';
|
|
2
|
-
export type Seek = {
|
|
3
|
-
hexString: MatroskaElement;
|
|
4
|
-
byte: number;
|
|
5
|
-
};
|
|
6
|
-
export declare const createMatroskaSeekHead: (seeks: Seek[]) => import("../boxes/webm/segments/all-segments").BytesAndOffset[];
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import type { BytesAndOffset } from '../boxes/webm/segments/all-segments';
|
|
2
|
-
import type { MediaParserAudioCodec, MediaParserVideoCodec, VideoTrackColorParams } from '../get-tracks';
|
|
3
|
-
export declare const makeMatroskaVideoBytes: ({ color, width, height, }: {
|
|
4
|
-
color: VideoTrackColorParams;
|
|
5
|
-
width: number;
|
|
6
|
-
height: number;
|
|
7
|
-
}) => BytesAndOffset;
|
|
8
|
-
export type MakeTrackAudio = {
|
|
9
|
-
trackNumber: number;
|
|
10
|
-
codec: MediaParserAudioCodec;
|
|
11
|
-
numberOfChannels: number;
|
|
12
|
-
sampleRate: number;
|
|
13
|
-
type: 'audio';
|
|
14
|
-
codecPrivate: Uint8Array | null;
|
|
15
|
-
};
|
|
16
|
-
export type MakeTrackVideo = {
|
|
17
|
-
color: VideoTrackColorParams;
|
|
18
|
-
width: number;
|
|
19
|
-
height: number;
|
|
20
|
-
trackNumber: number;
|
|
21
|
-
codec: MediaParserVideoCodec;
|
|
22
|
-
type: 'video';
|
|
23
|
-
codecPrivate: Uint8Array | null;
|
|
24
|
-
};
|
|
25
|
-
export declare const makeMatroskaAudioTrackEntryBytes: ({ trackNumber, codec, numberOfChannels, sampleRate, codecPrivate, }: MakeTrackAudio) => BytesAndOffset;
|
|
26
|
-
export declare const makeMatroskaVideoTrackEntryBytes: ({ color, width, height, trackNumber, codec, codecPrivate, }: MakeTrackVideo) => BytesAndOffset;
|
|
27
|
-
export declare const makeMatroskaTracks: (tracks: BytesAndOffset[]) => BytesAndOffset[];
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.polyfillAudioChunk = void 0;
|
|
4
|
-
const polyfillAudioChunk = (audioSample) => {
|
|
5
|
-
var _a;
|
|
6
|
-
return {
|
|
7
|
-
...audioSample,
|
|
8
|
-
duration: (_a = audioSample.duration) !== null && _a !== void 0 ? _a : null,
|
|
9
|
-
copyTo(destination) {
|
|
10
|
-
return destination.write(audioSample.data);
|
|
11
|
-
},
|
|
12
|
-
byteLength: audioSample.data.length,
|
|
13
|
-
};
|
|
14
|
-
};
|
|
15
|
-
exports.polyfillAudioChunk = polyfillAudioChunk;
|
|
File without changes
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";
|