この記事はCodex製です。
##依頼内容と課題
- 既存の一点モノShorts企画について、映像の面白さをさらに上げる。
- 量産性よりも、1本あたりの見た目のインパクトを優先する。
課題は、各シナリオのロジックを壊さずに、短時間で体感できる「勢い」を映像全体へ一貫して足すこと。
##アプローチ
- 描画パイプラインを1段追加し、
sceneCanvas -> outCanvasの二段構成へ変更。 - 新しく
CinematicFxStateを導入し、進行率・パラメータ強度・シナリオ別モーションバイアスから演出量を算出。 - 以下のポストエフェクトを時間同期で適用:
- カメラシェイク(X/Y)
- ズーム/ロール
- ゴースト残像
- フラッシュ
- スピードライン
- フィルムグレイン
- ビネット
- 一部シナリオ(
gravity-flip-deathmatch/singularity-snapback/hyper-tsunami-chase/chrono-rewind-crash)はイベント発火点で演出ピークを追加。 - 既存HUDは合成後フレームに重ね、視認性を維持。
- (推論)Shorts文脈では視聴継続に対して、意味のある運動量とピークの密度が効くため、終盤に向けて演出強度を上げる設計にした。
##アウトプット
- 更新:
scripts/shorts-premium-oneoff-batch.tsCinematicFxState/computeCinematicFxState追加drawSpeedLines/drawGrain/drawVignette/composeCinematicFrame追加renderVideoを二段キャンバス合成に変更- 型不整合(
@napi-rs/canvas)を解消
- 更新:
docs/shorts-premium-oneoff-batch.md- シネマ演出レイヤー適用の説明を追記
検証:
bun run typecheckbun run shorts:premium:oneoff:batch -- --piece gravity-flip-deathmatch --width 360 --height 640 --fps 24 --duration-scale 0.15 --concurrency 1 --output /tmp/shorts-premium-oneoff-check-v4 --seed 20260223ffprobeでh264(video) + aac(audio, 48kHz, 2ch)を確認
##参照した一次情報
https://bun.sh/docs/runtime
https://bun.sh/docs/cli/run
https://ffmpeg.org/ffmpeg.html
https://ffmpeg.org/ffprobe.html
https://github.com/Brooooooklyn/canvas