@remotion/renderer 4.0.0-alpha13 → 4.0.0-alpha16

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.
Files changed (103) hide show
  1. package/dist/assets/download-and-map-assets-to-file.d.ts +6 -4
  2. package/dist/assets/download-and-map-assets-to-file.js +30 -6
  3. package/dist/assets/download-file.d.ts +2 -2
  4. package/dist/assets/download-map.d.ts +3 -3
  5. package/dist/assets/ffmpeg-volume-expression.d.ts +2 -2
  6. package/dist/assets/get-audio-channels.d.ts +1 -0
  7. package/dist/assets/get-audio-channels.js +10 -5
  8. package/dist/assets/read-file.js +1 -1
  9. package/dist/assets/types.d.ts +4 -4
  10. package/dist/audio-codec.d.ts +2 -2
  11. package/dist/browser/Browser.d.ts +9 -9
  12. package/dist/browser/Browser.js +26 -32
  13. package/dist/browser/BrowserFetcher.d.ts +1 -1
  14. package/dist/browser/BrowserPage.d.ts +11 -2
  15. package/dist/browser/BrowserPage.js +47 -12
  16. package/dist/browser/BrowserRunner.js +19 -2
  17. package/dist/browser/ConsoleMessage.d.ts +1 -1
  18. package/dist/browser/DOMWorld.js +8 -8
  19. package/dist/browser/EvalTypes.d.ts +7 -7
  20. package/dist/browser/FrameManager.js +11 -11
  21. package/dist/browser/JSHandle.js +14 -14
  22. package/dist/browser/LaunchOptions.d.ts +1 -1
  23. package/dist/browser/Launcher.js +0 -1
  24. package/dist/browser/LifecycleWatcher.d.ts +1 -1
  25. package/dist/browser/NetworkEventManager.d.ts +4 -4
  26. package/dist/browser/NodeWebSocketTransport.js +16 -16
  27. package/dist/browser/Product.d.ts +1 -1
  28. package/dist/browser/Target.d.ts +2 -1
  29. package/dist/browser/Target.js +8 -2
  30. package/dist/browser/devtools-types.d.ts +10 -10
  31. package/dist/browser/mitt/index.d.ts +6 -6
  32. package/dist/browser/revisions.d.ts +1 -1
  33. package/dist/browser/should-log-message.d.ts +24 -0
  34. package/dist/browser/should-log-message.js +72 -0
  35. package/dist/browser-executable.d.ts +1 -1
  36. package/dist/browser-log.d.ts +1 -1
  37. package/dist/browser.d.ts +1 -1
  38. package/dist/chalk/index.d.ts +4 -4
  39. package/dist/codec-supports-media.d.ts +1 -1
  40. package/dist/codec.d.ts +2 -2
  41. package/dist/combine-videos.d.ts +1 -1
  42. package/dist/compositor/compose.d.ts +11 -2
  43. package/dist/compositor/compose.js +15 -4
  44. package/dist/compositor/compositor.d.ts +1 -1
  45. package/dist/compositor/compositor.js +19 -7
  46. package/dist/compositor/payloads.d.ts +5 -5
  47. package/dist/crf.d.ts +1 -1
  48. package/dist/error-handling/symbolicate-error.js +4 -2
  49. package/dist/ffmpeg-override.d.ts +1 -1
  50. package/dist/file-extensions.d.ts +1 -1
  51. package/dist/frame-range.d.ts +1 -1
  52. package/dist/get-browser-instance.d.ts +6 -1
  53. package/dist/get-browser-instance.js +9 -4
  54. package/dist/get-compositions.d.ts +18 -11
  55. package/dist/get-compositions.js +66 -49
  56. package/dist/get-frame-padded-index.d.ts +1 -1
  57. package/dist/image-format.d.ts +3 -3
  58. package/dist/index.d.ts +106 -16
  59. package/dist/index.js +25 -13
  60. package/dist/jpeg-quality.d.ts +1 -0
  61. package/dist/jpeg-quality.js +2 -1
  62. package/dist/log-level.d.ts +1 -1
  63. package/dist/logger.d.ts +5 -3
  64. package/dist/logger.js +12 -5
  65. package/dist/make-cancel-signal.d.ts +2 -2
  66. package/dist/merge-audio-track.d.ts +1 -1
  67. package/dist/mime-types.js +1 -1
  68. package/dist/offthread-video-server.d.ts +36 -4
  69. package/dist/offthread-video-server.js +48 -4
  70. package/dist/open-browser.d.ts +19 -10
  71. package/dist/open-browser.js +34 -21
  72. package/dist/options/option.d.ts +1 -1
  73. package/dist/parse-browser-error-stack.d.ts +1 -1
  74. package/dist/perf.d.ts +1 -1
  75. package/dist/pixel-format.d.ts +1 -1
  76. package/dist/prepare-server.d.ts +20 -8
  77. package/dist/prepare-server.js +52 -8
  78. package/dist/preprocess-audio-track.d.ts +2 -2
  79. package/dist/prespawn-ffmpeg.d.ts +1 -1
  80. package/dist/prespawn-ffmpeg.js +7 -7
  81. package/dist/prores-profile.d.ts +1 -1
  82. package/dist/puppeteer-screenshot.js +1 -2
  83. package/dist/render-frames.d.ts +32 -11
  84. package/dist/render-frames.js +112 -77
  85. package/dist/render-media.d.ts +50 -21
  86. package/dist/render-media.js +249 -197
  87. package/dist/render-still.d.ts +33 -18
  88. package/dist/render-still.js +71 -43
  89. package/dist/replace-browser.d.ts +1 -1
  90. package/dist/select-composition.d.ts +19 -11
  91. package/dist/select-composition.js +79 -42
  92. package/dist/serve-static.d.ts +2 -3
  93. package/dist/serve-static.js +2 -4
  94. package/dist/set-props-and-env.d.ts +1 -1
  95. package/dist/stitch-frames-to-video.d.ts +32 -10
  96. package/dist/stitch-frames-to-video.js +121 -99
  97. package/dist/stringify-ffmpeg-filter.d.ts +2 -2
  98. package/dist/symbolicate-stacktrace.d.ts +16 -3
  99. package/dist/symbolicate-stacktrace.js +49 -24
  100. package/dist/truthy.d.ts +1 -1
  101. package/dist/types.d.ts +2 -2
  102. package/dist/validate-opengl-renderer.d.ts +1 -1
  103. package/package.json +11 -11
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.openBrowser = exports.killAllBrowsers = void 0;
3
+ exports.openBrowser = exports.internalOpenBrowser = exports.killAllBrowsers = void 0;
4
4
  const node_1 = require("./browser/node");
