@remotion/renderer 3.0.19 → 3.0.22
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/assets/get-audio-channels.d.ts +4 -2
- package/dist/assets/get-audio-channels.js +14 -3
- package/dist/browser/Browser.d.ts +209 -0
- package/dist/browser/Browser.js +402 -0
- package/dist/browser/BrowserConnector.d.ts +19 -0
- package/dist/browser/BrowserConnector.js +17 -0
- package/dist/browser/BrowserFetcher.d.ts +89 -0
- package/dist/browser/BrowserFetcher.js +492 -0
- package/dist/browser/BrowserRunner.d.ts +39 -0
- package/dist/browser/BrowserRunner.js +308 -0
- package/dist/browser/Connection.d.ts +49 -0
- package/dist/browser/Connection.js +262 -0
- package/dist/browser/ConnectionTransport.d.ts +21 -0
- package/dist/browser/ConnectionTransport.js +17 -0
- package/dist/browser/ConsoleMessage.d.ts +31 -0
- package/dist/browser/ConsoleMessage.js +48 -0
- package/dist/browser/DOMWorld.d.ts +50 -0
- package/dist/browser/DOMWorld.js +280 -0
- package/dist/browser/EmulationManager.d.ts +7 -0
- package/dist/browser/EmulationManager.js +40 -0
- package/dist/browser/Errors.d.ts +25 -0
- package/dist/browser/Errors.js +35 -0
- package/dist/browser/EvalTypes.d.ts +27 -0
- package/dist/browser/EvalTypes.js +17 -0
- package/dist/browser/EventEmitter.d.ts +70 -0
- package/dist/browser/EventEmitter.js +102 -0
- package/dist/browser/ExecutionContext.d.ts +33 -0
- package/dist/browser/ExecutionContext.js +174 -0
- package/dist/browser/FrameManager.d.ts +96 -0
- package/dist/browser/FrameManager.js +512 -0
- package/dist/browser/HTTPRequest.d.ts +28 -0
- package/dist/browser/HTTPRequest.js +37 -0
- package/dist/browser/HTTPResponse.d.ts +22 -0
- package/dist/browser/HTTPResponse.js +33 -0
- package/dist/browser/JSHandle.d.ts +36 -0
- package/dist/browser/JSHandle.js +93 -0
- package/dist/browser/LaunchOptions.d.ts +117 -0
- package/dist/browser/LaunchOptions.js +17 -0
- package/dist/browser/Launcher.d.ts +9 -0
- package/dist/browser/Launcher.js +602 -0
- package/dist/browser/LifecycleWatcher.d.ts +29 -0
- package/dist/browser/LifecycleWatcher.js +193 -0
- package/dist/browser/NetworkEventManager.d.ts +35 -0
- package/dist/browser/NetworkEventManager.js +128 -0
- package/dist/browser/NetworkManager.d.ts +36 -0
- package/dist/browser/NetworkManager.js +280 -0
- package/dist/browser/NodeWebSocketTransport.d.ts +17 -0
- package/dist/browser/NodeWebSocketTransport.js +90 -0
- package/dist/browser/Page.d.ts +74 -0
- package/dist/browser/Page.js +282 -0
- package/dist/browser/Product.d.ts +16 -0
- package/dist/browser/Product.js +17 -0
- package/dist/browser/PuppeteerNode.d.ts +89 -0
- package/dist/browser/PuppeteerNode.js +135 -0
- package/dist/browser/PuppeteerViewport.d.ts +5 -0
- package/dist/browser/PuppeteerViewport.js +2 -0
- package/dist/browser/ScreenshotOptions.d.ts +14 -0
- package/dist/browser/ScreenshotOptions.js +2 -0
- package/dist/browser/Target.d.ts +61 -0
- package/dist/browser/Target.js +146 -0
- package/dist/browser/TaskQueue.d.ts +20 -0
- package/dist/browser/TaskQueue.js +47 -0
- package/dist/browser/TimeoutSettings.d.ts +23 -0
- package/dist/browser/TimeoutSettings.js +62 -0
- package/dist/browser/assert.d.ts +21 -0
- package/dist/browser/assert.js +29 -0
- package/dist/browser/compat.d.ts +2 -0
- package/dist/browser/compat.js +17 -0
- package/dist/browser/create-browser-fetcher.d.ts +17 -0
- package/dist/browser/create-browser-fetcher.js +127 -0
- package/dist/browser/environment.d.ts +16 -0
- package/dist/browser/environment.js +19 -0
- package/dist/browser/get-download-destination.d.ts +1 -0
- package/dist/browser/get-download-destination.js +38 -0
- package/dist/browser/mitt/index.d.ts +22 -0
- package/dist/browser/mitt/index.js +49 -0
- package/dist/browser/node.d.ts +2 -0
- package/dist/browser/node.js +9 -0
- package/dist/browser/revisions.d.ts +21 -0
- package/dist/browser/revisions.js +22 -0
- package/dist/browser/util.d.ts +46 -0
- package/dist/browser/util.js +161 -0
- package/dist/ensure-presentation-timestamp.d.ts +1 -0
- package/dist/ensure-presentation-timestamp.js +57 -0
- package/dist/extract-frame-from-video.d.ts +4 -5
- package/dist/extract-frame-from-video.js +58 -27
- package/dist/index.d.ts +24 -0
- package/dist/index.js +11 -0
- package/dist/is-vp9-video.d.ts +3 -0
- package/dist/is-vp9-video.js +24 -0
- package/dist/last-frame-from-video-cache.d.ts +4 -3
- package/dist/last-frame-from-video-cache.js +9 -6
- package/dist/offthread-video-server.d.ts +2 -1
- package/dist/offthread-video-server.js +14 -3
- package/dist/open-browser.js +1 -2
- package/dist/prepare-server.js +11 -0
- package/dist/serve-handler/index.js +1 -8
- package/dist/should-use-vp9-decoder.d.ts +0 -0
- package/dist/should-use-vp9-decoder.js +1 -0
- package/dist/validate-offthreadvideo-image-format.d.ts +1 -0
- package/dist/validate-offthreadvideo-image-format.js +15 -0
- package/package.json +3 -3
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.getSpecialVCodecForTransparency = void 0;
|
|
7
|
+
const execa_1 = __importDefault(require("execa"));
|
|
8
|
+
const p_limit_1 = require("./p-limit");
|
|
9
|
+
const isVp9VideoCache = {};
|
|
10
|
+
const limit = (0, p_limit_1.pLimit)(1);
|
|
11
|
+
async function getSpecialVCodecForTransparencyUnlimited(src, ffprobeExecutable) {
|
|
12
|
+
if (typeof isVp9VideoCache[src] !== 'undefined') {
|
|
13
|
+
return isVp9VideoCache[src];
|
|
14
|
+
}
|
|
15
|
+
const task = await (0, execa_1.default)(ffprobeExecutable !== null && ffprobeExecutable !== void 0 ? ffprobeExecutable : 'ffprobe', [src]);
|
|
16
|
+
const isVp9 = task.stderr.includes('Video: vp9');
|
|
17
|
+
const isVp8 = task.stderr.includes('Video: vp8');
|
|
18
|
+
isVp9VideoCache[src] = isVp9 ? 'vp9' : isVp8 ? 'vp8' : 'none';
|
|
19
|
+
return isVp9VideoCache[src];
|
|
20
|
+
}
|
|
21
|
+
const getSpecialVCodecForTransparency = (src, ffprobeExecutable) => {
|
|
22
|
+
return limit(() => getSpecialVCodecForTransparencyUnlimited(src, ffprobeExecutable));
|
|
23
|
+
};
|
|
24
|
+
exports.getSpecialVCodecForTransparency = getSpecialVCodecForTransparency;
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
|
-
import { FfmpegExecutable } from 'remotion';
|
|
2
|
+
import { FfmpegExecutable, OffthreadVideoImageFormat } from 'remotion';
|
|
3
|
+
import { SpecialVCodecForTransparency } from './is-vp9-video';
|
|
3
4
|
export declare type LastFrameOptions = {
|
|
4
5
|
ffmpegExecutable: FfmpegExecutable;
|
|
5
6
|
ffprobeExecutable: FfmpegExecutable;
|
|
6
7
|
offset: number;
|
|
7
8
|
src: string;
|
|
9
|
+
specialVCodecForTransparency: SpecialVCodecForTransparency;
|
|
10
|
+
imageFormat: OffthreadVideoImageFormat;
|
|
8
11
|
};
|
|
9
12
|
export declare const setLastFrameInCache: (options: LastFrameOptions, data: Buffer) => void;
|
|
10
13
|
export declare const getLastFrameFromCache: (options: LastFrameOptions) => Buffer | null;
|
|
11
|
-
export declare const removedLastFrameFromCache: (key: string) => void;
|
|
12
|
-
export declare const ensureMaxSize: () => void;
|
|
13
14
|
export declare const clearLastFileCache: () => void;
|
|
@@ -1,12 +1,17 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
// OffthreadVideo requires sometimes that the last frame of a video gets extracted, however, this can be slow. We allocate a cache for it but that can be garbage collected
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.clearLastFileCache = exports.
|
|
4
|
+
exports.clearLastFileCache = exports.getLastFrameFromCache = exports.setLastFrameInCache = void 0;
|
|
5
5
|
let map = {};
|
|
6
6
|
const MAX_CACHE_SIZE = 50 * 1024 * 1024; // 50MB
|
|
7
7
|
let bufferSize = 0;
|
|
8
8
|
const makeLastFrameCacheKey = (options) => {
|
|
9
|
-
return [
|
|
9
|
+
return [
|
|
10
|
+
options.ffmpegExecutable,
|
|
11
|
+
options.offset,
|
|
12
|
+
options.src,
|
|
13
|
+
options.imageFormat,
|
|
14
|
+
].join('-');
|
|
10
15
|
};
|
|
11
16
|
const setLastFrameInCache = (options, data) => {
|
|
12
17
|
const key = makeLastFrameCacheKey(options);
|
|
@@ -15,7 +20,7 @@ const setLastFrameInCache = (options, data) => {
|
|
|
15
20
|
}
|
|
16
21
|
map[key] = { data, lastAccessed: Date.now() };
|
|
17
22
|
bufferSize += data.byteLength;
|
|
18
|
-
|
|
23
|
+
ensureMaxSize();
|
|
19
24
|
};
|
|
20
25
|
exports.setLastFrameInCache = setLastFrameInCache;
|
|
21
26
|
const getLastFrameFromCache = (options) => {
|
|
@@ -35,17 +40,15 @@ const removedLastFrameFromCache = (key) => {
|
|
|
35
40
|
bufferSize -= map[key].data.byteLength;
|
|
36
41
|
delete map[key];
|
|
37
42
|
};
|
|
38
|
-
exports.removedLastFrameFromCache = removedLastFrameFromCache;
|
|
39
43
|
const ensureMaxSize = () => {
|
|
40
44
|
// eslint-disable-next-line no-unmodified-loop-condition
|
|
41
45
|
while (bufferSize > MAX_CACHE_SIZE) {
|
|
42
46
|
const earliest = Object.entries(map).sort((a, b) => {
|
|
43
47
|
return a[1].lastAccessed - b[1].lastAccessed;
|
|
44
48
|
})[0];
|
|
45
|
-
|
|
49
|
+
removedLastFrameFromCache(earliest[0]);
|
|
46
50
|
}
|
|
47
51
|
};
|
|
48
|
-
exports.ensureMaxSize = ensureMaxSize;
|
|
49
52
|
const clearLastFileCache = () => {
|
|
50
53
|
map = {};
|
|
51
54
|
};
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { RequestListener } from 'http';
|
|
2
|
-
import { FfmpegExecutable } from 'remotion';
|
|
2
|
+
import { FfmpegExecutable, OffthreadVideoImageFormat } from 'remotion';
|
|
3
3
|
import { RenderMediaOnDownload } from './assets/download-and-map-assets-to-file';
|
|
4
4
|
export declare const extractUrlAndSourceFromUrl: (url: string) => {
|
|
5
5
|
src: string;
|
|
6
6
|
time: number;
|
|
7
|
+
imageFormat: OffthreadVideoImageFormat;
|
|
7
8
|
};
|
|
8
9
|
export declare const startOffthreadVideoServer: ({ ffmpegExecutable, ffprobeExecutable, downloadDir, onDownload, onError, }: {
|
|
9
10
|
ffmpegExecutable: FfmpegExecutable;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.startOffthreadVideoServer = exports.extractUrlAndSourceFromUrl = void 0;
|
|
4
|
+
const remotion_1 = require("remotion");
|
|
4
5
|
const url_1 = require("url");
|
|
5
6
|
const download_and_map_assets_to_file_1 = require("./assets/download-and-map-assets-to-file");
|
|
6
7
|
const extract_frame_from_video_1 = require("./extract-frame-from-video");
|
|
@@ -19,7 +20,16 @@ const extractUrlAndSourceFromUrl = (url) => {
|
|
|
19
20
|
if (!time) {
|
|
20
21
|
throw new Error('Did not get `time` parameter');
|
|
21
22
|
}
|
|
22
|
-
|
|
23
|
+
const imageFormat = params.get('imageFormat');
|
|
24
|
+
if (!imageFormat) {
|
|
25
|
+
throw new TypeError('Did not get `imageFormat` parameter');
|
|
26
|
+
}
|
|
27
|
+
remotion_1.Internals.validateOffthreadVideoImageFormat(imageFormat);
|
|
28
|
+
return {
|
|
29
|
+
src,
|
|
30
|
+
time: parseFloat(time),
|
|
31
|
+
imageFormat: imageFormat,
|
|
32
|
+
};
|
|
23
33
|
};
|
|
24
34
|
exports.extractUrlAndSourceFromUrl = extractUrlAndSourceFromUrl;
|
|
25
35
|
const startOffthreadVideoServer = ({ ffmpegExecutable, ffprobeExecutable, downloadDir, onDownload, onError, }) => {
|
|
@@ -32,9 +42,9 @@ const startOffthreadVideoServer = ({ ffmpegExecutable, ffprobeExecutable, downlo
|
|
|
32
42
|
res.end();
|
|
33
43
|
return;
|
|
34
44
|
}
|
|
45
|
+
const { src, time, imageFormat } = (0, exports.extractUrlAndSourceFromUrl)(req.url);
|
|
35
46
|
res.setHeader('access-control-allow-origin', '*');
|
|
36
|
-
res.setHeader('content-type', '
|
|
37
|
-
const { src, time } = (0, exports.extractUrlAndSourceFromUrl)(req.url);
|
|
47
|
+
res.setHeader('content-type', `image/${imageFormat === 'jpeg' ? 'jpg' : 'png'}`);
|
|
38
48
|
const to = (0, download_and_map_assets_to_file_1.getSanitizedFilenameForAssetUrl)({ downloadDir, src });
|
|
39
49
|
(0, download_and_map_assets_to_file_1.startDownloadForSrc)({ src, downloadDir, onDownload }).catch((err) => {
|
|
40
50
|
onError(new Error(`Error while downloading asset: ${err.stack}`));
|
|
@@ -46,6 +56,7 @@ const startOffthreadVideoServer = ({ ffmpegExecutable, ffprobeExecutable, downlo
|
|
|
46
56
|
src: to,
|
|
47
57
|
ffmpegExecutable,
|
|
48
58
|
ffprobeExecutable,
|
|
59
|
+
imageFormat,
|
|
49
60
|
});
|
|
50
61
|
})
|
|
51
62
|
.then((readable) => {
|
package/dist/open-browser.js
CHANGED
|
@@ -63,7 +63,6 @@ const openBrowser = async (browser, options) => {
|
|
|
63
63
|
'--proxy-bypass-list=*',
|
|
64
64
|
// TODO: remove AvoidUnnecessaryBeforeUnloadCheckSync below
|
|
65
65
|
// once crbug.com/1324138 is fixed and released.
|
|
66
|
-
'--disable-features=Translate,BackForwardCache,AvoidUnnecessaryBeforeUnloadCheckSync',
|
|
67
66
|
'--disable-hang-monitor',
|
|
68
67
|
'--disable-ipc-flooding-protection',
|
|
69
68
|
'--disable-popup-blocking',
|
|
@@ -91,7 +90,7 @@ const openBrowser = async (browser, options) => {
|
|
|
91
90
|
'--allow-running-insecure-content',
|
|
92
91
|
'--disable-component-update',
|
|
93
92
|
'--disable-domain-reliability',
|
|
94
|
-
'--disable-features=AudioServiceOutOfProcess,IsolateOrigins,site-per-process',
|
|
93
|
+
'--disable-features=AudioServiceOutOfProcess,IsolateOrigins,site-per-process,Translate,BackForwardCache,AvoidUnnecessaryBeforeUnloadCheckSync,IntensiveWakeUpThrottling',
|
|
95
94
|
'--disable-print-preview',
|
|
96
95
|
'--disable-site-isolation-trials',
|
|
97
96
|
'--disk-cache-size=268435456',
|
package/dist/prepare-server.js
CHANGED
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
6
|
exports.prepareServer = void 0;
|
|
7
|
+
const fs_1 = require("fs");
|
|
8
|
+
const path_1 = __importDefault(require("path"));
|
|
4
9
|
const is_serve_url_1 = require("./is-serve-url");
|
|
5
10
|
const serve_static_1 = require("./serve-static");
|
|
6
11
|
const prepareServer = async ({ downloadDir, ffmpegExecutable, ffprobeExecutable, onDownload, onError, webpackConfigOrServeUrl, port, }) => {
|
|
@@ -19,6 +24,12 @@ const prepareServer = async ({ downloadDir, ffmpegExecutable, ffprobeExecutable,
|
|
|
19
24
|
offthreadPort,
|
|
20
25
|
});
|
|
21
26
|
}
|
|
27
|
+
// Check if the path has a `index.html` file
|
|
28
|
+
const indexFile = path_1.default.join(webpackConfigOrServeUrl, 'index.html');
|
|
29
|
+
const exists = (0, fs_1.existsSync)(indexFile);
|
|
30
|
+
if (!exists) {
|
|
31
|
+
throw new Error(`Tried to serve the Webpack bundle on a HTTP server, but the file ${indexFile} does not exist. Is this a valid path to a Webpack bundle?`);
|
|
32
|
+
}
|
|
22
33
|
const { port: serverPort, close } = await (0, serve_static_1.serveStatic)(webpackConfigOrServeUrl, {
|
|
23
34
|
downloadDir,
|
|
24
35
|
onDownload,
|
|
@@ -13,7 +13,6 @@ const mime_types_1 = __importDefault(require("mime-types"));
|
|
|
13
13
|
const is_path_inside_1 = require("./is-path-inside");
|
|
14
14
|
const range_parser_1 = require("./range-parser");
|
|
15
15
|
const getHeaders = (absolutePath, stats) => {
|
|
16
|
-
const related = {};
|
|
17
16
|
const { base } = path_1.default.parse(absolutePath);
|
|
18
17
|
let defaultHeaders = {};
|
|
19
18
|
if (stats) {
|
|
@@ -27,13 +26,7 @@ const getHeaders = (absolutePath, stats) => {
|
|
|
27
26
|
defaultHeaders['Content-Type'] = contentType;
|
|
28
27
|
}
|
|
29
28
|
}
|
|
30
|
-
|
|
31
|
-
for (const key in headers) {
|
|
32
|
-
if (headers[key] === null) {
|
|
33
|
-
delete headers[key];
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
return headers;
|
|
29
|
+
return defaultHeaders;
|
|
37
30
|
};
|
|
38
31
|
const getPossiblePaths = (relativePath, extension) => [
|
|
39
32
|
path_1.default.join(relativePath, `index${extension}`),
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const validateOffthreadVideoImageFormat: (input: unknown) => void;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.validateOffthreadVideoImageFormat = void 0;
|
|
4
|
+
const validateOffthreadVideoImageFormat = (input) => {
|
|
5
|
+
if (typeof input === 'undefined') {
|
|
6
|
+
return;
|
|
7
|
+
}
|
|
8
|
+
if (typeof input !== 'string') {
|
|
9
|
+
throw new TypeError(`<OffthreadVideo imageFormat=""> must be a string, but got ${JSON.stringify(input)} instead.`);
|
|
10
|
+
}
|
|
11
|
+
if (input !== 'png' && input !== 'jpeg') {
|
|
12
|
+
throw new TypeError(`<OffthreadVideo imageFormat=""> must be either "png" or "jpeg", but got ${input}`);
|
|
13
|
+
}
|
|
14
|
+
};
|
|
15
|
+
exports.validateOffthreadVideoImageFormat = validateOffthreadVideoImageFormat;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@remotion/renderer",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.22",
|
|
4
4
|
"description": "Renderer for Remotion",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
"execa": "5.1.1",
|
|
24
24
|
"mime-types": "2.1.35",
|
|
25
25
|
"puppeteer-core": "13.5.1",
|
|
26
|
-
"remotion": "3.0.
|
|
26
|
+
"remotion": "3.0.22",
|
|
27
27
|
"source-map": "^0.8.0-beta.0"
|
|
28
28
|
},
|
|
29
29
|
"peerDependencies": {
|
|
@@ -59,5 +59,5 @@
|
|
|
59
59
|
"publishConfig": {
|
|
60
60
|
"access": "public"
|
|
61
61
|
},
|
|
62
|
-
"gitHead": "
|
|
62
|
+
"gitHead": "e79cfa299f58a26c84a637174875941898cdab97"
|
|
63
63
|
}
|