2019年5月31日金曜日

ただの一般人がストリーマー並の高画質高品質で配信したい!!

(無駄に長い前振りがあったが省略)

せっかく世の中配信が流行っているのに配信していない自分はもったいないと思い、自分の考えうる最高の品質と最高の画質で妥協せず配信をするためにはどうすればよいか。

良い感じにまとまったのでまとめて行こうともう。
これから配信を始める良い子の諸君の参考になれば幸いである。


※この記事を読むにあたっての注意※
  • 高画質とは
    • 1080P60FPS配信であること
    • ブロックノイズが少ないこと
  • 高品質とは
    • フレームドロップしないこと
    • 見る側が不自由しない
  • 妥協せずとは
    • ゲームは1440Pのフルスクリーンでやりたい
    • モニターが144Hz対応なので144Hzでやる
    • ゲームに負荷をかけない
    • APEXはDiscordのオーバーレイ時にマウスが表示される不具合があるが、配信側はDiscordオーバーレイしたい


まず、一般人である私のPC環境である。


  • CPU: INTEL i9 9900K
  • GPU: MSI GTX 980ti
  • モニター: EIZO FS2735×2
  • マイク: audio-technica AT2020
  • エフェクター: Roland VT-4
  • ヘッドフォン: Razer Tiamat 7.1 V2
  • サウンドカード: ASUS Essence STX II 7.1
  • 榛名改二: ペロペロ

配信に関係の無い機器は省略。便宜上、本記事においてはゲーム用PCと呼称します。

まず、この環境でも最近のゲームではFPS144をだすのはなかなか厳しい。
→配信するならFPS値が今よりも下がる
→下げたくない場合は画質を落とさなければならない
→落としたくない
→そうだ配信専用PCを作ればいいんだ!!


配信用PC爆誕である。以下スペック。

  • CPU: i7 8700
  • マザーボード: ASUS ROG STRIX H370-I GAMING
  • GPU: MSI GTX 1660ti
  • キャプチャーデバイス: AVerMedia GC553

配信用PCは次のことができることが前提で組んだ。

  • OBSのNVENC(new)が利用できること
  • CPUによるH264エンコードの場合はプリセットでmediamが指定できること
ゲーム用PCと配信用PCの接続は次のようになっている。
この構成にすることで第一関門であった「FPSを下げずに配信する」をクリアした。
この構成は次の条件をクリアする必要があるため、真似する場合は注意が必要である。

  • キャプチャーデバイスがミラーリングするモニタと同じ解像度、リフレッシュレートを受け付けることが必要
例えばキャプチャーデバイスが1080Pの60FPSまでの場合、ミラーリングをするとモニタBも1080P、60FPSまで下がってしまう。FS2735は1440Pの144Hzなのでそういった事象が発生すると妥協が生まれる。妥協をしないのが目的なため、キャプチャーデバイスにGC553を選択した。ぶっちゃけ1440P144Hzを受け付けてくれれば何でもよかった。


ちなみに2PC配信のセオリー的な記事に次のような構成がある。
上記の構成にし、ゲーム用PCでOBSを動作させ出力プロジェクター機能を用いてキャプチャーデバイスにゲーム画面を擬似ミラーリングする方法である。

詳しくは「2PC配信」でググってくれ!!

この擬似ミラーリングには大きな欠点があり

  • 出力プロジェクターはどう頑張っても60FPSで表示されていない感じがする
  • めっさカクつく
体感51FPSとかそこらではなかろうか。

重要なのは「めっさカクつく」の方である。動画は仕組み上「前後フレーム」が死ぬほど重要であるため、カクついてフレームスキップが起きると、

ものすごい量のブロックノイズがのる

最初は、自分も出力プロジェクター方式を検討していたが、MHWで異常なほどブロックノイズがのるのでやめた経緯がある。動きの遅いゲームならこの方式で問題ない。ただ、そもそも動きの遅いゲームならこの方式(2PC配信)でなくてよい。
妥協をしないという前提であるならば、2PC配信をするにはキャプチャーデバイスがモニターと同一レベルの入力信号が受け取れることが必須である。

