OBSで2PC配信と録画を同時に高画質で行った話。

こんにちは。

えむえすです。

今回は2PC配信で高画質配信と録画を同時に行えるようにしたので日記程度に書いておきます。

手順説明目的の記事ではないので細かな用語解説もはさみませんし完全性もないので参考にしようと考えている方はあくまで自己責任でお願いします。

2024年2月25日追記:文章を再校正し、ある程度の解説を追加しました。

経緯

まず、配信をする経緯と当初の目標です。(方法にと錯誤関だけ見たい方は飛ばしてください)

まず、フォートナイトというゲームにはスナイパーがあり、そのスナイパーはスコープを覗けば当然まっすぐ弾が飛ぶわけですが、ノースコープという技?技術?があり、スコープを覗かなくてもある程度真ん中らへんにランダムで弾が飛んでいきます。そのノースコープ、ランダムに飛ぶので近距離ならまだしも長距離であれば敵に命中させるのは非常に困難になります。ですが、難しいからこそ技術点高めで、視聴者は「すげええ!!」となるわけです。というわけでそのノースコープに挑戦したかったのですが、当然ランダムなので当たる回数はごくわずかです。なので誰かと通話をしようと思ったのですが、ボッチなのでそんなに長時間、しかもスナイパーをねらわずに撃ち続けるような人を見守ってくれる人はなかなかいません。というわけでモチベのために配信をしようと思ったわけですがするなら高画質でやろうと思ったわけです。

ここで気づくかもしれませんが配信をしただけでは録画ができませんよね。
Youtubeをやったことがある方ならわかるかもしれませんが、Youtube投稿者は自身のコンテンツであればYoutubeからデータをダウンロードすることは可能です。ですが、Youtubeアーカイブの残り時間には確か上限があるらしいですし高画質とはいえどライブストリーミングなら多少のラグがあるかもしれません。というわけで録画をする必要があるんですが、せっかくなら240hzでしたいわけですよ。海外のプロのキル集、最近だとモンタージュ?とかハイライト?とかいうらしいですが海外プロのキル集は明らかに編集力、画質と色合い、そして滑らかさに違いがあるんです。編集や色合いは後から技術をつけれるものですが、その技術をつけるにしてもとりあえず高画質で滑らかな素材が必要です。というわけで海外に負けないようなキル集(笑)を作りたいということで高画質な配信と高画質で240hzな録画をする必要ができましたというわけです。

ただ、まずそもそもの問題がいくつかあります。

問題

問題点は多くあります。まあそんな簡単にはできないよってことですよね。そりゃそうです。世のYoutubeゲーム配信を見ると3割がPS4(5)の純正配信機能、3割が720p配信、2割が1080pなのに超低ビットレート配信、1割がよくわからないレベルの低画質配信、そして最後の1割が高画質配信です。プロゲーマーなどは信じられない高画質ですよね。あれは機材が提供された結果死ぬほどいい機材を無料で使えるからです。........私たちとは文字通り段違いです。
まあとにかく、問題点を一つ一つ解決していかなければいけません。

Tips:ビットレートとはPCが配信時に送信するデータ量のことです。bpsという単位であらわされ、びーぴーえすと読み、ビットパーセカンドが正式名称となります。
1080p映像でも送れるデータ量が少なければ720p、もしくは480p並みの映像(モザイクがかかったような映像)になってしまいます。

問題1「pcのスペック不足」

まず、問題点一つ目がPCのスペック不足です。
1台のPCでゲームをしながら配信をするとなると
・ゲーム(フォートナイト)→(ゲーム処理)
・配信ソフト(OBS)→(配信、録画)
・コメント確認用のWebブラウザ(ms edge)→(ページ表示)
を最低でも開く必要があり私の場合はPCの性能が足りませんでした。
(PCの性能は後述します)

問題1解決策

解決策として2PC配信というものを検討しました。
2台のpcを用いて配信を行う方式でゲームプレイ用PCから配信用PCに画面の情報を転送し、配信用PCから配信、録画をするという方法です。
我が部屋にはPCが2台以上あるので十分可能です。

スペックを記載します。

PC1(ゲーム用)
Core i5 9400F(6C 6T TB4.1Ghz)
メモリDDR4 32GB
RTX2070super

PC2(配信用)
Xeon E5 2687W(8C16T TB3.8Ghz)
メモリDDR3 64GB ECC
QuadroK4000
録画保存先はごく普通のHDD2TBです。

というわけで問題1は解決です。

問題2「2PC配信の映像転送方法」

次の問題は240hzの映像を転送できる方法が現実的な範囲にないことです。

一部のキャプチャーボードは1080p240hzのキャプチャ、240hzのパススルーをサポートしていますがお値段は数万円になるのでとてもじゃないですが、買えたものじゃないです。
実はカメラ用に1080pのパススルーに対応しないUSBのHDMIキャプチャー自体はあるんです。ですが、問題点がいくつかあります。
まず、60pまでしか対応しないことです。
次に、動作が不安定なことです。使ってみた感じ熱も持ちますし3分に一回は映像がフリーズします。(OBSから無効化して再度有効化すると復旧しますが)
最後に、パススルーが出来ないので画面を確認できないことです。
これはメインディスプレイをHDMIキャプチャーに複製することで解決しましたが、動作が不安定すぎてダメでした。(このほかにも、サブPCの電源をつけていないとモニターが認識されない、オーディオ出力が毎回変わる、オーディオを別入力するため音と映像に時間差が生まれるなど大量の問題がありました。)

