Pixel Streaming リファレンス

Pixel Streaming システムのコンポーネント用にサポートされるブラウザ、ネットワーク ポート、および構成オプション。

Epicでは、GoogleがWebRTCのバージョンにおける脆弱性を公開 (詳細はこちら)したことを認識しており、EOS SDKに対する影響および次のステップを調査しています

このページでは、Pixel Streaming システムの各部で公開されているコマンドライン パラメータ、設定、オプションについて説明します。

サポートされているグラフィック ハードウェア

Pixel Streaming プラグインを使う Unreal Engine アプリケーションを実行するコンピュータでは、ハードウェアアクセラレート ビデオ エンコーディング (NVENC) をサポートする NVIDIA GPU ハードウェアを使用する必要があります。

  • ハードウェア アクセラレート ビデオ エンコーディング (NVENC) をサポートする NVIDIA GPU ハードウェア。NVIDIA 社の『matrix of supported devices』を参照してください。

  • Advanced Media Framework (AMF) をサポートする AMD GPU ハードウェア。

Pixel Streaming プラグインを使用した際に、エラー メッセージ「Failed to load NvEncode dll (NvEncode dll をロードできない)」が表示された場合は、使用している GPU が NVENC をサポートしていない可能性があります。

サポートされているオペレーティング システム

Pixel Streaming プラグインは、Windows プラットフォームおよび Linux プラットフォームをサポートしています。OSX はサポートされていません。

ただし、Pixel Streaming プラグインおよび付属の Signalling and Web Server は、Windows 10 および Ubuntu 18.04/20.04 でのみテストされています。Windows 7 または 8 を含む、その他のオペレーティング システムではテストされていません。

サポートされているクライアント ブラウザ

Pixel Streaming の再生は、WebRTC プロトコルをサポートする最新のブラウザで動作します。例えば、次のブラウザの最新バージョン (2、3 のバージョン) はテスト済みで、追加設定なしで動作することが確認されています。

  • Google Chrome (デスクトップ版とモバイル版)

  • Microsoft Edge (デスクトップ版)

  • Mozilla Firefox (デスクトップ版とモバイル版)

  • Apple Safari (デスクトップ版とモバイル版)

Microsoft Edge や Opera など他のブラウザは、アドオンやプラグインが必要になることがあり、一部のシステムでは動作しない可能性があります。

サポートされているエンコーダー

エンコーダー

加速度

エンコード速度 1080p/4K

利点

低ビットレートでの品質

ピア当たりの CPU/GPU 使用量

H.264

GPU (Nvidia または AMD)

~4.6ms/~15.5ms

速いエンコード / デコード速度。ハードウェア レベルで多くのデバイスで広くサポートされています。

ガタつき

GPU は、ピア数に関係なく 1 つのセッションのみをエンコードします。

VP8

CPU

~10.5/~25ms

より低いビットレートでより良い画質を生成します。

平均

CPU パフォーマンスは、ピアに比例して変化します。

VP9

CPU

~15ms/~50ms

他のエンコーダと比較して、最低のビットレートで最高の画質を実現します。

良質

CPU パフォーマンスは、ピアに比例して変化します。

1080p ストリームでは、ビットレートが 20 mbps を超えると、3 つのエンコーダーすべての品質が同じになります。ここにリストされているエンコード速度は推定値であり、RTX 3060 と AMD 3900X で取得されたものです。 開発およびテストを行うコーデックである H.264 コーデックの使用をお勧めします。

デフォルトのネットワーク ポート

Pixel Streaming システムの各コンポーネントは、以下に指定したデフォルト ポートを使用して通信します。これらのコンポーネントが動作するホストで、各ポートが開いていることを確認する必要があります。

コンポーネント

ポート

Signalling Server host

  • 80 - クライアントから受信するすべての HTTP リクエスト用。
    この値を変更するには、Signaling サーバーに対して --httpPort パラメータを設定します。

  • 443 - クライアントから受信するすべての HTTPS リクエスト用 (Signaling サーバーが HTTPS モードで動作している場合)。
    この値を変更するには、Signaling サーバーに対して --httpsPort パラメータを設定します。

  • 8888 - WebRTC Proxy サーバーから受信するすべての接続リクエスト用。
    この値を変更するには、Signaling サーバーに対する --streamerPort パラメータ UE4 アプリケーションに対する -PixelStreamingPort パラメータの 両方 を設定します。

