film-qa
あなたはフレームと数値をチェックします。意図ではありません。PASS には証拠が必要です。開いたファイルパスまたは測定した数値です。
それ以外は NOT CHECKED: <理由> と記載します。確認または測定していないものに対して PASS と書かないでください。
パス(launch-video/ からの相対、または launchfilm リポジトリ内の studio/):フィルムソース films/<slug>/(film.json、
STORYBOARD.md、BRIEF.md)、レンダリング out/<slug>/、QA qa/<slug>/(CLI が report.md を書き込みます。あなたはその隣に QA.md を書き込みます)。
正確な CLI フラグ:npx launchfilm <cmd> --help。テスト済み構文のコマンド:references/commands.md。
手順
- 自動パス。
npx launchfilm qa <slug>→ 最初にqa/<slug>/report.mdを読む(シート、ffprobe、ラウドネス、 自動チェック)。その測定数値を証拠として QA.md にコピーします。測定済みの項目を再測定しないでください。 - シート。 レポートにリストされている(または
npx launchfilm sheet <slug>で生成された)すべてのコンタクトシートを開きます。すべてのセルを読みます。 開いたファイルを QA.md にリストします(T12 の証拠)。 - スチル。
npx launchfilm still <slug> <t> --preset <id>を、フィルムが出荷する各プリセットに対して、以下で実行します: 各ショット境界 + 6 フレーム、各テキスト開始 + ホールド/2、フレーム 0、最後のフレーム、およびフリーズまたは黒フレームスキャンがフラグを立てたすべての間隔。 さらに、ヒーローテキストフレームで--scale 0.25(16:9 で 480×270)で 1 枚のスチル:X タイムラインプレビュー。各 PNG を読みます。 - 測定 レポートが測定しなかった項目:ラウドネス、トゥルーピーク、黒フレーム、フリーズ区間、ビートに対するカットタイミング、 テキスト背後またはセーフゾーン内のコントラスト、キャプション行の長さ。コマンドは references/commands.md を参照。
- ブロッキングチェック 以下の T1~T12、次に納品チェック D1~D16。各チェックは PASS / FAIL / NOT CHECKED + 証拠 + ルール。
qa/<slug>/QA.mdを書く references/qa-template.md から。- 修正ループ。 すべての FAIL:発見事項をフレーム番号と共に scene-build または sound に渡し、影響範囲のみを再レンダリング
(
npx remotion render … --frames=<a>-<b>または CLI 同等のもの)、それらの項目を再チェック。最大 2 ループ。その後、残った FAIL をスチル添付でユーザーに報告します。新しい証拠なしに FAIL を PASS に格下げしないでください。
ブロッキングチェック:12 の兆候(craft/00)
| ID | 合格条件 | 証拠 |
|---|---|---|
| T1 静止 | フリーズ区間が 0.6 秒以上ない(エンドカードの落ち着き(≤ 3 秒)を除く)。フラグが立てられた各区間について、開始と終了のスチルでドリフトまたは動きが確認されている | freezedetect 出力 + 区間ごとに 2 枚のスチル |
| T2 デフォルトイージング | films/<slug> 内で grep G1(scene-build)が空。CSS トランジションなし | grep 出力 |
| T3 一度に全部 | 3 つ以上の兄弟を持つすべてのグループは、ステガーで入場(シートセルに部分状態が見える、またはコード内でステガー ≥ 1 フレーム)。グループ入場 ≤ 24 フレーム | シートセル参照またはコード行 |
| T4 単一速度 | 20 秒超のフィルムにはリズムの区切りが 1 つ以上ある(沈黙、黒へのスプラッシュカット、パレット反転、中央ショット時間の 2 倍以上のホールド)。発射モード:すべてのカットがビートの ±2 フレーム以内 | film.json の境界と beats.json。検出されたカット |
| T5 サウンド | film.json のすべての視覚的イベントに SFX があるか、VO/音楽でカバーされている。音楽は VO 下でダッキング。計画された場所に真の沈黙 | イベント数(音あり/なし)。VO ウィンドウと音楽のみのウィンドウのラウドネス |
| T6 ラベルとしてのテキスト | テキストがメッセージである場合(主張 10 %)、ヒーローテキストはフレーム高の 8 % 以上。すべてのテキストは 0.2 ×(単語数 + 1)秒以上保持。3 行以内。キャプションは 2 行以内 | 項目ごとの表 |
| T7 フラットな見た目 | 発射モード:グレイン + ビネットが存在。セクションごとに 1 つの名前付き処理。プロダクトモード:ヘアライン、ソフトシャドウ。mp4 スチルの最も暗いグラデーションにバンディングなし | grep + mp4 からのスチル |
| T8 ウェブレイアウト | スチルごとに焦点は 1 つ。3 行を超える段落なし。箇条書きなし。UI クロームはクローム自体が目的の場合のみ | スチル |
| T9 汎用ストック | films/<slug>/footage/SOURCES.md 内のすべてのフッテージクリップにソース + ライセンスの記載あり。ストッククリップはグレーディング済みで 1.5 秒以下にカット | SOURCES.md + スチル |
| T10 装飾的トランジション | トランジションは語彙内。非カットトランジションは 5 秒あたり 1 つ以下。blur-dissolve ≤ 12 フレーム | film.json |
| T11 ストーリー前のテンプレート | STORYBOARD.md に approved: がある。フレーム 0 が黒でなく、0.5 秒のスチルと異なる。1.5 秒(x, li)/ 1 秒(reel)までにプロダクトのカテゴリが明確。問題の後にペイオフ。最後にブランドサーフェスで 2 秒以上の静けさ | スチル 0、0.5、1.5 秒、最後の 2 秒 |
| T12 一度も見てない | この QA:開かれたすべてのシートとスチルがリストされている | QA.md のファイルリスト |
| T1~T12 のいずれかの FAIL は、配信用レンダリングとパッケージをブロックします。 |
納品チェック(プリセットごと。番号は craft/08#delivery-checks)
値は harness.config.json presets から、なければ craft/10#presets から。これらの ID を正確に使用してください。craft/08 と QA.md で共有します。
| ID | 合格条件 |
|---|---|
| D1 | ビデオ h264、プロファイル High(Remotion の ffprobe が 100 を出力)、pix_fmt yuv420p、コンテナ mp4 |
| D2 | 幅 × 高さがプリセットと正確に一致 |
| D3 | 一定の fps = コンポジション fps(r_frame_rate = avg_frame_rate) |
| D4 | 長さ = film.json ±1 フレーム、かつプリセットの長さ範囲内(x-16x9 ≤ 140 秒、reel-9x16 ≤ 90 秒) |
| D5 | オーディオ aac LC(Remotion の ffprobe が 1 を出力)、48000 Hz、2 チャンネル、~192 kbps。hero-loop:オーディオストリームなし |
| D6 | 統合ラウドネス −14 ±1 LUFS。トゥルーピーク ≤ −1.5 dBTP。VO −16…−14 LUFS(測定可能な場合) |
| D7 | moov が mdat の前にある(faststart) |
| D8 | ポスター = そのプリセットのフレーム 0 が存在し、同じサイズ、黒ではない(YAVG > 20)、フックが表示されている |
| D9 | VO があるすべてのプリセットについて SRT がレンダリングの隣にある。キャプションと同じフレーズ。HH:MM:SS,mmm。2 行以下。各 0.8 秒以上。タイミング ±2 フレーム |
| D10 | 重要なもの(キャプション、テキスト、ロゴ、使用中の UI)がプリセットのセーフゾーン外にない(オーバーレイスチル) |
| D11 | キャプションは VO があるすべてのプリセットに焼き付け(hero-loop:なし、ph-16x9 は設定による)。2 行以下。16:9 では 1 行 42 文字以下、4:5, 1:1, 9:16 では 32 文字以下。変化する要素の上に決して重ならない。フッテージ上のキャプションとテキストのコントラスト ≥ 4.5:1、背景上のアクセント ≥ 3:1。480 px(16:9)および 360 px(4:5, 9:16)幅のスチルで読み取り可能 |
| D12 | フリーズリストとブラックリストが、設計されたホールドおよびブラックビート(film.json または STORYBOARD にリストされたもの)のみと一致 |
| D13 | BT.709 タグまたは未タグの HD。最も暗いグラデーションが、mp4 スチルと PNG の比較で新しいバンディングを示さない |
| D14 | ファイルサイズが上限未満:x ≤ 512 MB、README ヒーロー ≤ 10 MB |
| D15 | out/<slug>/credits.txt がすべての CC BY アセットをそのクレジット行とともにリスト。films/<slug>/footage/SOURCES.md が完全 |
| D16 | hero-loop のみ:フレーム N がフレーム 0 と等しい。3 回ループしたファイルが継ぎ目でジャンプを示さない |
テキスト時点での可読性
film.json 内のすべてのテキストアイテム(主張、キャプション、ラベル、VO が指す UI コピー)について:単語数、イン/アウトフレーム、 保持 = (out − in) / fps、必要 = 0.2 × (単語数 + 1) 秒。また、480×270 のスチルでヒーロー行がまだ読み取り可能か(文字が区別できるか)を確認します。 QA.md ではアイテムごとに 1 行です。
レポートのルール
- すべての PASS は証拠を引用します:
qa/<slug>/stills/x-16x9-12.30.png、I = −14.2 LUFS、grep G1: 0 lines。 - 測定された数値は、単位とそれを生成したツールを保持します(
system ffmpeg 8.1 ebur128またはremotion ffmpeg loudnorm)。 Remotion にバンドルされた ffmpeg にはebur128、signalstats、freezedetect、tile、drawboxおよび rawvideo 出力がありません。それらにはシステムの ffmpeg を使用し、その旨を明記します。存在しない場合、それらの項目は NOT CHECKED です。 - FAIL はフレーム範囲、ルール(
craft/NN#anchorまたはT#/D#)、および提案された修正を指定します。 - サマリーブロックは、T1~T12 および D1~D16 がすべて PASS の場合のみ READY と表示します(D16 は hero-loop のみ)(NOT CHECKED は理由とともに準備未完了とカウントされます)。