Ubuntu24.04でwindowsからリモートログインが簡単に可能になった

過去に何回かUbuntu上にOBS環境を作っては「動いた」とか「実際にゲームPCの映像を配信出来た」とか、ささやかな報告をしておりました。先日の24.04へのグレードアップの際もいろいろ試みて、実際にゲーム配信PC環境になり得ることを確認しましたが、一つ課題が残っていました。配信PC側をどう操作するのか?これをサクッと解決できればなあと靄っていました。

Ubuntu24.04から、リモートデスクトップの機能が使えるようになりました。Ubuntu側の許可回りの設定と、windows側のリモートデスクトップ接続で解決です。Ubuntuを起動したときのOSへのログインを、ゲームしているwindowsPCから行えるようになりました。面倒なことを考える必要がありません。設定云々はこちらのサイト。

https://gihyo.jp/admin/serial/01/ubuntu-recipe/0819

ゲーミングPC、配信PC両方が電源オフの状態から、スムーズに配信開始までいけます。Ubuntuの端末にはマウスもキーボードもディスプレイも不要になりました。Windowsがhomeエディションでも大丈夫です。(※proはリモートデスクトップで接続される側に必要)

今までもUbuntuのGUIにリモートログインする方法はいくつもありましたが、xwindowがどうのこうの、vncだのgnomeだのあああああああ面倒ばかりでした。結構繋がらないトラブル多いし。今回ようやく簡単に気軽にやりたいことが出来る状態になった。2017年から試してはすぐ諦めてって感じだったな~。Ubuntuグッジョブ、Ubuntu以外なら前から簡単でした、というオチだけはありませんように…

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で録画した画面の下の方が見切れる

新しいセットアップでゲームを録画したところ、ぱっと見では違和感を覚えないものの、良く見ると一様に画面下部が帯状に録画されていない。いろいろ調べた結果、ゲーム内の画面サイズ設定とディスプレイの実際の画面解像度が合っていないのが原因だった。合わせたら直った。

ゲーム設定:2560 x 1600

ディスプレイ解像度: 2560 x 1440

OBSではフルスクリーンのアプリケーションを録画という設定。ゲーム内設定が実際のディスプレイサイズより大きい表示設定だったので、縦にちょっと潰すような感じで1440PXの範囲内に表示していたんだろうか?で、その縦につぶれた状態がそのままOBSに録画されるのかと思いきや、OBSはきっちり2560 x 1440で録画していた…のか?標準出力を撮るというイメージかな?

比較画像ぐらい用意するかと思ったけどめんど。解決策ちゃんと書いたんで許して。

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

Steamのゲームがインストールされているドライブを交換するとどうなるか。

Windows上でドライブレターを割り当てて、物理的に独立したSSDにゲームをインストールしているとします。たとえばSドライブ。Sドライブを1Tから2Tに変えて、同じドライブレターを割り当てたとする。steamからすれば、Sドライブにゲームのデータがなくなりました。次にsteamを起動するとどうなるでしょうか。

特にエラーにはなりませんでした。Sドライブにインストールしていたゲームは、インストール前の状態に戻ります。ライブラリの左ペインの見た目で言えば、文字色が白からグレーに変わります。あとは再インストールすれば元通り。

Sドライブをコピーすればゲームの再インストール必要ないのではないか、と言われればその通りです。自分の場合はこれを機に整頓したかったので強引というかずぼらな処置になりました。

Steam上でゲームをインストールするフォルダのデフォルトを、交換したSドライブにしていた場合、この設定が消えるので再設定が必要です。Steamクライアント左上のめゆーから、設定→ダウンロード→コンテンツライブラリでインストールするフォルダを指定しなおしましょう~。

【追記あり】Battlefield2042 プレイ中にクライアントが落ちる

【追記】以下の対応でも、落ちることがあるのでクロスプレイをオフにしたら、マッチング待ち画面から先へ進みませんでした。本当にもう人がいないのか?モードによるかな?今までは割と言葉を慎んできましたが、はっきりととんでもないクソだと確信しました。遊んでいるうちは結構楽しめるのですが、こりゃあもうダメか。

