@remotion/media-parser 4.0.270 → 4.0.272
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/aac-codecprivate.js +6 -13
- package/dist/add-avc-profile-to-track.js +5 -9
- package/dist/buffer-iterator.js +8 -13
- package/dist/combine-uint8-arrays.js +1 -5
- package/dist/containers/aac/parse-aac.js +9 -13
- package/dist/containers/aac/types.js +1 -2
- package/dist/containers/avc/codec-string.js +1 -5
- package/dist/containers/avc/color.js +3 -9
- package/dist/containers/avc/create-sps-pps-data.js +5 -9
- package/dist/containers/avc/interpret-sps.js +7 -13
- package/dist/containers/avc/key.js +1 -5
- package/dist/containers/avc/parse-avc.js +3 -7
- package/dist/containers/avc/sps-and-pps.js +1 -5
- package/dist/containers/flac/get-block-size.js +1 -5
- package/dist/containers/flac/get-channel-count.d.ts +1 -1
- package/dist/containers/flac/get-channel-count.js +1 -5
- package/dist/containers/flac/get-duration-from-flac.js +1 -5
- package/dist/containers/flac/get-metadata-from-flac.d.ts +1 -1
- package/dist/containers/flac/get-metadata-from-flac.js +1 -5
- package/dist/containers/flac/get-sample-rate.js +1 -5
- package/dist/containers/flac/parse-flac-frame.js +14 -19
- package/dist/containers/flac/parse-flac.js +15 -19
- package/dist/containers/flac/parse-header.js +1 -5
- package/dist/containers/flac/parse-metadata.js +1 -5
- package/dist/containers/flac/parse-streaminfo.js +3 -7
- package/dist/containers/flac/parse-unknown-block.js +1 -5
- package/dist/containers/flac/types.d.ts +2 -2
- package/dist/containers/flac/types.js +1 -2
- package/dist/containers/iso-base-media/base-media-box.js +1 -2
- package/dist/containers/iso-base-media/base-type.js +1 -2
- package/dist/containers/iso-base-media/esds/decoder-specific-config.js +1 -5
- package/dist/containers/iso-base-media/esds/esds-descriptors.js +5 -10
- package/dist/containers/iso-base-media/esds/esds.js +3 -7
- package/dist/containers/iso-base-media/ftyp.js +1 -5
- package/dist/containers/iso-base-media/get-actual-number-of-channels.js +4 -8
- package/dist/containers/iso-base-media/get-children.js +3 -7
- package/dist/containers/iso-base-media/get-keyframes.js +7 -11
- package/dist/containers/iso-base-media/get-moov-atom.js +21 -15
- package/dist/containers/iso-base-media/get-sample-positions-from-track.js +20 -24
- package/dist/containers/iso-base-media/get-video-codec-from-iso-track.d.ts +1 -1
- package/dist/containers/iso-base-media/get-video-codec-from-iso-track.js +3 -7
- package/dist/containers/iso-base-media/make-track.js +30 -34
- package/dist/containers/iso-base-media/mdat/mdat.js +16 -20
- package/dist/containers/iso-base-media/mdhd.js +1 -5
- package/dist/containers/iso-base-media/meta/hdlr.js +1 -5
- package/dist/containers/iso-base-media/meta/ilst.js +1 -5
- package/dist/containers/iso-base-media/moov/moov.js +3 -7
- package/dist/containers/iso-base-media/mvhd.js +7 -11
- package/dist/containers/iso-base-media/parse-boxes.js +5 -9
- package/dist/containers/iso-base-media/parse-icc-profile.js +4 -8
- package/dist/containers/iso-base-media/process-box.js +63 -67
- package/dist/containers/iso-base-media/stsd/av1c.js +1 -5
- package/dist/containers/iso-base-media/stsd/avcc.js +1 -5
- package/dist/containers/iso-base-media/stsd/colr.js +3 -7
- package/dist/containers/iso-base-media/stsd/ctts.js +1 -5
- package/dist/containers/iso-base-media/stsd/hvcc.js +3 -7
- package/dist/containers/iso-base-media/stsd/keys.js +1 -5
- package/dist/containers/iso-base-media/stsd/mebx.js +3 -7
- package/dist/containers/iso-base-media/stsd/pasp.js +1 -5
- package/dist/containers/iso-base-media/stsd/samples.js +8 -13
- package/dist/containers/iso-base-media/stsd/stco.js +1 -5
- package/dist/containers/iso-base-media/stsd/stsc.js +1 -5
- package/dist/containers/iso-base-media/stsd/stsd.js +3 -7
- package/dist/containers/iso-base-media/stsd/stss.js +1 -5
- package/dist/containers/iso-base-media/stsd/stsz.js +1 -5
- package/dist/containers/iso-base-media/stsd/stts.js +1 -5
- package/dist/containers/iso-base-media/tfdt.js +1 -5
- package/dist/containers/iso-base-media/tfhd.js +1 -5
- package/dist/containers/iso-base-media/tkhd.js +4 -8
- package/dist/containers/iso-base-media/to-date.js +1 -5
- package/dist/containers/iso-base-media/trak/trak.js +3 -7
- package/dist/containers/iso-base-media/traversal.d.ts +3 -2
- package/dist/containers/iso-base-media/traversal.js +42 -57
- package/dist/containers/iso-base-media/trun.js +2 -6
- package/dist/containers/iso-base-media/void-box.js +1 -2
- package/dist/containers/m3u/after-manifest-fetch.d.ts +5 -3
- package/dist/containers/m3u/after-manifest-fetch.js +13 -17
- package/dist/containers/m3u/fetch-m3u8-stream.d.ts +5 -1
- package/dist/containers/m3u/fetch-m3u8-stream.js +4 -12
- package/dist/containers/m3u/get-chunks.d.ts +1 -0
- package/dist/containers/m3u/get-chunks.js +6 -6
- package/dist/containers/m3u/get-duration-from-m3u.js +4 -8
- package/dist/containers/m3u/get-playlist.js +6 -12
- package/dist/containers/m3u/get-streams.d.ts +11 -5
- package/dist/containers/m3u/get-streams.js +5 -15
- package/dist/containers/m3u/iterate-over-segment-files.d.ts +19 -0
- package/dist/containers/m3u/iterate-over-segment-files.js +110 -0
- package/dist/containers/m3u/parse-directive.js +24 -10
- package/dist/containers/m3u/parse-m3u-manifest.js +3 -7
- package/dist/containers/m3u/parse-m3u-media-directive.d.ts +1 -0
- package/dist/containers/m3u/parse-m3u-media-directive.js +7 -7
- package/dist/containers/m3u/parse-m3u.js +13 -13
- package/dist/containers/m3u/parse-m3u8-text.js +3 -7
- package/dist/containers/m3u/parse-stream-inf.js +2 -7
- package/dist/containers/m3u/return-packets.d.ts +1 -1
- package/dist/containers/m3u/return-packets.js +14 -5
- package/dist/containers/m3u/run-over-m3u.js +68 -57
- package/dist/containers/m3u/sample-sorter.d.ts +2 -0
- package/dist/containers/m3u/sample-sorter.js +17 -9
- package/dist/containers/m3u/select-stream.d.ts +3 -2
- package/dist/containers/m3u/select-stream.js +9 -13
- package/dist/containers/m3u/types.d.ts +9 -2
- package/dist/containers/m3u/types.js +1 -2
- package/dist/containers/mp3/get-duration.js +5 -9
- package/dist/containers/mp3/get-frame-length.js +2 -7
- package/dist/containers/mp3/get-metadata-from-mp3.d.ts +2 -2
- package/dist/containers/mp3/get-metadata-from-mp3.js +1 -5
- package/dist/containers/mp3/id3-v1.js +1 -5
- package/dist/containers/mp3/id3.js +1 -5
- package/dist/containers/mp3/parse-mp3.js +7 -11
- package/dist/containers/mp3/parse-mpeg-header.js +10 -14
- package/dist/containers/mp3/samples-per-mpeg-file.js +1 -5
- package/dist/containers/riff/expect-riff-box.js +11 -15
- package/dist/containers/riff/get-duration.js +7 -12
- package/dist/containers/riff/get-tracks-from-avi.js +20 -28
- package/dist/containers/riff/is-movi.js +1 -5
- package/dist/containers/riff/parse-avih.js +1 -5
- package/dist/containers/riff/parse-isft.js +1 -5
- package/dist/containers/riff/parse-list-box.js +3 -7
- package/dist/containers/riff/parse-movi.js +13 -18
- package/dist/containers/riff/parse-riff-body.js +9 -13
- package/dist/containers/riff/parse-riff-box.js +9 -13
- package/dist/containers/riff/parse-riff-header.js +1 -5
- package/dist/containers/riff/parse-riff.js +5 -9
- package/dist/containers/riff/parse-strf.js +1 -5
- package/dist/containers/riff/parse-strh.js +3 -7
- package/dist/containers/riff/parse-video-section.js +7 -11
- package/dist/containers/riff/riff-box.js +1 -2
- package/dist/containers/riff/timescale.js +1 -4
- package/dist/containers/riff/traversal.js +7 -15
- package/dist/containers/transport-stream/adts-header.js +6 -10
- package/dist/containers/transport-stream/boxes.js +1 -2
- package/dist/containers/transport-stream/discard-rest-of-packet.js +2 -7
- package/dist/containers/transport-stream/find-separator.js +1 -4
- package/dist/containers/transport-stream/get-tracks.d.ts +2 -0
- package/dist/containers/transport-stream/get-tracks.js +13 -14
- package/dist/containers/transport-stream/handle-aac-packet.js +12 -16
- package/dist/containers/transport-stream/handle-avc-packet.js +22 -26
- package/dist/containers/transport-stream/next-pes-header-store.js +1 -5
- package/dist/containers/transport-stream/parse-packet.js +13 -17
- package/dist/containers/transport-stream/parse-pat.js +5 -10
- package/dist/containers/transport-stream/parse-pes.js +1 -5
- package/dist/containers/transport-stream/parse-pmt.js +8 -12
- package/dist/containers/transport-stream/parse-stream-packet.js +13 -17
- package/dist/containers/transport-stream/parse-transport-stream.js +5 -9
- package/dist/containers/transport-stream/process-stream-buffers.js +12 -16
- package/dist/containers/transport-stream/traversal.js +4 -10
- package/dist/containers/wav/get-duration-from-wav.js +3 -8
- package/dist/containers/wav/get-metadata-from-wav.d.ts +2 -2
- package/dist/containers/wav/get-metadata-from-wav.js +1 -5
- package/dist/containers/wav/parse-data.js +5 -9
- package/dist/containers/wav/parse-fmt.js +3 -7
- package/dist/containers/wav/parse-header.js +1 -5
- package/dist/containers/wav/parse-id3.js +1 -5
- package/dist/containers/wav/parse-list.js +1 -5
- package/dist/containers/wav/parse-video-section.js +3 -7
- package/dist/containers/wav/parse-wav.js +15 -19
- package/dist/containers/wav/types.d.ts +2 -2
- package/dist/containers/wav/types.js +1 -2
- package/dist/containers/webm/allowed-partial-segments.js +1 -4
- package/dist/containers/webm/av1-codec-private.js +3 -7
- package/dist/containers/webm/color.js +6 -10
- package/dist/containers/webm/description.js +6 -10
- package/dist/containers/webm/get-ready-tracks.js +13 -18
- package/dist/containers/webm/get-sample-from-block.js +12 -16
- package/dist/containers/webm/make-track.js +43 -48
- package/dist/containers/webm/parse-ebml.js +14 -19
- package/dist/containers/webm/parse-webm-header.js +3 -7
- package/dist/containers/webm/segments/all-segments.js +168 -173
- package/dist/containers/webm/segments/block-simple-block-flags.js +4 -8
- package/dist/containers/webm/segments/track-entry.js +1 -5
- package/dist/containers/webm/segments.js +9 -13
- package/dist/containers/webm/traversal.js +37 -67
- package/dist/convert-audio-or-video-sample.js +1 -5
- package/dist/download-and-parse-media.js +44 -47
- package/dist/emit-available-info.js +38 -38
- package/dist/emitter.js +1 -5
- package/dist/errors.d.ts +2 -17
- package/dist/errors.js +10 -30
- package/dist/esm/fetch.mjs +93 -67
- package/dist/esm/index.mjs +742 -194
- package/dist/esm/node.mjs +59 -36
- package/dist/esm/universal.mjs +323 -0
- package/dist/esm/web-file.mjs +55 -43
- package/dist/esm/web.mjs +257 -0
- package/dist/esm/worker-server-entry.mjs +13100 -0
- package/dist/esm/worker-server.mjs +12914 -0
- package/dist/esm/worker-web-entry.mjs +13013 -0
- package/dist/esm/worker.mjs +439 -0
- package/dist/fetch.js +1 -17
- package/dist/file-types/bmp.js +3 -7
- package/dist/file-types/detect-file-type.js +24 -38
- package/dist/file-types/index.js +22 -26
- package/dist/file-types/jpeg.js +4 -9
- package/dist/file-types/pdf.js +3 -7
- package/dist/file-types/png.js +4 -9
- package/dist/file-types/webp.js +3 -7
- package/dist/forward-controller.js +1 -5
- package/dist/get-audio-codec.js +25 -38
- package/dist/get-container.d.ts +3 -3
- package/dist/get-container.js +5 -10
- package/dist/get-dimensions.js +8 -13
- package/dist/get-duration.js +27 -34
- package/dist/get-fields-from-callbacks.js +1 -5
- package/dist/get-fps.js +24 -34
- package/dist/get-is-hdr.js +5 -10
- package/dist/get-keyframes.js +6 -11
- package/dist/get-location.js +4 -9
- package/dist/get-number-of-audio-channels.js +2 -7
- package/dist/get-sample-aspect-ratio.js +17 -30
- package/dist/get-sample-positions-from-lpcm.js +5 -9
- package/dist/get-sample-positions.js +1 -5
- package/dist/get-sample-rate.js +2 -7
- package/dist/get-tracks.d.ts +5 -0
- package/dist/get-tracks.js +37 -44
- package/dist/get-video-codec.js +26 -34
- package/dist/has-all-info.js +33 -38
- package/dist/index.d.ts +18 -11
- package/dist/index.js +34 -48
- package/dist/init-video.d.ts +1 -1
- package/dist/init-video.js +47 -20
- package/dist/internal-parse-media.js +36 -40
- package/dist/is-audio-structure.d.ts +2 -2
- package/dist/is-audio-structure.js +1 -5
- package/dist/log.js +8 -12
- package/dist/make-hvc1-codec-strings.js +1 -5
- package/dist/media-parser-controller.js +7 -11
- package/dist/metadata/get-metadata.d.ts +4 -4
- package/dist/metadata/get-metadata.js +17 -22
- package/dist/metadata/metadata-from-iso.d.ts +3 -3
- package/dist/metadata/metadata-from-iso.js +12 -17
- package/dist/metadata/metadata-from-matroska.d.ts +2 -2
- package/dist/metadata/metadata-from-matroska.js +3 -7
- package/dist/metadata/metadata-from-riff.d.ts +2 -2
- package/dist/metadata/metadata-from-riff.js +3 -7
- package/dist/node-writer.js +1 -17
- package/dist/node.js +1 -17
- package/dist/options.d.ts +30 -24
- package/dist/options.js +1 -2
- package/dist/parse-media-on-browser-worker.d.ts +2 -0
- package/dist/parse-media-on-browser-worker.js +4 -0
- package/dist/parse-media-on-server-worker.d.ts +2 -0
- package/dist/parse-media-on-server-worker.js +4 -0
- package/dist/parse-media-on-web-worker.d.ts +2 -0
- package/dist/parse-media-on-web-worker.js +4 -0
- package/dist/parse-media-on-worker-entry.d.ts +2 -0
- package/dist/parse-media-on-worker-entry.js +269 -0
- package/dist/parse-media-on-worker.d.ts +2 -0
- package/dist/parse-media-on-worker.js +4 -0
- package/dist/parse-media.js +10 -13
- package/dist/parse-result.d.ts +3 -3
- package/dist/parse-result.js +1 -2
- package/dist/pause-signal.js +1 -5
- package/dist/perform-seek.js +6 -10
- package/dist/readers/fetch/get-body-and-reader.js +1 -5
- package/dist/readers/fetch/resolve-url.d.ts +1 -1
- package/dist/readers/fetch/resolve-url.js +1 -5
- package/dist/readers/from-fetch.d.ts +4 -1
- package/dist/readers/from-fetch.js +109 -94
- package/dist/readers/from-node.d.ts +4 -1
- package/dist/readers/from-node.js +58 -41
- package/dist/readers/from-web-file.d.ts +4 -1
- package/dist/readers/from-web-file.js +55 -49
- package/dist/readers/reader.d.ts +5 -1
- package/dist/readers/reader.js +1 -2
- package/dist/readers/universal.d.ts +2 -0
- package/dist/readers/universal.js +35 -0
- package/dist/readers/web.d.ts +2 -0
- package/dist/readers/web.js +22 -0
- package/dist/register-track.js +9 -15
- package/dist/remotion-license-acknowledge.js +4 -8
- package/dist/run-parse-iteration.js +26 -25
- package/dist/samples-from-moof.js +8 -12
- package/dist/skip.js +1 -5
- package/dist/state/aac-state.js +1 -5
- package/dist/state/can-skip-tracks.d.ts +2 -2
- package/dist/state/can-skip-tracks.js +3 -8
- package/dist/state/emitted-fields.js +1 -5
- package/dist/state/flac-state.js +1 -5
- package/dist/state/has-tracks-section.d.ts +2 -2
- package/dist/state/has-tracks-section.js +6 -8
- package/dist/state/images.js +1 -5
- package/dist/state/iso-base-media/cached-sample-positions.js +8 -13
- package/dist/state/iso-base-media/iso-state.js +5 -9
- package/dist/state/iso-base-media/moov-box.js +1 -5
- package/dist/state/keyframes.js +1 -5
- package/dist/state/last-eventloop-break.js +3 -7
- package/dist/state/m3u-state.d.ts +6 -0
- package/dist/state/m3u-state.js +20 -12
- package/dist/state/may-skip-video-data.js +3 -7
- package/dist/state/mp3.js +1 -5
- package/dist/state/need-samples-for-fields.js +1 -5
- package/dist/state/parser-state.d.ts +15 -10
- package/dist/state/parser-state.js +37 -41
- package/dist/state/riff.js +1 -5
- package/dist/state/sample-callbacks.d.ts +3 -2
- package/dist/state/sample-callbacks.js +8 -12
- package/dist/state/slow-duration-fps.js +1 -5
- package/dist/state/structure.d.ts +4 -4
- package/dist/state/structure.js +1 -5
- package/dist/state/transport-stream.js +3 -7
- package/dist/state/video-section.js +1 -5
- package/dist/state/webm.js +5 -9
- package/dist/throttled-progress.js +1 -5
- package/dist/truthy.js +1 -4
- package/dist/universal.d.ts +1 -0
- package/dist/universal.js +1 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -4
- package/dist/web-file.js +1 -17
- package/dist/web.d.ts +1 -0
- package/dist/web.js +1 -0
- package/dist/webcodec-sample-types.d.ts +6 -4
- package/dist/webcodec-sample-types.js +1 -2
- package/dist/worker/forward-controller.d.ts +3 -0
- package/dist/worker/forward-controller.js +20 -0
- package/dist/worker/serialize-error.d.ts +4 -0
- package/dist/worker/serialize-error.js +95 -0
- package/dist/worker/worker-types.d.ts +243 -0
- package/dist/worker/worker-types.js +1 -0
- package/dist/worker-bun-entry.d.ts +1 -0
- package/dist/worker-bun-entry.js +5 -0
- package/dist/worker-entry.d.ts +1 -0
- package/dist/worker-entry.js +5 -0
- package/dist/worker-server-entry.d.ts +1 -0
- package/dist/worker-server-entry.js +5 -0
- package/dist/worker-server.d.ts +2 -0
- package/dist/worker-server.js +381 -0
- package/dist/worker-web-entry.d.ts +1 -0
- package/dist/worker-web-entry.js +5 -0
- package/dist/worker.d.ts +2 -0
- package/dist/worker.js +267 -0
- package/dist/writers/node.js +16 -23
- package/dist/writers/writer.js +1 -2
- package/package.json +40 -21
- package/fetch.js +0 -2
- package/test.json +0 -663
- package/web-file.js +0 -2
|
@@ -1,29 +1,26 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
const
|
|
12
|
-
const parser_state_1 = require("./state/parser-state");
|
|
13
|
-
const throttled_progress_1 = require("./throttled-progress");
|
|
14
|
-
const internalParseMedia = async function ({ src, fields: _fieldsInReturnValue, reader: readerInterface, onAudioTrack, onVideoTrack, controller = (0, media_parser_controller_1.mediaParserController)(), logLevel, onParseProgress: onParseProgressDoNotCallDirectly, progressIntervalInMs, mode, onDiscardedData, onError, acknowledgeRemotionLicense, apiName, selectM3uStream: selectM3uStreamFn, selectM3uAssociatedPlaylists: selectM3uAssociatedPlaylistsFn, ...more }) {
|
|
1
|
+
import { emitAvailableInfo } from './emit-available-info';
|
|
2
|
+
import { getFieldsFromCallback } from './get-fields-from-callbacks';
|
|
3
|
+
import { getAvailableInfo, hasAllInfo } from './has-all-info';
|
|
4
|
+
import { Log } from './log';
|
|
5
|
+
import { mediaParserController } from './media-parser-controller';
|
|
6
|
+
import { performSeek } from './perform-seek';
|
|
7
|
+
import { warnIfRemotionLicenseNotAcknowledged } from './remotion-license-acknowledge';
|
|
8
|
+
import { runParseIteration } from './run-parse-iteration';
|
|
9
|
+
import { makeParserState } from './state/parser-state';
|
|
10
|
+
import { throttledStateUpdate } from './throttled-progress';
|
|
11
|
+
export const internalParseMedia = async function ({ src, fields: _fieldsInReturnValue, reader: readerInterface, onAudioTrack, onVideoTrack, controller = mediaParserController(), logLevel, onParseProgress: onParseProgressDoNotCallDirectly, progressIntervalInMs, mode, onDiscardedData, onError, acknowledgeRemotionLicense, apiName, selectM3uStream: selectM3uStreamFn, selectM3uAssociatedPlaylists: selectM3uAssociatedPlaylistsFn, mp4HeaderSegment, ...more }) {
|
|
15
12
|
var _a;
|
|
16
|
-
|
|
13
|
+
warnIfRemotionLicenseNotAcknowledged({
|
|
17
14
|
acknowledgeRemotionLicense,
|
|
18
15
|
logLevel,
|
|
19
16
|
apiName,
|
|
20
17
|
});
|
|
21
18
|
const fieldsInReturnValue = _fieldsInReturnValue !== null && _fieldsInReturnValue !== void 0 ? _fieldsInReturnValue : {};
|
|
22
|
-
const fields =
|
|
19
|
+
const fields = getFieldsFromCallback({
|
|
23
20
|
fields: fieldsInReturnValue,
|
|
24
21
|
callbacks: more,
|
|
25
22
|
});
|
|
26
|
-
|
|
23
|
+
Log.verbose(logLevel, `Reading ${typeof src === 'string' ? src : src instanceof URL ? src.toString() : src.name}`);
|
|
27
24
|
const { reader: readerInstance, contentLength, name, contentType, supportsContentRange, needsContentRange, } = await readerInterface.read({ src, range: null, controller });
|
|
28
25
|
if (contentLength === null) {
|
|
29
26
|
throw new Error(`Cannot read media ${src} without a content length. This is currently not supported. Ensure the media has a "Content-Length" HTTP header.`);
|
|
@@ -37,7 +34,7 @@ const internalParseMedia = async function ({ src, fields: _fieldsInReturnValue,
|
|
|
37
34
|
!hasVideoTrackHandlers &&
|
|
38
35
|
Object.values(fields).every((v) => !v) &&
|
|
39
36
|
mode === 'query') {
|
|
40
|
-
|
|
37
|
+
Log.warn(logLevel, new Error('Warning - No `fields` and no `on*` callbacks were passed to `parseMedia()`. Specify the data you would like to retrieve.'));
|
|
41
38
|
}
|
|
42
39
|
let timeIterating = 0;
|
|
43
40
|
let timeReadingData = 0;
|
|
@@ -45,7 +42,7 @@ const internalParseMedia = async function ({ src, fields: _fieldsInReturnValue,
|
|
|
45
42
|
let timeCheckingIfDone = 0;
|
|
46
43
|
let timeFreeingData = 0;
|
|
47
44
|
let errored = null;
|
|
48
|
-
const state =
|
|
45
|
+
const state = makeParserState({
|
|
49
46
|
hasAudioTrackHandlers,
|
|
50
47
|
hasVideoTrackHandlers,
|
|
51
48
|
controller,
|
|
@@ -60,23 +57,24 @@ const internalParseMedia = async function ({ src, fields: _fieldsInReturnValue,
|
|
|
60
57
|
onDiscardedData,
|
|
61
58
|
selectM3uStreamFn,
|
|
62
59
|
selectM3uAssociatedPlaylistsFn,
|
|
60
|
+
mp4HeaderSegment,
|
|
63
61
|
});
|
|
64
62
|
const { iterator } = state;
|
|
65
63
|
let currentReader = readerInstance;
|
|
66
64
|
const returnValue = {};
|
|
67
65
|
const moreFields = more;
|
|
68
|
-
const throttledState =
|
|
66
|
+
const throttledState = throttledStateUpdate({
|
|
69
67
|
updateFn: onParseProgressDoNotCallDirectly !== null && onParseProgressDoNotCallDirectly !== void 0 ? onParseProgressDoNotCallDirectly : null,
|
|
70
68
|
everyMilliseconds: progressIntervalInMs !== null && progressIntervalInMs !== void 0 ? progressIntervalInMs : 100,
|
|
71
69
|
controller,
|
|
72
70
|
totalBytes: contentLength,
|
|
73
71
|
});
|
|
74
72
|
const triggerInfoEmit = async () => {
|
|
75
|
-
const availableInfo =
|
|
73
|
+
const availableInfo = getAvailableInfo({
|
|
76
74
|
fieldsToFetch: fields,
|
|
77
75
|
state,
|
|
78
76
|
});
|
|
79
|
-
await
|
|
77
|
+
await emitAvailableInfo({
|
|
80
78
|
hasInfo: availableInfo,
|
|
81
79
|
callbacks: moreFields,
|
|
82
80
|
fieldsInReturnValue,
|
|
@@ -88,13 +86,13 @@ const internalParseMedia = async function ({ src, fields: _fieldsInReturnValue,
|
|
|
88
86
|
};
|
|
89
87
|
const checkIfDone = async () => {
|
|
90
88
|
const startCheck = Date.now();
|
|
91
|
-
const hasAll =
|
|
89
|
+
const hasAll = hasAllInfo({
|
|
92
90
|
fields,
|
|
93
91
|
state,
|
|
94
92
|
});
|
|
95
93
|
timeCheckingIfDone += Date.now() - startCheck;
|
|
96
94
|
if (hasAll && mode === 'query') {
|
|
97
|
-
|
|
95
|
+
Log.verbose(logLevel, 'Got all info, skipping to the end.');
|
|
98
96
|
state.increaseSkippedBytes(contentLength - state.iterator.counter.getOffset());
|
|
99
97
|
return true;
|
|
100
98
|
}
|
|
@@ -103,14 +101,14 @@ const internalParseMedia = async function ({ src, fields: _fieldsInReturnValue,
|
|
|
103
101
|
!state.m3u.getAllChunksProcessedOverall()) {
|
|
104
102
|
return false;
|
|
105
103
|
}
|
|
106
|
-
|
|
104
|
+
Log.verbose(logLevel, 'Reached end of file');
|
|
107
105
|
await state.discardReadBytes(true);
|
|
108
106
|
return true;
|
|
109
107
|
}
|
|
110
108
|
if (state.iterator.counter.getOffset() + state.iterator.bytesRemaining() ===
|
|
111
109
|
contentLength &&
|
|
112
110
|
errored) {
|
|
113
|
-
|
|
111
|
+
Log.verbose(logLevel, 'Reached end of file and errorred');
|
|
114
112
|
return true;
|
|
115
113
|
}
|
|
116
114
|
return false;
|
|
@@ -139,7 +137,6 @@ const internalParseMedia = async function ({ src, fields: _fieldsInReturnValue,
|
|
|
139
137
|
if (iterationWithThisOffset > 0 || !hasBigBuffer) {
|
|
140
138
|
await fetchMoreData();
|
|
141
139
|
}
|
|
142
|
-
await state.eventLoop.eventLoopBreakIfNeeded();
|
|
143
140
|
timeReadingData += Date.now() - readStart;
|
|
144
141
|
(_a = throttledState.update) === null || _a === void 0 ? void 0 : _a.call(throttledState, () => ({
|
|
145
142
|
bytes: iterator.counter.getOffset(),
|
|
@@ -149,7 +146,7 @@ const internalParseMedia = async function ({ src, fields: _fieldsInReturnValue,
|
|
|
149
146
|
totalBytes: contentLength,
|
|
150
147
|
}));
|
|
151
148
|
if (!errored) {
|
|
152
|
-
|
|
149
|
+
Log.trace(logLevel, `Continuing parsing of file, currently at position ${iterator.counter.getOffset()}/${contentLength} (0x${iterator.counter.getOffset().toString(16)})`);
|
|
153
150
|
if (iterationWithThisOffset > 300 &&
|
|
154
151
|
state.getStructure().type !== 'm3u') {
|
|
155
152
|
throw new Error('Infinite loop detected. The parser is not progressing. This is likely a bug in the parser. You can report this at https://remotion.dev/report and we will fix it as soon as possible.');
|
|
@@ -158,7 +155,7 @@ const internalParseMedia = async function ({ src, fields: _fieldsInReturnValue,
|
|
|
158
155
|
await triggerInfoEmit();
|
|
159
156
|
const start = Date.now();
|
|
160
157
|
await controller._internals.checkForAbortAndPause();
|
|
161
|
-
const skip = await
|
|
158
|
+
const skip = await runParseIteration({
|
|
162
159
|
state,
|
|
163
160
|
mimeType: contentType,
|
|
164
161
|
contentLength,
|
|
@@ -168,11 +165,11 @@ const internalParseMedia = async function ({ src, fields: _fieldsInReturnValue,
|
|
|
168
165
|
if (skip !== null) {
|
|
169
166
|
state.increaseSkippedBytes(skip.skipTo - iterator.counter.getOffset());
|
|
170
167
|
if (skip.skipTo === contentLength) {
|
|
171
|
-
|
|
168
|
+
Log.verbose(logLevel, 'Skipped to end of file, not fetching.');
|
|
172
169
|
break;
|
|
173
170
|
}
|
|
174
171
|
const seekStart = Date.now();
|
|
175
|
-
currentReader = await
|
|
172
|
+
currentReader = await performSeek({
|
|
176
173
|
seekTo: skip.skipTo,
|
|
177
174
|
currentReader,
|
|
178
175
|
readerInterface,
|
|
@@ -192,7 +189,7 @@ const internalParseMedia = async function ({ src, fields: _fieldsInReturnValue,
|
|
|
192
189
|
}
|
|
193
190
|
if (err.action === 'download') {
|
|
194
191
|
errored = e;
|
|
195
|
-
|
|
192
|
+
Log.verbose(logLevel, 'Error was handled by onError and deciding to continue.');
|
|
196
193
|
}
|
|
197
194
|
}
|
|
198
195
|
const didProgress = iterator.counter.getOffset() > offsetBefore;
|
|
@@ -207,9 +204,9 @@ const internalParseMedia = async function ({ src, fields: _fieldsInReturnValue,
|
|
|
207
204
|
await state.discardReadBytes(false);
|
|
208
205
|
timeFreeingData += Date.now() - timeFreeStart;
|
|
209
206
|
}
|
|
210
|
-
|
|
207
|
+
Log.verbose(logLevel, 'Finished parsing file');
|
|
211
208
|
// Force assign
|
|
212
|
-
await
|
|
209
|
+
await emitAvailableInfo({
|
|
213
210
|
hasInfo: Object.keys(fields).reduce((acc, key) => {
|
|
214
211
|
if (fields === null || fields === void 0 ? void 0 : fields[key]) {
|
|
215
212
|
acc[key] = true;
|
|
@@ -223,11 +220,11 @@ const internalParseMedia = async function ({ src, fields: _fieldsInReturnValue,
|
|
|
223
220
|
mimeType: contentType,
|
|
224
221
|
name,
|
|
225
222
|
});
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
223
|
+
Log.verbose(logLevel, `Time iterating over file: ${timeIterating}ms`);
|
|
224
|
+
Log.verbose(logLevel, `Time fetching data: ${timeReadingData}ms`);
|
|
225
|
+
Log.verbose(logLevel, `Time seeking: ${timeSeeking}ms`);
|
|
226
|
+
Log.verbose(logLevel, `Time checking if done: ${timeCheckingIfDone}ms`);
|
|
227
|
+
Log.verbose(logLevel, `Time freeing data: ${timeFreeingData}ms`);
|
|
231
228
|
currentReader.abort();
|
|
232
229
|
iterator === null || iterator === void 0 ? void 0 : iterator.destroy();
|
|
233
230
|
state.callbacks.tracks.ensureHasTracksAtEnd(fields);
|
|
@@ -237,4 +234,3 @@ const internalParseMedia = async function ({ src, fields: _fieldsInReturnValue,
|
|
|
237
234
|
}
|
|
238
235
|
return returnValue;
|
|
239
236
|
};
|
|
240
|
-
exports.internalParseMedia = internalParseMedia;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
export declare const isAudioStructure: (structure:
|
|
1
|
+
import type { MediaParserStructureUnstable } from './parse-result';
|
|
2
|
+
export declare const isAudioStructure: (structure: MediaParserStructureUnstable) => boolean;
|
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.isAudioStructure = void 0;
|
|
4
|
-
const isAudioStructure = (structure) => {
|
|
1
|
+
export const isAudioStructure = (structure) => {
|
|
5
2
|
if (structure.type === 'mp3') {
|
|
6
3
|
return true;
|
|
7
4
|
}
|
|
@@ -31,4 +28,3 @@ const isAudioStructure = (structure) => {
|
|
|
31
28
|
}
|
|
32
29
|
throw new Error(`Unhandled structure type: ${structure}`);
|
|
33
30
|
};
|
|
34
|
-
exports.isAudioStructure = isAudioStructure;
|
package/dist/log.js
CHANGED
|
@@ -1,33 +1,29 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Log = exports.isEqualOrBelowLogLevel = exports.logLevels = void 0;
|
|
4
1
|
/* eslint-disable no-console */
|
|
5
|
-
|
|
2
|
+
export const logLevels = ['trace', 'verbose', 'info', 'warn', 'error'];
|
|
6
3
|
const getNumberForLogLevel = (level) => {
|
|
7
|
-
return
|
|
4
|
+
return logLevels.indexOf(level);
|
|
8
5
|
};
|
|
9
|
-
const isEqualOrBelowLogLevel = (currentLevel, level) => {
|
|
6
|
+
export const isEqualOrBelowLogLevel = (currentLevel, level) => {
|
|
10
7
|
return getNumberForLogLevel(currentLevel) <= getNumberForLogLevel(level);
|
|
11
8
|
};
|
|
12
|
-
|
|
13
|
-
exports.Log = {
|
|
9
|
+
export const Log = {
|
|
14
10
|
trace: (logLevel, ...args) => {
|
|
15
|
-
if (
|
|
11
|
+
if (isEqualOrBelowLogLevel(logLevel, 'trace')) {
|
|
16
12
|
return console.log(...args);
|
|
17
13
|
}
|
|
18
14
|
},
|
|
19
15
|
verbose: (logLevel, ...args) => {
|
|
20
|
-
if (
|
|
16
|
+
if (isEqualOrBelowLogLevel(logLevel, 'verbose')) {
|
|
21
17
|
return console.log(...args);
|
|
22
18
|
}
|
|
23
19
|
},
|
|
24
20
|
info: (logLevel, ...args) => {
|
|
25
|
-
if (
|
|
21
|
+
if (isEqualOrBelowLogLevel(logLevel, 'info')) {
|
|
26
22
|
return console.log(...args);
|
|
27
23
|
}
|
|
28
24
|
},
|
|
29
25
|
warn: (logLevel, ...args) => {
|
|
30
|
-
if (
|
|
26
|
+
if (isEqualOrBelowLogLevel(logLevel, 'warn')) {
|
|
31
27
|
return console.warn(...args);
|
|
32
28
|
}
|
|
33
29
|
},
|
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getHvc1CodecString = void 0;
|
|
4
|
-
const getHvc1CodecString = (data) => {
|
|
1
|
+
export const getHvc1CodecString = (data) => {
|
|
5
2
|
const configurationVersion = data.getUint8();
|
|
6
3
|
if (configurationVersion !== 1) {
|
|
7
4
|
throw new Error(`Unsupported HVCC version ${configurationVersion}`);
|
|
@@ -44,4 +41,3 @@ const getHvc1CodecString = (data) => {
|
|
|
44
41
|
}
|
|
45
42
|
return `${profileSpaceChar}${generalProfileIdc.toString(16)}.${profileId.toString(16)}.${generalTierChar}${generalLevelIdc}${generalConstraintString ? '.' : ''}${generalConstraintString}`;
|
|
46
43
|
};
|
|
47
|
-
exports.getHvc1CodecString = getHvc1CodecString;
|
|
@@ -1,16 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const
|
|
5
|
-
const errors_1 = require("./errors");
|
|
6
|
-
const pause_signal_1 = require("./pause-signal");
|
|
7
|
-
const mediaParserController = () => {
|
|
1
|
+
import { MediaParserEmitter } from './emitter';
|
|
2
|
+
import { MediaParserAbortError } from './errors';
|
|
3
|
+
import { makePauseSignal } from './pause-signal';
|
|
4
|
+
export const mediaParserController = () => {
|
|
8
5
|
const abortController = new AbortController();
|
|
9
|
-
const emitter = new
|
|
10
|
-
const pauseSignal =
|
|
6
|
+
const emitter = new MediaParserEmitter();
|
|
7
|
+
const pauseSignal = makePauseSignal(emitter);
|
|
11
8
|
const checkForAbortAndPause = async () => {
|
|
12
9
|
if (abortController.signal.aborted) {
|
|
13
|
-
throw new
|
|
10
|
+
throw new MediaParserAbortError('Aborted');
|
|
14
11
|
}
|
|
15
12
|
await pauseSignal.waitUntilResume();
|
|
16
13
|
};
|
|
@@ -30,4 +27,3 @@ const mediaParserController = () => {
|
|
|
30
27
|
},
|
|
31
28
|
};
|
|
32
29
|
};
|
|
33
|
-
exports.mediaParserController = mediaParserController;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { MediaParserStructureUnstable } from '../parse-result';
|
|
2
2
|
import type { ParserState } from '../state/parser-state';
|
|
3
|
-
export type
|
|
3
|
+
export type MediaParserMetadataEntry = {
|
|
4
4
|
key: string;
|
|
5
5
|
value: string | number;
|
|
6
6
|
trackId: number | null;
|
|
7
7
|
};
|
|
8
|
-
export declare const getMetadata: (state: ParserState) =>
|
|
9
|
-
export declare const hasMetadata: (structure:
|
|
8
|
+
export declare const getMetadata: (state: ParserState) => MediaParserMetadataEntry[];
|
|
9
|
+
export declare const hasMetadata: (structure: MediaParserStructureUnstable) => boolean;
|
|
@@ -1,60 +1,56 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
const
|
|
8
|
-
const metadata_from_matroska_1 = require("./metadata-from-matroska");
|
|
9
|
-
const metadata_from_riff_1 = require("./metadata-from-riff");
|
|
10
|
-
const getMetadata = (state) => {
|
|
1
|
+
import { getMetadataFromFlac } from '../containers/flac/get-metadata-from-flac';
|
|
2
|
+
import { getMetadataFromMp3 } from '../containers/mp3/get-metadata-from-mp3';
|
|
3
|
+
import { getMetadataFromWav } from '../containers/wav/get-metadata-from-wav';
|
|
4
|
+
import { getMetadataFromIsoBase } from './metadata-from-iso';
|
|
5
|
+
import { getMetadataFromMatroska } from './metadata-from-matroska';
|
|
6
|
+
import { getMetadataFromRiff } from './metadata-from-riff';
|
|
7
|
+
export const getMetadata = (state) => {
|
|
11
8
|
var _a, _b;
|
|
12
9
|
const structure = state.getStructure();
|
|
13
10
|
if (structure.type === 'matroska') {
|
|
14
|
-
return
|
|
11
|
+
return getMetadataFromMatroska(structure);
|
|
15
12
|
}
|
|
16
13
|
if (structure.type === 'riff') {
|
|
17
|
-
return
|
|
14
|
+
return getMetadataFromRiff(structure);
|
|
18
15
|
}
|
|
19
16
|
if (structure.type === 'transport-stream' || structure.type === 'm3u') {
|
|
20
17
|
return [];
|
|
21
18
|
}
|
|
22
19
|
if (structure.type === 'mp3') {
|
|
23
|
-
const tags =
|
|
20
|
+
const tags = getMetadataFromMp3(structure);
|
|
24
21
|
if (tags === null) {
|
|
25
22
|
throw new Error('Failed to get metadata from mp3');
|
|
26
23
|
}
|
|
27
24
|
return tags;
|
|
28
25
|
}
|
|
29
26
|
if (structure.type === 'wav') {
|
|
30
|
-
return (_a =
|
|
27
|
+
return (_a = getMetadataFromWav(structure)) !== null && _a !== void 0 ? _a : [];
|
|
31
28
|
}
|
|
32
29
|
if (structure.type === 'aac') {
|
|
33
30
|
return [];
|
|
34
31
|
}
|
|
35
32
|
if (structure.type === 'flac') {
|
|
36
|
-
return (_b =
|
|
33
|
+
return (_b = getMetadataFromFlac(structure)) !== null && _b !== void 0 ? _b : [];
|
|
37
34
|
}
|
|
38
35
|
if (structure.type === 'iso-base-media') {
|
|
39
|
-
return
|
|
36
|
+
return getMetadataFromIsoBase(state);
|
|
40
37
|
}
|
|
41
38
|
throw new Error('Unknown container ' + structure);
|
|
42
39
|
};
|
|
43
|
-
exports.getMetadata = getMetadata;
|
|
44
40
|
// TODO: This forces some containers to check the whole file
|
|
45
41
|
// we can do this better! skip over video data
|
|
46
|
-
const hasMetadata = (structure) => {
|
|
42
|
+
export const hasMetadata = (structure) => {
|
|
47
43
|
if (structure.type === 'mp3') {
|
|
48
|
-
return
|
|
44
|
+
return getMetadataFromMp3(structure) !== null;
|
|
49
45
|
}
|
|
50
46
|
if (structure.type === 'wav') {
|
|
51
|
-
return
|
|
47
|
+
return getMetadataFromWav(structure) !== null;
|
|
52
48
|
}
|
|
53
49
|
if (structure.type === 'm3u' || structure.type === 'transport-stream') {
|
|
54
50
|
return true;
|
|
55
51
|
}
|
|
56
52
|
if (structure.type === 'flac') {
|
|
57
|
-
return
|
|
53
|
+
return getMetadataFromFlac(structure) !== null;
|
|
58
54
|
}
|
|
59
55
|
if (structure.type === 'iso-base-media') {
|
|
60
56
|
return false;
|
|
@@ -70,4 +66,3 @@ const hasMetadata = (structure) => {
|
|
|
70
66
|
}
|
|
71
67
|
throw new Error('Unknown container ' + structure);
|
|
72
68
|
};
|
|
73
|
-
exports.hasMetadata = hasMetadata;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { RegularBox } from '../containers/iso-base-media/base-media-box';
|
|
2
2
|
import type { ParserState } from '../state/parser-state';
|
|
3
|
-
import type {
|
|
4
|
-
export declare const parseIsoMetaBox: (meta: RegularBox, trackId: number | null) =>
|
|
5
|
-
export declare const getMetadataFromIsoBase: (state: ParserState) =>
|
|
3
|
+
import type { MediaParserMetadataEntry } from './get-metadata';
|
|
4
|
+
export declare const parseIsoMetaBox: (meta: RegularBox, trackId: number | null) => MediaParserMetadataEntry[];
|
|
5
|
+
export declare const getMetadataFromIsoBase: (state: ParserState) => MediaParserMetadataEntry[];
|
|
@@ -1,8 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
exports.getMetadataFromIsoBase = exports.parseIsoMetaBox = void 0;
|
|
4
|
-
const traversal_1 = require("../containers/iso-base-media/traversal");
|
|
5
|
-
const truthy_1 = require("../truthy");
|
|
1
|
+
import { getMoovBoxFromState, getTkhdBox, getTraks, } from '../containers/iso-base-media/traversal';
|
|
2
|
+
import { truthy } from '../truthy';
|
|
6
3
|
/**
|
|
7
4
|
*
|
|
8
5
|
* @param ilstBox ©ART - Artist
|
|
@@ -85,9 +82,9 @@ const parseIlstBoxWithoutKeys = (ilstBox) => {
|
|
|
85
82
|
value: entry.value.value,
|
|
86
83
|
};
|
|
87
84
|
})
|
|
88
|
-
.filter(
|
|
85
|
+
.filter(truthy);
|
|
89
86
|
};
|
|
90
|
-
const parseIsoMetaBox = (meta, trackId) => {
|
|
87
|
+
export const parseIsoMetaBox = (meta, trackId) => {
|
|
91
88
|
const ilstBox = meta.children.find((b) => b.type === 'ilst-box');
|
|
92
89
|
const keysBox = meta.children.find((b) => b.type === 'keys-box');
|
|
93
90
|
if (!ilstBox || !keysBox) {
|
|
@@ -114,13 +111,12 @@ const parseIsoMetaBox = (meta, trackId) => {
|
|
|
114
111
|
}
|
|
115
112
|
return entries;
|
|
116
113
|
};
|
|
117
|
-
|
|
118
|
-
const
|
|
119
|
-
const moov = (0, traversal_1.getMoovBox)(state);
|
|
114
|
+
export const getMetadataFromIsoBase = (state) => {
|
|
115
|
+
const moov = getMoovBoxFromState(state);
|
|
120
116
|
if (!moov) {
|
|
121
117
|
return [];
|
|
122
118
|
}
|
|
123
|
-
const traks =
|
|
119
|
+
const traks = getTraks(moov);
|
|
124
120
|
const meta = moov.children.find((b) => b.type === 'regular-box' && b.boxType === 'meta');
|
|
125
121
|
const udta = moov.children.find((b) => b.type === 'regular-box' && b.boxType === 'udta');
|
|
126
122
|
const metaInUdta = udta === null || udta === void 0 ? void 0 : udta.children.find((b) => {
|
|
@@ -130,19 +126,18 @@ const getMetadataFromIsoBase = (state) => {
|
|
|
130
126
|
.map((t) => {
|
|
131
127
|
const metaBox = t.children.find((child) => child.type === 'regular-box' && child.boxType === 'meta');
|
|
132
128
|
if (metaBox) {
|
|
133
|
-
const tkhd =
|
|
129
|
+
const tkhd = getTkhdBox(t);
|
|
134
130
|
if (!tkhd) {
|
|
135
131
|
throw new Error('No tkhd box found');
|
|
136
132
|
}
|
|
137
|
-
return
|
|
133
|
+
return parseIsoMetaBox(metaBox, tkhd.trackId);
|
|
138
134
|
}
|
|
139
135
|
return null;
|
|
140
136
|
})
|
|
141
|
-
.filter(
|
|
137
|
+
.filter(truthy);
|
|
142
138
|
return [
|
|
143
|
-
...(meta ?
|
|
144
|
-
...(metaInUdta ?
|
|
139
|
+
...(meta ? parseIsoMetaBox(meta, null) : []),
|
|
140
|
+
...(metaInUdta ? parseIsoMetaBox(metaInUdta, null) : []),
|
|
145
141
|
...metaInTracks.flat(1),
|
|
146
142
|
];
|
|
147
143
|
};
|
|
148
|
-
exports.getMetadataFromIsoBase = getMetadataFromIsoBase;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type { MatroskaStructure } from '../parse-result';
|
|
2
|
-
import type {
|
|
3
|
-
export declare const getMetadataFromMatroska: (structure: MatroskaStructure) =>
|
|
2
|
+
import type { MediaParserMetadataEntry } from './get-metadata';
|
|
3
|
+
export declare const getMetadataFromMatroska: (structure: MatroskaStructure) => MediaParserMetadataEntry[];
|
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getMetadataFromMatroska = void 0;
|
|
4
|
-
const traversal_1 = require("../containers/webm/traversal");
|
|
1
|
+
import { getTrackWithUid } from '../containers/webm/traversal';
|
|
5
2
|
const removeEndZeroes = (value) => {
|
|
6
3
|
return value.endsWith('\u0000') ? removeEndZeroes(value.slice(0, -1)) : value;
|
|
7
4
|
};
|
|
@@ -17,7 +14,7 @@ const parseSimpleTagIntoEbml = (children, trackId) => {
|
|
|
17
14
|
value: removeEndZeroes(tagString.value),
|
|
18
15
|
};
|
|
19
16
|
};
|
|
20
|
-
const getMetadataFromMatroska = (structure) => {
|
|
17
|
+
export const getMetadataFromMatroska = (structure) => {
|
|
21
18
|
var _a;
|
|
22
19
|
const entries = [];
|
|
23
20
|
for (const segment of structure.boxes) {
|
|
@@ -35,7 +32,7 @@ const getMetadataFromMatroska = (structure) => {
|
|
|
35
32
|
if (target) {
|
|
36
33
|
const tagTrackId = (_a = target.value.find((c) => c.type === 'TagTrackUID')) === null || _a === void 0 ? void 0 : _a.value;
|
|
37
34
|
if (tagTrackId) {
|
|
38
|
-
trackId =
|
|
35
|
+
trackId = getTrackWithUid(segment, tagTrackId);
|
|
39
36
|
}
|
|
40
37
|
}
|
|
41
38
|
const simpleTags = child.value.filter((s) => s.type === 'SimpleTag');
|
|
@@ -50,4 +47,3 @@ const getMetadataFromMatroska = (structure) => {
|
|
|
50
47
|
}
|
|
51
48
|
return entries;
|
|
52
49
|
};
|
|
53
|
-
exports.getMetadataFromMatroska = getMetadataFromMatroska;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type { RiffStructure } from '../containers/riff/riff-box';
|
|
2
|
-
import type {
|
|
3
|
-
export declare const getMetadataFromRiff: (structure: RiffStructure) =>
|
|
2
|
+
import type { MediaParserMetadataEntry } from './get-metadata';
|
|
3
|
+
export declare const getMetadataFromRiff: (structure: RiffStructure) => MediaParserMetadataEntry[];
|
|
@@ -1,8 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
exports.getMetadataFromRiff = void 0;
|
|
4
|
-
const truthy_1 = require("../truthy");
|
|
5
|
-
const getMetadataFromRiff = (structure) => {
|
|
1
|
+
import { truthy } from '../truthy';
|
|
2
|
+
export const getMetadataFromRiff = (structure) => {
|
|
6
3
|
const boxes = structure.boxes.find((b) => b.type === 'list-box' && b.listType === 'INFO');
|
|
7
4
|
if (!boxes) {
|
|
8
5
|
return [];
|
|
@@ -19,6 +16,5 @@ const getMetadataFromRiff = (structure) => {
|
|
|
19
16
|
value: child.software,
|
|
20
17
|
};
|
|
21
18
|
})
|
|
22
|
-
.filter(
|
|
19
|
+
.filter(truthy);
|
|
23
20
|
};
|
|
24
|
-
exports.getMetadataFromRiff = getMetadataFromRiff;
|
package/dist/node-writer.js
CHANGED
|
@@ -1,17 +1 @@
|
|
|
1
|
-
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./writers/node"), exports);
|
|
1
|
+
export * from './writers/node';
|
package/dist/node.js
CHANGED
|
@@ -1,17 +1 @@
|
|
|
1
|
-
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./readers/from-node"), exports);
|
|
1
|
+
export * from './readers/from-node';
|