PG.Lib

アプリ開発関連とかガジェット関連とか

サーバーをキャプチャー、配信専用にしてみようとした話

FORTNITEとかプレイしている時、気まぐれにTwitchなどに配信してみたりしているんですが、配信してしまうとフレームレートの低下が気になるので、どうにかしたいと考えていました。単純にPCを買い替えるとか、eGPUを活用するとか考えたのですが、あまりに費用が掛かり過ぎるため却下。色々考えていたんですが、ふと、我が家には常時稼働しているサーバーがあるじゃないですか。それを配信ように活用してみては?と思ったので、色々試した顛末を書いていきたいと思います。

構成

ゲームをプレイしているのはALIENWARE 13R3で、AOCの湾曲ゲーミングモニターに接続してプレイしています。このモニターが144Hzに対応しているので、FORTNITEをプレイするだけであれば、設定次第で144Hzを活かして遊ぶことができます。


また配信に使用する予定のサーバーが、FUJITSU TX100s3という端末で、昔からコツコツと拡張していて、XEONの4コア、メモリ8GB、GT1030を搭載しているという感じです。ただ、世代が古いのでそろそろ限界?という感じでもあります。

試してみた構成

ALIENWARE 13R3にはモニター出力が2つついており、HDMIとDisplayPortそれぞれで表示が可能となります。

144Hzを発揮するにはDisplayPortが必須なので、外部ディスプレイにはDisplayPortで接続。HDMIが空いているので、この出力をサーバーで受け取れるようにすればいいのでは!?と考えました。

HDMIキャプチャー

近頃は安価なHDMIキャプチャーが多数販売されていますが、選んだのはコレに近いタイプのものもです。

USB3.0接続に対応していて1080p60fpsに対応しているそうです。

似ている製品でUSB3.0対応と明記されていないものあったり購入には色々同じような製品を調べました…

USBポート追加

問題なのがUSB3.0。FUJITSU TX100s3には、USB2.0のポートしかありません…。

ということで、PCIeでUSBポートを追加できるボードを買いました!

どちらもサクっと認識しました。

いざ接続!

ALIENWAREからTX100s3にHDMIで接続します。

ALIENWAREは3画面の状態、TX100s3にはHDMIの出力内容がカメラ入力同等として認識されている状態です。


で、ゲームのプレイ動画を流したいのですが、HDMIに出された内容を見ながらプレイする訳にはいきません。TX100s3の画面を見る事になりますし、なにより遅延がヤバいです。

Windows10の画面表示設定で、特定のモニターをセットでミラー表示することができます。なので、DisplayPortとHDMIの出力をミラー表示にすることで、ゲーミングモニターとHDMIキャプチャーへ同時出力することができるようになりました。


そのままだと、ゲーミングモニターのリフレッシュレートが60Hzにリセットされてしまうので、改めて144Hzに設定しなおしました。

色々問題発生!!

実際に試してみたんですが、まぁ色々問題が発生したわけです。

音の問題

ゲームの音をどこから出すか?問題です。基本的にWindowsは1つのソースからしか出力できません。

いつもはALIENWARE本体から出していましたが、そうするとHDMIキャプチャーには映像は来ますが、音が一切入ってきません。当然、HDMIキャプチャー側に音を出せば、映像と音をセットで記録できますが、プレイ中はどうするんだ!?問題が発生します。


「Audio Router」というソフトを使えば、複数ソースへ音を出すことが出来るようになるみたいですが、開発が止まっておりFORTNITEを設定するとエラーになってしまいます。チート対策?だったりするらしいのですが、とりあえずソフト的な対応は難しそう。

フレームレートが出ない

そもそも2画面出力をするというだけで、高負荷になりフレームレートが出ないようです。1画面時と比べてガツンと落ちてしまいます。

解決方法を探る

PCで2画面出すというのが難しいのであれば、出力したものを分岐するしかないかなーと考えています。音もHDMI出力で1つにまとめられるので問題はクリアになるかなと。

簡単に図にしてみました。

f:id:fxxk_authority:20201002215204p:plain

f:id:fxxk_authority:20201002215224p:plain

問題は分岐した結果、ハイリフレッシュレートを維持できるかどうか?という点です。

まだまだ試行錯誤が必要ですね・・・


※この記事は実は下書きのまま寝かされていた記事です。結果として別の方法で解決したのですが、時間があったらまとめていきたいと思います。