> ## 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.

# Exports

> Rendre des vidéos de karaoké dans le cloud ou en local

Les exports rendent un karaoké finalisé sous forme de fichier vidéo. Utilisez `client.exports.create(...)` comme point d’entrée principal. Choisissez `target: "local"` lorsque vous voulez que le SDK rende directement sur la machine actuelle ; sinon, l’export cloud est le comportement par défaut.

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

Choisissez la cible d’export avec `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, ... }
```

Utilisez le cloud lorsque vous voulez un export asynchrone géré. Utilisez le local lorsque vous voulez rendre directement sur la machine de l’appelant.

### Champs communs

| Champ              | Type                                  | Description                                                                                     |
| ------------------ | ------------------------------------- | ----------------------------------------------------------------------------------------------- |
| `resolution`       | `"540p" \| "720p" \| "1080p" \| "4k"` | Résolution de sortie.                                                                           |
| `quality`          | `"low" \| "average" \| "high"`        | Qualité d’encodage.                                                                             |
| `fps`              | `30 \| 60`                            | Images par seconde. La valeur par défaut est `30`. Utilisez `60` pour un mouvement plus fluide. |
| `playbackRate`     | `number`                              | Multiplicateur de vitesse (p. ex. `0.9`).                                                       |
| `toneFrequency`    | `number`                              | Décalage de hauteur en demi-tons.                                                               |
| `transparent`      | `boolean`                             | Rendre avec un arrière-plan transparent.                                                        |
| `presetId`         | `string`                              | Appliquer un preset avant le rendu.                                                             |
| `stemVolumes`      | `Record<string, number>`              | Surcharges de volume par stem, indexées par id de stem.                                         |
| `settingsOverride` | `object`                              | Patch des réglages du projet uniquement pour cet export.                                        |

Utilisez `fps: 60` pour un mouvement plus fluide. Les devis cloud appliquent un multiplicateur de crédits de `1.5x` à `60 fps`. Les exports cloud transparents à 60 fps sont disponibles lorsque la durée et la résolution choisies respectent les limites cloud.

### Exemple avec des volumes de stem

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

### Exemple avec une surcharge de réglages

```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" },
    },
  },
});
```

Voir [Render settings reference](/en/render-settings-reference) pour la forme complète de
`settingsOverride`.

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

Estimer les crédits requis pour un export cloud sans démarrer l’export.

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

console.log(quote.creditsRequired, quote.sufficientBalance);
```

Les exports locaux s’exécutent sur la machine de l’appelant et n’utilisent pas de crédits d’export cloud ;
ainsi, `quote(...)` ne concerne que les exports cloud.

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

Lister les exports d’un projet, avec pagination.

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

<ParamField path="page" type="number">
  Numéro de page. Par défaut `1` côté serveur.
</ParamField>

<ParamField path="pageSize" type="number">
  Taille de page. Par défaut `100`. Maximum `100`.
</ParamField>

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

Récupérer un export par son ID uniquement, sans connaître le projet parent.

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

## Export local

```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);
```

Utilisez `onDependencyProgress` si vous voulez des mises à jour pendant l’installation ou la vérification de la chaîne d’outils de rendu local.

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

Retourne la charge utile préparée nécessaire pour rendre un export localement. Utilisez ceci lors de l’intégration avec `@youka/remotion` ou un autre moteur de rendu local. Le serveur renvoie les entrées de composition, les URL d’assets et les paramètres de rendu sans mettre en file d’attente un rendu cloud.

```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(...)` ne démarre pas un rendu cloud. Aucun calcul
  facturable n’est consommé côté Youka.
</Note>

## Attendre un export

Les exports cloud sont asynchrones. Utilisez `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);
```

## Télécharger le résultat

Les exports cloud se terminent avec une `url` signée. Utilisez l’assistant intégré pour streamer le fichier sur disque. `output` peut être soit un répertoire, soit un chemin de fichier complet, et `filename` est optionnel :

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

## Et ensuite

* [Tasks](/fr/sdk/tasks) — handles d’opérations et polling avancé des tâches
* [Presets](/fr/sdk/presets) — configurations de rendu réutilisables
* [Project settings](/fr/sdk/project-settings) — patch des réglages actifs d’un projet
