@remotion/media-parser 4.0.256 → 4.0.257
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/abort.d.ts +1 -0
- package/dist/abort.js +7 -0
- package/dist/containers/flac/get-channel-count.d.ts +1 -1
- package/dist/controller.d.ts +17 -0
- package/dist/controller.js +31 -0
- package/dist/esm/index.mjs +1 -1
- package/dist/parse-and-download-media.d.ts +2 -0
- package/dist/parse-and-download-media.js +57 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +3 -3
- package/dist/add-new-matroska-tracks.d.ts +0 -8
- package/dist/add-new-matroska-tracks.js +0 -14
- package/dist/boxes/avc/parse-avc.d.ts +0 -18
- package/dist/boxes/avc/parse-avc.js +0 -96
- package/dist/boxes/iso-base-media/base-type.d.ts +0 -4
- package/dist/boxes/iso-base-media/base-type.js +0 -2
- package/dist/boxes/iso-base-media/esds/decoder-specific-config.d.ts +0 -14
- package/dist/boxes/iso-base-media/esds/decoder-specific-config.js +0 -38
- package/dist/boxes/iso-base-media/esds/esds-descriptors.d.ts +0 -29
- package/dist/boxes/iso-base-media/esds/esds-descriptors.js +0 -82
- package/dist/boxes/iso-base-media/esds/esds.d.ts +0 -15
- package/dist/boxes/iso-base-media/esds/esds.js +0 -27
- package/dist/boxes/iso-base-media/ftyp.d.ts +0 -13
- package/dist/boxes/iso-base-media/ftyp.js +0 -22
- package/dist/boxes/iso-base-media/get-actual-number-of-channels.d.ts +0 -13
- package/dist/boxes/iso-base-media/get-actual-number-of-channels.js +0 -22
- package/dist/boxes/iso-base-media/get-sample-positions-from-track.d.ts +0 -4
- package/dist/boxes/iso-base-media/get-sample-positions-from-track.js +0 -54
- package/dist/boxes/iso-base-media/make-track.d.ts +0 -3
- package/dist/boxes/iso-base-media/make-track.js +0 -107
- package/dist/boxes/iso-base-media/mdat/mdat.d.ts +0 -25
- package/dist/boxes/iso-base-media/mdat/mdat.js +0 -122
- package/dist/boxes/iso-base-media/mdhd.d.ts +0 -16
- package/dist/boxes/iso-base-media/mdhd.js +0 -32
- package/dist/boxes/iso-base-media/meta/hdlr.d.ts +0 -12
- package/dist/boxes/iso-base-media/meta/hdlr.js +0 -33
- package/dist/boxes/iso-base-media/meta/ilst.d.ts +0 -28
- package/dist/boxes/iso-base-media/meta/ilst.js +0 -86
- package/dist/boxes/iso-base-media/moov/moov.d.ts +0 -19
- package/dist/boxes/iso-base-media/moov/moov.js +0 -27
- package/dist/boxes/iso-base-media/mvhd.d.ts +0 -30
- package/dist/boxes/iso-base-media/mvhd.js +0 -65
- package/dist/boxes/iso-base-media/parse-icc-profile.d.ts +0 -36
- package/dist/boxes/iso-base-media/parse-icc-profile.js +0 -115
- package/dist/boxes/iso-base-media/process-box.d.ts +0 -34
- package/dist/boxes/iso-base-media/process-box.js +0 -710
- package/dist/boxes/iso-base-media/stsd/av1c.d.ts +0 -9
- package/dist/boxes/iso-base-media/stsd/av1c.js +0 -10
- package/dist/boxes/iso-base-media/stsd/avcc.d.ts +0 -10
- package/dist/boxes/iso-base-media/stsd/avcc.js +0 -21
- package/dist/boxes/iso-base-media/stsd/colr.d.ts +0 -21
- package/dist/boxes/iso-base-media/stsd/colr.js +0 -47
- package/dist/boxes/iso-base-media/stsd/ctts.d.ts +0 -19
- package/dist/boxes/iso-base-media/stsd/ctts.js +0 -34
- package/dist/boxes/iso-base-media/stsd/hvcc.d.ts +0 -11
- package/dist/boxes/iso-base-media/stsd/hvcc.js +0 -17
- package/dist/boxes/iso-base-media/stsd/keys.d.ts +0 -19
- package/dist/boxes/iso-base-media/stsd/keys.js +0 -35
- package/dist/boxes/iso-base-media/stsd/mebx.d.ts +0 -19
- package/dist/boxes/iso-base-media/stsd/mebx.js +0 -32
- package/dist/boxes/iso-base-media/stsd/pasp.d.ts +0 -12
- package/dist/boxes/iso-base-media/stsd/pasp.js +0 -17
- package/dist/boxes/iso-base-media/stsd/samples.d.ts +0 -68
- package/dist/boxes/iso-base-media/stsd/samples.js +0 -320
- package/dist/boxes/iso-base-media/stsd/stco.d.ts +0 -15
- package/dist/boxes/iso-base-media/stsd/stco.js +0 -30
- package/dist/boxes/iso-base-media/stsd/stsc.d.ts +0 -19
- package/dist/boxes/iso-base-media/stsd/stsc.js +0 -34
- package/dist/boxes/iso-base-media/stsd/stsd.d.ts +0 -18
- package/dist/boxes/iso-base-media/stsd/stsd.js +0 -33
- package/dist/boxes/iso-base-media/stsd/stss.d.ts +0 -13
- package/dist/boxes/iso-base-media/stsd/stss.js +0 -28
- package/dist/boxes/iso-base-media/stsd/stsz.d.ts +0 -21
- package/dist/boxes/iso-base-media/stsd/stsz.js +0 -44
- package/dist/boxes/iso-base-media/stsd/stts.d.ts +0 -15
- package/dist/boxes/iso-base-media/stsd/stts.js +0 -35
- package/dist/boxes/iso-base-media/tfdt.d.ts +0 -12
- package/dist/boxes/iso-base-media/tfdt.js +0 -20
- package/dist/boxes/iso-base-media/tfhd.d.ts +0 -16
- package/dist/boxes/iso-base-media/tfhd.js +0 -41
- package/dist/boxes/iso-base-media/tkhd.d.ts +0 -25
- package/dist/boxes/iso-base-media/tkhd.js +0 -87
- package/dist/boxes/iso-base-media/to-date.d.ts +0 -2
- package/dist/boxes/iso-base-media/to-date.js +0 -19
- package/dist/boxes/iso-base-media/trak/trak.d.ts +0 -19
- package/dist/boxes/iso-base-media/trak/trak.js +0 -27
- package/dist/boxes/iso-base-media/traversal.d.ts +0 -39
- package/dist/boxes/iso-base-media/traversal.js +0 -201
- package/dist/boxes/iso-base-media/trun.d.ts +0 -21
- package/dist/boxes/iso-base-media/trun.js +0 -44
- package/dist/boxes/iso-base-media/void-box.d.ts +0 -4
- package/dist/boxes/iso-base-media/void-box.js +0 -2
- package/dist/boxes/riff/expect-riff-box.d.ts +0 -17
- package/dist/boxes/riff/expect-riff-box.js +0 -49
- package/dist/boxes/riff/get-tracks-from-avi.d.ts +0 -22
- package/dist/boxes/riff/get-tracks-from-avi.js +0 -114
- package/dist/boxes/riff/is-movi.d.ts +0 -2
- package/dist/boxes/riff/is-movi.js +0 -12
- package/dist/boxes/riff/parse-avih.d.ts +0 -6
- package/dist/boxes/riff/parse-avih.js +0 -32
- package/dist/boxes/riff/parse-box.d.ts +0 -15
- package/dist/boxes/riff/parse-box.js +0 -146
- package/dist/boxes/riff/parse-fmt-box.d.ts +0 -7
- package/dist/boxes/riff/parse-fmt-box.js +0 -33
- package/dist/boxes/riff/parse-isft.d.ts +0 -6
- package/dist/boxes/riff/parse-isft.js +0 -17
- package/dist/boxes/riff/parse-list-box.d.ts +0 -8
- package/dist/boxes/riff/parse-list-box.js +0 -30
- package/dist/boxes/riff/parse-movi.d.ts +0 -17
- package/dist/boxes/riff/parse-movi.js +0 -133
- package/dist/boxes/riff/parse-riff-box.d.ts +0 -10
- package/dist/boxes/riff/parse-riff-box.js +0 -37
- package/dist/boxes/riff/parse-strf.d.ts +0 -7
- package/dist/boxes/riff/parse-strf.js +0 -67
- package/dist/boxes/riff/parse-strh.d.ts +0 -6
- package/dist/boxes/riff/parse-strh.js +0 -46
- package/dist/boxes/riff/riff-box.d.ts +0 -85
- package/dist/boxes/riff/riff-box.js +0 -2
- package/dist/boxes/riff/timescale.d.ts +0 -1
- package/dist/boxes/riff/timescale.js +0 -4
- package/dist/boxes/riff/traversal.d.ts +0 -8
- package/dist/boxes/riff/traversal.js +0 -36
- package/dist/boxes/webm/allowed-partial-segments.d.ts +0 -1
- package/dist/boxes/webm/allowed-partial-segments.js +0 -4
- package/dist/boxes/webm/av1-codec-private.d.ts +0 -2
- package/dist/boxes/webm/av1-codec-private.js +0 -95
- package/dist/boxes/webm/color.d.ts +0 -4
- package/dist/boxes/webm/color.js +0 -127
- package/dist/boxes/webm/description.d.ts +0 -2
- package/dist/boxes/webm/description.js +0 -83
- package/dist/boxes/webm/ebml.d.ts +0 -2
- package/dist/boxes/webm/ebml.js +0 -94
- package/dist/boxes/webm/get-ready-tracks.d.ts +0 -3
- package/dist/boxes/webm/get-ready-tracks.js +0 -29
- package/dist/boxes/webm/get-sample-from-block.d.ts +0 -17
- package/dist/boxes/webm/get-sample-from-block.js +0 -81
- package/dist/boxes/webm/make-header.d.ts +0 -8
- package/dist/boxes/webm/make-header.js +0 -187
- package/dist/boxes/webm/make-track.d.ts +0 -9
- package/dist/boxes/webm/make-track.js +0 -261
- package/dist/boxes/webm/parse-ebml.d.ts +0 -12
- package/dist/boxes/webm/parse-ebml.js +0 -185
- package/dist/boxes/webm/parse-webm-header.d.ts +0 -9
- package/dist/boxes/webm/parse-webm-header.js +0 -36
- package/dist/boxes/webm/segments/all-segments.d.ts +0 -976
- package/dist/boxes/webm/segments/all-segments.js +0 -724
- package/dist/boxes/webm/segments/block-simple-block-flags.d.ts +0 -9
- package/dist/boxes/webm/segments/block-simple-block-flags.js +0 -38
- package/dist/boxes/webm/segments/parse-children.d.ts +0 -23
- package/dist/boxes/webm/segments/parse-children.js +0 -145
- package/dist/boxes/webm/segments/track-entry.d.ts +0 -9
- package/dist/boxes/webm/segments/track-entry.js +0 -24
- package/dist/boxes/webm/segments.d.ts +0 -15
- package/dist/boxes/webm/segments.js +0 -161
- package/dist/boxes/webm/traversal.d.ts +0 -33
- package/dist/boxes/webm/traversal.js +0 -265
- package/dist/create/cluster-segment.d.ts +0 -10
- package/dist/create/cluster-segment.js +0 -39
- package/dist/create/cluster.d.ts +0 -19
- package/dist/create/cluster.js +0 -55
- package/dist/create/create-media.d.ts +0 -15
- package/dist/create/create-media.js +0 -165
- package/dist/create/event-emitter.d.ts +0 -31
- package/dist/create/event-emitter.js +0 -25
- package/dist/create/iso-base-media/codec-specific/avc1.d.ts +0 -2
- package/dist/create/iso-base-media/codec-specific/avc1.js +0 -48
- package/dist/create/iso-base-media/codec-specific/create-codec-specific-data.d.ts +0 -22
- package/dist/create/iso-base-media/codec-specific/create-codec-specific-data.js +0 -36
- package/dist/create/iso-base-media/codec-specific/mp4a.d.ts +0 -2
- package/dist/create/iso-base-media/codec-specific/mp4a.js +0 -74
- package/dist/create/iso-base-media/create-colr.d.ts +0 -6
- package/dist/create/iso-base-media/create-colr.js +0 -26
- package/dist/create/iso-base-media/create-ftyp.d.ts +0 -10
- package/dist/create/iso-base-media/create-ftyp.js +0 -22
- package/dist/create/iso-base-media/create-ilst.d.ts +0 -1
- package/dist/create/iso-base-media/create-ilst.js +0 -14
- package/dist/create/iso-base-media/create-iso-base-media.d.ts +0 -2
- package/dist/create/iso-base-media/create-iso-base-media.js +0 -165
- package/dist/create/iso-base-media/create-mdia.d.ts +0 -5
- package/dist/create/iso-base-media/create-mdia.js +0 -18
- package/dist/create/iso-base-media/create-moov.d.ts +0 -5
- package/dist/create/iso-base-media/create-moov.js +0 -18
- package/dist/create/iso-base-media/create-mvhd.d.ts +0 -10
- package/dist/create/iso-base-media/create-mvhd.js +0 -48
- package/dist/create/iso-base-media/create-trak.d.ts +0 -4
- package/dist/create/iso-base-media/create-trak.js +0 -17
- package/dist/create/iso-base-media/create-udta.d.ts +0 -1
- package/dist/create/iso-base-media/create-udta.js +0 -14
- package/dist/create/iso-base-media/create-url.d.ts +0 -1
- package/dist/create/iso-base-media/create-url.js +0 -16
- package/dist/create/iso-base-media/example-stts.d.ts +0 -3
- package/dist/create/iso-base-media/example-stts.js +0 -2797
- package/dist/create/iso-base-media/ilst/create-cmt.d.ts +0 -1
- package/dist/create/iso-base-media/ilst/create-cmt.js +0 -26
- package/dist/create/iso-base-media/ilst/create-too.d.ts +0 -1
- package/dist/create/iso-base-media/ilst/create-too.js +0 -27
- package/dist/create/iso-base-media/mdia/create-mdhd.d.ts +0 -6
- package/dist/create/iso-base-media/mdia/create-mdhd.js +0 -33
- package/dist/create/iso-base-media/mp4-header.d.ts +0 -6
- package/dist/create/iso-base-media/mp4-header.js +0 -48
- package/dist/create/iso-base-media/primitives.d.ts +0 -15
- package/dist/create/iso-base-media/primitives.js +0 -133
- package/dist/create/iso-base-media/serialize-track.d.ts +0 -9
- package/dist/create/iso-base-media/serialize-track.js +0 -63
- package/dist/create/iso-base-media/trak/create-tkhd.d.ts +0 -27
- package/dist/create/iso-base-media/trak/create-tkhd.js +0 -97
- package/dist/create/iso-base-media/trak/mdia/create-minf.d.ts +0 -4
- package/dist/create/iso-base-media/trak/mdia/create-minf.js +0 -19
- package/dist/create/iso-base-media/trak/mdia/minf/create-dinf.d.ts +0 -1
- package/dist/create/iso-base-media/trak/mdia/minf/create-dinf.js +0 -22
- package/dist/create/iso-base-media/trak/mdia/minf/create-smhd.d.ts +0 -1
- package/dist/create/iso-base-media/trak/mdia/minf/create-smhd.js +0 -20
- package/dist/create/iso-base-media/trak/mdia/minf/create-stbl.d.ts +0 -6
- package/dist/create/iso-base-media/trak/mdia/minf/create-stbl.js +0 -35
- package/dist/create/iso-base-media/trak/mdia/minf/create-vmhd.d.ts +0 -1
- package/dist/create/iso-base-media/trak/mdia/minf/create-vmhd.js +0 -20
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-ctts.d.ts +0 -2
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-ctts.js +0 -45
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stco.d.ts +0 -2
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stco.js +0 -28
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stsc.d.ts +0 -2
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stsc.js +0 -56
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stss.d.ts +0 -2
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stss.js +0 -23
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stsz.d.ts +0 -2
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stsz.js +0 -25
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stts.d.ts +0 -2
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/create-stts.js +0 -48
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/stsd/create-avc1.d.ts +0 -1
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/stsd/create-avc1.js +0 -20
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/stsd/create-avcc.d.ts +0 -1
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/stsd/create-avcc.js +0 -16
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/stsd/create-pasp.d.ts +0 -1
- package/dist/create/iso-base-media/trak/mdia/minf/stbl/stsd/create-pasp.js +0 -13
- package/dist/create/iso-base-media/udta/create-meta.d.ts +0 -4
- package/dist/create/iso-base-media/udta/create-meta.js +0 -20
- package/dist/create/iso-base-media/udta/meta/create-hdlr.d.ts +0 -1
- package/dist/create/iso-base-media/udta/meta/create-hdlr.js +0 -32
- package/dist/create/make-duration-with-padding.d.ts +0 -1
- package/dist/create/make-duration-with-padding.js +0 -15
- package/dist/create/make-track-info.d.ts +0 -20
- package/dist/create/make-track-info.js +0 -2
- package/dist/create/matroska/cluster-segment.d.ts +0 -10
- package/dist/create/matroska/cluster-segment.js +0 -39
- package/dist/create/matroska/cluster.d.ts +0 -25
- package/dist/create/matroska/cluster.js +0 -77
- package/dist/create/matroska/create-matroska-media.d.ts +0 -2
- package/dist/create/matroska/create-matroska-media.js +0 -187
- package/dist/create/matroska/make-duration-with-padding.d.ts +0 -1
- package/dist/create/matroska/make-duration-with-padding.js +0 -15
- package/dist/create/matroska/matroska-cues.d.ts +0 -6
- package/dist/create/matroska/matroska-cues.js +0 -49
- package/dist/create/matroska/matroska-header.d.ts +0 -1
- package/dist/create/matroska/matroska-header.js +0 -66
- package/dist/create/matroska/matroska-info.d.ts +0 -3
- package/dist/create/matroska/matroska-info.js +0 -33
- package/dist/create/matroska/matroska-seek.d.ts +0 -6
- package/dist/create/matroska/matroska-seek.js +0 -32
- package/dist/create/matroska/matroska-segment.d.ts +0 -3
- package/dist/create/matroska/matroska-segment.js +0 -13
- package/dist/create/matroska/matroska-trackentry.d.ts +0 -10
- package/dist/create/matroska/matroska-trackentry.js +0 -249
- package/dist/create/matroska-cues.d.ts +0 -6
- package/dist/create/matroska-cues.js +0 -49
- package/dist/create/matroska-header.d.ts +0 -1
- package/dist/create/matroska-header.js +0 -66
- package/dist/create/matroska-info.d.ts +0 -3
- package/dist/create/matroska-info.js +0 -33
- package/dist/create/matroska-seek.d.ts +0 -6
- package/dist/create/matroska-seek.js +0 -32
- package/dist/create/matroska-segment.d.ts +0 -3
- package/dist/create/matroska-segment.js +0 -13
- package/dist/create/matroska-trackentry.d.ts +0 -27
- package/dist/create/matroska-trackentry.js +0 -243
- package/dist/create/media-fn.d.ts +0 -33
- package/dist/create/media-fn.js +0 -2
- package/dist/create/progress-tracker.d.ts +0 -7
- package/dist/create/progress-tracker.js +0 -43
- package/dist/create/timescale.d.ts +0 -1
- package/dist/create/timescale.js +0 -4
- package/dist/create/wav/create-wav.d.ts +0 -2
- package/dist/create/wav/create-wav.js +0 -110
- package/dist/create/with-resolvers.d.ts +0 -10
- package/dist/create/with-resolvers.js +0 -28
- package/dist/esm/buffer.mjs +0 -56
- package/dist/esm/web-fs.mjs +0 -73
- package/dist/parse-video.d.ts +0 -25
- package/dist/parse-video.js +0 -39
- package/dist/parser-context.d.ts +0 -10
- package/dist/parser-context.js +0 -2
- package/dist/parser-state.d.ts +0 -22
- package/dist/parser-state.js +0 -132
- package/dist/writers/buffer-implementation/writer.d.ts +0 -2
- package/dist/writers/buffer-implementation/writer.js +0 -54
- package/dist/writers/buffer.d.ts +0 -2
- package/dist/writers/buffer.js +0 -7
- package/dist/writers/web-fs.d.ts +0 -3
- package/dist/writers/web-fs.js +0 -74
|
@@ -1,265 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getClusterSegment = exports.getPrivateData = exports.getBitDepth = exports.getNumberOfChannels = exports.getSampleRate = exports.getAudioSegment = exports.getVideoSegment = exports.getTimescaleSegment = exports.getTrackWithUid = exports.getTracksSegment = exports.getDisplayWidthSegment = exports.getHeightSegment = exports.getWidthSegment = exports.getTrackTypeSegment = exports.getDisplayHeightSegment = exports.getRangeSegment = exports.getPrimariesSegment = exports.getMatrixCoefficientsSegment = exports.getTransferCharacteristicsSegment = exports.getColourSegment = exports.getCodecSegment = exports.getTrackId = exports.getTrackByNumber = exports.getTrackTimestampScale = exports.getTrackCodec = exports.getTrackNumber = exports.getMainSegment = void 0;
|
|
4
|
-
const getMainSegment = (segments) => {
|
|
5
|
-
return segments.find((s) => s.type === 'Segment');
|
|
6
|
-
};
|
|
7
|
-
exports.getMainSegment = getMainSegment;
|
|
8
|
-
const getTrackNumber = (track) => {
|
|
9
|
-
var _a;
|
|
10
|
-
const child = track.value.find((b) => b.type === 'TrackNumber');
|
|
11
|
-
return (_a = child === null || child === void 0 ? void 0 : child.value) !== null && _a !== void 0 ? _a : null;
|
|
12
|
-
};
|
|
13
|
-
exports.getTrackNumber = getTrackNumber;
|
|
14
|
-
const getTrackCodec = (track) => {
|
|
15
|
-
const child = track.value.find((b) => b.type === 'CodecID');
|
|
16
|
-
return child !== null && child !== void 0 ? child : null;
|
|
17
|
-
};
|
|
18
|
-
exports.getTrackCodec = getTrackCodec;
|
|
19
|
-
const getTrackTimestampScale = (track) => {
|
|
20
|
-
const child = track.value.find((b) => b.type === 'TrackTimestampScale');
|
|
21
|
-
if (!child) {
|
|
22
|
-
return null;
|
|
23
|
-
}
|
|
24
|
-
if (child.type !== 'TrackTimestampScale') {
|
|
25
|
-
throw new Error('Expected TrackTimestampScale');
|
|
26
|
-
}
|
|
27
|
-
return child.value;
|
|
28
|
-
};
|
|
29
|
-
exports.getTrackTimestampScale = getTrackTimestampScale;
|
|
30
|
-
const getTrackByNumber = (tracks, id) => {
|
|
31
|
-
return tracks.find((track) => {
|
|
32
|
-
const trackNumber = (0, exports.getTrackNumber)(track);
|
|
33
|
-
return (trackNumber === null || trackNumber === void 0 ? void 0 : trackNumber.value) === id;
|
|
34
|
-
});
|
|
35
|
-
};
|
|
36
|
-
exports.getTrackByNumber = getTrackByNumber;
|
|
37
|
-
const getTrackId = (track) => {
|
|
38
|
-
const trackId = track.value.find((b) => b.type === 'TrackNumber');
|
|
39
|
-
if (!trackId || trackId.type !== 'TrackNumber') {
|
|
40
|
-
throw new Error('Expected track number segment');
|
|
41
|
-
}
|
|
42
|
-
return trackId.value.value;
|
|
43
|
-
};
|
|
44
|
-
exports.getTrackId = getTrackId;
|
|
45
|
-
const getCodecSegment = (track) => {
|
|
46
|
-
const codec = track.value.find((b) => b.type === 'CodecID');
|
|
47
|
-
if (!codec || codec.type !== 'CodecID') {
|
|
48
|
-
return null;
|
|
49
|
-
}
|
|
50
|
-
return codec;
|
|
51
|
-
};
|
|
52
|
-
exports.getCodecSegment = getCodecSegment;
|
|
53
|
-
const getColourSegment = (track) => {
|
|
54
|
-
const videoSegment = (0, exports.getVideoSegment)(track);
|
|
55
|
-
if (!videoSegment) {
|
|
56
|
-
return null;
|
|
57
|
-
}
|
|
58
|
-
const colour = videoSegment.value.find((b) => b.type === 'Colour');
|
|
59
|
-
if (!colour || colour.type !== 'Colour') {
|
|
60
|
-
return null;
|
|
61
|
-
}
|
|
62
|
-
return colour;
|
|
63
|
-
};
|
|
64
|
-
exports.getColourSegment = getColourSegment;
|
|
65
|
-
const getTransferCharacteristicsSegment = (color) => {
|
|
66
|
-
if (!color || color.type !== 'Colour') {
|
|
67
|
-
return null;
|
|
68
|
-
}
|
|
69
|
-
const box = color.value.find((b) => b.type === 'TransferCharacteristics');
|
|
70
|
-
if (!box || box.type !== 'TransferCharacteristics') {
|
|
71
|
-
return null;
|
|
72
|
-
}
|
|
73
|
-
return box;
|
|
74
|
-
};
|
|
75
|
-
exports.getTransferCharacteristicsSegment = getTransferCharacteristicsSegment;
|
|
76
|
-
const getMatrixCoefficientsSegment = (color) => {
|
|
77
|
-
if (!color || color.type !== 'Colour') {
|
|
78
|
-
return null;
|
|
79
|
-
}
|
|
80
|
-
const box = color.value.find((b) => b.type === 'MatrixCoefficients');
|
|
81
|
-
if (!box || box.type !== 'MatrixCoefficients') {
|
|
82
|
-
return null;
|
|
83
|
-
}
|
|
84
|
-
return box;
|
|
85
|
-
};
|
|
86
|
-
exports.getMatrixCoefficientsSegment = getMatrixCoefficientsSegment;
|
|
87
|
-
const getPrimariesSegment = (color) => {
|
|
88
|
-
if (!color || color.type !== 'Colour') {
|
|
89
|
-
return null;
|
|
90
|
-
}
|
|
91
|
-
const box = color.value.find((b) => b.type === 'Primaries');
|
|
92
|
-
if (!box || box.type !== 'Primaries') {
|
|
93
|
-
return null;
|
|
94
|
-
}
|
|
95
|
-
return box;
|
|
96
|
-
};
|
|
97
|
-
exports.getPrimariesSegment = getPrimariesSegment;
|
|
98
|
-
const getRangeSegment = (color) => {
|
|
99
|
-
if (!color || color.type !== 'Colour') {
|
|
100
|
-
return null;
|
|
101
|
-
}
|
|
102
|
-
const box = color.value.find((b) => b.type === 'Range');
|
|
103
|
-
if (!box || box.type !== 'Range') {
|
|
104
|
-
return null;
|
|
105
|
-
}
|
|
106
|
-
return box;
|
|
107
|
-
};
|
|
108
|
-
exports.getRangeSegment = getRangeSegment;
|
|
109
|
-
const getDisplayHeightSegment = (track) => {
|
|
110
|
-
const videoSegment = (0, exports.getVideoSegment)(track);
|
|
111
|
-
if (!videoSegment) {
|
|
112
|
-
return null;
|
|
113
|
-
}
|
|
114
|
-
const displayHeight = videoSegment.value.find((b) => b.type === 'DisplayHeight');
|
|
115
|
-
if (!displayHeight || displayHeight.type !== 'DisplayHeight') {
|
|
116
|
-
return null;
|
|
117
|
-
}
|
|
118
|
-
return displayHeight;
|
|
119
|
-
};
|
|
120
|
-
exports.getDisplayHeightSegment = getDisplayHeightSegment;
|
|
121
|
-
const getTrackTypeSegment = (track) => {
|
|
122
|
-
const trackType = track.value.find((b) => b.type === 'TrackType');
|
|
123
|
-
if (!trackType || trackType.type !== 'TrackType') {
|
|
124
|
-
return null;
|
|
125
|
-
}
|
|
126
|
-
return trackType;
|
|
127
|
-
};
|
|
128
|
-
exports.getTrackTypeSegment = getTrackTypeSegment;
|
|
129
|
-
const getWidthSegment = (track) => {
|
|
130
|
-
const videoSegment = (0, exports.getVideoSegment)(track);
|
|
131
|
-
if (!videoSegment) {
|
|
132
|
-
return null;
|
|
133
|
-
}
|
|
134
|
-
const width = videoSegment.value.find((b) => b.type === 'PixelWidth');
|
|
135
|
-
if (!width || width.type !== 'PixelWidth') {
|
|
136
|
-
return null;
|
|
137
|
-
}
|
|
138
|
-
return width;
|
|
139
|
-
};
|
|
140
|
-
exports.getWidthSegment = getWidthSegment;
|
|
141
|
-
const getHeightSegment = (track) => {
|
|
142
|
-
const videoSegment = (0, exports.getVideoSegment)(track);
|
|
143
|
-
if (!videoSegment) {
|
|
144
|
-
return null;
|
|
145
|
-
}
|
|
146
|
-
const height = videoSegment.value.find((b) => b.type === 'PixelHeight');
|
|
147
|
-
if (!height || height.type !== 'PixelHeight') {
|
|
148
|
-
return null;
|
|
149
|
-
}
|
|
150
|
-
return height;
|
|
151
|
-
};
|
|
152
|
-
exports.getHeightSegment = getHeightSegment;
|
|
153
|
-
const getDisplayWidthSegment = (track) => {
|
|
154
|
-
const videoSegment = (0, exports.getVideoSegment)(track);
|
|
155
|
-
if (!videoSegment) {
|
|
156
|
-
return null;
|
|
157
|
-
}
|
|
158
|
-
const displayWidth = videoSegment.value.find((b) => b.type === 'DisplayWidth');
|
|
159
|
-
if (!displayWidth || displayWidth.type !== 'DisplayWidth') {
|
|
160
|
-
return null;
|
|
161
|
-
}
|
|
162
|
-
return displayWidth;
|
|
163
|
-
};
|
|
164
|
-
exports.getDisplayWidthSegment = getDisplayWidthSegment;
|
|
165
|
-
const getTracksSegment = (segment) => {
|
|
166
|
-
const tracksSegment = segment.value.find((b) => b.type === 'Tracks');
|
|
167
|
-
if (!tracksSegment) {
|
|
168
|
-
return null;
|
|
169
|
-
}
|
|
170
|
-
return tracksSegment;
|
|
171
|
-
};
|
|
172
|
-
exports.getTracksSegment = getTracksSegment;
|
|
173
|
-
const getTrackWithUid = (segment, trackUid) => {
|
|
174
|
-
var _a, _b;
|
|
175
|
-
const tracksSegment = (0, exports.getTracksSegment)(segment);
|
|
176
|
-
if (!tracksSegment) {
|
|
177
|
-
return null;
|
|
178
|
-
}
|
|
179
|
-
const trackEntries = tracksSegment.value.filter((t) => t.type === 'TrackEntry');
|
|
180
|
-
const trackEntry = trackEntries.find((entry) => {
|
|
181
|
-
return entry === null || entry === void 0 ? void 0 : entry.value.find((t) => t.type === 'TrackUID' && t.value === trackUid);
|
|
182
|
-
});
|
|
183
|
-
if (!trackEntry) {
|
|
184
|
-
return null;
|
|
185
|
-
}
|
|
186
|
-
return ((_b = (_a = trackEntry.value.find((t) => t.type === 'TrackNumber')) === null || _a === void 0 ? void 0 : _a.value.value) !== null && _b !== void 0 ? _b : null);
|
|
187
|
-
};
|
|
188
|
-
exports.getTrackWithUid = getTrackWithUid;
|
|
189
|
-
const getTimescaleSegment = (segment) => {
|
|
190
|
-
const infoSegment = segment.value.find((b) => b.type === 'Info');
|
|
191
|
-
if (!infoSegment || infoSegment.type !== 'Info') {
|
|
192
|
-
return null;
|
|
193
|
-
}
|
|
194
|
-
const timescale = infoSegment.value.find((b) => b.type === 'TimestampScale');
|
|
195
|
-
if (!timescale || timescale.type !== 'TimestampScale') {
|
|
196
|
-
return null;
|
|
197
|
-
}
|
|
198
|
-
return timescale;
|
|
199
|
-
};
|
|
200
|
-
exports.getTimescaleSegment = getTimescaleSegment;
|
|
201
|
-
const getVideoSegment = (track) => {
|
|
202
|
-
const videoSegment = track.value.find((b) => b.type === 'Video');
|
|
203
|
-
if (!videoSegment || videoSegment.type !== 'Video') {
|
|
204
|
-
return null;
|
|
205
|
-
}
|
|
206
|
-
return videoSegment !== null && videoSegment !== void 0 ? videoSegment : null;
|
|
207
|
-
};
|
|
208
|
-
exports.getVideoSegment = getVideoSegment;
|
|
209
|
-
const getAudioSegment = (track) => {
|
|
210
|
-
const audioSegment = track.value.find((b) => b.type === 'Audio');
|
|
211
|
-
if (!audioSegment || audioSegment.type !== 'Audio') {
|
|
212
|
-
return null;
|
|
213
|
-
}
|
|
214
|
-
return audioSegment !== null && audioSegment !== void 0 ? audioSegment : null;
|
|
215
|
-
};
|
|
216
|
-
exports.getAudioSegment = getAudioSegment;
|
|
217
|
-
const getSampleRate = (track) => {
|
|
218
|
-
const audioSegment = (0, exports.getAudioSegment)(track);
|
|
219
|
-
if (!audioSegment) {
|
|
220
|
-
return null;
|
|
221
|
-
}
|
|
222
|
-
const samplingFrequency = audioSegment.value.find((b) => b.type === 'SamplingFrequency');
|
|
223
|
-
if (!samplingFrequency || samplingFrequency.type !== 'SamplingFrequency') {
|
|
224
|
-
return null;
|
|
225
|
-
}
|
|
226
|
-
return samplingFrequency.value.value;
|
|
227
|
-
};
|
|
228
|
-
exports.getSampleRate = getSampleRate;
|
|
229
|
-
const getNumberOfChannels = (track) => {
|
|
230
|
-
const audioSegment = (0, exports.getAudioSegment)(track);
|
|
231
|
-
if (!audioSegment) {
|
|
232
|
-
throw new Error('Could not find audio segment');
|
|
233
|
-
}
|
|
234
|
-
const channels = audioSegment.value.find((b) => b.type === 'Channels');
|
|
235
|
-
if (!channels || channels.type !== 'Channels') {
|
|
236
|
-
return 1;
|
|
237
|
-
}
|
|
238
|
-
return channels.value.value;
|
|
239
|
-
};
|
|
240
|
-
exports.getNumberOfChannels = getNumberOfChannels;
|
|
241
|
-
const getBitDepth = (track) => {
|
|
242
|
-
const audioSegment = (0, exports.getAudioSegment)(track);
|
|
243
|
-
if (!audioSegment) {
|
|
244
|
-
return null;
|
|
245
|
-
}
|
|
246
|
-
const bitDepth = audioSegment.value.find((b) => b.type === 'BitDepth');
|
|
247
|
-
if (!bitDepth || bitDepth.type !== 'BitDepth') {
|
|
248
|
-
return null;
|
|
249
|
-
}
|
|
250
|
-
return bitDepth.value.value;
|
|
251
|
-
};
|
|
252
|
-
exports.getBitDepth = getBitDepth;
|
|
253
|
-
const getPrivateData = (track) => {
|
|
254
|
-
const privateData = track.value.find((b) => b.type === 'CodecPrivate');
|
|
255
|
-
if (!privateData || privateData.type !== 'CodecPrivate') {
|
|
256
|
-
return null;
|
|
257
|
-
}
|
|
258
|
-
return privateData.value;
|
|
259
|
-
};
|
|
260
|
-
exports.getPrivateData = getPrivateData;
|
|
261
|
-
const getClusterSegment = (segment) => {
|
|
262
|
-
const clusterSegment = segment.value.find((b) => b.type === 'Cluster');
|
|
263
|
-
return clusterSegment !== null && clusterSegment !== void 0 ? clusterSegment : null;
|
|
264
|
-
};
|
|
265
|
-
exports.getClusterSegment = getClusterSegment;
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
export declare const CLUSTER_MIN_VINT_WIDTH = 8;
|
|
2
|
-
export declare const createClusterSegment: (timestamp: number) => import("../boxes/webm/segments/all-segments").BytesAndOffset;
|
|
3
|
-
export declare const makeSimpleBlock: ({ bytes, trackNumber, timecodeRelativeToCluster, keyframe, invisible, lacing, }: {
|
|
4
|
-
bytes: Uint8Array;
|
|
5
|
-
trackNumber: number;
|
|
6
|
-
timecodeRelativeToCluster: number;
|
|
7
|
-
keyframe: boolean;
|
|
8
|
-
invisible: boolean;
|
|
9
|
-
lacing: number;
|
|
10
|
-
}) => Uint8Array;
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.makeSimpleBlock = exports.createClusterSegment = exports.CLUSTER_MIN_VINT_WIDTH = void 0;
|
|
4
|
-
const ebml_1 = require("../boxes/webm/ebml");
|
|
5
|
-
const make_header_1 = require("../boxes/webm/make-header");
|
|
6
|
-
exports.CLUSTER_MIN_VINT_WIDTH = 8;
|
|
7
|
-
const createClusterSegment = (timestamp) => {
|
|
8
|
-
return (0, make_header_1.makeMatroskaBytes)({
|
|
9
|
-
type: 'Cluster',
|
|
10
|
-
value: [
|
|
11
|
-
{
|
|
12
|
-
type: 'Timestamp',
|
|
13
|
-
minVintWidth: null,
|
|
14
|
-
value: {
|
|
15
|
-
value: timestamp,
|
|
16
|
-
byteLength: null,
|
|
17
|
-
},
|
|
18
|
-
},
|
|
19
|
-
],
|
|
20
|
-
minVintWidth: exports.CLUSTER_MIN_VINT_WIDTH,
|
|
21
|
-
});
|
|
22
|
-
};
|
|
23
|
-
exports.createClusterSegment = createClusterSegment;
|
|
24
|
-
const makeSimpleBlock = ({ bytes, trackNumber, timecodeRelativeToCluster, keyframe, invisible, lacing, }) => {
|
|
25
|
-
const simpleBlockHeader = (0, make_header_1.matroskaToHex)('0xa3');
|
|
26
|
-
const headerByte = (Number(keyframe) << 7) | (Number(invisible) << 3) | (lacing << 1);
|
|
27
|
-
const body = (0, make_header_1.combineUint8Arrays)([
|
|
28
|
-
(0, ebml_1.getVariableInt)(trackNumber, null),
|
|
29
|
-
(0, make_header_1.serializeUint16)(timecodeRelativeToCluster),
|
|
30
|
-
new Uint8Array([headerByte]),
|
|
31
|
-
bytes,
|
|
32
|
-
]);
|
|
33
|
-
return (0, make_header_1.combineUint8Arrays)([
|
|
34
|
-
simpleBlockHeader,
|
|
35
|
-
(0, ebml_1.getVariableInt)(body.length, null),
|
|
36
|
-
body,
|
|
37
|
-
]);
|
|
38
|
-
};
|
|
39
|
-
exports.makeSimpleBlock = makeSimpleBlock;
|
package/dist/create/cluster.d.ts
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import type { Writer } from '../writers/writer';
|
|
2
|
-
export type AudioOrVideoSample = {
|
|
3
|
-
timestamp: number;
|
|
4
|
-
type: 'key' | 'delta';
|
|
5
|
-
copyTo(destination: AllowSharedBufferSource): void;
|
|
6
|
-
byteLength: number;
|
|
7
|
-
duration: number | null;
|
|
8
|
-
};
|
|
9
|
-
export declare const timestampToClusterTimestamp: (timestamp: number) => number;
|
|
10
|
-
export declare const makeCluster: (w: Writer, timestamp: number) => Promise<{
|
|
11
|
-
addSample: (chunk: AudioOrVideoSample, trackNumber: number) => Promise<{
|
|
12
|
-
timecodeRelativeToCluster: number;
|
|
13
|
-
}>;
|
|
14
|
-
shouldMakeNewCluster: ({ isVideo, keyframe, newT, }: {
|
|
15
|
-
newT: number;
|
|
16
|
-
keyframe: boolean;
|
|
17
|
-
isVideo: boolean;
|
|
18
|
-
}) => boolean;
|
|
19
|
-
}>;
|
package/dist/create/cluster.js
DELETED
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.makeCluster = exports.timestampToClusterTimestamp = void 0;
|
|
4
|
-
const ebml_1 = require("../boxes/webm/ebml");
|
|
5
|
-
const make_header_1 = require("../boxes/webm/make-header");
|
|
6
|
-
const all_segments_1 = require("../boxes/webm/segments/all-segments");
|
|
7
|
-
const cluster_segment_1 = require("./cluster-segment");
|
|
8
|
-
const timescale_1 = require("./timescale");
|
|
9
|
-
const maxClusterTimestamp = 2 ** 15;
|
|
10
|
-
const timestampToClusterTimestamp = (timestamp) => {
|
|
11
|
-
return Math.round((timestamp / timescale_1.CREATE_TIME_SCALE) * 1000);
|
|
12
|
-
};
|
|
13
|
-
exports.timestampToClusterTimestamp = timestampToClusterTimestamp;
|
|
14
|
-
const makeCluster = async (w, timestamp) => {
|
|
15
|
-
const cluster = (0, cluster_segment_1.createClusterSegment)((0, exports.timestampToClusterTimestamp)(timestamp));
|
|
16
|
-
const clusterVIntPosition = w.getWrittenByteCount() +
|
|
17
|
-
cluster.offsets.offset +
|
|
18
|
-
(0, make_header_1.matroskaToHex)(all_segments_1.matroskaElements.Cluster).byteLength;
|
|
19
|
-
let clusterSize = cluster.bytes.byteLength -
|
|
20
|
-
(0, make_header_1.matroskaToHex)(all_segments_1.matroskaElements.Cluster).byteLength -
|
|
21
|
-
cluster_segment_1.CLUSTER_MIN_VINT_WIDTH;
|
|
22
|
-
await w.write(cluster.bytes);
|
|
23
|
-
const addSample = async (chunk, trackNumber) => {
|
|
24
|
-
const arr = new Uint8Array(chunk.byteLength);
|
|
25
|
-
chunk.copyTo(arr);
|
|
26
|
-
const timecodeRelativeToCluster = (0, exports.timestampToClusterTimestamp)(chunk.timestamp) -
|
|
27
|
-
(0, exports.timestampToClusterTimestamp)(timestamp);
|
|
28
|
-
if (timecodeRelativeToCluster < 0) {
|
|
29
|
-
throw new Error(`timecodeRelativeToCluster is negative (track ${trackNumber})`);
|
|
30
|
-
}
|
|
31
|
-
if (timecodeRelativeToCluster > maxClusterTimestamp) {
|
|
32
|
-
throw new Error(`timecodeRelativeToCluster is too big: ${timecodeRelativeToCluster} > ${maxClusterTimestamp}`);
|
|
33
|
-
}
|
|
34
|
-
const keyframe = chunk.type === 'key';
|
|
35
|
-
const simpleBlock = (0, cluster_segment_1.makeSimpleBlock)({
|
|
36
|
-
bytes: arr,
|
|
37
|
-
invisible: false,
|
|
38
|
-
keyframe,
|
|
39
|
-
lacing: 0,
|
|
40
|
-
trackNumber,
|
|
41
|
-
timecodeRelativeToCluster,
|
|
42
|
-
});
|
|
43
|
-
clusterSize += simpleBlock.byteLength;
|
|
44
|
-
await w.updateDataAt(clusterVIntPosition, (0, ebml_1.getVariableInt)(clusterSize, cluster_segment_1.CLUSTER_MIN_VINT_WIDTH));
|
|
45
|
-
await w.write(simpleBlock);
|
|
46
|
-
return { timecodeRelativeToCluster };
|
|
47
|
-
};
|
|
48
|
-
const shouldMakeNewCluster = ({ isVideo, keyframe, newT, }) => {
|
|
49
|
-
const newTimestamp = (0, exports.timestampToClusterTimestamp)(newT);
|
|
50
|
-
const oldTimestamp = (0, exports.timestampToClusterTimestamp)(timestamp);
|
|
51
|
-
return newTimestamp - oldTimestamp >= 2000 && keyframe && isVideo;
|
|
52
|
-
};
|
|
53
|
-
return { addSample, shouldMakeNewCluster };
|
|
54
|
-
};
|
|
55
|
-
exports.makeCluster = makeCluster;
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import type { WriterInterface } from '../writers/writer';
|
|
2
|
-
import type { AudioOrVideoSample } from './cluster';
|
|
3
|
-
import type { MakeTrackAudio, MakeTrackVideo } from './matroska-trackentry';
|
|
4
|
-
export type MediaFn = {
|
|
5
|
-
save: () => Promise<File>;
|
|
6
|
-
remove: () => Promise<void>;
|
|
7
|
-
addSample: (chunk: AudioOrVideoSample, trackNumber: number, isVideo: boolean) => Promise<void>;
|
|
8
|
-
updateDuration: (duration: number) => Promise<void>;
|
|
9
|
-
addTrack: (track: Omit<MakeTrackAudio, 'trackNumber'> | Omit<MakeTrackVideo, 'trackNumber'>) => Promise<{
|
|
10
|
-
trackNumber: number;
|
|
11
|
-
}>;
|
|
12
|
-
addWaitForFinishPromise: (promise: () => Promise<void>) => void;
|
|
13
|
-
waitForFinish: () => Promise<void>;
|
|
14
|
-
};
|
|
15
|
-
export declare const createMedia: (writer: WriterInterface) => Promise<MediaFn>;
|
|
@@ -1,165 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createMedia = void 0;
|
|
4
|
-
const ebml_1 = require("../boxes/webm/ebml");
|
|
5
|
-
const make_header_1 = require("../boxes/webm/make-header");
|
|
6
|
-
const all_segments_1 = require("../boxes/webm/segments/all-segments");
|
|
7
|
-
const cluster_1 = require("./cluster");
|
|
8
|
-
const make_duration_with_padding_1 = require("./make-duration-with-padding");
|
|
9
|
-
const matroska_cues_1 = require("./matroska-cues");
|
|
10
|
-
const matroska_header_1 = require("./matroska-header");
|
|
11
|
-
const matroska_info_1 = require("./matroska-info");
|
|
12
|
-
const matroska_seek_1 = require("./matroska-seek");
|
|
13
|
-
const matroska_segment_1 = require("./matroska-segment");
|
|
14
|
-
const matroska_trackentry_1 = require("./matroska-trackentry");
|
|
15
|
-
const timescale_1 = require("./timescale");
|
|
16
|
-
const createMedia = async (writer) => {
|
|
17
|
-
var _a, _b, _c, _d, _e, _f, _g;
|
|
18
|
-
const header = (0, matroska_header_1.makeMatroskaHeader)();
|
|
19
|
-
const w = await writer.createContent();
|
|
20
|
-
await w.write(header.bytes);
|
|
21
|
-
const matroskaInfo = (0, matroska_info_1.makeMatroskaInfo)({
|
|
22
|
-
timescale: timescale_1.CREATE_TIME_SCALE,
|
|
23
|
-
});
|
|
24
|
-
const currentTracks = [];
|
|
25
|
-
const seeks = [];
|
|
26
|
-
const cues = [];
|
|
27
|
-
const trackNumbers = [];
|
|
28
|
-
const matroskaSegment = (0, matroska_segment_1.createMatroskaSegment)([
|
|
29
|
-
...(0, matroska_seek_1.createMatroskaSeekHead)(seeks),
|
|
30
|
-
matroskaInfo,
|
|
31
|
-
...(0, matroska_trackentry_1.makeMatroskaTracks)(currentTracks),
|
|
32
|
-
]);
|
|
33
|
-
const infoSegment = matroskaSegment.offsets.children.find((o) => o.field === 'Info');
|
|
34
|
-
const durationOffset = ((_b = (_a = infoSegment === null || infoSegment === void 0 ? void 0 : infoSegment.children.find((c) => c.field === 'Duration')) === null || _a === void 0 ? void 0 : _a.offset) !== null && _b !== void 0 ? _b : 0) +
|
|
35
|
-
w.getWrittenByteCount();
|
|
36
|
-
const tracksOffset = ((_d = (_c = matroskaSegment.offsets.children.find((o) => o.field === 'Tracks')) === null || _c === void 0 ? void 0 : _c.offset) !== null && _d !== void 0 ? _d : 0) + w.getWrittenByteCount();
|
|
37
|
-
const seekHeadOffset = ((_f = (_e = matroskaSegment.offsets.children.find((o) => o.field === 'SeekHead')) === null || _e === void 0 ? void 0 : _e.offset) !== null && _f !== void 0 ? _f : 0) + w.getWrittenByteCount();
|
|
38
|
-
const infoOffset = ((_g = infoSegment === null || infoSegment === void 0 ? void 0 : infoSegment.offset) !== null && _g !== void 0 ? _g : 0) + w.getWrittenByteCount();
|
|
39
|
-
if (!seekHeadOffset) {
|
|
40
|
-
throw new Error('could not get seek offset');
|
|
41
|
-
}
|
|
42
|
-
if (!durationOffset) {
|
|
43
|
-
throw new Error('could not get duration offset');
|
|
44
|
-
}
|
|
45
|
-
if (!tracksOffset) {
|
|
46
|
-
throw new Error('could not get tracks offset');
|
|
47
|
-
}
|
|
48
|
-
if (!infoOffset) {
|
|
49
|
-
throw new Error('could not get tracks offset');
|
|
50
|
-
}
|
|
51
|
-
seeks.push({
|
|
52
|
-
hexString: all_segments_1.matroskaElements.Info,
|
|
53
|
-
byte: infoOffset - seekHeadOffset,
|
|
54
|
-
});
|
|
55
|
-
seeks.push({
|
|
56
|
-
hexString: all_segments_1.matroskaElements.Tracks,
|
|
57
|
-
byte: tracksOffset - seekHeadOffset,
|
|
58
|
-
});
|
|
59
|
-
const updateSeekWrite = async () => {
|
|
60
|
-
const updatedSeek = (0, matroska_seek_1.createMatroskaSeekHead)(seeks);
|
|
61
|
-
await w.updateDataAt(seekHeadOffset, (0, make_header_1.combineUint8Arrays)(updatedSeek.map((b) => b.bytes)));
|
|
62
|
-
};
|
|
63
|
-
const segmentOffset = w.getWrittenByteCount();
|
|
64
|
-
const updateSegmentSize = async (size) => {
|
|
65
|
-
const data = (0, ebml_1.getVariableInt)(size, matroska_segment_1.MATROSKA_SEGMENT_MIN_VINT_WIDTH);
|
|
66
|
-
await w.updateDataAt(segmentOffset + (0, make_header_1.matroskaToHex)(all_segments_1.matroskaElements.Segment).byteLength, data);
|
|
67
|
-
};
|
|
68
|
-
await w.write(matroskaSegment.bytes);
|
|
69
|
-
const clusterOffset = w.getWrittenByteCount();
|
|
70
|
-
let currentCluster = await (0, cluster_1.makeCluster)(w, 0);
|
|
71
|
-
seeks.push({
|
|
72
|
-
hexString: all_segments_1.matroskaElements.Cluster,
|
|
73
|
-
byte: clusterOffset - seekHeadOffset,
|
|
74
|
-
});
|
|
75
|
-
const trackNumberProgresses = {};
|
|
76
|
-
const getClusterOrMakeNew = async ({ chunk, isVideo, }) => {
|
|
77
|
-
const smallestProgress = Math.min(...Object.values(trackNumberProgresses));
|
|
78
|
-
if (!currentCluster.shouldMakeNewCluster({
|
|
79
|
-
newT: smallestProgress,
|
|
80
|
-
keyframe: chunk.type === 'key',
|
|
81
|
-
isVideo,
|
|
82
|
-
})) {
|
|
83
|
-
return { cluster: currentCluster, isNew: false, smallestProgress };
|
|
84
|
-
}
|
|
85
|
-
currentCluster = await (0, cluster_1.makeCluster)(w, smallestProgress);
|
|
86
|
-
return { cluster: currentCluster, isNew: true, smallestProgress };
|
|
87
|
-
};
|
|
88
|
-
const addSample = async (chunk, trackNumber, isVideo) => {
|
|
89
|
-
var _a;
|
|
90
|
-
trackNumberProgresses[trackNumber] = chunk.timestamp;
|
|
91
|
-
const { cluster, isNew, smallestProgress } = await getClusterOrMakeNew({
|
|
92
|
-
chunk,
|
|
93
|
-
isVideo,
|
|
94
|
-
});
|
|
95
|
-
const newDuration = Math.round((chunk.timestamp + ((_a = chunk.duration) !== null && _a !== void 0 ? _a : 0)) / 1000);
|
|
96
|
-
await updateDuration(newDuration);
|
|
97
|
-
const { timecodeRelativeToCluster } = await cluster.addSample(chunk, trackNumber);
|
|
98
|
-
if (isNew) {
|
|
99
|
-
const newCluster = w.getWrittenByteCount();
|
|
100
|
-
cues.push({
|
|
101
|
-
time: (0, cluster_1.timestampToClusterTimestamp)(smallestProgress) +
|
|
102
|
-
timecodeRelativeToCluster,
|
|
103
|
-
clusterPosition: newCluster - seekHeadOffset,
|
|
104
|
-
trackNumber,
|
|
105
|
-
});
|
|
106
|
-
}
|
|
107
|
-
};
|
|
108
|
-
const updateDuration = async (newDuration) => {
|
|
109
|
-
const blocks = (0, make_duration_with_padding_1.makeDurationWithPadding)(newDuration);
|
|
110
|
-
await w.updateDataAt(durationOffset, blocks.bytes);
|
|
111
|
-
};
|
|
112
|
-
const addTrack = async (track) => {
|
|
113
|
-
currentTracks.push(track);
|
|
114
|
-
const newTracks = (0, matroska_trackentry_1.makeMatroskaTracks)(currentTracks);
|
|
115
|
-
await w.updateDataAt(tracksOffset, (0, make_header_1.combineUint8Arrays)(newTracks.map((b) => b.bytes)));
|
|
116
|
-
};
|
|
117
|
-
const operationProm = { current: Promise.resolve() };
|
|
118
|
-
const waitForFinishPromises = [];
|
|
119
|
-
return {
|
|
120
|
-
save: async () => {
|
|
121
|
-
const file = await w.save();
|
|
122
|
-
return file;
|
|
123
|
-
},
|
|
124
|
-
remove: async () => {
|
|
125
|
-
await w.remove();
|
|
126
|
-
},
|
|
127
|
-
addSample: (chunk, trackNumber, isVideo) => {
|
|
128
|
-
operationProm.current = operationProm.current.then(() => addSample(chunk, trackNumber, isVideo));
|
|
129
|
-
return operationProm.current;
|
|
130
|
-
},
|
|
131
|
-
updateDuration: (duration) => {
|
|
132
|
-
operationProm.current = operationProm.current.then(() => updateDuration(duration));
|
|
133
|
-
return operationProm.current;
|
|
134
|
-
},
|
|
135
|
-
addTrack: (track) => {
|
|
136
|
-
const trackNumber = currentTracks.length + 1;
|
|
137
|
-
const bytes = track.type === 'video'
|
|
138
|
-
? (0, matroska_trackentry_1.makeMatroskaVideoTrackEntryBytes)({ ...track, trackNumber })
|
|
139
|
-
: (0, matroska_trackentry_1.makeMatroskaAudioTrackEntryBytes)({ ...track, trackNumber });
|
|
140
|
-
operationProm.current = operationProm.current.then(() => addTrack(bytes));
|
|
141
|
-
trackNumbers.push(trackNumber);
|
|
142
|
-
return operationProm.current.then(() => ({ trackNumber }));
|
|
143
|
-
},
|
|
144
|
-
addWaitForFinishPromise: (promise) => {
|
|
145
|
-
waitForFinishPromises.push(promise);
|
|
146
|
-
},
|
|
147
|
-
async waitForFinish() {
|
|
148
|
-
await Promise.all(waitForFinishPromises.map((p) => p()));
|
|
149
|
-
await operationProm.current;
|
|
150
|
-
seeks.push({
|
|
151
|
-
hexString: all_segments_1.matroskaElements.Cues,
|
|
152
|
-
byte: w.getWrittenByteCount() - seekHeadOffset,
|
|
153
|
-
});
|
|
154
|
-
await updateSeekWrite();
|
|
155
|
-
await w.write((0, matroska_cues_1.createMatroskaCues)(cues).bytes);
|
|
156
|
-
await w.waitForFinish();
|
|
157
|
-
const segmentSize = w.getWrittenByteCount() -
|
|
158
|
-
segmentOffset -
|
|
159
|
-
(0, make_header_1.matroskaToHex)(all_segments_1.matroskaElements.Segment).byteLength -
|
|
160
|
-
matroska_segment_1.MATROSKA_SEGMENT_MIN_VINT_WIDTH;
|
|
161
|
-
await updateSegmentSize(segmentSize);
|
|
162
|
-
},
|
|
163
|
-
};
|
|
164
|
-
};
|
|
165
|
-
exports.createMedia = createMedia;
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
type Input = {
|
|
2
|
-
timestamp: number;
|
|
3
|
-
keyFrame: boolean;
|
|
4
|
-
};
|
|
5
|
-
type Output = {
|
|
6
|
-
timestamp: number;
|
|
7
|
-
};
|
|
8
|
-
type Processed = {};
|
|
9
|
-
type Progress = {
|
|
10
|
-
smallestProgress: number;
|
|
11
|
-
};
|
|
12
|
-
type IoEventMap = {
|
|
13
|
-
input: Input;
|
|
14
|
-
output: Output;
|
|
15
|
-
processed: Processed;
|
|
16
|
-
progress: Progress;
|
|
17
|
-
};
|
|
18
|
-
export type IoEventTypes = keyof IoEventMap;
|
|
19
|
-
export type CallbackListener<T extends IoEventTypes> = (data: {
|
|
20
|
-
detail: IoEventMap[T];
|
|
21
|
-
}) => void;
|
|
22
|
-
type IoListeners = {
|
|
23
|
-
[EventType in IoEventTypes]: CallbackListener<EventType>[];
|
|
24
|
-
};
|
|
25
|
-
export declare class IoEventEmitter {
|
|
26
|
-
listeners: IoListeners;
|
|
27
|
-
addEventListener<Q extends IoEventTypes>(name: Q, callback: CallbackListener<Q>): void;
|
|
28
|
-
removeEventListener<Q extends IoEventTypes>(name: Q, callback: CallbackListener<Q>): void;
|
|
29
|
-
dispatchEvent<T extends IoEventTypes>(dispatchName: T, context: IoEventMap[T]): void;
|
|
30
|
-
}
|
|
31
|
-
export {};
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.IoEventEmitter = void 0;
|
|
4
|
-
class IoEventEmitter {
|
|
5
|
-
constructor() {
|
|
6
|
-
this.listeners = {
|
|
7
|
-
input: [],
|
|
8
|
-
output: [],
|
|
9
|
-
processed: [],
|
|
10
|
-
progress: [],
|
|
11
|
-
};
|
|
12
|
-
}
|
|
13
|
-
addEventListener(name, callback) {
|
|
14
|
-
this.listeners[name].push(callback);
|
|
15
|
-
}
|
|
16
|
-
removeEventListener(name, callback) {
|
|
17
|
-
this.listeners[name] = this.listeners[name].filter((l) => l !== callback);
|
|
18
|
-
}
|
|
19
|
-
dispatchEvent(dispatchName, context) {
|
|
20
|
-
this.listeners[dispatchName].forEach((callback) => {
|
|
21
|
-
callback({ detail: context });
|
|
22
|
-
});
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
exports.IoEventEmitter = IoEventEmitter;
|