Skip to main content
Xuất (exports) sẽ render một bản karaoke đã hoàn thiện thành một tệp video. Dùng client.exports.create(...) làm điểm vào chính. Chọn target: "local" khi bạn muốn SDK render trực tiếp trên máy hiện tại; nếu không thì xuất trên cloud là mặc định.

client.exports.create(projectId, input, options?)

Chọn đích xuất với target: "cloud" | "local".
const cloud = await client.exports.create("prj_abc123", {
  resolution: "1080p",
  quality: "high",
});
// => ExportOperation

const local = await client.exports.create("prj_abc123", {
  target: "local",
  resolution: "1080p",
  quality: "high",
  outputPath: "./karaoke.mp4",
});
// => { outputPath, fileSize, duration, ... }
Dùng cloud khi bạn muốn một quy trình xuất async được quản lý. Dùng local khi bạn muốn render trực tiếp trên máy của bên gọi.

Các trường dùng chung

TrườngKiểuMô tả
resolution"540p" | "720p" | "1080p"Độ phân giải đầu ra.
quality"low" | "average" | "high"Chất lượng mã hoá.
playbackRatenumberHệ số tốc độ (ví dụ 0.9).
toneFrequencynumberDịch cao độ theo số bán âm (semitones).
transparentbooleanRender với nền trong suốt.
presetIdstringÁp dụng một preset trước khi render.
stemVolumesRecord<string, number>Ghi đè âm lượng theo từng stem, theo stem id.
settingsOverrideobjectPatch cài đặt dự án chỉ cho lần xuất này.

Ví dụ với stem volumes

const result = await client.exports.create("prj_abc123", {
  resolution: "1080p",
  quality: "high",
  stemVolumes: {
    vocals: 0,
    instrumental: 1,
    backing: 0.5,
  },
});

Ví dụ với settings override

const result = await client.exports.create("prj_abc123", {
  resolution: "1080p",
  settingsOverride: {
    trim: { startSeconds: 5, endSeconds: 180 },
    style: {
      background: { type: "color", color: "#101010" },
    },
  },
});
Xem Render settings reference để biết đầy đủ cấu trúc settingsOverride.

client.exports.quote(projectId, input, options?)

Báo giá số credits cần cho một lần xuất trên cloud mà không khởi chạy xuất.
const quote = await client.exports.quote("prj_abc123", {
  resolution: "1080p",
  quality: "high",
  transparent: false,
});

console.log(quote.creditsRequired, quote.sufficientBalance);
Xuất local chạy trên máy của bên gọi và không dùng credits xuất cloud, vì vậy quote(...) chỉ dành cho xuất cloud.

client.exports.list(projectId, input?, options?)

Liệt kê các lần xuất của một dự án, có phân trang.
const exports = await client.exports.list("prj_abc123", {
  page: 1,
  pageSize: 50,
});
page
number
Số trang. Mặc định là 1 trên server.
pageSize
number
Kích thước trang. Mặc định là 100. Tối đa 100.

client.exports.get(exportId, options?)

Lấy một export chỉ theo ID, không cần biết dự án cha.
const exported = await client.exports.get("exp_xyz");

Xuất local

const result = await client.exports.create("prj_abc123", {
  target: "local",
  resolution: "1080p",
  quality: "high",
  outputPath: "./karaoke.mp4",
  onProgress(progress) {
    console.log(progress.stage, progress.percent);
  },
});

console.log(result.outputPath);
Dùng onDependencyProgress nếu bạn muốn cập nhật trong lúc bộ công cụ render local đang được cài đặt hoặc xác minh.

client.exports.prepareLocal(projectId, body, options?)

Trả về payload đã chuẩn bị cần thiết để render một export cục bộ. Dùng khi tích hợp với @youka/remotion hoặc một renderer local khác. Server trả về composition inputs, asset URLs, và render parameters mà không xếp hàng một lần render trên cloud.
const payload = await client.exports.prepareLocal("prj_abc123", {
  resolution: "1080p",
  quality: "high",
});

// Hand payload off to your local renderer
await renderLocally(payload);
client.exports.prepareLocal(...) không khởi chạy render trên cloud. Không có compute tính phí nào được tiêu thụ ở phía Youka.

Chờ một export

Xuất cloud là async. Dùng client.exports.wait(...):
const operation = await client.exports.create("prj_abc123", {
  resolution: "1080p",
});

const finalized = await client.exports.wait(operation, {
  pollIntervalMs: 3_000,
});
console.log("Download from", finalized.url);

Tải kết quả

Xuất cloud hoàn tất với một url đã ký. Dùng helper tích hợp sẵn để stream tệp xuống ổ đĩa. output có thể là một thư mục hoặc một đường dẫn tệp đầy đủ, và filename là tuỳ chọn:
await client.exports.download(finalized, {
  output: "./exports",
});

Tiếp theo

  • Tasks — operation handles và polling nâng cao cho task
  • Presets — cấu hình render tái sử dụng
  • Project settings — patch cài đặt đang hoạt động của một dự án