UbuntuのOBSとNDI環境をアップデート

概要:公式サイトの手順通りにやって上手くいかなかったが、手動でlibフォルダの中に必要と思われるファイルをコピーしたら動作した。素人の作業なので、細かい状況は自分も把握できてません。

Ubuntuを24.04のLTSにアップデート。ついでにOBSもアップデート。すると、NDIプラグインが動かなくなったので、更新を試みましたがなかなか上手くいきませんでした。

公式セットアップ手順。プロジェクトの名前がDistroAVというものに変わっていました。

https://github.com/DistroAV/DistroAV/wiki/1.-Installation

まずはNDI Runtimeが必要ということで、https://github.com/DistroAV/DistroAV/blob/master/CI/libndi-get.shからシェルスクリプトをダウンロード。適当にhomeフォルダに移動して、bashでこのシェルを実行。

bash libndi-get.sh

いろいろ走りますが、おそらくここで本来必要なパスへのコピーに失敗している。気付くのに時間がかかった。次にNDIプラグインのパッケージをインストール。debファイルなのですが、GUIのダブルクリックで実行できず🤔この記事時点の最新版debファイルをこちらからダウンロード

https://github.com/DistroAV/DistroAV/releases/tag/4.14.1

homeフォルダあたりにコピーして、sudoで実行します。手順サイトのファイル名のところはダウンロードしてきたファイル名にします。

sudo dpkg -i obs-ndi-4.14.1-x86_64-linux-gnu.deb

ここまで完了して、OBSを起動したのですが、起動時にNDI Runtimeが見つからないとメッセージ。あれこれ試したのですが、解決せず、ふと発見した以下のサイトの情報が助けになりました。

公式手順にもある、https://downloads.ndi.tv/SDK/NDI_SDK_Linux/Install_NDI_SDK_v6_Linux.tar.gzをダウンロード。解凍。中にあるshを実行する。

bash Install_NDI_SDK_v6_Linux.sh

すると、bashを実行したフォルダに「NDI SDK for Linux」ができる。(本当か?このタイミングで生成されたか自信がない)その中の/lib/x86_64-linux-gnu/に移動すると、ファイルが三つ置いてあるので、/usr/local/lib/にコピーする。これは前述のリンク先で書いてあった手順。/lib/x86_64-linux-gnu/に移動してから以下のコマンドでコピーされる。

sudo cp libndi.so* /usr/local/lib/

この後OBSを起動したら、起動時のエラーメッセージが無くなり、ツールのドロップダウンメニューにNDI™Output Settingsが表示されるようになった。

実際にゲーム配信は試していないが、ゲーム配信PC側のOBSで取り込んだブラウザとかデスクトップ画像が配信Ubuntu側のOBSに流せることは確認できた。この記事を書いている画面が、ちゃんとリアルタイムで更新されている。😁

以上です。

以下、バージョン情報

Ubuntu 24.04 TLS

OBS studio 30.2.3(64bit)

OBSを 28 にアップデートしたらNDIプラグイン動かない(っぽい)→バージョンアップで解決

【追記】NDIプラグインを新しいものにすると動作します。youtubeで配信可能なのを確認しました。OBS28対応バージョンはこちらから https://github.com/Palakis/obs-ndi/releases

タイトル通りです。下記リンク先の互換性の評価ページではin progressとなっているので、放置されているわけではないと思いますが、日々使っている人はOBSのバージョン戻したりしたほうが良いんじゃないでしょうかー。

https://obsproject.com/kb/obs-studio-28-plugin-compatibility

githubのNDI開発リポジトリも…ちょっと停滞気味なので心配ではありますが、きっと必ずなんとかしてくれる。ゲーム配信で稼いでいるひとはこういう開発者にお金おとしましょう(偉そうに)

https://github.com/Palakis/obs-ndi

自分はOBS 28.0.1にアップデートしたものの、まだ何もチェックしてない。websocketが使えるようになったみたいだけど…どうなるんでしょう。ヘッダーが減ったぶん、配信中の通信データが安定とかするのかしら?

