Skip to main content
내보내기는 완성된 가라오케를 비디오 파일로 렌더링합니다. 메인 엔트리포인트로 client.exports.create(...)를 사용하세요. SDK가 현재 머신에서 직접 렌더링하게 하려면 target: "local"을 선택하고, 그렇지 않으면 기본값은 클라우드 내보내기입니다.

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

target: "cloud" | "local"로 내보내기 대상을 선택합니다.
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, ... }
관리형 비동기 내보내기를 원하면 클라우드를 사용하세요. 호출자 머신에서 바로 렌더링하려면 로컬을 사용하세요.

공통 필드

FieldTypeDescription
resolution"540p" | "720p" | "1080p"출력 해상도.
quality"low" | "average" | "high"인코딩 품질.
playbackRatenumber속도 배수(예: 0.9).
toneFrequencynumber반음(semitones) 단위의 피치 시프트.
transparentboolean투명 배경으로 렌더링합니다.
presetIdstring렌더링 전에 프리셋을 적용합니다.
stemVolumesRecord<string, number>stem id로 키잉된 stem별 볼륨 오버라이드.
settingsOverrideobject이 내보내기에만 프로젝트 설정을 패치합니다.

stem 볼륨 예시

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

설정 오버라이드 예시

const result = await client.exports.create("prj_abc123", {
  resolution: "1080p",
  settingsOverride: {
    trim: { startSeconds: 5, endSeconds: 180 },
    style: {
      background: { type: "color", color: "#101010" },
    },
  },
});
전체 settingsOverride 형태는 Render settings reference를 참고하세요.

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

내보내기를 시작하지 않고 클라우드 내보내기에 필요한 크레딧을 견적합니다.
const quote = await client.exports.quote("prj_abc123", {
  resolution: "1080p",
  quality: "high",
  transparent: false,
});

console.log(quote.creditsRequired, quote.sufficientBalance);
로컬 내보내기는 호출자 머신에서 실행되며 클라우드 내보내기 크레딧을 사용하지 않으므로 quote(...)는 클라우드 내보내기에서만 사용합니다.

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

페이지네이션과 함께 프로젝트의 내보내기 목록을 조회합니다.
const exports = await client.exports.list("prj_abc123", {
  page: 1,
  pageSize: 50,
});
page
number
페이지 번호. 서버에서 기본값은 1입니다.
pageSize
number
페이지 크기. 기본값은 100입니다. 최대 100입니다.

client.exports.get(exportId, options?)

상위 프로젝트를 몰라도 ID만으로 내보내기를 가져옵니다.
const exported = await client.exports.get("exp_xyz");

로컬 내보내기

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);
로컬 렌더 툴체인이 설치되거나 검증되는 동안 업데이트를 받고 싶다면 onDependencyProgress를 사용하세요.

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

내보내기를 로컬에서 렌더링하는 데 필요한 준비된 페이로드를 반환합니다. @youka/remotion 또는 다른 로컬 렌더러와 통합할 때 사용하세요. 서버는 클라우드 렌더를 큐에 넣지 않고 컴포지션 입력, 에셋 URL, 렌더 파라미터를 반환합니다.
const payload = await client.exports.prepareLocal("prj_abc123", {
  resolution: "1080p",
  quality: "high",
});

// Hand payload off to your local renderer
await renderLocally(payload);
client.exports.prepareLocal(...)는 클라우드 렌더를 시작하지 않습니다. Youka 측에서 과금되는 compute가 소비되지 않습니다.

내보내기 완료 대기

클라우드 내보내기는 비동기입니다. client.exports.wait(...)를 사용하세요:
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);

결과 다운로드

클라우드 내보내기는 서명된 url로 완료됩니다. 내장 헬퍼를 사용해 파일을 디스크로 스트리밍하세요. output은 디렉터리 또는 전체 파일 경로가 될 수 있으며, filename은 선택 사항입니다:
await client.exports.download(finalized, {
  output: "./exports",
});

다음 단계

  • Tasks — operation 핸들 및 고급 task 폴링
  • Presets — 재사용 가능한 렌더 구성
  • Project settings — 프로젝트의 활성 설정 패치하기