Skip to main content

渲染所有合成

在某些情况下,您可能会发现渲染所有合成很有用。

通过 CLI

您可以将 npx remotion compositions 命令与 bash 循环结合使用:

render-all.sh
sh
compositions=($(npx remotion compositions src/index.ts -q))
for composition in "${compositions[@]}"
do
npx remotion render src/index.ts $composition $composition.mp4
done
render-all.sh
sh
compositions=($(npx remotion compositions src/index.ts -q))
for composition in "${compositions[@]}"
do
npx remotion render src/index.ts $composition $composition.mp4
done

您可以使用以下命令执行:

sh
sh ./render-all.sh
sh
sh ./render-all.sh
note

这仅适用于基于 UNIX 的系统(Linux、macOS)和 Windows 中的 WSL。

通过 Node.JS 脚本

您可以使用 Node.JS APIs 创建适合您的脚本。以下是一个示例

render-all.mjs
ts
import { bundle } from "@remotion/bundler";
import { getCompositions, renderMedia } from "@remotion/renderer";
import { createRequire } from "module";
 
const require = createRequire(import.meta.url);
 
const bundled = await bundle({
entryPoint: require.resolve("./src/index.ts"),
// If you have a Webpack override, make sure to add it here
webpackOverride: (config) => config,
});
 
const compositions = await getCompositions(bundled);
 
for (const composition of compositions) {
console.log(`Rendering ${composition.id}...`);
await renderMedia({
codec: "h264",
composition,
serveUrl: bundled,
outputLocation: `out/${composition.id}.mp4`,
});
}
render-all.mjs
ts
import { bundle } from "@remotion/bundler";
import { getCompositions, renderMedia } from "@remotion/renderer";
import { createRequire } from "module";
 
const require = createRequire(import.meta.url);
 
const bundled = await bundle({
entryPoint: require.resolve("./src/index.ts"),
// If you have a Webpack override, make sure to add it here
webpackOverride: (config) => config,
});
 
const compositions = await getCompositions(bundled);
 
for (const composition of compositions) {
console.log(`Rendering ${composition.id}...`);
await renderMedia({
codec: "h264",
composition,
serveUrl: bundled,
outputLocation: `out/${composition.id}.mp4`,
});
}
执行
bash
node render-all.mjs
执行
bash
node render-all.mjs

另请参阅