Clip Picker(クリップピッカー)
長尺の映像からキーパー(保存する価値のあるクリップ)を見つけます。この手法全体は、単一の厳しい制限を回避するために存在します:
Claudeは動画を見ることができません。 静止画像のみを読み取ります。したがって、「良いクリップを選ぶ」とは実際には次のようになります:映像を十分な密度で画像にサンプリングして何が起こっているかを確認し、ルーブリックに照らしてそれらを評価し、フル解像度で確認してからカットします。トリミングは簡単でほぼ即時ですが、30分以上の映像を見ることこそが本当のコストです — そのための予算を組み、謝る必要はありません。
スクリプトは scripts/ にあります(survey.py、score.py、board.py)。これらが機械的な部分を担当し、Claudeがその間の視覚的判断を行います。依存関係: PATH上のffmpeg/ffprobe、numpy、pillow(すべてこのマシンにインストール済み — [[editor-pack-video-editing-stack]] を参照)。
パイプライン
スクラッチパッドにWORKDIRを選択します(例:.../scratchpad/clippick)。その後:
1. ルーブリックを確認します。 映像がPOVのバイク/サイクリング(以下に組み込まれているデフォルト)でない場合、ユーザーに1〜2の質問をします:彼らにとって何がクリップを良くするのか、希望するクリップ長、出力形状(16:9 vs 9:16)、選択の度合い(数個の逸品かすべてか)。良い判断基準の一文がすべての選択を変えます — 調査の前にそれを取得してください。
2. 調査 — 映像を読み取り可能なコンタクトシートに変換します。
python scripts/survey.py "C:\path\to\videos_or_dir" --out WORKDIR --interval 4
4秒ごとに1つのサムネイル、6×6タイル、各ソースタイムコードが焼き付けられます。動きの速い/イベントの多い映像には --interval 2-3 を、動きの遅い映像には --interval 6-8 を使用します。各クリップの仕様を出力し、HDR(HLG/PQ)ソースにフラグを立てます。長い/多くのHEVCクリップではこれは遅くなります(ソフトウェアデコードがボトルネック)— バックグラウンドで実行し、シートが作成されるたびに表示します。
3. すべてのシートを視覚的に調査します。 各 WORKDIR/montages/*_sheet_*.jpg を Read します。ルーブリックに従ってタイムコードで候補ウィンドウをマッピングします。サンプル間の一瞬のイベントは見逃される可能性があります — シートが何かを示唆している場合(隅のフラッシュ、人物など)、それをメモし、後でその範囲をより密にサンプリングします。
4. WORKDIR/candidates.json を作成します — 候補ウィンドウごとに1つのオブジェクト(スキーマは以下を参照)。各ウィンドウは15〜30秒(またはユーザーの希望長)に保ちます。それぞれに pick コード(P01, P02, ... をランク順に)、一行の title(なぜ該当するか)、および tags を付けます。
5. フル解像度 + 鮮明度で確認します。
python scripts/score.py --work WORKDIR
候補ごとにフル解像度のヒーローフレームを取得し、ラプラシアンの分散(焦点指標)をスコアリングし、それらを review.jpg にタイル表示します。Read します。真にソフト/面白みのないものはドロップし、start/end を調整して最良のビートに合わせます。低い鮮明度 = フレーム全体のモーションブラー — フローショットには望ましいものであり、拒否理由にはなりません。 編集後に再実行します。
6. ランク付けされたピックシートを提示します(ユーザーが選択します)。
python scripts/board.py --work WORKDIR --mode thumbs # -> WORKDIR/pickboard.html(Artifactとして公開可能)
または、選択前に見たい場合、再生可能なボードでクリップもカットします:
python scripts/board.py --work WORKDIR --mode play --out "%USERPROFILE%\Downloads\clips"
play は各候補をブラウザ向けH.264にカットします(HLG/PQの場合は自動HDR→SDRトーンマップ)、review_player.html をmp4と共にネイティブ <video> プレーヤーで書き出します(ローカル再生にはChrome/Edgeで開きます)。デフォルト出力は 16:9、トリームのみ、クロップなし です。
7. ユーザーが選んだ勝者をカット/仕上げます。 ピクセル正確またはフォーマット選択には、[[editor-pack-video-editing-stack]] の video-tool-router スキル(ストリームコピー対再エンコード、HLGガード、Resolveでのグレーディング/スタビライズ/アップスケール)を経由します。フォローアップを提案します:フロークリップへのモーションブラーブースト、9:16 縦長、カラー、キャプション、モンタージュ。
選択ルーブリック(これが実際の「選び方」です)
クリップは、品質ゲートをクリアし、かつ少なくとも1つの「特別な」シグナルを持つ場合に保存する価値があります。
品質ゲート(すべてが満たされる必要があります)
- ソースの一部、15〜30秒(デフォルト。ユーザーの希望長を優先します)。
- 被写体が明確で安定している — 主な被写体(バイク/ハンドルバー、顔、プレーヤー)がシャープで安定したフレーミング。全体的なブレ(段差/揺れによるもの)、ピントぼけ、白飛びまたは暗すぎ、レンズの遮蔽は拒否します。
- 何かが起こっている — 動きや変化。アイドル/駐車/待機や単調な無は拒否します。
「特別な」シグナル(1つ以上必要。多いほど、強いほど高ランク)
- スピード/モーション — 周囲がモーションブラーで流れつつ、被写体はシャープ。これはポジティブであり、モーションブラーブースト編集の主要な素材です。
- インタラクション — 他の人/ライダー/車両/動物。追い越し、集団走行、誰かの反応。
- アクション/ダイナミクス — コーナリング&バンク、ターン、標高変化、トリック、ヒヤリとする瞬間。
- 光と環境 — 日の出/日の入り、ゴールデンアワー、劇的な雲、霧/もや、トンネル、景色または開けた場所、水。時間帯の光は最も大きな「映画的」レバー — 常にフラグを立てます。
- 新規性 — シーン/地形の変化、出入り口、視覚的にその周辺数分と異なるもの。
「クリアでぼやけていない」と「モーションブラーは良い」の調整
被写体をシャープに、瞬間を意図的に保ちます。周辺の速度ブラーは特徴として扱います。全体的なブラー(段差によるフレーム全体のぼやけ)のみを拒否します。胸部/バーマウントカメラはバイクをシャープに保ち、世界が流れるようにします — これは欠陥ではなく、望ましい見た目です。
ランキング
順序: 特別なシグナルの強さと希少性、次に明確さ、次に多様性(トップスロットにほぼ同一のウィンドウを5つランク付けしないでください — 雰囲気を広げます:景色、ブラーフロー、追い越し、雰囲気のあるもの)。基準が単に存在しない場合(例:どこにも日の出/日の入りがない)は正直に言ってください — 弱いピックを無理に選ばず、そう言いましょう。
POVライドプロファイル(このユーザーの映像向けビルトインデフォルト)
バイク/サイクリングヘルメットまたはバーカム。具体的には:スピードブラーのスイープ、コーナリング/バンク、追い越し&集団走行、道路脇の生活、霧/もやと山道の景色、トンネル/並木道を保持。スキップするのは:停止、信号、駐車、電話いじり、長い直線の無。 (これはまさに、ユーザーが気に入ったクリップセットを生成したルーブリックです。)
candidates.json スキーマ
[
{"pick":"P01","clip":"clip_6318","file":"%USERPROFILE%/Downloads/clip_6318.mov",
"start":96,"end":120,"hero":104,"title":"高い木々のトンネル、前方にライダー、強烈なスピードブラー",
"tags":["speed-blur","scenery"]}
]
start/end/heroは秒単位です。heroはウィンドウ内の代表的な瞬間(サムネイルと鮮明度スコアに使用) — 必ずしも中点ではなく、最も特徴的なビートを選びます。pickコードはユーザーの選択ハンドルとしても機能します(「P01、P03、P10をカット」)。tags(自由ですが、これらは見やすいラベルになります):speed-blur、corner、vista、interaction、overtake、atmosphere、scenery、action、light、wildlife。
効率性と注意点
- HEVC/HDRデコードがボトルネックであり、編集ではありません。約30分のHEVCの調査は数分のデコード時間です。映像が必要とするだけの密度でサンプリングします。調査とプレイモードのエンコードはバックグラウンドで行います。
- HLG/HDR映像はナイーブなSDR H.264エクスポートで灰色になります —
board.py playは自動検出してトーンマップしますが、この映像の手動カットも同様に行う必要があります。video-tool-routerのHLGガードを参照してください。 - 必要に応じて高速化します: ユーザーが事前に雰囲気を指定した場合(「山のコーナーとトンネルブラーだけ」)、より粗い間隔で調査し、それらのみを候補にし、彼らが望む数個だけをエンコードします — 20分のパスを数分に短縮します。
- 捏造しないでください。 サンプリングされたフレームが実際に示すものだけを主張してください。1〜2秒のイベントの存在が不明な場合は、それを主張する前にその範囲をより密にサンプリングしてください。
- Windowsフォントパスはスクリプトにハードコードされています(
C:/Windows/Fonts/...)。他のOSでは調整してください。