さいきんPCゲームも殆どしてない。ローカル録画のUPぐらいは続けたいけど。リンク先はそんな動画置き場にしかなってない自分のyoutubeチャンネルです。今なら再生数0を1にする貴重な体験ができます。以上。

https://www.youtube.com/channel/UCJ7laepy6iQAYMdEGOZ8GBw

ubuntuとOBSのNDIプラグインでゲーム配信PC

主に自分用のメモとして、過去に何度か作りかけだった環境の更新。根本的な部分で解決はしていない問題が山積みです。過去の環境構築のエントリは以下リンク先。

linuxとOBSのNDIプラグインで安価に配信PC作ったが

ubuntuを20.04.1 LTSにアップグレード。linux界隈ではゼロから再構築が常道なのかもしれませんが、学習も兼ねてCUIでアップグレード。無事に20.04になったところで、各ツールの動作確認と配信テストをしてみるも、先のリンクと同じ状態でした。配信PC→ゲーミングPCにはNDIプラグインで出力できますが、本来やりたいゲーミングPC→配信PCへの出力が動作しません。そこで、前述のリンク先の手順を試しました。

Windowsのコントロール パネル→ネットワークとインターネット→ネットワークと共有センター→共有の詳細設定の変更にすすむ。「すべてのネットワーク」の閉じているドロップダウンメニューを開いて、「メディアストリーミングオプションの選択」を開いて、「許可」にする。これで、配信側のOBSを一旦手動で閉じて、OBSを起動しなおすとNDI出力に成功しました。ゲーミングPC側のOBSを先に起動してゲーム映像を出力している状態にしてから、配信PC側のOBSを起動すると上手くいくことが多いようです。

安定しないので、テストとしてゲーミングPC単体からの配信をやってみたところ、問題なし。warzoneのチュートリアルだったのですが、負荷の高さが配信パフォーマンスに影響出ているのでしょうか、画質が酷かった。これについてはPCも結構パワーアップしているので、あとで設定見直そう。音声出力とか、配信画面サイズとかもめちゃくちゃでした。

なお、机とラックが広くなったことで、配信PC用にマウスとキーボードを用意しても、あまり邪魔にならない状況になりました。このため、deamonとしてのvncサーバの動作にこだわるのはやめました。これが出来ると、配信PCを起動したあと、配信PCへのログイン前にリモート経由でゲーミングPCからログインできるので、マウスとキーボードが不要というのがメリットになる筈でした。…だったらもうVNC自体意味がないのでは…。

linuxとOBSのNDIプラグインで安価に配信PC作ったが

以前に作った環境ですが、配信用(全然配信なんてしてないな…)PCのマザボとCPUを交換した所、どうも起動できない。DVDブートでインストーラーも動かない状態になり、困り果てていたのだが、電源も交換するとDVDブートしてubuntu18.04 LTSのインストーラーは起動した。この状態でSSDから起動しても、エラーになってしまう。ググったところ、どうも去年ぐらいの時点で、ryzenとubuntuの相性の問題があるらしいと判明。対応できそうなほど高度なlinuxの知識はないので、諦めてubuntu18.04で新しい環境を作ることにしました。以下、本題の環境準備手順。

結論から言うと、どうにか動作はするのですが、配信PC側でOBSのブラックスクリーン問題が発生します。いろいろいじっていると、何故か一回だけ動作したのですが、根本的な解決には至っておりません。引き続き調査中という感じです。解決したら書きますが、自力解決はほぼ諦めムードです。

殆どの人はゲームする環境はありますので、配信PCでの作業となります。インターネットにつながる状態であることを確認したうえで、いろいろインストールしていきませう。勿論、ゲーミングPCとは同じセグメントのLANにいる必要があります。ゲーミングPCと、配信PCのそれぞれから、同じルーターにLANケーブルが刺さっていれば大体はOK。

VNC関係のインストール