Matchmaker Server host

  • 90 - クライアントから受信するすべての HTTP リクエスト用。
    この値を変更するには、Matchmaker サーバーに対して --httpPort パラメータを使用します。

  • 9999 - Signaling サーバーによって送信されるすべてのメッセージ用。
    この値を変更するには、Matchmaker サーバーに対する --matchmakerPort パラメータ Signaling サーバーに対する --matchmakerPort パラメータの 両方 を設定します。

SFU Ports

  • 8889- Signalling サーバーと SFU 間の接続を開きます。

Pixel Streaming コンソール コマンドと起動引数

このセクションには、Pixel Streaming を使用するアプリケーションで役立つコンソール コマンドと起動引数が記載されています。

必須の起動引数

Pixel Streaming を使用する Unreal Engine アプリケーションの起動時には、次の起動引数を指定する必要があります。

コマンドライン引数

説明

-PixelStreamingIP=<value> または <domain>

Signaling and Web サーバーを実行しているコンピュータの IP アドレスまたはドメイン名を指定します。

-PixelStreamingPort=<value>

Signaling and Web サーバーが Unreal Engine アプリケーションから受信する通信をリッスンするポートを指定します。Signaling and Web サーバーは、デフォルト値 8888 を使用します。

-PixelStreamingURL=<value>

-PixelStreamingIP および -PixelStreamingPort が存在しない場合にのみ必要。使用すると、-PixelStreamingIP-PixelStreamingPort の両方が置き換えられます。

これには、WebSocket プロトコルも含める必要があります。以下に例を示します。ws://127.0.0.1:8888 または wss://127.0.0.1:8888

通常の Pixel Streaming アプリケーションの起動は、次のようにします。

MyPixelStreamingApplication.exe -PixelStreamingIP=127.0.0.1 -PixelStreamingPort=8888

または

MyPixelStreamingApplication.exe -PixelStreamingURL="ws://127.0.0.1:8888"

Unreal Engine 起動引数

次の引数は、Pixel Streaming に固有のものではありません。しかし、特にクラウドでのデプロイにおいて、多くの Pixel Streaming アプリケーションで便利な場合があります。

コマンドライン引数

説明

-RenderOffscreen

Unreal Engine アプリケーションをヘッドレス (ローカル コンピュータで表示されるレンダリングが何もない状態) で実行します。アプリケーションはウィンドウを表示せず、全画面でのレンダリングもありません。 このパラメータを -ForceRes とともに使用すると、Unreal Engine はメイン ディスプレイの解像度に基づいて解像度を自動的に調整することができなくなります。

このパラメータを省略すると、Unreal Engine アプリケーションのウィンドウは通常どおりレンダリングされます。このアプリケーション ウィンドウが最小化されると、Pixel Streaming ビデオと入力の取り込みは停止します。したがって、このパラメータを常に含めることをお勧めします。ただし、同じコンピュータで実行時に、Unreal Engine アプリケーションからのレンダリング出力をローカルで確認する必要がある場合は除きます。

-ForceRes

これを -ResX および -ResY と組み合わせると、Unreal Engine に指定した解像度を強制します。これは、表示解像度が通常ないクラウドでのデプロイに便利です。

-ResX <value>

Unreal Engine アプリケーション起動時の解像度の幅コンポーネントを設定します。

-ResY <value>

Unreal Engine アプリケーション起動時の解像度の高さコンポーネントを設定します。

-AudioMixer

Unreal Engine でオーディオにソフトウェア ミキシングを使用するようにします。オーディオ デバイスがないと、これが必要になる場合があります。

-Unattended

エラーが生じた場合にダイアログ ボックスの生成を抑制します。これは、Unreal Engine をオフスクリーンで実行する場合や、コンテナ内で実行し、メッセージ ボックスがそれらのシナリオにおいて恒久的にハングする可能性がある場合に役立ちます。

-StdOut および -FullStdOutLogOutput

これら 2 つのフラグを組み合わせると、最大のログ出力が生成されます。これは、SSH ターミナルでライブ ログのデバッグまたは表示を実行する場合に便利です。

オプションのコンソール コマンドの起動引数

ランタイム時にコンソールの変数として、または起動時にプログラム引数として次の設定を指定することができます。

これらの設定が指定されていない場合は、各設定のデフォルト値がシステムによって提供されます。ほとんどのユーザーは、これらの設定を変更する必要がありません。これらの値の多くは WebRTC によって内部で制御されており、値をオーバーライドするとパフォーマンスの低下につながる可能性があります。

Pixel Streaming プラグインの構成

次の設定を変更すると、Pixel Streaming プラグインの構成が行われます。

コンソール変数

コマンドライン引数

デフォルト値

説明

PixelStreaming.HUDStats

-PixelStreamingHudStats

