2021年7月17日土曜日

キャプボ不要でPS4のシェアプレイをOBSに取り込む

PS4でゲーム実況する場合、ゲームタイトルによってはシェアプレイを使うようお願いされていることがあります。

その場合、PS4専用カメラやUSBマイク等を繋いで、PS4単体での生配信もしくは録画データを使うことになります。が、VTuberが生配信を行うのは制約がいくつか生じてしまします。

PS4専用カメラ以外で映像を画面に取り込む方法がない。専用カメラ以外のUSBカメラやUVCクラスで動作するキャプボも動作しない。

・一度twitchやyoutubeに映像を送ったあとにPCのOBSで取り込む方法もあるが、遅延が10秒単位になり、ゲーム映像とVTuberアバター画像と声の同期が取れない

これらの問題を解決する方法はないかと探したところ、redditにてtwitchの映像を横取りしてPCのOBSに取り込む方法を見つけました。
Stream from your PS4(Xbox) to OBS directly, no capture card and without the dodgey remote play. : obs - reddit

図で表すとこうなります。

通常のシェアプレイ機能で生放送を行う場合


PS4からtwitch用の映像をPCのOBSに取り込んでyoutubeに配信する場合

配信用PCにtwitchのホスト名に対して配信用PCのIPアドレスを返すDNSサーバーと、映像を受信してOBSに送るサーバを立てます。
OBSは受け取った映像とVTuberのアバター映像、音声をミキシングしてyoutube配信サーバーへ送ります。
このとき、PS4はtwitchへシェアプレイの映像を送っているつもりですが、配信用PCで横取りしているためtwitchに映像が流れることはありません。

この方法であれば
・PS4の映像を取り込むHDMIキャプチャ機器が不要になる。
・HDMIキャプボ経由で映像を取り込んだときと違い、シェアプレイによる禁止区間の映像配信停止が適用されるようになるため、メーカーがシェアを許可している範囲だけに絞れる。
といったメリットがあります。
これは個人的な考えですが、シェアプレイ映像を使うときはOBSの配信先はyoutubeがtwitchに限定したほうが良いと思います。本来のシェアプレイはそれ以外の配信サービスには使えないためです。

セットアップ方法と動作させている様子はyoutubeの映像を参照してください。
ただし、ある程度パソコンの操作に慣れている(具体的には環境変数が設定できる)ことが必要です。


以下にセットアップで使うリンク等を列挙します。




・twitch推奨サーバーリスト
https://stream.twitch.tv/ingests/

・twitch inspector
https://inspector.twitch.tv/

・hostsファイルのパス
C:\Windows\System32\drivers\etc\hosts

 

-2021.07.18追記-

PS4もしくはPCからtwitchへ通常の配信を行う場合は、①CCProxyを停止させ、②hostsファイルに追記したアドレスの先頭を#でコメントアウトし、③PS4のDNS設定を自動に戻しましょう。

配信ができなくなります。配信する予定がなければそのままでも問題ありません。

2021年3月21日日曜日

Vtuber向け!VDO Ninja(OBS Ninja)を使ってコラボ用映像送信

VDO Ninja(旧名OBS Ninja)を使ったコラボ向け映像送信のやり方です。
Discordと違い自動的な画質の調整が入らず、高画質に映像を送ることができます。 

ここではOBS 26.02とLuppet2.0.3、Google Chromeバージョン89.0.4389.90を使ったやり方を載せていますが、Luppetを他のアプリにすることも可能です。

 送信側の準備

1.送信用映像をOBSで準備します。OBSの仮想カメラ機能を開始します。
(仮想カメラ機能は最近のアップデートで実装された機能なので、仮想カメラがない方はOBSを更新しましょう)

 

2.GoogleChromeでhttps://obs.ninja/にアクセスします。
”Add your Camera to OBS”をクリック。

3.カメラとマイクの許可を求めるウィンドウが出るので許可をクリックします。

-2021.07.17追記- Macユーザーの方はOSの設定も合わせて変更してください。
"『画面収録』の設定方法”をご覧頂き、お使いのブラウザを許可するよう設定してください。https://moji-seikatsu.net/2021/04/03/macdiscord/

