@remotion/media-parser 4.0.272 → 4.0.274
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/containers/flac/get-channel-count.d.ts +1 -1
- package/dist/containers/iso-base-media/get-video-codec-from-iso-track.d.ts +1 -1
- package/dist/containers/iso-base-media/make-track.js +1 -0
- package/dist/containers/m3u/iterate-over-segment-files.js +4 -1
- package/dist/containers/riff/get-tracks-from-avi.js +1 -0
- package/dist/containers/transport-stream/handle-avc-packet.js +1 -0
- package/dist/containers/webm/make-track.js +1 -0
- package/dist/esm/index.mjs +9 -351
- package/dist/esm/worker-server-entry.mjs +8 -1
- package/dist/esm/worker-web-entry.mjs +8 -1
- package/dist/esm/worker.mjs +20 -8
- package/dist/get-tracks.d.ts +1 -0
- package/dist/index.d.ts +0 -2
- package/dist/index.js +0 -2
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/worker.d.ts +3 -2
- package/dist/worker.js +2 -267
- package/package.json +13 -4
- package/dist/containers/m3u/m3u-child-stream.d.ts +0 -0
- package/dist/containers/m3u/m3u-child-stream.js +0 -1
- package/dist/containers/m3u/return-packets.d.ts +0 -17
- package/dist/containers/m3u/return-packets.js +0 -109
- package/dist/esm/fetch.mjs +0 -194
- package/dist/esm/web-file.mjs +0 -60
- package/dist/esm/worker-server.mjs +0 -12914
- package/dist/parse-media-on-browser-worker.d.ts +0 -2
- package/dist/parse-media-on-browser-worker.js +0 -4
- package/dist/parse-media-on-worker.d.ts +0 -2
- package/dist/parse-media-on-worker.js +0 -4
- package/dist/state/last-eventloop-break.d.ts +0 -4
- package/dist/state/last-eventloop-break.js +0 -14
- package/dist/web-file.d.ts +0 -1
- package/dist/web-file.js +0 -1
- package/dist/worker-bun-entry.d.ts +0 -1
- package/dist/worker-bun-entry.js +0 -5
- package/dist/worker-entry.d.ts +0 -1
- package/dist/worker-entry.js +0 -5
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import type { BufferIterator } from '../../buffer-iterator';
|
|
2
|
-
export declare const getChannelCount: (iterator: BufferIterator) =>
|
|
2
|
+
export declare const getChannelCount: (iterator: BufferIterator) => 5 | 1 | 2 | 3 | 4 | 6 | 7 | 8;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import type { TrakBox } from './trak/trak';
|
|
2
|
-
export declare const getVideoCodecFromIsoTrak: (trakBox: TrakBox) => "
|
|
2
|
+
export declare const getVideoCodecFromIsoTrak: (trakBox: TrakBox) => "h264" | "av1" | "h265" | "prores";
|
|
@@ -75,6 +75,7 @@ export const makeBaseMediaTrack = (trakBox) => {
|
|
|
75
75
|
}
|
|
76
76
|
const privateData = getVideoPrivateData(trakBox);
|
|
77
77
|
const track = {
|
|
78
|
+
m3uStreamFormat: null,
|
|
78
79
|
type: 'video',
|
|
79
80
|
trackId: tkhdBox.trackId,
|
|
80
81
|
description: videoDescriptors !== null && videoDescriptors !== void 0 ? videoDescriptors : undefined,
|
|
@@ -74,7 +74,10 @@ export const iteratorOverSegmentFiles = async ({ structure, onVideoTrack, m3uSta
|
|
|
74
74
|
: async ({ track }) => {
|
|
75
75
|
const callbackOrFalse = m3uState.hasEmittedVideoTrack(playlistUrl);
|
|
76
76
|
if (callbackOrFalse === false) {
|
|
77
|
-
const callback = await onVideoTrack(
|
|
77
|
+
const callback = await onVideoTrack({
|
|
78
|
+
...track,
|
|
79
|
+
m3uStreamFormat: chunk.isHeader || mp4HeaderSegment ? 'mp4' : 'ts',
|
|
80
|
+
});
|
|
78
81
|
if (!callback) {
|
|
79
82
|
m3uState.setHasEmittedVideoTrack(playlistUrl, null);
|
|
80
83
|
return null;
|
|
@@ -18,6 +18,7 @@ export const handleAvcPacket = async ({ streamBuffer, programId, state, offset,
|
|
|
18
18
|
const dimensions = getDimensionsFromSps(spsAndPps.sps.spsData);
|
|
19
19
|
const sampleAspectRatio = getSampleAspectRatioFromSps(spsAndPps.sps.spsData);
|
|
20
20
|
const track = {
|
|
21
|
+
m3uStreamFormat: null,
|
|
21
22
|
rotation: 0,
|
|
22
23
|
trackId: programId,
|
|
23
24
|
type: 'video',
|
package/dist/esm/index.mjs
CHANGED
|
@@ -2401,6 +2401,7 @@ var makeAviVideoTrack = ({
|
|
|
2401
2401
|
displayAspectHeight: strf.height,
|
|
2402
2402
|
timescale: MEDIA_PARSER_RIFF_TIMESCALE,
|
|
2403
2403
|
description: undefined,
|
|
2404
|
+
m3uStreamFormat: null,
|
|
2404
2405
|
trackId: index,
|
|
2405
2406
|
color: {
|
|
2406
2407
|
fullRange: null,
|
|
@@ -3086,6 +3087,7 @@ var getTrack = ({
|
|
|
3086
3087
|
return null;
|
|
3087
3088
|
}
|
|
3088
3089
|
return {
|
|
3090
|
+
m3uStreamFormat: null,
|
|
3089
3091
|
type: "video",
|
|
3090
3092
|
trackId,
|
|
3091
3093
|
codec: codecString,
|
|
@@ -3858,6 +3860,7 @@ var makeBaseMediaTrack = (trakBox) => {
|
|
|
3858
3860
|
}
|
|
3859
3861
|
const privateData = getVideoPrivateData(trakBox);
|
|
3860
3862
|
const track = {
|
|
3863
|
+
m3uStreamFormat: null,
|
|
3861
3864
|
type: "video",
|
|
3862
3865
|
trackId: tkhdBox.trackId,
|
|
3863
3866
|
description: videoDescriptors ?? undefined,
|
|
@@ -10045,7 +10048,10 @@ var iteratorOverSegmentFiles = async ({
|
|
|
10045
10048
|
onVideoTrack: onVideoTrack === null ? null : async ({ track }) => {
|
|
10046
10049
|
const callbackOrFalse = m3uState2.hasEmittedVideoTrack(playlistUrl);
|
|
10047
10050
|
if (callbackOrFalse === false) {
|
|
10048
|
-
const callback = await onVideoTrack(
|
|
10051
|
+
const callback = await onVideoTrack({
|
|
10052
|
+
...track,
|
|
10053
|
+
m3uStreamFormat: chunk.isHeader || mp4HeaderSegment ? "mp4" : "ts"
|
|
10054
|
+
});
|
|
10049
10055
|
if (!callback) {
|
|
10050
10056
|
m3uState2.setHasEmittedVideoTrack(playlistUrl, null);
|
|
10051
10057
|
return null;
|
|
@@ -11405,6 +11411,7 @@ var handleAvcPacket = async ({
|
|
|
11405
11411
|
const dimensions = getDimensionsFromSps(spsAndPps.sps.spsData);
|
|
11406
11412
|
const sampleAspectRatio = getSampleAspectRatioFromSps(spsAndPps.sps.spsData);
|
|
11407
11413
|
const track = {
|
|
11414
|
+
m3uStreamFormat: null,
|
|
11408
11415
|
rotation: 0,
|
|
11409
11416
|
trackId: programId,
|
|
11410
11417
|
type: "video",
|
|
@@ -12585,353 +12592,6 @@ var internalParseMedia = async function({
|
|
|
12585
12592
|
}
|
|
12586
12593
|
return returnValue;
|
|
12587
12594
|
};
|
|
12588
|
-
// src/worker/serialize-error.ts
|
|
12589
|
-
var deserializeError = (error) => {
|
|
12590
|
-
switch (error.errorName) {
|
|
12591
|
-
case "IsAGifError":
|
|
12592
|
-
return new IsAGifError({
|
|
12593
|
-
fileName: error.fileName,
|
|
12594
|
-
mimeType: error.mimeType,
|
|
12595
|
-
sizeInBytes: error.sizeInBytes,
|
|
12596
|
-
message: error.errorMessage
|
|
12597
|
-
});
|
|
12598
|
-
case "IsAnImageError":
|
|
12599
|
-
return new IsAnImageError({
|
|
12600
|
-
dimensions: error.dimensions,
|
|
12601
|
-
fileName: error.fileName,
|
|
12602
|
-
imageType: error.imageType,
|
|
12603
|
-
mimeType: error.mimeType,
|
|
12604
|
-
sizeInBytes: error.sizeInBytes,
|
|
12605
|
-
message: error.errorMessage
|
|
12606
|
-
});
|
|
12607
|
-
case "IsAPdfError":
|
|
12608
|
-
return new IsAPdfError({
|
|
12609
|
-
fileName: error.fileName,
|
|
12610
|
-
mimeType: error.mimeType,
|
|
12611
|
-
sizeInBytes: error.sizeInBytes,
|
|
12612
|
-
message: error.errorMessage
|
|
12613
|
-
});
|
|
12614
|
-
case "IsAnUnsupportedFileTypeError":
|
|
12615
|
-
return new IsAnUnsupportedFileTypeError({
|
|
12616
|
-
fileName: error.fileName,
|
|
12617
|
-
mimeType: error.mimeType,
|
|
12618
|
-
sizeInBytes: error.sizeInBytes,
|
|
12619
|
-
message: error.errorMessage
|
|
12620
|
-
});
|
|
12621
|
-
case "MediaParserAbortError":
|
|
12622
|
-
return new MediaParserAbortError(error.errorMessage);
|
|
12623
|
-
default:
|
|
12624
|
-
return new Error(error.errorMessage);
|
|
12625
|
-
}
|
|
12626
|
-
};
|
|
12627
|
-
|
|
12628
|
-
// src/parse-media-on-worker-entry.ts
|
|
12629
|
-
var convertToWorkerPayload = (payload) => {
|
|
12630
|
-
const {
|
|
12631
|
-
onAudioCodec,
|
|
12632
|
-
onContainer,
|
|
12633
|
-
onDimensions,
|
|
12634
|
-
onUnrotatedDimensions,
|
|
12635
|
-
onVideoCodec,
|
|
12636
|
-
onFps,
|
|
12637
|
-
onAudioTrack,
|
|
12638
|
-
onDurationInSeconds,
|
|
12639
|
-
onImages,
|
|
12640
|
-
onInternalStats,
|
|
12641
|
-
onIsHdr,
|
|
12642
|
-
onKeyframes,
|
|
12643
|
-
onLocation,
|
|
12644
|
-
onM3uStreams,
|
|
12645
|
-
onMetadata,
|
|
12646
|
-
onMimeType,
|
|
12647
|
-
onName,
|
|
12648
|
-
onNumberOfAudioChannels,
|
|
12649
|
-
onParseProgress,
|
|
12650
|
-
onRotation,
|
|
12651
|
-
onSampleRate,
|
|
12652
|
-
onSlowAudioBitrate,
|
|
12653
|
-
onSize,
|
|
12654
|
-
onSlowDurationInSeconds,
|
|
12655
|
-
onSlowFps,
|
|
12656
|
-
onSlowKeyframes,
|
|
12657
|
-
onSlowNumberOfFrames,
|
|
12658
|
-
onSlowVideoBitrate,
|
|
12659
|
-
onStructure,
|
|
12660
|
-
onTracks,
|
|
12661
|
-
onVideoTrack,
|
|
12662
|
-
selectM3uStream,
|
|
12663
|
-
selectM3uAssociatedPlaylists,
|
|
12664
|
-
src,
|
|
12665
|
-
...others
|
|
12666
|
-
} = payload;
|
|
12667
|
-
return {
|
|
12668
|
-
type: "request-worker",
|
|
12669
|
-
payload: others,
|
|
12670
|
-
postAudioCodec: Boolean(onAudioCodec),
|
|
12671
|
-
postContainer: Boolean(onContainer),
|
|
12672
|
-
postDimensions: Boolean(onDimensions),
|
|
12673
|
-
postDurationInSeconds: Boolean(onDurationInSeconds),
|
|
12674
|
-
postFps: Boolean(onFps),
|
|
12675
|
-
postImages: Boolean(onImages),
|
|
12676
|
-
postInternalStats: Boolean(onInternalStats),
|
|
12677
|
-
postIsHdr: Boolean(onIsHdr),
|
|
12678
|
-
postKeyframes: Boolean(onKeyframes),
|
|
12679
|
-
postLocation: Boolean(onLocation),
|
|
12680
|
-
postM3uStreams: Boolean(onM3uStreams),
|
|
12681
|
-
postMetadata: Boolean(onMetadata),
|
|
12682
|
-
postMimeType: Boolean(onMimeType),
|
|
12683
|
-
postName: Boolean(onName),
|
|
12684
|
-
postNumberOfAudioChannels: Boolean(onNumberOfAudioChannels),
|
|
12685
|
-
postRotation: Boolean(onRotation),
|
|
12686
|
-
postSampleRate: Boolean(onSampleRate),
|
|
12687
|
-
postSlowAudioBitrate: Boolean(onSlowAudioBitrate),
|
|
12688
|
-
postSlowDurationInSeconds: Boolean(onSlowDurationInSeconds),
|
|
12689
|
-
postSlowFps: Boolean(onSlowFps),
|
|
12690
|
-
postSlowKeyframes: Boolean(onSlowKeyframes),
|
|
12691
|
-
postSlowNumberOfFrames: Boolean(onSlowNumberOfFrames),
|
|
12692
|
-
postSlowVideoBitrate: Boolean(onSlowVideoBitrate),
|
|
12693
|
-
postStructure: Boolean(onStructure),
|
|
12694
|
-
postTracks: Boolean(onTracks),
|
|
12695
|
-
postUnrotatedDimensions: Boolean(onUnrotatedDimensions),
|
|
12696
|
-
postVideoCodec: Boolean(onVideoCodec),
|
|
12697
|
-
postSize: Boolean(onSize),
|
|
12698
|
-
postParseProgress: Boolean(onParseProgress),
|
|
12699
|
-
postM3uStreamSelection: Boolean(selectM3uStream),
|
|
12700
|
-
postM3uAssociatedPlaylistsSelection: Boolean(selectM3uAssociatedPlaylists),
|
|
12701
|
-
postOnAudioTrack: Boolean(onAudioTrack),
|
|
12702
|
-
postOnVideoTrack: Boolean(onVideoTrack),
|
|
12703
|
-
src
|
|
12704
|
-
};
|
|
12705
|
-
};
|
|
12706
|
-
var post = (worker, payload) => {
|
|
12707
|
-
worker.postMessage(payload);
|
|
12708
|
-
};
|
|
12709
|
-
var parseMediaOnWorkerImplementation = async ({ controller, reader, ...params }, workerUrlEntry, apiName) => {
|
|
12710
|
-
if (typeof Worker === "undefined") {
|
|
12711
|
-
throw new Error('"Worker" is not available. Cannot call workerClient()');
|
|
12712
|
-
}
|
|
12713
|
-
if (reader) {
|
|
12714
|
-
throw new Error(`\`reader\` should not be provided to \`${apiName}\`. If you want to use it in the browser, use parseMediaOnWorker(). If you also want to read files from the file system, use parseMediaOnServerWorker().`);
|
|
12715
|
-
}
|
|
12716
|
-
const worker = new Worker(workerUrlEntry);
|
|
12717
|
-
post(worker, convertToWorkerPayload(params));
|
|
12718
|
-
const { promise, resolve, reject } = Promise.withResolvers();
|
|
12719
|
-
const onAbort = () => {
|
|
12720
|
-
post(worker, { type: "request-abort" });
|
|
12721
|
-
};
|
|
12722
|
-
const onResume = () => {
|
|
12723
|
-
post(worker, { type: "request-resume" });
|
|
12724
|
-
};
|
|
12725
|
-
const onPause = () => {
|
|
12726
|
-
post(worker, { type: "request-pause" });
|
|
12727
|
-
};
|
|
12728
|
-
const callbacks = {};
|
|
12729
|
-
function onMessage(message) {
|
|
12730
|
-
const data = message.data;
|
|
12731
|
-
if (data.type === "response-done") {
|
|
12732
|
-
resolve(data.payload);
|
|
12733
|
-
}
|
|
12734
|
-
if (data.type === "response-error") {
|
|
12735
|
-
cleanup();
|
|
12736
|
-
reject(deserializeError(data));
|
|
12737
|
-
}
|
|
12738
|
-
if (data.type === "response-on-callback-request") {
|
|
12739
|
-
Promise.resolve().then(async () => {
|
|
12740
|
-
if (data.payload.callbackType === "audio-codec") {
|
|
12741
|
-
await params.onAudioCodec?.(data.payload.value);
|
|
12742
|
-
return { payloadType: "void" };
|
|
12743
|
-
}
|
|
12744
|
-
if (data.payload.callbackType === "container") {
|
|
12745
|
-
await params.onContainer?.(data.payload.value);
|
|
12746
|
-
return { payloadType: "void" };
|
|
12747
|
-
}
|
|
12748
|
-
if (data.payload.callbackType === "dimensions") {
|
|
12749
|
-
await params.onDimensions?.(data.payload.value);
|
|
12750
|
-
return { payloadType: "void" };
|
|
12751
|
-
}
|
|
12752
|
-
if (data.payload.callbackType === "unrotated-dimensions") {
|
|
12753
|
-
await params.onUnrotatedDimensions?.(data.payload.value);
|
|
12754
|
-
return { payloadType: "void" };
|
|
12755
|
-
}
|
|
12756
|
-
if (data.payload.callbackType === "video-codec") {
|
|
12757
|
-
await params.onVideoCodec?.(data.payload.value);
|
|
12758
|
-
return { payloadType: "void" };
|
|
12759
|
-
}
|
|
12760
|
-
if (data.payload.callbackType === "tracks") {
|
|
12761
|
-
await params.onTracks?.(data.payload.value);
|
|
12762
|
-
return { payloadType: "void" };
|
|
12763
|
-
}
|
|
12764
|
-
if (data.payload.callbackType === "rotation") {
|
|
12765
|
-
await params.onRotation?.(data.payload.value);
|
|
12766
|
-
return { payloadType: "void" };
|
|
12767
|
-
}
|
|
12768
|
-
if (data.payload.callbackType === "sample-rate") {
|
|
12769
|
-
await params.onSampleRate?.(data.payload.value);
|
|
12770
|
-
return { payloadType: "void" };
|
|
12771
|
-
}
|
|
12772
|
-
if (data.payload.callbackType === "slow-audio-bitrate") {
|
|
12773
|
-
await params.onSlowAudioBitrate?.(data.payload.value);
|
|
12774
|
-
return { payloadType: "void" };
|
|
12775
|
-
}
|
|
12776
|
-
if (data.payload.callbackType === "slow-duration-in-seconds") {
|
|
12777
|
-
await params.onSlowDurationInSeconds?.(data.payload.value);
|
|
12778
|
-
return { payloadType: "void" };
|
|
12779
|
-
}
|
|
12780
|
-
if (data.payload.callbackType === "slow-fps") {
|
|
12781
|
-
await params.onSlowFps?.(data.payload.value);
|
|
12782
|
-
return { payloadType: "void" };
|
|
12783
|
-
}
|
|
12784
|
-
if (data.payload.callbackType === "slow-keyframes") {
|
|
12785
|
-
await params.onSlowKeyframes?.(data.payload.value);
|
|
12786
|
-
return { payloadType: "void" };
|
|
12787
|
-
}
|
|
12788
|
-
if (data.payload.callbackType === "slow-number-of-frames") {
|
|
12789
|
-
await params.onSlowNumberOfFrames?.(data.payload.value);
|
|
12790
|
-
return { payloadType: "void" };
|
|
12791
|
-
}
|
|
12792
|
-
if (data.payload.callbackType === "slow-video-bitrate") {
|
|
12793
|
-
await params.onSlowVideoBitrate?.(data.payload.value);
|
|
12794
|
-
return { payloadType: "void" };
|
|
12795
|
-
}
|
|
12796
|
-
if (data.payload.callbackType === "structure") {
|
|
12797
|
-
await params.onStructure?.(data.payload.value);
|
|
12798
|
-
return { payloadType: "void" };
|
|
12799
|
-
}
|
|
12800
|
-
if (data.payload.callbackType === "fps") {
|
|
12801
|
-
await params.onFps?.(data.payload.value);
|
|
12802
|
-
return { payloadType: "void" };
|
|
12803
|
-
}
|
|
12804
|
-
if (data.payload.callbackType === "images") {
|
|
12805
|
-
await params.onImages?.(data.payload.value);
|
|
12806
|
-
return { payloadType: "void" };
|
|
12807
|
-
}
|
|
12808
|
-
if (data.payload.callbackType === "internal-stats") {
|
|
12809
|
-
await params.onInternalStats?.(data.payload.value);
|
|
12810
|
-
return { payloadType: "void" };
|
|
12811
|
-
}
|
|
12812
|
-
if (data.payload.callbackType === "is-hdr") {
|
|
12813
|
-
await params.onIsHdr?.(data.payload.value);
|
|
12814
|
-
return { payloadType: "void" };
|
|
12815
|
-
}
|
|
12816
|
-
if (data.payload.callbackType === "keyframes") {
|
|
12817
|
-
await params.onKeyframes?.(data.payload.value);
|
|
12818
|
-
return { payloadType: "void" };
|
|
12819
|
-
}
|
|
12820
|
-
if (data.payload.callbackType === "location") {
|
|
12821
|
-
await params.onLocation?.(data.payload.value);
|
|
12822
|
-
return { payloadType: "void" };
|
|
12823
|
-
}
|
|
12824
|
-
if (data.payload.callbackType === "m3u-streams") {
|
|
12825
|
-
await params.onM3uStreams?.(data.payload.value);
|
|
12826
|
-
return { payloadType: "void" };
|
|
12827
|
-
}
|
|
12828
|
-
if (data.payload.callbackType === "metadata") {
|
|
12829
|
-
await params.onMetadata?.(data.payload.value);
|
|
12830
|
-
return { payloadType: "void" };
|
|
12831
|
-
}
|
|
12832
|
-
if (data.payload.callbackType === "mime-type") {
|
|
12833
|
-
await params.onMimeType?.(data.payload.value);
|
|
12834
|
-
return { payloadType: "void" };
|
|
12835
|
-
}
|
|
12836
|
-
if (data.payload.callbackType === "name") {
|
|
12837
|
-
await params.onName?.(data.payload.value);
|
|
12838
|
-
return { payloadType: "void" };
|
|
12839
|
-
}
|
|
12840
|
-
if (data.payload.callbackType === "number-of-audio-channels") {
|
|
12841
|
-
await params.onNumberOfAudioChannels?.(data.payload.value);
|
|
12842
|
-
return { payloadType: "void" };
|
|
12843
|
-
}
|
|
12844
|
-
if (data.payload.callbackType === "size") {
|
|
12845
|
-
await params.onSize?.(data.payload.value);
|
|
12846
|
-
return { payloadType: "void" };
|
|
12847
|
-
}
|
|
12848
|
-
if (data.payload.callbackType === "duration-in-seconds") {
|
|
12849
|
-
await params.onDurationInSeconds?.(data.payload.value);
|
|
12850
|
-
return { payloadType: "void" };
|
|
12851
|
-
}
|
|
12852
|
-
if (data.payload.callbackType === "parse-progress") {
|
|
12853
|
-
await params.onParseProgress?.(data.payload.value);
|
|
12854
|
-
return { payloadType: "void" };
|
|
12855
|
-
}
|
|
12856
|
-
if (data.payload.callbackType === "m3u-stream-selection") {
|
|
12857
|
-
const selection = await params.selectM3uStream(data.payload.value);
|
|
12858
|
-
return { payloadType: "m3u-stream-selection", value: selection };
|
|
12859
|
-
}
|
|
12860
|
-
if (data.payload.callbackType === "m3u-associated-playlists-selection") {
|
|
12861
|
-
const selection = await params.selectM3uAssociatedPlaylists(data.payload.value);
|
|
12862
|
-
return {
|
|
12863
|
-
payloadType: "m3u-associated-playlists-selection",
|
|
12864
|
-
value: selection
|
|
12865
|
-
};
|
|
12866
|
-
}
|
|
12867
|
-
if (data.payload.callbackType === "on-audio-track") {
|
|
12868
|
-
const possibleCallback = await params.onAudioTrack?.(data.payload.value);
|
|
12869
|
-
if (possibleCallback) {
|
|
12870
|
-
callbacks[data.payload.value.track.trackId] = possibleCallback;
|
|
12871
|
-
}
|
|
12872
|
-
return {
|
|
12873
|
-
payloadType: "on-audio-track-response",
|
|
12874
|
-
registeredCallback: Boolean(possibleCallback)
|
|
12875
|
-
};
|
|
12876
|
-
}
|
|
12877
|
-
if (data.payload.callbackType === "on-video-track") {
|
|
12878
|
-
const possibleCallback = await params.onVideoTrack?.(data.payload.value);
|
|
12879
|
-
if (possibleCallback) {
|
|
12880
|
-
callbacks[data.payload.value.track.trackId] = possibleCallback;
|
|
12881
|
-
}
|
|
12882
|
-
return {
|
|
12883
|
-
payloadType: "on-video-track-response",
|
|
12884
|
-
registeredCallback: Boolean(possibleCallback)
|
|
12885
|
-
};
|
|
12886
|
-
}
|
|
12887
|
-
if (data.payload.callbackType === "on-audio-video-sample") {
|
|
12888
|
-
const callback = callbacks[data.payload.trackId];
|
|
12889
|
-
if (!callback) {
|
|
12890
|
-
throw new Error(`No callback registered for track ${data.payload.trackId}`);
|
|
12891
|
-
}
|
|
12892
|
-
await callback(data.payload.value);
|
|
12893
|
-
return { payloadType: "void" };
|
|
12894
|
-
}
|
|
12895
|
-
throw new Error(`Unknown callback type: ${data.payload}`);
|
|
12896
|
-
}).then((payload) => {
|
|
12897
|
-
post(worker, {
|
|
12898
|
-
type: "acknowledge-callback",
|
|
12899
|
-
nonce: data.nonce,
|
|
12900
|
-
...payload
|
|
12901
|
-
});
|
|
12902
|
-
}).catch((err) => {
|
|
12903
|
-
reject(err);
|
|
12904
|
-
post(worker, {
|
|
12905
|
-
type: "signal-error-in-callback",
|
|
12906
|
-
nonce: data.nonce
|
|
12907
|
-
});
|
|
12908
|
-
});
|
|
12909
|
-
}
|
|
12910
|
-
}
|
|
12911
|
-
worker.addEventListener("message", onMessage);
|
|
12912
|
-
controller?.addEventListener("abort", onAbort);
|
|
12913
|
-
controller?.addEventListener("resume", onResume);
|
|
12914
|
-
controller?.addEventListener("pause", onPause);
|
|
12915
|
-
function cleanup() {
|
|
12916
|
-
worker.removeEventListener("message", onMessage);
|
|
12917
|
-
controller?.removeEventListener("abort", onAbort);
|
|
12918
|
-
controller?.removeEventListener("resume", onResume);
|
|
12919
|
-
controller?.removeEventListener("pause", onPause);
|
|
12920
|
-
worker.terminate();
|
|
12921
|
-
}
|
|
12922
|
-
const val = await promise;
|
|
12923
|
-
cleanup();
|
|
12924
|
-
return val;
|
|
12925
|
-
};
|
|
12926
|
-
|
|
12927
|
-
// src/parse-media-on-server-worker.ts
|
|
12928
|
-
var parseMediaOnServerWorker = (params) => {
|
|
12929
|
-
return parseMediaOnWorkerImplementation(params, new URL("./worker-server-entry", import.meta.url), "parseMediaOnServerWorker");
|
|
12930
|
-
};
|
|
12931
|
-
// src/parse-media-on-web-worker.ts
|
|
12932
|
-
var parseMediaOnWebWorker = (params) => {
|
|
12933
|
-
return parseMediaOnWorkerImplementation(params, new URL("./worker-web-entry", import.meta.url), "parseMediaOnWebWorker");
|
|
12934
|
-
};
|
|
12935
12595
|
// src/download-and-parse-media.ts
|
|
12936
12596
|
var downloadAndParseMedia = async (options) => {
|
|
12937
12597
|
const logLevel = options.logLevel ?? "info";
|
|
@@ -13001,7 +12661,7 @@ var downloadAndParseMedia = async (options) => {
|
|
|
13001
12661
|
return returnValue;
|
|
13002
12662
|
};
|
|
13003
12663
|
// src/version.ts
|
|
13004
|
-
var VERSION = "4.0.
|
|
12664
|
+
var VERSION = "4.0.274";
|
|
13005
12665
|
|
|
13006
12666
|
// src/index.ts
|
|
13007
12667
|
var MediaParserInternals = {
|
|
@@ -13020,8 +12680,6 @@ var MediaParserInternals = {
|
|
|
13020
12680
|
internalParseMedia
|
|
13021
12681
|
};
|
|
13022
12682
|
export {
|
|
13023
|
-
parseMediaOnWebWorker,
|
|
13024
|
-
parseMediaOnServerWorker,
|
|
13025
12683
|
parseMedia,
|
|
13026
12684
|
mediaParserController,
|
|
13027
12685
|
hasBeenAborted,
|
|
@@ -2905,6 +2905,7 @@ var makeBaseMediaTrack = (trakBox) => {
|
|
|
2905
2905
|
}
|
|
2906
2906
|
const privateData = getVideoPrivateData(trakBox);
|
|
2907
2907
|
const track = {
|
|
2908
|
+
m3uStreamFormat: null,
|
|
2908
2909
|
type: "video",
|
|
2909
2910
|
trackId: tkhdBox.trackId,
|
|
2910
2911
|
description: videoDescriptors ?? undefined,
|
|
@@ -3053,6 +3054,7 @@ var makeAviVideoTrack = ({
|
|
|
3053
3054
|
displayAspectHeight: strf.height,
|
|
3054
3055
|
timescale: MEDIA_PARSER_RIFF_TIMESCALE,
|
|
3055
3056
|
description: undefined,
|
|
3057
|
+
m3uStreamFormat: null,
|
|
3056
3058
|
trackId: index,
|
|
3057
3059
|
color: {
|
|
3058
3060
|
fullRange: null,
|
|
@@ -3676,6 +3678,7 @@ var getTrack = ({
|
|
|
3676
3678
|
return null;
|
|
3677
3679
|
}
|
|
3678
3680
|
return {
|
|
3681
|
+
m3uStreamFormat: null,
|
|
3679
3682
|
type: "video",
|
|
3680
3683
|
trackId,
|
|
3681
3684
|
codec: codecString,
|
|
@@ -9600,7 +9603,10 @@ var iteratorOverSegmentFiles = async ({
|
|
|
9600
9603
|
onVideoTrack: onVideoTrack === null ? null : async ({ track }) => {
|
|
9601
9604
|
const callbackOrFalse = m3uState2.hasEmittedVideoTrack(playlistUrl);
|
|
9602
9605
|
if (callbackOrFalse === false) {
|
|
9603
|
-
const callback = await onVideoTrack(
|
|
9606
|
+
const callback = await onVideoTrack({
|
|
9607
|
+
...track,
|
|
9608
|
+
m3uStreamFormat: chunk.isHeader || mp4HeaderSegment ? "mp4" : "ts"
|
|
9609
|
+
});
|
|
9604
9610
|
if (!callback) {
|
|
9605
9611
|
m3uState2.setHasEmittedVideoTrack(playlistUrl, null);
|
|
9606
9612
|
return null;
|
|
@@ -11189,6 +11195,7 @@ var handleAvcPacket = async ({
|
|
|
11189
11195
|
const dimensions = getDimensionsFromSps(spsAndPps.sps.spsData);
|
|
11190
11196
|
const sampleAspectRatio = getSampleAspectRatioFromSps(spsAndPps.sps.spsData);
|
|
11191
11197
|
const track = {
|
|
11198
|
+
m3uStreamFormat: null,
|
|
11192
11199
|
rotation: 0,
|
|
11193
11200
|
trackId: programId,
|
|
11194
11201
|
type: "video",
|
|
@@ -2840,6 +2840,7 @@ var makeBaseMediaTrack = (trakBox) => {
|
|
|
2840
2840
|
}
|
|
2841
2841
|
const privateData = getVideoPrivateData(trakBox);
|
|
2842
2842
|
const track = {
|
|
2843
|
+
m3uStreamFormat: null,
|
|
2843
2844
|
type: "video",
|
|
2844
2845
|
trackId: tkhdBox.trackId,
|
|
2845
2846
|
description: videoDescriptors ?? undefined,
|
|
@@ -2988,6 +2989,7 @@ var makeAviVideoTrack = ({
|
|
|
2988
2989
|
displayAspectHeight: strf.height,
|
|
2989
2990
|
timescale: MEDIA_PARSER_RIFF_TIMESCALE,
|
|
2990
2991
|
description: undefined,
|
|
2992
|
+
m3uStreamFormat: null,
|
|
2991
2993
|
trackId: index,
|
|
2992
2994
|
color: {
|
|
2993
2995
|
fullRange: null,
|
|
@@ -3611,6 +3613,7 @@ var getTrack = ({
|
|
|
3611
3613
|
return null;
|
|
3612
3614
|
}
|
|
3613
3615
|
return {
|
|
3616
|
+
m3uStreamFormat: null,
|
|
3614
3617
|
type: "video",
|
|
3615
3618
|
trackId,
|
|
3616
3619
|
codec: codecString,
|
|
@@ -9513,7 +9516,10 @@ var iteratorOverSegmentFiles = async ({
|
|
|
9513
9516
|
onVideoTrack: onVideoTrack === null ? null : async ({ track }) => {
|
|
9514
9517
|
const callbackOrFalse = m3uState2.hasEmittedVideoTrack(playlistUrl);
|
|
9515
9518
|
if (callbackOrFalse === false) {
|
|
9516
|
-
const callback = await onVideoTrack(
|
|
9519
|
+
const callback = await onVideoTrack({
|
|
9520
|
+
...track,
|
|
9521
|
+
m3uStreamFormat: chunk.isHeader || mp4HeaderSegment ? "mp4" : "ts"
|
|
9522
|
+
});
|
|
9517
9523
|
if (!callback) {
|
|
9518
9524
|
m3uState2.setHasEmittedVideoTrack(playlistUrl, null);
|
|
9519
9525
|
return null;
|
|
@@ -11102,6 +11108,7 @@ var handleAvcPacket = async ({
|
|
|
11102
11108
|
const dimensions = getDimensionsFromSps(spsAndPps.sps.spsData);
|
|
11103
11109
|
const sampleAspectRatio = getSampleAspectRatioFromSps(spsAndPps.sps.spsData);
|
|
11104
11110
|
const track = {
|
|
11111
|
+
m3uStreamFormat: null,
|
|
11105
11112
|
rotation: 0,
|
|
11106
11113
|
trackId: programId,
|
|
11107
11114
|
type: "video",
|
package/dist/esm/worker.mjs
CHANGED
|
@@ -138,7 +138,7 @@ var deserializeError = (error) => {
|
|
|
138
138
|
}
|
|
139
139
|
};
|
|
140
140
|
|
|
141
|
-
// src/worker.ts
|
|
141
|
+
// src/parse-media-on-worker-entry.ts
|
|
142
142
|
var convertToWorkerPayload = (payload) => {
|
|
143
143
|
const {
|
|
144
144
|
onAudioCodec,
|
|
@@ -174,6 +174,7 @@ var convertToWorkerPayload = (payload) => {
|
|
|
174
174
|
onVideoTrack,
|
|
175
175
|
selectM3uStream,
|
|
176
176
|
selectM3uAssociatedPlaylists,
|
|
177
|
+
src,
|
|
177
178
|
...others
|
|
178
179
|
} = payload;
|
|
179
180
|
return {
|
|
@@ -211,20 +212,21 @@ var convertToWorkerPayload = (payload) => {
|
|
|
211
212
|
postM3uStreamSelection: Boolean(selectM3uStream),
|
|
212
213
|
postM3uAssociatedPlaylistsSelection: Boolean(selectM3uAssociatedPlaylists),
|
|
213
214
|
postOnAudioTrack: Boolean(onAudioTrack),
|
|
214
|
-
postOnVideoTrack: Boolean(onVideoTrack)
|
|
215
|
+
postOnVideoTrack: Boolean(onVideoTrack),
|
|
216
|
+
src
|
|
215
217
|
};
|
|
216
218
|
};
|
|
217
219
|
var post = (worker, payload) => {
|
|
218
220
|
worker.postMessage(payload);
|
|
219
221
|
};
|
|
220
|
-
var
|
|
221
|
-
controller,
|
|
222
|
-
...params
|
|
223
|
-
}) => {
|
|
222
|
+
var parseMediaOnWorkerImplementation = async ({ controller, reader, ...params }, workerUrlEntry, apiName) => {
|
|
224
223
|
if (typeof Worker === "undefined") {
|
|
225
224
|
throw new Error('"Worker" is not available. Cannot call workerClient()');
|
|
226
225
|
}
|
|
227
|
-
|
|
226
|
+
if (reader) {
|
|
227
|
+
throw new Error(`\`reader\` should not be provided to \`${apiName}\`. If you want to use it in the browser, use parseMediaOnWorker(). If you also want to read files from the file system, use parseMediaOnServerWorker().`);
|
|
228
|
+
}
|
|
229
|
+
const worker = new Worker(workerUrlEntry);
|
|
228
230
|
post(worker, convertToWorkerPayload(params));
|
|
229
231
|
const { promise, resolve, reject } = Promise.withResolvers();
|
|
230
232
|
const onAbort = () => {
|
|
@@ -434,6 +436,16 @@ var parseMediaOnWorker = async ({
|
|
|
434
436
|
cleanup();
|
|
435
437
|
return val;
|
|
436
438
|
};
|
|
439
|
+
|
|
440
|
+
// src/parse-media-on-server-worker.ts
|
|
441
|
+
var parseMediaOnServerWorker = (params) => {
|
|
442
|
+
return parseMediaOnWorkerImplementation(params, new URL("./worker-server-entry", import.meta.url), "parseMediaOnServerWorker");
|
|
443
|
+
};
|
|
444
|
+
// src/parse-media-on-web-worker.ts
|
|
445
|
+
var parseMediaOnWebWorker = (params) => {
|
|
446
|
+
return parseMediaOnWorkerImplementation(params, new URL("./worker-web-entry", import.meta.url), "parseMediaOnWebWorker");
|
|
447
|
+
};
|
|
437
448
|
export {
|
|
438
|
-
|
|
449
|
+
parseMediaOnWebWorker,
|
|
450
|
+
parseMediaOnServerWorker
|
|
439
451
|
};
|
package/dist/get-tracks.d.ts
CHANGED
package/dist/index.d.ts
CHANGED
|
@@ -6,8 +6,6 @@ export type { SamplePosition } from './get-sample-positions';
|
|
|
6
6
|
export type { AudioTrack, MediaParserAudioCodec, MediaParserVideoCodec, OtherTrack, Track, VideoTrack, VideoTrackColorParams, } from './get-tracks';
|
|
7
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';
|
|
11
9
|
export type { MediaParserEmbeddedImage } from './state/images';
|
|
12
10
|
export { downloadAndParseMedia } from './download-and-parse-media';
|
|
13
11
|
export type { MediaParserContainer, MediaParserTracks, Options, ParseMediaCallbacks, ParseMediaFields, ParseMediaOnProgress, ParseMediaOptions, ParseMediaProgress, ParseMediaResult, } from './options';
|
package/dist/index.js
CHANGED
|
@@ -11,8 +11,6 @@ import { internalParseMedia } from './internal-parse-media';
|
|
|
11
11
|
import { Log } from './log';
|
|
12
12
|
import { makeParserState } from './state/parser-state';
|
|
13
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
14
|
export { downloadAndParseMedia } from './download-and-parse-media';
|
|
17
15
|
export { parseMedia } from './parse-media';
|
|
18
16
|
export const MediaParserInternals = {
|
package/dist/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const VERSION = "4.0.
|
|
1
|
+
export declare const VERSION = "4.0.274";
|
package/dist/version.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// Automatically generated on publish
|
|
2
|
-
export const VERSION = '4.0.
|
|
2
|
+
export const VERSION = '4.0.274';
|
package/dist/worker.d.ts
CHANGED
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
export
|
|
1
|
+
export type { ParseMediaOnWorker, ParseMediaOnWorkerOptions } from './options';
|
|
2
|
+
export { parseMediaOnServerWorker } from './parse-media-on-server-worker';
|
|
3
|
+
export { parseMediaOnWebWorker } from './parse-media-on-web-worker';
|