azosi · 2026.7.29 02:57 · 조회 0

Revideo 프로젝트 구조

npm init @revideo@latest로 생성한 프로젝트의 폴더·파일 구조와 각각의 역할을 정리한다. 어느 파일에서 무엇을 수정해야 하는지 빠르게 파악하는 용도.


📁 폴더 구조 한눈에

my-video/
├── public/                  # 로컬 정적 자산 (mp4, png, font, ...)
├── src/
│   ├── project.ts           # ⭐ 프로젝트 엔트리 — makeProject() 호출
│   ├── render.ts            # ⭐ 렌더링 엔트리 — renderVideo() 호출
│   └── scenes/              # 씬 정의 (TSX/TS)
│       └── example.tsx      # 기본 예제
├── package.json             # npm 스크립트 + 의존성
├── vite.config.ts           # Vite + motionCanvas 플러그인
└── tsconfig.json

⭐ 표시한 두 파일이 가장 자주 만지는 진입점. project.ts는 미리보기/에디터, render.ts는 CLI/배치 렌더용.


📄 핵심 파일별 역할

vite.config.ts — Vite + motionCanvas 플러그인

import {defineConfig} from 'vite';
import motionCanvas from '@revideo/vite-plugin';

export default defineConfig({
  plugins: [motionCanvas()],
});

기본 설정으로 충분하다. motionCanvas() 플러그인이 브라우저 캔버스와 오디오 처리를 위한 ffmpeg 백엔드 프로세스 간 통신을 활성화한다. 커스텀 설정으로 output 폴더, project 파일, dev 서버 port 등을 바꿀 수 있다.

src/render.ts — CLI 렌더링 엔트리

import {renderVideo} from '@revideo/renderer';

async function render() {
  console.log('Rendering video...');
  const file = await renderVideo({
    projectFile: './src/project.ts',
    variables: {video: ''},  // 파라미터화된 비디오용
    settings: {logProgress: true},
  });
  console.log(`Rendered video to ${file}`);
}

render();
옵션설명
projectFile엔트리 프로젝트 파일 (기본 ./src/project.ts)
variablesParameterized Video에 전달할 변수 (자세한 건 Revideo Parameterized Videos 참고)
settings.logProgress진행 상황 로그 출력
settings.workers병렬 렌더 워커 수

이 파일은 dev 서버 (npm start)와 무관하다. npx revideo serve 모드와 별개의 일회성 렌더 실행 파일. 필요 없으면 삭제해도 됨.

src/project.ts — 프로젝트 엔트리

import {makeProject} from '@revideo/core';
import example from './scenes/example?scene';

export default makeProject({
  scenes: [example],
  variables: {username: 'new user'},  // 시각 편집기에서 보이는 기본값
});

이 파일이 Studio / Player / render.ts / SaaS Render Endpoint 모두의 진실 공급원. 씬 추가 시 이 배열에 등록.

src/scenes/example.tsx — 씬 정의

import {Video, makeScene2D} from '@revideo/2d';
import {waitFor} from '@revideo/core';

export default makeScene2D('scene', function* (view) {
  yield view.add(
    <Video src="/my-video.mp4"} size={['100%', '100%']} play={true} />,
  );
  yield* waitFor(10);
});

한 파일에 여러 씬을 정의해도 되고, 씬별로 파일을 쪼개도 됨. 큰 프로젝트는 후자가 권장 (HMR이 파일 단위로 동작하므로).

public/ — 로컬 정적 자산

public/에 넣은 파일은 파일명만으로 접근 가능:

<Video src="/my-video.mp4" />  {/* public/my-video.mp4 */}
<Img src="/logo.png" />        {/* public/logo.png */}

절대 경로(/)로 쓰면 됨. URL은 빌드 시 자동 처리. 큰 영상·폰트·이미지는 public/에 두는 게 일반적.


🔧 자주 수정하는 설정

변경하고 싶을 때수정할 파일
씬 추가/제거src/project.ts
mp4 출력 옵션 변경src/render.ts
dev 서버 포트vite.config.tsserver.port
변수 기본값src/project.tsvariables
출력 폴더 변경vite.config.tsmotionCanvas({output: ...})

🎯 다음 단계

상위 문서: ← Revideo 시작하기 출처: Revideo 공식 문서 — Project Structure 한글화 (2026-07-29) 공급사: Revideo (현 Midrender)

변경 이력

날짜변경
2026-07-29초안 작성 — 프로젝트 구조 + vite/render/project/public 4개 핵심 파일 한글화
2026-07-29메타데이터 블록을 본문 하단으로 이동

댓글

아직 댓글이 없습니다.

댓글을 작성하려면 로그인이 필요합니다.