Combo

Basic Usage

Fundamentals of using the DesignCombo Video SDK.

Creating a Studio

import { Studio } from "@designcombo/video";

const studio = new Studio({
  width: 1920,
  height: 1080,
  fps: 30,
  bgColor: "#ffffff",
  canvas: document.getElementById("canvas") as HTMLCanvasElement,
});

await studio.ready;

Adding Clips

Adding Image Clips

import { Image } from "@designcombo/video";

// Load image clip asynchronously
const imageClip = await Image.fromUrl("photo.jpg");

imageClip.left = 100;
imageClip.top = 100;
imageClip.width = 800;
imageClip.height = 600;

// Set timeline position (in microseconds)
// 0 to 5 seconds
imageClip.display = {
  from: 0,
  to: 5e6,
};

studio.addClip(imageClip);

Adding Video Clips

import { Video } from "@designcombo/video";

// Load video clip asynchronously
const videoClip = await Video.fromUrl("clip.mp4");

videoClip.left = 0;
videoClip.top = 0;
videoClip.width = 1920;
videoClip.height = 1080;

// Set timeline position (microseconds)
// 5 to 15 seconds
videoClip.display = {
  from: 5e6,
  to: 15e6,
};

studio.addClip(videoClip);

Adding Text Clips

import { Text } from "@designcombo/video";

const textClip = new Text("Hello World", {
  fontSize: 48,
  fontFamily: "Ubuntu",
  fill: "#ffffff",
});

textClip.left = 960;
textClip.top = 540;

// Set timeline position (microseconds)
textClip.display = {
  from: 0,
  to: 10e6,
};

studio.addClip(textClip);

Loading Multiple Clips in Parallel

import { Image, Video } from "@designcombo/video";

// Efficient parallel loading
const [imageClip1, imageClip2, videoClip] = await Promise.all([
  Image.fromUrl("photo1.jpg"),
  Image.fromUrl("photo2.jpg"),
  Video.fromUrl("clip1.mp4"),
]);

// Set timeline positions (microseconds)
imageClip1.display = { from: 0, to: 5e6 };
imageClip2.display = { from: 5e6, to: 10e6 };
videoClip.display = { from: 10e6, to: 20e6 };

studio.addClip(imageClip1);
studio.addClip(imageClip2);
studio.addClip(videoClip);

Handling Loading States

import { Video, Log } from "@designcombo/video";

try {
  const videoClip = await Video.fromUrl("clip.mp4");
  studio.addClip(videoClip);
  console.log("Video clip loaded successfully");
} catch (error) {
  Log.error("Failed to load video clip:", error);
}

On this page