@remotion/media-parser 4.0.202 → 4.0.204
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/av1-codec-string.d.ts +0 -5
- package/dist/av1-codec-string.js +1 -18
- package/dist/boxes/iso-base-media/ftype.d.ts +9 -0
- package/dist/boxes/iso-base-media/ftype.js +31 -0
- package/dist/boxes/iso-base-media/get-sample-positions-from-track.d.ts +4 -0
- package/dist/boxes/iso-base-media/get-sample-positions-from-track.js +48 -0
- package/dist/boxes/iso-base-media/tfdt.d.ts +12 -0
- package/dist/boxes/iso-base-media/tfdt.js +20 -0
- package/dist/boxes/iso-base-media/tfhd.d.ts +16 -0
- package/dist/boxes/iso-base-media/tfhd.js +41 -0
- package/dist/boxes/iso-base-media/trun.d.ts +21 -0
- package/dist/boxes/iso-base-media/trun.js +44 -0
- package/dist/boxes/webm/bitstream/av1.js +1 -10
- package/dist/boxes/webm/ebml.d.ts +1 -1
- package/dist/boxes/webm/segments/seek-position.js +1 -1
- package/dist/boxes/webm/segments/seek.d.ts +1 -1
- package/dist/boxes/webm/segments/seek.js +8 -2
- package/dist/boxes/webm/segments/timestamp-scale.js +1 -1
- package/dist/boxes/webm/tracks.d.ts +8 -0
- package/dist/boxes/webm/tracks.js +21 -0
- package/dist/from-web.js +6 -15
- package/dist/get-video-metadata.d.ts +2 -0
- package/dist/get-video-metadata.js +44 -0
- package/dist/read-and-increment-offset.d.ts +28 -0
- package/dist/read-and-increment-offset.js +177 -0
- package/dist/samples-from-moof.d.ts +6 -0
- package/dist/samples-from-moof.js +74 -0
- package/dist/understand-vorbis.d.ts +1 -0
- package/dist/understand-vorbis.js +12 -0
- package/package.json +2 -2
- package/src/boxes/iso-base-media/get-sample-positions-from-track.ts +69 -0
- package/src/boxes/iso-base-media/make-track.ts +4 -45
- package/src/boxes/iso-base-media/mdat/mdat.ts +33 -24
- package/src/boxes/iso-base-media/mdhd.ts +10 -7
- package/src/boxes/iso-base-media/mvhd.ts +15 -14
- package/src/boxes/iso-base-media/process-box.ts +42 -0
- package/src/boxes/iso-base-media/tfdt.ts +37 -0
- package/src/boxes/iso-base-media/tfhd.ts +66 -0
- package/src/boxes/iso-base-media/tkhd.ts +11 -13
- package/src/boxes/iso-base-media/trun.ts +74 -0
- package/src/boxes/webm/get-track.ts +2 -2
- package/src/buffer-iterator.ts +3 -2
- package/src/get-duration.ts +40 -5
- package/src/get-tracks.ts +4 -4
- package/src/has-all-info.ts +1 -1
- package/src/parse-media.ts +1 -1
- package/src/parse-result.ts +7 -1
- package/src/samples-from-moof.ts +101 -0
- package/src/test/samples-from-moof.test.ts +2496 -0
- package/src/test/stream-local.test.ts +28 -30
- package/src/test/stream-samples.test.ts +153 -231
- package/src/traversal.ts +56 -1
- package/tsconfig.tsbuildinfo +1 -1
- package/dist/bitstream/av1.d.ts +0 -2
- package/dist/bitstream/av1.js +0 -12
- package/dist/boxes/iso-base-media/avcc-hvcc.d.ts +0 -20
- package/dist/boxes/iso-base-media/avcc-hvcc.js +0 -73
- package/dist/boxes/iso-base-media/avcc.d.ts +0 -18
- package/dist/boxes/iso-base-media/avcc.js +0 -27
- package/dist/boxes/iso-base-media/esds-descriptors.d.ts +0 -21
- package/dist/boxes/iso-base-media/esds-descriptors.js +0 -62
- package/dist/boxes/iso-base-media/esds.d.ts +0 -15
- package/dist/boxes/iso-base-media/esds.js +0 -27
- package/dist/create/create-media.d.ts +0 -2
- package/dist/create/create-media.js +0 -36
- package/dist/create/matroska-header.d.ts +0 -1
- package/dist/create/matroska-header.js +0 -66
- package/dist/create/matroska-info.d.ts +0 -4
- package/dist/create/matroska-info.js +0 -39
- package/dist/create/matroska-segment.d.ts +0 -1
- package/dist/create/matroska-segment.js +0 -12
- package/dist/create/matroska-trackentry.d.ts +0 -21
- package/dist/create/matroska-trackentry.js +0 -191
- package/dist/create-media.d.ts +0 -1
- package/dist/create-media.js +0 -78
- package/dist/from-input-type-file.d.ts +0 -2
- package/dist/from-input-type-file.js +0 -37
- package/dist/get-codec.d.ts +0 -4
- package/dist/get-codec.js +0 -22
- package/dist/readers/from-fetch.d.ts +0 -2
- package/dist/readers/from-fetch.js +0 -64
- package/dist/readers/from-node.d.ts +0 -2
- package/dist/readers/from-node.js +0 -40
- package/dist/readers/from-web-file.d.ts +0 -2
- package/dist/readers/from-web-file.js +0 -39
- package/dist/readers/reader.d.ts +0 -11
- package/dist/readers/reader.js +0 -2
- package/dist/web-file.d.ts +0 -2
- package/dist/web-file.js +0 -37
- package/dist/writers/web-fs.d.ts +0 -2
- package/dist/writers/web-fs.js +0 -28
- package/dist/writers/writer.d.ts +0 -9
- package/dist/writers/writer.js +0 -2
- /package/dist/{get-samples.d.ts → boxes/webm/bitstream/av1/frame.d.ts} +0 -0
- /package/dist/{get-samples.js → boxes/webm/bitstream/av1/frame.js} +0 -0
- /package/dist/{sample-aspect-ratio.d.ts → boxes/webm/bitstream/h264/get-h264-descriptor.d.ts} +0 -0
- /package/dist/{sample-aspect-ratio.js → boxes/webm/bitstream/h264/get-h264-descriptor.js} +0 -0
package/dist/get-codec.d.ts
DELETED
package/dist/get-codec.js
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getVideoCodec = exports.hasVideoCodec = void 0;
|
|
4
|
-
const hasVideoCodec = (boxes) => {
|
|
5
|
-
try {
|
|
6
|
-
return boxes.some((b) => b.type === 'ftyp-box');
|
|
7
|
-
}
|
|
8
|
-
catch (err) {
|
|
9
|
-
return false;
|
|
10
|
-
}
|
|
11
|
-
};
|
|
12
|
-
exports.hasVideoCodec = hasVideoCodec;
|
|
13
|
-
const getVideoCodec = (boxes) => {
|
|
14
|
-
const ftypBox = boxes.find((b) => b.type === 'ftyp-box');
|
|
15
|
-
if (ftypBox && ftypBox.type === 'ftyp-box') {
|
|
16
|
-
if (ftypBox.compatibleBrands.find((b) => b === 'avc1')) {
|
|
17
|
-
return 'h264';
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
return null;
|
|
21
|
-
};
|
|
22
|
-
exports.getVideoCodec = getVideoCodec;
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.fetchReader = void 0;
|
|
4
|
-
exports.fetchReader = {
|
|
5
|
-
read: async (src, range, signal) => {
|
|
6
|
-
if (typeof src !== 'string') {
|
|
7
|
-
throw new Error('src must be a string when using `fetchReader`');
|
|
8
|
-
}
|
|
9
|
-
const resolvedUrl = typeof window !== 'undefined' && typeof window.location !== 'undefined'
|
|
10
|
-
? new URL(src, window.location.origin).toString()
|
|
11
|
-
: src;
|
|
12
|
-
if (!resolvedUrl.startsWith('https://') &&
|
|
13
|
-
!resolvedUrl.startsWith('http://')) {
|
|
14
|
-
return Promise.reject(new Error(resolvedUrl +
|
|
15
|
-
' is not a URL - needs to start with http:// or https://. If you want to read a local file, pass `nodeReader` to parseMedia().'));
|
|
16
|
-
}
|
|
17
|
-
const res = await fetch(resolvedUrl, {
|
|
18
|
-
headers: range === null
|
|
19
|
-
? {}
|
|
20
|
-
: typeof range === 'number'
|
|
21
|
-
? {
|
|
22
|
-
Range: `bytes=${range}`,
|
|
23
|
-
}
|
|
24
|
-
: {
|
|
25
|
-
Range: `bytes=${`${range[0]}-${range[1]}`}`,
|
|
26
|
-
},
|
|
27
|
-
signal,
|
|
28
|
-
// Disable Next.js caching
|
|
29
|
-
cache: 'no-store',
|
|
30
|
-
});
|
|
31
|
-
if (res.status.toString().startsWith('4') ||
|
|
32
|
-
res.status.toString().startsWith('5')) {
|
|
33
|
-
throw new Error(`Server returned status code ${res.status} for ${src}`);
|
|
34
|
-
}
|
|
35
|
-
if (!res.body) {
|
|
36
|
-
throw new Error('No body');
|
|
37
|
-
}
|
|
38
|
-
const length = res.headers.get('content-length');
|
|
39
|
-
const contentLength = length === null ? null : parseInt(length, 10);
|
|
40
|
-
const reader = res.body.getReader();
|
|
41
|
-
if (signal) {
|
|
42
|
-
signal.addEventListener('abort', () => {
|
|
43
|
-
reader.cancel();
|
|
44
|
-
}, { once: true });
|
|
45
|
-
}
|
|
46
|
-
return { reader, contentLength };
|
|
47
|
-
},
|
|
48
|
-
getLength: async (src) => {
|
|
49
|
-
if (typeof src !== 'string') {
|
|
50
|
-
throw new Error('src must be a string when using `fetchReader`');
|
|
51
|
-
}
|
|
52
|
-
const res = await fetch(src, {
|
|
53
|
-
method: 'HEAD',
|
|
54
|
-
});
|
|
55
|
-
if (!res.body) {
|
|
56
|
-
throw new Error('No body');
|
|
57
|
-
}
|
|
58
|
-
const length = res.headers.get('content-length');
|
|
59
|
-
if (!length) {
|
|
60
|
-
throw new Error('No content-length');
|
|
61
|
-
}
|
|
62
|
-
return parseInt(length, 10);
|
|
63
|
-
},
|
|
64
|
-
};
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.nodeReader = void 0;
|
|
4
|
-
const fs_1 = require("fs");
|
|
5
|
-
const promises_1 = require("node:fs/promises");
|
|
6
|
-
const stream_1 = require("stream");
|
|
7
|
-
exports.nodeReader = {
|
|
8
|
-
read: async (src, range, signal) => {
|
|
9
|
-
if (typeof src !== 'string') {
|
|
10
|
-
throw new Error('src must be a string when using `nodeReader`');
|
|
11
|
-
}
|
|
12
|
-
const stream = (0, fs_1.createReadStream)(src, {
|
|
13
|
-
start: range === null ? 0 : typeof range === 'number' ? range : range[0],
|
|
14
|
-
end: range === null
|
|
15
|
-
? Infinity
|
|
16
|
-
: typeof range === 'number'
|
|
17
|
-
? Infinity
|
|
18
|
-
: range[1],
|
|
19
|
-
signal,
|
|
20
|
-
});
|
|
21
|
-
const stats = await (0, promises_1.stat)(src);
|
|
22
|
-
const reader = stream_1.Readable.toWeb(stream).getReader();
|
|
23
|
-
if (signal) {
|
|
24
|
-
signal.addEventListener('abort', () => {
|
|
25
|
-
reader.cancel();
|
|
26
|
-
}, { once: true });
|
|
27
|
-
}
|
|
28
|
-
return {
|
|
29
|
-
reader,
|
|
30
|
-
contentLength: stats.size,
|
|
31
|
-
};
|
|
32
|
-
},
|
|
33
|
-
getLength: async (src) => {
|
|
34
|
-
if (typeof src !== 'string') {
|
|
35
|
-
throw new Error('src must be a string when using `nodeReader`');
|
|
36
|
-
}
|
|
37
|
-
const stats = await (0, promises_1.stat)(src);
|
|
38
|
-
return stats.size;
|
|
39
|
-
},
|
|
40
|
-
};
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.webFileReader = void 0;
|
|
4
|
-
exports.webFileReader = {
|
|
5
|
-
read: (file, range, signal) => {
|
|
6
|
-
if (typeof file === 'string') {
|
|
7
|
-
throw new Error('`inputTypeFileReader` only supports `File` objects');
|
|
8
|
-
}
|
|
9
|
-
const part = range === null
|
|
10
|
-
? file
|
|
11
|
-
: typeof range === 'number'
|
|
12
|
-
? file.slice(range)
|
|
13
|
-
: file.slice(range[0], range[1]);
|
|
14
|
-
const reader = new FileReader();
|
|
15
|
-
reader.readAsArrayBuffer(file);
|
|
16
|
-
if (signal) {
|
|
17
|
-
signal.addEventListener('abort', () => {
|
|
18
|
-
reader.abort();
|
|
19
|
-
}, { once: true });
|
|
20
|
-
}
|
|
21
|
-
return new Promise((resolve, reject) => {
|
|
22
|
-
reader.onload = () => {
|
|
23
|
-
resolve({
|
|
24
|
-
reader: part.stream().getReader(),
|
|
25
|
-
contentLength: file.size,
|
|
26
|
-
});
|
|
27
|
-
};
|
|
28
|
-
reader.onerror = (error) => {
|
|
29
|
-
reject(error);
|
|
30
|
-
};
|
|
31
|
-
});
|
|
32
|
-
},
|
|
33
|
-
getLength: (src) => {
|
|
34
|
-
if (typeof src === 'string') {
|
|
35
|
-
throw new Error('`inputTypeFileReader` only supports `File` objects');
|
|
36
|
-
}
|
|
37
|
-
return Promise.resolve(src.size);
|
|
38
|
-
},
|
|
39
|
-
};
|
package/dist/readers/reader.d.ts
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
type ReadResult = {
|
|
2
|
-
reader: ReadableStreamDefaultReader<Uint8Array>;
|
|
3
|
-
contentLength: number | null;
|
|
4
|
-
};
|
|
5
|
-
type ReadContent = (src: string | File, range: [number, number] | number | null, signal: AbortSignal | undefined) => Promise<ReadResult>;
|
|
6
|
-
type GetLength = (src: string | File) => Promise<number>;
|
|
7
|
-
export type ReaderInterface = {
|
|
8
|
-
read: ReadContent;
|
|
9
|
-
getLength: GetLength;
|
|
10
|
-
};
|
|
11
|
-
export {};
|
package/dist/readers/reader.js
DELETED
package/dist/web-file.d.ts
DELETED
package/dist/web-file.js
DELETED
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.inputTypeFileReader = void 0;
|
|
4
|
-
exports.inputTypeFileReader = {
|
|
5
|
-
read: (file, range) => {
|
|
6
|
-
if (typeof file === 'string') {
|
|
7
|
-
throw new Error('`inputTypeFileReader` only supports `File` objects');
|
|
8
|
-
}
|
|
9
|
-
if (range !== null) {
|
|
10
|
-
throw new Error('`inputTypeFileReader` does not support `range`');
|
|
11
|
-
}
|
|
12
|
-
const part = range === null
|
|
13
|
-
? file
|
|
14
|
-
: typeof range === 'number'
|
|
15
|
-
? file.slice(range)
|
|
16
|
-
: file.slice(range[0], range[1]);
|
|
17
|
-
const reader = new FileReader();
|
|
18
|
-
reader.readAsArrayBuffer(file);
|
|
19
|
-
return new Promise((resolve, reject) => {
|
|
20
|
-
reader.onload = () => {
|
|
21
|
-
resolve({
|
|
22
|
-
reader: part.stream().getReader(),
|
|
23
|
-
contentLength: file.size,
|
|
24
|
-
});
|
|
25
|
-
};
|
|
26
|
-
reader.onerror = (error) => {
|
|
27
|
-
reject(error);
|
|
28
|
-
};
|
|
29
|
-
});
|
|
30
|
-
},
|
|
31
|
-
getLength: (src) => {
|
|
32
|
-
if (typeof src === 'string') {
|
|
33
|
-
throw new Error('`inputTypeFileReader` only supports `File` objects');
|
|
34
|
-
}
|
|
35
|
-
return Promise.resolve(src.size);
|
|
36
|
-
},
|
|
37
|
-
};
|
package/dist/writers/web-fs.d.ts
DELETED
package/dist/writers/web-fs.js
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.webFsWriter = void 0;
|
|
4
|
-
const createContent = async () => {
|
|
5
|
-
const directoryHandle = await navigator.storage.getDirectory();
|
|
6
|
-
const fileHandle = await directoryHandle.getFileHandle('out.web', {
|
|
7
|
-
create: true,
|
|
8
|
-
});
|
|
9
|
-
const f = await fileHandle.getFile();
|
|
10
|
-
const writable = await fileHandle.createWritable();
|
|
11
|
-
return {
|
|
12
|
-
write: async (arr) => {
|
|
13
|
-
await writable.write(arr);
|
|
14
|
-
},
|
|
15
|
-
save: async () => {
|
|
16
|
-
const picker = await window.showSaveFilePicker({
|
|
17
|
-
suggestedName: `${Math.random().toString().replace('.', '')}.webm`,
|
|
18
|
-
});
|
|
19
|
-
const pickerWriteable = await picker.createWritable();
|
|
20
|
-
const stream = f.stream();
|
|
21
|
-
await stream.pipeTo(pickerWriteable);
|
|
22
|
-
await writable.close();
|
|
23
|
-
},
|
|
24
|
-
};
|
|
25
|
-
};
|
|
26
|
-
exports.webFsWriter = {
|
|
27
|
-
createContent,
|
|
28
|
-
};
|
package/dist/writers/writer.d.ts
DELETED
package/dist/writers/writer.js
DELETED
|
File without changes
|
|
File without changes
|
/package/dist/{sample-aspect-ratio.d.ts → boxes/webm/bitstream/h264/get-h264-descriptor.d.ts}
RENAMED
|
File without changes
|
|
File without changes
|