クラウドファンディング (Makuake) 公開前に必要な「動くデモ動画」を、撮影 0 で 30 秒に圧縮した プロトタイプとして自動ビルドする手順。VOICEVOX + ffmpeg + 既存 PNG だけで完結する。
3 つのフォールバック経路を持つ自動ビルドスクリプト
scripts/build-demo-video.py は、 crowdfunding/cf-demo-video-script.md の 26 カット台本から 短尺デモ用に 4 カット (C-01 / C-02 / C-15 / C-22) を選び、 既存の説明用 PNG/JPG を素材に 30 秒のヒーロー動画を生成する。
| カット | 狙い | 背景画像 |
|---|---|---|
| C-01 | オープニング (痛み) | mleague/output/archive/early/realtime-demo-screenshot.jpg |
| C-02 | 現状の OSS 検出限界 | docs-site/images/cf-before-after-detection.png |
| C-15 | 専用ファインチューンの差別化 | docs-site/images/cf-architecture-overview.png |
| C-22 | 4 リワード CTA | docs-site/images/cf-bottleneck-summary.png |
プロトタイプ実行に必要なツール
winget install --id=Gyan.FFmpeg -e
# インストール後、新しい PowerShell を開いて確認
ffmpeg -version
python --version # 3.14.x 推奨
python -m pip install pyttsx3
pyttsx3 は任意 — 入っていない場合は --no-audio 経路で字幕のみのサイレント動画になる。
制約として、スクリプトは ffmpeg / VOICEVOX / pyttsx3 が無くても exit code 0 で完走する設計。
高品質なずんだもん音声で本番クオリティに近づけたい場合に導入。プロトタイプ品質では pyttsx3 (Windows SAPI Haruka) でも十分。
127.0.0.1:50021 でリッスン)curl http://127.0.0.1:50021/versionVOICEVOX 利用規約 — キャラクタごとに条件が異なる。 ずんだもん (speaker=3) はクレジット表記「VOICEVOX:ずんだもん」が必須。 本スクリプトは末尾クレジットフレームに自動で埋め込み済み。 商用利用前に必ず 最新利用規約を確認すること。
cd した状態で実行する
cd C:\Users\newuser8\shimanto-projects\mahjong-scorekeeping
python scripts/build-demo-video.py
python scripts/build-demo-video.py --no-audio
python scripts/build-demo-video.py --full
# 注: 現在はテンプレ告知のみ。selected_cut_ids と IMAGE_MAP_SHORT を
# 全 26 カット分に拡張してから本実装に進む
| 項目 | 値 |
|---|---|
| 出力ファイル | crowdfunding/cf-demo-video-prototype.mp4 |
| 尺 | 27.1 秒 (4 カット + 3s クレジット) |
| 解像度 | 1920x1080 / 30fps |
| コーデック | H.264 (libx264, crf=23) + AAC 128k |
| ファイルサイズ | 1.06 MB (上限 50 MB に余裕) |
| ビルド時間 | 約 8〜12 秒 (Surface ProcType) |
| 音声プロバイダ | VOICEVOX 停止中につき pyttsx3 (Windows SAPI Haruka) 代替 |
プロトタイプから本番クオリティに昇格させるロードマップ
| 項目 | 時間 / 数量 | 単価 | 金額 |
|---|---|---|---|
| スクリプト本実装拡張 (--full) | 1.0h | ¥5,000 | ¥5,000 |
| VOICEVOX フル尺合成 (26 カット ×平均 8s) | 0.5h (バッチ) | ¥5,000 | ¥2,500 |
| VOICEVOX エンジン稼働コスト (ローカル CPU) | — | 無料 | ¥0 |
| 実写撮影 (1 日) | 10h / 雀荘 + スタジオ | ¥15,000/h 込 | ¥150,000 |
| 編集 (AE + Premiere) | 20h | ¥6,000/h | ¥120,000 |
| BGM ライセンス (Artlist 月額) | 1 ヶ月 | ¥3,500 | ¥3,500 |
| 合計 | ¥281,000 | ||
API クォータ — VOICEVOX はローカルエンジンのため API クォータゼロ。 フル尺 (推定 200 秒ナレーション総量) でも処理時間は 1〜2 分。 課金 API (ElevenLabs / OpenAI TTS) を使う場合は別途見積。
IMAGE_MAP_SHORT / VIDEO_MAP に追加 → カット差し替え公開前に必ず確認
VOICEVOX
キャラクタごとに利用条件が異なる。本スクリプトはデフォルトで「ずんだもん (id=3)」を使用。 商用利用時はVOICEVOX 利用規約と 各キャラクタの追加規約 (ずんだもんは「東北ずん子・ずんだもん プロジェクト利用規約」) の両方に従う。 動画末尾の「VOICEVOX:ずんだもん」クレジット表記は本スクリプトが自動付与する。
Windows SAPI (pyttsx3 経由)
Microsoft Speech Platform / Windows の Haruka 音声は OS 同梱の範囲で商用利用可能だが、 Microsoft の音声サービス規約を確認推奨。 プロトタイプ用途では問題なし。
M-League / Roboflow データ
本動画では M-League の映像・ロゴ・選手名・チーム名は一切使用していない。
既存の cf-before-after-detection.png は内製の合成データから生成された比較画像であり、
M-League のフレーム自体は含まれない。フル尺版で M-League 由来のフレームを表示する場合は
モザイク / ロゴマスキング処理が必須。
本動画素材の権利
すべての説明用 PNG (cf-*.png) は本プロジェクト内製。
生成された cf-demo-video-prototype.mp4 も Shimanto AI の権利物。
Makuake 掲載・SNS 拡散とも問題なし。ただし git 追跡は .gitignore 設定により除外
(再生成可能なため)。
既知の問題と対処
ffmpeg drawtext で textfile= を使うと、Windows の CRLF (\r\n) を
リテラルとして描画して豆腐 □ が出る既知の問題がある。本スクリプトは
1 行 = 1 drawtext フィルタ で重ねる方式に切り替えてこれを回避している。
YuGothM.ttc (TrueType Collection) を drawtext で開くと一部グリフが欠落するケースあり。
本スクリプトは meiryob.ttc (Meiryo Bold) を最優先候補にして回避。
Windows の cp932 デコーダが UTF-8 を読めないため。本スクリプトは
sys.stdout.reconfigure(encoding="utf-8", errors="replace") で UTF-8 を強制している。
呼び出し側で必要なら set PYTHONIOENCODING=utf-8 を先に実行。
エンジンが起動していない可能性。スクリプトは自動的に pyttsx3 / サイレントへフォールバックするため エラーで止まることはないが、ずんだもん音声を使いたい場合は VOICEVOX を先に起動すること。