@remotion/media-parser 4.0.270 → 4.0.271
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.js +1 -5
- package/dist/containers/flac/get-duration-from-flac.js +1 -5
- 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 +106 -0
- package/dist/containers/m3u/parse-directive.js +10 -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 +10 -13
- package/dist/containers/m3u/sample-sorter.js +4 -8
- 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 +1 -1
- 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.js +7 -12
- 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 +3 -7
- 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 +10 -15
- 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 +679 -175
- 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 +13056 -0
- package/dist/esm/worker-server.mjs +12914 -0
- package/dist/esm/worker-web-entry.mjs +12969 -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 +15 -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.js +3 -7
- 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 +3 -0
- package/dist/state/m3u-state.js +16 -11
- 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 +12 -10
- package/dist/state/parser-state.js +36 -41
- package/dist/state/riff.js +1 -5
- 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
package/dist/has-all-info.js
CHANGED
|
@@ -1,21 +1,18 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
const
|
|
16
|
-
const get_metadata_1 = require("./metadata/get-metadata");
|
|
17
|
-
const may_skip_video_data_1 = require("./state/may-skip-video-data");
|
|
18
|
-
const getAvailableInfo = ({ fieldsToFetch, state, }) => {
|
|
1
|
+
import { m3uHasStreams } from './containers/m3u/get-streams';
|
|
2
|
+
import { hasAudioCodec } from './get-audio-codec';
|
|
3
|
+
import { hasContainer } from './get-container';
|
|
4
|
+
import { hasDimensions } from './get-dimensions';
|
|
5
|
+
import { hasDuration, hasSlowDuration } from './get-duration';
|
|
6
|
+
import { hasFps, hasFpsSuitedForSlowFps } from './get-fps';
|
|
7
|
+
import { hasHdr } from './get-is-hdr';
|
|
8
|
+
import { hasKeyframes } from './get-keyframes';
|
|
9
|
+
import { hasNumberOfAudioChannels } from './get-number-of-audio-channels';
|
|
10
|
+
import { hasSampleRate } from './get-sample-rate';
|
|
11
|
+
import { getHasTracks } from './get-tracks';
|
|
12
|
+
import { hasVideoCodec } from './get-video-codec';
|
|
13
|
+
import { hasMetadata } from './metadata/get-metadata';
|
|
14
|
+
import { maySkipVideoData } from './state/may-skip-video-data';
|
|
15
|
+
export const getAvailableInfo = ({ fieldsToFetch, state, }) => {
|
|
19
16
|
const keys = Object.entries(fieldsToFetch).filter(([, value]) => value);
|
|
20
17
|
const structure = state.getStructureOrNull();
|
|
21
18
|
const infos = keys.map(([_key]) => {
|
|
@@ -24,37 +21,37 @@ const getAvailableInfo = ({ fieldsToFetch, state, }) => {
|
|
|
24
21
|
return false;
|
|
25
22
|
}
|
|
26
23
|
if (key === 'durationInSeconds') {
|
|
27
|
-
return Boolean(structure &&
|
|
24
|
+
return Boolean(structure && hasDuration(state));
|
|
28
25
|
}
|
|
29
26
|
if (key === 'slowDurationInSeconds') {
|
|
30
|
-
return Boolean(structure &&
|
|
27
|
+
return Boolean(structure && hasSlowDuration(state));
|
|
31
28
|
}
|
|
32
29
|
if (key === 'dimensions' ||
|
|
33
30
|
key === 'rotation' ||
|
|
34
31
|
key === 'unrotatedDimensions') {
|
|
35
|
-
return Boolean(structure &&
|
|
32
|
+
return Boolean(structure && hasDimensions(state));
|
|
36
33
|
}
|
|
37
34
|
if (key === 'fps') {
|
|
38
|
-
return Boolean(structure &&
|
|
35
|
+
return Boolean(structure && hasFps(state));
|
|
39
36
|
}
|
|
40
37
|
if (key === 'slowFps') {
|
|
41
38
|
// In case FPS is available an non-null, it also works for `slowFps`
|
|
42
|
-
return Boolean(structure &&
|
|
39
|
+
return Boolean(structure && hasFpsSuitedForSlowFps(state));
|
|
43
40
|
}
|
|
44
41
|
if (key === 'isHdr') {
|
|
45
|
-
return Boolean(structure &&
|
|
42
|
+
return Boolean(structure && hasHdr(state));
|
|
46
43
|
}
|
|
47
44
|
if (key === 'videoCodec') {
|
|
48
|
-
return Boolean(structure &&
|
|
45
|
+
return Boolean(structure && hasVideoCodec(state));
|
|
49
46
|
}
|
|
50
47
|
if (key === 'audioCodec') {
|
|
51
|
-
return Boolean(structure &&
|
|
48
|
+
return Boolean(structure && hasAudioCodec(state));
|
|
52
49
|
}
|
|
53
50
|
if (key === 'tracks') {
|
|
54
|
-
return Boolean(structure &&
|
|
51
|
+
return Boolean(structure && getHasTracks(state));
|
|
55
52
|
}
|
|
56
53
|
if (key === 'keyframes') {
|
|
57
|
-
return Boolean(structure &&
|
|
54
|
+
return Boolean(structure && hasKeyframes(state));
|
|
58
55
|
}
|
|
59
56
|
if (key === 'internalStats') {
|
|
60
57
|
return true;
|
|
@@ -69,10 +66,10 @@ const getAvailableInfo = ({ fieldsToFetch, state, }) => {
|
|
|
69
66
|
return true;
|
|
70
67
|
}
|
|
71
68
|
if (key === 'container') {
|
|
72
|
-
return Boolean(structure &&
|
|
69
|
+
return Boolean(structure && hasContainer(structure));
|
|
73
70
|
}
|
|
74
71
|
if (key === 'metadata' || key === 'location' || key === 'images') {
|
|
75
|
-
return Boolean(structure &&
|
|
72
|
+
return Boolean(structure && hasMetadata(structure));
|
|
76
73
|
}
|
|
77
74
|
if (key === 'slowKeyframes' ||
|
|
78
75
|
key === 'slowVideoBitrate' ||
|
|
@@ -81,13 +78,13 @@ const getAvailableInfo = ({ fieldsToFetch, state, }) => {
|
|
|
81
78
|
return false;
|
|
82
79
|
}
|
|
83
80
|
if (key === 'numberOfAudioChannels') {
|
|
84
|
-
return
|
|
81
|
+
return hasNumberOfAudioChannels(state);
|
|
85
82
|
}
|
|
86
83
|
if (key === 'sampleRate') {
|
|
87
|
-
return
|
|
84
|
+
return hasSampleRate(state);
|
|
88
85
|
}
|
|
89
86
|
if (key === 'm3uStreams') {
|
|
90
|
-
return
|
|
87
|
+
return m3uHasStreams(state);
|
|
91
88
|
}
|
|
92
89
|
throw new Error(`Unknown key: ${key}`);
|
|
93
90
|
});
|
|
@@ -98,16 +95,15 @@ const getAvailableInfo = ({ fieldsToFetch, state, }) => {
|
|
|
98
95
|
}
|
|
99
96
|
return Object.fromEntries(entries);
|
|
100
97
|
};
|
|
101
|
-
|
|
102
|
-
const
|
|
103
|
-
const availableInfo = (0, exports.getAvailableInfo)({
|
|
98
|
+
export const hasAllInfo = ({ fields, state, }) => {
|
|
99
|
+
const availableInfo = getAvailableInfo({
|
|
104
100
|
fieldsToFetch: fields !== null && fields !== void 0 ? fields : {},
|
|
105
101
|
state,
|
|
106
102
|
});
|
|
107
103
|
if (!Object.values(availableInfo).every(Boolean)) {
|
|
108
104
|
return false;
|
|
109
105
|
}
|
|
110
|
-
if (
|
|
106
|
+
if (maySkipVideoData({ state })) {
|
|
111
107
|
return true;
|
|
112
108
|
}
|
|
113
109
|
if (state.callbacks.canSkipTracksState.canSkipTracks()) {
|
|
@@ -115,4 +111,3 @@ const hasAllInfo = ({ fields, state, }) => {
|
|
|
115
111
|
}
|
|
116
112
|
return false;
|
|
117
113
|
};
|
|
118
|
-
exports.hasAllInfo = hasAllInfo;
|
package/dist/index.d.ts
CHANGED
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
import type { LogLevel } from './log';
|
|
2
2
|
export type { MatroskaSegment } from './containers/webm/segments';
|
|
3
3
|
export type { MatroskaElement } from './containers/webm/segments/all-segments';
|
|
4
|
-
export { hasBeenAborted, IsAGifError, IsAnImageError,
|
|
4
|
+
export { hasBeenAborted, IsAGifError, IsAnImageError, IsAnUnsupportedFileTypeError, IsAPdfError, MediaParserAbortError, } from './errors';
|
|
5
5
|
export type { SamplePosition } from './get-sample-positions';
|
|
6
6
|
export type { AudioTrack, MediaParserAudioCodec, MediaParserVideoCodec, OtherTrack, Track, VideoTrack, VideoTrackColorParams, } from './get-tracks';
|
|
7
|
-
export type {
|
|
7
|
+
export type { MediaParserMetadataEntry } from './metadata/get-metadata';
|
|
8
8
|
export type { MediaParserKeyframe, ParseMediaSrc } from './options';
|
|
9
|
+
export { parseMediaOnServerWorker } from './parse-media-on-server-worker';
|
|
10
|
+
export { parseMediaOnWebWorker } from './parse-media-on-web-worker';
|
|
9
11
|
export type { MediaParserEmbeddedImage } from './state/images';
|
|
10
12
|
export { downloadAndParseMedia } from './download-and-parse-media';
|
|
11
|
-
export type { MediaParserContainer, Options, ParseMediaCallbacks, ParseMediaFields, ParseMediaOnProgress, ParseMediaOptions, ParseMediaProgress, ParseMediaResult,
|
|
13
|
+
export type { MediaParserContainer, MediaParserTracks, Options, ParseMediaCallbacks, ParseMediaFields, ParseMediaOnProgress, ParseMediaOptions, ParseMediaProgress, ParseMediaResult, } from './options';
|
|
12
14
|
export { parseMedia } from './parse-media';
|
|
13
15
|
export type { AudioOrVideoSample, OnAudioSample, OnAudioTrack, OnVideoSample, OnVideoTrack, } from './webcodec-sample-types';
|
|
14
16
|
export type { Dimensions } from './get-dimensions';
|
|
@@ -727,7 +729,7 @@ export declare const MediaParserInternals: {
|
|
|
727
729
|
size: number;
|
|
728
730
|
state: import("./state/parser-state").ParserState;
|
|
729
731
|
}) => Promise<import("./containers/iso-base-media/stsd/stsd").StsdBox>;
|
|
730
|
-
makeParserState: ({ hasAudioTrackHandlers, hasVideoTrackHandlers, controller, fields, onAudioTrack, onVideoTrack, contentLength, logLevel, mode, src, readerInterface, onDiscardedData, selectM3uStreamFn, selectM3uAssociatedPlaylistsFn, }: {
|
|
732
|
+
makeParserState: ({ hasAudioTrackHandlers, hasVideoTrackHandlers, controller, fields, onAudioTrack, onVideoTrack, contentLength, logLevel, mode, src, readerInterface, onDiscardedData, selectM3uStreamFn, selectM3uAssociatedPlaylistsFn, mp4HeaderSegment, }: {
|
|
731
733
|
hasAudioTrackHandlers: boolean;
|
|
732
734
|
hasVideoTrackHandlers: boolean;
|
|
733
735
|
controller: import("./media-parser-controller").MediaParserController;
|
|
@@ -742,6 +744,7 @@ export declare const MediaParserInternals: {
|
|
|
742
744
|
onDiscardedData: import("./options").OnDiscardedData | null;
|
|
743
745
|
selectM3uStreamFn: import("./containers/m3u/select-stream").SelectM3uStreamFn;
|
|
744
746
|
selectM3uAssociatedPlaylistsFn: import("./containers/m3u/select-stream").SelectM3uAssociatedPlaylistsFn;
|
|
747
|
+
mp4HeaderSegment: import("./parse-result").IsoBaseMediaStructure | null;
|
|
745
748
|
}) => {
|
|
746
749
|
onAudioTrack: import("./webcodec-sample-types").OnAudioTrack | null;
|
|
747
750
|
onVideoTrack: import("./webcodec-sample-types").OnVideoTrack | null;
|
|
@@ -838,17 +841,15 @@ export declare const MediaParserInternals: {
|
|
|
838
841
|
};
|
|
839
842
|
controller: import("./media-parser-controller").MediaParserController;
|
|
840
843
|
mode: import("./options").ParseMediaMode;
|
|
841
|
-
eventLoop: {
|
|
842
|
-
eventLoopBreakIfNeeded: () => Promise<void>;
|
|
843
|
-
};
|
|
844
844
|
src: import("./options").ParseMediaSrc;
|
|
845
845
|
readerInterface: import("./readers/reader").ReaderInterface;
|
|
846
846
|
discardReadBytes: (force: boolean) => Promise<void>;
|
|
847
847
|
selectM3uStreamFn: import("./containers/m3u/select-stream").SelectM3uStreamFn;
|
|
848
848
|
selectM3uAssociatedPlaylistsFn: import("./containers/m3u/select-stream").SelectM3uAssociatedPlaylistsFn;
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
849
|
+
mp4HeaderSegment: import("./parse-result").IsoBaseMediaStructure | null;
|
|
850
|
+
getStructureOrNull: () => import("./parse-result").MediaParserStructureUnstable | null;
|
|
851
|
+
getStructure: () => import("./parse-result").MediaParserStructureUnstable;
|
|
852
|
+
setStructure: (value: import("./parse-result").MediaParserStructureUnstable) => void;
|
|
852
853
|
getFlacStructure: () => import("./containers/flac/types").FlacStructure;
|
|
853
854
|
getIsoStructure: () => import("./parse-result").IsoBaseMediaStructure;
|
|
854
855
|
getMp3Structure: () => import("./parse-result").Mp3Structure;
|
|
@@ -952,6 +953,8 @@ export declare const MediaParserInternals: {
|
|
|
952
953
|
addVideoSample: (src: string, sample: import("./webcodec-sample-types").AudioOrVideoSample) => Promise<void>;
|
|
953
954
|
getNextStreamToRun: (streams: string[]) => string;
|
|
954
955
|
};
|
|
956
|
+
setMp4HeaderSegment: (playlistUrl: string, structure: import("./parse-result").IsoBaseMediaStructure) => void;
|
|
957
|
+
getMp4HeaderSegment: (playlistUrl: string) => import("./parse-result").IsoBaseMediaStructure;
|
|
955
958
|
};
|
|
956
959
|
callbacks: {
|
|
957
960
|
registerVideoSampleCallback: (id: number, callback: import("./webcodec-sample-types").OnVideoSample | null) => Promise<void>;
|
|
@@ -1003,8 +1006,9 @@ export declare const MediaParserInternals: {
|
|
|
1003
1006
|
};
|
|
1004
1007
|
export type { Prettify } from './containers/webm/parse-ebml';
|
|
1005
1008
|
export type { Ebml, EbmlValue, FloatWithSize, MainSegment, PossibleEbml, TrackEntry, UintWithSize, } from './containers/webm/segments/all-segments';
|
|
1009
|
+
export { MediaParserStructureUnstable } from './parse-result';
|
|
1006
1010
|
export type { LogLevel };
|
|
1007
|
-
export { M3uStream } from './containers/m3u/get-streams';
|
|
1011
|
+
export { M3uAssociatedPlaylist, M3uStream } from './containers/m3u/get-streams';
|
|
1008
1012
|
export { defaultSelectM3uAssociatedPlaylists, defaultSelectM3uStreamFn, SelectM3uAssociatedPlaylistsFn, SelectM3uStreamFn, SelectM3uStreamFnOptions, } from './containers/m3u/select-stream';
|
|
1009
1013
|
export { mediaParserController, MediaParserController, } from './media-parser-controller';
|
|
1010
1014
|
export { VERSION } from './version';
|
package/dist/index.js
CHANGED
|
@@ -1,49 +1,35 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
ebmlMap: all_segments_1.ebmlMap,
|
|
33
|
-
parseTkhd: tkhd_1.parseTkhd,
|
|
34
|
-
getArrayBufferIterator: buffer_iterator_1.getArrayBufferIterator,
|
|
35
|
-
parseStsd: stsd_1.parseStsd,
|
|
36
|
-
makeParserState: parser_state_1.makeParserState,
|
|
37
|
-
processSample: samples_1.processIsoFormatBox,
|
|
38
|
-
parseFtyp: ftyp_1.parseFtyp,
|
|
39
|
-
parseEbml: parse_ebml_1.parseEbml,
|
|
40
|
-
parseMvhd: mvhd_1.parseMvhd,
|
|
41
|
-
internalParseMedia: internal_parse_media_1.internalParseMedia,
|
|
1
|
+
import { createAacCodecPrivate } from './aac-codecprivate';
|
|
2
|
+
import { getArrayBufferIterator } from './buffer-iterator';
|
|
3
|
+
import { parseFtyp } from './containers/iso-base-media/ftyp';
|
|
4
|
+
import { parseMvhd } from './containers/iso-base-media/mvhd';
|
|
5
|
+
import { processIsoFormatBox } from './containers/iso-base-media/stsd/samples';
|
|
6
|
+
import { parseStsd } from './containers/iso-base-media/stsd/stsd';
|
|
7
|
+
import { parseTkhd } from './containers/iso-base-media/tkhd';
|
|
8
|
+
import { parseEbml } from './containers/webm/parse-ebml';
|
|
9
|
+
import { ebmlMap, matroskaElements, } from './containers/webm/segments/all-segments';
|
|
10
|
+
import { internalParseMedia } from './internal-parse-media';
|
|
11
|
+
import { Log } from './log';
|
|
12
|
+
import { makeParserState } from './state/parser-state';
|
|
13
|
+
export { hasBeenAborted, IsAGifError, IsAnImageError, IsAnUnsupportedFileTypeError, IsAPdfError, MediaParserAbortError, } from './errors';
|
|
14
|
+
export { parseMediaOnServerWorker } from './parse-media-on-server-worker';
|
|
15
|
+
export { parseMediaOnWebWorker } from './parse-media-on-web-worker';
|
|
16
|
+
export { downloadAndParseMedia } from './download-and-parse-media';
|
|
17
|
+
export { parseMedia } from './parse-media';
|
|
18
|
+
export const MediaParserInternals = {
|
|
19
|
+
Log,
|
|
20
|
+
createAacCodecPrivate,
|
|
21
|
+
matroskaElements,
|
|
22
|
+
ebmlMap,
|
|
23
|
+
parseTkhd,
|
|
24
|
+
getArrayBufferIterator,
|
|
25
|
+
parseStsd,
|
|
26
|
+
makeParserState,
|
|
27
|
+
processSample: processIsoFormatBox,
|
|
28
|
+
parseFtyp,
|
|
29
|
+
parseEbml,
|
|
30
|
+
parseMvhd,
|
|
31
|
+
internalParseMedia,
|
|
42
32
|
};
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
var media_parser_controller_1 = require("./media-parser-controller");
|
|
47
|
-
Object.defineProperty(exports, "mediaParserController", { enumerable: true, get: function () { return media_parser_controller_1.mediaParserController; } });
|
|
48
|
-
var version_1 = require("./version");
|
|
49
|
-
Object.defineProperty(exports, "VERSION", { enumerable: true, get: function () { return version_1.VERSION; } });
|
|
33
|
+
export { defaultSelectM3uAssociatedPlaylists, defaultSelectM3uStreamFn, } from './containers/m3u/select-stream';
|
|
34
|
+
export { mediaParserController, } from './media-parser-controller';
|
|
35
|
+
export { VERSION } from './version';
|
package/dist/init-video.d.ts
CHANGED
package/dist/init-video.js
CHANGED
|
@@ -1,20 +1,48 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
const initVideo = ({ state, mimeType, name, contentLength, }) => {
|
|
1
|
+
import { getMoovFromFromIsoStructure } from './containers/iso-base-media/traversal';
|
|
2
|
+
import { IsAGifError, IsAPdfError, IsAnImageError, IsAnUnsupportedFileTypeError, } from './errors';
|
|
3
|
+
import { getTracksFromMoovBox } from './get-tracks';
|
|
4
|
+
import { Log } from './log';
|
|
5
|
+
import { registerAudioTrack, registerVideoTrack } from './register-track';
|
|
6
|
+
export const initVideo = async ({ state, mimeType, name, contentLength, }) => {
|
|
7
7
|
const fileType = state.iterator.detectFileType();
|
|
8
8
|
if (fileType.type === 'riff') {
|
|
9
|
-
|
|
9
|
+
Log.verbose(state.logLevel, 'Detected RIFF container');
|
|
10
10
|
state.setStructure({
|
|
11
11
|
type: 'riff',
|
|
12
12
|
boxes: [],
|
|
13
13
|
});
|
|
14
14
|
return;
|
|
15
15
|
}
|
|
16
|
+
if (state.mp4HeaderSegment) {
|
|
17
|
+
Log.verbose(state.logLevel, 'Detected ISO Base Media segment');
|
|
18
|
+
const moovAtom = getMoovFromFromIsoStructure(state.mp4HeaderSegment);
|
|
19
|
+
if (!moovAtom) {
|
|
20
|
+
throw new Error('No moov box found');
|
|
21
|
+
}
|
|
22
|
+
const tracks = getTracksFromMoovBox(moovAtom);
|
|
23
|
+
for (const track of tracks.videoTracks) {
|
|
24
|
+
await registerVideoTrack({
|
|
25
|
+
state,
|
|
26
|
+
track,
|
|
27
|
+
container: 'mp4',
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
for (const track of tracks.audioTracks) {
|
|
31
|
+
await registerAudioTrack({
|
|
32
|
+
state,
|
|
33
|
+
track,
|
|
34
|
+
container: 'mp4',
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
state.callbacks.tracks.setIsDone(state.logLevel);
|
|
38
|
+
state.setStructure({
|
|
39
|
+
type: 'iso-base-media',
|
|
40
|
+
boxes: [],
|
|
41
|
+
});
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
16
44
|
if (fileType.type === 'iso-base-media') {
|
|
17
|
-
|
|
45
|
+
Log.verbose(state.logLevel, 'Detected ISO Base Media container');
|
|
18
46
|
state.setStructure({
|
|
19
47
|
type: 'iso-base-media',
|
|
20
48
|
boxes: [],
|
|
@@ -22,7 +50,7 @@ const initVideo = ({ state, mimeType, name, contentLength, }) => {
|
|
|
22
50
|
return;
|
|
23
51
|
}
|
|
24
52
|
if (fileType.type === 'webm') {
|
|
25
|
-
|
|
53
|
+
Log.verbose(state.logLevel, 'Detected Matroska container');
|
|
26
54
|
state.setStructure({
|
|
27
55
|
boxes: [],
|
|
28
56
|
type: 'matroska',
|
|
@@ -30,7 +58,7 @@ const initVideo = ({ state, mimeType, name, contentLength, }) => {
|
|
|
30
58
|
return;
|
|
31
59
|
}
|
|
32
60
|
if (fileType.type === 'transport-stream') {
|
|
33
|
-
|
|
61
|
+
Log.verbose(state.logLevel, 'Detected MPEG-2 Transport Stream');
|
|
34
62
|
state.setStructure({
|
|
35
63
|
boxes: [],
|
|
36
64
|
type: 'transport-stream',
|
|
@@ -38,7 +66,7 @@ const initVideo = ({ state, mimeType, name, contentLength, }) => {
|
|
|
38
66
|
return;
|
|
39
67
|
}
|
|
40
68
|
if (fileType.type === 'mp3') {
|
|
41
|
-
|
|
69
|
+
Log.verbose(state.logLevel, 'Detected MP3');
|
|
42
70
|
const structure = {
|
|
43
71
|
boxes: [],
|
|
44
72
|
type: 'mp3',
|
|
@@ -47,7 +75,7 @@ const initVideo = ({ state, mimeType, name, contentLength, }) => {
|
|
|
47
75
|
return;
|
|
48
76
|
}
|
|
49
77
|
if (fileType.type === 'wav') {
|
|
50
|
-
|
|
78
|
+
Log.verbose(state.logLevel, 'Detected WAV');
|
|
51
79
|
const structure = {
|
|
52
80
|
boxes: [],
|
|
53
81
|
type: 'wav',
|
|
@@ -56,7 +84,7 @@ const initVideo = ({ state, mimeType, name, contentLength, }) => {
|
|
|
56
84
|
return;
|
|
57
85
|
}
|
|
58
86
|
if (fileType.type === 'flac') {
|
|
59
|
-
|
|
87
|
+
Log.verbose(state.logLevel, 'Detected FLAC');
|
|
60
88
|
const structure = {
|
|
61
89
|
boxes: [],
|
|
62
90
|
type: 'flac',
|
|
@@ -65,7 +93,7 @@ const initVideo = ({ state, mimeType, name, contentLength, }) => {
|
|
|
65
93
|
return;
|
|
66
94
|
}
|
|
67
95
|
if (fileType.type === 'aac') {
|
|
68
|
-
|
|
96
|
+
Log.verbose(state.logLevel, 'Detected AAC');
|
|
69
97
|
state.setStructure({
|
|
70
98
|
type: 'aac',
|
|
71
99
|
boxes: [],
|
|
@@ -73,7 +101,7 @@ const initVideo = ({ state, mimeType, name, contentLength, }) => {
|
|
|
73
101
|
return;
|
|
74
102
|
}
|
|
75
103
|
if (fileType.type === 'm3u') {
|
|
76
|
-
|
|
104
|
+
Log.verbose(state.logLevel, 'Detected M3U');
|
|
77
105
|
state.setStructure({
|
|
78
106
|
type: 'm3u',
|
|
79
107
|
boxes: [],
|
|
@@ -81,7 +109,7 @@ const initVideo = ({ state, mimeType, name, contentLength, }) => {
|
|
|
81
109
|
return;
|
|
82
110
|
}
|
|
83
111
|
if (fileType.type === 'gif') {
|
|
84
|
-
return Promise.reject(new
|
|
112
|
+
return Promise.reject(new IsAGifError({
|
|
85
113
|
message: 'GIF files are not yet supported',
|
|
86
114
|
mimeType,
|
|
87
115
|
sizeInBytes: contentLength,
|
|
@@ -89,7 +117,7 @@ const initVideo = ({ state, mimeType, name, contentLength, }) => {
|
|
|
89
117
|
}));
|
|
90
118
|
}
|
|
91
119
|
if (fileType.type === 'pdf') {
|
|
92
|
-
return Promise.reject(new
|
|
120
|
+
return Promise.reject(new IsAPdfError({
|
|
93
121
|
message: 'GIF files are not supported',
|
|
94
122
|
mimeType,
|
|
95
123
|
sizeInBytes: contentLength,
|
|
@@ -100,7 +128,7 @@ const initVideo = ({ state, mimeType, name, contentLength, }) => {
|
|
|
100
128
|
fileType.type === 'jpeg' ||
|
|
101
129
|
fileType.type === 'png' ||
|
|
102
130
|
fileType.type === 'webp') {
|
|
103
|
-
return Promise.reject(new
|
|
131
|
+
return Promise.reject(new IsAnImageError({
|
|
104
132
|
message: 'Image files are not supported',
|
|
105
133
|
imageType: fileType.type,
|
|
106
134
|
dimensions: fileType.dimensions,
|
|
@@ -110,7 +138,7 @@ const initVideo = ({ state, mimeType, name, contentLength, }) => {
|
|
|
110
138
|
}));
|
|
111
139
|
}
|
|
112
140
|
if (fileType.type === 'unknown') {
|
|
113
|
-
return Promise.reject(new
|
|
141
|
+
return Promise.reject(new IsAnUnsupportedFileTypeError({
|
|
114
142
|
message: 'Unknown file format',
|
|
115
143
|
mimeType,
|
|
116
144
|
sizeInBytes: contentLength,
|
|
@@ -119,4 +147,3 @@ const initVideo = ({ state, mimeType, name, contentLength, }) => {
|
|
|
119
147
|
}
|
|
120
148
|
return Promise.reject(new Error('Unknown video format ' + fileType));
|
|
121
149
|
};
|
|
122
|
-
exports.initVideo = initVideo;
|