@remotion/renderer 4.0.423 → 4.0.425

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 (159) hide show
  1. package/dist/client.d.ts +448 -13
  2. package/dist/combine-chunks.js +3 -0
  3. package/dist/ensure-browser.d.ts +3 -0
  4. package/dist/esm/client.mjs +1262 -516
  5. package/dist/esm/index.mjs +14 -7
  6. package/dist/esm/pure.mjs +4 -2
  7. package/dist/ffmpeg-args.d.ts +1 -1
  8. package/dist/ffmpeg-args.js +1 -1
  9. package/dist/index.d.ts +45 -0
  10. package/dist/mux-video-and-audio.d.ts +2 -1
  11. package/dist/mux-video-and-audio.js +6 -1
  12. package/dist/options/api-key.d.ts +1 -0
  13. package/dist/options/api-key.js +1 -0
  14. package/dist/options/ask-ai.d.ts +1 -0
  15. package/dist/options/ask-ai.js +1 -0
  16. package/dist/options/audio-bitrate.d.ts +1 -0
  17. package/dist/options/audio-bitrate.js +1 -0
  18. package/dist/options/audio-codec.d.ts +1 -0
  19. package/dist/options/audio-codec.js +1 -0
  20. package/dist/options/beep-on-finish.d.ts +1 -0
  21. package/dist/options/beep-on-finish.js +1 -0
  22. package/dist/options/binaries-directory.d.ts +1 -0
  23. package/dist/options/binaries-directory.js +1 -0
  24. package/dist/options/browser-executable.d.ts +17 -0
  25. package/dist/options/browser-executable.js +36 -0
  26. package/dist/options/chrome-mode.d.ts +1 -0
  27. package/dist/options/chrome-mode.js +1 -0
  28. package/dist/options/color-space.d.ts +5 -4
  29. package/dist/options/color-space.js +4 -2
  30. package/dist/options/concurrency.d.ts +17 -0
  31. package/dist/options/concurrency.js +40 -0
  32. package/dist/options/crf.d.ts +1 -0
  33. package/dist/options/crf.js +1 -0
  34. package/dist/options/cross-site-isolation.d.ts +1 -0
  35. package/dist/options/cross-site-isolation.js +1 -0
  36. package/dist/options/dark-mode.d.ts +1 -0
  37. package/dist/options/dark-mode.js +1 -0
  38. package/dist/options/delete-after.d.ts +1 -0
  39. package/dist/options/delete-after.js +1 -0
  40. package/dist/options/disable-git-source.d.ts +1 -0
  41. package/dist/options/disable-git-source.js +1 -0
  42. package/dist/options/disable-web-security.d.ts +16 -0
  43. package/dist/options/disable-web-security.js +36 -0
  44. package/dist/options/disallow-parallel-encoding.d.ts +1 -0
  45. package/dist/options/disallow-parallel-encoding.js +1 -0
  46. package/dist/options/enable-lambda-insights.d.ts +1 -0
  47. package/dist/options/enable-lambda-insights.js +1 -0
  48. package/dist/options/enable-multiprocess-on-linux.d.ts +1 -0
  49. package/dist/options/enable-multiprocess-on-linux.js +1 -0
  50. package/dist/options/encoding-buffer-size.d.ts +1 -0
  51. package/dist/options/encoding-buffer-size.js +1 -0
  52. package/dist/options/encoding-max-rate.d.ts +1 -0
  53. package/dist/options/encoding-max-rate.js +1 -0
  54. package/dist/options/enforce-audio.d.ts +1 -0
  55. package/dist/options/enforce-audio.js +1 -0
  56. package/dist/options/every-nth-frame.d.ts +16 -0
  57. package/dist/options/every-nth-frame.js +42 -0
  58. package/dist/options/experimental-client-side-rendering.d.ts +1 -0
  59. package/dist/options/experimental-client-side-rendering.js +1 -0
  60. package/dist/options/folder-expiry.d.ts +1 -0
  61. package/dist/options/folder-expiry.js +1 -0
  62. package/dist/options/for-seamless-aac-concatenation.d.ts +1 -0
  63. package/dist/options/for-seamless-aac-concatenation.js +1 -0
  64. package/dist/options/force-new-studio.d.ts +1 -0
  65. package/dist/options/force-new-studio.js +1 -0
  66. package/dist/options/gl.d.ts +1 -0
  67. package/dist/options/gl.js +1 -0
  68. package/dist/options/hardware-acceleration.d.ts +1 -0
  69. package/dist/options/hardware-acceleration.js +1 -0
  70. package/dist/options/headless.d.ts +1 -0
  71. package/dist/options/headless.js +1 -0
  72. package/dist/options/ignore-certificate-errors.d.ts +16 -0
  73. package/dist/options/ignore-certificate-errors.js +36 -0
  74. package/dist/options/image-format-option.d.ts +18 -0
  75. package/dist/options/image-format-option.js +33 -0
  76. package/dist/options/image-sequence-pattern.d.ts +1 -0
  77. package/dist/options/image-sequence-pattern.js +1 -0
  78. package/dist/options/index.d.ts +307 -3
  79. package/dist/options/index.js +28 -0
  80. package/dist/options/ipv4.d.ts +1 -0
  81. package/dist/options/ipv4.js +1 -0
  82. package/dist/options/is-production.d.ts +1 -0
  83. package/dist/options/is-production.js +1 -0
  84. package/dist/options/jpeg-quality.d.ts +1 -0
  85. package/dist/options/jpeg-quality.js +1 -0
  86. package/dist/options/keyboard-shortcuts.d.ts +1 -0
  87. package/dist/options/keyboard-shortcuts.js +1 -0
  88. package/dist/options/latency-hint.d.ts +1 -0
  89. package/dist/options/latency-hint.js +1 -0
  90. package/dist/options/license-key.d.ts +1 -0
  91. package/dist/options/license-key.js +1 -0
  92. package/dist/options/log-level.d.ts +1 -0
  93. package/dist/options/log-level.js +1 -0
  94. package/dist/options/metadata.d.ts +1 -0
  95. package/dist/options/metadata.js +1 -0
  96. package/dist/options/mute.d.ts +1 -0
  97. package/dist/options/mute.js +1 -0
  98. package/dist/options/number-of-gif-loops.d.ts +1 -0
  99. package/dist/options/number-of-gif-loops.js +1 -0
  100. package/dist/options/number-of-shared-audio-tags.d.ts +1 -0
  101. package/dist/options/number-of-shared-audio-tags.js +1 -0
  102. package/dist/options/offthreadvideo-cache-size.d.ts +1 -0
  103. package/dist/options/offthreadvideo-cache-size.js +1 -0
  104. package/dist/options/offthreadvideo-threads.d.ts +1 -0
  105. package/dist/options/offthreadvideo-threads.js +1 -0
  106. package/dist/options/on-browser-download.d.ts +1 -0
  107. package/dist/options/on-browser-download.js +1 -0
  108. package/dist/options/option.d.ts +1 -0
  109. package/dist/options/options-map.d.ts +139 -9
  110. package/dist/options/override-duration.d.ts +19 -0
  111. package/dist/options/override-duration.js +46 -0
  112. package/dist/options/override-fps.d.ts +19 -0
  113. package/dist/options/override-fps.js +40 -0
  114. package/dist/options/override-height.d.ts +19 -0
  115. package/dist/options/override-height.js +40 -0
  116. package/dist/options/override-width.d.ts +19 -0
  117. package/dist/options/override-width.js +40 -0
  118. package/dist/options/overwrite.d.ts +1 -0
  119. package/dist/options/overwrite.js +1 -0
  120. package/dist/options/pixel-format.d.ts +16 -0
  121. package/dist/options/pixel-format.js +41 -0
  122. package/dist/options/prefer-lossless.d.ts +1 -0
  123. package/dist/options/prefer-lossless.js +1 -0
  124. package/dist/options/prores-profile.d.ts +20 -0
  125. package/dist/options/prores-profile.js +48 -0
  126. package/dist/options/public-dir.d.ts +1 -0
  127. package/dist/options/public-dir.js +1 -0
  128. package/dist/options/public-license-key.d.ts +1 -0
  129. package/dist/options/public-license-key.js +1 -0
  130. package/dist/options/public-path.d.ts +1 -0
  131. package/dist/options/public-path.js +1 -0
  132. package/dist/options/repro.d.ts +1 -0
  133. package/dist/options/repro.js +1 -0
  134. package/dist/options/scale.d.ts +1 -0
  135. package/dist/options/scale.js +1 -0
  136. package/dist/options/separate-audio.d.ts +1 -0
  137. package/dist/options/separate-audio.js +1 -0
  138. package/dist/options/still-image-format.d.ts +19 -0
  139. package/dist/options/still-image-format.js +55 -0
  140. package/dist/options/throw-if-site-exists.d.ts +1 -0
  141. package/dist/options/throw-if-site-exists.js +1 -0
  142. package/dist/options/timeout.d.ts +1 -0
  143. package/dist/options/timeout.js +1 -0
  144. package/dist/options/user-agent.d.ts +19 -0
  145. package/dist/options/user-agent.js +36 -0
  146. package/dist/options/video-bitrate.d.ts +1 -0
  147. package/dist/options/video-bitrate.js +1 -0
  148. package/dist/options/video-cache-size.d.ts +1 -0
  149. package/dist/options/video-cache-size.js +1 -0
  150. package/dist/options/video-codec.d.ts +1 -0
  151. package/dist/options/video-codec.js +1 -0
  152. package/dist/options/video-image-format.d.ts +19 -0
  153. package/dist/options/video-image-format.js +55 -0
  154. package/dist/options/webhook-custom-data.d.ts +1 -0
  155. package/dist/options/webhook-custom-data.js +1 -0
  156. package/dist/options/x264-preset.d.ts +1 -0
  157. package/dist/options/x264-preset.js +1 -0
  158. package/dist/validate-number-of-gif-loops.js +1 -1
  159. package/package.json +15 -15
