Video Editor Full — 전체 스택 비디오 후반 제작 Skill
6가지 핵심 기능을 통합한 원스톱 비디오 후반 제작 Skill입니다. 원본 녹화부터 완제품 배포까지 전 과정을 AI가 주도합니다.
기능 매트릭스
| 모듈 | 도구 | 용도 | 의존성 |
|---|---|---|---|
| 전사 | Whisper (base/small/medium) | 음성 → 자막 SRT | Python + openai-whisper |
| 무음 제거 | auto-editor | 자동 점프 컷 데드 에어 | Python + auto-editor |
| 정밀 편집 | ffmpeg filter_complex | PIP 확대경, 챕터 제목, 가속, drawbox 하이라이트 | ffmpeg 7.0+ |
| 자막 | ffmpeg subtitles filter | SRT 렌더링 (중국어 YaHei 지원) | ffmpeg + 폰트 |
| 애니메이션 | Remotion | 인트로/아웃트로, 데이터 시각화, 동적 차트 | Node.js 18+ + Remotion |
| 브랜드 비디오 | HyperFrames | HTML/CSS → 비디오, AI 디지털 휴먼 | Node.js + HeyGen API Key |
워크플로우 개요
┌─────────────┐ ┌──────────────┐ ┌─────────────────┐
│ 원본 비디오 │────▶│ 분석 및 전사 │────▶│ 콘텐츠 계획 │
└─────────────┘ └──────────────┘ └─────────────────┘
│
┌──────────────────────────────┼──────────────────┐
▼ ▼ ▼
┌──────────────┐ ┌─────────────────┐ ┌──────────────┐
│ auto-editor │ │ ffmpeg 정밀 편집 │ │ Remotion │
│ 무음 제거/점프│ │ PIP+챕터+가속 │ │ 인트로/아웃트로│
└──────┬───────┘ └────────┬────────┘ └──────┬───────┘
│ │ │
└─────────────────────────────┼───────────────────┘
▼
┌─────────────────┐
│ 자막 렌더링 │
│ + 최종 내보내기 │
└─────────────────┘
사전 조건
# 필수
pip install openai-whisper auto-editor
# ffmpeg가 PATH에 있어야 함 (권장 7.0+)
ffmpeg -version
# 선택: Remotion (인트로/아웃트로 애니메이션)
npx create-video@latest --blank
# 선택: HyperFrames (브랜드 비디오)
# HeyGen API Key 필요, templates/hyperframes-config.example.json 참조
모듈 상세
모듈 1: 분석 및 전사
Step 1: 비디오 메타데이터
ffprobe -v quiet -print_format json -show_format -show_streams input.mp4
확인 항목: 해상도, 프레임레이트, 재생 시간, 코덱, 비트레이트.
Step 2: 키프레임 추출 (매 5초)
mkdir -p frames
ffmpeg -i input.mp4 -vf "fps=1/5" -q:v 2 frames/frame_%03d.jpg
시각 분석으로 주요 UI 영역, 챕터 경계, 확대경 대상 결정.
Step 3: Whisper 전사
import whisper
model = whisper.load_model("base") # 중국어는 base면 충분, medium은 더 정확하지만 느림
result = model.transcribe("audio.wav", language="zh")
SRT 출력 후 수동 교정 필수:
- 고유 명사 (제품명, 기술 용어)
- 타임라인 정렬 (특히 후반부 드리프트 가능)
- 동음이의어 오류
모듈 2: auto-editor 무음 제거
# 기본 사용법: 모든 무음 구간 제거
auto-editor input.mp4 --margin 0.2s --output no_silence.mp4
# 보수 모드: 1초 이상 무음만 제거
auto-editor input.mp4 --min-clip-length 1s --margin 0.3s --output no_silence.mp4
# 타임라인 내보내기 (직접 렌더링하지 않고 후속 ffmpeg 정밀 편집용)
auto-editor input.mp4 --export timeline:api
참고: auto-editor 무음 제거 후 타임라인이 변경되므로, 자막은 무음 제거 후에 생성하거나 다시 정렬해야 합니다.
권장 순서: 원본 비디오 → auto-editor → 재전사/자막 정렬 → ffmpeg 정밀 편집
모듈 3: ffmpeg 정밀 편집 (핵심)
3.1 PIP 확대경 (화면 속 화면)
# 주요: crop 영역은 force_original_aspect_ratio로 늘어짐 방지
PIP_W, PIP_H = 300, 188 # 목표 PIP 창 크기
# filter_complex 구문:
# crop → scale (비율 유지) → pad (검은 여백 채우기) → drawbox (노란 테두리)
f"[pip{i}]crop={cw}:{ch}:{cx}:{cy},"
f"scale={PIP_W}:{PIP_H}:force_original_aspect_ratio=decrease,"
f"pad={PIP_W}:{PIP_H}:(ow-iw)/2:(oh-ih)/2:color=0x1a1a2e,"
f"drawbox=x=0:y=0:w={PIP_W}:h={PIP_H}:color=yellow:t=2"
f"[pip{i}s]"
3.2 챕터 제목 (drawtext fade)
# 챕터 전환 시점에 제목 표시, 페이드 인/아웃
f"drawtext=text='{title}':"
f"fontfile='C\:/Windows/Fonts/msyh.ttc':"
f"fontsize=28:fontcolor=white:borderw=3:[email protected]:"
f"x=(w-text_w)/2:y=30:"
f"alpha='if(lt(t,{start}),0,if(lt(t,{start}+0.4),(t-{start})/0.4,"
f"if(lt(t,{end}-0.4),1,if(lt(t,{end}),({end}-t)/0.4,0))))':"
f"enable='between(t,{fade_in},{fade_out})'"
3.3 가속
# 비디오 가속
f"[vout]setpts=PTS/{SPEED}[vfinal]"
# 오디오 가속 (atempo 범위 0.5-2.0, 초과 시 체인 필요)
f"[0:a]atempo={SPEED}[afinal]"
3.4 자막 타임라인 동기화
가속 후 자막 시간 코드는 동기식 조정 필요:
new_start = original_start / SPEED
new_end = original_end / SPEED
3.5 전체 빌드 템플릿
scripts/build_template.py 참조
모듈 4: Remotion 애니메이션 클립
인트로, 아웃트로, 전환 애니메이션, 데이터 시각화 생성에 적합.
# Remotion 프로젝트 초기화
npx create-video@latest my-intro --blank
# src/Composition.tsx에서 애니메이션 작성
# MP4로 렌더링
npx remotion render src/index.ts MyComp out/intro.mp4
생성된 클립은 ffmpeg concat으로 메인 비디오에 연결:
# concat list
echo "file 'intro.mp4'" > list.txt
echo "file 'main.mp4'" >> list.txt
echo "file 'outro.mp4'" >> list.txt
ffmpeg -f concat -safe 0 -i list.txt -c copy final.mp4
Remotion Agent Skill 설치:
# 공식 skill (권장)
git clone https://github.com/remotion-dev/skills.git ~/.claude/skills/remotion
모듈 5: HyperFrames 브랜드 비디오
HTML/CSS/JS를 비디오 프레임으로 렌더링, 브랜드 홍보, 웹사이트-비디오 변환에 적합.
# 설치
npm install @anthropic-ai/hyperframes
# 기본 사용법: HTML → MP4
npx hyperframes render --input composition.html --output brand.mp4
Avatar 디지털 휴먼 기능을 사용하려면 HeyGen API Key가 필요합니다.
설정 템플릿은 templates/hyperframes-config.example.json 참조.
모듈 6: 최종 내보내기
자막 렌더링 (마지막 단계)
ffmpeg -y -i video_no_sub.mp4 \
-vf "subtitles='srt_path':force_style='FontSize=13,FontName=Microsoft YaHei,PrimaryColour=&H00FFFFFF,OutlineColour=&H00000000,Outline=2,Shadow=1,MarginV=22,Bold=1'" \
-c:v libx264 -preset slow -crf 17 \
-c:a copy -pix_fmt yuv420p -movflags +faststart \
output.mp4
멀티 플랫폼 내보내기
| 플랫폼 | 해상도 | 비율 | 재생 시간 제한 |
|---|---|---|---|
| YouTube | 1920x1080 | 16:9 | 제한 없음 |
| 위챗 비디오 계정 | 1080x1920 | 9:16 | 60초 (권장) |
| 샤오홍슈 | 1080x1350 | 4:5 | 5분 |
| Twitter/X | 1280x720 | 16:9 | 2:20 |
| 1920x1080 | 16:9 | 10분 |
# 세로 화면 자르기 예제 (16:9 → 9:16)
ffmpeg -i input.mp4 -vf "crop=ih*9/16:ih,scale=1080:1920" -crf 18 vertical.mp4
품질 기준
- CRF 17 + slow preset — 튜토리얼 비디오 표준 품질
- yuv420p — 모든 플레이어 호환
- faststart — 웹 스트리밍 즉시 재생
- lanczos — 스케일링 알고리즘 우선
- 인코딩 2회 이하 — 세대 손실 방지
- 자막은 마지막에 렌더링 — 타임라인 정렬 보장
일반적인 문제
- Windows 경로는 ffmpeg subtitles filter에서
/사용 및:를\:로 이스케이프 필요 - Whisper는 Windows에서 Windows 경로 사용 필수 (
/tmp/사용 불가) atempo범위 0.5-2.0, 초과 시 체인 필요:atempo=2.0,atempo=1.5= 3x- PIP crop 영역과 목표 창 비율이 다르면 늘어짐 발생,
force_original_aspect_ratio필수 - auto-editor가 타임라인을 변경하면 기존 자막 전부 무효화
- filter_complex가 너무 길면 명령줄에 전달 불가,
-filter_complex_script로 파일 작성
파일 구조
video-editor-skill-pack/
├── SKILL.md # 본 파일
├── scripts/
│ ├── build_template.py # ffmpeg 정밀 편집 빌드 템플릿
│ ├── transcribe.py # Whisper 전사 스크립트
│ ├── adjust_srt_speed.py # SRT 타임라인 가속 조정
│ └── analyze_frames.py # 키프레임 추출 + 분석
├── templates/
│ ├── hyperframes-config.example.json
│ └── remotion-intro/ # Remotion 인트로 템플릿 (미완성)
└── examples/
└── tutorial-video-workflow.md # 튜토리얼 비디오 전체 워크플로우 예제