video-tighten은(는) 무엇을 하나요?
resolve-bridge 스킬이 이 스킬과 함께 설치되어 있어야 합니다(../resolve-bridge에서 찾거나 RVS_BRIDGE 환경 변수 설정). 또한 ffmpeg가 필요합니다.
워크플로
- 현재 위치 확인.
python3 <resolve-bridge>/scripts/rvs.py --workdir <폴더> status를 실행합니다. 상태가 없으면 사용자가 타이트하게 만들 타임라인을 선택(resolve-bridge 참조)합니다. - 드라이 런. Resolve에서 아무것도 변경하지 않습니다:
python3 scripts/tighten.py --workdir <폴더><폴더>/.edit/tighten/REPORT.md,report.json및plan.json파일을 생성합니다. - 사용자와 보고서 검토. 런타임 변경량, 줄어든 멈춤 수, 모든 플래그를 보여줍니다. 플래그는 스크립트가 수정할 수 없는 컷(인포인트 이전에 단어가 시작되고 바로 직전에 다른 음성이 있는 경우)을 표시하므로, 사용자가 직접 귀로 확인하거나 다른 테이크를 선택해야 합니다.
- 의도된 멈춤 보호. 연기적인 침묵(눈빛, 펀치라인 전의 박자, 카메라 앞에서 타이핑하는 모습 등)은 잘라내면 안 됩니다. 사용자에게 확인 후
--skip <클립 이름 또는 타임라인 시작 프레임> ...옵션을 추가하여 다시 실행합니다. - 적용.
python3 scripts/tighten.py --workdir <폴더> --skip ... --apply<베이스>_vNN_tighten을 생성하고, 이전 버전을 보관하며, 프로젝트를 저장합니다. 모든 플래그는EDIT_CHECKLIST.md에 이슈로 기록되며, 새 타임라인의 클립 이름과 타임코드로 위치가 표시됩니다. 사용자에게 새 타임라인 이름과 이슈 ID를 알려줍니다.
기능 설명
| 항목 | 기본값 | 옵션 |
|---|---|---|
| 첫 단어 앞의 공기 | 0.22 초 | --pre |
| 마지막 단어 뒤의 공기 | 0.38 초 | --post |
| 같은 테이크의 무음 영역으로 가장자리 확장 가능(잘린 단어 복구) | 최대 0.5 초 | --max-extend |
| 다른 소리(숨, 중얼거림, 다음 테이크)와의 최소 거리 | 0.08 초 | --guard |
| 클립 내 멈춤이 이 시간보다 길면… | 0.75 초 | --pause-max |
| …다음 시간으로 단축 | 0.3 초 | --pause-keep |
| 생성되는 조각의 최소 길이 | 0.5 초 | --min-piece |
| 가장자리만 수정하고 모든 멈춤 유지 | 끄기 | --no-pauses |
| 대화가 아닌 오디오 트랙(음악) | 없음 | --ignore-audio-tracks 3 4 |
- 음성 감지는 에너지 기반입니다(
resolve-bridge/scripts/rvs_audio.py): 임계값은 전체 소스 파일에서 계산되며, 강한 임계값으로 단어를 찾고 가장자리를 부드러운 끝과 붙어 있는 숨소리까지 확장합니다. 클로즈 마이크 녹음에 적합합니다. 소음이 많은 경우 플래그를 더 주의 깊게 확인하세요. - 줄어든 각 멈춤은 점프 컷이 됩니다(클립이 분할됨). 이후 video-framing을 실행하여 펀치인으로 숨기거나 B-roll로 덮으세요.
- 리플: 이후 클립이 위로 이동합니다. 비디오 전용 항목(B-roll, 오버레이)은 새 타이밍에 맞게 다시 매핑되고, 해당 구간이 짧아지면 단축됩니다. 0.5초 미만이 되는 B-roll은 제거되고 목록에 표시됩니다.
- 모드: 이는 구조적 단계이므로 resolve-bridge의 빌드 모드를 사용합니다. 현재 타임라인의 타이틀과 생성기는 이전되지 않습니다(브리지가 경고함). 그래픽을 추가하기 전에 타이트닝을 실행하세요.
아직 처리되지 않은 사항
- 겹치는 대화(타임라인에 이미 있는 J/L 컷): 해당 클립은 그대로 두고 플래그를 표시합니다.
- 필러 단어("음", "그러니까")는 대본이 필요하며, 이후 스킬에서 전사를 통해 계획 중입니다.