リモートでアクセスできるように、VNC関連の環境を整えたほうが楽なんだけど、実はこれがいろいろ上手く動作させるには難しかったりするし、OBSとはまた別の話になってしまうのでここでは触れません。すみません。(配信PCへのログインまでリモートから出来ると楽なのですが、それが出来る+OBS配信できる環境の組み合わせがなかなか…)

配信PCのOBSインストール

FFMPEGインストールして
sudo apt-get install ffmpeg

OBSがVLCのライブラリを使っている?っぽいので、VLCをインストール。配信以外にも便利なので入れておこう。
sudo apt-get install vlc

OBSのリポジトリを追加
sudo add-apt-repository ppa:obsproject/obs-studio

ubuntuのアップデートする。追加したリポジトリが更新されるんじゃないの多分。
sudo apt-get update

OBS本体のインストール。
sudo apt-get install obs-studio

NDIプラグインのインストール。ubuntuなので、debパッケージからインストールできる楽ちん~~。
https://github.com/Palakis/obs-ndi/releases
libndi3_3.0.1-1_amd64.4.debと、 obs-ndi_4.4.0-1_amd64.debをダウンロードして、ダブルクリックインストールできちゃう。

ゲーミングPCのOBSとNDIプラグインも、配信PCとバージョンを合わせ方が無難な気がします。今回の環境ではWindowsとlinuxなので厳密には合いませんが、どっちも最新版にしてみました。

インストールが無事に終われば、ubuntuのアプリケーションの一覧からOBSを起動させる。ゲーミングPCのOBSで、NDIoutputを有効にして何かソースを選ぶと、それが配信PC側OBSでも受信できるようになっている…筈なんですが、ここが上手くいってないのは冒頭に書いた通りです。OBS上での設定は、ゲーミングPCのOBSでツール→NDI output settingsで、Enable NDI outputにチェックを入れる。名前は適当で。配信PC上のOBSで、ソースにNDI Sourceを選択する。以上。

ゲーミングPCのOBSとNDIプラグインも、配信PCとバージョンを合わせ方が無難な気がします。今回の環境ではWindowsとlinuxなので厳密には合いませんが、どっちも最新版にしてみました。この記事を最初に公開した時点で、配信PCのOBS 22.1.0(Ubuntu)ゲームPCのOBS 22.1.2(Windows)

ここまでできれば、あとは実際の配信の準備をするだけです。フレームレートがどうのこうの、配信キーがどうの…。今までOBSで配信をやっていた人は特に困る事もない筈。配信作業の処理は配信PC側のOBSで行うので、場合によっては各種設定とかを手作業でやり直しになるんですが、その辺はしょうがないですね。どうせ端末が変われば配信設定などはどこかしら変えるものでしょう…。これも最初に書きましたが、リモート環境が整うと、リモートで配信PC側の設定変更が出来るのでかなり便利です。お金がある人は分配器やらPC切り替え機やら投入しましょう。

何かエラーか?

本当はこれだけでOKという凄く簡単作業なのですが、自分の環境では、配信PC上のOBSからNDIプラグイン経由で、ゲーミングPCのNDI出力が見れませんでした。配信PCのOBSヘルプメニューからログを表示してみると、あれこれが読み込みに失敗していると言われているようです。ググって対応を探ります。

うちはGTX960が配信PCに挿してあるのですが、これのドライバーが古いのか、おかしいのか?画面はちゃんと表示されていて、挙動に不自然なないのだが、数点のファイルを開けないと言われている。ではついでに、nvidiaのドライバをインストールする。今では簡単なコマンドで自動でゴリゴリとインストール出来るらしい。なお、自分はOBS配信のためだけの環境を作っているので気軽にゴリゴリとか言っていますが、他の用途でも使う必要があるとかならドライバー関係はちょっと慎重になった方がよろしいかと思う。

sudo ubuntu-drivers autoinstall

ドライバの更新が終わったら、PCを再起動する。

