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)

BattlebitRemasteredアーリーアクセスになった

BattlebitRemasteredのアーリーアクセス版が登場しました。一年近い隔週テストプレイを経てようやくこぎ着けました。中の人たちは頑張ったと思います。自分は月に1,2回のテストプレイ参加でしたが、たまに何か要素が増えているのに気付くと妙に嬉しかったもんです。まだアーリーアクセスの看板なので今後もさらなる飛躍を期待したい…ですが、何ゲームか参加して、もう完成してるんじゃないのかというぐらい問題なく遊べます。

ゲームの仕様が見た目に反して結構ハードコア寄りの調整だなと感じます。ただ、battlefieldを主に遊んでいたからそう思うのかもしれません。具体的には、ミニマップがない、弾薬が数値で表示されない、自動で体力回復しない、キルカメラがない、結構頑張ってレベル上げないとアンロックされない武器も多い…など。

本作は動作が軽い事もウリの一つのようです。BattlebitRemasteredのプレイヤーたちの中には、battelfield2042とかwarzoneとかPCスペックが求められるゲームをプレイしている人も多い筈。そうなると、軽いと言ってもあまり実感ないでしょう。…自分もないです。わざわざ性能を下げるようなことをしてまで比べてもいられないので、録画した動画ファイルのサイズで比べてみました。このサイズが小さければ、処理がそれだけ簡素で負荷が軽いのではないか?と思います。ただし、録画の設定を変えた覚えがあって、比較としてはあまり意味ないですね…。CQレベルを18から20にしたような…してないような…。

BattlebitRemasteredは27分録画した結果、5Gちょっとのサイズでした。

Battlefield1は28分で21Gほど。

こんなに差が出るものかな?などと思いましたが、画面の録画なんだからまずはビジュアル表現の差が顕著に出たとしても、当たり前だろという話か。

warframeは1分で3G近い。ヒエッ。もっとモリモリ敵をしばき倒す場面が続いたらどうなるんだろう。

今後もしばらくはBattlebitRemasteredで遊びたいと思います。ゲーム内で出会った方はよろしくお願いします!

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

battelfiled4を数年ぶりにやってみました

2042の発表以降、人気が再燃しているという噂に、再戦してみようかなと。インストールからやり直し。

起動してもほぼ毎回音が出ないという状態ですが、何故かたまに音が出るのでその時に遊んでいます。battlelogは完全にバグっており、kill取れないガジェットに星が100個付いていたりする状況ですが、ゲームが始まってしまえばとてもまともに動作しています。

自分にはBF1とBF4しかプレイ経験がないのですが、BF1とくらべて拠点の旗の上げ下げが早くて驚く。バグってんのか!サプレッサー付けた銃の弾速の遅さ!バグってんのか!!ターゲットディテクターってなんだよ!チートか!!対戦車工兵がDMRでペチペチしてくる!チートか!!ランチャーが6発もある!!チートか!!サーマルスコープってなんだよずるい!!チートか!!分隊員の視点確認しながら沸ける!!チートか!!戦車の砲塔が真後ろ振り向いて撃ってくる!バグっt…これは現代が舞台ならあたりまえか。

二つだけを比較したらこんな極端なツッコミにもなりますね。これでBF1戻ったら、塀を乗り越えてくる!!チートか!!スポットフレアってなんだよ!!チートか!!撃っても撃ってもマップに映ってない!!チートか!!って言えるもんな。

各種設定もバグっているのか自分がそうしたのか覚えていないぐらいに謎の設定値になっているものがありました。FOVとかレンダリングスケールとか…でも先日プレイ始めたときは違和感覚えなかったから、数年前の自分はこの設定でBF4やってたのか?当時とはグラボを変えたことで自動で設定値変わったりするのかしら。

音が出ない頻度が高すぎて、そんな遊ぶ気にはなれませんが、せっかくなので録画おいておきます。

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

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

VNCサーバをx11VNCに変更でどうにかなった

Ubuntu側のVNCサーバを、x11VNCというものに変更しました。これにしたところ、Windowsからのリモートセッション上で、OBSの起動が可能になりました!!肝心の配信を確認しようと思ったところで、サービスとしての起動が上手くいかずつまずいてしまいました。サービスとして登録できれば、Ubuntu側へのログインが、Windowsからのリモートセッションで処理できるので、以前にも書きましたけどUbuntu端末にマウスキーボードディスプレイが不要になります。そうじゃなきゃいろいろ大変だと思うんですけど、実際配信勢はどうしているの?PC切り替え機とか使うのかな。

いろいろ調べてもだめで、どうしたもんかと思ったんですけど、参考にしたサイトに記載されていた入力が必要なコマンドが、ブログのデザイン上右のほうが見切れていて、入力の不足に気付かなかったとか酷いオチでした。これで解決なら良いのですが、今度は想定通りに動くときと動かない時が出てきてしまいまって…。でもま、一応はうまくいっているので環境はできたという事にしましょう。

PC構成はこんな