@remotion/renderer 4.0.159 → 4.0.161

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/Cargo.lock CHANGED
@@ -247,6 +247,15 @@ dependencies = [
247
247
  "str-buf",
248
248
  ]
249
249
 
250
+ [[package]]
251
+ name = "fdeflate"
252
+ version = "0.3.4"
253
+ source = "registry+https://github.com/rust-lang/crates.io-index"
254
+ checksum = "4f9bfee30e4dedf0ab8b422f03af778d9612b63f502710fc500a334ebe2de645"
255
+ dependencies = [
256
+ "simd-adler32",
257
+ ]
258
+
250
259
  [[package]]
251
260
  name = "ffmpeg-next"
252
261
  version = "6.0.0"
@@ -374,7 +383,7 @@ dependencies = [
374
383
  "color_quant",
375
384
  "num-rational 0.4.1",
376
385
  "num-traits",
377
- "png 0.17.7",
386
+ "png 0.17.13",
378
387
  "tiff 0.9.0",
379
388
  ]
380
389
 
@@ -519,6 +528,16 @@ dependencies = [
519
528
  "adler",
520
529
  ]
521
530
 
531
+ [[package]]
532
+ name = "miniz_oxide"
533
+ version = "0.7.3"
534
+ source = "registry+https://github.com/rust-lang/crates.io-index"
535
+ checksum = "87dfd01fe195c66b572b37921ad8803d010623c0aca821bea2302239d155cdae"
536
+ dependencies = [
537
+ "adler",
538
+ "simd-adler32",
539
+ ]
540
+
522
541
  [[package]]
523
542
  name = "mp4"
524
543
  version = "0.13.0"