4.Video Sourceに「OBS Virtual Camera」を選択。右の歯車アイコンをクリックすると品質が選べるようになるので、プレビュー映像が表示されてからBalancedを選びましょう。(表示される前では適切な解像度が設定されません。。。)解像度は1280x720になります。
もっと高画質が良い場合はMax Resolutionで1920x1080、解像度小さくても良い場合はSmooth and Coolで640x480になります。
Audio Sourceは一緒に音声を送る場合は自分のマイクを選択します。Discordを使う場合はNo Audioを選択します。
最後にSTARTをクリックして送信を開始します。

5.送信中の画面になりました。ページ上部の共有用のアドレスを相手に送りましょう。
共有用のアドレスは開始するたびにランダムで生成されます。

受信側の準備

1.OBSのブラウザソースを追加します。
URLは共有用のアドレスと、末尾に&bitrate=3000を付けます。ビットレートの指定なので動きが少ない場合は1000、動きが多くブロックノイズが出る場合は5000と調整しましょう。下の幅と高さは1280,720を入力します。

2.OBSに受信した映像が表示されます。通常の映像と同じようにクロマキーで抜いて、配信用の画面を作成しましょう。


手順は以上です。
不明な点があればコメントなりtwitterで聞いていただければ対応できるかもしれません。

OBS NinjaとSpeedifyを使ったバーチャル売り子構成

AVATAR2.0関連即売会『19の煌き2』にて千歳ゆうりさんと想間ミレイさんのバーチャル売り子をお手伝いさせて頂きました。
 


『61の輝き』から数えて3回目になりますが、今回で安定かつ満足のいく品質で行うことができましたので、その構成を公開します。

全体構成

ネットワークをSpeedifyを使って3回線まとめて速度を稼ぎつつ、冗長性を持たせました。

Speedifyでまとめた回線を別PCから利用できるようConnectify Hotspotを使ってWiFiアクセスポイントを用意、別マシンからWiFiで接続させました。

千歳ゆうりさんと想間ミレイさんの映像はOBS Ninjaを用いて表示、会場のwebカメラ映像と音声の双方向通話はDiscordを使いました。

Speedifyについて

https://speedify.com/

 

複数の回線をクラウドサーバを経由してVPNとして通信させることで、1つの回線としてまとめて使えるようにできるソフトです。スピードを稼ぎつつ、まとめている回線のいくつかがトラブルで途切れても他の回線で安定して通信を継続することができます。

Windows/Mac/LinuxだけでなくiOS/Androidでも使えます。iOS/Androidで使ったときには携帯回線とWiFiの2回線をまとめて使えるようになります。ただし、例えばですが3Mbps+3Mbps=6Mbpsとは単純にはなりません。4か5Mbps程度と考えましょう。

無償プランで2GB/月の容量制限があります。有償プランで容量は無制限となり、1ヶ月9.99ドル、1年で71.88ドル(1ヶ月5.99ドル)、2年で95.76ドル(1ヶ月3.99ドル)、一番お得な3年で107.64ドル(1ヶ月2.99ドル)の4プランが用意されています。1アカウントで5デバイスまで同時に使用できます。

ただし、Discordの映像共有の受信との相性は良くありません。詳細は不明ですが、DiscordがNitroの1080P指定でも映像を荒くしてしまします。送信側に使った場合は問題ありません。そのため、今回の構成ではOBS Ninjaを使って売り子さんの映像を受信する構成にしています。

 OBS Ninjaについて 

映像と音声を低遅延でやり取りできるwebサービスです。最大の魅力は映像を受信する側でコーデックとビットレートを指定できることです。Discordでは細かく指定できず、場合によっては画質が悪く場合があります。また、Speedifyとの併用も想定されております。

Vtuberさん同士のコラボする際の映像のやり取りにオススメです。

OBS Ninjaの末尾に"&codec=h264&bitrate=3000"とオプションをつけることでコーデックをH264,ビットレートを3000kbpsにできます。

その他のオプションはgithubのwikiにまとめられています。 

DiscordとOBS Ninjaを使ったときの遅延を比較した動画を用意しました。若干Discordより遅延が少ないことがわかると思います。

 

 欠点として、受信側が増えるとその人数分回線の帯域を使用することです。例えば3000kbpsだった場合は、2人なら6000k、3人なら9000kbps、といった具合です。

そのため受信側が多い場合には送信側には回線の余裕があることが求められます。

 

最後に

この記事を読んでやってみたいが分からないことがある、という場合には相談に応じます。twitterのDMよりご連絡ください。