false

インゲーム HUD に PixelStreaming の統計情報を表示するかどうか。

PixelStreaming.DisableLatencyTester

-PixelStreamingDisableLatencyTester

false

Pixel Streaming プラグイン パイプラインをパス スルーするレイテンシー テストのトリガーを無効にします。

PixelStreaming.KeyFilter

-PixelStreamingKeyFilter=<values>

""

ストリーミング中のクライアントからの無視するキーのコンマ区切りリスト。たとえば、「W,A,S,D」はデフォルトの移動キーをフィルタによって除外する場合に使用できます。

該当なし

-AllowPixelStreamingCommands

false

ユーザーが emitConsoleCommand javascript を使用してコンソール コマンドを送信できるようにするかどうか。

該当なし

-PixelStreamingHideCursor

false

UE アプリケーションのカーソルを非表示にするかどうか。

-SimulcastParameters

-SimulcastParameters="[layer_list]"

-SimulcastParameters=1.0,5000000,100000000,2.0,1000000,5000000

レイヤーの形式は [scale_down_factor]、[min_bitrate]、[max_bitrate] です。常に少なくとも 1 つのレイヤーを宣言する必要があり、少なくとも 1 のスケールダウン係数を設定することをお勧めします。例:スケールダウン係数 2 は半分の解像度を意味します。

エンコーダの構成

次の設定を変更すると、Pixel Streaming プラグインが使用する、基礎となるビデオ エンコーダの構成が行われます。

コンソール変数

コマンドライン引数

デフォルト値

説明

PixelStreaming.Encoder.TargetBitrate

-PixelStreamingEncoderTargetBitrate=<value>

-1

ターゲット ビットレート (bps)。これを設定すると、WebRTC が必要とするビットレートが無視されます (非推奨)。無効にするには -1 に設定します。

PixelStreaming.Encoder.MaxBitrateVBR

-PixelStreamingEncoderMaxBitrate=<value>

20000000

最大ビットレート (bps)。

NVENC の CBR レート制御モードでは機能しません。

PixelStreaming.Encoder.DumpDebugFrames

-PixelStreamingDebugDumpFrame=<value>

false

デバッグの目的で、エンコーダからディスク上のファイルにフレームをダンプします。

PixelStreaming.Encoder.MinQP

-PixelStreamingEncoderMinQP=<value>

-1

0 ~ 51。値が小さいほど品質は向上しますが、ビットレートが高くなります。注記:-1 にすると、最小 QP のすべてのハード リミットが無効化されます。

PixelStreaming.Encoder.MaxQP

-PixelStreamingEncoderMaxQP=<value>

-1

0 ~ 51。値が小さいほど品質は向上しますが、ビットレートが高くなります。注記:-1 にすると、最大 QP のすべてのハード リミットが無効化されます。

PixelStreaming.Encoder.RateControl

-PixelStreamingEncoderRateControl=<value>

「CBR」

PixelStreaming ビデオ エンコーダの RateControl のモード。サポートされるモードは、「ConstQP」、「VBR」、「CBR」です。注記:Note:CBR のみが推奨されます。

PixelStreaming.Encoder.EnableFillerData

-PixelStreamingEnableFillerData=<value>

false

ジャンク データを入力することで、一定のビットレートを維持します。注記:CBR で MinQP が -1 の場合は必要ありません。

PixelStreaming.Encoder.Multipass

-PixelStreamingEncoderMultipass=<value>

「FULL」

エンコーダによるフレームあたりのパス数。詳細については、NVENC のドキュメントを参照してください。サポートされるモードは、 「DISABLED」「QUARTER」「FULL」 です。

PixelStreaming.Encoder.H264Profile

-PixelStreamingH264Profile=<value>

"BASELINE"

エンコーダによって使用される H264 プロファイル。サポートされるモードは、 「AUTO」「BASELINE」「MAIN」「HIGH」「HIGH444」STEREOSVC_TEMPORAL_SCALABILITYPROGRESSIVE_HIGHCONSTRAINED_HIGH です。

受信側の WebRTC 対応デバイスでサポートが保証される唯一のプロファイルは、BASELINE です。

WebRTC の構成

次の設定を変更すると、Pixel Streaming プラグインが内部で使用する WebRTC ライブラリの構成が行われます。

コンソール変数

コマンドライン引数

デフォルト

説明

N/A

-LogCmds="LogPixelStreamingWebRTC <LogLevel>"

Log

WebRTC のログ レベルを指定します。これは、WebRTC のデバッグに便利です。役立つログ レベルは Log、Verbose、VeryVerbose です。