@@ -722,14 +741,15 @@ dependencies = [
722
741
 
723
742
  [[package]]
724
743
  name = "png"
725
- version = "0.17.7"
744
+ version = "0.17.13"
726
745
  source = "registry+https://github.com/rust-lang/crates.io-index"
727
- checksum = "5d708eaf860a19b19ce538740d2b4bdeeb8337fa53f7738455e706623ad5c638"
746
+ checksum = "06e4b0d3d1312775e782c86c91a111aa1f910cbb65e1337f9975b5f9a554b5e1"
728
747
  dependencies = [
729
748
  "bitflags",
730
749
  "crc32fast",
750
+ "fdeflate",
731
751
  "flate2",
732
- "miniz_oxide 0.6.2",
752
+ "miniz_oxide 0.7.3",
733
753
  ]
734
754
 
735
755
  [[package]]
@@ -814,7 +834,7 @@ dependencies = [
814
834
  "jpeg-encoder",
815
835
  "lazy_static",
816
836
  "mp4",
817
- "png 0.17.7",
837
+ "png 0.17.13",
818
838
  "rayon",
819
839
  "serde",
820
840
  "serde_json",
@@ -882,6 +902,12 @@ version = "1.3.0"
882
902
  source = "registry+https://github.com/rust-lang/crates.io-index"
883
903
  checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
884
904
 
905
+ [[package]]
906
+ name = "simd-adler32"
907
+ version = "0.3.7"
908
+ source = "registry+https://github.com/rust-lang/crates.io-index"
909
+ checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe"
910
+
885
911
  [[package]]
886
912
  name = "smallvec"
887
913
  version = "1.11.0"
package/Cargo.toml CHANGED
@@ -8,7 +8,7 @@ authors = ["Jonny Burger <jonny@remotion.dev>"]
8
8
  edition = "2021"
9
9
 
10
10
  [dependencies]
11
- png = "0.17.7"
11
+ png = "0.17.13"
12
12
  serde = {version = "1.0.151", features = ["derive"]}
13
13
  serde_json = "1.0.89"
14
14
  jpeg-decoder = "0.3"
@@ -28,6 +28,7 @@ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (
28
28
  var _HeadlessBrowser_instances, _HeadlessBrowser_defaultViewport, _HeadlessBrowser_closeCallback, _HeadlessBrowser_defaultContext, _HeadlessBrowser_contexts, _HeadlessBrowser_targets, _HeadlessBrowser_targetCreated, _HeadlessBrowser_targetDestroyed, _HeadlessBrowser_targetInfoChanged, _BrowserContext_browser;
29
29
  Object.defineProperty(exports, "__esModule", { value: true });
30
30
  exports.BrowserContext = exports.HeadlessBrowser = void 0;
31
+ const browser_instances_1 = require("../browser-instances");
31
32
  const assert_1 = require("./assert");
32
33
  const EventEmitter_1 = require("./EventEmitter");
33
34
  const Target_1 = require("./Target");
@@ -141,6 +142,7 @@ class HeadlessBrowser extends EventEmitter_1.EventEmitter {
141
142
  });
142
143
  this.disconnect();
143
144
  this.emit(silent ? "closed-silent" /* BrowserEmittedEvents.ClosedSilent */ : "closed" /* BrowserEmittedEvents.Closed */);
145
+ (0, browser_instances_1.removeHeadlessBrowser)(this);
144
146
  }
145
147
  disconnect() {
146
148
  this.connection.dispose();
@@ -0,0 +1,4 @@
1
+ import type { HeadlessBrowser } from './browser/Browser';
2
+ export declare const killAllBrowsers: () => Promise<void>;
3
+ export declare const addHeadlessBrowser: (browser: HeadlessBrowser) => void;
4
+ export declare const removeHeadlessBrowser: (browser: HeadlessBrowser) => void;
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.removeHeadlessBrowser = exports.addHeadlessBrowser = exports.killAllBrowsers = void 0;
4
+ const browserInstances = [];
5
+ const killAllBrowsers = async () => {
6
+ for (const browser of browserInstances) {
7
+ try {
8
+ await browser.close(true, 'info', false);
9
+ }
10
+ catch (err) { }
11
+ }
12
+ };
13
+ exports.killAllBrowsers = killAllBrowsers;
14
+ const addHeadlessBrowser = (browser) => {
15
+ browserInstances.push(browser);
16
+ };
17
+ exports.addHeadlessBrowser = addHeadlessBrowser;
18
+ const removeHeadlessBrowser = (browser) => {
19
+ browserInstances.splice(browserInstances.indexOf(browser), 1);
20
+ };
21
+ exports.removeHeadlessBrowser = removeHeadlessBrowser;
@@ -8,6 +8,7 @@ const execa_1 = __importDefault(require("execa"));
8
8
  const node_child_process_1 = require("node:child_process");
9
9
  const path_1 = __importDefault(require("path"));
10
10
  const get_executable_path_1 = require("./compositor/get-executable-path");
11
+ const get_explicit_env_1 = require("./compositor/get-explicit-env");
11
12
  const make_file_executable_1 = require("./compositor/make-file-executable");
12
13
  const truthy_1 = require("./truthy");
13
14
  const callFf = ({ args, bin, indent, logLevel, options, binariesDirectory, cancelSignal, }) => {
@@ -18,8 +19,10 @@ const callFf = ({ args, bin, indent, logLevel, options, binariesDirectory, cance
18
19
  binariesDirectory,
19
20
  });
20
21
  (0, make_file_executable_1.makeFileExecutableIfItIsNot)(executablePath);
22
+ const cwd = path_1.default.dirname(executablePath);
21
23
  const task = (0, execa_1.default)(executablePath, args.filter(truthy_1.truthy), {
22
- cwd: path_1.default.dirname(executablePath),
24
+ cwd,
25
+ env: (0, get_explicit_env_1.getExplicitEnv)(cwd),
23
26
  ...options,
24
27
  });
25
28
  cancelSignal === null || cancelSignal === void 0 ? void 0 : cancelSignal(() => {
@@ -36,8 +39,10 @@ const callFfNative = ({ args, bin, indent, logLevel, options, binariesDirectory,
36
39
  binariesDirectory,
37
40
  });
38
41
  (0, make_file_executable_1.makeFileExecutableIfItIsNot)(executablePath);
42
+ const cwd = path_1.default.dirname(executablePath);
39
43
  const task = (0, node_child_process_1.spawn)(executablePath, args.filter(truthy_1.truthy), {
40
- cwd: path_1.default.dirname(executablePath),
44
+ cwd,
45
+ env: (0, get_explicit_env_1.getExplicitEnv)(cwd),
41
46
  ...options,
42
47
  });
43
48
  cancelSignal === null || cancelSignal === void 0 ? void 0 : cancelSignal(() => {
package/dist/client.d.ts CHANGED
@@ -604,17 +604,17 @@ export declare const BrowserSafeApis: {
604
604
  description: () => import("react/jsx-runtime").JSX.Element;
605
605
  ssrName: "x264Preset";
606
606
  docLink: string;
607
- type: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo" | null;
607
+ type: "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo" | null;
608
608
  getValue: ({ commandLine }: {
609
609
  commandLine: Record<string, unknown>;
610
610
  }) => {
611
- value: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo";
611
+ value: "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo";
612
612
  source: string;
613
613
  } | {
614
614
  value: null;
615
615
  source: string;
616
616
  };
617
- setConfig: (profile: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo" | null) => void;
617
+ setConfig: (profile: "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo" | null) => void;
618
618
  };
619
619
  logLevelOption: {
620
620
  cliFlag: "log";
@@ -864,17 +864,17 @@ export declare const BrowserSafeApis: {
864
864
  description: () => import("react/jsx-runtime").JSX.Element;
865
865
  ssrName: "x264Preset";
866
866
  docLink: string;
867
- type: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo" | null;
867
+ type: "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo" | null;
868
868
  getValue: ({ commandLine }: {
869
869
  commandLine: Record<string, unknown>;
870
870
  }) => {
871
- value: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo";
871
+ value: "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo";
872
872
  source: string;
873
873
  } | {
874
874
  value: null;
875
875
  source: string;
876
876
  };
877
- setConfig: (profile: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo" | null) => void;
877
+ setConfig: (profile: "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo" | null) => void;
878
878
  };
879
879
  readonly audioBitrate: {
880
880
  name: string;
@@ -1586,17 +1586,17 @@ export declare const BrowserSafeApis: {
1586
1586
  description: () => import("react/jsx-runtime").JSX.Element;
1587
1587
  ssrName: "x264Preset";
1588
1588
  docLink: string;
1589
- type: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo" | null;
1589
+ type: "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo" | null;
1590
1590
  getValue: ({ commandLine }: {
1591
1591
  commandLine: Record<string, unknown>;
1592
1592
  }) => {
1593
- value: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo";
1593
+ value: "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo";
1594
1594
  source: string;
1595
1595
  } | {
1596
1596
  value: null;
1597
1597
  source: string;
1598
1598
  };
1599
- setConfig: (profile: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo" | null) => void;
1599
+ setConfig: (profile: "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo" | null) => void;
1600
1600
  };
1601
1601
  readonly encodingMaxRate: {
1602
1602
  name: string;
@@ -1952,17 +1952,17 @@ export declare const BrowserSafeApis: {
1952
1952
  description: () => import("react/jsx-runtime").JSX.Element;
1953
1953
  ssrName: "x264Preset";
1954
1954
  docLink: string;
1955
- type: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo" | null;
1955
+ type: "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo" | null;
1956
1956
  getValue: ({ commandLine }: {
1957
1957
  commandLine: Record<string, unknown>;
1958
1958
  }) => {
1959
- value: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo";
1959
+ value: "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo";
1960
1960
  source: string;
1961
1961
  } | {
1962
1962
  value: null;
1963
1963
  source: string;
1964
1964
  };
1965
- setConfig: (profile: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo" | null) => void;
1965
+ setConfig: (profile: "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo" | null) => void;
1966
1966
  };
1967
1967
  readonly encodingMaxRate: {
1968
1968
  name: string;
@@ -95,6 +95,9 @@ const startCompositor = ({ type, payload, logLevel, indent, binariesDirectory =
95
95
  break;
96
96
  }
97
97
  separatorIndex++;
98
+ if (separatorIndex > outputBuffer.length) {
99
+ throw new Error('separatorIndex out of bounds: ' + JSON.stringify(outputBuffer));
100
+ }
98
101
  nonceString += String.fromCharCode(nextDigit);
99
102
  }
100
103
  // eslint-disable-next-line no-constant-condition
@@ -105,6 +108,9 @@ const startCompositor = ({ type, payload, logLevel, indent, binariesDirectory =
105
108
  break;
106
109
  }
107
110
  separatorIndex++;
111
+ if (separatorIndex > outputBuffer.length) {
112
+ throw new Error('separatorIndex out of bounds ' + JSON.stringify(outputBuffer));
113
+ }
108
114
  lengthString += String.fromCharCode(nextDigit);
109
115
  }
110
116
  // eslint-disable-next-line no-constant-condition
@@ -114,6 +120,9 @@ const startCompositor = ({ type, payload, logLevel, indent, binariesDirectory =
114
120
  break;
115
121
  }
116
122
  separatorIndex++;
123
+ if (separatorIndex > outputBuffer.length) {
124
+ throw new Error('separatorIndex out of bounds ' + JSON.stringify(outputBuffer));
125
+ }
117
126
  statusString += String.fromCharCode(nextDigit);
118
127
  }
119
128
  const length = Number(lengthString);
@@ -0,0 +1,3 @@
1
+ export declare const getExplicitEnv: (cwd: string) => {
2
+ DYLD_LIBRARY_PATH: string;
3
+ } | undefined;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getExplicitEnv = void 0;
4
+ const getExplicitEnv = (cwd) => {
5
+ return process.platform === 'darwin'
6
+ ? {
7
+ // Should work out of the box, but sometimes it doesn't
8
+ // https://github.com/remotion-dev/remotion/issues/3862
9
+ DYLD_LIBRARY_PATH: cwd,
10
+ }
11
+ : undefined;
12
+ };
13
+ exports.getExplicitEnv = getExplicitEnv;
package/dist/crf.js CHANGED
@@ -74,7 +74,8 @@ const validateQualitySettings = ({ codec, crf, videoBitrate, encodingMaxRate, en
74
74
  throw new TypeError('Expected CRF to be a number, but is ' + JSON.stringify(crf));
75
75
  }
76
76
  const range = (0, exports.getValidCrfRanges)(codec);
77
- if (crf === 0 && (codec === 'h264' || codec === 'h264-mkv')) {
77
+ if (crf === 0 &&
78
+ (codec === 'h264' || codec === 'h264-mkv' || codec === 'h264-ts')) {
78
79
  throw new TypeError("Setting the CRF to 0 with a H264 codec is not supported anymore because of it's inconsistencies between platforms. Videos with CRF 0 cannot be played on iOS/macOS. 0 is a extreme value with inefficient settings which you probably do not want. Set CRF to a higher value to fix this error.");
79
80
  }
80
81
  if (crf < range[0] || crf > range[1]) {
package/dist/index.d.ts CHANGED
@@ -337,7 +337,7 @@ export declare const RenderInternals: {
337
337
  makeFileExtensionMap: () => Record<string, ("h264" | "h265" | "vp8" | "vp9" | "mp3" | "aac" | "wav" | "prores" | "h264-mkv" | "h264-ts" | "gif")[]>;
338
338
  defaultCodecsForFileExtension: Record<import("./file-extensions").FileExtension, "h264" | "h265" | "vp8" | "vp9" | "mp3" | "aac" | "wav" | "prores" | "h264-mkv" | "h264-ts" | "gif">;
339
339
  getExecutablePath: ({ indent, logLevel, type, binariesDirectory, }: {
340
- type: "ffmpeg" | "ffprobe" | "compositor";
340
+ type: "compositor" | "ffmpeg" | "ffprobe";
341
341
  indent: boolean;
342
342
  logLevel: "verbose" | "info" | "warn" | "error";
343
343
  binariesDirectory: string | null;
@@ -784,7 +784,7 @@ export declare const RenderInternals: {
784
784
  assetsInfo: import("./assets/download-map").RenderAssetInfo | null;
785
785
  enforceAudioTrack: boolean;
786
786
  muted: boolean;
787
- }) => "yes" | "maybe" | "no";
787
+ }) => "no" | "yes" | "maybe";
788
788
  codecSupportsMedia: (codec: "h264" | "h265" | "vp8" | "vp9" | "mp3" | "aac" | "wav" | "prores" | "h264-mkv" | "h264-ts" | "gif") => {
789
789
  video: boolean;
790
790
  audio: boolean;
package/dist/index.js CHANGED
@@ -110,6 +110,7 @@ Object.defineProperty(exports, "stitchFramesToVideo", { enumerable: true, get: f
110
110
  var validate_output_filename_1 = require("./validate-output-filename");
111
111
  Object.defineProperty(exports, "validateOutputFilename", { enumerable: true, get: function () { return validate_output_filename_1.validateOutputFilename; } });
112
112
  const download_map_1 = require("./assets/download-map");
113
+ const browser_instances_1 = require("./browser-instances");
113
114
  const codec_supports_media_1 = require("./codec-supports-media");
114
115
  const make_file_executable_1 = require("./compositor/make-file-executable");
115
116
  const ensure_browser_2 = require("./ensure-browser");
@@ -131,7 +132,7 @@ exports.RenderInternals = {
131
132
  getRealFrameRange: get_frame_to_render_1.getRealFrameRange,
132
133
  validatePuppeteerTimeout: validate_puppeteer_timeout_1.validatePuppeteerTimeout,
133
134
  downloadFile: download_file_1.downloadFile,
134
- killAllBrowsers: open_browser_1.killAllBrowsers,
135
+ killAllBrowsers: browser_instances_1.killAllBrowsers,
135
136
  parseStack: parse_browser_error_stack_1.parseStack,
136
137
  symbolicateError: symbolicate_error_1.symbolicateError,
137
138
  SymbolicateableError: symbolicateable_error_1.SymbolicateableError,
@@ -2,6 +2,9 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.isServeUrl = void 0;
4
4
  const isServeUrl = (potentialUrl) => {
5
+ if (typeof potentialUrl === 'undefined') {
6
+ throw new Error('serveUrl is undefined');
7
+ }
5
8
  // Theoretically not a valid URL but handle the most basic cases of forgetting protocol in front
6
9
  if (potentialUrl.startsWith('www.') ||
7
10
  potentialUrl.includes('amazonaws.com')) {
@@ -13,7 +13,6 @@ export type ChromiumOptions = {
13
13
  userAgent?: string | null;
14
14
  enableMultiProcessOnLinux?: boolean;
15
15
  };
16
- export declare const killAllBrowsers: () => Promise<void>;
17
16
  type InternalOpenBrowserOptions = {
18
17
  browserExecutable: string | null;
19
18
  chromiumOptions: ChromiumOptions;
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.openBrowser = exports.internalOpenBrowser = exports.killAllBrowsers = void 0;
3
+ exports.openBrowser = exports.internalOpenBrowser = void 0;
4
+ const browser_instances_1 = require("./browser-instances");
4
5
  const browser_download_progress_bar_1 = require("./browser/browser-download-progress-bar");
5
6
  const node_1 = require("./browser/node");
6
7
  const ensure_browser_1 = require("./ensure-browser");
@@ -32,16 +33,6 @@ const getOpenGlRenderer = (option) => {
32
33
  }
33
34
  return [`--use-gl=${renderer}`];
34
35
  };
35
- const browserInstances = [];
36
- const killAllBrowsers = async () => {
37
- for (const browser of browserInstances) {
38
- try {
39
- await browser.close(true, 'info', false);
40
- }
41
- catch (err) { }
42
- }
43
- };
44
- exports.killAllBrowsers = killAllBrowsers;
45
36
  const internalOpenBrowser = async ({ browser, browserExecutable, chromiumOptions, forceDeviceScaleFactor, indent, viewport, logLevel, onBrowserDownload, }) => {
46
37
  var _a, _b, _c;
47
38
  // @ts-expect-error Firefox
@@ -144,7 +135,7 @@ const internalOpenBrowser = async ({ browser, browserExecutable, chromiumOptions
144
135
  });
145
136
  const pages = await browserInstance.pages(logLevel, indent);
146
137
  await pages[0].close();
147
- browserInstances.push(browserInstance);
138
+ (0, browser_instances_1.addHeadlessBrowser)(browserInstance);
148
139
  return browserInstance;
149
140
  };
150
141
  exports.internalOpenBrowser = internalOpenBrowser;
@@ -382,17 +382,17 @@ export declare const allOptions: {
382
382
  description: () => import("react/jsx-runtime").JSX.Element;
383
383
  ssrName: "x264Preset";
384
384
  docLink: string;
385
- type: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo" | null;
385
+ type: "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo" | null;
386
386
  getValue: ({ commandLine }: {
387
387
  commandLine: Record<string, unknown>;
388
388
  }) => {
389
- value: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo";
389
+ value: "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo";
390
390
  source: string;
391
391
  } | {
392
392
  value: null;
393
393
  source: string;
394
394
  };
395
- setConfig: (profile: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo" | null) => void;
395
+ setConfig: (profile: "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo" | null) => void;
396
396
  };
397
397
  logLevelOption: {
398
398
  cliFlag: "log";
@@ -72,17 +72,17 @@ export declare const optionsMap: {
72
72
  description: () => import("react/jsx-runtime").JSX.Element;
73
73
  ssrName: "x264Preset";
74
74
  docLink: string;
75
- type: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo" | null;
75
+ type: "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo" | null;
76
76
  getValue: ({ commandLine }: {
77
77
  commandLine: Record<string, unknown>;
78
78
  }) => {
79
- value: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo";
79
+ value: "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo";
80
80
  source: string;
81
81
  } | {
82
82
  value: null;
83
83
  source: string;
84
84
  };
85
- setConfig: (profile: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo" | null) => void;
85
+ setConfig: (profile: "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo" | null) => void;
86
86
  };
87
87
  readonly audioBitrate: {
88
88
  name: string;
@@ -794,17 +794,17 @@ export declare const optionsMap: {
794
794
  description: () => import("react/jsx-runtime").JSX.Element;
795
795
  ssrName: "x264Preset";
796
796
  docLink: string;
797
- type: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo" | null;
797
+ type: "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo" | null;
798
798
  getValue: ({ commandLine }: {
799
799
  commandLine: Record<string, unknown>;
800
800
  }) => {
801
- value: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo";
801
+ value: "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo";
802
802
  source: string;
803
803
  } | {
804
804
  value: null;
805
805
  source: string;
806
806
  };
807
- setConfig: (profile: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo" | null) => void;
807
+ setConfig: (profile: "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo" | null) => void;
808
808
  };
809
809
  readonly encodingMaxRate: {
810
810
  name: string;
@@ -1160,17 +1160,17 @@ export declare const optionsMap: {
1160
1160
  description: () => import("react/jsx-runtime").JSX.Element;
1161
1161
  ssrName: "x264Preset";
1162
1162
  docLink: string;
1163
- type: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo" | null;
1163
+ type: "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo" | null;
1164
1164
  getValue: ({ commandLine }: {
1165
1165
  commandLine: Record<string, unknown>;
1166
1166
  }) => {
1167
- value: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo";
1167
+ value: "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo";
1168
1168
  source: string;
1169
1169
  } | {
1170
1170
  value: null;
1171
1171
  source: string;
1172
1172
  };
1173
- setConfig: (profile: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo" | null) => void;
1173
+ setConfig: (profile: "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo" | null) => void;
1174
1174
  };
1175
1175
  readonly encodingMaxRate: {
1176
1176
  name: string;
@@ -11,11 +11,11 @@ export declare const x264Option: {
11
11
  description: () => import("react/jsx-runtime").JSX.Element;
12
12
  ssrName: "x264Preset";
13
13
  docLink: string;
14
- type: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo" | null;
14
+ type: "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo" | null;
15
15
  getValue: ({ commandLine }: {
16
16
  commandLine: Record<string, unknown>;
17
17
  }) => {
18
- value: "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "medium" | "slow" | "slower" | "veryslow" | "placebo";
18
+ value: "medium" | "ultrafast" | "superfast" | "veryfast" | "faster" | "fast" | "slow" | "slower" | "veryslow" | "placebo";
19
19
  source: string;
20
20
  } | {
21
21
  value: null;
@@ -16,7 +16,10 @@ exports.x264PresetOptions = [
16
16
  ];
17
17
  let preset = null;
18
18
  const validateSelectedCodecAndPresetCombination = ({ codec, x264Preset, }) => {
19
- if (x264Preset !== null && codec !== 'h264' && codec !== 'h264-mkv') {
19
+ if (x264Preset !== null &&
20
+ codec !== 'h264' &&
21
+ codec !== 'h264-mkv' &&
22
+ codec !== 'h264-ts') {
20
23
  throw new TypeError(`You have set a x264 preset but the codec is "${codec}". Set the codec to "h264" or remove the Preset profile.`);
21
24
  }
22
25
  if (x264Preset !== null &&
@@ -95,17 +95,27 @@ const waitForReady = ({ page, timeoutInMilliseconds, frame, indent, logLevel, })
95
95
  }
96
96
  });
97
97
  });
98
+ const onDisposedPromise = new Promise((_, reject) => {
99
+ const onDispose = () => {
100
+ reject(new Error('Target closed (page disposed)'));
101
+ };
102
+ page.on("disposed" /* PageEmittedEvents.Disposed */, onDispose);
103
+ cleanups.push(() => {
104
+ page.off("disposed" /* PageEmittedEvents.Disposed */, onDispose);
105
+ });
106
+ });
107
+ const onClosedSilentPromise = new Promise((_, reject) => {
108
+ const onClosedSilent = () => {
109
+ reject(new Error('Target closed'));
110
+ };
111
+ page.browser.on("closed-silent" /* BrowserEmittedEvents.ClosedSilent */, onClosedSilent);
112
+ cleanups.push(() => {
113
+ page.browser.off("closed-silent" /* BrowserEmittedEvents.ClosedSilent */, onClosedSilent);
114
+ });
115
+ });
98
116
  return Promise.race([
99
- new Promise((_, reject) => {
100
- page.on("disposed" /* PageEmittedEvents.Disposed */, () => {
101
- reject(new Error('Target closed (page disposed)'));
102
- });
103
- }),
104
- new Promise((_, reject) => {
105
- page.browser.on("closed-silent" /* BrowserEmittedEvents.ClosedSilent */, () => {
106
- reject(new Error('Target closed'));
107
- });
108
- }),
117
+ onDisposedPromise,
118
+ onClosedSilentPromise,
109
119
  waitForReadyProm,
110
120
  ]).finally(() => {
111
121
  cleanups.forEach((cleanup) => {
@@ -6,7 +6,10 @@ const validateEvenDimensionsWithCodec = ({ width, height, codec, scale, wantsIma
6
6
  if (wantsImageSequence) {
7
7
  return;
8
8
  }
9
- if (codec !== 'h264-mkv' && codec !== 'h264' && codec !== 'h265') {
9
+ if (codec !== 'h264-mkv' &&
10
+ codec !== 'h264' &&
11
+ codec !== 'h265' &&
12
+ codec !== 'h264-ts') {
10
13
  return;
11
14
  }
12
15
  const actualWidth = width * scale;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@remotion/renderer",
3
- "version": "4.0.159",
3
+ "version": "4.0.161",
4
4
  "description": "Renderer for Remotion",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -18,7 +18,7 @@
18
18
  "extract-zip": "2.0.1",
19
19
  "source-map": "^0.8.0-beta.0",
20
20
  "ws": "8.7.0",
21
- "remotion": "4.0.159"
21
+ "remotion": "4.0.161"
22
22
  },
23
23
  "peerDependencies": {
24
24
  "react": ">=16.8.0",
@@ -43,13 +43,13 @@
43
43
  "@types/ws": "8.5.10"
44
44
  },
45
45
  "optionalDependencies": {
46
- "@remotion/compositor-darwin-arm64": "4.0.159",
47
- "@remotion/compositor-linux-arm64-gnu": "4.0.159",
48
- "@remotion/compositor-darwin-x64": "4.0.159",
49
- "@remotion/compositor-linux-x64-gnu": "4.0.159",
50
- "@remotion/compositor-linux-arm64-musl": "4.0.159",
51
- "@remotion/compositor-linux-x64-musl": "4.0.159",
52
- "@remotion/compositor-win32-x64-msvc": "4.0.159"
46
+ "@remotion/compositor-darwin-arm64": "4.0.161",
47
+ "@remotion/compositor-darwin-x64": "4.0.161",
48
+ "@remotion/compositor-linux-arm64-musl": "4.0.161",
49
+ "@remotion/compositor-linux-arm64-gnu": "4.0.161",
50
+ "@remotion/compositor-linux-x64-gnu": "4.0.161",
51
+ "@remotion/compositor-linux-x64-musl": "4.0.161",
52
+ "@remotion/compositor-win32-x64-msvc": "4.0.161"
53
53
  },
54
54
  "keywords": [
55
55
  "remotion",