@remotion/renderer 3.0.22 → 3.0.25
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/calculate-asset-positions.d.ts +2 -2
- package/dist/assets/convert-assets-to-file-urls.d.ts +2 -2
- package/dist/assets/download-and-map-assets-to-file.d.ts +1 -1
- package/dist/assets/ffmpeg-volume-expression.d.ts +1 -1
- package/dist/assets/flatten-volume-array.d.ts +1 -1
- package/dist/assets/get-audio-channels.d.ts +1 -1
- package/dist/assets/types.d.ts +1 -1
- package/dist/browser/Browser.d.ts +5 -159
- package/dist/browser/Browser.js +5 -190
- package/dist/browser/BrowserConnector.d.ts +1 -1
- package/dist/browser/BrowserFetcher.d.ts +3 -3
- package/dist/browser/BrowserFetcher.js +38 -20
- package/dist/browser/BrowserRunner.d.ts +2 -2
- package/dist/browser/BrowserRunner.js +1 -1
- package/dist/browser/Connection.d.ts +2 -9
- package/dist/browser/Connection.js +3 -23
- package/dist/browser/ConsoleMessage.d.ts +1 -1
- package/dist/browser/DOMWorld.d.ts +5 -6
- package/dist/browser/DOMWorld.js +2 -18
- package/dist/browser/EvalTypes.d.ts +1 -1
- package/dist/browser/EventEmitter.d.ts +1 -48
- package/dist/browser/EventEmitter.js +0 -49
- package/dist/browser/ExecutionContext.d.ts +6 -5
- package/dist/browser/FrameManager.d.ts +9 -13
- package/dist/browser/FrameManager.js +3 -19
- package/dist/browser/HTTPRequest.d.ts +2 -2
- package/dist/browser/HTTPResponse.d.ts +0 -1
- package/dist/browser/HTTPResponse.js +2 -9
- package/dist/browser/JSHandle.d.ts +3 -4
- package/dist/browser/JSHandle.js +0 -3
- package/dist/browser/LaunchOptions.d.ts +2 -81
- package/dist/browser/Launcher.d.ts +2 -2
- package/dist/browser/Launcher.js +21 -119
- package/dist/browser/LifecycleWatcher.d.ts +4 -4
- package/dist/browser/LifecycleWatcher.js +4 -17
- package/dist/browser/NetworkEventManager.d.ts +1 -3
- package/dist/browser/NetworkEventManager.js +0 -47
- package/dist/browser/NetworkManager.d.ts +1 -3
- package/dist/browser/NetworkManager.js +3 -35
- package/dist/browser/Page.d.ts +7 -9
- package/dist/browser/PuppeteerNode.d.ts +7 -56
- package/dist/browser/PuppeteerNode.js +4 -58
- package/dist/browser/Target.d.ts +3 -3
- package/dist/browser/assert.d.ts +0 -20
- package/dist/browser/assert.js +0 -20
- package/dist/browser/create-browser-fetcher.d.ts +1 -1
- package/dist/browser/create-browser-fetcher.js +3 -11
- package/dist/browser/util.d.ts +2 -2
- package/dist/browser/util.js +1 -1
- package/dist/browser-log.d.ts +1 -1
- package/dist/calculate-ffmpeg-filters.d.ts +1 -1
- package/dist/calculate-sar-dar-pixels.d.ts +9 -0
- package/dist/calculate-sar-dar-pixels.js +19 -0
- package/dist/can-use-parallel-encoding.d.ts +1 -1
- package/dist/combine-videos.d.ts +1 -1
- package/dist/convert-to-pcm.d.ts +1 -1
- package/dist/create-silent-audio.d.ts +1 -1
- package/dist/cycle-browser-tabs.d.ts +1 -1
- package/dist/delay-render-embedded-stack.d.ts +1 -1
- package/dist/ensure-presentation-timestamp.d.ts +1 -1
- package/dist/ensure-presentation-timestamp.js +1 -1
- package/dist/error-handling/handle-javascript-exception.d.ts +2 -2
- package/dist/error-handling/handle-javascript-exception.js +2 -2
- package/dist/error-handling/symbolicate-error.d.ts +1 -1
- package/dist/error-handling/symbolicateable-error.d.ts +1 -1
- package/dist/extract-frame-from-video.d.ts +3 -4
- package/dist/extract-frame-from-video.js +26 -14
- package/dist/get-audio-codec-name.d.ts +1 -1
- package/dist/get-browser-instance.d.ts +4 -3
- package/dist/get-codec-name.d.ts +1 -1
- package/dist/get-compositions.d.ts +4 -4
- package/dist/get-compositions.js +2 -2
- package/dist/get-duration-from-frame-range.d.ts +1 -1
- package/dist/get-extension-from-codec.d.ts +1 -1
- package/dist/get-frame-to-render.d.ts +1 -1
- package/dist/get-local-browser-executable.d.ts +1 -1
- package/dist/get-local-browser-executable.js +7 -5
- package/dist/get-prores-profile-name.d.ts +1 -1
- package/dist/get-video-info.d.ts +8 -0
- package/dist/get-video-info.js +50 -0
- package/dist/image-format.d.ts +1 -1
- package/dist/is-vp9-video.d.ts +1 -1
- package/dist/last-frame-from-video-cache.d.ts +3 -2
- package/dist/merge-audio-track.d.ts +1 -1
- package/dist/offthread-video-server.d.ts +3 -3
- package/dist/open-browser.d.ts +5 -3
- package/dist/open-browser.js +8 -8
- package/dist/prepare-server.d.ts +2 -2
- package/dist/preprocess-audio-track.d.ts +2 -2
- package/dist/prespawn-ffmpeg.d.ts +2 -2
- package/dist/provide-screenshot.d.ts +4 -4
- package/dist/provide-screenshot.js +0 -1
- package/dist/puppeteer-evaluate.d.ts +1 -1
- package/dist/puppeteer-evaluate.js +3 -4
- package/dist/puppeteer-screenshot.d.ts +3 -2
- package/dist/puppeteer-screenshot.js +2 -4
- package/dist/render-frames.d.ts +9 -9
- package/dist/render-frames.js +18 -10
- package/dist/render-media.d.ts +8 -8
- package/dist/render-still.d.ts +6 -6
- package/dist/screenshot-dom-element.d.ts +6 -7
- package/dist/screenshot-dom-element.js +3 -6
- package/dist/screenshot-task.d.ts +3 -2
- package/dist/screenshot-task.js +3 -5
- package/dist/seek-to-frame.d.ts +2 -2
- package/dist/serve-handler/index.d.ts +1 -1
- package/dist/serve-handler/index.js +0 -1
- package/dist/serve-static.d.ts +2 -2
- package/dist/set-props-and-env.d.ts +1 -1
- package/dist/set-props-and-env.js +3 -0
- package/dist/stitch-frames-to-video.d.ts +3 -3
- package/dist/stringify-ffmpeg-filter.d.ts +2 -2
- package/dist/stringify-ffmpeg-filter.js +3 -0
- package/dist/symbolicate-stacktrace.d.ts +1 -1
- package/dist/types.d.ts +1 -1
- package/dist/validate-even-dimensions-with-codec.d.ts +1 -1
- package/dist/validate-output-filename.d.ts +1 -1
- package/package.json +10 -6
|
@@ -3,14 +3,14 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.extractFrameFromVideo = exports.getLastFrameOfVideo = exports.
|
|
6
|
+
exports.extractFrameFromVideo = exports.getLastFrameOfVideo = exports.determineResizeParams = void 0;
|
|
7
7
|
const execa_1 = __importDefault(require("execa"));
|
|
8
8
|
const remotion_1 = require("remotion");
|
|
9
9
|
const get_audio_channels_1 = require("./assets/get-audio-channels");
|
|
10
10
|
const ensure_presentation_timestamp_1 = require("./ensure-presentation-timestamp");
|
|
11
11
|
const frame_to_ffmpeg_timestamp_1 = require("./frame-to-ffmpeg-timestamp");
|
|
12
|
+
const get_video_info_1 = require("./get-video-info");
|
|
12
13
|
const is_beyond_last_frame_1 = require("./is-beyond-last-frame");
|
|
13
|
-
const is_vp9_video_1 = require("./is-vp9-video");
|
|
14
14
|
const last_frame_from_video_cache_1 = require("./last-frame-from-video-cache");
|
|
15
15
|
const p_limit_1 = require("./p-limit");
|
|
16
16
|
const lastFrameLimit = (0, p_limit_1.pLimit)(1);
|
|
@@ -23,16 +23,22 @@ const determineVcodecFfmepgFlags = (vcodecFlag) => {
|
|
|
23
23
|
vcodecFlag === 'vp8' ? 'libvpx' : null,
|
|
24
24
|
].filter(remotion_1.Internals.truthy);
|
|
25
25
|
};
|
|
26
|
-
|
|
26
|
+
const determineResizeParams = (needsResize) => {
|
|
27
|
+
if (needsResize === null) {
|
|
28
|
+
return [];
|
|
29
|
+
}
|
|
30
|
+
return ['-s', `${needsResize[0]}x${needsResize[1]}`];
|
|
31
|
+
};
|
|
32
|
+
exports.determineResizeParams = determineResizeParams;
|
|
27
33
|
// Uses no seeking, therefore the whole video has to be decoded. This is a last resort and should only happen
|
|
28
34
|
// if the video is corrupted
|
|
29
|
-
const getFrameOfVideoSlow = async ({ src, timestamp, ffmpegExecutable, imageFormat, specialVCodecForTransparency, }) => {
|
|
35
|
+
const getFrameOfVideoSlow = async ({ src, timestamp, ffmpegExecutable, imageFormat, specialVCodecForTransparency, needsResize, }) => {
|
|
30
36
|
console.warn(`\nUsing a slow method to extract the frame at ${timestamp}ms of ${src}. See https://remotion.dev/docs/slow-method-to-extract-frame for advice`);
|
|
31
37
|
const actualOffset = `-${timestamp * 1000}ms`;
|
|
32
38
|
const command = [
|
|
33
39
|
'-itsoffset',
|
|
34
40
|
actualOffset,
|
|
35
|
-
...
|
|
41
|
+
...determineVcodecFfmepgFlags(specialVCodecForTransparency),
|
|
36
42
|
'-i',
|
|
37
43
|
src,
|
|
38
44
|
'-frames:v',
|
|
@@ -41,6 +47,7 @@ const getFrameOfVideoSlow = async ({ src, timestamp, ffmpegExecutable, imageForm
|
|
|
41
47
|
imageFormat === 'jpeg' ? 'mjpeg' : 'png',
|
|
42
48
|
'-f',
|
|
43
49
|
'image2pipe',
|
|
50
|
+
...(0, exports.determineResizeParams)(needsResize),
|
|
44
51
|
'-',
|
|
45
52
|
].filter(remotion_1.Internals.truthy);
|
|
46
53
|
const { stdout, stderr } = (0, execa_1.default)(ffmpegExecutable !== null && ffmpegExecutable !== void 0 ? ffmpegExecutable : 'ffmpeg', command);
|
|
@@ -86,6 +93,7 @@ const getLastFrameOfVideoFastUnlimited = async (options) => {
|
|
|
86
93
|
src,
|
|
87
94
|
imageFormat: options.imageFormat,
|
|
88
95
|
specialVCodecForTransparency: options.specialVCodecForTransparency,
|
|
96
|
+
needsResize: options.needsResize,
|
|
89
97
|
});
|
|
90
98
|
return last;
|
|
91
99
|
}
|
|
@@ -93,7 +101,7 @@ const getLastFrameOfVideoFastUnlimited = async (options) => {
|
|
|
93
101
|
const { stdout, stderr } = (0, execa_1.default)(ffmpegExecutable !== null && ffmpegExecutable !== void 0 ? ffmpegExecutable : 'ffmpeg', [
|
|
94
102
|
'-ss',
|
|
95
103
|
actualOffset,
|
|
96
|
-
...
|
|
104
|
+
...determineVcodecFfmepgFlags(options.specialVCodecForTransparency),
|
|
97
105
|
'-i',
|
|
98
106
|
src,
|
|
99
107
|
'-frames:v',
|
|
@@ -102,6 +110,7 @@ const getLastFrameOfVideoFastUnlimited = async (options) => {
|
|
|
102
110
|
options.imageFormat === 'jpeg' ? 'mjpeg' : 'png',
|
|
103
111
|
'-f',
|
|
104
112
|
'image2pipe',
|
|
113
|
+
...(0, exports.determineResizeParams)(options.needsResize),
|
|
105
114
|
'-',
|
|
106
115
|
].filter(remotion_1.Internals.truthy));
|
|
107
116
|
if (!stderr) {
|
|
@@ -138,6 +147,7 @@ const getLastFrameOfVideoFastUnlimited = async (options) => {
|
|
|
138
147
|
ffprobeExecutable,
|
|
139
148
|
imageFormat: options.imageFormat,
|
|
140
149
|
specialVCodecForTransparency: options.specialVCodecForTransparency,
|
|
150
|
+
needsResize: options.needsResize,
|
|
141
151
|
});
|
|
142
152
|
return unlimited;
|
|
143
153
|
}
|
|
@@ -151,16 +161,15 @@ const getLastFrameOfVideo = async (options) => {
|
|
|
151
161
|
exports.getLastFrameOfVideo = getLastFrameOfVideo;
|
|
152
162
|
const extractFrameFromVideoFn = async ({ time, src, ffmpegExecutable, ffprobeExecutable, imageFormat, }) => {
|
|
153
163
|
await (0, ensure_presentation_timestamp_1.ensurePresentationTimestamps)(src);
|
|
154
|
-
const
|
|
155
|
-
|
|
156
|
-
: await (0, is_vp9_video_1.getSpecialVCodecForTransparency)(src, ffprobeExecutable);
|
|
157
|
-
if (specialVCodecForTransparency === 'vp8') {
|
|
164
|
+
const { specialVcodec, needsResize } = await (0, get_video_info_1.getVideoInfo)(src, ffprobeExecutable);
|
|
165
|
+
if (specialVcodec === 'vp8') {
|
|
158
166
|
return getFrameOfVideoSlow({
|
|
159
167
|
ffmpegExecutable,
|
|
160
168
|
imageFormat,
|
|
161
|
-
specialVCodecForTransparency,
|
|
169
|
+
specialVCodecForTransparency: specialVcodec,
|
|
162
170
|
src,
|
|
163
171
|
timestamp: time,
|
|
172
|
+
needsResize,
|
|
164
173
|
});
|
|
165
174
|
}
|
|
166
175
|
if ((0, is_beyond_last_frame_1.isBeyondLastFrame)(src, time)) {
|
|
@@ -170,7 +179,8 @@ const extractFrameFromVideoFn = async ({ time, src, ffmpegExecutable, ffprobeExe
|
|
|
170
179
|
offset: 0,
|
|
171
180
|
src,
|
|
172
181
|
imageFormat,
|
|
173
|
-
specialVCodecForTransparency,
|
|
182
|
+
specialVCodecForTransparency: specialVcodec,
|
|
183
|
+
needsResize,
|
|
174
184
|
});
|
|
175
185
|
return lastFrame;
|
|
176
186
|
}
|
|
@@ -178,7 +188,7 @@ const extractFrameFromVideoFn = async ({ time, src, ffmpegExecutable, ffprobeExe
|
|
|
178
188
|
const { stdout, stderr } = (0, execa_1.default)(ffmpegExecutable !== null && ffmpegExecutable !== void 0 ? ffmpegExecutable : 'ffmpeg', [
|
|
179
189
|
'-ss',
|
|
180
190
|
ffmpegTimestamp,
|
|
181
|
-
...
|
|
191
|
+
...determineVcodecFfmepgFlags(specialVcodec),
|
|
182
192
|
'-i',
|
|
183
193
|
src,
|
|
184
194
|
'-frames:v',
|
|
@@ -187,6 +197,7 @@ const extractFrameFromVideoFn = async ({ time, src, ffmpegExecutable, ffprobeExe
|
|
|
187
197
|
'image2pipe',
|
|
188
198
|
'-vcodec',
|
|
189
199
|
imageFormat === 'jpeg' ? 'mjpeg' : 'png',
|
|
200
|
+
...(0, exports.determineResizeParams)(needsResize),
|
|
190
201
|
'-',
|
|
191
202
|
].filter(remotion_1.Internals.truthy), {
|
|
192
203
|
buffer: false,
|
|
@@ -221,7 +232,8 @@ const extractFrameFromVideoFn = async ({ time, src, ffmpegExecutable, ffprobeExe
|
|
|
221
232
|
offset: 0,
|
|
222
233
|
src,
|
|
223
234
|
imageFormat,
|
|
224
|
-
specialVCodecForTransparency,
|
|
235
|
+
specialVCodecForTransparency: specialVcodec,
|
|
236
|
+
needsResize,
|
|
225
237
|
});
|
|
226
238
|
return last;
|
|
227
239
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { Codec } from 'remotion';
|
|
1
|
+
import type { Codec } from 'remotion';
|
|
2
2
|
export declare const getAudioCodecName: (codec: Codec) => string | null;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import type { BrowserExecutable } from 'remotion';
|
|
2
|
+
import type { Browser } from './browser/Browser';
|
|
3
|
+
import type { Page } from './browser/Page';
|
|
4
|
+
import type { ChromiumOptions } from './open-browser';
|
|
4
5
|
export declare const getPageAndCleanupFn: ({ passedInInstance, browserExecutable, chromiumOptions, }: {
|
|
5
6
|
passedInInstance: Browser | undefined;
|
|
6
7
|
browserExecutable: BrowserExecutable | null;
|
package/dist/get-codec-name.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { Codec } from 'remotion';
|
|
1
|
+
import type { Codec } from 'remotion';
|
|
2
2
|
export declare const getCodecName: (codec: Codec) => string | null;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { ChromiumOptions } from './open-browser';
|
|
1
|
+
import type { BrowserExecutable, FfmpegExecutable, TCompMetadata } from 'remotion';
|
|
2
|
+
import type { BrowserLog } from './browser-log';
|
|
3
|
+
import type { Browser } from './browser/Browser';
|
|
4
|
+
import type { ChromiumOptions } from './open-browser';
|
|
5
5
|
declare type GetCompositionsConfig = {
|
|
6
6
|
inputProps?: object | null;
|
|
7
7
|
envVariables?: Record<string, string>;
|
package/dist/get-compositions.js
CHANGED
|
@@ -14,8 +14,8 @@ const innerGetCompositions = async (serveUrl, page, config, proxyPort) => {
|
|
|
14
14
|
var _a;
|
|
15
15
|
(_a = config.onBrowserLog) === null || _a === void 0 ? void 0 : _a.call(config, {
|
|
16
16
|
stackTrace: log.stackTrace(),
|
|
17
|
-
text: log.text
|
|
18
|
-
type: log.type
|
|
17
|
+
text: log.text,
|
|
18
|
+
type: log.type,
|
|
19
19
|
});
|
|
20
20
|
});
|
|
21
21
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { FrameRange } from 'remotion';
|
|
1
|
+
import type { FrameRange } from 'remotion';
|
|
2
2
|
export declare const getDurationFromFrameRange: (frameRange: FrameRange | null, durationInFrames: number) => number;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { Codec } from 'remotion';
|
|
1
|
+
import type { Codec } from 'remotion';
|
|
2
2
|
export declare const getFileExtensionFromCodec: (codec: Codec, type: 'chunk' | 'final') => "mp3" | "aac" | "wav" | "mp4" | "mkv" | "mov" | "webm";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { FrameRange } from 'remotion';
|
|
1
|
+
import type { FrameRange } from 'remotion';
|
|
2
2
|
export declare const getRealFrameRange: (durationInFrames: number, frameRange: FrameRange | null) => [number, number];
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { Browser, BrowserExecutable } from 'remotion';
|
|
1
|
+
import type { Browser, BrowserExecutable } from 'remotion';
|
|
2
2
|
export declare const ensureLocalBrowser: (browser: Browser, preferredBrowserExecutable: BrowserExecutable) => Promise<void>;
|
|
3
3
|
export declare const getLocalBrowserExecutable: (browser: Browser, preferredBrowserExecutable: BrowserExecutable) => string;
|
|
@@ -5,9 +5,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.getLocalBrowserExecutable = exports.ensureLocalBrowser = void 0;
|
|
7
7
|
const fs_1 = __importDefault(require("fs"));
|
|
8
|
-
const
|
|
9
|
-
const
|
|
10
|
-
const revisions_1 = require("
|
|
8
|
+
const create_browser_fetcher_1 = require("./browser/create-browser-fetcher");
|
|
9
|
+
const node_1 = require("./browser/node");
|
|
10
|
+
const revisions_1 = require("./browser/revisions");
|
|
11
11
|
const getSearchPathsForProduct = (product) => {
|
|
12
12
|
var _a;
|
|
13
13
|
if (product === 'chrome') {
|
|
@@ -44,8 +44,10 @@ const getLocalBrowser = (product) => {
|
|
|
44
44
|
return null;
|
|
45
45
|
};
|
|
46
46
|
const getBrowserRevision = (product) => {
|
|
47
|
-
const browserFetcher =
|
|
47
|
+
const browserFetcher = node_1.puppeteer.createBrowserFetcher({
|
|
48
48
|
product,
|
|
49
|
+
path: null,
|
|
50
|
+
platform: null,
|
|
49
51
|
});
|
|
50
52
|
const revisionInfo = browserFetcher.revisionInfo(product === 'firefox'
|
|
51
53
|
? revisions_1.PUPPETEER_REVISIONS.firefox
|
|
@@ -73,7 +75,7 @@ const ensureLocalBrowser = async (browser, preferredBrowserExecutable) => {
|
|
|
73
75
|
const status = getBrowserStatus(mapBrowserToProduct(browser), preferredBrowserExecutable);
|
|
74
76
|
if (status.type === 'no-browser') {
|
|
75
77
|
console.log('No local browser could be found. Downloading one from the internet...');
|
|
76
|
-
await (0,
|
|
78
|
+
await (0, create_browser_fetcher_1.downloadBrowser)(browser);
|
|
77
79
|
}
|
|
78
80
|
};
|
|
79
81
|
exports.ensureLocalBrowser = ensureLocalBrowser;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { Codec, ProResProfile } from 'remotion';
|
|
1
|
+
import type { Codec, ProResProfile } from 'remotion';
|
|
2
2
|
export declare const getProResProfileName: (codec: Codec, proResProfile: ProResProfile | undefined) => string | null;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { FfmpegExecutable } from 'remotion';
|
|
2
|
+
declare type Result = {
|
|
3
|
+
specialVcodec: SpecialVCodecForTransparency;
|
|
4
|
+
needsResize: [number, number] | null;
|
|
5
|
+
};
|
|
6
|
+
export declare type SpecialVCodecForTransparency = 'vp9' | 'vp8' | 'none';
|
|
7
|
+
export declare const getVideoInfo: (src: string, ffprobeExecutable: FfmpegExecutable) => Promise<Result>;
|
|
8
|
+
export {};
|
|
@@ -0,0 +1,50 @@
|
|
|
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.getVideoInfo = void 0;
|
|
7
|
+
const execa_1 = __importDefault(require("execa"));
|
|
8
|
+
const calculate_sar_dar_pixels_1 = require("./calculate-sar-dar-pixels");
|
|
9
|
+
const p_limit_1 = require("./p-limit");
|
|
10
|
+
const isVp9VideoCache = {};
|
|
11
|
+
const limit = (0, p_limit_1.pLimit)(1);
|
|
12
|
+
async function getVideoInfoUnlimited(src, ffprobeExecutable) {
|
|
13
|
+
var _a;
|
|
14
|
+
if (typeof isVp9VideoCache[src] !== 'undefined') {
|
|
15
|
+
return isVp9VideoCache[src];
|
|
16
|
+
}
|
|
17
|
+
const task = await (0, execa_1.default)(ffprobeExecutable !== null && ffprobeExecutable !== void 0 ? ffprobeExecutable : 'ffprobe', [src]);
|
|
18
|
+
const isVp9 = task.stderr.includes('Video: vp9');
|
|
19
|
+
const isVp8 = task.stderr.includes('Video: vp8');
|
|
20
|
+
const dimensions = (_a = task.stderr
|
|
21
|
+
.split('\n')
|
|
22
|
+
.find((n) => n.trim().startsWith('Stream #'))) === null || _a === void 0 ? void 0 : _a.match(/([0-9]{2,6})x([0-9]{2,6})/);
|
|
23
|
+
const dar = task.stderr.match(/DAR\s([0-9]+):([0-9]+)/);
|
|
24
|
+
let needsResize = null;
|
|
25
|
+
if (dimensions && dar) {
|
|
26
|
+
const width = parseInt(dimensions[1], 10);
|
|
27
|
+
const height = parseInt(dimensions[2], 10);
|
|
28
|
+
const darWidth = parseInt(dar[1], 10);
|
|
29
|
+
const darHeight = parseInt(dar[2], 10);
|
|
30
|
+
const { width: actualWidth, height: actualHeight } = (0, calculate_sar_dar_pixels_1.calculateDisplayVideoSize)({
|
|
31
|
+
darX: darWidth,
|
|
32
|
+
darY: darHeight,
|
|
33
|
+
x: width,
|
|
34
|
+
y: height,
|
|
35
|
+
});
|
|
36
|
+
if (actualWidth !== width || actualHeight !== height) {
|
|
37
|
+
needsResize = [actualWidth, actualHeight];
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
const result = {
|
|
41
|
+
specialVcodec: isVp9 ? 'vp9' : isVp8 ? 'vp8' : 'none',
|
|
42
|
+
needsResize,
|
|
43
|
+
};
|
|
44
|
+
isVp9VideoCache[src] = result;
|
|
45
|
+
return isVp9VideoCache[src];
|
|
46
|
+
}
|
|
47
|
+
const getVideoInfo = (src, ffprobeExecutable) => {
|
|
48
|
+
return limit(() => getVideoInfoUnlimited(src, ffprobeExecutable));
|
|
49
|
+
};
|
|
50
|
+
exports.getVideoInfo = getVideoInfo;
|
package/dist/image-format.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { ImageFormat } from 'remotion';
|
|
1
|
+
import type { ImageFormat } from 'remotion';
|
|
2
2
|
export declare const DEFAULT_IMAGE_FORMAT: ImageFormat;
|
package/dist/is-vp9-video.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { FfmpegExecutable } from 'remotion';
|
|
1
|
+
import type { FfmpegExecutable } from 'remotion';
|
|
2
2
|
export declare type SpecialVCodecForTransparency = 'vp9' | 'vp8' | 'none';
|
|
3
3
|
export declare const getSpecialVCodecForTransparency: (src: string, ffprobeExecutable: FfmpegExecutable) => Promise<SpecialVCodecForTransparency>;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
|
-
import { FfmpegExecutable, OffthreadVideoImageFormat } from 'remotion';
|
|
3
|
-
import { SpecialVCodecForTransparency } from './
|
|
2
|
+
import type { FfmpegExecutable, OffthreadVideoImageFormat } from 'remotion';
|
|
3
|
+
import type { SpecialVCodecForTransparency } from './get-video-info';
|
|
4
4
|
export declare type LastFrameOptions = {
|
|
5
5
|
ffmpegExecutable: FfmpegExecutable;
|
|
6
6
|
ffprobeExecutable: FfmpegExecutable;
|
|
@@ -8,6 +8,7 @@ export declare type LastFrameOptions = {
|
|
|
8
8
|
src: string;
|
|
9
9
|
specialVCodecForTransparency: SpecialVCodecForTransparency;
|
|
10
10
|
imageFormat: OffthreadVideoImageFormat;
|
|
11
|
+
needsResize: [number, number] | null;
|
|
11
12
|
};
|
|
12
13
|
export declare const setLastFrameInCache: (options: LastFrameOptions, data: Buffer) => void;
|
|
13
14
|
export declare const getLastFrameFromCache: (options: LastFrameOptions) => Buffer | null;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { RequestListener } from 'http';
|
|
2
|
-
import { FfmpegExecutable, OffthreadVideoImageFormat } from 'remotion';
|
|
3
|
-
import { RenderMediaOnDownload } from './assets/download-and-map-assets-to-file';
|
|
1
|
+
import type { RequestListener } from 'http';
|
|
2
|
+
import type { FfmpegExecutable, OffthreadVideoImageFormat } from 'remotion';
|
|
3
|
+
import type { 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;
|
package/dist/open-browser.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import
|
|
2
|
-
import { Browser } from '
|
|
1
|
+
import type { Browser } from 'remotion';
|
|
2
|
+
import type { Browser as PuppeteerBrowser } from './browser/Browser';
|
|
3
|
+
import type { Viewport } from './browser/PuppeteerViewport';
|
|
3
4
|
declare const validRenderers: readonly ["swangle", "angle", "egl", "swiftshader"];
|
|
4
5
|
declare type OpenGlRenderer = typeof validRenderers[number];
|
|
5
6
|
export declare type ChromiumOptions = {
|
|
@@ -14,5 +15,6 @@ export declare const openBrowser: (browser: Browser, options?: {
|
|
|
14
15
|
browserExecutable?: string | null;
|
|
15
16
|
chromiumOptions?: ChromiumOptions;
|
|
16
17
|
forceDeviceScaleFactor?: number;
|
|
17
|
-
|
|
18
|
+
viewport?: Viewport;
|
|
19
|
+
}) => Promise<PuppeteerBrowser>;
|
|
18
20
|
export {};
|
package/dist/open-browser.js
CHANGED
|
@@ -7,8 +7,8 @@ exports.openBrowser = exports.killAllBrowsers = void 0;
|
|
|
7
7
|
const fs_1 = __importDefault(require("fs"));
|
|
8
8
|
const os_1 = __importDefault(require("os"));
|
|
9
9
|
const path_1 = __importDefault(require("path"));
|
|
10
|
-
const puppeteer_core_1 = __importDefault(require("puppeteer-core"));
|
|
11
10
|
const remotion_1 = require("remotion");
|
|
11
|
+
const node_1 = require("./browser/node");
|
|
12
12
|
const get_local_browser_executable_1 = require("./get-local-browser-executable");
|
|
13
13
|
const validRenderers = ['swangle', 'angle', 'egl', 'swiftshader'];
|
|
14
14
|
const getOpenGlRenderer = (option) => {
|
|
@@ -33,18 +33,17 @@ const killAllBrowsers = async () => {
|
|
|
33
33
|
};
|
|
34
34
|
exports.killAllBrowsers = killAllBrowsers;
|
|
35
35
|
const openBrowser = async (browser, options) => {
|
|
36
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
|
36
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
37
37
|
if (browser === 'firefox' && !remotion_1.Internals.FEATURE_FLAG_FIREFOX_SUPPORT) {
|
|
38
38
|
throw new TypeError('Firefox supported is not yet turned on. Stay tuned for the future.');
|
|
39
39
|
}
|
|
40
40
|
await (0, get_local_browser_executable_1.ensureLocalBrowser)(browser, (_a = options === null || options === void 0 ? void 0 : options.browserExecutable) !== null && _a !== void 0 ? _a : null);
|
|
41
41
|
const executablePath = (0, get_local_browser_executable_1.getLocalBrowserExecutable)(browser, (_b = options === null || options === void 0 ? void 0 : options.browserExecutable) !== null && _b !== void 0 ? _b : null);
|
|
42
42
|
const customGlRenderer = getOpenGlRenderer((_d = (_c = options === null || options === void 0 ? void 0 : options.chromiumOptions) === null || _c === void 0 ? void 0 : _c.gl) !== null && _d !== void 0 ? _d : null);
|
|
43
|
-
const browserInstance = await
|
|
43
|
+
const browserInstance = await node_1.puppeteer.launch({
|
|
44
44
|
executablePath,
|
|
45
45
|
product: browser,
|
|
46
46
|
dumpio: (_e = options === null || options === void 0 ? void 0 : options.shouldDumpIo) !== null && _e !== void 0 ? _e : false,
|
|
47
|
-
ignoreDefaultArgs: true,
|
|
48
47
|
args: [
|
|
49
48
|
'about:blank',
|
|
50
49
|
'--allow-pre-commit-input',
|
|
@@ -61,8 +60,6 @@ const openBrowser = async (browser, options) => {
|
|
|
61
60
|
'--no-proxy-server',
|
|
62
61
|
"--proxy-server='direct://'",
|
|
63
62
|
'--proxy-bypass-list=*',
|
|
64
|
-
// TODO: remove AvoidUnnecessaryBeforeUnloadCheckSync below
|
|
65
|
-
// once crbug.com/1324138 is fixed and released.
|
|
66
63
|
'--disable-hang-monitor',
|
|
67
64
|
'--disable-ipc-flooding-protection',
|
|
68
65
|
'--disable-popup-blocking',
|
|
@@ -76,8 +73,6 @@ const openBrowser = async (browser, options) => {
|
|
|
76
73
|
'--enable-automation',
|
|
77
74
|
'--password-store=basic',
|
|
78
75
|
'--use-mock-keychain',
|
|
79
|
-
// TODO(sadym): remove '--enable-blink-features=IdleDetection'
|
|
80
|
-
// once IdleDetection is turned on by default.
|
|
81
76
|
'--enable-blink-features=IdleDetection',
|
|
82
77
|
'--export-tagged-pdf',
|
|
83
78
|
'--intensive-wake-up-throttling-policy=0',
|
|
@@ -113,6 +108,11 @@ const openBrowser = async (browser, options) => {
|
|
|
113
108
|
]
|
|
114
109
|
: []),
|
|
115
110
|
].filter(Boolean),
|
|
111
|
+
defaultViewport: (_k = options === null || options === void 0 ? void 0 : options.viewport) !== null && _k !== void 0 ? _k : {
|
|
112
|
+
height: 720,
|
|
113
|
+
width: 1280,
|
|
114
|
+
deviceScaleFactor: 1,
|
|
115
|
+
},
|
|
116
116
|
});
|
|
117
117
|
const pages = await browserInstance.pages();
|
|
118
118
|
await pages[0].close();
|
package/dist/prepare-server.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { FfmpegExecutable } from 'remotion';
|
|
2
|
-
import { RenderMediaOnDownload } from './assets/download-and-map-assets-to-file';
|
|
1
|
+
import type { FfmpegExecutable } from 'remotion';
|
|
2
|
+
import type { RenderMediaOnDownload } from './assets/download-and-map-assets-to-file';
|
|
3
3
|
export declare const prepareServer: ({ downloadDir, ffmpegExecutable, ffprobeExecutable, onDownload, onError, webpackConfigOrServeUrl, port, }: {
|
|
4
4
|
webpackConfigOrServeUrl: string;
|
|
5
5
|
downloadDir: string;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { FfmpegExecutable } from 'remotion';
|
|
2
|
-
import { MediaAsset } from './assets/types';
|
|
1
|
+
import type { FfmpegExecutable } from 'remotion';
|
|
2
|
+
import type { MediaAsset } from './assets/types';
|
|
3
3
|
declare type Options = {
|
|
4
4
|
ffmpegExecutable: FfmpegExecutable;
|
|
5
5
|
ffprobeExecutable: FfmpegExecutable;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import execa from 'execa';
|
|
2
|
-
import { Codec, FfmpegExecutable, ImageFormat, PixelFormat, ProResProfile } from 'remotion';
|
|
3
|
-
import { CancelSignal } from './make-cancel-signal';
|
|
2
|
+
import type { Codec, FfmpegExecutable, ImageFormat, PixelFormat, ProResProfile } from 'remotion';
|
|
3
|
+
import type { CancelSignal } from './make-cancel-signal';
|
|
4
4
|
declare type PreSticherOptions = {
|
|
5
5
|
fps: number;
|
|
6
6
|
width: number;
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
|
-
import
|
|
3
|
-
import {
|
|
2
|
+
import type { ImageFormat } from 'remotion';
|
|
3
|
+
import type { Page } from './browser/Page';
|
|
4
4
|
export declare const provideScreenshot: ({ page, imageFormat, options, quality, }: {
|
|
5
|
-
page:
|
|
5
|
+
page: Page;
|
|
6
6
|
imageFormat: ImageFormat;
|
|
7
7
|
quality: number | undefined;
|
|
8
8
|
options: {
|
|
9
9
|
frame: number;
|
|
10
|
-
output
|
|
10
|
+
output: string | null;
|
|
11
11
|
};
|
|
12
12
|
}) => Promise<Buffer>;
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.puppeteerEvaluateWithCatch = void 0;
|
|
4
|
-
|
|
5
|
-
const puppeteer_core_1 = require("puppeteer-core");
|
|
4
|
+
const JSHandle_1 = require("./browser/JSHandle");
|
|
6
5
|
const symbolicateable_error_1 = require("./error-handling/symbolicateable-error");
|
|
7
6
|
const parse_browser_error_stack_1 = require("./parse-browser-error-stack");
|
|
8
7
|
const EVALUATION_SCRIPT_URL = '__puppeteer_evaluation_script__';
|
|
@@ -33,7 +32,7 @@ function isString(obj) {
|
|
|
33
32
|
async function puppeteerEvaluateWithCatch({ page, pageFunction, frame, args, }) {
|
|
34
33
|
var _a, _b, _c, _d, _e, _f, _g;
|
|
35
34
|
const contextId = (await page.mainFrame().executionContext())._contextId;
|
|
36
|
-
const client = page._client;
|
|
35
|
+
const client = page._client();
|
|
37
36
|
const suffix = `//# sourceURL=${EVALUATION_SCRIPT_URL}`;
|
|
38
37
|
if (isString(pageFunction)) {
|
|
39
38
|
const expression = pageFunction;
|
|
@@ -140,7 +139,7 @@ function convertArgument(arg) {
|
|
|
140
139
|
return { unserializableValue: '-Infinity' };
|
|
141
140
|
if (Object.is(arg, NaN))
|
|
142
141
|
return { unserializableValue: 'NaN' };
|
|
143
|
-
const objectHandle = arg && arg instanceof
|
|
142
|
+
const objectHandle = arg && arg instanceof JSHandle_1.JSHandle ? arg : null;
|
|
144
143
|
if (objectHandle) {
|
|
145
144
|
if (objectHandle._disposed)
|
|
146
145
|
throw new Error('JSHandle is disposed!');
|
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
|
-
import { Page
|
|
3
|
-
|
|
2
|
+
import type { Page } from './browser/Page';
|
|
3
|
+
import type { ScreenshotOptions } from './browser/ScreenshotOptions';
|
|
4
|
+
export declare const screenshot: (page: Page, options: ScreenshotOptions) => Promise<Buffer | string | void>;
|
|
@@ -26,7 +26,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
26
26
|
exports.screenshot = void 0;
|
|
27
27
|
const assert = __importStar(require("assert"));
|
|
28
28
|
const screenshot_task_1 = require("./screenshot-task");
|
|
29
|
-
const screenshot = (page, options
|
|
29
|
+
const screenshot = (page, options) => {
|
|
30
30
|
let screenshotType = null;
|
|
31
31
|
// options.type takes precedence over inferring the type from options.path
|
|
32
32
|
// because it may be a 0-length file with no extension created beforehand
|
|
@@ -58,7 +58,6 @@ const screenshot = (page, options = {}) => {
|
|
|
58
58
|
assert.ok(options.quality >= 0 && options.quality <= 100, 'Expected options.quality to be between 0 and 100 (inclusive), got ' +
|
|
59
59
|
options.quality);
|
|
60
60
|
}
|
|
61
|
-
assert.ok(!options.clip || !options.fullPage, 'options.clip and options.fullPage are exclusive');
|
|
62
61
|
if (options.clip) {
|
|
63
62
|
assert.ok(typeof options.clip.x === 'number', 'Expected options.clip.x to be a number but found ' +
|
|
64
63
|
typeof options.clip.x);
|
|
@@ -71,7 +70,6 @@ const screenshot = (page, options = {}) => {
|
|
|
71
70
|
assert.ok(options.clip.width !== 0, 'Expected options.clip.width not to be 0.');
|
|
72
71
|
assert.ok(options.clip.height !== 0, 'Expected options.clip.height not to be 0.');
|
|
73
72
|
}
|
|
74
|
-
|
|
75
|
-
return page._screenshotTaskQueue.postTask(() => (0, screenshot_task_1._screenshotTask)(page, screenshotType, options));
|
|
73
|
+
return page.screenshotTaskQueue.postTask(() => (0, screenshot_task_1._screenshotTask)(page, screenshotType, options));
|
|
76
74
|
};
|
|
77
75
|
exports.screenshot = screenshot;
|
package/dist/render-frames.d.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import { ServeUrlOrWebpackBundle } from './legacy-webpack-config';
|
|
7
|
-
import { CancelSignal } from './make-cancel-signal';
|
|
8
|
-
import { ChromiumOptions } from './open-browser';
|
|
9
|
-
import { OnStartData, RenderFramesOutput } from './types';
|
|
2
|
+
import type { BrowserExecutable, FfmpegExecutable, FrameRange, ImageFormat, SmallTCompMetadata } from 'remotion';
|
|
3
|
+
import type { RenderMediaOnDownload } from './assets/download-and-map-assets-to-file';
|
|
4
|
+
import type { BrowserLog } from './browser-log';
|
|
5
|
+
import type { Browser } from './browser/Browser';
|
|
6
|
+
import type { ServeUrlOrWebpackBundle } from './legacy-webpack-config';
|
|
7
|
+
import type { CancelSignal } from './make-cancel-signal';
|
|
8
|
+
import type { ChromiumOptions } from './open-browser';
|
|
9
|
+
import type { OnStartData, RenderFramesOutput } from './types';
|
|
10
10
|
declare type ConfigOrComposition = {
|
|
11
11
|
/**
|
|
12
12
|
* @deprecated This field has been renamed to `composition`
|
|
@@ -26,7 +26,7 @@ declare type RenderFramesOptions = {
|
|
|
26
26
|
quality?: number;
|
|
27
27
|
frameRange?: FrameRange | null;
|
|
28
28
|
dumpBrowserLogs?: boolean;
|
|
29
|
-
puppeteerInstance?:
|
|
29
|
+
puppeteerInstance?: Browser;
|
|
30
30
|
browserExecutable?: BrowserExecutable;
|
|
31
31
|
onBrowserLog?: (log: BrowserLog) => void;
|
|
32
32
|
onFrameBuffer?: (buffer: Buffer, frame: number) => void;
|