PixelStreaming.WebRTC.DegradationPreference

-PixelStreamingWebRTCDegradationPreference=<value>

"MAINTAIN_FRAMERATE"

Degradation preference is WebRTC's strategy to destructively adapt the bitrate (changing resolution/dropping frames) when changing the encoder bitrate/QP is not sufficient.

PixelStreaming.WebRTC.MaxFps

-PixelStreamingWebRTCMaxFps=<value>

60

FPS WebRTC を最大にすると、キャプチャ/エンコード/送信を実行しようとします。

PixelStreaming.WebRTC.StartBitrate

-PixelStreamingWebRTCStartBitrate=<value>

10000000

WebRTC がストリーミング開始を試みる開始ビットレート (bps)。

数値は、Min から Max の間のビットレートである必要があります。

PixelStreaming.WebRTC.MinBitrate

-PixelStreamingWebRTCMinBitrate=<value>

100000

最小ビットレート (bps)。これを下回ると WebRTC でリクエストを行いません。

この値を高い値に設定しないよう注意してください。高すぎると、WebRTC でフレームが破棄されます。

PixelStreaming.WebRTC.MaxBitrate

-PixelStreamingWebRTCMaxBitrate=<value>

100000000

最大ビットレート (bps)。これを上回ると WebRTC でリクエストを行いません。

(理想的な) ローカル ネットワークは、この値に実際に達するよう試みるため、この値を高い値に設定しないよう注意してください。

PixelStreaming.WebRTC.LowQpThreshold

-PixelStreamingWebRTCLowQpThreshold=<value>

25

PixelStreaming.Encoder.LowQP=-1 の場合にのみ使用されます。値は 1 ~ 51 です。WebRTC でこの QP 未満のフレームを取得した場合、劣化の環境設定に基づいて適合の決定を試みます。

PixelStreaming.WebRTC.HighQpThreshold

-PixelStreamingWebRTCHighQpThreshold=<value>

37

Only used when PixelStreaming.Encoder.MaxQP=-1.値は 1 ~ 51 です。WebRTC でこの QP を超えるフレームを取得した場合、適合の決定を試みます。

PixelStreaming.WebRTC.DisableReceiveAudio

-PixelStreamingWebRTCDisableReceiveAudio

false

ブラウザから UE へのオーディオ受信を無効化します。

オーディオが必要ない場合は、レイテンシーを改善できる可能性があります。

PixelStreaming.WebRTC.DisableTransmitAudio

-PixelStreamingWebRTCDisableTransmitAudio

false

ブラウザに対する UE のオーディオの送信を無効化します。

オーディオが必要ない場合は、レイテンシーを改善できる可能性があります。

PixelStreaming.WebRTC.DisableAudioSync

-PixelStreamingWebRTCDisableAudioSync

true

WebRTC でオーディオ トラックとビデオ トラックの同期を無効化します。

同期が必要ない場合は、これによってレイテンシーが改善されます。

Signalling サーバーのコンフィギュレーション パラメータ

これらのパラメータを設定するには 2 つの方法があります。

  • コマンドラインで Start_SignallingServer.ps1 または node cirrus.js を実行し、Signaling and Web サーバーを起動する場合。この場合、各パラメータ名にプレフィックス -- (ダッシュ 2 つ) を付け、スペースを挿入し、設定したい値を入力します。例:--httpPort 81

  • コンフィギュレーション ファイルから。デフォルトでは、Signaling and Web サーバー (cirrus.js) は、同じフォルダ内の「config.json」という名前のファイルを検索します。この場合、ファイル内で定義される JSON オブジェクトにおいて、各パラメータおよび値をキーと値のペアとして設定します。Signaling and Web サーバーを 1 回以上起動したことがある場合は、例として「/Samples/PixelStreaming/WebServers/SignallingWebServer/config.json」ファイルにすでにリストされているパラメータを参照してください。

パラメータ

説明

--PublicIp <value>

Signaling and Web サーバーを実行しているコンピュータのパブリック IP 。

--HttpPort <value>

クライアント ブラウザとの HTTP 接続に Signaling and Web サーバが使用するポート。

--StreamerPort <value>

Signaling and Web サーバーが Unreal Engine アプリケーションから受信する接続をリッスンするポート。

--peerConnectionOptions <value>