問題2解決策

結果としてNDIを使うことになりました。簡単に言うとネットワークを介して映像を転送する技術です。ただし、OBSで利用できるNDIで、240hz映像を転送する方法がわからなかったのでこの段階で240hzはあきらめ、録画配信共に60hzで行うことを決めます。

やってみる

とりあえず実際に構築して録画と配信を試しに行い、気づいたことがいくつかあります。

まず、OBSの画面変わりすぎじゃない?!?!Youtubeとアカウント連携できるってマジ?!てかグールグルのログイン画面まで変わってない?!です。ここは僕が老人なだけなので特に大切ではないですね。OBSで最後にまともな配信をしたのが約5年前だったのでそりゃ5年もあれば進化しますよねって話ですよ。

次に、全体的な性能不足です。録画も、配信も、カクカクです。

この時の設定は設定モードが基本かつ高品質設定。

実はOBSの設定項目で名前と意味を理解しているのはビットレート、フレームレート、解像度、クオリティーくらいだったので今回ちゃんと調べることにしました。

どうやら設定は詳細モードのほうが良いようです。

録画配信双方を1080pで行いたかった

1080pで配信を行う、それがこの記事の趣旨であり、目的です。
ですが、どうもスペック的にどちらかを720pに妥協する、もしくは1080pだが、CPUプリセットを下げなければいけないということが次第にわかってきました。
CPUプリセットがどのようなものなのかというのはあまり理解できていませんが良いものを使えば使うほどずっと1080pできれいに、下げれば動的なシーンは画質が低下(ブロックノイズが増える印象)しますが負荷が下がり、動きのないシーンでは1080pが出るといった感じです。

ただ、フォートナイトは常に動きがありますからブロックノイズが増え、結局画質が悪くなってしまっては1080pとは名ばかりなものです。

では、配信を1080pで録画を720pにすればよいのかというと、元の目的に戻るとフォートナイトのクリップをとることなのでそれではクリップの質が低下し本末転倒です。

というわけで配信を720pで妥協することにしました。

リソース枯渇とOBSのエンコーダーの限界

....................が!まだ、性能が足りないんです。
というのもQuadroK4000はさほど良い性能ではありません。CPUはちょうど1080pの録画ができる程度、で配信をする余剰はありません。
とはいえ、QuadroK4000もさすがに録画はできる性能のはずです。
なぜでしょうか。実は2PC配信の映像転送に使用したNDIが常時30%~50%のGPUを使っており、その上に録画処理が乗っかる形になるためスペック不足となっていたようです。
その解決策として私が一番に考えたのがGPU+CPUの録画でした。
ただし、エンコーダ設定としてx264があります。これはCPUを使用するものです。
次に、NVENC,H.264があります。これはGPUを使用するものです。
では、両方を使うものはあるのかというと私は見つけられませんでした。

別エンコーダとグラボの混合

CPUとGPUを使用できないならむりじゃああああん!!!っていう感じなんですが、私は幸い使っていないRX460があったのでそれを刺してみました。
まず、そもそも論としてRX460つまりRadeonのドライバーとQuadroK4000つまりNVIDIAのドライバーの混合は良くないことが起こるという話が自作PC界隈では有名です。
実はこれが最初からグラボ2本じゃなかった一番の原因です。
本当は私は2本を刺した状態で行いたかったのですが刺してもタスクマネージャーに表示されないのはいいとして、デバイスマネージャーにすら表示されず、挙句の果てにBIOSも観ましたがZ420は一般的なPCとは全く違うBIOSなので見方がさっぱりわからず、ようやくは入れたBIOSにも認識されておらず、ダメだこれ状態で結局抜いていたものなんです。
ですが!!なぜかAMD公式サイトから「RX460用のAMDソフトウェアアドレナリンエディション?」なるものをインストールするとなぜかインストールウィザード上で認識。
インストール後再起動すると普通に認識されました。

ということはですよ。
配信→AMD HW H.264(RX460を使用)
録画→x264 (CPUを使用)
NDI→QuadroK4000を使用
という感じで1080p録画、720p配信を無事にラグなく行えました。

グラボ混合の相性

グラボが混合しているので不具合らしいものもいくつかあります。
例えば、タスクマネージャーを開いてもRX460の使用率が全体の合計値しか表示されず、詳細な表示はすべて0%となる問題や、NVIDIA側のドライバーアップデートに失敗する点などいくつも問題があります。
動くとはいえ、混合は良くないようです。
(バイトしてサブpc用のグラボ買い替えようかなと思います。)

結論

結局高画質でも高フレームレートでもない普通の配信と録画になりましたが、1手段としてご参考にしてください(←なるのか...?)

というわけでありがとうございました。

 

追記:実はメイン機のRTX2070sのリソースはcpuのi5がボトルネックなので有り余っているんですが、これまでの経験上1機での録画&配信は不可能だと思っていました。

しかし!!なんとやってみたら702p配信どころか1080p配信&1080p録画が普通にできてしまいました.........。この記事の内容はすべて不要だったということです.....泣

とはいえ、今後は2pcで行こうと思います。理由は......使わないと負けた気になるからです((((