Skip to main content
Media là các tệp có thể tái sử dụng — nền video, hình ảnh tĩnh, logo và các clip intro/outro — mà bạn có thể tham chiếu từ preset hoặc cài đặt dự án. Tải lên một lần và tái sử dụng trên nhiều dự án.

Các loại media

LoạiMô tả
videoVideo nền lặp vòng.
imageHình nền tĩnh.
logoLớp phủ logo.
intro-videoPhát trước khi karaoke bắt đầu.
outro-videoPhát sau khi karaoke kết thúc.

client.media.list(options?)

Liệt kê tất cả media có thể tái sử dụng thuộc sở hữu của tài khoản đã xác thực.
const media = await client.media.list();

client.media.get(mediaId, options?)

Lấy một media item.
const media = await client.media.get("bg_abc123");

client.media.create(body, options?)

Tạo một media item mới từ đường dẫn cục bộ, bytes, hoặc inputFileId đã được tải lên sẵn. Với đường dẫn cục bộ và bytes, SDK sẽ chuẩn bị quá trình tải lên, gửi bytes của tệp đến upload URL, và đăng ký tệp đã tải lên như một media có thể tái sử dụng.
const media = await client.media.create({
  type: "video",
  source: {
    type: "path",
    path: "./background.mp4",
    contentType: "video/mp4",
  },
});
type
'video' | 'image' | 'logo' | 'intro-video' | 'outro-video'
required
Media item này đảm nhiệm vai trò nào trong một lần render.
source
object
Nguồn tệp. Dùng { type: "path", path } cho tệp cục bộ, { type: "bytes", data, filename } cho dữ liệu Blob, File, ArrayBuffer, hoặc typed array, hoặc { type: "inputFile", inputFileId } khi bạn đã có sẵn upload ID.
inputFileId
string
Tuỳ chọn nâng cao cấp thấp: truyền ID được trả về bởi client.uploads.create(...) thay vì source.

client.media.delete(mediaId, options?)

Xoá một media item.
await client.media.delete("bg_abc123", {
  idempotencyKey: "delete-bg_abc123",
});
Việc xoá media không ảnh hưởng đến các dự án hoặc bản xuất đã được render trước đó với media này. Những lần render trong tương lai tham chiếu đến media đã bị xoá sẽ quay về nền mặc định.

Ví dụ end-to-end

import { YoukaClient } from "@youka/sdk";

const client = new YoukaClient({ apiKey: process.env.YOUKA_API_KEY! });

async function uploadBackground(path: string, contentType: string) {
  return client.media.create({
    type: "video",
    source: {
      type: "path",
      path,
      contentType,
    },
  });
}

const media = await uploadBackground("./loop.mp4", "video/mp4");
console.log("Media ID:", media.id);

Áp dụng một nền

Tham chiếu media đã tải lên từ một preset hoặc trực tiếp từ cài đặt dự án:
const media = await uploadBackground("./loop.mp4", "video/mp4");

await client.projects.updateSettings("prj_abc123", {
  settings: {
    style: {
      background: {
        type: "video",
        url: media.url,
        objectFit: "cover",
      },
    },
  },
});
Để xem đầy đủ các trường được chấp nhận dưới background, hãy chuyển schema cài đặt dự án sang JSON:
import { RestUpdateProjectSettingsRequestSchema } from "@youka/sdk";

const schema = RestUpdateProjectSettingsRequestSchema.toJSONSchema();

Tiếp theo