Skip to main content
Mídia são arquivos reutilizáveis — fundos em vídeo, imagens estáticas, logotipos e clipes de intro/outro — que você pode referenciar a partir de presets ou das configurações do projeto. Envie uma vez e reutilize em vários projetos.

Tipos de mídia

TipoDescrição
videoVídeo de fundo em loop.
imageImagem de fundo estática.
logoSobreposição de logotipo.
intro-videoReproduz antes do karaokê começar.
outro-videoReproduz depois do karaokê terminar.

client.media.list(options?)

Liste todos os itens de mídia reutilizáveis pertencentes à conta autenticada.
const media = await client.media.list();

client.media.get(mediaId, options?)

Busque um único item de mídia.
const media = await client.media.get("bg_abc123");

client.media.create(body, options?)

Crie um novo item de mídia a partir de um caminho local, bytes ou de um inputFileId já enviado. Para caminhos locais e bytes, o SDK prepara o upload, envia os bytes do arquivo para a URL de upload e registra o arquivo enviado como mídia reutilizável.
const media = await client.media.create({
  type: "video",
  source: {
    type: "path",
    path: "./background.mp4",
    contentType: "video/mp4",
  },
});
type
'video' | 'image' | 'logo' | 'intro-video' | 'outro-video'
required
Qual função este item de mídia desempenha em uma renderização.
source
object
A origem do arquivo. Use { type: "path", path } para arquivos locais, { type: "bytes", data, filename } para dados Blob, File, ArrayBuffer ou de array tipado, ou { type: "inputFile", inputFileId } quando você já tiver um ID de upload.
inputFileId
string
Opção avançada de baixo nível: passe o ID retornado por client.uploads.create(...) em vez de source.

client.media.delete(mediaId, options?)

Exclua um item de mídia.
await client.media.delete("bg_abc123", {
  idempotencyKey: "delete-bg_abc123",
});
Excluir uma mídia não afeta projetos ou exports que já tenham sido renderizados com ela. Renderizações futuras que referenciem a mídia excluída usarão o fundo padrão como fallback.

Exemplo de ponta a ponta

import { YoukaClient } from "@youka/sdk";

const client = new YoukaClient({ apiKey: process.env.YOUKA_API_KEY! });

async function uploadBackground(path: string, contentType: string) {
  return client.media.create({
    type: "video",
    source: {
      type: "path",
      path,
      contentType,
    },
  });
}

const media = await uploadBackground("./loop.mp4", "video/mp4");
console.log("Media ID:", media.id);

Aplicando um fundo

Referencie a mídia enviada a partir de um preset ou diretamente das configurações do projeto:
const media = await uploadBackground("./loop.mp4", "video/mp4");

await client.projects.updateSettings("prj_abc123", {
  settings: {
    style: {
      background: {
        type: "video",
        url: media.url,
        objectFit: "cover",
      },
    },
  },
});
Para o conjunto completo de campos aceitos em background, converta o schema de configurações do projeto para JSON:
import { RestUpdateProjectSettingsRequestSchema } from "@youka/sdk";

const schema = RestUpdateProjectSettingsRequestSchema.toJSONSchema();

Próximos passos