const API_KEY = process.env.RENDI_API_KEY;
const submit = await fetch(
"https://api.rendi.dev/v1/run-chained-ffmpeg-commands",
{
method: "POST",
headers: {
"Content-Type": "application/json",
"X-API-KEY": API_KEY,
},
body: JSON.stringify({
input_files: {
in_1: "https://storage.rendi.dev/sample/sample.avi",
},
output_files: {
out_1: "thumbnail.jpg",
out_2: "preview.gif",
},
ffmpeg_commands: [
"-i {{in_1}} -ss 00:17 -vframes 1 {{out_1}}",
"-i {{in_1}} -vf \"select='lte(t,60)*gt(trunc(t/10),trunc(prev_t/10))',setpts='PTS*0.1',scale=trunc(oh*a/2)*2:80:force_original_aspect_ratio=decrease,pad=trunc(oh*a/2)*2:80:-1:-1\" -an -vsync vfr {{out_2}}",
],
}),
},
);
const { command_id } = await submit.json();
while (true) {
const res = await fetch(
`https://api.rendi.dev/v1/commands/${command_id}`,
{
headers: { "X-API-KEY": API_KEY },
},
);
const data = await res.json();
if (data.status === "SUCCESS") {
console.log("Thumbnail:", data.output_files.out_1.storage_url);
console.log("GIF:", data.output_files.out_2.storage_url);
break;
}
if (data.status === "FAILED") throw new Error("Command failed");
await new Promise((r) => setTimeout(r, 2000));
}