オンラインRPG GODIUSのYouTubeライブ配信を
バッチひとつで出来るようにしたよ!!
下記に方法をメモっておいたので、皆さん試してみてNE(´^ω^`)
変更履歴
- 2024-09-23: ウィザード方式に作り直し
Githubに公開 - 2024-07-01: ローカル音楽ファイルのループ実装 + 実行時エラー処理追加
ステレオミキサー, マイク, ネットワークストリーム, ローカル音声ファイル のミキシングに対応
以上により、1~4系統のミキシングが可能になった - 2023-10-05: 設定と説明を微調整
- 2023-09-15: バッチのBGMに(マイク or ネットワークストリーム) + ステレオミキサーのミキシングを実装
使用できる入力は現在2系統に限定されるが、入力ボリュームのバランスを適正化できた - 2023-09-06: バッチ遅延開始にも関わらず、ログイン画面が撮影されてしまう問題を解決
ネットワークストリームの埋め込みに対応 - 2023-08-31: chocoコマンドのインストール方法が必要だった・・・。、
- 2023-08-20: 配信の他、ローカル動画ファイルへの変換を実装。Chat-GPTに手直ししてもらった^^
- 2023-08-19: 録画開始時にログイン画面が見れてしまう危険があり、遅延開始を実装
- 2023-08-18: コーディング,テスト開始
実装方法
実装方法(旧版)
- 管理者用PowerShellで下記コマンド入力→chocoコマンドインストール
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1')) - 管理者用PowerShellで下記コマンド入力→ffmpegインストール
choco install ffmpeg
- バッチ作成
任意の場所に”godius_live.bat”というファイルで下記ソースを保存@echo off rem バッチ開始から何秒で配信開始するか(数字を調整すること) timeout /t 30 /nobreak rem ↓YouTubeストリームキーの取得とコピペを忘れないようにNE!! set stream_key="****-****-****-****-****" rem 差し込みBGM用: rem 使用する場合、最終行にある %mixer% のかわりに %music_playlists% もしくは %music_loops% を挿入 rem またはミキシングしたい変数を最終行の第1引数に追加していく set music_playlists=-i "http://stream.example.com:9000/stream/music/" set music_loops=-stream_loop -1 -i "C:\Users\****\Music\bgm_sample.mp3" rem マイクとステレオミキサーのデバイスを使えるようにする rem コマンドプロンプトで「ffmpeg -list_devices true -f dshow -i dummy」と入力し rem 該当デバイスの「@device_cm_{****}」を下記変数にセットすること set mic=-f dshow -i audio="@device_cm_{********-****-****-****-************}\wave_{********-****-****-****-************}" set mixer=-f dshow -i audio="@device_cm_{********-****-****-****-************}\wave_{********-****-****-****-************}" rem 以上、最下行の「ffmpeg」直後にある「%mic%」箇所に、半角スペースで変数を入力すると全部ミックスされる rem 下記「set audio_mix」の「"weights=1.5 0.1"」の部分にて、音量バランスを調節可 rem ※ ↑ はマイクとステレオミキサーの2つをミキシングした例であり、3系統以上ミキシングする場合は必ず最終行はじめの引数に挿入した変数順に数値をセットしていくこと rem ※ 音声入力がひとつのときは、「%audio_mix%」を一番最後のコマンドから除外すること set audio_mix=-filter_complex "amix=inputs=2:duration=longest:dropout_transition=2:weights=1.5 0.1" rem 出力形式: live=Youtube / record=ローカルの動画ファイル rem 最終行コマンド末尾で選択 OR 半角スペースで「%live% %record%」と指定可 set live=-f flv "rtmp://a.rtmp.youtube.com/live2/%stream_key%" set record=-f flv "C:\Users\****\Videos\GODIUS_%date:~0,4%%date:~5,2%%date:~8,2%_%time:~0,2%%time:~3,2%%time:~6,2%.flv" @echo on rem Ctrl+Cで終了 rem -video_sizeを 800x600にすると、チャット欄を含めた全画面がキャプチャされる。 ffmpeg %mic% %mixer% %audio_mix% -framerate 30 -video_size 800x480 -f gdigrab -i desktop -f lavfi -i anullsrc -c:v libx264 -vf format=yuv420p -preset veryfast -g 60 -b:v 4000k -maxrate 4000k -bufsize 12000k -c:a aac %live% %record% if errorlevel 1 ( echo エラーが発生しました。FFmpegの設定を確認してください。 pause )
- バッチ内説明の通り、「ffmpeg -list_devices true -f dshow -i dummy」にて
使用できるサウンドデバイスを「mic」「mixer」変数にセットしておく - YouTubeの自チャンネルより配信の準備をし、ストリームキーを入手→バッチの5行目にセット
- ガディウスにログインする直前まで支度を進める
- バッチ起動→ガディ起動



コメント