> ## Documentation Index
> Fetch the complete documentation index at: https://docs.youka.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Exporte

> Karaoke-Videos in der Cloud oder lokal rendern

Exporte rendern ein fertiges Karaoke als Videodatei. Verwende `client.exports.create(...)` als wichtigsten Einstiegspunkt. Wähle `target: "local"`, wenn du möchtest, dass das SDK direkt auf der aktuellen Maschine rendert; ansonsten ist der Cloud-Export der Standard.

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

Wähle das Exportziel mit `target: "cloud" | "local"`.

```ts theme={null}
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

| Field              | Type                                  | Description                                                                     |
| ------------------ | ------------------------------------- | ------------------------------------------------------------------------------- |
| `resolution`       | `"540p" \| "720p" \| "1080p" \| "4k"` | Ausgabeauflösung.                                                               |
| `quality`          | `"low" \| "average" \| "high"`        | Kodierungsqualität.                                                             |
| `fps`              | `30 \| 60`                            | Bilder pro Sekunde. Standard ist `30`. Verwende `60` für flüssigere Bewegungen. |
| `playbackRate`     | `number`                              | Geschwindigkeitsmultiplikator (z. B. `0.9`).                                    |
| `toneFrequency`    | `number`                              | Tonhöhenverschiebung in Halbtönen.                                              |
| `transparent`      | `boolean`                             | Mit transparentem Hintergrund rendern.                                          |
| `presetId`         | `string`                              | Vor dem Rendern ein Preset anwenden.                                            |
| `stemVolumes`      | `Record<string, number>`              | Pro-Stem-Lautstärke-Überschreibungen, nach Stem-ID indiziert.                   |
| `settingsOverride` | `object`                              | Patcht die Projekteinstellungen nur für diesen Export.                          |

Verwende `fps: 60` für flüssigere Bewegungen. Cloud-Quotes wenden bei `60 fps` einen `1.5x`-Kredit-Multiplikator an. Transparente 60-fps-Cloud-Exporte sind verfügbar, wenn die gewählte Dauer und Auflösung innerhalb der Cloud-Limits liegen.

### Beispiel mit Stem-Lautstärken

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

### Beispiel mit Settings-Override

```ts theme={null}
const result = await client.exports.create("prj_abc123", {
  resolution: "1080p",
  settingsOverride: {
    trim: { startSeconds: 5, endSeconds: 180 },
    style: {
      background: { type: "color", color: "#101010" },
    },
  },
});
```

Siehe [Render settings reference](/en/render-settings-reference) für die vollständige
Form von `settingsOverride`.

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

Ermittelt die für einen Cloud-Export benötigten Credits, ohne den Export zu starten.

```ts theme={null}
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 nutzen keine Cloud-Export-Credits,
daher ist `quote(...)` nur für Cloud-Exporte.

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

Listet Exporte für ein Projekt auf, mit Pagination.

```ts theme={null}
const exports = await client.exports.list("prj_abc123", {
  page: 1,
  pageSize: 50,
});
```

<ParamField path="page" type="number">
  Seitennummer. Standard ist `1` auf dem Server.
</ParamField>

<ParamField path="pageSize" type="number">
  Seitengröße. Standard ist `100`. Maximum `100`.
</ParamField>

## `client.exports.get(exportId, options?)`

Ruft einen Export nur anhand der ID ab, ohne das übergeordnete Projekt zu kennen.

```ts theme={null}
const exported = await client.exports.get("exp_xyz");
```

## Lokaler Export

```ts theme={null}
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?)`

Gibt das vorbereitete Payload zurück, das benötigt wird, um einen Export lokal zu rendern. Verwende dies bei der Integration mit `@youka/remotion` oder einem anderen lokalen Renderer. Der Server liefert die Composition-Inputs, Asset-URLs und Render-Parameter zurück, ohne ein Cloud-Rendern in die Queue zu stellen.

```ts theme={null}
const payload = await client.exports.prepareLocal("prj_abc123", {
  resolution: "1080p",
  quality: "high",
});

// Hand payload off to your local renderer
await renderLocally(payload);
```

<Note>
  `client.exports.prepareLocal(...)` startet kein Cloud-Rendern. Es wird keine
  abrechenbare Rechenleistung auf Youka-Seite verbraucht.
</Note>

## Warten auf einen Export

Cloud-Exporte sind asynchron. Verwende `client.exports.wait(...)`:

```ts theme={null}
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 eingebauten Helper, um die Datei auf die Festplatte zu streamen. `output` kann entweder ein Verzeichnis oder ein vollständiger Dateipfad sein, und `filename` ist optional:

```ts theme={null}
await client.exports.download(finalized, {
  output: "./exports",
});
```

## Was als Nächstes

* [Tasks](/de/sdk/tasks) — Operation-Handles und erweitertes Task-Polling
* [Presets](/de/sdk/presets) — wiederverwendbare Render-Konfigurationen
* [Project settings](/de/sdk/project-settings) — die aktiven Einstellungen eines Projekts patchen
