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

# Exportações

> Renderize vídeos de karaokê na nuvem ou localmente

As exportações renderizam um karaokê finalizado como um arquivo de vídeo. Use `client.exports.create(...)` como ponto de entrada principal. Escolha `target: "local"` quando quiser que o SDK renderize diretamente na máquina atual; caso contrário, a exportação na nuvem é o padrão.

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

Escolha o alvo da exportação com `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, ... }
```

Use a nuvem quando quiser uma exportação assíncrona gerenciada. Use local quando quiser renderizar diretamente na máquina do chamador.

### Campos comuns

| Campo              | Tipo                                  | Descrição                                                                    |
| ------------------ | ------------------------------------- | ---------------------------------------------------------------------------- |
| `resolution`       | `"540p" \| "720p" \| "1080p" \| "4k"` | Resolução de saída.                                                          |
| `quality`          | `"low" \| "average" \| "high"`        | Qualidade de codificação.                                                    |
| `fps`              | `30 \| 60`                            | Quadros por segundo. O padrão é `30`. Use `60` para um movimento mais suave. |
| `playbackRate`     | `number`                              | Multiplicador de velocidade (ex.: `0.9`).                                    |
| `toneFrequency`    | `number`                              | Deslocamento de tom em semitons.                                             |
| `transparent`      | `boolean`                             | Renderiza com um fundo transparente.                                         |
| `presetId`         | `string`                              | Aplica um preset antes de renderizar.                                        |
| `stemVolumes`      | `Record<string, number>`              | Substituições de volume por stem, indexadas pelo id do stem.                 |
| `settingsOverride` | `object`                              | Ajusta as configurações do projeto apenas para esta exportação.              |

Use `fps: 60` para um movimento mais suave. As cotações na nuvem aplicam um multiplicador de créditos de `1.5x` em `60 fps`. Exportações transparentes na nuvem a 60 fps ficam disponíveis quando a duração e a resolução selecionadas cabem nos limites da nuvem.

### Exemplo com volumes de stems

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

### Exemplo com substituição de configurações

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

Veja [Render settings reference](/en/render-settings-reference) para o formato completo de
`settingsOverride`.

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

Faça a cotação dos créditos necessários para uma exportação na nuvem sem iniciar a exportação.

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

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

As exportações locais rodam na máquina do chamador e não usam créditos de exportação na nuvem,
então `quote(...)` é apenas para exportações na nuvem.

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

Liste exportações de um projeto, com paginação.

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

<ParamField path="page" type="number">
  Número da página. O padrão no servidor é `1`.
</ParamField>

<ParamField path="pageSize" type="number">
  Tamanho da página. O padrão é `100`. Máximo `100`.
</ParamField>

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

Busque uma exportação apenas pelo ID, sem saber o projeto pai.

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

## Exportação 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);
```

Use `onDependencyProgress` se você quiser atualizações enquanto a cadeia de ferramentas de renderização local estiver sendo instalada ou verificada.

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

Retorna o payload preparado necessário para renderizar uma exportação localmente. Use isso ao integrar com `@youka/remotion` ou outro renderizador local. O servidor retorna as entradas da composição, URLs de assets e parâmetros de renderização sem enfileirar uma renderização na nuvem.

```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(...)` não inicia uma renderização na nuvem. Nenhuma computação faturável
  é consumida do lado da Youka.
</Note>

## Aguardando uma exportação

Exportações na nuvem são assíncronas. Use `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);
```

## Baixando o resultado

Exportações na nuvem finalizam com uma `url` assinada. Use o helper integrado para transmitir o arquivo para o disco. `output` pode ser um diretório ou um caminho completo de arquivo, e `filename` é opcional:

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

## Próximos passos

* [Tasks](/pt/sdk/tasks) — handles de operação e polling avançado de tarefas
* [Presets](/pt/sdk/presets) — configurações de renderização reutilizáveis
* [Project settings](/pt/sdk/project-settings) — ajuste das configurações ativas de um projeto
