말씀하신 **”웹 기술(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 파일을 준비합니다.
{
"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로 디자인한다”는 게 어떤 느낌인지 보여드리는 코드입니다.
// 리액트 컴포넌트 (영상 템플릿)
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. 정리: 이 방식의 장단점
장점 (질문자님께 딱 맞는 이유)
-
디자인 퀄리티: 웹사이트 만들듯이 꾸미므로, 그림자, 그라데이션, 둥근 테두리 등 세련된 디자인이 가능합니다.
-
완전 무료 렌더링: 내 PC 자원을 쓰므로 대량 생산 시 비용이 들지 않습니다.
-
데이터 연동: JSON 파일 100개를 준비해두고 반복문(Loop)을 돌리면 영상 100개가 한 번에 만들어집니다.
단점 (진입장벽)
-
러닝 커브: **React(리액트)**와 CSS에 대한 지식이 필요합니다. 웹 개발 경험이 전혀 없다면, 파이썬 방식보다 배우는 데 시간이 2~3배 더 걸릴 수 있습니다.
결론:
만약 HTML/CSS를 조금이라도 만져보셨다면, 무조건 이 방식(Remotion)을 추천합니다. 결과물의 때깔(Quality)이 파이썬으로 만든 것과는 비교할 수 없을 만큼 좋습니다.
답글 남기기