Reel edit style
음성 해설을 측정된 스타일에 맞는 편집 결과물로 변환합니다. 각 프리셋은 실제 릴을 프레임 단위로 분석하여 추출되었으므로, '보기 좋은' 직관보다는 해당 수치를 따라야 합니다. 몇몇 발견은 직관에 반할 수 있습니다. 예를 들어, Editorial Argument의 '운동감' 타입에는 애니메이션이 전혀 없으며, Flash Tutorial의 플래시는 완전한 흰색으로 변하지 않습니다.
프리셋 선택
| Flash Tutorial | Editorial Argument | |
|---|---|---|
| 사용처 | 결과물을 보여주는 하우투, VFX 또는 도구 데모 | 시각적 증거를 포함한 의견 또는 논평 |
| fps | 30 | 24 |
| 약 75초당 샷 수 | 38 (중앙값 1.60초) | 59 (중앙값 0.58초) |
| 텍스트 | 하나의 고정 캡션 라인, 변경되지 않음 | 모노 필 또는 세리프 스택, 둘 중 하나만 사용 |
| 주요 모션 | 플래시 전환, 마이크로슬라이드, 느린 줌 | 거의 없음. 에너지는 타이밍에서 나옴 |
| 전환 | 11개의 단계별 컬러 플래시, 외에는 하드 컷 | 하드 컷, 최대 2개의 7프레임 플래시 |
| 필요 푸티지 | 토킹 헤드, 고정된 합성 샷, 화면 녹화 | 토킹 헤드, 선택적 컷아웃, 많은 포스터 또는 스틸 이미지, AI 클립 |
| 상세 명세 | references/preset-flash-tutorial.md | references/preset-editorial-argument.md |
사용자가 프리셋을 지정하지 않으면, 위 표에서 하나를 추천하고 그 이유를 한 줄로 설명하세요. 선택된 프리셋만 읽으세요. breakdown-*.md 파일이 존재하는 경우, 프리셋에서 제공하지 않는 정확한 좌표나 전체 샷 목록(모델용)이 필요할 때 읽으세요. 이 파일들은 공개 저장소에 없으며, 참조 제작자의 발언을 인용하기 때문입니다.
워크플로우
1. 입력 수집
- VO 또는 스크립트. 편집은 단어 타이밍에 의해 결정되므로, 가능하면 녹음된 오디오를 사용하세요. 스크립트만 있는 경우 예상 타이밍(Flash Tutorial: 197 WPM, Editorial Argument: 224 WPM)으로 초안 계획을 제공하며, 해당 계획은 잠정적인 것으로 표시하세요.
- 푸티지 인벤토리. 프리셋 요구 사항과 비교하여 기존 푸티지를 나열하세요. Flash Tutorial은 처음 2초 동안 실제 결과물 샷이 필요합니다. Editorial Argument는 많은 스틸 이미지가 필요합니다. 74초 참조 릴은 36개의 전체 프레임 포스터와 11개의 콜라주를 사용했습니다.
- 빌드 대상. Remotion 또는 After Effects.
2. 단어 타이밍 얻기
python3 <skill-dir>/scripts/transcribe_words.py <audio> <outdir>
이 스크립트는 mlx-whisper(Apple Silicon)가 필요하며 words.json을 생성합니다. 다른 스크립트들은 numpy와 pillow, 그리고 PATH에 ffmpeg가 필요합니다. 세 가지 모두를 포함한 가상 환경이 가장 편리합니다. Whisper는 이름과 용어를 잘못 인식할 수 있고, 파일 끝에서 텍스트를 지어낼 수 있으므로, 계획을 세우기 전에 대본과 비교하여 전사를 수정하세요.
3. 편집 계획 작성
edit-plan.md를 샷당 한 행으로 저장하세요:
타임스탬프 | 길이 | 화면 내용 | 텍스트/캡션 | 모션 | 전환 | 사운드
다음 순서로 작업하세요. 각 단계는 이전 단계에 의존합니다:
- 섹션: 스크립트를 프리셋의 섹션 맵에 매핑합니다.
- 텍스트: 모든 단어를 프리셋 규칙을 사용하여 캡션으로 분할합니다. 각 캡션은 해당 단어의 첫 번째 단어가 시작된 후 약 3프레임 후에 등장하도록 시간을 맞춥니다.
- 사진: 각 섹션에 프리셋의 샷 길이와 레이아웃을 사용하여 샷을 할당합니다.
- 모션: 플래시, 줌 및 레시피를 배치합니다. 단어 간격과 일치하는지 확인합니다.
- 사운드: 프리셋 표에서 SFX를 배치합니다.
빌드하기 전에 계획을 사용자에게 보여주세요. 계획을 변경하는 것은 저렴합니다. 렌더를 변경하는 것은 그렇지 않습니다.
4. 빌드
- 프리셋의 상수를 정확히 복사하세요. 프레임 번호는 이벤트를 기준으로 하므로 새 VO에 맞게 시간을 다시 조정하세요.
- 단계별 테이블을 유지하세요. 프레임별 값을 부드러운 곡선으로 만들지 마세요. 단계가 스타일의 일부이기 때문입니다.
- 프리셋의 fps를 사용하세요. 프레임 수는 해당 fps에서만 유효합니다.
- 캡션과 필(약)이 줌이나 블러 레이어 밖에 있도록 유지하세요.
Remotion: 샷 리스트로 구동되는 각 샷당 하나의 <Sequence>를 사용합니다. 텍스트는 <Sequence from={onFrame}> 내부의 일반 요소이며, 프리셋에서 명시하지 않는 한 interpolate를 사용하지 않습니다. 모션 블러는 @remotion/motion-blur를 사용하세요. 프레임별 테이블은 frame - start로 인덱싱된 배열입니다.
After Effects: 프리셋에서 명시하지 않는 한 애니메이터가 없는 텍스트 레이어를 사용하세요. 플래시 테이블은 이징된 키프레임이 아닌 홀드 키프레임으로 설정하세요.
5. 참조와 비교
렌더 결과물을 프리셋의 대상 테이블과 비교하세요:
python3 <skill-dir>/scripts/video_metrics.py <render.mp4> <outdir>
python3 <skill-dir>/scripts/sheet.py <render.mp4> <outdir>/first5s --range 0 4.75 0.25 --cols 7 --rows 3 --thumb 220
프리셋의 설명 옆에 있는 시트를 살펴보세요. 감지기는 과도하게 카운트합니다. 플래시 프레임과 빠른 모션은 컷으로 나타나므로 cuts.txt를 직접 확인하세요. 확인한 내용을 보고하고, 비교할 수 없었던 항목이 있으면 그렇게 말하세요.
정직함 유지
- 각 프리셋은 하나의 릴에서 비롯되었습니다. 해당 수치를 그 릴의 선택으로 취급하고, 제작자의 전체 스타일에 대한 증거로 취급하지 말고, 사용자가 이를 크게 신뢰하는 경우 그렇게 말하세요.
- "(추정)" 및 "(확실하지 않음)" 레이블은 유지됩니다. 결정이 이에 기반할 때 계획에 표시하세요.
- 사운드 아이덴티티는 청취되지 않았습니다. 배치와 타이밍은 측정되었지만, "붐"이나 "클릭"과 같은 단어는 파형을 설명합니다. SFX 선택은 사용자가 직접 듣고 판단하도록 요청하세요.
- 글꼴은 유사 일치입니다. Flash Tutorial의 캡션 글꼴과 Editorial Argument의 로만 세리프는 식별되지 않았습니다. 커밋하기 전에 렌더링된 샘플을 사용자에게 보여주고, 상업적 사용을 위한 글꼴 라이선스를 확인하세요.
기술을 사용하고 콘텐츠는 사용하지 마세요
사용자의 자체 푸티지, 이미지 및 사운드로 스타일을 재구축하세요. 참조 제작자의 클립, 포스터, Firefly 프레임 또는 기타 에셋을 재사용하지 마세요. Editorial Argument의 오프닝은 다른 제작자의 클립을 사용하므로, 사용자가 해당 장치를 재사용할 때 정당한 이유와 권리가 있는지 확인하세요.
새 스타일 추가
다른 릴을 분석하려면 references/analyze-reference.md를 읽은 후, preset-<name>.md를 추가하고 위 표에 행을 추가하세요.
파일
references/preset-flash-tutorial.md,references/preset-editorial-argument.md: 빌드할 명세서.references/breakdown-dope-motions.md,references/breakdown-ashokreddyai.md(로컬 복사본만, 게시되지 않음): 전체 증거, 샷별 테이블, 모든 전환, 미해결 질문. 언급된 경로(예:ashok/analysis/)는 작업 파일이며 포함되지 않습니다.references/analyze-reference.md: 새 릴을 분석하는 방법.scripts/:transcribe_words.py,video_metrics.py,audio_events.py,sheet.py,probe_frame.py.