Skip to main content
Los medios son archivos reutilizables — fondos de video, imágenes estáticas, logotipos y clips de introducción/despedida — que puedes referenciar desde presets o desde la configuración del proyecto. Sube una vez y reutiliza en varios proyectos.

Tipos de media

TipoDescripción
videoVideo de fondo en bucle.
imageImagen de fondo estática.
logoSuperposición de logotipo.
intro-videoSe reproduce antes de que empiece el karaoke.
outro-videoSe reproduce después de que termine el karaoke.

client.media.list(options?)

Lista todos los elementos de media reutilizables que pertenecen a la cuenta autenticada.
const media = await client.media.list();

client.media.get(mediaId, options?)

Obtén un único elemento de media.
const media = await client.media.get("bg_abc123");

client.media.create(body, options?)

Crea un nuevo elemento de media a partir de una ruta local, bytes o un inputFileId ya subido. Para rutas locales y bytes, el SDK prepara la subida, envía los bytes del archivo a la URL de subida y registra el archivo subido como media reutilizable.
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
Qué función cumple este elemento de media en un render.
source
object
La fuente del archivo. Usa { type: "path", path } para archivos locales, { type: "bytes", data, filename } para datos Blob, File, ArrayBuffer o de array tipado, o { type: "inputFile", inputFileId } cuando ya tengas un ID de subida.
inputFileId
string
Opción avanzada de bajo nivel: pasa el ID devuelto por client.uploads.create(...) en lugar de source.

client.media.delete(mediaId, options?)

Elimina un elemento de media.
await client.media.delete("bg_abc123", {
  idempotencyKey: "delete-bg_abc123",
});
Eliminar media no afecta a proyectos ni exportaciones que se hayan renderizado previamente con él. Los futuros renders que referencien el media eliminado volverán al fondo predeterminado.

Ejemplo de extremo a extremo

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

Aplicar un fondo

Referencia media subido desde un preset o directamente desde la configuración del proyecto:
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 el conjunto completo de campos aceptados bajo background, convierte el esquema de configuración del proyecto a JSON:
import { RestUpdateProjectSettingsRequestSchema } from "@youka/sdk";

const schema = RestUpdateProjectSettingsRequestSchema.toJSONSchema();

Qué sigue