ビート同期モンタージュビルダー は何をしますか?
概要
このスキルは、楽曲が $song-edit-analysis で解析された後、または同等のビート/カットマーカーデータがすでに存在する場合に使用します。目的は単にクリップを音楽に合わせてレンダリングすることではありません。編集結果は楽曲に対して「作り込まれた」ものとなり、被写体の切り替え、インパクト、観客の反応、視覚的なアクセントが意味のある音楽マーカー上に配置される必要があります。
統合エフェクトルール(譲れない、現場で学んだ2026-07)
エフェクトと映像は決して分離してはなりません。フルフレームのエフェクトセグメントとフルフレームの実写クリップをビートごとに交互に配置するのは、2つの動画を継ぎ接ぎしたように見えるため禁止です。すべてのエフェクトは、(a) 被写体のマット(フレーム単位の人物マスク — macOSではApple Vision VNGenerateForegroundInstanceMaskRequest、または同等のもの)、(b) シーンのジオメトリ(空のポータル、コーナーピン止めされたスクリーン、水面反射、エッジを包む光のにじみ)、または (c) ショット自身のピクセル(ライブフレームのカレイド/ミラー、ハイライトスミア、フレーム履歴のタイムリップル)にアンカーしなければなりません。プロシージャルレンダリングは、カットアウェイセグメントとしてではなく、空、スクリーン、ドア、反射を通じて、シーン内の要素としてショットに入り込みます。トラッキングされていないスクリーンブレンド要素はステッカーのように見えます。関連ルール:見た目の良さがパラメータ遵守に優先する(首尾一貫性の破綻を出荷するくらいなら再構成する);カットごとに1つのエフェクト言語、楽曲構造に応じてエスカレーションする — ショットごとに異なるルックは首尾一貫性を壊す;すべてのショットにリッチで確定したグレードを施す(控えめなだけでは洗い落ちて退屈に見える;実証済みの式はリッチな密度の高いグレード+ショットごとに1つのハードな現実歪曲)。感情的な共有レーンの作品では、1つの連続ショット(楽曲のエンベロープに駆動されるグレードランプ/光の到来/ブルームによる測光的変換)を優先 — 継ぎ目は構造上不可能。
やけどするコンポジットの落とし穴:スクリーンブレンドはRGB(format=gbrp)で行う必要があります — YUVでは、黒のクロマは128であり、スクリーン処理はフレームをマゼンタで溢れさせます。不透明度はlutrgb乗算で行います。
カットエンジン
2つのクロック、レーンごとに選択:
- オンセットロック(エネルギー/リテンションレーンに推奨):
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以上のゲートショット)が必要。密度プリセットよりもこれを優先。 - マーカー/優先度駆動(このキットのオリジナルエンジン): 下記の優先度テーブルに従ってプライマリ/セカンダリマーカーでカット — ランドスケープゲームプレイのプルーフカットや中密度の編集には今でも適切。
- 推定されたビートグリッドは、60ms以内であれば実際に検出されたオンセットにスナップ;スタイル切り替え/変形の瞬間は、変更がトランジェントを含むフレームに着地するように、roundではなくfloorを使用。
ビルドアーキテクチャ
- セグメントレンダリング → 結合 → ポストグラフ(ffmpegのみ): ショットごとのmp4をカバークロップ付きで(
scale=W:H:force_original_aspect_ratio=increase:flags=lanczos,crop=W:H、HDRソースは最初にbt709にトーンマッピング、tpad=stop_mode=cloneで短いクリップをフリーズ延長 — 音楽グリッドを短くしてはいけない)、concatデマルチプレクサ-c copy、1つのfilter_complexハウスグレード(eq=contrast=1.05:saturation=1.08、ビネット、noise=alls=5:allf=t+uによるフィルムグレイン)、最後にフェード付きでオーディオを多重化。 - フレームパイプnumpy(ピクセル単位の統合エフェクト): ffmpeg→rawvideo rgb24→numpyループ→CRF 17でffmpeg stdinにエンコード。実績のあるマットパイプライン:クリーンなグレードの
base.mp4(固定カット)をレンダリング → base上に人物マットを生成 → フレームごとのエフェクトテーブルからエフェクトを駆動 → 元のオーディオを多重化。同期は構造上完璧。 - インシェーダーフュージョン(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(Bロール)、generated_video(生成動画)、generated_still(生成静止画)。 - 隣接するカットマーカーからセグメント計画を構築します。約
0.17秒未満のマイクロセグメントは、トラックが本当にスタッターカットを要求している場合を除きスキップします。 - 映像の強度をマーカーの優先度に合わせます:
- 優先度1-2:設定、文脈、ホールド、穏やかなモーション。
- 優先度3:中程度のアクション、アングル変更、リズミカルなBロール。
- 優先度4:アクティブなモーション、速いカット、リアクションの応答。
- 優先度5:最高のインパクト、リビール、KO、観客のヒット、レーザーフラッシュ。
- アクセントは埋め草ではなく句読点として使用します。実際のレーザー、観客のポップオフ、自然のフラッシュ、メニューモーメント、生成プレート、抽象的な光は、フレーズの変わり目、スネア、フィル、ドロップを増幅するために使用します。
- セグメントをレンダリングし、連結し、クリーンなオーディオ抜粋を添付し、以下を出力します:
- 最終動画
- タイムラインCSV
- コンタクトシート
- ソース構成、種類構成、寸法、楽曲ウィンドウ、クリエイティブ意図を含む概要JSON
- 編集を完了と呼ぶ前に
$edit-delivery-qaを実行します。
レンダリングパターン
ランドスケープ映像を含む縦長編集の場合、メインアクションを読みやすく保ちます:
- 同じクリップから全画面ぼかし/強調された背景を使用します。
- 鮮明な前景を安定したスケールとY位置で中央にオーバーレイします。
- 必要に応じて、上部/下部の微妙なセパレーターのみを追加します。
- ステージ、発射方向、顔、重要なUIを失うようなタイトな縦クロップは避けます。
全画面アクセント映像の場合:
- 配信フォーマットに合わせてスケーリング/クロップします。
- コントラスト/彩度を素早く読める程度に上げます。
- レーザー/フェス/リアクションアクセントは短くします:多くの場合
2-12フレームまたは1ビート。
ランドスケープゲームプレイ編集の場合:
- 全画面アクションを表示したままにします。
1920x1080、最低30fpsを推奨します。- 高エネルギーセクションでは迅速なワンビートカットを使用しますが、ソースの読みやすさは維持します。
ソース選択ルール
明らかな画面上のアクションを優先します:インパクト、衝突、スパイク、リビール、速いコンボストリング、表情豊かな反応、または高モーションの光の瞬間。
爆発的な人間のリアクションショットは、主要なインパクト後のコールアンドレスポンスのために取っておきます。観客のみの映像を自動的に拒否しないでください;弱い、遅い、または視覚的にフラットな反応のみを拒否します。
最終的なレーザー/フェスティバルアクセントには、可能な限り実際の映像を使用します。生成プレースホルダーは探索には許容されますが、実際のソースが存在する場合は最終納品前に置き換えます。
タイトルカード、インタビュー、意図的な役割のないメニュー、空のステージ、フラットなスレート、過剰にクロップされたアクション、ピークセクションでの低モーションの設定は拒否するか大幅に優先度を下げます。
生成クリップと静止画は、タイムライン/概要出力で generated_video または generated_still、使用したプロンプト、およびアセットが final_ok(最終OK)、replace_if_real_source_found(実際のソースが見つかれば置換)、placeholder_only(プレースホルダのみ)のいずれであるかをラベル付けする必要があります。
タイミングヒューリスティック
- プライマリマーカーはハードカット、被写体変更、インパクト、リビール、スピードランプの着地に使用します。
- セカンダリマーカーは継続カット、アングル変更、小さなBロールスワップ、スピードランプの開始に使用します。
- 高エネルギーセクションでは、平均セグメント長は約
0.35-0.50秒が密集したソーシャルモンタージュに適しています。 35秒のプルーフカットの場合、ソース素材がサポートできるなら70-90セグメントが強力な目標です。- 最も強い映像は最もエネルギーの高いセクションのために取っておきます;セットアップ中にすべてのピーク素材を使ってはいけません。
縦型ミュージックビデオパターン(2026-07)
9:16の音楽プロモーション用(スマッシュパターンに加えた新しいレーン):常に1080×1920@30;ループシームエンディング(測光状態が最後の約22フレームでフレーム0に戻る);フックテキストは2行目のドロップキネティクス付き(1行目はフレーム0で静止、2行目は実際のオンセットから±100ms以内でビートに合わせて0.8~1.3秒で出現);Sweepsスタイルのコンテナ(黒いキャンバス、中央の映像ウィンドウ、上に等幅フック、下にクレジット)または全画面シネマティック。安定したインフラ上で番号付きバージョンとして反復 — バージョン間でエフェクト言語のみを変更;クライアントが2秒の瞬間を気に入った場合、その瞬間を次のバージョンの全体的な言語にします。
Conteto Machino からのプロジェクトパターン
Smash Mashプロジェクトからの再利用可能な形状:
- 楽曲ウィンドウ:約
52.98秒-88.17秒、35.19秒の高エネルギー抜粋。 - 密度の高いマーカー駆動編集:おおよそビートまたは主要マーカーごとに1セグメント。
- メインのゲームプレイ/アクションが支配的。
- 観客、実際のレーザー、自然、メニュー/ソースコンテキストの瞬間は、簡潔な句読点として現れる。
- 成果物には最終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を出力します。出力を使用してソースプールを構築し、同じデッドモーメントから繰り返しカットするのを防ぎます。