@remotion/media-parser 4.0.250 → 4.0.252
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.d.ts +2 -1
- package/dist/aac-codecprivate.js +28 -7
- package/dist/add-avc-profile-to-track.js +2 -2
- package/dist/buffer-iterator.d.ts +7 -2
- package/dist/buffer-iterator.js +61 -35
- package/dist/containers/aac/parse-aac.d.ts +3 -0
- package/dist/containers/aac/parse-aac.js +84 -0
- package/dist/containers/aac/types.d.ts +4 -0
- package/dist/{boxes → containers}/avc/key.d.ts +1 -1
- package/dist/containers/flac/get-block-size.d.ts +2 -0
- package/dist/containers/flac/get-block-size.js +26 -0
- package/dist/containers/flac/get-channel-count.d.ts +2 -0
- package/dist/containers/flac/get-channel-count.js +36 -0
- package/dist/containers/flac/get-duration-from-flac.d.ts +2 -0
- package/dist/containers/flac/get-duration-from-flac.js +12 -0
- package/dist/containers/flac/get-metadata-from-flac.d.ts +2 -0
- package/dist/containers/flac/get-metadata-from-flac.js +11 -0
- package/dist/containers/flac/get-sample-rate.d.ts +3 -0
- package/dist/containers/flac/get-sample-rate.js +60 -0
- package/dist/containers/flac/parse-flac-frame.d.ts +15 -0
- package/dist/containers/flac/parse-flac-frame.js +169 -0
- package/dist/{boxes/riff/parse-riff.d.ts → containers/flac/parse-flac.d.ts} +1 -1
- package/dist/containers/flac/parse-flac.js +49 -0
- package/dist/{boxes/mp3/parse-mp3.d.ts → containers/flac/parse-header.d.ts} +2 -2
- package/dist/containers/flac/parse-header.js +10 -0
- package/dist/{boxes/iso-base-media/parse-boxes.d.ts → containers/flac/parse-metadata.d.ts} +3 -2
- package/dist/containers/flac/parse-metadata.js +24 -0
- package/dist/{boxes/webm/parse-webm-header.d.ts → containers/flac/parse-streaminfo.d.ts} +1 -1
- package/dist/containers/flac/parse-streaminfo.js +53 -0
- package/dist/{boxes/riff/parse-riff-body.d.ts → containers/flac/parse-unknown-block.d.ts} +2 -1
- package/dist/containers/flac/parse-unknown-block.js +11 -0
- package/dist/containers/flac/types.d.ts +26 -0
- package/dist/containers/iso-base-media/base-media-box.d.ts +37 -0
- package/dist/{boxes → containers}/iso-base-media/get-actual-number-of-channels.js +1 -1
- package/dist/containers/iso-base-media/get-children.d.ts +6 -0
- package/dist/{boxes → containers}/iso-base-media/get-children.js +5 -7
- package/dist/containers/iso-base-media/get-keyframes.d.ts +3 -0
- package/dist/{boxes → containers}/iso-base-media/get-keyframes.js +3 -2
- package/dist/containers/iso-base-media/get-moov-atom.d.ts +6 -0
- package/dist/containers/iso-base-media/get-moov-atom.js +73 -0
- package/dist/{boxes → containers}/iso-base-media/get-sample-positions-from-track.d.ts +1 -1
- package/dist/{boxes → containers}/iso-base-media/get-video-codec-from-iso-track.js +1 -1
- package/dist/containers/iso-base-media/mdat/mdat.d.ts +3 -0
- package/dist/{boxes → containers}/iso-base-media/mdat/mdat.js +17 -12
- package/dist/{boxes → containers}/iso-base-media/moov/moov.d.ts +1 -3
- package/dist/{boxes → containers}/iso-base-media/moov/moov.js +1 -2
- package/dist/containers/iso-base-media/parse-boxes.d.ts +3 -0
- package/dist/containers/iso-base-media/parse-boxes.js +18 -0
- package/dist/containers/iso-base-media/process-box.d.ts +3 -0
- package/dist/{boxes → containers}/iso-base-media/process-box.js +52 -169
- package/dist/{boxes → containers}/iso-base-media/stsd/mebx.d.ts +1 -3
- package/dist/{boxes → containers}/iso-base-media/stsd/mebx.js +3 -4
- package/dist/{boxes → containers}/iso-base-media/stsd/samples.d.ts +4 -6
- package/dist/{boxes → containers}/iso-base-media/stsd/samples.js +5 -7
- package/dist/{boxes → containers}/iso-base-media/stsd/stsd.d.ts +1 -3
- package/dist/{boxes → containers}/iso-base-media/stsd/stsd.js +2 -2
- package/dist/{boxes → containers}/iso-base-media/trak/trak.d.ts +1 -3
- package/dist/{boxes → containers}/iso-base-media/trak/trak.js +1 -2
- package/dist/{boxes → containers}/iso-base-media/traversal.d.ts +4 -2
- package/dist/{boxes → containers}/iso-base-media/traversal.js +6 -2
- package/dist/containers/iso-base-media/void-box.js +2 -0
- package/dist/{boxes → containers}/mp3/get-duration.js +0 -3
- package/dist/containers/mp3/get-tracks-from-mp3.d.ts +4 -0
- package/dist/{boxes → containers}/mp3/get-tracks-from-mp3.js +6 -6
- package/dist/containers/mp3/id3.d.ts +4 -0
- package/dist/{boxes → containers}/mp3/id3.js +3 -2
- package/dist/containers/mp3/parse-mp3.d.ts +3 -0
- package/dist/{boxes → containers}/mp3/parse-mp3.js +7 -15
- package/dist/containers/mp3/parse-mpeg-header.d.ts +4 -0
- package/dist/{boxes → containers}/mp3/parse-mpeg-header.js +3 -2
- package/dist/containers/riff/expect-riff-box.d.ts +6 -0
- package/dist/{boxes → containers}/riff/expect-riff-box.js +7 -17
- package/dist/containers/riff/get-duration.d.ts +3 -0
- package/dist/containers/riff/get-duration.js +33 -0
- package/dist/{boxes → containers}/riff/get-tracks-from-avi.d.ts +1 -2
- package/dist/{boxes → containers}/riff/get-tracks-from-avi.js +1 -1
- package/dist/{boxes → containers}/riff/parse-list-box.d.ts +1 -3
- package/dist/{boxes → containers}/riff/parse-list-box.js +5 -9
- package/dist/containers/riff/parse-movi.d.ts +9 -0
- package/dist/{boxes → containers}/riff/parse-movi.js +13 -29
- package/dist/containers/riff/parse-riff-body.d.ts +3 -0
- package/dist/containers/riff/parse-riff-body.js +28 -0
- package/dist/{boxes → containers}/riff/parse-riff-box.d.ts +1 -3
- package/dist/{boxes → containers}/riff/parse-riff-box.js +3 -6
- package/dist/containers/riff/parse-riff-header.d.ts +3 -0
- package/dist/{boxes → containers}/riff/parse-riff-header.js +6 -11
- package/dist/containers/riff/parse-riff.d.ts +3 -0
- package/dist/{boxes → containers}/riff/parse-riff.js +4 -7
- package/dist/containers/riff/parse-video-section.d.ts +2 -0
- package/dist/{boxes → containers}/riff/parse-video-section.js +5 -8
- package/dist/{boxes → containers}/riff/riff-box.d.ts +5 -10
- package/dist/containers/riff/riff-box.js +2 -0
- package/dist/{boxes → containers}/riff/traversal.d.ts +1 -2
- package/dist/{boxes → containers}/transport-stream/adts-header.js +1 -0
- package/dist/containers/transport-stream/boxes.js +2 -0
- package/dist/{boxes → containers}/transport-stream/get-tracks.js +1 -1
- package/dist/{boxes → containers}/transport-stream/parse-packet.d.ts +1 -3
- package/dist/{boxes → containers}/transport-stream/parse-packet.js +3 -3
- package/dist/{boxes → containers}/transport-stream/parse-stream-packet.d.ts +1 -3
- package/dist/{boxes → containers}/transport-stream/parse-stream-packet.js +2 -1
- package/dist/containers/transport-stream/parse-transport-stream.d.ts +3 -0
- package/dist/{boxes → containers}/transport-stream/parse-transport-stream.js +5 -22
- package/dist/{boxes → containers}/transport-stream/process-stream-buffers.js +1 -1
- package/dist/containers/wav/get-duration-from-wav.d.ts +3 -0
- package/dist/containers/wav/get-duration-from-wav.js +26 -0
- package/dist/containers/wav/get-metadata-from-wav.d.ts +3 -0
- package/dist/containers/wav/get-metadata-from-wav.js +11 -0
- package/dist/containers/wav/parse-data.d.ts +5 -0
- package/dist/containers/wav/parse-data.js +25 -0
- package/dist/containers/wav/parse-fmt.d.ts +5 -0
- package/dist/containers/wav/parse-fmt.js +56 -0
- package/dist/containers/wav/parse-header.d.ts +5 -0
- package/dist/containers/wav/parse-header.js +17 -0
- package/dist/containers/wav/parse-id3.d.ts +5 -0
- package/dist/containers/wav/parse-id3.js +15 -0
- package/dist/containers/wav/parse-list.d.ts +5 -0
- package/dist/containers/wav/parse-list.js +32 -0
- package/dist/containers/wav/parse-video-section.d.ts +5 -0
- package/dist/containers/wav/parse-video-section.js +34 -0
- package/dist/containers/wav/parse-wav.d.ts +3 -0
- package/dist/containers/wav/parse-wav.js +36 -0
- package/dist/containers/wav/types.d.ts +30 -0
- package/dist/containers/wav/types.js +2 -0
- package/dist/{boxes → containers}/webm/parse-ebml.d.ts +1 -2
- package/dist/{boxes → containers}/webm/parse-ebml.js +4 -3
- package/dist/containers/webm/parse-webm-header.d.ts +3 -0
- package/dist/{boxes → containers}/webm/parse-webm-header.js +5 -12
- package/dist/{boxes → containers}/webm/segments.d.ts +1 -3
- package/dist/{boxes → containers}/webm/segments.js +7 -6
- package/dist/download-and-parse-media.d.ts +2 -0
- package/dist/download-and-parse-media.js +70 -0
- package/dist/emit-available-info.d.ts +2 -5
- package/dist/emit-available-info.js +104 -94
- package/dist/errors.d.ts +1 -1
- package/dist/esm/from-fetch.mjs +1 -1
- package/dist/esm/from-node.mjs +1 -1
- package/dist/esm/from-web-file.mjs +7 -7
- package/dist/esm/index.mjs +2118 -1069
- package/dist/esm/node.mjs +113 -0
- package/dist/file-types/detect-file-type.d.ts +5 -1
- package/dist/file-types/detect-file-type.js +6 -1
- package/dist/file-types/index.js +3 -0
- package/dist/get-audio-codec.d.ts +3 -4
- package/dist/get-audio-codec.js +6 -3
- package/dist/get-container.d.ts +2 -2
- package/dist/get-container.js +10 -1
- package/dist/get-dimensions.d.ts +2 -3
- package/dist/get-dimensions.js +13 -9
- package/dist/get-duration.d.ts +5 -5
- package/dist/get-duration.js +26 -27
- package/dist/get-fields-from-callbacks.js +4 -0
- package/dist/get-fps.d.ts +5 -5
- package/dist/get-fps.js +24 -14
- package/dist/get-is-hdr.d.ts +1 -2
- package/dist/get-is-hdr.js +2 -2
- package/dist/get-keyframes.d.ts +2 -3
- package/dist/get-keyframes.js +7 -5
- package/dist/get-location.d.ts +2 -2
- package/dist/get-location.js +2 -2
- package/dist/get-number-of-audio-channels.d.ts +3 -0
- package/dist/get-number-of-audio-channels.js +14 -0
- package/dist/get-sample-aspect-ratio.d.ts +8 -8
- package/dist/get-sample-aspect-ratio.js +1 -1
- package/dist/get-sample-positions-from-lpcm.d.ts +1 -1
- package/dist/get-sample-positions-from-lpcm.js +1 -1
- package/dist/get-sample-positions.d.ts +6 -6
- package/dist/get-sample-rate.d.ts +3 -0
- package/dist/get-sample-rate.js +14 -0
- package/dist/get-tracks.d.ts +8 -9
- package/dist/get-tracks.js +30 -23
- package/dist/get-video-codec.d.ts +2 -3
- package/dist/get-video-codec.js +4 -4
- package/dist/has-all-info.js +29 -18
- package/dist/index.d.ts +170 -66
- package/dist/index.js +10 -8
- package/dist/init-video.d.ts +7 -0
- package/dist/{parse-video.js → init-video.js} +31 -60
- package/dist/internal-parse-media.d.ts +2 -0
- package/dist/internal-parse-media.js +221 -0
- package/dist/is-audio-structure.d.ts +2 -0
- package/dist/is-audio-structure.js +31 -0
- package/dist/make-hvc1-codec-strings.js +4 -4
- package/dist/metadata/get-metadata.d.ts +2 -1
- package/dist/metadata/get-metadata.js +19 -3
- package/dist/metadata/metadata-from-iso.d.ts +3 -2
- package/dist/metadata/metadata-from-iso.js +3 -3
- package/dist/metadata/metadata-from-matroska.js +1 -1
- package/dist/metadata/metadata-from-riff.d.ts +1 -1
- package/dist/options.d.ts +88 -39
- package/dist/parse-and-download-media.d.ts +2 -0
- package/dist/parse-and-download-media.js +57 -0
- package/dist/parse-media.js +43 -172
- package/dist/parse-result.d.ts +10 -50
- package/dist/perform-seek.d.ts +10 -0
- package/dist/perform-seek.js +36 -0
- package/dist/readers/from-fetch.js +1 -1
- package/dist/readers/from-node.js +1 -1
- package/dist/readers/from-web-file.js +9 -9
- package/dist/readers/reader.d.ts +8 -3
- package/dist/register-track.d.ts +3 -3
- package/dist/register-track.js +5 -0
- package/dist/run-parse-iteration.d.ts +8 -0
- package/dist/run-parse-iteration.js +48 -0
- package/dist/samples-from-moof.js +1 -1
- package/dist/skip.d.ts +5 -0
- package/dist/skip.js +8 -0
- package/dist/state/aac-state.d.ts +13 -0
- package/dist/state/aac-state.js +17 -0
- package/dist/state/can-skip-tracks.js +5 -1
- package/dist/state/emitted-fields.js +4 -0
- package/dist/state/flac-state.d.ts +4 -0
- package/dist/state/flac-state.js +13 -0
- package/dist/state/has-tracks-section.d.ts +5 -2
- package/dist/state/has-tracks-section.js +11 -2
- package/dist/state/iso-base-media/cached-sample-positions.js +3 -3
- package/dist/state/iso-base-media/iso-state.d.ts +4 -2
- package/dist/state/iso-base-media/iso-state.js +2 -5
- package/dist/state/iso-base-media/moov-box.d.ts +5 -0
- package/dist/state/iso-base-media/moov-box.js +13 -0
- package/dist/state/last-eventloop-break.d.ts +4 -0
- package/dist/state/last-eventloop-break.js +18 -0
- package/dist/{may-skip-video-data → state}/may-skip-video-data.d.ts +1 -1
- package/dist/{may-skip-video-data → state}/need-samples-for-fields.js +4 -0
- package/dist/state/parser-state.d.ts +151 -51
- package/dist/state/parser-state.js +28 -5
- package/dist/state/sample-callbacks.d.ts +3 -2
- package/dist/state/sample-callbacks.js +1 -1
- package/dist/state/slow-duration-fps.d.ts +2 -0
- package/dist/state/slow-duration-fps.js +18 -0
- package/dist/state/structure.d.ts +7 -0
- package/dist/state/structure.js +56 -6
- package/dist/state/transport-stream.d.ts +3 -3
- package/dist/state/transport-stream.js +1 -1
- package/dist/state/webm.d.ts +2 -2
- package/dist/state/webm.js +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/webcodec-sample-types.d.ts +3 -3
- package/dist/writers/node.d.ts +4 -0
- package/dist/writers/node.js +81 -0
- package/dist/writers/writer.d.ts +17 -0
- package/dist/writers/writer.js +2 -0
- package/package.json +12 -9
- package/dist/boxes/iso-base-media/continue-mdat-routine.d.ts +0 -14
- package/dist/boxes/iso-base-media/continue-mdat-routine.js +0 -74
- package/dist/boxes/iso-base-media/get-children.d.ts +0 -8
- package/dist/boxes/iso-base-media/get-keyframes.d.ts +0 -3
- package/dist/boxes/iso-base-media/mdat/mdat.d.ts +0 -6
- package/dist/boxes/iso-base-media/parse-all-children.d.ts +0 -8
- package/dist/boxes/iso-base-media/parse-all-children.js +0 -20
- package/dist/boxes/iso-base-media/parse-boxes.js +0 -46
- package/dist/boxes/iso-base-media/parse-mdat-partially.d.ts +0 -9
- package/dist/boxes/iso-base-media/parse-mdat-partially.js +0 -24
- package/dist/boxes/iso-base-media/process-box.d.ts +0 -7
- package/dist/boxes/mp3/get-tracks-from-mp3.d.ts +0 -4
- package/dist/boxes/mp3/id3-v2.d.ts +0 -0
- package/dist/boxes/mp3/id3-v2.js +0 -1
- package/dist/boxes/mp3/id3.d.ts +0 -6
- package/dist/boxes/mp3/parse-mpeg-header.d.ts +0 -6
- package/dist/boxes/riff/continue-after-riff-result.d.ts +0 -13
- package/dist/boxes/riff/continue-after-riff-result.js +0 -34
- package/dist/boxes/riff/expect-riff-box.d.ts +0 -11
- package/dist/boxes/riff/parse-box.d.ts +0 -9
- package/dist/boxes/riff/parse-box.js +0 -35
- package/dist/boxes/riff/parse-fmt-box.d.ts +0 -8
- package/dist/boxes/riff/parse-fmt-box.js +0 -35
- package/dist/boxes/riff/parse-movi.d.ts +0 -14
- package/dist/boxes/riff/parse-riff-body.js +0 -25
- package/dist/boxes/riff/parse-riff-header.d.ts +0 -7
- package/dist/boxes/riff/parse-video-section.d.ts +0 -6
- package/dist/boxes/transport-stream/parse-transport-stream.d.ts +0 -7
- package/dist/boxes/webm/segments/parse-children.d.ts +0 -9
- package/dist/boxes/webm/segments/parse-children.js +0 -21
- package/dist/bun-reader.d.ts +0 -1
- package/dist/bun-reader.js +0 -17
- package/dist/continue-mdat-routine.d.ts +0 -17
- package/dist/continue-mdat-routine.js +0 -92
- package/dist/parse-video.d.ts +0 -14
- package/dist/state/iso-state.d.ts +0 -4
- package/dist/state/iso-state.js +0 -13
- /package/dist/{boxes/iso-base-media/base-type.js → containers/aac/types.js} +0 -0
- /package/dist/{boxes → containers}/avc/codec-string.d.ts +0 -0
- /package/dist/{boxes → containers}/avc/codec-string.js +0 -0
- /package/dist/{boxes → containers}/avc/color.d.ts +0 -0
- /package/dist/{boxes → containers}/avc/color.js +0 -0
- /package/dist/{boxes → containers}/avc/create-sps-pps-data.d.ts +0 -0
- /package/dist/{boxes → containers}/avc/create-sps-pps-data.js +0 -0
- /package/dist/{boxes → containers}/avc/interpret-sps.d.ts +0 -0
- /package/dist/{boxes → containers}/avc/interpret-sps.js +0 -0
- /package/dist/{boxes → containers}/avc/key.js +0 -0
- /package/dist/{boxes → containers}/avc/parse-avc.d.ts +0 -0
- /package/dist/{boxes → containers}/avc/parse-avc.js +0 -0
- /package/dist/{boxes → containers}/avc/sps-and-pps.d.ts +0 -0
- /package/dist/{boxes → containers}/avc/sps-and-pps.js +0 -0
- /package/dist/{boxes/iso-base-media/void-box.js → containers/flac/types.js} +0 -0
- /package/dist/{boxes/riff/riff-box.js → containers/iso-base-media/base-media-box.js} +0 -0
- /package/dist/{boxes → containers}/iso-base-media/base-type.d.ts +0 -0
- /package/dist/{boxes/transport-stream/boxes.js → containers/iso-base-media/base-type.js} +0 -0
- /package/dist/{boxes → containers}/iso-base-media/esds/decoder-specific-config.d.ts +0 -0
- /package/dist/{boxes → containers}/iso-base-media/esds/decoder-specific-config.js +0 -0
- /package/dist/{boxes → containers}/iso-base-media/esds/esds-descriptors.d.ts +0 -0
- /package/dist/{boxes → containers}/iso-base-media/esds/esds-descriptors.js +0 -0
- /package/dist/{boxes → containers}/iso-base-media/esds/esds.d.ts +0 -0
- /package/dist/{boxes → containers}/iso-base-media/esds/esds.js +0 -0
- /package/dist/{boxes → containers}/iso-base-media/ftyp.d.ts +0 -0
- /package/dist/{boxes → containers}/iso-base-media/ftyp.js +0 -0
- /package/dist/{boxes → containers}/iso-base-media/get-actual-number-of-channels.d.ts +0 -0
- /package/dist/{boxes → containers}/iso-base-media/get-sample-positions-from-track.js +0 -0
- /package/dist/{boxes → containers}/iso-base-media/get-video-codec-from-iso-track.d.ts +0 -0
- /package/dist/{boxes → containers}/iso-base-media/make-track.d.ts +0 -0
- /package/dist/{boxes → containers}/iso-base-media/make-track.js +0 -0
- /package/dist/{boxes → containers}/iso-base-media/mdhd.d.ts +0 -0
- /package/dist/{boxes → containers}/iso-base-media/mdhd.js +0 -0
- /package/dist/{boxes → containers}/iso-base-media/meta/hdlr.d.ts +0 -0
- /package/dist/{boxes → containers}/iso-base-media/meta/hdlr.js +0 -0
- /package/dist/{boxes → containers}/iso-base-media/meta/ilst.d.ts +0 -0
- /package/dist/{boxes → containers}/iso-base-media/meta/ilst.js +0 -0
- /package/dist/{boxes → containers}/iso-base-media/mvhd.d.ts +0 -0
- /package/dist/{boxes → containers}/iso-base-media/mvhd.js +0 -0
- /package/dist/{boxes → containers}/iso-base-media/parse-icc-profile.d.ts +0 -0
- /package/dist/{boxes → containers}/iso-base-media/parse-icc-profile.js +0 -0
- /package/dist/{boxes → containers}/iso-base-media/stsd/av1c.d.ts +0 -0
- /package/dist/{boxes → containers}/iso-base-media/stsd/av1c.js +0 -0
- /package/dist/{boxes → containers}/iso-base-media/stsd/avcc.d.ts +0 -0
- /package/dist/{boxes → containers}/iso-base-media/stsd/avcc.js +0 -0
- /package/dist/{boxes → containers}/iso-base-media/stsd/colr.d.ts +0 -0
- /package/dist/{boxes → containers}/iso-base-media/stsd/colr.js +0 -0
- /package/dist/{boxes → containers}/iso-base-media/stsd/ctts.d.ts +0 -0
- /package/dist/{boxes → containers}/iso-base-media/stsd/ctts.js +0 -0
- /package/dist/{boxes → containers}/iso-base-media/stsd/hvcc.d.ts +0 -0
- /package/dist/{boxes → containers}/iso-base-media/stsd/hvcc.js +0 -0
- /package/dist/{boxes → containers}/iso-base-media/stsd/keys.d.ts +0 -0
- /package/dist/{boxes → containers}/iso-base-media/stsd/keys.js +0 -0
- /package/dist/{boxes → containers}/iso-base-media/stsd/pasp.d.ts +0 -0
- /package/dist/{boxes → containers}/iso-base-media/stsd/pasp.js +0 -0
- /package/dist/{boxes → containers}/iso-base-media/stsd/stco.d.ts +0 -0
- /package/dist/{boxes → containers}/iso-base-media/stsd/stco.js +0 -0
- /package/dist/{boxes → containers}/iso-base-media/stsd/stsc.d.ts +0 -0
- /package/dist/{boxes → containers}/iso-base-media/stsd/stsc.js +0 -0
- /package/dist/{boxes → containers}/iso-base-media/stsd/stss.d.ts +0 -0
- /package/dist/{boxes → containers}/iso-base-media/stsd/stss.js +0 -0
- /package/dist/{boxes → containers}/iso-base-media/stsd/stsz.d.ts +0 -0
- /package/dist/{boxes → containers}/iso-base-media/stsd/stsz.js +0 -0
- /package/dist/{boxes → containers}/iso-base-media/stsd/stts.d.ts +0 -0
- /package/dist/{boxes → containers}/iso-base-media/stsd/stts.js +0 -0
- /package/dist/{boxes → containers}/iso-base-media/tfdt.d.ts +0 -0
- /package/dist/{boxes → containers}/iso-base-media/tfdt.js +0 -0
- /package/dist/{boxes → containers}/iso-base-media/tfhd.d.ts +0 -0
- /package/dist/{boxes → containers}/iso-base-media/tfhd.js +0 -0
- /package/dist/{boxes → containers}/iso-base-media/tkhd.d.ts +0 -0
- /package/dist/{boxes → containers}/iso-base-media/tkhd.js +0 -0
- /package/dist/{boxes → containers}/iso-base-media/to-date.d.ts +0 -0
- /package/dist/{boxes → containers}/iso-base-media/to-date.js +0 -0
- /package/dist/{boxes → containers}/iso-base-media/trun.d.ts +0 -0
- /package/dist/{boxes → containers}/iso-base-media/trun.js +0 -0
- /package/dist/{boxes → containers}/iso-base-media/void-box.d.ts +0 -0
- /package/dist/{boxes → containers}/mp3/get-duration.d.ts +0 -0
- /package/dist/{boxes → containers}/mp3/get-frame-length.d.ts +0 -0
- /package/dist/{boxes → containers}/mp3/get-frame-length.js +0 -0
- /package/dist/{boxes → containers}/mp3/get-metadata-from-mp3.d.ts +0 -0
- /package/dist/{boxes → containers}/mp3/get-metadata-from-mp3.js +0 -0
- /package/dist/{boxes → containers}/mp3/id3-v1.d.ts +0 -0
- /package/dist/{boxes → containers}/mp3/id3-v1.js +0 -0
- /package/dist/{boxes → containers}/mp3/samples-per-mpeg-file.d.ts +0 -0
- /package/dist/{boxes → containers}/mp3/samples-per-mpeg-file.js +0 -0
- /package/dist/{boxes → containers}/riff/is-movi.d.ts +0 -0
- /package/dist/{boxes → containers}/riff/is-movi.js +0 -0
- /package/dist/{boxes → containers}/riff/parse-avih.d.ts +0 -0
- /package/dist/{boxes → containers}/riff/parse-avih.js +0 -0
- /package/dist/{boxes → containers}/riff/parse-isft.d.ts +0 -0
- /package/dist/{boxes → containers}/riff/parse-isft.js +0 -0
- /package/dist/{boxes → containers}/riff/parse-strf.d.ts +0 -0
- /package/dist/{boxes → containers}/riff/parse-strf.js +0 -0
- /package/dist/{boxes → containers}/riff/parse-strh.d.ts +0 -0
- /package/dist/{boxes → containers}/riff/parse-strh.js +0 -0
- /package/dist/{boxes → containers}/riff/timescale.d.ts +0 -0
- /package/dist/{boxes → containers}/riff/timescale.js +0 -0
- /package/dist/{boxes → containers}/riff/traversal.js +0 -0
- /package/dist/{boxes → containers}/transport-stream/adts-header.d.ts +0 -0
- /package/dist/{boxes → containers}/transport-stream/boxes.d.ts +0 -0
- /package/dist/{boxes → containers}/transport-stream/discard-rest-of-packet.d.ts +0 -0
- /package/dist/{boxes → containers}/transport-stream/discard-rest-of-packet.js +0 -0
- /package/dist/{boxes → containers}/transport-stream/find-separator.d.ts +0 -0
- /package/dist/{boxes → containers}/transport-stream/find-separator.js +0 -0
- /package/dist/{boxes → containers}/transport-stream/get-tracks.d.ts +0 -0
- /package/dist/{boxes → containers}/transport-stream/handle-aac-packet.d.ts +0 -0
- /package/dist/{boxes → containers}/transport-stream/handle-aac-packet.js +0 -0
- /package/dist/{boxes → containers}/transport-stream/handle-avc-packet.d.ts +0 -0
- /package/dist/{boxes → containers}/transport-stream/handle-avc-packet.js +0 -0
- /package/dist/{boxes → containers}/transport-stream/next-pes-header-store.d.ts +0 -0
- /package/dist/{boxes → containers}/transport-stream/next-pes-header-store.js +0 -0
- /package/dist/{boxes → containers}/transport-stream/parse-pat.d.ts +0 -0
- /package/dist/{boxes → containers}/transport-stream/parse-pat.js +0 -0
- /package/dist/{boxes → containers}/transport-stream/parse-pes.d.ts +0 -0
- /package/dist/{boxes → containers}/transport-stream/parse-pes.js +0 -0
- /package/dist/{boxes → containers}/transport-stream/parse-pmt.d.ts +0 -0
- /package/dist/{boxes → containers}/transport-stream/parse-pmt.js +0 -0
- /package/dist/{boxes → containers}/transport-stream/process-stream-buffers.d.ts +0 -0
- /package/dist/{boxes → containers}/transport-stream/traversal.d.ts +0 -0
- /package/dist/{boxes → containers}/transport-stream/traversal.js +0 -0
- /package/dist/{boxes → containers}/webm/allowed-partial-segments.d.ts +0 -0
- /package/dist/{boxes → containers}/webm/allowed-partial-segments.js +0 -0
- /package/dist/{boxes → containers}/webm/av1-codec-private.d.ts +0 -0
- /package/dist/{boxes → containers}/webm/av1-codec-private.js +0 -0
- /package/dist/{boxes → containers}/webm/color.d.ts +0 -0
- /package/dist/{boxes → containers}/webm/color.js +0 -0
- /package/dist/{boxes → containers}/webm/description.d.ts +0 -0
- /package/dist/{boxes → containers}/webm/description.js +0 -0
- /package/dist/{boxes → containers}/webm/get-ready-tracks.d.ts +0 -0
- /package/dist/{boxes → containers}/webm/get-ready-tracks.js +0 -0
- /package/dist/{boxes → containers}/webm/get-sample-from-block.d.ts +0 -0
- /package/dist/{boxes → containers}/webm/get-sample-from-block.js +0 -0
- /package/dist/{boxes → containers}/webm/make-track.d.ts +0 -0
- /package/dist/{boxes → containers}/webm/make-track.js +0 -0
- /package/dist/{boxes → containers}/webm/segments/all-segments.d.ts +0 -0
- /package/dist/{boxes → containers}/webm/segments/all-segments.js +0 -0
- /package/dist/{boxes → containers}/webm/segments/block-simple-block-flags.d.ts +0 -0
- /package/dist/{boxes → containers}/webm/segments/block-simple-block-flags.js +0 -0
- /package/dist/{boxes → containers}/webm/segments/track-entry.d.ts +0 -0
- /package/dist/{boxes → containers}/webm/segments/track-entry.js +0 -0
- /package/dist/{boxes → containers}/webm/traversal.d.ts +0 -0
- /package/dist/{boxes → containers}/webm/traversal.js +0 -0
- /package/dist/{may-skip-video-data → state}/may-skip-video-data.js +0 -0
- /package/dist/{may-skip-video-data → state}/need-samples-for-fields.d.ts +0 -0
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
// src/writers/node.ts
|
|
2
|
+
import fs from "node:fs";
|
|
3
|
+
|
|
4
|
+
// src/log.ts
|
|
5
|
+
var logLevels = ["trace", "verbose", "info", "warn", "error"];
|
|
6
|
+
var getNumberForLogLevel = (level) => {
|
|
7
|
+
return logLevels.indexOf(level);
|
|
8
|
+
};
|
|
9
|
+
var isEqualOrBelowLogLevel = (currentLevel, level) => {
|
|
10
|
+
return getNumberForLogLevel(currentLevel) <= getNumberForLogLevel(level);
|
|
11
|
+
};
|
|
12
|
+
var Log = {
|
|
13
|
+
trace: (logLevel, ...args) => {
|
|
14
|
+
if (isEqualOrBelowLogLevel(logLevel, "trace")) {
|
|
15
|
+
return console.log(...args);
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
verbose: (logLevel, ...args) => {
|
|
19
|
+
if (isEqualOrBelowLogLevel(logLevel, "verbose")) {
|
|
20
|
+
return console.log(...args);
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
info: (logLevel, ...args) => {
|
|
24
|
+
if (isEqualOrBelowLogLevel(logLevel, "info")) {
|
|
25
|
+
return console.log(...args);
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
warn: (logLevel, ...args) => {
|
|
29
|
+
if (isEqualOrBelowLogLevel(logLevel, "warn")) {
|
|
30
|
+
return console.warn(...args);
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
error: (...args) => {
|
|
34
|
+
return console.error(...args);
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
// src/writers/node.ts
|
|
39
|
+
var createContent = (filename) => {
|
|
40
|
+
return async ({ logLevel }) => {
|
|
41
|
+
let writPromise = Promise.resolve();
|
|
42
|
+
const remove = async () => {
|
|
43
|
+
Log.verbose(logLevel, "Removing file", filename);
|
|
44
|
+
await fs.promises.unlink(filename).catch(() => {
|
|
45
|
+
});
|
|
46
|
+
};
|
|
47
|
+
await remove();
|
|
48
|
+
if (!fs.existsSync(filename)) {
|
|
49
|
+
Log.verbose(logLevel, "Creating file", filename);
|
|
50
|
+
fs.writeFileSync(filename, "");
|
|
51
|
+
}
|
|
52
|
+
const writeStream = fs.openSync(filename, "w");
|
|
53
|
+
let written = 0;
|
|
54
|
+
const write = async (data) => {
|
|
55
|
+
await new Promise((resolve, reject) => {
|
|
56
|
+
fs.write(writeStream, data, 0, data.length, undefined, (err) => {
|
|
57
|
+
if (err) {
|
|
58
|
+
reject(err);
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
Log.verbose(logLevel, "Wrote", data.length, "bytes to", filename);
|
|
62
|
+
resolve();
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
written += data.byteLength;
|
|
66
|
+
};
|
|
67
|
+
const updateDataAt = (position, data) => {
|
|
68
|
+
return new Promise((resolve, reject) => {
|
|
69
|
+
fs.write(writeStream, data, 0, data.length, position, (err) => {
|
|
70
|
+
if (err) {
|
|
71
|
+
reject(err);
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
Log.verbose(logLevel, "Wrote", data.length, "bytes to", filename, "at position", position);
|
|
75
|
+
resolve();
|
|
76
|
+
});
|
|
77
|
+
});
|
|
78
|
+
};
|
|
79
|
+
const writer = {
|
|
80
|
+
write: (arr) => {
|
|
81
|
+
writPromise = writPromise.then(() => write(arr));
|
|
82
|
+
return writPromise;
|
|
83
|
+
},
|
|
84
|
+
updateDataAt: (position, data) => {
|
|
85
|
+
writPromise = writPromise.then(() => updateDataAt(position, data));
|
|
86
|
+
return writPromise;
|
|
87
|
+
},
|
|
88
|
+
getWrittenByteCount: () => written,
|
|
89
|
+
remove,
|
|
90
|
+
finish: async () => {
|
|
91
|
+
await writPromise;
|
|
92
|
+
try {
|
|
93
|
+
Log.verbose(logLevel, "Closing file", filename);
|
|
94
|
+
fs.closeSync(writeStream);
|
|
95
|
+
return Promise.resolve();
|
|
96
|
+
} catch (e) {
|
|
97
|
+
return Promise.reject(e);
|
|
98
|
+
}
|
|
99
|
+
},
|
|
100
|
+
getBlob: async () => {
|
|
101
|
+
const file = await fs.promises.readFile(filename);
|
|
102
|
+
return new Blob([file]);
|
|
103
|
+
}
|
|
104
|
+
};
|
|
105
|
+
return writer;
|
|
106
|
+
};
|
|
107
|
+
};
|
|
108
|
+
var nodeWriter = (path) => {
|
|
109
|
+
return { createContent: createContent(path) };
|
|
110
|
+
};
|
|
111
|
+
export {
|
|
112
|
+
nodeWriter
|
|
113
|
+
};
|
|
@@ -12,6 +12,7 @@ export declare const isTransportStream: (data: Uint8Array) => boolean;
|
|
|
12
12
|
export declare const isMp3: (data: Uint8Array) => boolean;
|
|
13
13
|
export declare const isGif: (data: Uint8Array) => boolean;
|
|
14
14
|
export declare const isAac: (data: Uint8Array) => boolean;
|
|
15
|
+
export declare const isFlac: (data: Uint8Array) => boolean;
|
|
15
16
|
export type RiffType = {
|
|
16
17
|
type: 'riff';
|
|
17
18
|
};
|
|
@@ -36,7 +37,10 @@ export type WavType = {
|
|
|
36
37
|
export type GifType = {
|
|
37
38
|
type: 'gif';
|
|
38
39
|
};
|
|
40
|
+
export type FlacType = {
|
|
41
|
+
type: 'flac';
|
|
42
|
+
};
|
|
39
43
|
export type UnknownType = {
|
|
40
44
|
type: 'unknown';
|
|
41
45
|
};
|
|
42
|
-
export type FileType = JpegType | WebpType | RiffType | WebmType | WavType | PdfType | AacType | IsoBaseMediaType | TransportStreamType | Mp3Type | GifType | PngType | BmpType | AacType | UnknownType;
|
|
46
|
+
export type FileType = JpegType | WebpType | RiffType | WebmType | WavType | PdfType | AacType | IsoBaseMediaType | TransportStreamType | Mp3Type | GifType | PngType | BmpType | AacType | FlacType | UnknownType;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.isAac = exports.isGif = exports.isMp3 = exports.isTransportStream = exports.isIsoBaseMedia = exports.isWebm = exports.isRiffWave = exports.isRiffAvi = exports.matchesPattern = void 0;
|
|
3
|
+
exports.isFlac = exports.isAac = exports.isGif = exports.isMp3 = exports.isTransportStream = exports.isIsoBaseMedia = exports.isWebm = exports.isRiffWave = exports.isRiffAvi = exports.matchesPattern = void 0;
|
|
4
4
|
const webmPattern = new Uint8Array([0x1a, 0x45, 0xdf, 0xa3]);
|
|
5
5
|
const matchesPattern = (pattern) => {
|
|
6
6
|
return (data) => {
|
|
@@ -63,3 +63,8 @@ const isAac = (data) => {
|
|
|
63
63
|
return (0, exports.matchesPattern)(aacPattern)(data.subarray(0, 2));
|
|
64
64
|
};
|
|
65
65
|
exports.isAac = isAac;
|
|
66
|
+
const isFlac = (data) => {
|
|
67
|
+
const flacPattern = new Uint8Array([0x66, 0x4c, 0x61, 0x43]);
|
|
68
|
+
return (0, exports.matchesPattern)(flacPattern)(data.subarray(0, 4));
|
|
69
|
+
};
|
|
70
|
+
exports.isFlac = isFlac;
|
package/dist/file-types/index.js
CHANGED
|
@@ -17,6 +17,9 @@ const detectFileType = (data) => {
|
|
|
17
17
|
if ((0, detect_file_type_1.isAac)(data)) {
|
|
18
18
|
return { type: 'aac' };
|
|
19
19
|
}
|
|
20
|
+
if ((0, detect_file_type_1.isFlac)(data)) {
|
|
21
|
+
return { type: 'flac' };
|
|
22
|
+
}
|
|
20
23
|
const webp = (0, webp_1.isWebp)(data);
|
|
21
24
|
if (webp) {
|
|
22
25
|
return webp;
|
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
import type { MoovBox } from './
|
|
2
|
-
import type { TrakBox } from './
|
|
1
|
+
import type { MoovBox } from './containers/iso-base-media/moov/moov';
|
|
2
|
+
import type { TrakBox } from './containers/iso-base-media/trak/trak';
|
|
3
3
|
import { type MediaParserAudioCodec } from './get-tracks';
|
|
4
|
-
import type { Structure } from './parse-result';
|
|
5
4
|
import type { ParserState } from './state/parser-state';
|
|
6
5
|
export declare const getAudioCodec: (parserState: ParserState) => MediaParserAudioCodec | null;
|
|
7
|
-
export declare const hasAudioCodec: (
|
|
6
|
+
export declare const hasAudioCodec: (state: ParserState) => boolean;
|
|
8
7
|
type AudioCodecInfo = {
|
|
9
8
|
format: string;
|
|
10
9
|
primarySpecificator: number | null;
|
package/dist/get-audio-codec.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getAudioCodecFromTrack = exports.getAudioCodecStringFromTrak = exports.getAudioCodecFromIso = exports.isLpcmAudioCodec = exports.getAudioCodecFromTrak = exports.getSampleRate = exports.getNumberOfChannelsFromTrak = exports.getCodecPrivateFromTrak = exports.hasAudioCodec = exports.getAudioCodec = void 0;
|
|
4
|
-
const traversal_1 = require("./
|
|
4
|
+
const traversal_1 = require("./containers/iso-base-media/traversal");
|
|
5
5
|
const get_fps_1 = require("./get-fps");
|
|
6
6
|
const get_tracks_1 = require("./get-tracks");
|
|
7
7
|
const getAudioCodec = (parserState) => {
|
|
@@ -22,8 +22,8 @@ const getAudioCodec = (parserState) => {
|
|
|
22
22
|
return null;
|
|
23
23
|
};
|
|
24
24
|
exports.getAudioCodec = getAudioCodec;
|
|
25
|
-
const hasAudioCodec = (
|
|
26
|
-
return (0, get_tracks_1.getHasTracks)(
|
|
25
|
+
const hasAudioCodec = (state) => {
|
|
26
|
+
return (0, get_tracks_1.getHasTracks)(state);
|
|
27
27
|
};
|
|
28
28
|
exports.hasAudioCodec = hasAudioCodec;
|
|
29
29
|
const getCodecSpecificatorFromEsdsBox = ({ child, }) => {
|
|
@@ -195,6 +195,9 @@ const getAudioCodecFromAudioCodecInfo = (codec) => {
|
|
|
195
195
|
if (codec.format === 'sowt') {
|
|
196
196
|
return 'aiff';
|
|
197
197
|
}
|
|
198
|
+
if (codec.format === 'ac-3') {
|
|
199
|
+
return 'ac3';
|
|
200
|
+
}
|
|
198
201
|
if (codec.format === 'mp4a') {
|
|
199
202
|
if (codec.primarySpecificator === 0x40) {
|
|
200
203
|
return 'aac';
|
package/dist/get-container.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { MediaParserContainer } from './options';
|
|
2
2
|
import type { Structure } from './parse-result';
|
|
3
|
-
export declare const getContainer: (segments: Structure) =>
|
|
3
|
+
export declare const getContainer: (segments: Structure) => MediaParserContainer;
|
|
4
4
|
export declare const hasContainer: (boxes: Structure) => boolean;
|
package/dist/get-container.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.hasContainer = exports.getContainer = void 0;
|
|
4
|
-
const traversal_1 = require("./
|
|
4
|
+
const traversal_1 = require("./containers/riff/traversal");
|
|
5
5
|
const getContainer = (segments) => {
|
|
6
6
|
if (segments.type === 'iso-base-media') {
|
|
7
7
|
return 'mp4';
|
|
@@ -15,12 +15,21 @@ const getContainer = (segments) => {
|
|
|
15
15
|
if (segments.type === 'mp3') {
|
|
16
16
|
return 'mp3';
|
|
17
17
|
}
|
|
18
|
+
if (segments.type === 'wav') {
|
|
19
|
+
return 'wav';
|
|
20
|
+
}
|
|
21
|
+
if (segments.type === 'flac') {
|
|
22
|
+
return 'flac';
|
|
23
|
+
}
|
|
18
24
|
if (segments.type === 'riff') {
|
|
19
25
|
if ((0, traversal_1.isRiffAvi)(segments)) {
|
|
20
26
|
return 'avi';
|
|
21
27
|
}
|
|
22
28
|
throw new Error('Unknown RIFF container ' + segments.type);
|
|
23
29
|
}
|
|
30
|
+
if (segments.type === 'aac') {
|
|
31
|
+
return 'aac';
|
|
32
|
+
}
|
|
24
33
|
throw new Error('Unknown container ' + segments);
|
|
25
34
|
};
|
|
26
35
|
exports.getContainer = getContainer;
|
package/dist/get-dimensions.d.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import type { Structure } from './parse-result';
|
|
2
1
|
import type { ParserState } from './state/parser-state';
|
|
3
2
|
export type Dimensions = {
|
|
4
3
|
width: number;
|
|
@@ -9,5 +8,5 @@ export type ExpandedDimensions = Dimensions & {
|
|
|
9
8
|
unrotatedWidth: number;
|
|
10
9
|
unrotatedHeight: number;
|
|
11
10
|
};
|
|
12
|
-
export declare const getDimensions: (
|
|
13
|
-
export declare const hasDimensions: (
|
|
11
|
+
export declare const getDimensions: (state: ParserState) => ExpandedDimensions | null;
|
|
12
|
+
export declare const hasDimensions: (state: ParserState) => boolean;
|
package/dist/get-dimensions.js
CHANGED
|
@@ -2,13 +2,15 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.hasDimensions = exports.getDimensions = void 0;
|
|
4
4
|
const get_tracks_1 = require("./get-tracks");
|
|
5
|
-
const
|
|
5
|
+
const is_audio_structure_1 = require("./is-audio-structure");
|
|
6
|
+
const getDimensions = (state) => {
|
|
7
|
+
const structure = state.getStructureOrNull();
|
|
8
|
+
if (structure && (0, is_audio_structure_1.isAudioStructure)(structure)) {
|
|
9
|
+
return null;
|
|
10
|
+
}
|
|
6
11
|
const { videoTracks } = (0, get_tracks_1.getTracks)(state);
|
|
7
12
|
if (!videoTracks.length) {
|
|
8
|
-
|
|
9
|
-
return null;
|
|
10
|
-
}
|
|
11
|
-
throw new Error('Expected video track');
|
|
13
|
+
return null;
|
|
12
14
|
}
|
|
13
15
|
const firstVideoTrack = videoTracks[0];
|
|
14
16
|
return {
|
|
@@ -20,11 +22,13 @@ const getDimensions = (boxes, state) => {
|
|
|
20
22
|
};
|
|
21
23
|
};
|
|
22
24
|
exports.getDimensions = getDimensions;
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
25
|
+
const hasDimensions = (state) => {
|
|
26
|
+
const structure = state.getStructureOrNull();
|
|
27
|
+
if (structure && (0, is_audio_structure_1.isAudioStructure)(structure)) {
|
|
28
|
+
return true;
|
|
29
|
+
}
|
|
26
30
|
try {
|
|
27
|
-
return (0, exports.getDimensions)(
|
|
31
|
+
return (0, exports.getDimensions)(state) !== null;
|
|
28
32
|
}
|
|
29
33
|
catch (_a) {
|
|
30
34
|
return false;
|
package/dist/get-duration.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import type { AnySegment
|
|
1
|
+
import type { AnySegment } from './parse-result';
|
|
2
2
|
import type { ParserState } from './state/parser-state';
|
|
3
3
|
export declare const isMatroska: (boxes: AnySegment[]) => {
|
|
4
4
|
type: "Segment";
|
|
5
|
-
value: import("./
|
|
5
|
+
value: import("./containers/webm/segments/all-segments").PossibleEbml[];
|
|
6
6
|
minVintWidth: number | null;
|
|
7
7
|
} | undefined;
|
|
8
|
-
export declare const getDuration: (
|
|
9
|
-
export declare const hasDuration: (
|
|
10
|
-
export declare const hasSlowDuration: (
|
|
8
|
+
export declare const getDuration: (parserState: ParserState) => number | null;
|
|
9
|
+
export declare const hasDuration: (parserState: ParserState) => boolean;
|
|
10
|
+
export declare const hasSlowDuration: (parserState: ParserState) => boolean;
|
package/dist/get-duration.js
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.hasSlowDuration = exports.hasDuration = exports.getDuration = exports.isMatroska = void 0;
|
|
4
|
-
const
|
|
5
|
-
const
|
|
6
|
-
const
|
|
7
|
-
const
|
|
4
|
+
const get_duration_from_flac_1 = require("./containers/flac/get-duration-from-flac");
|
|
5
|
+
const get_sample_positions_from_track_1 = require("./containers/iso-base-media/get-sample-positions-from-track");
|
|
6
|
+
const traversal_1 = require("./containers/iso-base-media/traversal");
|
|
7
|
+
const get_duration_1 = require("./containers/mp3/get-duration");
|
|
8
|
+
const get_duration_2 = require("./containers/riff/get-duration");
|
|
9
|
+
const get_duration_from_wav_1 = require("./containers/wav/get-duration-from-wav");
|
|
8
10
|
const get_tracks_1 = require("./get-tracks");
|
|
9
11
|
const getDurationFromMatroska = (segments) => {
|
|
10
12
|
const mainSegment = segments.find((s) => s.type === 'Segment');
|
|
@@ -35,8 +37,9 @@ const isMatroska = (boxes) => {
|
|
|
35
37
|
return matroskaBox;
|
|
36
38
|
};
|
|
37
39
|
exports.isMatroska = isMatroska;
|
|
38
|
-
const getDurationFromIsoBaseMedia = (
|
|
39
|
-
const
|
|
40
|
+
const getDurationFromIsoBaseMedia = (parserState) => {
|
|
41
|
+
const structure = parserState.getIsoStructure();
|
|
42
|
+
const moovBox = (0, traversal_1.getMoovBox)(parserState);
|
|
40
43
|
if (!moovBox) {
|
|
41
44
|
return null;
|
|
42
45
|
}
|
|
@@ -66,29 +69,16 @@ const getDurationFromIsoBaseMedia = (structure, parserState) => {
|
|
|
66
69
|
const highestTimestamp = Math.max(...allSamples);
|
|
67
70
|
return highestTimestamp;
|
|
68
71
|
};
|
|
69
|
-
const
|
|
70
|
-
const
|
|
71
|
-
const lengths = [];
|
|
72
|
-
for (const s of strl) {
|
|
73
|
-
const strh = (0, traversal_2.getStrhBox)(s.children);
|
|
74
|
-
if (!strh) {
|
|
75
|
-
throw new Error('No strh box');
|
|
76
|
-
}
|
|
77
|
-
const samplesPerSecond = strh.rate / strh.scale;
|
|
78
|
-
const streamLength = strh.length / samplesPerSecond;
|
|
79
|
-
lengths.push(streamLength);
|
|
80
|
-
}
|
|
81
|
-
return Math.max(...lengths);
|
|
82
|
-
};
|
|
83
|
-
const getDuration = (structure, parserState) => {
|
|
72
|
+
const getDuration = (parserState) => {
|
|
73
|
+
const structure = parserState.getStructure();
|
|
84
74
|
if (structure.type === 'matroska') {
|
|
85
75
|
return getDurationFromMatroska(structure.boxes);
|
|
86
76
|
}
|
|
87
77
|
if (structure.type === 'iso-base-media') {
|
|
88
|
-
return getDurationFromIsoBaseMedia(
|
|
78
|
+
return getDurationFromIsoBaseMedia(parserState);
|
|
89
79
|
}
|
|
90
80
|
if (structure.type === 'riff') {
|
|
91
|
-
return getDurationFromAvi(structure);
|
|
81
|
+
return (0, get_duration_2.getDurationFromAvi)(structure);
|
|
92
82
|
}
|
|
93
83
|
if (structure.type === 'transport-stream') {
|
|
94
84
|
return null;
|
|
@@ -96,20 +86,29 @@ const getDuration = (structure, parserState) => {
|
|
|
96
86
|
if (structure.type === 'mp3') {
|
|
97
87
|
return (0, get_duration_1.getDurationFromMp3)(parserState);
|
|
98
88
|
}
|
|
89
|
+
if (structure.type === 'wav') {
|
|
90
|
+
return (0, get_duration_from_wav_1.getDurationFromWav)(parserState);
|
|
91
|
+
}
|
|
92
|
+
if (structure.type === 'aac') {
|
|
93
|
+
return null;
|
|
94
|
+
}
|
|
95
|
+
if (structure.type === 'flac') {
|
|
96
|
+
return (0, get_duration_from_flac_1.getDurationFromFlac)(parserState);
|
|
97
|
+
}
|
|
99
98
|
throw new Error('Has no duration ' + structure);
|
|
100
99
|
};
|
|
101
100
|
exports.getDuration = getDuration;
|
|
102
101
|
// `duration` just grabs from metadata, and otherwise returns null
|
|
103
102
|
// Therefore just checking if we have tracks
|
|
104
|
-
const hasDuration = (
|
|
105
|
-
return (0, get_tracks_1.getHasTracks)(
|
|
103
|
+
const hasDuration = (parserState) => {
|
|
104
|
+
return (0, get_tracks_1.getHasTracks)(parserState);
|
|
106
105
|
};
|
|
107
106
|
exports.hasDuration = hasDuration;
|
|
108
107
|
// `slowDuration` does through everything, and therefore is false
|
|
109
108
|
// Unless it it somewhere in the metadata and is non-null
|
|
110
|
-
const hasSlowDuration = (
|
|
109
|
+
const hasSlowDuration = (parserState) => {
|
|
111
110
|
try {
|
|
112
|
-
return (0, exports.getDuration)(
|
|
111
|
+
return (0, exports.getDuration)(parserState) !== null;
|
|
113
112
|
}
|
|
114
113
|
catch (_a) {
|
|
115
114
|
return false;
|
|
@@ -26,6 +26,10 @@ const getFieldsFromCallback = ({ fields, callbacks, }) => {
|
|
|
26
26
|
slowNumberOfFrames: Boolean(callbacks.onSlowNumberOfFrames),
|
|
27
27
|
keyframes: Boolean(callbacks.onKeyframes),
|
|
28
28
|
images: Boolean(callbacks.onImages),
|
|
29
|
+
numberOfAudioChannels: Boolean(callbacks.onNumberOfAudioChannels),
|
|
30
|
+
sampleRate: Boolean(callbacks.onSampleRate),
|
|
31
|
+
slowAudioBitrate: Boolean(callbacks.onSlowAudioBitrate),
|
|
32
|
+
slowVideoBitrate: Boolean(callbacks.onSlowVideoBitrate),
|
|
29
33
|
...fields,
|
|
30
34
|
};
|
|
31
35
|
return newFields;
|
package/dist/get-fps.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { TrakBox } from './
|
|
2
|
-
import type {
|
|
1
|
+
import type { TrakBox } from './containers/iso-base-media/trak/trak';
|
|
2
|
+
import type { ParserState } from './state/parser-state';
|
|
3
3
|
type TimescaleAndDuration = {
|
|
4
4
|
timescale: number;
|
|
5
5
|
duration: number;
|
|
@@ -8,7 +8,7 @@ export declare const trakBoxContainsAudio: (trakBox: TrakBox) => boolean;
|
|
|
8
8
|
export declare const trakBoxContainsVideo: (trakBox: TrakBox) => boolean;
|
|
9
9
|
export declare const getTimescaleAndDuration: (trakBox: TrakBox) => TimescaleAndDuration | null;
|
|
10
10
|
export declare const getFpsFromMp4TrakBox: (trakBox: TrakBox) => number | null;
|
|
11
|
-
export declare const getFps: (
|
|
12
|
-
export declare const hasFpsSuitedForSlowFps: (
|
|
13
|
-
export declare const hasFps: (
|
|
11
|
+
export declare const getFps: (state: ParserState) => number | null;
|
|
12
|
+
export declare const hasFpsSuitedForSlowFps: (state: ParserState) => boolean;
|
|
13
|
+
export declare const hasFps: (state: ParserState) => boolean;
|
|
14
14
|
export {};
|
package/dist/get-fps.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.hasFps = exports.hasFpsSuitedForSlowFps = exports.getFps = exports.getFpsFromMp4TrakBox = exports.getTimescaleAndDuration = exports.trakBoxContainsVideo = exports.trakBoxContainsAudio = void 0;
|
|
4
|
-
const traversal_1 = require("./
|
|
5
|
-
const traversal_2 = require("./
|
|
4
|
+
const traversal_1 = require("./containers/iso-base-media/traversal");
|
|
5
|
+
const traversal_2 = require("./containers/riff/traversal");
|
|
6
|
+
const is_audio_structure_1 = require("./is-audio-structure");
|
|
6
7
|
const calculateFps = ({ sttsBox, timeScale, durationInSamples, }) => {
|
|
7
8
|
let totalSamples = 0;
|
|
8
9
|
for (const sample of sttsBox.sampleDistribution) {
|
|
@@ -60,8 +61,8 @@ const getFpsFromMp4TrakBox = (trakBox) => {
|
|
|
60
61
|
});
|
|
61
62
|
};
|
|
62
63
|
exports.getFpsFromMp4TrakBox = getFpsFromMp4TrakBox;
|
|
63
|
-
const getFpsFromIsoMaseMedia = (
|
|
64
|
-
const moovBox = (0, traversal_1.getMoovBox)(
|
|
64
|
+
const getFpsFromIsoMaseMedia = (state) => {
|
|
65
|
+
const moovBox = (0, traversal_1.getMoovBox)(state);
|
|
65
66
|
if (!moovBox) {
|
|
66
67
|
return null;
|
|
67
68
|
}
|
|
@@ -86,9 +87,10 @@ const getFpsFromAvi = (structure) => {
|
|
|
86
87
|
}
|
|
87
88
|
return null;
|
|
88
89
|
};
|
|
89
|
-
const getFps = (
|
|
90
|
+
const getFps = (state) => {
|
|
91
|
+
const segments = state.getStructure();
|
|
90
92
|
if (segments.type === 'iso-base-media') {
|
|
91
|
-
return getFpsFromIsoMaseMedia(
|
|
93
|
+
return getFpsFromIsoMaseMedia(state);
|
|
92
94
|
}
|
|
93
95
|
if (segments.type === 'riff') {
|
|
94
96
|
return getFpsFromAvi(segments);
|
|
@@ -101,31 +103,39 @@ const getFps = (segments) => {
|
|
|
101
103
|
if (segments.type === 'transport-stream') {
|
|
102
104
|
return null;
|
|
103
105
|
}
|
|
104
|
-
if (segments.type === 'mp3'
|
|
106
|
+
if (segments.type === 'mp3' ||
|
|
107
|
+
segments.type === 'wav' ||
|
|
108
|
+
segments.type === 'flac' ||
|
|
109
|
+
segments.type === 'aac') {
|
|
105
110
|
return null;
|
|
106
111
|
}
|
|
107
|
-
throw new Error('Cannot get fps, not implemented');
|
|
112
|
+
throw new Error('Cannot get fps, not implemented: ' + segments);
|
|
108
113
|
};
|
|
109
114
|
exports.getFps = getFps;
|
|
110
|
-
const hasFpsSuitedForSlowFps = (
|
|
115
|
+
const hasFpsSuitedForSlowFps = (state) => {
|
|
111
116
|
try {
|
|
112
|
-
return (0, exports.getFps)(
|
|
117
|
+
return (0, exports.getFps)(state) !== null;
|
|
113
118
|
}
|
|
114
119
|
catch (_a) {
|
|
115
120
|
return false;
|
|
116
121
|
}
|
|
117
122
|
};
|
|
118
123
|
exports.hasFpsSuitedForSlowFps = hasFpsSuitedForSlowFps;
|
|
119
|
-
const hasFps = (
|
|
124
|
+
const hasFps = (state) => {
|
|
120
125
|
// Matroska and Transport stream has no FPS metadata
|
|
121
126
|
// Not bothering to parse
|
|
122
127
|
// Users should use `slowFps` field
|
|
123
|
-
|
|
128
|
+
// same goes for audio
|
|
129
|
+
const structure = state.getStructure();
|
|
130
|
+
if ((0, is_audio_structure_1.isAudioStructure)(structure)) {
|
|
124
131
|
return true;
|
|
125
132
|
}
|
|
126
|
-
if (
|
|
133
|
+
if (structure.type === 'matroska') {
|
|
127
134
|
return true;
|
|
128
135
|
}
|
|
129
|
-
|
|
136
|
+
if (structure.type === 'transport-stream') {
|
|
137
|
+
return true;
|
|
138
|
+
}
|
|
139
|
+
return (0, exports.hasFpsSuitedForSlowFps)(state);
|
|
130
140
|
};
|
|
131
141
|
exports.hasFps = hasFps;
|
package/dist/get-is-hdr.d.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import type { Structure } from './parse-result';
|
|
2
1
|
import type { ParserState } from './state/parser-state';
|
|
3
2
|
export declare const getIsHdr: (state: ParserState) => boolean;
|
|
4
|
-
export declare const hasHdr: (
|
|
3
|
+
export declare const hasHdr: (state: ParserState) => boolean;
|
package/dist/get-is-hdr.js
CHANGED
|
@@ -12,7 +12,7 @@ const getIsHdr = (state) => {
|
|
|
12
12
|
return videoTracks.some((track) => isVideoTrackHdr(track));
|
|
13
13
|
};
|
|
14
14
|
exports.getIsHdr = getIsHdr;
|
|
15
|
-
const hasHdr = (
|
|
16
|
-
return (0, get_tracks_1.getHasTracks)(
|
|
15
|
+
const hasHdr = (state) => {
|
|
16
|
+
return (0, get_tracks_1.getHasTracks)(state);
|
|
17
17
|
};
|
|
18
18
|
exports.hasHdr = hasHdr;
|
package/dist/get-keyframes.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import type { MediaParserKeyframe } from './options';
|
|
2
|
-
import type { Structure } from './parse-result';
|
|
3
2
|
import type { ParserState } from './state/parser-state';
|
|
4
|
-
export declare const getKeyframes: (
|
|
5
|
-
export declare const hasKeyframes: (
|
|
3
|
+
export declare const getKeyframes: (state: ParserState) => MediaParserKeyframe[] | null;
|
|
4
|
+
export declare const hasKeyframes: (parserState: ParserState) => boolean;
|
package/dist/get-keyframes.js
CHANGED
|
@@ -1,18 +1,20 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.hasKeyframes = exports.getKeyframes = void 0;
|
|
4
|
-
const get_keyframes_1 = require("./
|
|
4
|
+
const get_keyframes_1 = require("./containers/iso-base-media/get-keyframes");
|
|
5
5
|
const get_tracks_1 = require("./get-tracks");
|
|
6
|
-
const getKeyframes = (
|
|
6
|
+
const getKeyframes = (state) => {
|
|
7
|
+
const structure = state.getStructure();
|
|
7
8
|
if (structure.type === 'iso-base-media') {
|
|
8
|
-
return (0, get_keyframes_1.getKeyframesFromIsoBaseMedia)(
|
|
9
|
+
return (0, get_keyframes_1.getKeyframesFromIsoBaseMedia)(state);
|
|
9
10
|
}
|
|
10
11
|
return null;
|
|
11
12
|
};
|
|
12
13
|
exports.getKeyframes = getKeyframes;
|
|
13
|
-
const hasKeyframes = (
|
|
14
|
+
const hasKeyframes = (parserState) => {
|
|
15
|
+
const structure = parserState.getStructure();
|
|
14
16
|
if (structure.type === 'iso-base-media') {
|
|
15
|
-
return (0, get_tracks_1.getHasTracks)(
|
|
17
|
+
return (0, get_tracks_1.getHasTracks)(parserState);
|
|
16
18
|
}
|
|
17
19
|
// Has, but will be null
|
|
18
20
|
return true;
|
package/dist/get-location.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { ParserState } from './state/parser-state';
|
|
2
2
|
export type MediaParserLocation = {
|
|
3
3
|
latitude: number;
|
|
4
4
|
longitude: number;
|
|
@@ -10,4 +10,4 @@ export declare function parseLocation(locationString: string): {
|
|
|
10
10
|
longitude: number;
|
|
11
11
|
altitude: number | null;
|
|
12
12
|
} | null;
|
|
13
|
-
export declare const getLocation: (
|
|
13
|
+
export declare const getLocation: (state: ParserState) => MediaParserLocation | null;
|
package/dist/get-location.js
CHANGED
|
@@ -19,8 +19,8 @@ function parseLocation(locationString) {
|
|
|
19
19
|
altitude,
|
|
20
20
|
};
|
|
21
21
|
}
|
|
22
|
-
const getLocation = (
|
|
23
|
-
const metadata = (0, get_metadata_1.getMetadata)(
|
|
22
|
+
const getLocation = (state) => {
|
|
23
|
+
const metadata = (0, get_metadata_1.getMetadata)(state);
|
|
24
24
|
const locationEntry = metadata.find((entry) => entry.key === 'com.apple.quicktime.location.ISO6709');
|
|
25
25
|
const horizontalAccuracy = metadata.find((entry) => entry.key === 'com.apple.quicktime.location.accuracy.horizontal');
|
|
26
26
|
if (locationEntry) {
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.hasNumberOfAudioChannels = exports.getNumberOfAudioChannels = void 0;
|
|
4
|
+
const getNumberOfAudioChannels = (state) => {
|
|
5
|
+
var _a, _b;
|
|
6
|
+
return ((_b = (_a = state.callbacks.tracks.getTracks().find((track) => {
|
|
7
|
+
return track.type === 'audio';
|
|
8
|
+
})) === null || _a === void 0 ? void 0 : _a.numberOfChannels) !== null && _b !== void 0 ? _b : null);
|
|
9
|
+
};
|
|
10
|
+
exports.getNumberOfAudioChannels = getNumberOfAudioChannels;
|
|
11
|
+
const hasNumberOfAudioChannels = (state) => {
|
|
12
|
+
return state.callbacks.tracks.hasAllTracks();
|
|
13
|
+
};
|
|
14
|
+
exports.hasNumberOfAudioChannels = hasNumberOfAudioChannels;
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import type { Av1CBox } from './
|
|
2
|
-
import type { AvccBox } from './
|
|
3
|
-
import type { ColorParameterBox } from './
|
|
4
|
-
import type { HvccBox } from './
|
|
5
|
-
import type { PaspBox } from './
|
|
6
|
-
import type { VideoSample } from './
|
|
7
|
-
import type { TkhdBox } from './
|
|
8
|
-
import type { TrakBox } from './
|
|
1
|
+
import type { Av1CBox } from './containers/iso-base-media/stsd/av1c';
|
|
2
|
+
import type { AvccBox } from './containers/iso-base-media/stsd/avcc';
|
|
3
|
+
import type { ColorParameterBox } from './containers/iso-base-media/stsd/colr';
|
|
4
|
+
import type { HvccBox } from './containers/iso-base-media/stsd/hvcc';
|
|
5
|
+
import type { PaspBox } from './containers/iso-base-media/stsd/pasp';
|
|
6
|
+
import type { VideoSample } from './containers/iso-base-media/stsd/samples';
|
|
7
|
+
import type { TkhdBox } from './containers/iso-base-media/tkhd';
|
|
8
|
+
import type { TrakBox } from './containers/iso-base-media/trak/trak';
|
|
9
9
|
import type { Dimensions } from './get-dimensions';
|
|
10
10
|
type AspectRatio = {
|
|
11
11
|
numerator: number;
|