json2video와 가장 유사한 방식입니다. CSS로 디자인을 잡을 수 있어 자막 디자인이나 애니메이션이 훨씬 예쁩니다. 이 사이트에 제작방식에 대하여 좀더 상세하게 알려줄 수 있니?

말씀하신 **”웹 기술(CSS)로 디자인하고 JSON으로 데이터를 넣어 영상을 만드는 방식”**을 가장 완벽하게 구현한 도구는 바로 [Remotion] 이라는 라이브러리입니다.

json2video 같은 서비스들도 내부적으로는 이와 유사한 기술을 서버에서 돌리는 경우가 많습니다. 이 Remotion을 사용하여 내 PC에서 영상을 제작하는 구체적인 워크플로우를 단계별로 설명해 드리겠습니다.


1. Remotion의 기본 개념: “웹사이트를 MP4로 캡처한다”

일반적인 영상 편집 프로그램(프리미어 프로 등)은 타임라인에 클립을 놓지만, Remotion은 리액트(React) 코드로 웹페이지를 만듭니다.

  • 영상 = 리액트 컴포넌트: 웹사이트의 한 페이지가 곧 영상의 한 장면이 됩니다.

  • 디자인 = CSS: 자막의 폰트, 색상, 위치, 그림자 효과 등을 CSS로 아주 예쁘고 자유롭게 꾸밀 수 있습니다.

  • 움직임 = 프레임(Frame): “지금 30번째 프레임이니까 투명도를 0에서 1로 바꿔라”라는 식으로 코딩합니다.

  • 촬영 = 렌더링: 완성된 웹페이지 움직임을 프레임 단위로 캡처해서 MP4 파일로 저장합니다.

2. 구체적인 제작(작업) 순서

PC에서 이 작업을 수행하려면 다음과 같은 과정을 거치게 됩니다.

1단계: 환경 설정 (내 PC)

  • Node.js 설치: 자바스크립트를 실행할 수 있는 환경을 설치합니다.

  • 프로젝트 생성: 터미널(CMD)에 명령어 한 줄(npx create-video@latest)을 치면 기본 템플릿이 설치됩니다.

2단계: 템플릿(틀) 코딩하기 (가장 중요한 단계)

쇼츠의 뼈대를 만드는 과정입니다. MyVideo.tsx 같은 파일을 만들고 리액트와 CSS로 화면을 구성합니다.

  • CSS 활용: display: flex; justify-content: center; 같은 CSS 코드로 자막을 정중앙에 배치하거나, box-shadow로 네온 사인 효과를 낼 수 있습니다. (파이썬으로는 이런 디자인이 매우 어렵습니다.)

  • 애니메이션: Remotion에서 제공하는 spring이나 interpolate 함수를 사용해 “자막이 띠용~ 하고 튀어나오는 효과” 등을 코드로 작성합니다.

3단계: JSON 데이터 연결 (자동화의 핵심)

이제 ‘틀’은 완성되었으니, ‘내용’을 채워 넣습니다.
예를 들어, data.json 파일을 준비합니다.

JSON

{
  "title": "오늘의 명언",
  "content": "실패는 성공의 어머니이다.",
  "bgm": "hopeful.mp3",
  "duration": 15
}

그리고 리액트 코드에서 이 JSON 파일을 불러와 변수처럼 사용합니다.
<h1>{jsonData.title}</h1> 이렇게 작성하면, JSON 파일 내용만 바꾸면 영상 내용이 자동으로 바뀝니다.

4단계: 미리보기 (Preview)

Remotion의 가장 큰 장점입니다. 터미널에 npm start를 입력하면 웹브라우저에 플레이어가 뜹니다.
여기서 재생 버튼을 눌러보며 자막 타이밍이 맞는지, 디자인이 예쁜지 실시간으로 확인할 수 있습니다. 수정하면 즉시 반영됩니다.

5단계: 렌더링 (MP4 추출)

확인이 끝났다면 터미널에 명령어를 입력합니다.

npx remotion render MyVideo out/video.mp4 --props=./data.json

  • 이 명령을 내리면, PC가 백그라운드에서 브라우저를 띄우지 않고 고속으로 영상을 그려내어 video.mp4 파일로 저장합니다.

  • 이 과정에서 API 비용은 0원이며, 오직 PC의 전기세만 들어갑니다.

3. 간단한 코드 예시 (느낌만 보세요)

“CSS로 디자인한다”는 게 어떤 느낌인지 보여드리는 코드입니다.

JavaScript

// 리액트 컴포넌트 (영상 템플릿)
export const MyShorts = ({ titleText, mainColor }) => {
  // 현재 몇 프레임인지(시간) 가져옴
  const frame = useCurrentFrame(); 
  
  // 프레임에 따라 투명도가 0 -> 1로 변함 (페이드 인 효과)
  const opacity = Math.min(1, frame / 30); 

  return (
    <div style={{ 
      flex: 1, 
      backgroundColor: 'white',
      justifyContent: 'center', 
      alignItems: 'center' 
    }}>
      {/* CSS로 꾸민 자막 */}
      <h1 style={{ 
        color: mainColor,     // 데이터에서 받은 색상
        fontSize: '100px', 
        opacity: opacity,     // 계산된 투명도 적용
        fontFamily: 'Nanum Gothic' 
      }}>
        {titleText}           {/* 데이터에서 받은 텍스트 */}
      </h1>
    </div>
  );
};

4. 정리: 이 방식의 장단점

장점 (질문자님께 딱 맞는 이유)

  1. 디자인 퀄리티: 웹사이트 만들듯이 꾸미므로, 그림자, 그라데이션, 둥근 테두리 등 세련된 디자인이 가능합니다.

  2. 완전 무료 렌더링: 내 PC 자원을 쓰므로 대량 생산 시 비용이 들지 않습니다.

  3. 데이터 연동: JSON 파일 100개를 준비해두고 반복문(Loop)을 돌리면 영상 100개가 한 번에 만들어집니다.

단점 (진입장벽)

  1. 러닝 커브: **React(리액트)**와 CSS에 대한 지식이 필요합니다. 웹 개발 경험이 전혀 없다면, 파이썬 방식보다 배우는 데 시간이 2~3배 더 걸릴 수 있습니다.

결론:
만약 HTML/CSS를 조금이라도 만져보셨다면, 무조건 이 방식(Remotion)을 추천합니다. 결과물의 때깔(Quality)이 파이썬으로 만든 것과는 비교할 수 없을 만큼 좋습니다.

코멘트

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다