素人ながらにAWSを使ってクラウド配信とかNodeCGの運用をやってみた -RCG Speedrun Grand Prix編- #RCG_Speedrun_GP

配信機材

ちょっと自作PCがわかって、個人サイト全盛期にHTMLタグ打ちとかやってた人間が苦戦したログです。何かの参考になるといいと思って書き記します。体験談なのでこれが万人に起こるとも限りません。
わかりやすくしようとしたけどうまくいきませんでした…

尚、本記事の校閲にあたって扶桑さんに多大なるご協力を頂きました。
ありがとうございます。

配信PCについて

インスタンス起動について

Parsecについて

  • 基本的にはこちらの記事を参照して、その通りにすればよい
    https://zenn.dev/gunimus/articles/aws-create-cloud-pc
    ただし、IAMページで ロール:AmazonS3ReadOnlyAccess が適用されたものを配信インスタンスにアタッチしてやる必要がある
    これをしないと、Parsecが使うグラフィックドライバがうまく導入出来ない模様
    それとどうも大阪ではなく東京リージョンで使うほうが成功する模様IAMロールIAMロールをこのように作成して


    配信PCにアタッチ
    これをやっておかないと、なんかParsec接続時の解像度が低解像度になったりする
  • 更にParsecの解像度がおかしかったので、Powershellでroute -p delete ip.addr.here
    とコマンドを打つ(ip.addr.hereはインスタンスのプライベートIPv4アドレス : 54.122.33.165 みたいな)
    この後再起動すると何故かフルHD解像度での表示が可能になった
    参考URL: https://github.com/parsec-cloud/Parsec-Cloud-Preparation-Tool/issues/18
  • あとParsecでの接続初回はだいたいEC2のクソ長くて複雑なパスワードを入力することになる
    その後でもリモートデスクトップで接続するとその直後はおそらく確定で問われる

音声周り

大鬼門。

  • とりあえずVoicemeeter Bananaを導入する
  • 今回はなぜかVoicemeeterの片方の出力にDiscord音声とゲーム音声が偏る事象が発生した
  • 代替案としてVoicemeeter Potatoを導入したら何故かうまくいった
  • 一方でParsecから音が出ないという事態に、設定変更でもうまくいかず
    これによりタイマーのタイミングを合わせるのが大変困難であったこと、音量バランスも非常に難儀したことを陳謝
  • 並走や音量バランスの整わない配信でのみ、配信者側の音声にはゲーム音だけを載せ、配信PCでDiscord音声を拾った
    概ね10秒程度声が早いので、オフセットを10000msに設定して音ズレを軽減
    このあたりは事前調査が上記のことで今回困難だったことに起因
    本当はSRT等の低遅延技術を導入したいが、そこまでやるかと言われると…
    Twitch側の配信遅延が相当大きいようで(様々な配信サイトの中でも大きいらしい)、これを回避する安価な方法があればよいのだが
    VDO.Ninjaで可能なのだろうか?
  • 扶桑氏いわく、SyncroomとVoicemeeterの相性が劣悪らしく、当初これをやってしまったことが原因ではないかと思料
    VB-Cableに課金したほうが良かったかもしれない

NodeCG

  • できればLinux環境でビルドしておきたい、Windows環境で開発して頂いたのでWindows環境でしか動かないと思い込んでWindowsサーバーで稼働させた
  • こちらの知識不足が大きく影響したと反省するばかりである
  • Windows環境でつながらない場合、Windows Defenderのファイアウォール設定でポート9090を開放してやる必要がある
    ここが非常に忘れがちで鬼門だった
  • インスタンス自体は配信PCとは別でt3.mediumを起動しておいた
    配信PCを不用意に触ってNodeCGが落ちた!というのが回避できるので
  • ドメイン取得は最初は無料で取れるfreenomで取得したが、その後が苦戦したので結局AWSのRoute 53で一気通貫に取得
    功を奏したかはわからないがこれが楽だった。年$5ならまあいいか、という感じ
  • SSL化にも苦戦した
    Win-acme(Let’s Encrypt)には非常に苦戦した
    https://zenn.dev/21f/articles/letsencrypt-dev-windows
    https://www.ipentec.com/document/windows-acme-create-ssl-certification-in-pfx-file
    ここを参考に
    https://qiita.com/mmmm/items/0feaf5bf6056614df5b8
    TXTレコードもなんのことかわからず苦戦したが、AWSのRoute53上でwin-acme上に表示されたものをそのまま設定するものだった
  • 本当はNodeCGでゲーム名を切り替えるとそのまま配信タイトルとTwitchのカテゴリを変更できるようにしたかったのだが、SSL化が若干失敗(ワイルドカード認証である必要はなかった)ことと、トークンを引き渡すのに配信先チャンネルの認証を通して貰う必要があるため諦めることに
  • 並走タイマーを走者任せにせざるを得なかったのも同様、発注側の理解不足であり陳謝

コストどうだったの?

公開することでなにかの役に立つかもしれないので、公開してみます。
イベントを実施される際には参考にしてみてください。


当日2日間では土曜が$25.18、日曜が$32.06、合計$57.24でした。(日曜はNodeCGインスタンスをつけっぱなしにして寝ていたのもある)
データ通信料金が$25.59、配信マシン利用料が$24.69、NodeCGマシンが$5程度というかんじです。
準備期間まで含めてのコストは$123.58となりました。

結論

  • 基本的にめんどくさいしトラブルもまあまあ起こりうるので、とても勧められるものではない
  • 普段の自分の環境でイベント配信できるならそれに越したことはない
  • カッコつけ、趣味、どうしても手元PCを他人に触らせたくない、回線だけが弱い
    以外の理由では、個人主催レベルではやらないほうが良い
    (私はやってみたいからやっただけです)
    PCが弱いなら、ホントに強いPCを買った方が間違いなく楽

ちなみに準備期間中、予備環境としてゲーミングノートを買っていたりします。

コメント

タイトルとURLをコピーしました