以下、本題。

プレイ中に突然一時停止して、そのままBattlefield2042が落ちてしまうことがあります。なんのエラーメッセージも出さないので、調べようにも手段に乏しくて困りました。ただ、広く再現性があるようです。

https://www.reddit.com/r/Battlefield/comments/qtlvqg/bf2042_crashes_constantly_without_any_error_pc/

リンク先の情報をかいつまむと、各種ドライバをアップデートしたりゲームファイルの整合性チェックなど、お決まりの手段を試しても改善しない。皆が持ち寄った知恵のうち、簡単に試せそうなのは以下のようなもの。

  • クロスプレイを無効にする
  • NVIDIA Reflex Low Latencyを無効にする
  • Originの設定で、in-game ovearayを無効にする

自分は「NVIDIA Reflex Low Latencyを無効にする」と、「Originの設定で、in-game ovearayを無効にする」で改善したかもしれません。breakthroughで3ゲームプレイしても落ちなかったというだけで、根拠としてはあやふやです。前者はFPS値を上げるために有効化+boostを推奨するという情報があったので、有効にしている人が多いかも?

内容の評判良くないし、実際良くないし、動作も安定しないとかあまりにもハードな本作…。どうなることか。

Battlefield2042 key割り当て設定で、マウスのボタンが設定できなかったり、リセットが出来ない時の対策

早速遊ぼうと思ったのですが、キーのカスタマイズで動作がおかしいところがあり、デビューマッチは5分ほどで途中抜けする始末でした。リロードもできないんですもの。マウスのホイールスクロールや横にくっついているボタンが割り当てできず、割り当てられたものをリセットできません。

自分の環境:Steamで購入、BF2042で使う言語は英語に設定、キーボードは日本語と英語を切り替えできる状態

対策

steamの画面で、ゲームライブラリ→BF2042→歯車のアイコン→プロパティ→コントローラ→Steam入力を無効にする。これで今までのBFと同じように割り当てができました。細かいところまではチェックしてませんが、まともにはプレイ出来そうなので出撃してきます。

【解決】audiorouter不要。同じ機能はwindows10に標準装備されてた

AudioRouterがエラーになる件のエントリーを書いておりましたが、解決のヒントを求めてgithubを眺めていたらpullリクエストにこんな一文が。

**Attention!** Windows 10 has a new feature! Go to *Settings → System → Sound* and look for your *device preferences*. So this software isn’t necessary for the latest version of Windows

https://github.com/audiorouterdev/audio-router/pull/120/commits/3027b2bf8415ba16b71dec2531fb1c57573db13e

「最新のWindows10で使える機能があるからこのソフトイラネ」ですって。早速実践してみます。上記にある通り、設定→システム→サウンド→サウンドの詳細オプションに、「アプリの音量とデバイスの設定」があります。すると、アプリごとに入力と出力デバイスを選べます。直接開けるここでCABLE Input(VB-Audio Virtual Cable)を選択すればAudioRouterでの制御と同じようなことが出来ました。必要な事前準備の手順などはAudioRouter使うパターンと同じです。参照リンクを再掲~。

【無料ソフトのみ】OBSで配信に載せたい音だけを載せる【音声事故が起きなくなる】

というわけで、AudioRouterのエラーに悩まされていた方はこれで解決できそうです。さらに、この出力先の設定はPCに保存されるようで、アプリケーションを閉じたり、windowsからサインアウトしても選択状態が保持されていました。アプリを起動するたびにいちいち設定画面を開きなおす必要はなさそうです。上位互換やんけ。

なお、この設定画面を直接開けるショートカットがあります。エクスプローラかあるいはwindowsキー+Rで開く「ファイル名を指定して実行」にコピペしてください。ショートカットを作成することもできます。作っておくとダブルクリックですぐに開けるのでお勧めです。

ms-settings:apps-volume

