Dieser Leitfaden zeigt den schnellsten Weg von einer Roh-Audiodatei zu einem gerenderten Karaoke-Video mit @youka/sdk.
Bevor du startest
- Node.js 20 oder neuer
- Ein Youka-API-Key in
YOUKA_API_KEY (erstelle einen unter online.youka.io/account in API keys)
- Eine lokale Audiodatei (
./song.mp3) oder eine Remote-URL
Installation
Erstellen, warten, exportieren
import { YoukaClient, YoukaRequestError, YoukaTaskError } from "@youka/sdk";
const client = new YoukaClient({
apiKey: process.env.YOUKA_API_KEY!,
});
async function main() {
// 1. Erstelle ein Projekt aus einer lokalen Datei
const projectOperation = await client.projects.create({
source: { type: "path", path: "./song.mp3" },
lyricsSource: { type: "transcribe" },
});
// 2. Warte, bis Stems und Lyrics-Sync abgeschlossen sind
const { project } = await client.projects.wait(projectOperation);
console.log("Projekt bereit:", project.id, project.title);
// 3. Starte einen Export
const exportOperation = await client.exports.create(project.id, {
resolution: "1080p",
quality: "high",
});
// 4. Warte, bis der Export abgeschlossen ist
const finishedExport = await client.exports.wait(exportOperation);
await client.exports.download(finishedExport, {
output: "./exports",
});
console.log("Export bereit:", finishedExport.url);
}
main().catch((error) => {
if (error instanceof YoukaRequestError) {
console.error("Anfrage fehlgeschlagen:", error.code, error.status, error.message);
process.exit(1);
}
if (error instanceof YoukaTaskError) {
console.error("Task fehlgeschlagen:", error.code, error.status, error.message);
process.exit(1);
}
throw error;
});
client.projects.create() übernimmt Uploads für path, bytes und url
sources. Für eine niedrigere Ebene der Upload-Kontrolle verwende client.uploads.*.
Drei Source-Typen
Lokale Datei
Bytes im Arbeitsspeicher
Remote-URL
const operation = await client.projects.create({
source: { type: "path", path: "./song.mp3" },
});
const fileBuffer = new Uint8Array([/* audio bytes */]);
const operation = await client.projects.create({
source: {
type: "bytes",
data: fileBuffer,
filename: "song.mp3",
},
});
const operation = await client.projects.create({
source: {
type: "url",
url: "https://example.com/song.mp4",
},
});
Was kommt als Nächstes
- Projects — vollständige Projects-API
- Exports — lokales Rendern und
client.exports.prepareLocal
- Errors —
YoukaRequestError und YoukaTaskError behandeln
- AI agents — empfohlene Polling- und Retry-Patterns