비트 싱크 몽타주 빌더은(는) 무엇을 하나요?
개요
이 스킬은 $song-edit-analysis로 노래가 분석된 후, 또는 동등한 비트/컷 마커 데이터가 이미 존재할 때 사용합니다. 목표는 단순히 음악 아래에 클립을 렌더링하는 것이 아닙니다. 편집은 노래에 맞춰 작성되어야 하며, 주제 변경, 임팩트, 군중 반응, 시각적 악센트가 의미 있는 음악 마커에 정확히 맞춰져야 합니다.
통합 FX 규칙 (불가침의 원칙, 현장에서 학습된 2026-07)
효과와 푸티지는 절대 분리되어서는 안 됩니다. 전체 프레임 FX 세그먼트와 전체 프레임 실제 클립을 비트에 맞춰 교체하는 것은 금지됩니다. 이는 두 개의 비디오가 이어붙여진 것처럼 읽힙니다. 모든 효과는 (a) 피사체의 매트(프레임별 사람 마스크 — macOS의 Apple Vision VNGenerateForegroundInstanceMaskRequest 또는 이에 상응하는 기술), (b) 장면 지오메트리(하늘의 포털, 코너-고정 화면, 물 반사, 가장자리 빛 번짐), 또는 (c) 샷 자체의 픽셀(라이브 프레임의 만화경/미러, 하이라이트 스미어, 프레임 히스토리의 시간-리플)에 고정되어야 합니다. 절차적 렌더는 장면 내 요소로 샷 안에 들어와야 합니다 — 하늘, 화면, 문, 반사 등을 통해 — 잘려나간 세그먼트로 들어와서는 안 됩니다. 추적되지 않은 화면 블렌딩 요소는 스티커처럼 읽힙니다. 관련 법칙: 보기 좋은 것이 매개변수 따르는 것보다 우선합니다(응집력 실패를 배송하기보다 구조를 변경하십시오); 컷당 하나의 효과 언어, 노래 구조에 따라 점진적으로 변경 — 컷당 단발성 룩은 응집력을 깨뜨립니다; 모든 샷에 풍부하고 확실한 그레이드를 적용합니다(순수한 절제는 씻겨 나가고 지루해 보입니다; 작동 공식은 풍부하고 밀도 높은 그레이드 + 샷당 하나의 단단한 현실 왜곡입니다). 감성적인 공유-레인 작품의 경우, 노래의 엔벨로프에 의해 구동되는 단일 연속 샷(그레이드 램프/빛 도착/블룸)을 선호하십시오 — 솔기가 구조적으로 불가능합니다.
당신을 괴롭힐 합성 실수: 화면 블렌드는 반드시 RGB(format=gbrp)로 실행되어야 합니다 — YUV에서는 검정색이 크로마 128을 가지며 화면 구현 시 프레임이 마젠타로 범람합니다. 불투명도는 RGB lutrgb 곱셈으로 수행하십시오.
컷 엔진
두 개의 클록, 레인별로 선택:
- 온셋-락 (에너지/유지 레인에 선호):
librosa.onset.onset_detect(onset_envelope=onset_strength(...), hop_length=512, backtrack=False, delta=0.02, units="time"); 0.13초보다 가까운 온셋을 더 강한 것으로 병합;int(round((t-t0)*FPS))로 양자화; 프레임 0 강제; 모든 살아남은 온셋에서 컷 — 드물 때는 유지, 빈번할 때는 버스트; 상위 사분위수 강도의 온셋에 펀치인 악센트. 깊은 풀(~60개 이상의 게이트 샷) 필요. 밀도 사전 설정보다 이것을 선호하십시오. - 마커/우선순위 기반 (이 키트의 원래 엔진): 아래 우선순위 테이블에 따라 1차/2차 마커에서 컷 — 여전히 가로 게임플레이 증명 컷과 중간 밀도 편집에 적합합니다.
- 추정된 비트 그리드를 60ms 이내의 실제 감지된 온셋에 스냅합니다. 스타일 전환/변환 순간에는 반올림이 아닌 내림을 사용하여 변경이 과도 현상을 포함하는 프레임에 정확히 떨어지도록 합니다.
빌드 아키텍처
- 세그먼트-렌더 → 이어붙이기 → 후처리 그래프 (ffmpeg만): 샷별 mp4, 커버-크롭 적용 (
scale=W:H:force_original_aspect_ratio=increase:flags=lanczos,crop=W:H, HDR 소스는 먼저 bt709로 톤매핑,tpad=stop_mode=clone으로 짧은 클립을 동결-확장 — 절대 음악 그리드를 짧게 하지 마십시오), 이어붙이기 디먹서-c copy, 하나의filter_complex하우스 그레이드 (eq=contrast=1.05:saturation=1.08, 비네트,noise=alls=5:allf=t+u를 통한 필름 그레인), 오디오는 마지막에 페이드와 함께 먹싱. - 프레임-파이프 numpy (픽셀당 통합 FX): ffmpeg 디코딩 → rawvideo rgb24 → numpy 루프 → CRF 17에서 ffmpeg stdin 인코딩. 입증된 매트 파이프라인: 깨끗한 그레이드
base.mp4(고정 컷) 렌더링 → 베이스에 사람 매트 생성 → 프레임별 효과 테이블에서 효과 구동 → 원본 오디오 먹싱. 동기화는 구조적으로 완벽합니다. - 셰이더 내 융합 (moderngl GLSL): 푸티지가 텍스처로 디코딩되고 절차적 세계가 동일한 프래그먼트 셰이더에서 렌더링되며, 컷은
--cuts로 전달되어 셰이더 내 워프 펀치로 작용합니다. 가장 깊은 통합; 렌더러 스켈레톤은$generated-media-sourcing을 참조하십시오.
입력
다음 입력을 선호합니다:
- 오디오 파일 또는 발췌 창.
$song-edit-analysis의*_cut_markers_30fps.csv.- 푸티지 소스 또는 클립 경로, 카테고리, 가중치 및 사용 노트가 포함된 소스 매니페스트.
- 사용자가 생성된 클립/이미지를 요청하거나 소스 푸티지가 불완전한 경우
$generated-media-sourcing의 생성 미디어 매니페스트 또는 생성된 에셋 폴더. - 원하는 형식:
9:16,16:9또는 둘 다. - 대상 지속 시간, 일반적으로 소셜 증명 컷의 경우
30-40초.
컷 마커 CSV가 아직 없으면 먼저 $song-edit-analysis를 실행하십시오.
워크플로우
- 렌더링 전에 음악 창을 선택합니다. 노래 분석을 사용하여 고에너지 또는 이야기적으로 일관된
30-40초범위를 선택합니다. - 푸티지를 인벤토리합니다.
scripts/scan_video_sources.py를 사용하여 후보 비디오의 모션, 광채, 밝기, 채도 및 유망한 시작 시간을 점수화합니다. - 실제 푸티지가 없거나 사용자가 생성 미디어를 요청하는 경우, 최종 소스 매핑 전에
$generated-media-sourcing을 사용하여 생성된 클립과 정지 이미지를 생성하거나 계획합니다. - 소스 분류법을 만듭니다. 일반적인 종류:
gameplay,crowd,real_laser,photos_festival,photos_nature,character_select,menu,reaction,product,broll,generated_video,generated_still. - 인접한 컷 마커로 세그먼트 계획을 세웁니다. 트랙이 진정으로 스터터 컷을 요구하지 않는 한 약
0.17초미만의 마이크로 세그먼트는 건너뜁니다. - 푸티지 강도를 마커 우선순위와 일치시킵니다:
- 우선순위 1-2: 설정, 맥락, 유지, 부드러운 모션.
- 우선순위 3: 중간 액션, 각도 변경, 리드미컬한 B-롤.
- 우선순위 4: 활성 모션, 빠른 컷, 반응 답변.
- 우선순위 5: 최고 임팩트, 공개, KO, 군중 히트, 레이저 섬광.
- 악센트를 채우기가 아닌 구두점으로 사용합니다. 실제 레이저, 군중 포퍼, 자연 섬광, 메뉴 순간, 생성된 플레이트 및 추상 조명은 프레이즈 전환, 스네어, 필, 드롭을 증폭시켜야 합니다.
- 세그먼트를 렌더링하고, 이어붙이고, 깨끗한 오디오 발췌를 첨부한 후 다음을 출력합니다:
- 최종 비디오
- 타임라인 CSV
- 콘택트 시트
- 소스 믹스, 종류 믹스, 차원, 노래 창 및 창작 의도가 포함된 브리프 JSON
- 편집이 완료되었다고 판단하기 전에
$edit-delivery-qa를 실행합니다.
렌더링 패턴
가로 푸티지를 포함하는 세로 편집의 경우, 주요 액션을 읽을 수 있게 유지하십시오:
- 동일한 클립의 전체-번짐 블러 처리/향상된 배경을 사용합니다.
- 안정적인 배율과 y-위치로 중앙에 선명한 전경을 오버레이합니다.
- 필요한 경우에만 상단/하단에 미묘한 분리선을 추가합니다.
- 무대, 발사 방향, 얼굴 또는 중요한 UI를 잃는 좁은 세로 크롭을 피하십시오.
전체-번짐 악센트 푸티지의 경우:
- 배송 형식에 맞게 배율/크롭합니다.
- 충분히 빠르게 읽힐 수 있도록 대비/채도를 높입니다.
- 레이저/축제/반응 악센트를 짧게 유지합니다: 종종
2-12프레임 또는 한 비트.
가로 게임플레이 편집의 경우:
- 전체 프레임 액션을 보이게 유지합니다.
- 최소
1920x1080,30fps를 선호합니다. - 고에너지 섹션에서 빠른 1비트 컷을 사용하지만 소스 가독성을 유지합니다.
소스 선택 규칙
명백한 온스크린 액션을 선호합니다: 임팩트, 충돌, 스파이크, 공개, 빠른 콤보 문자열, 표현적인 반응 또는 고모션 라이트 순간.
주요 임팩트 후에 응답을 위해 폭발적인 인간 반응 샷을 아껴둡니다. 군중 전용 푸티지를 자동으로 거부하지 마십시오; 약하거나, 느리거나, 시각적으로 평평한 반응만 거부하십시오.
가능하면 항상 최종 레이저/축제 악센트에 실제 푸티지를 사용합니다. 생성된 자리 표시자는 탐색에 허용되지만, 실제 소스가 존재하는 경우 최종 배송 전에 교체하십시오.
타이틀 카드, 인터뷰, 의도적인 역할이 없는 메뉴, 빈 무대, 평평한 슬레이트, 지나치게 크롭된 액션, 피크 섹션에서 모션이 적은 설정은 거부하거나 크게 우선순위를 낮추십시오.
생성된 클립과 스틸은 타임라인/브리프 출력에서 generated_video 또는 generated_still, 사용된 프롬프트, 에셋이 final_ok인지, replace_if_real_source_found인지, placeholder_only인지 레이블을 지정해야 합니다.
타이밍 휴리스틱
- 하드 컷, 주제 변경, 임팩트, 공개 및 스피드-램프 착지를 위해 1차 마커를 사용합니다.
- 연속 컷, 각도 변경, 작은 B-롤 교체 및 스피드-램프 시작을 위해 2차 마커를 사용합니다.
- 고에너지 섹션에서 평균 세그먼트 길이가 약
0.35-0.50초면 밀도 높은 소셜 몽타주에 적합합니다. 35초증명 컷의 경우, 소스 자료가 지원할 수 있다면70-90세그먼트가 좋은 목표입니다.- 가장 강력한 푸티지를 가장 높은 에너지 섹션을 위해 남겨두십시오; 설정 중에 모든 피크 자료를 사용하지 마십시오.
세로 뮤직비디오 패턴 (2026-07)
9:16 음악 프로모션의 경우 (Smash 패턴과 함께 새로운 레인): 항상 1080×1920@30; 루프-심 종료 (마지막 ~22 프레임 동안 포토메트릭 상태가 프레임 0으로 복귀); 후크 텍스트 포함(두 번째 줄 드롭 키네틱스 — 라인 1은 프레임 0에서 정적, 라인 2는 실제 온셋에서 ±100ms 이내에 비트와 융합되어 0.8–1.3초에 나타남); Sweeps 스타일 컨테이너(검정 캔버스, 중앙에 푸티지 창, 모노스페이스 후크 위, 크레딧 아래) 또는 전체-번짐 시네마틱. 안정적인 인프라에서 번호가 매겨진 버전으로 반복 — 버전 간에 효과 언어만 변경; 클라이언트가 2초 순간을 좋아하면 그 순간을 다음 버전의 전체 언어로 만듭니다.
Conteto Machino의 프로젝트 패턴
Smash Mash 프로젝트에서 재사용 가능한 형태:
- 노래 창: 약
52.98초-88.17초,35.19초의 고에너지 발췌. - 밀도 높은 마커 기반 편집: 비트 또는 주요 마커당 대략 하나의 세그먼트.
- 주요 게임플레이/액션이 지배적.
- 군중, 실제 레이저, 자연 및 메뉴/소스-컨텍스트 순간이 간결한 구두점으로 나타남.
- 산출물에는 최종 MP4, 콘택트 시트, 타임라인 CSV 및 브리프 JSON 파일이 포함됩니다.
자세한 표준은 references/conteto-edit-standard.md를 읽으십시오.
선택적 참조:
references/example-prompts.md: 향후 편집 작업을 위한 재사용 가능한 프롬프트.references/file-schemas.md: 유연한 타임라인 CSV 및 브리프 JSON 형태.references/render-recipes.md: 이 프로젝트에서 적용된 FFmpeg/레이아웃 레시피.references/gui-vision.md: 미래 그래픽 워크플로우를 위한 제품 비전.
스크립트
재사용 가능한 푸티지 인벤토리가 필요할 때 scripts/scan_video_sources.py를 사용하십시오:
python3 scripts/scan_video_sources.py /path/to/videos --out /path/to/source_inventory
이 스크립트는 미디어 지속 시간, 대략적인 모션/광채 점수 및 권장 시작 시간이 포함된 CSV와 JSON을 작성합니다. 출력을 사용하여 소스 풀을 구축하고 동일한 죽은 순간에서 반복적으로 자르는 것을 방지하십시오.