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 |
|
Matchmaker Server host |
|
SFU Ports |
|
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> |
これには、WebSocket プロトコルも含める必要があります。以下に例を示します。 |
通常の 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 プロファイル。サポートされるモードは、 受信側の WebRTC 対応デバイスでサポートが保証される唯一のプロファイルは、BASELINE です。 |
WebRTC の構成
次の設定を変更すると、Pixel Streaming プラグインが内部で使用する WebRTC ライブラリの構成が行われます。
コンソール変数 | コマンドライン引数 | デフォルト | 説明 |
---|---|---|---|
N/A |
-LogCmds=PixelStreamingWebRTC <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.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 をリストした文字列である必要があります。次の形式で作成する必要があります。
JSON コンフィギュレーション ファイルを使用してパラメータを入力する場合も、値は文字列の形式になっている必要があります。上記のように、値は常に二重引用符で囲み、文字列内の引用符をエスケープするにはバックスラッシュを使用します。 |
--HomepageFile <value> |
特定の URL をリクエストせずに接続するクライアント ブラウザに対し、サーバーが提供するデフォルト ページのファイル名。
デフォルト値は |
--AdditionalRoutes <value> |
Signaling サーバーと Web サーバーがサービスを提供する追加フォルダを指定します。
このパラメータは、JSON オブジェクトである必要があります。つまり、コマンドラインではなく、JSON コンフィギュレーション ファイルでのみ設定できます。
各キーは URL の一部になっているオブジェクトでなくてはなりません。また、各キーは、リクエストを行うクライアントに対し、サーバーがサービスを提供するローカル パスでなくてはなりません。たとえば、以下のように設定したとします。
|
--LogToFile <value> |
Signaling and Web サーバーが「 |
--UseHttps <value> |
Signaling サーバーが httpsPort で HTTPS 接続のみを受け入れるようにするには、このパラメータを true に設定します。
また、Signaling and Web サーバーのルート フォルダ内の「 |
--HttpsPort <value> |
HTTPS 接続でリッスンするポート。UseHttps が有効な場合にのみ使用されます。
デフォルト値は |
--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 がリッスンするポート番号を設定します。
デフォルト値は |
--matchmakerPort <value> |
Cirrus シグナリング サーバーから受信するメッセージを Matchmaker がリッスンするポート番号を設定します。
デフォルト値は |
SFU サーバーのパラメータ
パラメータ | 説明 |
---|---|
--PublicIP=<value> |
SFU サーバーが使用するパブリック IP アドレス。 |