レンダリング — 音楽、効果音、キャプション、最終書き出し
入力: videos/<video>/ の承認済み storyboard.json(音声に合わせて調整済み:audio と timing を含む)および承認済み audio/voice-script.json。出力:
audio/music.wav 選択または生成された音楽
audio/mix.wav 最終サウンドトラック(ボイス + ダッキングされた音楽 + SFX)、-14 LUFS
audio/mix.json すべてのサウンドイベント(ショット、キュー、ファイル、時刻)を確認用に
render/final.mp4 1080x1920(フォーマット準拠)、30 fps、H.264 + AAC
render/cover.png フル解像度のカバー / サムネイル
render/qc.json 品質チェックレポート
このステージでは画像や台詞を変更しません。 アニメーションやタイミングが誤っている場合は、ストーリーボード/ボイスオーバースキルを使用してください。デフォルトは無料: ライブラリまたはコード生成による音楽、コード生成による効果音。有料音楽(AI生成)は、ユーザーが依頼するか見積もりを承認した場合のみ使用します。
ステップ 1 — 音楽
- ストーリーボードの
music.mood/notesと動画の長さを読み取ります。 studio/library/music/を検索します(index.jsonにムードタグ、BPM、ライセンス付きのトラックがリストされています)。最適なものを選択します。適切なものがない場合はその旨を伝えます。- 一致するものがない場合 → 無料のフォールバックを生成します。リビールショットの開始時(シーン開始時刻 — 持続時間/トランジションから計算)にリフト(「ドロップ」)を付けます:
node studio/scripts/make-music.mjs --out videos/<video>/audio/music.wav --duration <s> --mood upbeat|calm|cinematic|tense --bpm <n> --drop <s> [--silence <from>-<to>](tense: 短調、心拍の鼓動、未解決のエンディング、--silenceはリビール音の前のウィンドウをミュート — tenseムードではその後ろで時計のチクタク音が続きます)。ユニバース動画:universe.json→music/sfxに従ってください。 ライブラリトラック:audio/music.wavにコピー/変換します。トリミング、フェード、ダッキングはミックスで行われます。 storyboard.jsonに記録します →music.file,music.source(トラック + ライセンス、または "code-generated")、オプションのmusic.db(ダッキング前のデフォルト -16 dB)。
ステップ 2 — 効果音
キューは各ショットの sfx に既に存在しています(プレーンな単語で、ボイスオーバーステージによってフレームまたは話し言葉にアンカーされています)。ミキサーは studio/library/sfx/index.json を介して単語をサウンドにマッピングします(node studio/scripts/make-sfx.mjs によって生成されます。カスタムサウンドは custom に入れられ、最初にチェックされます)。repeat + every はキューを複数回再生します。syncEnd: true はショットの最後に配置します。ライザーはキューで終了します。トランジションのウーッシュ音はオプトインです(--auto-whoosh)。ユーザーは控えめなサウンドを好みます:特徴的な瞬間のみ(最大で約1キュー/2秒、ほとんどのトランジションではなし)。ストーリーボードにそれよりはるかに多くのキューがある場合は、重要な瞬間に絞ってからミキシングし、その旨を伝えます。ミキサーからの「No sound matched」行は、キーワードやカスタムサウンドを追加して修正します。ストーリーボードのデザインを変更することは決してありません。
ステップ 3 — ミックス
node studio/scripts/mix.mjs videos/<video>(--dry で最初にイベント数をプレビュー)
ボイスは最前面に配置されます。音楽はボイスによってダッキング(サイドチェーン)され、最後にフェードアウトします。SFX は -12 dB(--sfx-db または storyboard.sfxDb)。マスターはリミッター処理され、-14 LUFS / -1.5 dBTP にノーマライズされます。storyboard.finalAudio を設定します。オーディオを変更した後は再実行してください。
ステップ 4 — キャプション
ソーシャルフォーマットではデフォルトでオンです。storyboard.json で:
"captions": { "enabled": true, "y": 83, "size": 50, "skipLines": ["L11"] }
- フレーズ(最大4単語、バランスが取れ、ポーズで分割)はボイスのタイミングから取得されます。話されている単語はブランドのハイライト色でハイライトされます。
skipLines: 単語が既に画面に表示されているVO行(電話番号、URLなど)。- ショットごと:
captionY(フレームの%)で移動、captions: falseで同じ単語が画面に表示されている場合(例:名前のローワーサード)に非表示にします。 - セーフゾーン(デフォルト83%)内に収め、重要なデザイン要素にかからないようにします。
コンタクトシートで確認します(誰かが話しているフレームにキャプションが表示されます):
node studio/scripts/render.mjs videos/<video>/storyboard.json --sheet --scale 0.25 --out <scratchpad>/captions-sheet.png
一度確認し、captionY / captions: false で衝突を修正します。
ステップ 5 — 最終レンダリング、カバー、QC
node studio/scripts/render.mjs videos/<video>/storyboard.json --final
node studio/scripts/render.mjs videos/<video>/storyboard.json --cover
node studio/scripts/qc.mjs videos/<video>
QCは合格する必要があります: 解像度、フレームレート、コーデック、長さ = ストーリーボード、ラウドネス -14 ±1.5 LUFS。警告(トゥルーピーク、無音ギャップ、黒フレーム)→ 説明するか修正します。MP4を見ないでください。render/final.mp4(とカバー)をQCサマリーとミックス内の内容(音楽ソース、サウンドイベント数、キャプションのオン/オフ)とともにユーザーに送信します。
ステップ 6 — 承認
ユーザーが満足 → storyboard.json の "status": "final" → render、完了。変更: 音楽/サウンド/キャプションの調整 → ここでのステップ 1~5。画像やタイミングの変更 → ストーリーボード/ボイスオーバースキル、その後このステージを再実行します。