@@ -17600,7 +17600,8 @@ var separateAudioOption = {
17600
17600
  throw new Error("Not implemented");
17601
17601
  },
17602
17602
  ssrName: "separateAudioTo",
17603
- type: "string"
17603
+ type: "string",
17604
+ id: cliFlag
17604
17605
  };
17605
17606
 
17606
17607
  // src/options/audio-codec.tsx
@@ -17777,7 +17778,8 @@ var audioCodecOption = {
17777
17778
  docLink: "https://www.remotion.dev/docs/encoding/#audio-codec",
17778
17779
  name: "Audio Codec",
17779
17780
  ssrName,
17780
- type: "aac"
17781
+ type: "aac",
17782
+ id: cliFlag2
17781
17783
  };
17782
17784
 
17783
17785
  // src/parse-ffmpeg-progress.ts
@@ -19766,7 +19768,7 @@ var ensureFramesInOrder = (framesToRender) => {
19766
19768
  // src/options/color-space.tsx
19767
19769
  import { NoReactInternals as NoReactInternals13 } from "remotion/no-react";
19768
19770
  import { jsx as jsx4, jsxs as jsxs4, Fragment as Fragment4 } from "react/jsx-runtime";
19769
- var validV4ColorSpaces = ["default", "bt709", "bt2020-ncl"];
19771
+ var validV4ColorSpaces = ["default", "bt601", "bt709", "bt2020-ncl"];
19770
19772
  var validV5ColorSpaces = ["bt601", "bt709", "bt2020-ncl"];
19771
19773
  var validColorSpaces = NoReactInternals13.ENABLE_V5_BREAKING_CHANGES ? validV5ColorSpaces : validV4ColorSpaces;
19772
19774
  var DEFAULT_COLOR_SPACE = NoReactInternals13.ENABLE_V5_BREAKING_CHANGES ? "bt709" : "default";
@@ -19953,7 +19955,7 @@ var generateFfmpegArgs = ({
19953
19955
  throw new Error(`Codec ${codec} does not support hardware acceleration on ${process.platform}, but "hardwareAcceleration" is set to "required"`);
19954
19956
  }
19955
19957
  Log.verbose({ indent, logLevel, tag: "stitchFramesToVideo()" }, `Encoder: ${encoderName}, hardware accelerated: ${hardwareAccelerated}`);
19956
- const resolvedColorSpace = colorSpace ?? DEFAULT_COLOR_SPACE;
19958
+ const resolvedColorSpace = codec === "gif" ? "bt601" : colorSpace ?? DEFAULT_COLOR_SPACE;
19957
19959
  const colorSpaceOptions = resolvedColorSpace === "bt709" ? [
19958
19960
  ["-colorspace:v", "bt709"],
19959
19961
  ["-color_primaries:v", "bt709"],
@@ -21581,7 +21583,7 @@ var validateNumberOfGifLoops = (numberOfGifLoops, codec) => {
21581
21583
  throw new RangeError(`Argument for numberOfGifLoops must be an integer, but got ${numberOfGifLoops}`);
21582
21584
  }
21583
21585
  if (codec !== "gif") {
21584
- throw new Error(`"everyNthFrame" can only be set if "codec" is set to "gif". The codec is "${codec}"`);
21586
+ throw new Error(`"numberOfGifLoops" can only be set if "codec" is set to "gif". The codec is "${codec}"`);
21585
21587
  }
21586
21588
  };
21587
21589
 
@@ -23106,7 +23108,8 @@ var muxVideoAndAudio = async ({
23106
23108
  fps,
23107
23109
  cancelSignal,
23108
23110
  addFaststart,
23109
- metadata
23111
+ metadata,
23112
+ numberOfGifLoops
23110
23113
  }) => {
23111
23114
  const startTime = Date.now();
23112
23115
  Log.verbose({ indent, logLevel }, "Muxing video and audio together");
@@ -23120,6 +23123,8 @@ var muxVideoAndAudio = async ({
23120
23123
  videoOutput ? "copy" : null,
23121
23124
  audioOutput ? "-c:a" : null,
23122
23125
  audioOutput ? "copy" : null,
23126
+ numberOfGifLoops === null ? null : "-loop",
23127
+ numberOfGifLoops === null ? null : convertNumberOfGifLoopsToFfmpegSyntax(numberOfGifLoops),
23123
23128
  addFaststart ? "-movflags" : null,
23124
23129
  addFaststart ? "faststart" : null,
23125
23130
  ...makeMetadataArgs(metadata ?? {}),
@@ -23187,6 +23192,7 @@ var internalCombineChunks = async ({
23187
23192
  frameRange,
23188
23193
  compositionDurationInFrames
23189
23194
  }) => {
23195
+ validateNumberOfGifLoops(numberOfGifLoops, codec);
23190
23196
  const filelistDir = tmpDir(REMOTION_FILELIST_TOKEN);
23191
23197
  const shouldCreateVideo = !isAudioCodec(codec);
23192
23198
  const resolvedAudioCodec = resolveAudioCodec({
@@ -23268,7 +23274,8 @@ var internalCombineChunks = async ({
23268
23274
  fps,
23269
23275
  cancelSignal,
23270
23276
  addFaststart: codecSupportsFastStart[codec],
23271
- metadata
23277
+ metadata,
23278
+ numberOfGifLoops
23272
23279
  });
23273
23280
  onProgress({ totalProgress: 1, frames: numberOfFrames });
23274
23281
  rmSync6(filelistDir, { recursive: true });
package/dist/esm/pure.mjs CHANGED
@@ -320,7 +320,8 @@ var separateAudioOption = {
320
320
  throw new Error("Not implemented");
321
321
  },
322
322
  ssrName: "separateAudioTo",
323
- type: "string"
323
+ type: "string",
324
+ id: cliFlag
324
325
  };
325
326
 
326
327
  // src/options/audio-codec.tsx
@@ -476,7 +477,8 @@ var audioCodecOption = {
476
477
  docLink: "https://www.remotion.dev/docs/encoding/#audio-codec",
477
478
  name: "Audio Codec",
478
479
  ssrName,
479
- type: "aac"
480
+ type: "aac",
481
+ id: cliFlag2
480
482
  };
481
483
 
482
484
  // src/validate-output-filename.ts
@@ -8,7 +8,7 @@ export declare const generateFfmpegArgs: ({ hasPreencoded, proResProfileName, pi
8
8
  videoBitrate: string | null;
9
9
  encodingMaxRate: string | null;
10
10
  encodingBufferSize: string | null;
11
- colorSpace: "bt2020-ncl" | "bt709" | "default" | null;
11
+ colorSpace: "bt2020-ncl" | "bt601" | "bt709" | "default" | null;
12
12
  hardwareAcceleration: "disable" | "if-possible" | "required";
13
13
  indent: boolean;
14
14
  logLevel: "error" | "info" | "trace" | "verbose" | "warn";
@@ -48,7 +48,7 @@ const generateFfmpegArgs = ({ hasPreencoded, proResProfileName, pixelFormat, x26
48
48
  throw new Error(`Codec ${codec} does not support hardware acceleration on ${process.platform}, but "hardwareAcceleration" is set to "required"`);
49
49
  }
50
50
  logger_1.Log.verbose({ indent, logLevel, tag: 'stitchFramesToVideo()' }, `Encoder: ${encoderName}, hardware accelerated: ${hardwareAccelerated}`);
51
- const resolvedColorSpace = colorSpace !== null && colorSpace !== void 0 ? colorSpace : color_space_1.DEFAULT_COLOR_SPACE;
51
+ const resolvedColorSpace = codec === 'gif' ? 'bt601' : (colorSpace !== null && colorSpace !== void 0 ? colorSpace : color_space_1.DEFAULT_COLOR_SPACE);
52
52
  const colorSpaceOptions = resolvedColorSpace === 'bt709'
53
53
  ? [
54
54
  ['-colorspace:v', 'bt709'],
package/dist/index.d.ts CHANGED
@@ -30,6 +30,7 @@ export { openBrowser } from './open-browser';
30
30
  export type { ChromiumOptions } from './open-browser';
31
31
  export { ChromeMode } from './options/chrome-mode';
32
32
  export { ColorSpace } from './options/color-space';
33
+ export type { Concurrency } from './options/concurrency';
33
34
  export type { DeleteAfter } from './options/delete-after';
34
35
  export { OpenGlRenderer } from './options/gl';
35
36
  export { NumberOfGifLoops } from './options/number-of-gif-loops';
@@ -486,6 +487,7 @@ export declare const RenderInternals: {
486
487
  value: null;
487
488
  };
488
489
  setConfig: (size: number | null) => void;
490
+ id: "media-cache-size-in-bytes";
489
491
  };
490
492
  readonly offthreadVideoCacheSizeInBytes: {
491
493
  name: string;
@@ -504,6 +506,7 @@ export declare const RenderInternals: {
504
506
  value: null;
505
507
  };
506
508
  setConfig: (size: number | null) => void;
509
+ id: "offthreadvideo-cache-size-in-bytes";
507
510
  };
508
511
  readonly offthreadVideoThreads: {
509
512
  name: string;
@@ -522,6 +525,7 @@ export declare const RenderInternals: {
522
525
  value: null;
523
526
  };
524
527
  setConfig: (size: number | null) => void;
528
+ id: "offthreadvideo-video-threads";
525
529
  };
526
530
  readonly jpegQuality: {
527
531
  name: string;
@@ -537,6 +541,7 @@ export declare const RenderInternals: {
537
541
  source: string;
538
542
  value: number;
539
543
  };
544
+ id: "jpeg-quality";
540
545
  };
541
546
  readonly logLevel: {
542
547
  cliFlag: "log";
@@ -552,6 +557,7 @@ export declare const RenderInternals: {
552
557
  };
553
558
  setConfig: (newLogLevel: "error" | "info" | "trace" | "verbose" | "warn") => void;
554
559
  type: "error" | "info" | "trace" | "verbose" | "warn";
560
+ id: "log";
555
561
  };
556
562
  readonly timeoutInMilliseconds: {
557
563
  name: string;
@@ -567,6 +573,7 @@ export declare const RenderInternals: {
567
573
  value: number;
568
574
  };
569
575
  setConfig: (value: number) => void;
576
+ id: "timeout";
570
577
  };
571
578
  readonly binariesDirectory: {
572
579
  name: string;
@@ -582,6 +589,7 @@ export declare const RenderInternals: {
582
589
  value: string | null;
583
590
  };
584
591
  setConfig: (value: string | null) => void;
592
+ id: "binaries-directory";
585
593
  };
586
594
  readonly onBrowserDownload: {
587
595
  name: string;
@@ -592,6 +600,7 @@ export declare const RenderInternals: {
592
600
  type: import(".").OnBrowserDownload;
593
601
  getValue: () => never;
594
602
  setConfig: () => never;
603
+ id: "on-browser-download";
595
604
  };
596
605
  readonly chromeMode: {
597
606
  cliFlag: "chrome-mode";
@@ -607,6 +616,7 @@ export declare const RenderInternals: {
607
616
  };
608
617
  setConfig: (newChromeMode: "chrome-for-testing" | "headless-shell") => void;
609
618
  type: "chrome-for-testing" | "headless-shell";
619
+ id: "chrome-mode";
610
620
  };
611
621
  readonly apiKey: {
612
622
  name: string;
@@ -622,6 +632,7 @@ export declare const RenderInternals: {
622
632
  value: string | null;
623
633
  };
624
634
  setConfig: (value: string | null) => void;
635
+ id: "api-key";
625
636
  };
626
637
  readonly licenseKey: {
627
638
  name: string;
@@ -637,6 +648,7 @@ export declare const RenderInternals: {
637
648
  value: string | null;
638
649
  };
639
650
  setConfig: (value: string | null) => void;
651
+ id: "license-key";
640
652
  };
641
653
  }, "apiKey">>) => Promise<{
642
654
  buffer: Buffer | null;
@@ -663,6 +675,7 @@ export declare const RenderInternals: {
663
675
  };
664
676
  setConfig: (newLogLevel: "error" | "info" | "trace" | "verbose" | "warn") => void;
665
677
  type: "error" | "info" | "trace" | "verbose" | "warn";
678
+ id: "log";
666
679
  };
667
680
  readonly onBrowserDownload: {
668
681
  name: string;
@@ -673,6 +686,7 @@ export declare const RenderInternals: {
673
686
  type: import(".").OnBrowserDownload;
674
687
  getValue: () => never;
675
688
  setConfig: () => never;
689
+ id: "on-browser-download";
676
690
  };
677
691
  readonly chromeMode: {
678
692
  cliFlag: "chrome-mode";
@@ -688,6 +702,7 @@ export declare const RenderInternals: {
688
702
  };
689
703
  setConfig: (newChromeMode: "chrome-for-testing" | "headless-shell") => void;
690
704
  type: "chrome-for-testing" | "headless-shell";
705
+ id: "chrome-mode";
691
706
  };
692
707
  }>) => Promise<HeadlessBrowser>;
693
708
  internalSelectComposition: (options: {
@@ -721,6 +736,7 @@ export declare const RenderInternals: {
721
736
  value: null;
722
737
  };
723
738
  setConfig: (size: number | null) => void;
739
+ id: "media-cache-size-in-bytes";
724
740
  };
725
741
  readonly offthreadVideoCacheSizeInBytes: {
726
742
  name: string;
@@ -739,6 +755,7 @@ export declare const RenderInternals: {
739
755
  value: null;
740
756
  };
741
757
  setConfig: (size: number | null) => void;
758
+ id: "offthreadvideo-cache-size-in-bytes";
742
759
  };
743
760
  readonly offthreadVideoThreads: {
744
761
  name: string;
@@ -757,6 +774,7 @@ export declare const RenderInternals: {
757
774
  value: null;
758
775
  };
759
776
  setConfig: (size: number | null) => void;
777
+ id: "offthreadvideo-video-threads";
760
778
  };
761
779
  readonly logLevel: {
762
780
  cliFlag: "log";
@@ -772,6 +790,7 @@ export declare const RenderInternals: {
772
790
  };
773
791
  setConfig: (newLogLevel: "error" | "info" | "trace" | "verbose" | "warn") => void;
774
792
  type: "error" | "info" | "trace" | "verbose" | "warn";
793
+ id: "log";
775
794
  };
776
795
  readonly timeoutInMilliseconds: {
777
796
  name: string;
@@ -787,6 +806,7 @@ export declare const RenderInternals: {
787
806
  value: number;
788
807
  };
789
808
  setConfig: (value: number) => void;
809
+ id: "timeout";
790
810
  };
791
811
  readonly binariesDirectory: {
792
812
  name: string;
@@ -802,6 +822,7 @@ export declare const RenderInternals: {
802
822
  value: string | null;
803
823
  };
804
824
  setConfig: (value: string | null) => void;
825
+ id: "binaries-directory";
805
826
  };
806
827
  readonly onBrowserDownload: {
807
828
  name: string;
@@ -812,6 +833,7 @@ export declare const RenderInternals: {
812
833
  type: import(".").OnBrowserDownload;
813
834
  getValue: () => never;
814
835
  setConfig: () => never;
836
+ id: "on-browser-download";
815
837
  };
816
838
  readonly chromeMode: {
817
839
  cliFlag: "chrome-mode";
@@ -827,6 +849,7 @@ export declare const RenderInternals: {
827
849
  };
828
850
  setConfig: (newChromeMode: "chrome-for-testing" | "headless-shell") => void;
829
851
  type: "chrome-for-testing" | "headless-shell";
852
+ id: "chrome-mode";
830
853
  };
831
854
  }>) => Promise<{
832
855
  metadata: import("remotion").VideoConfig;
@@ -862,6 +885,7 @@ export declare const RenderInternals: {
862
885
  value: null;
863
886
  };
864
887
  setConfig: (size: number | null) => void;
888
+ id: "media-cache-size-in-bytes";
865
889
  };
866
890
  readonly offthreadVideoCacheSizeInBytes: {
867
891
  name: string;
@@ -880,6 +904,7 @@ export declare const RenderInternals: {
880
904
  value: null;
881
905
  };
882
906
  setConfig: (size: number | null) => void;
907
+ id: "offthreadvideo-cache-size-in-bytes";
883
908
  };
884
909
  readonly offthreadVideoThreads: {
885
910
  name: string;
@@ -898,6 +923,7 @@ export declare const RenderInternals: {
898
923
  value: null;
899
924
  };
900
925
  setConfig: (size: number | null) => void;
926
+ id: "offthreadvideo-video-threads";
901
927
  };
902
928
  readonly logLevel: {
903
929
  cliFlag: "log";
@@ -913,6 +939,7 @@ export declare const RenderInternals: {
913
939
  };
914
940
  setConfig: (newLogLevel: "error" | "info" | "trace" | "verbose" | "warn") => void;
915
941
  type: "error" | "info" | "trace" | "verbose" | "warn";
942
+ id: "log";
916
943
  };
917
944
  readonly timeoutInMilliseconds: {
918
945
  name: string;
@@ -928,6 +955,7 @@ export declare const RenderInternals: {
928
955
  value: number;
929
956
  };
930
957
  setConfig: (value: number) => void;
958
+ id: "timeout";
931
959
  };
932
960
  readonly binariesDirectory: {
933
961
  name: string;
@@ -943,6 +971,7 @@ export declare const RenderInternals: {
943
971
  value: string | null;
944
972
  };
945
973
  setConfig: (value: string | null) => void;
974
+ id: "binaries-directory";
946
975
  };
947
976
  readonly onBrowserDownload: {
948
977
  name: string;
@@ -953,6 +982,7 @@ export declare const RenderInternals: {
953
982
  type: import(".").OnBrowserDownload;
954
983
  getValue: () => never;
955
984
  setConfig: () => never;
985
+ id: "on-browser-download";
956
986
  };
957
987
  readonly chromeMode: {
958
988
  cliFlag: "chrome-mode";
@@ -968,6 +998,7 @@ export declare const RenderInternals: {
968
998
  };
969
999
  setConfig: (newChromeMode: "chrome-for-testing" | "headless-shell") => void;
970
1000
  type: "chrome-for-testing" | "headless-shell";
1001
+ id: "chrome-mode";
971
1002
  };
972
1003
  }>) => Promise<import("remotion").VideoConfig[]>;
973
1004
  internalRenderFrames: (args_0: {
@@ -1018,6 +1049,7 @@ export declare const RenderInternals: {
1018
1049
  value: null;
1019
1050
  };
1020
1051
  setConfig: (size: number | null) => void;
1052
+ id: "media-cache-size-in-bytes";
1021
1053
  };
1022
1054
  readonly forSeamlessAacConcatenation: {
1023
1055
  name: string;
@@ -1036,6 +1068,7 @@ export declare const RenderInternals: {
1036
1068
  setConfig: (value: boolean) => void;
1037
1069
  ssrName: string;
1038
1070
  type: boolean;
1071
+ id: "for-seamless-aac-concatenation";
1039
1072
  };
1040
1073
  readonly offthreadVideoCacheSizeInBytes: {
1041
1074
  name: string;
@@ -1054,6 +1087,7 @@ export declare const RenderInternals: {
1054
1087
  value: null;
1055
1088
  };
1056
1089
  setConfig: (size: number | null) => void;
1090
+ id: "offthreadvideo-cache-size-in-bytes";
1057
1091
  };
1058
1092
  readonly offthreadVideoThreads: {
1059
1093
  name: string;
@@ -1072,6 +1106,7 @@ export declare const RenderInternals: {
1072
1106
  value: null;
1073
1107
  };
1074
1108
  setConfig: (size: number | null) => void;
1109
+ id: "offthreadvideo-video-threads";
1075
1110
  };
1076
1111
  readonly jpegQuality: {
1077
1112
  name: string;
@@ -1087,6 +1122,7 @@ export declare const RenderInternals: {
1087
1122
  source: string;
1088
1123
  value: number;
1089
1124
  };
1125
+ id: "jpeg-quality";
1090
1126
  };
1091
1127
  readonly logLevel: {
1092
1128
  cliFlag: "log";
@@ -1102,6 +1138,7 @@ export declare const RenderInternals: {
1102
1138
  };
1103
1139
  setConfig: (newLogLevel: "error" | "info" | "trace" | "verbose" | "warn") => void;
1104
1140
  type: "error" | "info" | "trace" | "verbose" | "warn";
1141
+ id: "log";
1105
1142
  };
1106
1143
  readonly timeoutInMilliseconds: {
1107
1144
  name: string;
@@ -1117,6 +1154,7 @@ export declare const RenderInternals: {
1117
1154
  value: number;
1118
1155
  };
1119
1156
  setConfig: (value: number) => void;
1157
+ id: "timeout";
1120
1158
  };
1121
1159
  readonly binariesDirectory: {
1122
1160
  name: string;
@@ -1132,6 +1170,7 @@ export declare const RenderInternals: {
1132
1170
  value: string | null;
1133
1171
  };
1134
1172
  setConfig: (value: string | null) => void;
1173
+ id: "binaries-directory";
1135
1174
  };
1136
1175
  readonly onBrowserDownload: {
1137
1176
  name: string;
@@ -1142,6 +1181,7 @@ export declare const RenderInternals: {
1142
1181
  type: import(".").OnBrowserDownload;
1143
1182
  getValue: () => never;
1144
1183
  setConfig: () => never;
1184
+ id: "on-browser-download";
1145
1185
  };
1146
1186
  readonly chromeMode: {
1147
1187
  cliFlag: "chrome-mode";
@@ -1157,6 +1197,7 @@ export declare const RenderInternals: {
1157
1197
  };
1158
1198
  setConfig: (newChromeMode: "chrome-for-testing" | "headless-shell") => void;
1159
1199
  type: "chrome-for-testing" | "headless-shell";
1200
+ id: "chrome-mode";
1160
1201
  };
1161
1202
  readonly imageSequencePattern: {
1162
1203
  name: string;
@@ -1172,6 +1213,7 @@ export declare const RenderInternals: {
1172
1213
  source: string;
1173
1214
  };
1174
1215
  setConfig: (pattern: string | null) => void;
1216
+ id: "image-sequence-pattern";
1175
1217
  };
1176
1218
  }>) => Promise<import("./types").RenderFramesOutput>;
1177
1219
  internalRenderMedia: (args_0: import("./render-media").InternalRenderMediaOptions) => Promise<{
@@ -1236,6 +1278,7 @@ export declare const RenderInternals: {
1236
1278
  };
1237
1279
  setConfig: (newLogLevel: "error" | "info" | "trace" | "verbose" | "warn") => void;
1238
1280
  type: "error" | "info" | "trace" | "verbose" | "warn";
1281
+ id: "log";
1239
1282
  };
1240
1283
  readonly onBrowserDownload: {
1241
1284
  name: string;
@@ -1246,6 +1289,7 @@ export declare const RenderInternals: {
1246
1289
  type: import(".").OnBrowserDownload;
1247
1290
  getValue: () => never;
1248
1291
  setConfig: () => never;
1292
+ id: "on-browser-download";
1249
1293
  };
1250
1294
  readonly chromeMode: {
1251
1295
  cliFlag: "chrome-mode";
@@ -1261,6 +1305,7 @@ export declare const RenderInternals: {
1261
1305
  };
1262
1306
  setConfig: (newChromeMode: "chrome-for-testing" | "headless-shell") => void;
1263
1307
  type: "chrome-for-testing" | "headless-shell";
1308
+ id: "chrome-mode";
1264
1309
  };
1265
1310
  }>) => Promise<import("./ensure-browser").BrowserStatus>;
1266
1311
  printUsefulErrorMessage: (err: Error, logLevel: "error" | "info" | "trace" | "verbose" | "warn", indent: boolean) => void;
@@ -1,5 +1,5 @@
1
1
  import type { CancelSignal } from './make-cancel-signal';
2
- export declare const muxVideoAndAudio: ({ videoOutput, audioOutput, output, indent, logLevel, onProgress, binariesDirectory, fps, cancelSignal, addFaststart, metadata, }: {
2
+ export declare const muxVideoAndAudio: ({ videoOutput, audioOutput, output, indent, logLevel, onProgress, binariesDirectory, fps, cancelSignal, addFaststart, metadata, numberOfGifLoops, }: {
3
3
  videoOutput: string | null;
4
4
  audioOutput: string | null;
5
5
  output: string;
@@ -11,4 +11,5 @@ export declare const muxVideoAndAudio: ({ videoOutput, audioOutput, output, inde
11
11
  cancelSignal: CancelSignal | undefined;
12
12
  addFaststart: boolean;
13
13
  metadata?: Record<string, string> | null | undefined;
14
+ numberOfGifLoops: number | null;
14
15
  }) => Promise<void>;
@@ -2,11 +2,12 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.muxVideoAndAudio = void 0;
4
4
  const call_ffmpeg_1 = require("./call-ffmpeg");
5
+ const convert_number_of_gif_loops_to_ffmpeg_1 = require("./convert-number-of-gif-loops-to-ffmpeg");
5
6
  const logger_1 = require("./logger");
6
7
  const make_metadata_args_1 = require("./make-metadata-args");
7
8
  const parse_ffmpeg_progress_1 = require("./parse-ffmpeg-progress");
8
9
  const truthy_1 = require("./truthy");
9
- const muxVideoAndAudio = async ({ videoOutput, audioOutput, output, indent, logLevel, onProgress, binariesDirectory, fps, cancelSignal, addFaststart, metadata, }) => {
10
+ const muxVideoAndAudio = async ({ videoOutput, audioOutput, output, indent, logLevel, onProgress, binariesDirectory, fps, cancelSignal, addFaststart, metadata, numberOfGifLoops, }) => {
10
11
  var _a;
11
12
  const startTime = Date.now();
12
13
  logger_1.Log.verbose({ indent, logLevel }, 'Muxing video and audio together');
@@ -20,6 +21,10 @@ const muxVideoAndAudio = async ({ videoOutput, audioOutput, output, indent, logL
20
21
  videoOutput ? 'copy' : null,
21
22
  audioOutput ? '-c:a' : null,
22
23
  audioOutput ? 'copy' : null,
24
+ numberOfGifLoops === null ? null : '-loop',
25
+ numberOfGifLoops === null
26
+ ? null
27
+ : (0, convert_number_of_gif_loops_to_ffmpeg_1.convertNumberOfGifLoopsToFfmpegSyntax)(numberOfGifLoops),
23
28
  addFaststart ? '-movflags' : null,
24
29
  addFaststart ? 'faststart' : null,
25
30
  ...(0, make_metadata_args_1.makeMetadataArgs)(metadata !== null && metadata !== void 0 ? metadata : {}),
@@ -12,4 +12,5 @@ export declare const apiKeyOption: {
12
12
  value: string | null;
13
13
  };
14
14
  setConfig: (value: string | null) => void;
15
+ id: "api-key";
15
16
  };
@@ -28,4 +28,5 @@ exports.apiKeyOption = {
28
28
  setConfig: (value) => {
29
29
  currentApiKey = value;
30
30
  },
31
+ id: cliFlag,
31
32
  };
@@ -12,4 +12,5 @@ export declare const askAIOption: {
12
12
  source: string;
13
13
  };
14
14
  setConfig(value: boolean): void;
15
+ id: "disable-ask-ai";
15
16
  };
@@ -27,4 +27,5 @@ exports.askAIOption = {
27
27
  setConfig(value) {
28
28
  askAIEnabled = value;
29
29
  },
30
+ id: cliFlag,
30
31
  };
@@ -15,4 +15,5 @@ export declare const audioBitrateOption: {
15
15
  source: string;
16
16
  };
17
17
  setConfig: (value: string | null) => void;
18
+ id: "audio-bitrate";
18
19
  };
@@ -40,4 +40,5 @@ exports.audioBitrateOption = {
40
40
  setConfig: (value) => {
41
41
  audioBitrate = value;
42
42
  },
43
+ id: cliFlag,
43
44
  };
@@ -49,4 +49,5 @@ export declare const audioCodecOption: {
49
49
  name: string;
50
50
  ssrName: "audioCodec";
51
51
  type: "aac" | "mp3" | "opus" | "pcm-16";
52
+ id: "audio-codec";
52
53
  };
@@ -185,4 +185,5 @@ exports.audioCodecOption = {
185
185
  name: 'Audio Codec',
186
186
  ssrName,
187
187
  type: 'aac',
188
+ id: cliFlag,
188
189
  };
@@ -12,4 +12,5 @@ export declare const beepOnFinishOption: {
12
12
  source: string;
13
13
  };
14
14
  setConfig(value: boolean): void;
15
+ id: "beep-on-finish";
15
16
  };
@@ -32,4 +32,5 @@ exports.beepOnFinishOption = {
32
32
  setConfig(value) {
33
33
  beepOnFinish = value;
34
34
  },
35
+ id: cliFlag,
35
36
  };
@@ -12,4 +12,5 @@ export declare const binariesDirectoryOption: {
12
12
  value: string | null;
13
13
  };
14
14
  setConfig: (value: string | null) => void;
15
+ id: "binaries-directory";
15
16
  };
@@ -40,4 +40,5 @@ exports.binariesDirectoryOption = {
40
40
  setConfig: (value) => {
41
41
  currentDirectory = value;
42
42
  },
43
+ id: cliFlag,
43
44
  };
@@ -0,0 +1,17 @@
1
+ import type { BrowserExecutable } from '../browser-executable';
2
+ export declare const browserExecutableOption: {
3
+ name: string;
4
+ cliFlag: "browser-executable";
5
+ description: () => import("react/jsx-runtime").JSX.Element;
6
+ ssrName: "browserExecutable";
7
+ docLink: string;
8
+ type: BrowserExecutable;
9
+ getValue: ({ commandLine }: {
10
+ commandLine: Record<string, unknown>;
11
+ }) => {
12
+ source: string;
13
+ value: BrowserExecutable;
14
+ };
15
+ setConfig: (value: BrowserExecutable) => void;
16
+ id: "browser-executable";
17
+ };
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.browserExecutableOption = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ let currentBrowserExecutablePath = null;
6
+ const cliFlag = 'browser-executable';
7
+ exports.browserExecutableOption = {
8
+ name: 'Browser executable',
9
+ cliFlag,
10
+ description: () => (jsx_runtime_1.jsx(jsx_runtime_1.Fragment, { children: "Set a custom Chrome or Chromium executable path. By default Remotion will try to find an existing version of Chrome on your system and if not found, it will download one. This flag is useful if you don't have Chrome installed in a standard location and you want to prevent downloading an additional browser or need support for the H264 codec." })),
11
+ ssrName: 'browserExecutable',
12
+ docLink: 'https://www.remotion.dev/docs/config#setbrowserexecutable',
13
+ type: null,
14
+ getValue: ({ commandLine }) => {
15
+ if (commandLine[cliFlag] !== undefined) {
16
+ return {
17
+ source: 'cli',
18
+ value: commandLine[cliFlag],
19
+ };
20
+ }
21
+ if (currentBrowserExecutablePath !== null) {
22
+ return {
23
+ source: 'config',
24
+ value: currentBrowserExecutablePath,
25
+ };
26
+ }
27
+ return {
28
+ source: 'default',
29
+ value: null,
30
+ };
31
+ },
32
+ setConfig: (value) => {
33
+ currentBrowserExecutablePath = value;
34
+ },
35
+ id: cliFlag,
36
+ };
@@ -14,4 +14,5 @@ export declare const chromeModeOption: {
14
14
  };
15
15
  setConfig: (newChromeMode: "chrome-for-testing" | "headless-shell") => void;
16
16
  type: "chrome-for-testing" | "headless-shell";
17
+ id: "chrome-mode";
17
18
  };
@@ -48,4 +48,5 @@ exports.chromeModeOption = {
48
48
  configSelection = newChromeMode;
49
49
  },
50
50
  type: 'headless-shell',
51
+ id: cliFlag,
51
52
  };