Skip to main content
Экспорт рендерит готовое караоке в видеофайл. Используйте client.exports.create(...) как основную точку входа. Выбирайте target: "local", когда хотите, чтобы SDK рендерил прямо на текущей машине; иначе по умолчанию используется облачный экспорт.

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

Выберите цель экспорта с 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, ... }
Используйте облако, когда вам нужен управляемый асинхронный экспорт. Используйте локальный режим, когда хотите рендерить напрямую на машине вызывающего.

Общие поля

ПолеТипОписание
resolution"540p" | "720p" | "1080p"Выходное разрешение.
quality"low" | "average" | "high"Качество кодирования.
playbackRatenumberМножитель скорости (например, 0.9).
toneFrequencynumberСдвиг высоты тона в полутонах.
transparentbooleanРендер с прозрачным фоном.
presetIdstringПрименить пресет перед рендером.
stemVolumesRecord<string, number>Переопределения громкости по стемам по id стема.
settingsOverrideobjectПатч настроек проекта только для этого экспорта.

Пример с громкостью стемов

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

Пример с переопределением настроек

const result = await client.exports.create("prj_abc123", {
  resolution: "1080p",
  settingsOverride: {
    trim: { startSeconds: 5, endSeconds: 180 },
    style: {
      background: { type: "color", color: "#101010" },
    },
  },
});
См. Справочник настроек рендера для полной формы settingsOverride.

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

Оцените количество кредитов, требуемых для облачного экспорта, не запуская экспорт.
const quote = await client.exports.quote("prj_abc123", {
  resolution: "1080p",
  quality: "high",
  transparent: false,
});

console.log(quote.creditsRequired, quote.sufficientBalance);
Локальные экспорты выполняются на машине вызывающего и не используют кредиты облачного экспорта, поэтому quote(...) предназначен только для облачных экспортов.

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

Список экспортов проекта с пагинацией.
const exports = await client.exports.list("prj_abc123", {
  page: 1,
  pageSize: 50,
});
page
number
Номер страницы. По умолчанию на сервере 1.
pageSize
number
Размер страницы. По умолчанию 100. Максимум 100.

client.exports.get(exportId, options?)

Получить экспорт только по ID, не зная родительский проект.
const exported = await client.exports.get("exp_xyz");

Локальный экспорт

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);
Используйте onDependencyProgress, если хотите получать обновления во время установки или проверки локального инструментария рендера.

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

Вернуть подготовленный payload, необходимый для локального рендера экспорта. Используйте это при интеграции с @youka/remotion или другим локальным рендерером. Сервер возвращает входные данные композиции, URL ассетов и параметры рендера без постановки облачного рендера в очередь.
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(...) не запускает облачный рендер. Никакие платные вычисления на стороне Youka не потребляются.

Ожидание экспорта

Облачные экспорты выполняются асинхронно. Используйте 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);

Скачивание результата

Облачные экспорты завершаются подписанным url. Используйте встроенный хелпер, чтобы стримить файл на диск. output может быть как директорией, так и полным путём к файлу, а filename — опционален:
await client.exports.download(finalized, {
  output: "./exports",
});

Что дальше

  • Tasks — дескрипторы операций и расширенный polling задач
  • Presets — переиспользуемые конфигурации рендера
  • Project settings — патчить активные настройки проекта