これをやっても、ブラックスクリーン改善せず。同じ状態の人はネット上に多々居るようなので、何か解決策がある筈なのですが。以前までの環境ではできていたので大変に悔しい。気長に探っていくか、各ライブラリやソフトウェア作者の頑張りに期待するしかないのか。しかし諦めきれないのでいろいろやってみました。以下の記録がどなたかの役に立つことを願いつつ…。

出力と入力を逆にやったらどうかと試してみたところ、なんと正常動作しました。配信PCであるubuntuの画面をNDI出力して、ゲーミングPCのNDISourceで取り込んだところ、画面取得できました。こうなると、どちらかPCのネットワーク関連の設定、firewall、アンチウイルスソフトなどが怪しいです。しかも自分の環境はゲーミングと配信でOSが違うという状態なので。

ネットで発見でした対応策は以下の通りです。

2番目のリストの内容は、Windowsのコントロール パネル→ネットワークとインターネット→ネットワークと共有センター→共有の詳細設定の変更にすすむ。「すべてのネットワーク」の閉じているドロップダウンメニューを開いて、「メディアストリーミングオプションの選択」を開いて、「有効にする」とかそんなボタンをクリックこの辺うろ覚えです。自分も一度はこれで出力を取得できましたが、今現在はまたブラックスクリーンです。解説動画ではこの辺の設定変更を毎回設定しなおす必要がある、と言っています。

【参照サイト様】
https://qiita.com/pochy9n/items/7b456acb0cb3d37756b3

https://qiita.com/KentaKawamata/items/c5826dbcc113321fbbcd

https://taktak.jp/2018/05/01/2974

※英語です。
https://www.youtube.com/watch?v=V27QZVOVMT4

UltraVNCで接続したら配信端末でOBSが起動できない…