5
5
  const get_local_browser_executable_1 = require("./get-local-browser-executable");
6
6
  const get_video_threads_flag_1 = require("./get-video-threads-flag");
@@ -27,23 +27,19 @@ const killAllBrowsers = async () => {
27
27
  }
28
28
  };
29
29
  exports.killAllBrowsers = killAllBrowsers;
30
- /**
31
- * @description Opens a Chrome or Chromium browser instance.
32
- * @see [Documentation](https://www.remotion.dev/docs/renderer/open-browser)
33
- */
34
- const openBrowser = async (browser, options) => {
35
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
30
+ const internalOpenBrowser = async ({ browser, browserExecutable, chromiumOptions, forceDeviceScaleFactor, indent, shouldDumpIo, viewport, }) => {
31
+ var _a, _b;
36
32
  if (browser === 'firefox') {
37
33
  throw new TypeError('Firefox supported is not yet turned on. Stay tuned for the future.');
38
34
  }
39
- 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);
40
- 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);
41
- 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);
35
+ await (0, get_local_browser_executable_1.ensureLocalBrowser)(browser, browserExecutable);
36
+ const executablePath = (0, get_local_browser_executable_1.getLocalBrowserExecutable)(browser, browserExecutable);
37
+ const customGlRenderer = getOpenGlRenderer((_a = chromiumOptions.gl) !== null && _a !== void 0 ? _a : null);
42
38
  const browserInstance = await node_1.puppeteer.launch({
43
39
  executablePath,
44
40
  product: browser,
45
- dumpio: (_e = options === null || options === void 0 ? void 0 : options.shouldDumpIo) !== null && _e !== void 0 ? _e : false,
46
- indent: (_f = options === null || options === void 0 ? void 0 : options.indent) !== null && _f !== void 0 ? _f : false,
41
+ dumpio: shouldDumpIo,
42
+ indent,
47
43
  args: [
48
44
  'about:blank',
49
45
  '--allow-pre-commit-input',
@@ -76,7 +72,7 @@ const openBrowser = async (browser, options) => {
76
72
  '--enable-blink-features=IdleDetection',
77
73
  '--export-tagged-pdf',
78
74
  '--intensive-wake-up-throttling-policy=0',
79
- ((_h = (_g = options === null || options === void 0 ? void 0 : options.chromiumOptions) === null || _g === void 0 ? void 0 : _g.headless) !== null && _h !== void 0 ? _h : true) ? '--headless' : null,
75
+ ((_b = chromiumOptions.headless) !== null && _b !== void 0 ? _b : true) ? '--headless' : null,
80
76
  '--no-sandbox',
81
77
  '--disable-setuid-sandbox',
82
78
  ...customGlRenderer,
@@ -94,20 +90,20 @@ const openBrowser = async (browser, options) => {
94
90
  '--no-pings',
95
91
  '--font-render-hinting=none',
96
92
  '--no-zygote',
97
- (options === null || options === void 0 ? void 0 : options.forceDeviceScaleFactor)
98
- ? `--force-device-scale-factor=${options.forceDeviceScaleFactor}`
99
- : null,
100
- ((_j = options === null || options === void 0 ? void 0 : options.chromiumOptions) === null || _j === void 0 ? void 0 : _j.ignoreCertificateErrors)
93
+ typeof forceDeviceScaleFactor === 'undefined'
94
+ ? null
95
+ : `--force-device-scale-factor=${forceDeviceScaleFactor}`,
96
+ chromiumOptions.ignoreCertificateErrors
101
97
  ? '--ignore-certificate-errors'
102
98
  : null,
103
- ...(((_k = options === null || options === void 0 ? void 0 : options.chromiumOptions) === null || _k === void 0 ? void 0 : _k.disableWebSecurity)
99
+ ...((chromiumOptions === null || chromiumOptions === void 0 ? void 0 : chromiumOptions.disableWebSecurity)
104
100
  ? ['--disable-web-security']
105
101
  : []),
106
- ((_l = options === null || options === void 0 ? void 0 : options.chromiumOptions) === null || _l === void 0 ? void 0 : _l.userAgent)
107
- ? `--user-agent="${options.chromiumOptions.userAgent}"`
102
+ (chromiumOptions === null || chromiumOptions === void 0 ? void 0 : chromiumOptions.userAgent)
103
+ ? `--user-agent="${chromiumOptions.userAgent}"`
108
104
  : null,
109
105
  ].filter(Boolean),
110
- defaultViewport: (_m = options === null || options === void 0 ? void 0 : options.viewport) !== null && _m !== void 0 ? _m : {
106
+ defaultViewport: viewport !== null && viewport !== void 0 ? viewport : {
111
107
  height: 720,
112
108
  width: 1280,
113
109
  deviceScaleFactor: 1,
@@ -118,4 +114,21 @@ const openBrowser = async (browser, options) => {
118
114
  browserInstances.push(browserInstance);
119
115
  return browserInstance;
120
116
  };
117
+ exports.internalOpenBrowser = internalOpenBrowser;
118
+ /**
119
+ * @description Opens a Chrome or Chromium browser instance.
120
+ * @see [Documentation](https://www.remotion.dev/docs/renderer/open-browser)
121
+ */
122
+ const openBrowser = (browser, options) => {
123
+ const { browserExecutable, chromiumOptions, forceDeviceScaleFactor, shouldDumpIo, } = options !== null && options !== void 0 ? options : {};
124
+ return (0, exports.internalOpenBrowser)({
125
+ browser,
126
+ browserExecutable: browserExecutable !== null && browserExecutable !== void 0 ? browserExecutable : null,
127
+ chromiumOptions: chromiumOptions !== null && chromiumOptions !== void 0 ? chromiumOptions : {},
128
+ forceDeviceScaleFactor,
129
+ indent: false,
130
+ shouldDumpIo: shouldDumpIo !== null && shouldDumpIo !== void 0 ? shouldDumpIo : false,
131
+ viewport: null,
132
+ });
133
+ };
121
134
  exports.openBrowser = openBrowser;
@@ -1,5 +1,5 @@
1
1
  import type React from 'react';
2
- export declare type RemotionOption = {
2
+ export type RemotionOption = {
3
3
  name: string;
4
4
  cliFlag: string;
5
5
  ssrName: string;
@@ -1,4 +1,4 @@
1
- export declare type UnsymbolicatedStackFrame = {
1
+ export type UnsymbolicatedStackFrame = {
2
2
  functionName: string | null;
3
3
  fileName: string;
4
4
  lineNumber: number;
package/dist/perf.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- declare type PerfId = 'activate-target' | 'capture' | 'save' | 'extract-frame' | 'piping';
1
+ type PerfId = 'activate-target' | 'capture' | 'save' | 'extract-frame' | 'piping';
2
2
  export declare const startPerfMeasure: (marker: PerfId) => number;
3
3
  export declare const stopPerfMeasure: (id: number) => void;
4
4
  export declare const getPerf: () => string[];
@@ -1,5 +1,5 @@
1
1
  import type { Codec } from './codec';
2
2
  export declare const validPixelFormats: readonly ["yuv420p", "yuva420p", "yuv422p", "yuv444p", "yuv420p10le", "yuv422p10le", "yuv444p10le", "yuva444p10le"];
3
- export declare type PixelFormat = typeof validPixelFormats[number];
3
+ export type PixelFormat = typeof validPixelFormats[number];
4
4
  export declare const DEFAULT_PIXEL_FORMAT: PixelFormat;
5
5
  export declare const validateSelectedPixelFormatAndCodecCombination: (pixelFormat: PixelFormat | undefined, codec: Codec) => undefined;
@@ -1,19 +1,31 @@
1
1
  import type { RenderMediaOnDownload } from './assets/download-and-map-assets-to-file';
2
2
  import type { DownloadMap } from './assets/download-map';
3
3
  import type { Compositor } from './compositor/compositor';
4
- export declare const prepareServer: ({ onDownload, onError, webpackConfigOrServeUrl, port, downloadMap, remotionRoot, concurrency, verbose, indent, }: {
4
+ import type { OffthreadVideoServerEmitter } from './offthread-video-server';
5
+ import type { AnySourceMapConsumer } from './symbolicate-stacktrace';
6
+ export type RemotionServer = {
7
+ serveUrl: string;
8
+ closeServer: (force: boolean) => Promise<unknown>;
9
+ offthreadPort: number;
10
+ compositor: Compositor;
11
+ sourceMap: AnySourceMapConsumer | null;
12
+ events: OffthreadVideoServerEmitter;
13
+ downloadMap: DownloadMap;
14
+ };
15
+ type PrepareServerOptions = {
5
16
  webpackConfigOrServeUrl: string;
6
- onDownload: RenderMediaOnDownload;
7
- onError: (err: Error) => void;
8
17
  port: number | null;
9
- downloadMap: DownloadMap;
10
18
  remotionRoot: string;
11
19
  concurrency: number;
12
20
  verbose: boolean;
13
21
  indent: boolean;
22
+ };
23
+ export declare const prepareServer: ({ webpackConfigOrServeUrl, port, remotionRoot, concurrency, verbose, indent, }: PrepareServerOptions) => Promise<RemotionServer>;
24
+ export declare const makeOrReuseServer: (server: RemotionServer | undefined, config: PrepareServerOptions, { onDownload, onError, }: {
25
+ onError: (err: Error) => void;
26
+ onDownload: RenderMediaOnDownload | null;
14
27
  }) => Promise<{
15
- serveUrl: string;
16
- closeServer: (force: boolean) => Promise<unknown>;
17
- offthreadPort: number;
18
- compositor: Compositor;
28
+ server: RemotionServer;
29
+ cleanupServer: (force: boolean) => Promise<unknown>;
19
30
  }>;
31
+ export {};
@@ -3,17 +3,22 @@ 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.prepareServer = void 0;
6
+ exports.makeOrReuseServer = exports.prepareServer = void 0;
7
7
  const node_fs_1 = require("node:fs");
8
8
  const node_path_1 = __importDefault(require("node:path"));
9
+ const remotion_1 = require("remotion");
10
+ const download_and_map_assets_to_file_1 = require("./assets/download-and-map-assets-to-file");
11
+ const download_map_1 = require("./assets/download-map");
9
12
  const is_serve_url_1 = require("./is-serve-url");
13
+ const logger_1 = require("./logger");
10
14
  const serve_static_1 = require("./serve-static");
15
+ const symbolicate_stacktrace_1 = require("./symbolicate-stacktrace");
11
16
  const wait_for_symbolication_error_to_be_done_1 = require("./wait-for-symbolication-error-to-be-done");
12
- const prepareServer = async ({ onDownload, onError, webpackConfigOrServeUrl, port, downloadMap, remotionRoot, concurrency, verbose, indent, }) => {
17
+ const prepareServer = async ({ webpackConfigOrServeUrl, port, remotionRoot, concurrency, verbose, indent, }) => {
18
+ const downloadMap = (0, download_map_1.makeDownloadMap)();
19
+ logger_1.Log.verboseAdvanced({ indent, logLevel: verbose ? 'verbose' : 'info' }, 'Created directory for temporary files', downloadMap.assetDir);
13
20
  if ((0, is_serve_url_1.isServeUrl)(webpackConfigOrServeUrl)) {
14
- const { port: offthreadPort, close: closeProxy, compositor: comp, } = await (0, serve_static_1.serveStatic)(null, {
15
- onDownload,
16
- onError,
21
+ const { port: offthreadPort, close: closeProxy, compositor: comp, events, } = await (0, serve_static_1.serveStatic)(null, {
17
22
  port,
18
23
  downloadMap,
19
24
  remotionRoot,
@@ -24,10 +29,14 @@ const prepareServer = async ({ onDownload, onError, webpackConfigOrServeUrl, por
24
29
  return Promise.resolve({
25
30
  serveUrl: webpackConfigOrServeUrl,
26
31
  closeServer: () => {
32
+ (0, download_map_1.cleanDownloadMap)(downloadMap);
27
33
  return closeProxy();
28
34
  },
29
35
  offthreadPort,
30
36
  compositor: comp,
37
+ sourceMap: null,
38
+ events,
39
+ downloadMap,
31
40
  });
32
41
  }
33
42
  // Check if the path has a `index.html` file
@@ -36,9 +45,8 @@ const prepareServer = async ({ onDownload, onError, webpackConfigOrServeUrl, por
36
45
  if (!exists) {
37
46
  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?`);
38
47
  }
39
- const { port: serverPort, close, compositor, } = await (0, serve_static_1.serveStatic)(webpackConfigOrServeUrl, {
40
- onDownload,
41
- onError,
48
+ const sourceMap = (0, symbolicate_stacktrace_1.getSourceMapFromLocalFile)(node_path_1.default.join(webpackConfigOrServeUrl, remotion_1.Internals.bundleName));
49
+ const { port: serverPort, close, compositor, events: newEvents, } = await (0, serve_static_1.serveStatic)(webpackConfigOrServeUrl, {
42
50
  port,
43
51
  downloadMap,
44
52
  remotionRoot,
@@ -48,6 +56,8 @@ const prepareServer = async ({ onDownload, onError, webpackConfigOrServeUrl, por
48
56
  });
49
57
  return Promise.resolve({
50
58
  closeServer: async (force) => {
59
+ sourceMap.then((s) => s === null || s === void 0 ? void 0 : s.destroy());
60
+ (0, download_map_1.cleanDownloadMap)(downloadMap);
51
61
  if (!force) {
52
62
  await (0, wait_for_symbolication_error_to_be_done_1.waitForSymbolicationToBeDone)();
53
63
  }
@@ -56,6 +66,40 @@ const prepareServer = async ({ onDownload, onError, webpackConfigOrServeUrl, por
56
66
  serveUrl: `http://localhost:${serverPort}`,
57
67
  offthreadPort: serverPort,
58
68
  compositor,
69
+ sourceMap: await sourceMap,
70
+ events: newEvents,
71
+ downloadMap,
59
72
  });
60
73
  };
61
74
  exports.prepareServer = prepareServer;
75
+ const makeOrReuseServer = async (server, config, { onDownload, onError, }) => {
76
+ if (server) {
77
+ const cleanupOnDownload = (0, download_and_map_assets_to_file_1.attachDownloadListenerToEmitter)(server.events, onDownload);
78
+ const cleanupError = server.events.addEventListener('error', ({ detail: { error } }) => {
79
+ onError(error);
80
+ });
81
+ return {
82
+ server,
83
+ cleanupServer: () => {
84
+ cleanupOnDownload();
85
+ cleanupError();
86
+ return Promise.resolve();
87
+ },
88
+ };
89
+ }
90
+ const newServer = await (0, exports.prepareServer)(config);
91
+ const cleanupOnDownloadNew = (0, download_and_map_assets_to_file_1.attachDownloadListenerToEmitter)(newServer.events, onDownload);
92
+ const cleanupErrorNew = newServer.events.addEventListener('error', ({ detail: { error } }) => {
93
+ onError(error);
94
+ });
95
+ return {
96
+ server: newServer,
97
+ cleanupServer: (force) => {
98
+ newServer.closeServer(force);
99
+ cleanupOnDownloadNew();
100
+ cleanupErrorNew();
101
+ return Promise.resolve();
102
+ },
103
+ };
104
+ };
105
+ exports.makeOrReuseServer = makeOrReuseServer;
@@ -1,14 +1,14 @@
1
1
  import type { DownloadMap } from './assets/download-map';
2
2
  import type { MediaAsset } from './assets/types';
3
3
  import type { ProcessedTrack } from './stringify-ffmpeg-filter';
4
- declare type Options = {
4
+ type Options = {
5
5
  outName: string;
6
6
  asset: MediaAsset;
7
7
  expectedFrames: number;
8
8
  fps: number;
9
9
  downloadMap: DownloadMap;
10
10
  };
11
- export declare type PreprocessedAudioTrack = {
11
+ export type PreprocessedAudioTrack = {
12
12
  outName: string;
13
13
  filter: ProcessedTrack;
14
14
  };
@@ -4,7 +4,7 @@ import type { VideoImageFormat } from './image-format';
4
4
  import type { CancelSignal } from './make-cancel-signal';
5
5
  import type { PixelFormat } from './pixel-format';
6
6
  import type { ProResProfile } from './prores-profile';
7
- declare type PreStitcherOptions = {
7
+ type PreStitcherOptions = {
8
8
  fps: number;
9
9
  width: number;
10
10
  height: number;
@@ -33,29 +33,29 @@ const prespawnFfmpeg = (options) => {
33
33
  logger_1.Log.verboseAdvanced({
34
34
  indent: options.indent,
35
35
  logLevel: options.verbose ? 'verbose' : 'info',
36
- tag: 'encoder',
36
+ tag: 'prespawnFfmpeg()',
37
37
  }, 'encoder', encoderName);
38
38
  logger_1.Log.verboseAdvanced({
39
39
  indent: options.indent,
40
40
  logLevel: options.verbose ? 'verbose' : 'info',
41
- tag: 'encoder',
41
+ tag: 'prespawnFfmpeg()',
42
42
  }, 'pixelFormat', pixelFormat);
43
43
  if (supportsCrf) {
44
44
  logger_1.Log.verboseAdvanced({
45
45
  indent: options.indent,
46
46
  logLevel: options.verbose ? 'verbose' : 'info',
47
- tag: 'encoder',
47
+ tag: 'prespawnFfmpeg()',
48
48
  }, 'pixelFormat', options.crf);
49
49
  }
50
50
  logger_1.Log.verboseAdvanced({
51
51
  indent: options.indent,
52
52
  logLevel: options.verbose ? 'verbose' : 'info',
53
- tag: 'encoder',
53
+ tag: 'prespawnFfmpeg()',
54
54
  }, 'codec', codec);
55
55
  logger_1.Log.verboseAdvanced({
56
56
  indent: options.indent,
57
57
  logLevel: options.verbose ? 'verbose' : 'info',
58
- tag: 'encoder',
58
+ tag: 'prespawnFfmpeg()',
59
59
  }, 'proResProfileName', proResProfileName);
60
60
  (0, pixel_format_1.validateSelectedPixelFormatAndCodecCombination)(pixelFormat, codec);
61
61
  const ffmpegArgs = [
@@ -87,12 +87,12 @@ const prespawnFfmpeg = (options) => {
87
87
  logger_1.Log.verboseAdvanced({
88
88
  indent: options.indent,
89
89
  logLevel: options.verbose ? 'verbose' : 'info',
90
- tag: 'encoder',
90
+ tag: 'prespawnFfmpeg()',
91
91
  }, 'Generated FFMPEG command:');
92
92
  logger_1.Log.verboseAdvanced({
93
93
  indent: options.indent,
94
94
  logLevel: options.verbose ? 'verbose' : 'info',
95
- tag: 'encoder',
95
+ tag: 'prespawnFfmpeg()',
96
96
  }, ffmpegArgs.join(' '));
97
97
  const ffmpegString = ffmpegArgs.flat(2).filter(Boolean);
98
98
  const finalFfmpegString = options.ffmpegOverride
@@ -1,6 +1,6 @@
1
1
  import type { Codec } from './codec';
2
2
  export declare const proResProfileOptions: readonly ["4444-xq", "4444", "hq", "standard", "light", "proxy"];
3
- export declare type ProResProfile = typeof proResProfileOptions[number];
3
+ export type ProResProfile = typeof proResProfileOptions[number];
4
4
  export declare const validateSelectedCodecAndProResCombination: ({ codec, proResProfile, }: {
5
5
  codec: Codec;
6
6
  proResProfile: ProResProfile | undefined;
@@ -28,7 +28,6 @@ const assert = __importStar(require("node:assert"));
28
28
  const screenshot_task_1 = require("./screenshot-task");
29
29
  const screenshot = (options) => {
30
30
  if (options.jpegQuality) {
31
- assert.ok(options.type === 'jpeg', `options.quality is unsupported for the ${options.type} screenshots`);
32
31
  assert.ok(typeof options.jpegQuality === 'number', 'Expected options.quality to be a number but found ' +
33
32
  typeof options.jpegQuality);
34
33
  assert.ok(Number.isInteger(options.jpegQuality), 'Expected options.quality to be an integer');
@@ -42,7 +41,7 @@ const screenshot = (options) => {
42
41
  width: options.width,
43
42
  omitBackground: options.omitBackground,
44
43
  path: options.path,
45
- jpegQuality: options.jpegQuality,
44
+ jpegQuality: options.type === 'jpeg' ? options.jpegQuality : undefined,
46
45
  clipRegion: options.clipRegion,
47
46
  }));
48
47
  };
@@ -1,7 +1,6 @@
1
1
  /// <reference types="node" />
2
2
  import type { AnySmallCompMetadata } from 'remotion';
3
3
  import type { RenderMediaOnDownload } from './assets/download-and-map-assets-to-file';
4
- import type { DownloadMap } from './assets/download-map';
5
4
  import type { BrowserExecutable } from './browser-executable';
6
5
  import type { BrowserLog } from './browser-log';
7
6
  import type { HeadlessBrowser } from './browser/Browser';
@@ -9,8 +8,38 @@ import type { FrameRange } from './frame-range';
9
8
  import type { VideoImageFormat } from './image-format';
10
9
  import type { CancelSignal } from './make-cancel-signal';
11
10
  import type { ChromiumOptions } from './open-browser';
11
+ import type { RemotionServer } from './prepare-server';
12
12
  import type { OnStartData, RenderFramesOutput } from './types';
13
- declare type RenderFramesOptions = {
13
+ export type InternalRenderFramesOptions = {
14
+ onStart: null | ((data: OnStartData) => void);
15
+ onFrameUpdate: null | ((framesRendered: number, frameIndex: number, timeToRenderInMilliseconds: number) => void);
16
+ outputDir: string | null;
17
+ inputProps: Record<string, unknown>;
18
+ envVariables: Record<string, string>;
19
+ imageFormat: VideoImageFormat;
20
+ jpegQuality: number;
21
+ frameRange: FrameRange | null;
22
+ everyNthFrame: number;
23
+ dumpBrowserLogs: boolean;
24
+ puppeteerInstance: HeadlessBrowser | undefined;
25
+ browserExecutable: BrowserExecutable | null;
26
+ onBrowserLog: null | ((log: BrowserLog) => void);
27
+ onFrameBuffer: null | ((buffer: Buffer, frame: number) => void);
28
+ onDownload: RenderMediaOnDownload | null;
29
+ timeoutInMilliseconds: number;
30
+ chromiumOptions: ChromiumOptions;
31
+ scale: number;
32
+ port: number | null;
33
+ cancelSignal: CancelSignal | undefined;
34
+ composition: AnySmallCompMetadata;
35
+ indent: boolean;
36
+ server: RemotionServer | undefined;
37
+ muted: boolean;
38
+ concurrency: number | string | null;
39
+ webpackBundleOrServeUrl: string;
40
+ verbose: boolean;
41
+ };
42
+ export type RenderFramesOptions = {
14
43
  onStart: (data: OnStartData) => void;
15
44
  onFrameUpdate: (framesRendered: number, frameIndex: number, timeToRenderInMilliseconds: number) => void;
16
45
  outputDir: string | null;
@@ -36,22 +65,14 @@ declare type RenderFramesOptions = {
36
65
  port?: number | null;
37
66
  cancelSignal?: CancelSignal;
38
67
  composition: AnySmallCompMetadata;
39
- /**
40
- * @deprecated Only for Remotion internal usage
41
- */
42
- downloadMap?: DownloadMap;
43
- /**
44
- * @deprecated Only for Remotion internal usage
45
- */
46
- indent?: boolean;
47
68
  muted?: boolean;
48
69
  concurrency?: number | string | null;
49
70
  serveUrl: string;
50
71
  verbose?: boolean;
51
72
  };
73
+ export declare const internalRenderFrames: ({ browserExecutable, cancelSignal, chromiumOptions, composition, concurrency, dumpBrowserLogs, envVariables, everyNthFrame, frameRange, imageFormat, indent, inputProps, jpegQuality, muted, onBrowserLog, onDownload, onFrameBuffer, onFrameUpdate, onStart, outputDir, port, puppeteerInstance, scale, server, timeoutInMilliseconds, verbose, webpackBundleOrServeUrl, }: InternalRenderFramesOptions) => Promise<RenderFramesOutput>;
52
74
  /**
53
75
  * @description Renders a series of images using Puppeteer and computes information for mixing audio.
54
76
  * @see [Documentation](https://www.remotion.dev/docs/renderer/render-frames)
55
77
  */
56
78
  export declare const renderFrames: (options: RenderFramesOptions) => Promise<RenderFramesOutput>;
57
- export {};