Remotion 비디오 파이프라인
실제 푸티지 + 코드로 그린 타이포그래피 = 오타 없는 브랜드 영상, 반복 편집 가능.
파이프라인
- 인벤토리 – 원본 클립 정리:
scripts/inventory.sh <raw-dir> > index.tsv(id, 경로, 길이, 해상도). - 프록시 –
scripts/make-proxies.sh index.tsv proxy/명령어로 1080 너비, 30fps, 올-인트라 스타일 H.264 (-g 15) 복사본(오디오 제거)을 만듭니다. 편집과 렌더는 프록시로 진행합니다. 4K/HEVC 원본은 Remotion 탐색 속도를 느리게 하고 Chrome을 중단시킬 수 있습니다. - 눈으로 확인하며 순간 선택 –
scripts/contact-sheet.sh proxy/v01.mp4 sheets/v01.jpg명령어로 1초당 한 프레임을 그리드로 출력합니다. 시트를 열고 컷별 시작 초를 기록합니다. - 컴포지션 –
template/디렉터리를 복사하여 구성합니다:Footage(자르고 확대/축소한 클립),Scrim(텍스트 가독성을 위한 그라데이션),Line(애니메이션 텍스트). 출력 버전별로 하나의 컴포지션을 만듭니다 (예:Main30초,Teaser9초,Spot16x920초). - 렌더링 –
npx remotion render <CompositionId> out/<name>.mp4. 설정은 이미 H.264, CRF 17, yuv420p로 되어 있습니다. - 검증 – 스틸 이미지 3장 추출 (
ffmpeg -ss 5 -i out.mp4 -frames:v 1 still.png) 후 확인하고, 재생 시간과 오디오 정책(무음 또는 배경음)이 클라이언트 요구사항과 일치하는지 점검합니다.
함정 (실제 시간을 낭비한 사례들)
- 루트 요소에
lang="tr"(또는 올바른 언어)를 설정하세요. 그렇지 않으면 CSStext-transform: uppercase가 터키어i를I로 바꿉니다 (예: MAKINASI, TEKLIF). 문자열의 최종 대소문자를 직접 입력하는 것이 좋습니다. while read루프 안에서ffmpeg는 stdin을 삼킵니다. 항상-nostdin을 전달하세요.- zsh은 bash와 split 방식이 다릅니다.
set -- $p와$2:s가 깨집니다. 스크립트는#!/usr/bin/env bash로 작성하세요. - 많은 ffmpeg 빌드에는 drawtext가 없습니다. 텍스트는 Remotion에서 그리고, ffmpeg에서는 절대 그리지 마세요.
- HTML 기반 렌더러(예: Hyperframes)는 장면 사이에 '어두운' 오버레이 레이어를 보이게 남길 수 있습니다. 또한 명시적인 불투명도 애니메이션으로 장면을 페이드하세요. 이러한 렌더는 포그라운드에서 실행하고(백그라운드
nohup실행은 취소됨), HEVC 출력은ffmpeg -i in.mp4 -c:v libx264 -crf 18 -pix_fmt yuv420p out.mp4로 변환하세요. - 휴대폰 영상 회전:
ffprobe회전 태그를 확인하세요. 가로 컴포지션의 세로 클립에는objectFit: cover와 함께 명시적 크롭이 필요합니다. - 화면에 표시되는 내용이 실제 푸티지에서 보이는 것만 주장하세요. 사양, 용량, 가격 등을 만들어 내지 마세요.
- 게시할 저장소에 클라이언트 파일을 보관하지 마세요. 푸티지와 로고는 클라이언트 소유입니다.
배달 체크리스트는 references/checklist.md를 참조하세요.