配信用PCのGUI上でOBSを操作して配信というところまではできた、しかもubuntu+NDIプラグインという予算抑える環境で。ドヤ( ・´ー・`)というのが前回まで。

今度は、配信用PCにリモートで接続しての配信を試みます。これが上手くいけば、配信用PCでディスプレイやキーボードを繋ぐ必要がありません。ゲーミングPC上での操作だけで全てが解決します。リモート接続のソリューションはUltraVNCです。これも最初は上手くいかなかったのですが、いろいろ試すうちに何とかPC起動すると自動でvncserver起動するようにまで設定完了。あとは配信するだけなんですが。

結果、うまくいきませんでした。UltraVNCから接続すると、なんと配信PCのOBSが起動しません。焦ってディスプレイ繋ぎなおして配信PCに直接ログインすると、OBSはあっさり起動。配信も普通にできました…。VNC経由で接続すると、グラフィックドライバとかOpenGLか何かがおかしいっぽい…。エラーメッセージでぐぐるとhit自体はするので、何か原因と対策はありそうなのだけども。結構本質的なlinuxの知識が要りそうじゃないですか…。

お財布と相談した結果の理想の環境までもうちょっとなんですけどね…。実は他に配信PCでnginxとrtmpで配信サーバを立ててしまうという方法もあると知ったのですが。これはまた次に手詰まった時に試そう。

OBSとNDIプラグインで2PC配信環境作ったもののゲームPCから配信のほうがマシだった

2018年6月の新しいPC構成で、再チャレンジしております。

まあ配信用PCのスペックが足りないのか。

目的

ゲーム用PCから出力した映像を、配信用PCに送り、そこからTwitchなどで配信。配信時のゲームPCの負荷低減と、あまったPC環境の有効活用。これ自体はゲーム配信ガチ勢には良くある構成で、ゲームPCに配信の負荷をかけないという利点があります。配信殆どしたことない勢ですが、OBSのNDIプラグインを使えば、特別なデバイスが不要になる、linuxでも構成できるということでやってみました。結論から言うと、確かに配信はできます。従来の一般的な構成に加えると、キャプチャボードなどの機器や、配信用PCのOSとして用意するwindowsのコストが浮きます。

用意した構成

ゲーム用:Windows10
配信用:Ubuntu 16.04(64bit)
詳細は当ブログ内のPCスペックのページで。もちろん二台は同じLAN内にいます。どちらのPCにもOBS Studioをインストールして、追加でNDIプラグインをインストール。

OBSバージョン:どちらのPCも 20.0.1

NDIプラグイン
Ubuntu:obs-ndi 4.1.1(libndi3_3.0.1-1_amd64.1.debと、obs-ndi_4.1.1-1_amd64.deb)
windows:obs-ndi 4.1.1

実際に環境を作るのに両方のPCにそれぞれモニタとマウスキーボードがあったほうが捗る。環境構築の途中、windowsのfirewallでネットワーク許可聞かれるので、プライベートネットワークでの通信を許可します。詳細忘れちゃった…。

作業

OBS本体は情報豊富なので割愛。ubuntuにも普通にインストールできます。

https://github.com/Palakis/obs-ndi/releases

上記からOBSのNDIプラグインをダウンロードしてインストール。linux版もここから。debパッケージなのでdebian系といわれるubuntuは楽です。それ以外のディストロでも使えるものがあるかも…。NDIプラグインのインストール後にPCの再起動が必要です。ubuntuのほうも自分の環境では再起動したらうまく動いたのでやっておく。

配信用の設定をざっくりと書きます。

出力

配信
レート制御:CBR
ビットレート:1500-2000で何度か変えながら
プリセット:fastからveryfastで変えながら
プロファイル:main

音声:ビットレート 96

映像

基本解像度:1280×720
出力解像度:1280×720
縮小フィルタ:バイキュービック
FPS共通値:30FPS

配信

先にゲームPCでOBSを動作させておきます。ツール→NDI Output settingsで窓開く。名前は配信用PCから見える名前になるので、どのPCか判別できるような名前に。仮にgamingPCとしておきます。その上のEnable NDI Outputにチェックを入れると準備完了。すでに配信環境が出来上がっていて、配信やってます~なんて人はこれだけです。

配信PCでも同じように、OBSを起動する。ツール類のインストールが問題なく済んでいれば、ソースのところにNDI Sourceというのが増えている。選択するとSource nameで先に起動したゲームPCからの出力をソースとして選択できる。選択後少しすると、ゲームPCから出力された画面が見える。これを配信用PCでエンコードして配信するというわけです。これも過去に2PC配信したことある人だったら困るところはないと思います。

ゲームPCからの映像が来ないぞーという人はwindowsのfirewallかアンチウイルスソフトとかでゲームPCと配信PC間の通信が止められているかもしれません。また、自分の環境ではゲームPCのOBSを先に動作させて、Enable NDI Outputにチェックを入れておかないと配信PCのSourceに取り込めませんでした。

こうしてあっさりとtwitchで配信できました。しかし自分の環境では配信PCのスペックが足りないのかもしれない。720Pで映像bitrateが1800でもなかなか厳しいものがありました。これはネット上の情報でこのぐらいの設定で配信するもんだという情報をもとに設定したのですが、動きが激しくなるとすぐにカクカクです。配信ノウハウに乏しいので設定に問題があるのかもしれませんし、あるいはOSがubuntuというところに原因があるのかもしれません。またはNDIプラグインの原因なのかもしれません。まだまだ発展途上という感もあります。そう多くはない環境で地雷を踏んでいる感もありますが、仕事でやってはないのでこの状況を楽しんでいるという塩梅です。

twitchの「過去の配信」から自分のテスト配信を見ると、もっと画質周りの落としても満足できるクオリティになっている気がするが…。どのぐらいでみんな配信するもんなんでしょうね?そして、ゲームPCでゲームしながらTwitch配信しても正直PCの負荷的には余裕だったのが驚いた。bf1(ゲーム内画質低め)+配信でCPU10%ほどしか使わねえの…これがryzenの力か。やりよるわ。

その辺の配信のビデオ置いておきますね。ご参考になれば。

(現在見れません)