@remotion/webcodecs 4.0.230 → 4.0.232
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/README.md +12 -1
- package/dist/audio-decoder.js +6 -0
- package/dist/audio-encoder-config.d.ts +4 -1
- package/dist/audio-encoder-config.js +6 -0
- package/dist/audio-encoder.d.ts +4 -3
- package/dist/audio-encoder.js +5 -1
- package/dist/browser-quirks.d.ts +2 -0
- package/dist/browser-quirks.js +11 -0
- package/dist/can-copy-audio-track.d.ts +1 -1
- package/dist/can-copy-audio-track.js +3 -0
- package/dist/can-copy-video-track.d.ts +1 -1
- package/dist/can-copy-video-track.js +4 -1
- package/dist/can-reencode-audio-track.d.ts +1 -1
- package/dist/can-reencode-audio-track.js +3 -0
- package/dist/can-reencode-video-track.d.ts +1 -1
- package/dist/codec-id.d.ts +2 -2
- package/dist/codec-id.js +8 -2
- package/dist/convert-media.d.ts +9 -5
- package/dist/convert-media.js +55 -42
- package/dist/convert-to-correct-videoframe.d.ts +9 -0
- package/dist/convert-to-correct-videoframe.js +32 -0
- package/dist/default-on-video-track-handler.js +4 -0
- package/dist/esm/index.mjs +347 -110
- package/dist/generate-output-filename.d.ts +2 -0
- package/dist/generate-output-filename.js +14 -0
- package/dist/get-available-audio-codecs.d.ts +7 -0
- package/dist/get-available-audio-codecs.js +18 -0
- package/dist/get-available-containers.d.ts +4 -0
- package/dist/get-available-containers.js +8 -0
- package/dist/get-available-video-codecs.d.ts +7 -0
- package/dist/get-available-video-codecs.js +18 -0
- package/dist/get-default-audio-codec.d.ts +2 -1
- package/dist/get-default-audio-codec.js +3 -0
- package/dist/get-default-video-codec.d.ts +3 -2
- package/dist/get-default-video-codec.js +7 -1
- package/dist/index.d.ts +8 -6
- package/dist/index.js +9 -5
- package/dist/io-manager/io-synchronizer.js +12 -6
- package/dist/on-audio-track-handler.d.ts +2 -1
- package/dist/on-audio-track.d.ts +5 -5
- package/dist/on-audio-track.js +22 -8
- package/dist/on-frame.d.ts +4 -4
- package/dist/on-frame.js +11 -11
- package/dist/on-video-track-handler.d.ts +2 -1
- package/dist/on-video-track.d.ts +6 -5
- package/dist/on-video-track.js +15 -7
- package/dist/select-container-creator.d.ts +2 -0
- package/dist/select-container-creator.js +17 -0
- package/dist/set-remotion-imported.d.ts +6 -0
- package/dist/set-remotion-imported.js +25 -0
- package/dist/throttled-state-update.d.ts +13 -0
- package/dist/throttled-state-update.js +49 -0
- package/dist/video-encoder-config.d.ts +1 -1
- package/dist/video-encoder-config.js +2 -0
- package/dist/video-encoder.d.ts +3 -1
- package/dist/video-encoder.js +8 -4
- package/dist/wav-audio-encoder.d.ts +2 -0
- package/dist/wav-audio-encoder.js +26 -0
- package/package.json +4 -3
package/dist/video-encoder.d.ts
CHANGED
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
import type { LogLevel } from '@remotion/media-parser';
|
|
2
|
+
import type { ConvertMediaVideoCodec } from './get-available-video-codecs';
|
|
2
3
|
export type WebCodecsVideoEncoder = {
|
|
3
4
|
encodeFrame: (videoFrame: VideoFrame, timestamp: number) => Promise<void>;
|
|
4
5
|
waitForFinish: () => Promise<void>;
|
|
5
6
|
close: () => void;
|
|
6
7
|
flush: () => Promise<void>;
|
|
7
8
|
};
|
|
8
|
-
export declare const createVideoEncoder: ({ onChunk, onError, signal, config, logLevel, }: {
|
|
9
|
+
export declare const createVideoEncoder: ({ onChunk, onError, signal, config, logLevel, outputCodec, }: {
|
|
9
10
|
onChunk: (chunk: EncodedVideoChunk, metadata: EncodedVideoChunkMetadata | null) => Promise<void>;
|
|
10
11
|
onError: (error: DOMException) => void;
|
|
11
12
|
signal: AbortSignal;
|
|
12
13
|
config: VideoEncoderConfig;
|
|
13
14
|
logLevel: LogLevel;
|
|
15
|
+
outputCodec: ConvertMediaVideoCodec;
|
|
14
16
|
}) => WebCodecsVideoEncoder;
|
package/dist/video-encoder.js
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.createVideoEncoder = void 0;
|
|
4
|
+
const convert_to_correct_videoframe_1 = require("./convert-to-correct-videoframe");
|
|
4
5
|
const io_synchronizer_1 = require("./io-manager/io-synchronizer");
|
|
5
|
-
const
|
|
6
|
+
const log_1 = require("./log");
|
|
7
|
+
const createVideoEncoder = ({ onChunk, onError, signal, config, logLevel, outputCodec, }) => {
|
|
6
8
|
if (signal.aborted) {
|
|
7
9
|
throw new Error('Not creating video encoder, already aborted');
|
|
8
10
|
}
|
|
@@ -44,6 +46,7 @@ const createVideoEncoder = ({ onChunk, onError, signal, config, logLevel, }) =>
|
|
|
44
46
|
close();
|
|
45
47
|
};
|
|
46
48
|
signal.addEventListener('abort', onAbort);
|
|
49
|
+
log_1.Log.verbose(logLevel, 'Configuring video encoder', config);
|
|
47
50
|
encoder.configure(config);
|
|
48
51
|
let framesProcessed = 0;
|
|
49
52
|
const encodeFrame = async (frame) => {
|
|
@@ -51,15 +54,16 @@ const createVideoEncoder = ({ onChunk, onError, signal, config, logLevel, }) =>
|
|
|
51
54
|
return;
|
|
52
55
|
}
|
|
53
56
|
await ioSynchronizer.waitFor({
|
|
54
|
-
|
|
55
|
-
|
|
57
|
+
// Firefox stalls if too few frames are passed
|
|
58
|
+
unemitted: 10,
|
|
59
|
+
_unprocessed: 10,
|
|
56
60
|
});
|
|
57
61
|
// @ts-expect-error - can have changed in the meanwhile
|
|
58
62
|
if (encoder.state === 'closed') {
|
|
59
63
|
return;
|
|
60
64
|
}
|
|
61
65
|
const keyFrame = framesProcessed % 40 === 0;
|
|
62
|
-
encoder.encode(frame, {
|
|
66
|
+
encoder.encode((0, convert_to_correct_videoframe_1.convertToCorrectVideoFrame)({ videoFrame: frame, outputCodec }), {
|
|
63
67
|
keyFrame,
|
|
64
68
|
});
|
|
65
69
|
ioSynchronizer.inputItem(frame.timestamp, keyFrame);
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getWaveAudioEncoder = void 0;
|
|
4
|
+
const getWaveAudioEncoder = ({ onChunk, signal, }) => {
|
|
5
|
+
return {
|
|
6
|
+
close: () => {
|
|
7
|
+
return Promise.resolve();
|
|
8
|
+
},
|
|
9
|
+
encodeFrame: (audioData) => {
|
|
10
|
+
if (signal.aborted) {
|
|
11
|
+
return Promise.resolve();
|
|
12
|
+
}
|
|
13
|
+
const chunk = {
|
|
14
|
+
timestamp: audioData.timestamp,
|
|
15
|
+
duration: audioData.duration,
|
|
16
|
+
type: 'key',
|
|
17
|
+
copyTo: (destination) => audioData.copyTo(destination, { planeIndex: 0, format: 's16' }),
|
|
18
|
+
byteLength: audioData.allocationSize({ planeIndex: 0, format: 's16' }),
|
|
19
|
+
};
|
|
20
|
+
return onChunk(chunk);
|
|
21
|
+
},
|
|
22
|
+
flush: () => Promise.resolve(),
|
|
23
|
+
waitForFinish: () => Promise.resolve(),
|
|
24
|
+
};
|
|
25
|
+
};
|
|
26
|
+
exports.getWaveAudioEncoder = getWaveAudioEncoder;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@remotion/webcodecs",
|
|
3
|
-
"version": "4.0.
|
|
3
|
+
"version": "4.0.232",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"types": "dist/index.d.ts",
|
|
6
6
|
"module": "dist/esm/index.mjs",
|
|
@@ -17,19 +17,20 @@
|
|
|
17
17
|
"author": "Jonny Burger <jonny@remotion.dev>",
|
|
18
18
|
"license": "Remotion License (See https://remotion.dev/docs/webcodecs#license)",
|
|
19
19
|
"dependencies": {
|
|
20
|
-
"@remotion/media-parser": "4.0.
|
|
20
|
+
"@remotion/media-parser": "4.0.232"
|
|
21
21
|
},
|
|
22
22
|
"peerDependencies": {},
|
|
23
23
|
"devDependencies": {
|
|
24
24
|
"@types/dom-webcodecs": "0.1.11",
|
|
25
25
|
"eslint": "9.14.0",
|
|
26
|
-
"@remotion/eslint-config-internal": "4.0.
|
|
26
|
+
"@remotion/eslint-config-internal": "4.0.232"
|
|
27
27
|
},
|
|
28
28
|
"keywords": [],
|
|
29
29
|
"publishConfig": {
|
|
30
30
|
"access": "public"
|
|
31
31
|
},
|
|
32
32
|
"description": "Media conversion in the browser",
|
|
33
|
+
"homepage": "https://remotion.dev/webcodecs",
|
|
33
34
|
"scripts": {
|
|
34
35
|
"formatting": "prettier src --check",
|
|
35
36
|
"lint": "eslint src",
|