話を戻そう。

次に音声周りである。自分の音声周りは以下のようにしたい。

  • ゲーム用PCで基本的にDiscordしたい
  • 配信用PCでは自分の音声とDiscordの音声とゲーム音だけ流れればよい
  • ついでにDiscordの誰が喋っているかわかるオーバーレイも表示したい
  • APEXではDiscordのオーバーレイはバグるのでできれば Discord StreamKit Overlayで表示したい

上記を満たす構成を1つずつ解説すると永遠に終わらない気がするので、一気にゴールをお見せする。
持っててよかったVT-4

正直これがなかったらつんでいた。仕組みは簡単で、マイクの入力をどちらのPCにも入れちゃえばええんやで作戦。VT-4はボイチェンのイメージが強いが、製品自体はエフェクターなので多少ミキサーのようなことができる。

ゲーム用PCと配信用PCのDiscordはどちらも同じアカウントで入るため、どちらか一方しか音声チャットはできない。そのため、2ついっぺんに音声チャットが走らないので安全である。

なんでこんなことをしているかというと、Discord StreamKit OverlayをOBSで使用する場合、同じPC上でDiscordが起動していないといけない仕様がある。

今回OBSは画像にはまだ現れてきていないが、配信用PC側にしかない。そのため、配信用PCにDiscordを入れることはMASTである。しかし、そうするとDiscordをするときは「配信用PCを起動しておかなければならない」

配信用PCは配信しないときは電源OFFにしたい。ゲーム用PCにもDiscordを入れることはMASTである。

この場合、マイクの入力を分岐もしくは都度差し替える必要がある。それは面倒。両方繋ぎっぱなしにして必要な方のDiscordで音声チャット入ったら自動的にマイクの入力を変えるようにしたい。

結果、こうなった。

尚、Discordのオーバーレイを表示させない、もしくは、Discordの機能にあるゲーム内オーバーレイを表示させてそれを配信する。場合は、上記でなくてよい。
何度も言うが、APEXはDiscordのオーバーレイを使用すると画面がバグるので注意である。

ちなみに説明はしていないが配信用PCのDiscordのマイク周りの設定は

  • 入力デバイス:LINE IN
  • 出力デバイス:LINE OUT
である。

機器の構成が終わったら、今度は目に見えない様々な設定である。
最も重要なのが、そう…音声周りの内部配線である!!!!!

内部配線はすべてゲーム用PCで行う。その点は注意して読んでいただきたい。

使うのはみんなだいすきVB-AudioさんのVoiceMeeter Bananaである。
さらに、同VB-AudioさんのVB-CABLE Virtual Audio Cableも入れている。

現在配信用PCは電源OFFなので表示されていないが、A3がGC553に接続されたHDMIとなる。すべての配信に必要な音はゲーム用PCでBananaによってミックスされる構造とした。

HEADWARE INPUTは左から

  • わしがしゃべるマイク
  • Virtual Audio Cable OUTPUT:Virtual Audio Cable INPUTの音が流れてくる:配信に流すゲーム音
  • 配信用PCのDiscordの他のメンバーの音声
となる。HEADWARE OUTPUTは左から
  • A1: ゲーム用PCのサウンドカードEssence STX II 7.1
  • A2: Virtual Audio Cable INPUT:配信向けにゲーム音を調整するために分岐
  • A3: 配信用PCのHDMI
となる。VIRTUAL INPUTSは左から
  • 左: 規定の再生デバイス
  • 右: ゲーム用PCのDiscordの他のメンバーの音声

となる。VIRTUAL OUTPUTはB1しか使っていない。且つB1は規定の入力デバイスに設定されている。何を言っているかさっぱりであろう。私も書いていてさっぱりだった。もっと詳細に説明しようと思う。

