Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 35 additions & 0 deletions ai-sdk/getting-started/generate-video-alibaba-wan-2-1-i2v-720.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
import dotenv from "dotenv";
import { runpod } from "@runpod/ai-sdk-provider";
import { experimental_generateVideo as generateVideo } from "ai";
import { writeFileSync } from "fs";

dotenv.config({ quiet: true });

console.log("generate-video-alibaba-wan-2-1-i2v-720\n");

async function main() {
const imageUrl =
process.argv[2] ||
"https://image.runpod.ai/demo/desert-oasis-camels-1280x720.png";

const { video } = await generateVideo({
model: runpod.video("alibaba/wan-2.1-i2v-720"),
prompt: {
text: "Animate the camels walking slowly toward the oasis, heat haze shimmering over the sand dunes, palm trees swaying gently in warm breeze",
image: imageUrl,
},
aspectRatio: "16:9",
});

const timestamp = new Date().toISOString().replace(/[:.]/g, "-");
const filename = `generated-video-alibaba-wan-2-1-i2v-720-${timestamp}.mp4`;

writeFileSync(filename, video.uint8Array);
console.log(`saved video: ${filename}`);
console.log(`size: ${(video.uint8Array.length / 1024 / 1024).toFixed(2)} MB`);
}

main().catch((err) => {
console.error("failed:", err?.message || err);
process.exit(1);
});
35 changes: 35 additions & 0 deletions ai-sdk/getting-started/generate-video-alibaba-wan-2-2-i2v-720.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
import dotenv from "dotenv";
import { runpod } from "@runpod/ai-sdk-provider";
import { experimental_generateVideo as generateVideo } from "ai";
import { writeFileSync } from "fs";

dotenv.config({ quiet: true });

console.log("generate-video-alibaba-wan-2-2-i2v-720\n");

async function main() {
const imageUrl =
process.argv[2] ||
"https://image.runpod.ai/demo/city-rain-neon-reflections-1280x720.png";

const { video } = await generateVideo({
model: runpod.video("alibaba/wan-2.2-i2v-720"),
prompt: {
text: "Animate the rainy city street with raindrops falling, neon reflections shimmering on wet pavement, taxis driving past, and steam rising from manholes",
image: imageUrl,
},
aspectRatio: "16:9",
});

const timestamp = new Date().toISOString().replace(/[:.]/g, "-");
const filename = `generated-video-alibaba-wan-2-2-i2v-720-${timestamp}.mp4`;

writeFileSync(filename, video.uint8Array);
console.log(`saved video: ${filename}`);
console.log(`size: ${(video.uint8Array.length / 1024 / 1024).toFixed(2)} MB`);
}

