← index に戻る

Mahjong Vision — デモ動画プロトタイプ ビルドガイド

クラウドファンディング (Makuake) 公開前に必要な「動くデモ動画」を、撮影 0 で 30 秒に圧縮した プロトタイプとして自動ビルドする手順。VOICEVOX + ffmpeg + 既存 PNG だけで完結する。

1920x1080 / 30fps H.264 / AAC mp4 ~1.1 MB / 27 秒 Windows 11 + Python 3.14

1. 何をやったか

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 秒のヒーロー動画を生成する。

パイプライン

  1. 台本 md をパースしてカット毎のナレーション/テロップ文字列を抽出
  2. ナレーションを音声合成 (VOICEVOX → pyttsx3 → サイレント の 3 段フォールバック)
  3. 各カットの画像をスケール (1920x1080, 黒パディング) + fade in/out + 字幕焼き込みで mp4 化
  4. 末尾に音声プロバイダのクレジット (VOICEVOX 利用時は「VOICEVOX:ずんだもん」必須) を追加
  5. ffmpeg concat demuxer で結合し crowdfunding/cf-demo-video-prototype.mp4 を出力

選定カット

カット狙い背景画像
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-224 リワード CTAdocs-site/images/cf-bottleneck-summary.png

2. 前提セットアップ (Windows)

プロトタイプ実行に必要なツール

ffmpeg (必須)

winget install --id=Gyan.FFmpeg -e
# インストール後、新しい PowerShell を開いて確認
ffmpeg -version

Python 3.10+ (必須)

python --version   # 3.14.x 推奨
python -m pip install pyttsx3

pyttsx3 は任意 — 入っていない場合は --no-audio 経路で字幕のみのサイレント動画になる。 制約として、スクリプトは ffmpeg / VOICEVOX / pyttsx3 が無くても exit code 0 で完走する設計。

VOICEVOX (任意・推奨)

高品質なずんだもん音声で本番クオリティに近づけたい場合に導入。プロトタイプ品質では pyttsx3 (Windows SAPI Haruka) でも十分。

  1. 公式サイトから VOICEVOX をダウンロード
  2. インストール後、起動して「エンジンを起動」状態にする (127.0.0.1:50021 でリッスン)
  3. 動作確認: curl http://127.0.0.1:50021/version

VOICEVOX 利用規約 — キャラクタごとに条件が異なる。 ずんだもん (speaker=3) はクレジット表記「VOICEVOX:ずんだもん」が必須。 本スクリプトは末尾クレジットフレームに自動で埋め込み済み。 商用利用前に必ず 最新利用規約を確認すること。

3. スクリプト使用例

cd した状態で実行する

デフォルト (30 秒短尺)

cd C:\Users\newuser8\shimanto-projects\mahjong-scorekeeping
python scripts/build-demo-video.py

サイレント (字幕のみ・最速)

python scripts/build-demo-video.py --no-audio

フル尺 (2:30) 量産モード

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) 代替

4. フル尺 2:30 量産時の手順

プロトタイプから本番クオリティに昇格させるロードマップ

必要な追加素材

コスト見積

項目時間 / 数量単価金額
スクリプト本実装拡張 (--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) を使う場合は別途見積。

段階的アップグレードパス

  1. Phase 1 (現状) — 既存 PNG + pyttsx3 → 投資家説明用のラフ動画 (現状の出力)
  2. Phase 2 — VOICEVOX エンジンを起動 → 再ビルドだけで音質が劇的に向上
  3. Phase 3 — 実写素材を IMAGE_MAP_SHORT / VIDEO_MAP に追加 → カット差し替え
  4. Phase 4 — 本番版は Premiere Pro / DaVinci Resolve で手編集 (本スクリプトは未編集マスター生成器)

5. 著作権・利用規約注意

公開前に必ず確認

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 設定により除外 (再生成可能なため)。

6. トラブルシューティング

既知の問題と対処

Q. テロップの末尾に「□」が出る

ffmpeg drawtext で textfile= を使うと、Windows の CRLF (\r\n) を リテラルとして描画して豆腐 □ が出る既知の問題がある。本スクリプトは 1 行 = 1 drawtext フィルタ で重ねる方式に切り替えてこれを回避している。

Q. Yu Gothic で一部漢字が豆腐になる

YuGothM.ttc (TrueType Collection) を drawtext で開くと一部グリフが欠落するケースあり。 本スクリプトは meiryob.ttc (Meiryo Bold) を最優先候補にして回避。

Q. コンソール出力が文字化け

Windows の cp932 デコーダが UTF-8 を読めないため。本スクリプトは sys.stdout.reconfigure(encoding="utf-8", errors="replace") で UTF-8 を強制している。 呼び出し側で必要なら set PYTHONIOENCODING=utf-8 を先に実行。

Q. VOICEVOX に接続できない

エンジンが起動していない可能性。スクリプトは自動的に pyttsx3 / サイレントへフォールバックするため エラーで止まることはないが、ずんだもん音声を使いたい場合は VOICEVOX を先に起動すること。

7. 関連ファイル