さて、これでAudioRouterは不要という結論になりました。ただ、githubには「AudioRouterに比べて、Windows10の標準機能では一つのデバイスの入力を他のアプリ(あるいはデバイス)複製できない」というニュアンスのコメントがありました。つまり複雑なことをやるには難しいということだと思いますが、そういう人は専用のミキサーとか買うんじゃないかなあと。ライブイベントの配信とかですかね?

最後に自分の試した環境は以下です。配信は試してませんが録画できてるなら同じプロファイルで配信OKでしょうきっと(→後ほど配信も試して、問題ありませんでした。)

Wiondows10バージョン:20H2 19042.964

OBS:26.0.2

実際にやったこと:Chromeで適当なtwitch配信を聞き流しながら、Battlefield1をプレイしてOBSで録画。録画にゲーム音だけ乗っていることを確認。

【解決】Audio routerで「アクセスが拒否されました」となる件の対策

結論

AudioRouter で出力を調整したいアプリケーションを、管理者権限で起動するあるいはWindowsのアカウントに管理者権限を付ける。解決エントリはこちら。Windows10の標準機能で出来るって話。

解決したので、以下は読むだけ無駄です。

経緯と調べた内容

配信の音声を分ける方法があるらしいので、以下のリンク通り実施してみたところ、掲題のエラーになりました。

https://note.com/mulepg/n/n12b17a403048

AudioRouterを起動しても、一覧にアプリがないし、表示されているものでも、下矢印にもなっていません。 AudioRouterの起動時に毎回管理者アカウントの認証を求められるので、もしやと思ってブラウザを管理者権限で実行した所、リストに現れました。その後、実際に配信テストまで進んでないので未検証としています。【追記】steamやゲームのexeを管理者権限で起動しても症状は解決せず。ダメでした。ゲームするときのWindowsアカウントに管理者権限を付けたら、上記リンクの通りになりました。まだ実際の配信はしてないです。

【さらに追記】ChromeやEdgeをVB-Audio VirtualCableに設定しようとすると、エラーになる。管理者権限でもダメ。Battlefiledやsteamのゲームでは試した限り問題ない。この仕組みを導入したい一番の目的が「ゲームの録画や配信にyoutubeとかのブラウザの音を乗せたくないから」なのにこれでは使えない。AudioRouterがgithub上で五年も動きがないようなので、事実上死んでるプロジェクトと思います。本件は解決の見込みなしということで諦めました。

管理者権限が求められる理由はまずはwindowsにログインしているアカウントに管理者権限がないこと。次には、 AudioRouter の動作に管理者権限が必要なように作られている(らしい)ということ。前者については自分のPCの利用方法がそうなっているというだけで、後者については技術的な必然性があるだろう。

多くをsteam経由で入手しているとは言えど、マイナーな作品も遊ぶ。個人が作ったようなものもある。ゲーム自体はexeをぽんぽん実行させることが多いから、気休めかもしれないけどずっと管理者権限なしのアカウントでwindowsにログインしてゲームしてます。一度、怪しい挙動をするゲームのインストールやめたこともある。「なんでゲームの本体が管理者権限求めてくるんだ?」ってsteamのコミュニティでも指摘されていた。これについては中国産というのも拍車をかけた感じもあります。

で、一旦は現状維持を優先しようということで、諦めることにしました。steamを管理者権限で起動しても解決しなかった。steamから各ゲームの起動オプションを設定して、勝手に管理者権限強制するってのも、できないんじゃないかな…?exeに直接管理者権限で実行するようにというのもありますが、トラブルと面倒そうなのでやりたくないです…【追記】exeに対する設定変更では解決できず。ゲームするときのWindowsアカウントに管理者権限を付けたら、上記リンクの通りになりました。 →その後、使い物にならないと判断しました。本エントリ中ほどの、【さらに追記】をご参照ください。

ただし!!githubでいっぱいforkされてます。作者がソースを公開したこともあり、このforkされたリポジトリのどこかに使えるものがあるかもしれません。自分ではちょっと試しきれないので、実際にはやっていません。

https://github.com/audiorouterdev/audio-router/network/members

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自体意味がないのでは…。