Skip to main content
Exporte rendern ein fertiges Karaoke als Videodatei. Verwende client.exports.create(...) als wichtigsten Einstiegspunkt. Wähle target: "local", wenn das SDK direkt auf der aktuellen Maschine rendern soll; andernfalls ist der Cloud-Export der Standard.

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

Wähle das Exportziel mit 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, ... }
Verwende Cloud, wenn du einen verwalteten asynchronen Export möchtest. Verwende Local, wenn du direkt auf der Maschine des Aufrufers rendern willst.

Gemeinsame Felder

FeldTypBeschreibung
resolution"540p" | "720p" | "1080p"Ausgabeauflösung.
quality"low" | "average" | "high"Kodierungsqualität.
playbackRatenumberGeschwindigkeitsmultiplikator (z. B. 0.9).
toneFrequencynumberTonhöhenverschiebung in Halbtönen.
transparentbooleanMit transparentem Hintergrund rendern.
presetIdstringVor dem Rendern ein Preset anwenden.
stemVolumesRecord<string, number>Pro-Stem-Lautstärke-Overrides, nach Stem-ID.
settingsOverrideobjectProjekt-Einstellungen nur für diesen Export patchen.

Beispiel mit Stem-Lautstärken

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

Beispiel mit Settings-Override

const result = await client.exports.create("prj_abc123", {
  resolution: "1080p",
  settingsOverride: {
    trim: { startSeconds: 5, endSeconds: 180 },
    style: {
      background: { type: "color", color: "#101010" },
    },
  },
});
Siehe Referenz zu Render-Einstellungen für die vollständige settingsOverride-Struktur.

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

Ermittle die Credits, die für einen Cloud-Export benötigt werden, ohne den Export zu starten.
const quote = await client.exports.quote("prj_abc123", {
  resolution: "1080p",
  quality: "high",
  transparent: false,
});

console.log(quote.creditsRequired, quote.sufficientBalance);
Lokale Exporte laufen auf der Maschine des Aufrufers und verwenden keine Cloud-Export-Credits, daher ist quote(...) nur für Cloud-Exporte.

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

Liste Exporte für ein Projekt auf, mit Pagination.
const exports = await client.exports.list("prj_abc123", {
  page: 1,
  pageSize: 50,
});
page
number
Seitennummer. Standardmäßig 1 auf dem Server.
pageSize
number
Seitengröße. Standardmäßig 100. Maximal 100.

client.exports.get(exportId, options?)

Rufe einen Export allein anhand der ID ab, ohne das übergeordnete Projekt zu kennen.
const exported = await client.exports.get("exp_xyz");

Lokaler Export

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);
Verwende onDependencyProgress, wenn du Updates möchtest, während die lokale Render-Toolchain installiert oder verifiziert wird.

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

Gib die vorbereitete Payload zurück, die zum lokalen Rendern eines Exports benötigt wird. Verwende dies bei der Integration mit @youka/remotion oder einem anderen lokalen Renderer. Der Server gibt die Composition-Inputs, Asset-URLs und Render-Parameter zurück, ohne ein Cloud-Rendering in die Warteschlange zu stellen.
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(...) startet kein Cloud-Rendering. Es werden auf Youka-Seite keine kostenpflichtigen Compute-Ressourcen verbraucht.

Auf einen Export warten

Cloud-Exporte sind asynchron. Verwende 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);

Ergebnis herunterladen

Cloud-Exporte enden mit einer signierten url. Verwende den integrierten Helper, um die Datei auf die Festplatte zu streamen. output kann entweder ein Verzeichnis oder ein vollständiger Dateipfad sein, und filename ist optional:
await client.exports.download(finalized, {
  output: "./exports",
});

Was als Nächstes

  • Tasks — Operation-Handles und erweitertes Task-Polling
  • Presets — wiederverwendbare Render-Konfigurationen
  • Project settings — die aktiven Einstellungen eines Projekts patchen