Unreal Engine アプリケーションおよびブラウザが自身の外部 IP アドレスを発見する必要がある場合に、クエリを実行する任意の STUN サーバーおよび TURN サーバーのホスト名または IP アドレスを指定します。
STUN サーバーおよび TURN サーバーの詳細については、「ホスティングおよびネットワーキング ガイド」を参照してください。
このパラメータは、通信する順序通りにサーバー URL をリストした文字列である必要があります。次の形式で作成する必要があります。
"{ \"iceServers\": [{\"urls\": [<url1>,<url2>,<url3>,...]}] }"
例:
"{ \"iceServers\": [{\"urls\": [\"stun:34.250.222.95:19302\"]}] }"
または
"{ \"iceServers\": [{\"urls\": [\"stun:34.250.222.95:19302\",\"turn:34.250.222.95:19312\"]}] }"
Unreal Engine 出荷時の TURN サーバーの実装では、以下のようにユーザー名とパスワードが必要です。
"{\"iceServers\":[{\"urls\":[\"stun: 34.250.222.95:19302\",\"turn: 34.250.222.95:19312\"],\"username\":\"<TURN_Username>\",\"credential\":\"<TURN_Password>\"}]}"
その他の STUN の実装と TURN の実装では、認証情報の要件が異なる可能性があります。

JSON コンフィギュレーション ファイルを使用してパラメータを入力する場合も、値は文字列の形式になっている必要があります。上記のように、値は常に二重引用符で囲み、文字列内の引用符をエスケープするにはバックスラッシュを使用します。

--HomepageFile <value>

特定の URL をリクエストせずに接続するクライアント ブラウザに対し、サーバーが提供するデフォルト ページのファイル名。
デフォルト値は player.htm です。

--AdditionalRoutes <value>

Signaling サーバーと Web サーバーがサービスを提供する追加フォルダを指定します。
このパラメータは、JSON オブジェクトである必要があります。つまり、コマンドラインではなく、JSON コンフィギュレーション ファイルでのみ設定できます。
各キーは URL の一部になっているオブジェクトでなくてはなりません。また、各キーは、リクエストを行うクライアントに対し、サーバーがサービスを提供するローカル パスでなくてはなりません。たとえば、以下のように設定したとします。
"AdditionalRoutes" = { "/myfolder", "C:\some_local_path" }
この場合、クライアントが http://server-name/myfolder/index.html をリクエストすると、サーバーは C:\some_local_path\index.html という名前のファイルを提供します。

--LogToFile <value>

Signaling and Web サーバーが「./logs」フォルダ内のファイルにログ メッセージを書き込むかどうかを決定します。
デフォルト値は「true」です。

--UseHttps <value>

Signaling サーバーが httpsPort で HTTPS 接続のみを受け入れるようにするには、このパラメータを true に設定します。
また、Signaling and Web サーバーのルート フォルダ内の「certificates」フォルダに、「client-key.pem」ファイルおよび「client-cert.pem」ファイルを配置する必要があります。

--HttpsPort <value>

HTTPS 接続でリッスンするポート。UseHttps が有効な場合にのみ使用されます。
デフォルト値は 443 です。

--UseMatchmaker <value>

Signaling and Web サーバーが現在のステータスを Matchmaker サーバーに送信するかどうかを決定します。これは、現在使用されていない Signaling サーバーと Unreal Engine アプリケーションをクライアント ブラウザで見つけやすくするためのものです。

--MatchmakerAddress <value>

Signaling and Web サーバーが通信する Matchmaker サーバーの IP アドレス。

--MatchmakerPort <value>

Signaling and Web サーバーから受信するメッセージを Matchmaker サーバーがリッスンするポート。

--SFUPort <value>

Signalling サーバーと SFU 間の接続を開きます。

--ConfigFile <value>

上記プロパティの値を取得するために Signaling サーバーが使用するコンフィギュレーション ファイルのパスとファイル名を指定します。コマンドラインでのみ設定できます。

Matchmaker サーバー コマンドライン パラメータ

run.bat ファイルを実行して Matchmaker サーバーを起動する場合、または node.exe matchmaker.js を実行して Matchmaker サーバーを起動する場合は、以下のパラメータをコマンドラインで入力します。

パラメータ

説明

--httpPort <value>

クライアントからの HTTP 接続を Matchmaker がリッスンするポート番号を設定します。
デフォルト値は 90 です。

--matchmakerPort <value>

Cirrus シグナリング サーバーから受信するメッセージを Matchmaker がリッスンするポート番号を設定します。
デフォルト値は 9999 です。

SFU サーバーのパラメータ

パラメータ

説明

--PublicIP=<value>

SFU サーバーが使用するパブリック IP アドレス。

Unreal Engine のドキュメントを改善するために協力をお願いします!どのような改善を望んでいるかご意見をお聞かせください。
調査に参加する
キャンセル