UE5 Pixel Streamingによるブラウザー向けリアルタイム配信の構築手順

配信システムの構成

UE5のPixel Streamingを使うと、Windows上で実行中のUEアプリケーションの映像をWebブラウザーに低遅延で転送できる。以下の3要素で構成される。

  • UE5でビルドしたアプリケーション
  • シグナリングサーバー(Signaling Server)
  • クライアント用ブラウザー

アプリケーションの準備

プラグインの有効化とパッケージ化

まずPixel Streamingプラグインを有効化し、Windows向けにパッケージ化する。エディタの「設定/レベル/プレイ」で起動引数を登録する方法では正しく反映されない場合があるため、パッケージ後のexeショートカットから起動引数を渡すのが確実だ。

起動引数の設定

exeファイルを右クリック、あるいはAltキーを押しながらドラッグして新しいショートカップを作成する。ショートカットのプロパティ「リンク先」に、exeパスの直後に半角スペースを入れて以下の引数を追加する。

C:\Game\MyGame.exe -AuditMixer -forceres -ResX=1920 -ResY=1080 -PixelStreamingIp=localhost -PixelStreamingPort=8888 -RenderOffScreen

解像度をエンジン側のデフォルトに任せる場合は次のように記述する。

C:\Game\MyGame.exe -AuditMixer -forceres -PixelStreamingIp=localhost -PixelStreamingPort=8888
引数内容
-AuditMixerブラウザー側で音声を出力するために必要
-ResX / -ResY配信解像度を指定
-PixelStreamingIpシグナリングサーバーのIPアドレス
-PixelStreamingPortシグナリングサーバーのポート番号
-RenderOffScreenウィンドウなしで起動。終了はタスクマネージャーから行う

シグナリングサーバーの起動

シグナリングサーーはパッケージ化時に自動的に含まれる。通常はパッケージ内の Samples/PixelStreaming/WebServers/SignalingWebServer フォルダ以下に配置される。初回パッケージ時にフォルダが存在しない場合は、Samples 内の get_ps_server.bat を実行してGitHubから最新のサーバー資産を取得する。

必要に応じて設定ファイルを編集する。特にWebサーバーのポートは 80 などの既存サービスと競合しやすいため、空きポートに変更しておく。

初回起動時は同フォルダ内の setup.bat を実行してNode.jsなどの実行環境を構築し、その後 run_local.bat を実行する。サーバーが起動したらブラウザーで http://127.0.0.1:ポート番号 を開き、ゲーム画面が表示されることを確認する。

ブラウザーとの双方向通信

アプリケーションとブラウザーの間でイベントを送受信するには、新規Actorに PixelStreamingInput コンポーネントを追加する。

  • UE → ブラウザー: 対応するBlueprintノードまたはC++関数を呼び出し、文字列またはJSON形式のデータを送信する。
  • ブラウザー → UE: PixelStreamingInput コンポーネントの入力イベントをフックし、受信したペイロードを解析する。

送信データはJSONにまとめておくと、受信側で構造化して扱いやすい。

トラブルシューティング

現象対処
ブラウザーで「開始」を押しても反応しない80番ポートがIISなどに占有されている。設定ファイルで別ポートに変更するか、競合するサービスを停止する。
マウスカーソルが表示されないプロジェクト設定 → エンジン - ユーザーインターフェース → ソフトウェアカーソル で新規追加し、最初を「Default」、2番目を「DefaultCursor」に設定する。
Web上のデフォルトUIが消せないUIはHTML/JavaScriptで定義されている。カスタマイズする場合はサーーの player.html などを編集する。
実行後にキャラクターが出ないUEエディタを完全に終了してからアプリケーションを起動し直す。
UE 5.5の配信サーーが不安定UE 5.4同梱のシグナリングサーバーを使用する。エンジンとサーバーのバージョンを合わせる。

タグ: Unreal Engine 5 Pixel Streaming WebRTC Blueprint シグナリングサーバー

9月18日 15:46 投稿