まず、規定のデバイス状況だが、以下のようになっている。
こうすることで、BananaにおけるVIRTUAL INPUTSの左側のところにゲーム用PCで再生されたすべての音が集結する。

尚、注意として、Bananaはインストール直後は入力Chがステレオになっている。最近のFPSゲームとかは7.1chとかが普通になっているので、これを入れたせいでステレオしか再生されないファ○クとか言わないようにしよう。
設定方法は、該当のデバイスを右クリックして「スピーカーの設定」をすること。

それでは1つずつ説明する。

何度も言うようにVIRTUAL INPUTSの左側はゲーム用PCの全音である。それをA1、A2に流す。A1はサウンドカード。要するにおかゆぅさんの耳だ。A2はVirtual Audio Cableである。

ここでやりたいことは

  1. 自分で聞くはゲーム音は大きくて良い
  2. 配信はゲーム音大きいと、おかゆぅさんの美声が聞こえなくなるので下げたい
  3. でも自分で聞くのゲーム音も一緒に下げたくない
  4. ゲーム音を2系統に分けて、直接の大きさは自分の耳、配信は別途調整して流せばいいんだ
となる。それがこの画像の左側で解決する。

右側はDiscordの友人側の音声である。A3に最終的に流すと配信に音声がのる。もしシャイな友人がいる場合は一言「今から配信するね。拒否権は無いよ」と、お断りをしておくのが社会人のマナーである。了解を得てからA3をクリックしよう!
右側はそういった日本人的に忖度をするためのところとなる。
 

ここは実際の機器から入力を受け付けてどこに流すかを設定する。
左から説明する。

マイク音量は、名前の通り、おかゆぅさんの美声である。美声はA3(配信用PC)とB1(出力デバイス)の2パターンに流す。A3は言わずもがな配信に流すことを意味する。B1はゲーム用PC側のDiscordの入力デバイスとなる。

配信側ゲーム音量は、ちょっと上で説明したA2の音を受け取るところである。この辺はややこしい感じだが慣れるんだ。ここでは基本的にゲーム音を下げるためだけに存在する。下げたゲーム音を(A3)配信用PCに流せば、おかゆぅさんの美声が聞こえやすくなる。完璧だ。

配信PC側Discordは名前の通り配信用PCにおけるDiscordの友人の音声である。もう説明はしないが、配信側PCの音声をLINE INで受け取るため、それを聞くために存在する。
ここも先程と同様、シャイな友人に許可をとってからA3を押す。


最後になるが、Bananaはこの上に表示されているA1とかのボタンを押すことで、A1はどこで音を再生するのかを指定できる。
A1はおかゆぅさんの耳で再生してもらいためサウンドカードである。
A2はVirtual Audio Cableである。
A3は現在表示されていないが配信用PCに接続されているキャプチャーデバイスに接続されたHDMIを選択する。

下側は実は地味に重要である。
左から2番目。要するにA2の音をどのように再生するかを決められる。最近のゲームは7.1chで再生されることが多い。しかし、配信を聞く側にそういった設備がない場合、5.1ch分は切り捨てられ、やけに小さい音になってしまう。

YoutubeとかでPUBGやAPEXの配信をみて音が異様に小さくなってしまう人がいれば、これに該当する。

自分はそういったところを妥協しないために、ここでMIX down Aに設定することでそれを回避している。要するに7.1chを2chの音声に変換している。こうすることで、2chしか対応していない聞いている側に適切な音量を届けることができる。

しかし、聞いている側が7.1chで聞いている場合、臨場感がなくなる致命的な欠陥がある。
だが、よくよく考えてもらいたい。

果たして聞いている側に臨場感はいるのだろうか

自分はゲームするときは7.1chのヘッドフォンで行うが、配信を見るときは2chの普通のPCスピーカーで聞いている。たぶんみんなもそうだ。間違いない。これは妥協ではないのだ!!

くっそ長くなってしまったので今日はここまで。
続きはOBS設定編です。