main().catch((err) => {
console.error("failed:", err?.message || err);
process.exit(1);
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
import dotenv from "dotenv";
import { runpod } from "@runpod/ai-sdk-provider";
import { experimental_generateVideo as generateVideo } from "ai";
import { writeFileSync } from "fs";

dotenv.config({ quiet: true });

console.log("generate-video-alibaba-wan-2-2-t2v-720-lora\n");

async function main() {
const imageUrl =
process.argv[2] ||
"https://image.runpod.ai/demo/japanese-garden-koi-pond-1280x720.png";

const { video } = await generateVideo({
model: runpod.video("alibaba/wan-2.2-t2v-720-lora"),
prompt: {
text: "Animate the koi pond with fish swimming, cherry blossoms falling gently, and soft ripples on the water surface",
image: imageUrl,
},
aspectRatio: "16:9",
});

const timestamp = new Date().toISOString().replace(/[:.]/g, "-");
const filename = `generated-video-alibaba-wan-2-2-t2v-720-lora-${timestamp}.mp4`;

writeFileSync(filename, video.uint8Array);
console.log(`saved video: ${filename}`);
console.log(`size: ${(video.uint8Array.length / 1024 / 1024).toFixed(2)} MB`);
}

main().catch((err) => {
console.error("failed:", err?.message || err);
process.exit(1);
});
35 changes: 35 additions & 0 deletions ai-sdk/getting-started/generate-video-alibaba-wan-2-5.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
import dotenv from "dotenv";
import { runpod } from "@runpod/ai-sdk-provider";
import { experimental_generateVideo as generateVideo } from "ai";
import { writeFileSync } from "fs";

dotenv.config({ quiet: true });

console.log("generate-video-alibaba-wan-2-5\n");

async function main() {
const imageUrl =
process.argv[2] ||
"https://image.runpod.ai/demo/steam-train-mountain-pass-1280x720.png";

const { video } = await generateVideo({
model: runpod.video("alibaba/wan-2.5"),
prompt: {
text: "Animate the steam train crossing the bridge with smoke billowing from the locomotive, autumn leaves drifting in the wind",
image: imageUrl,
},
aspectRatio: "16:9",
});

const timestamp = new Date().toISOString().replace(/[:.]/g, "-");
const filename = `generated-video-alibaba-wan-2-5-${timestamp}.mp4`;

writeFileSync(filename, video.uint8Array);
console.log(`saved video: ${filename}`);
console.log(`size: ${(video.uint8Array.length / 1024 / 1024).toFixed(2)} MB`);
}

main().catch((err) => {
console.error("failed:", err?.message || err);
process.exit(1);
});
35 changes: 35 additions & 0 deletions ai-sdk/getting-started/generate-video-alibaba-wan-2-6-i2v.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
import dotenv from "dotenv";
import { runpod } from "@runpod/ai-sdk-provider";
import { experimental_generateVideo as generateVideo } from "ai";
import { writeFileSync } from "fs";

dotenv.config({ quiet: true });

console.log("generate-video-alibaba-wan-2-6-i2v\n");

async function main() {
const imageUrl =
process.argv[2] ||
"https://image.runpod.ai/demo/underwater-coral-reef-1280x720.png";

const { video } = await generateVideo({
model: runpod.video("alibaba/wan-2.6-i2v"),
prompt: {
text: "Animate the tropical fish swimming through the coral reef, sunlight rays dancing through the water, gentle ocean current swaying the sea anemones",
image: imageUrl,
},
aspectRatio: "16:9",
});

const timestamp = new Date().toISOString().replace(/[:.]/g, "-");
const filename = `generated-video-alibaba-wan-2-6-i2v-${timestamp}.mp4`;

writeFileSync(filename, video.uint8Array);
console.log(`saved video: ${filename}`);
console.log(`size: ${(video.uint8Array.length / 1024 / 1024).toFixed(2)} MB`);
}

main().catch((err) => {
console.error("failed:", err?.message || err);
process.exit(1);
});
29 changes: 29 additions & 0 deletions ai-sdk/getting-started/generate-video-alibaba-wan-2-6-t2v.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
import dotenv from "dotenv";
import { runpod } from "@runpod/ai-sdk-provider";
import { experimental_generateVideo as generateVideo } from "ai";
import { writeFileSync } from "fs";

dotenv.config({ quiet: true });

console.log("generate-video-alibaba-wan-2-6-t2v\n");

async function main() {
const { video } = await generateVideo({
model: runpod.video("alibaba/wan-2.6-t2v"),
prompt:
"An astronaut floating in space with Earth visible in the background, photorealistic, 4K",
aspectRatio: "16:9",
});

const timestamp = new Date().toISOString().replace(/[:.]/g, "-");
const filename = `generated-video-alibaba-wan-2-6-t2v-${timestamp}.mp4`;

writeFileSync(filename, video.uint8Array);
console.log(`saved video: ${filename}`);
console.log(`size: ${(video.uint8Array.length / 1024 / 1024).toFixed(2)} MB`);
}

main().catch((err) => {
console.error("failed:", err?.message || err);
process.exit(1);
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
import dotenv from "dotenv";
import { runpod } from "@runpod/ai-sdk-provider";
import { experimental_generateVideo as generateVideo } from "ai";
import { writeFileSync } from "fs";

dotenv.config({ quiet: true });

console.log("generate-video-bytedance-seedance-v1-5-pro-i2v\n");

async function main() {
const imageUrl =
process.argv[2] ||
"https://image.runpod.ai/demo/sailboat-ocean-sunset-1280x720.png";

const { video } = await generateVideo({
model: runpod.video("bytedance/seedance-v1.5-pro-i2v"),
prompt: {
text: "Animate the sailboat gliding across calm ocean waves, seagulls soaring overhead, golden sunset light reflecting on the water",
image: imageUrl,
},
aspectRatio: "16:9",
});

const timestamp = new Date().toISOString().replace(/[:.]/g, "-");
const filename = `generated-video-bytedance-seedance-v1-5-pro-i2v-${timestamp}.mp4`;

writeFileSync(filename, video.uint8Array);
console.log(`saved video: ${filename}`);
console.log(`size: ${(video.uint8Array.length / 1024 / 1024).toFixed(2)} MB`);
}

main().catch((err) => {
console.error("failed:", err?.message || err);
process.exit(1);
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
import dotenv from "dotenv";
import { runpod } from "@runpod/ai-sdk-provider";
import { experimental_generateVideo as generateVideo } from "ai";
import { writeFileSync } from "fs";

dotenv.config({ quiet: true });

console.log("generate-video-kwaivgi-kling-v2-1-i2v-pro\n");

async function main() {
const imageUrl =
process.argv[2] ||
"https://image.runpod.ai/demo/northern-lights-cabin-1280x720.png";

const { video } = await generateVideo({
model: runpod.video("kwaivgi/kling-v2.1-i2v-pro"),
prompt: {
text: "Animate the aurora borealis dancing and shimmering across the night sky, warm light flickering in the cabin windows, snow gently falling",
image: imageUrl,
},
aspectRatio: "16:9",
});

const timestamp = new Date().toISOString().replace(/[:.]/g, "-");
const filename = `generated-video-kwaivgi-kling-v2-1-i2v-pro-${timestamp}.mp4`;

writeFileSync(filename, video.uint8Array);
console.log(`saved video: ${filename}`);
console.log(`size: ${(video.uint8Array.length / 1024 / 1024).toFixed(2)} MB`);
}

main().catch((err) => {
console.error("failed:", err?.message || err);
process.exit(1);
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
import dotenv from "dotenv";
import { runpod } from "@runpod/ai-sdk-provider";
import { experimental_generateVideo as generateVideo } from "ai";
import { writeFileSync } from "fs";

dotenv.config({ quiet: true });

console.log("generate-video-kwaivgi-kling-v2-6-std-motion-control\n");

async function main() {
const imageUrl =
process.argv[2] ||
"https://image.runpod.ai/demo/person-standing-garden-1280x720.png";

const videoUrl =
process.argv[3] ||
"https://image.runpod.ai/demo/person-motion-reference.mp4";

const { video } = await generateVideo({
model: runpod.video("kwaivgi/kling-v2.6-std-motion-control"),
prompt: {
text: "Animate the person with natural swaying motion, hair blowing gently in the wind, subtle body movement",
image: imageUrl,
},
aspectRatio: "16:9",
providerOptions: {
runpod: {
video: videoUrl,
},
},
});

const timestamp = new Date().toISOString().replace(/[:.]/g, "-");
const filename = `generated-video-kwaivgi-kling-v2-6-std-motion-control-${timestamp}.mp4`;

writeFileSync(filename, video.uint8Array);
console.log(`saved video: ${filename}`);
console.log(`size: ${(video.uint8Array.length / 1024 / 1024).toFixed(2)} MB`);
}

main().catch((err) => {
console.error("failed:", err?.message || err);
process.exit(1);
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
import dotenv from "dotenv";
import { runpod } from "@runpod/ai-sdk-provider";
import { experimental_generateVideo as generateVideo } from "ai";
import { writeFileSync } from "fs";

dotenv.config({ quiet: true });

console.log("generate-video-kwaivgi-kling-video-o1-r2v\n");

async function main() {
const imageUrl =
process.argv[2] ||
"https://image.runpod.ai/demo/hot-air-balloons-sunrise-1280x720.png";

const { video } = await generateVideo({
model: runpod.video("kwaivgi/kling-video-o1-r2v"),
prompt: {
text: "Animate the hot air balloons rising slowly through the misty valley, morning fog drifting across the landscape",
image: imageUrl,
},
aspectRatio: "16:9",
});

const timestamp = new Date().toISOString().replace(/[:.]/g, "-");
const filename = `generated-video-kwaivgi-kling-video-o1-r2v-${timestamp}.mp4`;

writeFileSync(filename, video.uint8Array);
console.log(`saved video: ${filename}`);
console.log(`size: ${(video.uint8Array.length / 1024 / 1024).toFixed(2)} MB`);
}

main().catch((err) => {
console.error("failed:", err?.message || err);
process.exit(1);
});
36 changes: 36 additions & 0 deletions ai-sdk/getting-started/generate-video-openai-sora-2-i2v.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
import dotenv from "dotenv";
import { runpod } from "@runpod/ai-sdk-provider";
import { experimental_generateVideo as generateVideo } from "ai";
import { writeFileSync } from "fs";

dotenv.config({ quiet: true });

console.log("generate-video-openai-sora-2-i2v\n");

async function main() {
const imageUrl =
process.argv[2] ||
"https://image.runpod.ai/demo/mountain-lake-reflection-1280x720.png";

const { video } = await generateVideo({
model: runpod.video("openai/sora-2-i2v"),
prompt: {
text: "Animate the mountain lake with gentle ripples breaking the mirror-like reflection, clouds drifting slowly over snow-capped peaks, wildflowers swaying in the breeze",
image: imageUrl,
},
aspectRatio: "16:9",
duration: 4,
});

const timestamp = new Date().toISOString().replace(/[:.]/g, "-");
const filename = `generated-video-openai-sora-2-i2v-${timestamp}.mp4`;

writeFileSync(filename, video.uint8Array);
console.log(`saved video: ${filename}`);
console.log(`size: ${(video.uint8Array.length / 1024 / 1024).toFixed(2)} MB`);
}

main().catch((err) => {
console.error("failed:", err?.message || err);
process.exit(1);
});
Loading