Epicでは、GoogleがWebRTCのバージョンにおける脆弱性を公開 (詳細はこちら)したことを認識しており、EOS SDKに対する影響および次のステップを調査しています。
このページでは、Pixel Streaming システムの各部で公開されているオプション、設定、およびコマンドライン パラメータについて説明します。
サポートされているグラフィック ハードウェア
Pixel Streaming プラグインを使用して Unreal Engine アプリケーションを実行するコンピュータでは、次のいずれかのタイプのグラフィック ハードウェアを備えている必要があります。
-
ハードウェアアクセラレート ビデオ エンコーディング (NVENC) をサポートする NVIDIA GPU ハードウェア。NVIDIA 社の サポートされるデバイスのマトリックス を参照してください。
-
Advanced Media Framework (AMF) をサポートする AMD GPU ハードウェア。
-
VideoToolbox フレームワークの使用をサポートする Mac ハードウェア。
Pixel Streaming プラグインを使用しようとしてエラー メッセージ「No compatible GPU found, or failed to load their respective encoder libraries (互換性のある GPU がないか、それぞれのエンコーダ ライブラリのロードに失敗しました)」が表示された場合は、使用している GPU が NVENC または AMF をサポートしていない可能性があります。
サポートされているオペレーティング システム
Pixel Streaming プラグインは、Windows、Linux および Mac の各プラットフォームをサポートしています。OSX はサポートされていません。
ただし、Pixel Streaming プラグインおよび付属の Signalling and Web Server がテストされているのは、Windows 10、Ubuntu 18.04/20.04 および MacOS Ventura 13.5.1 だけです。Windows 7 または 8 を含む、その他のオペレーティング システムではテストされていません。
サポートされているクライアント ブラウザ
Pixel Streaming の再生は、WebRTC プロトコルをサポートする最新のブラウザで動作します。たとえば、次のブラウザの最新までの数バージョンはテスト済みで、追加設定なしで動作することが確認されています。
- Google Chrome (デスクトップ版とモバイル版)
- Microsoft Edge (デスクトップ版)
- Mozilla Firefox (デスクトップ版とモバイル版)
- Apple Safari (デスクトップ版とモバイル版)
Microsoft Edge や Opera などの他のブラウザは、アドオンやプラグインが必要になることがあり、一部のシステムでは動作しない可能性があります。
サポートされているエンコーダ
エンコーダ | アクセラレーション | エンコード速度 (1080p/4K) | 利点 | 低ビットレートでの品質 | CPU/GPU 使用量 (ピアごと) |
---|---|---|---|---|---|
H.264 | GPU (NVIDIA、AMD、Apple M シリーズ プロセッサ) | ~8.97ms/~24.17ms | 高速のエンコード/デコード。多くのデバイスでハードウェア レベルの広範なサポート。 | かくつき | GPU はピア数に関係なく 1 つのセッションのみをエンコード。 |
VP8 | CPU | ~10.5/~25ms | 低いビットレートでも良好な画質を生成。 | 平均 | CPU パフォーマンスはピア数に比例して変化。 |
VP9 | CPU | ~15ms/~50ms | 最低のビットレートで最高の画質 (他のエンコーダとの比較)。 | 良好 | CPU パフォーマンスはピア数に比例して変化。 |
AV1 | GPU (NVIDIA Ada Lovelace 以降) | ~8.98ms/~15.8ms | 最低のビットレートで最高の画質 (他のエンコーダとの比較)。 | 最良 | GPU はピア数に関係なく 1 つのセッションのみをエンコード。 |
1080p ストリームでは、ビットレートが 20 mbps を超えると、すべてのエンコーダの品質が同様になります。ここにリストされているエンコード速度は推定値であり、RTX 3060、AMD 3900X (H.264、VP8、VP9)、NVIDIA RTX 6000 Ada (AV1) のテストを基にしています。 低ビットレートで良好な画質の動画を実現できるため、使用するエンコーディング ハードウェアがサポートする場合は AV1 コーデックの使用をお勧めします。
デフォルトのネットワーク ポート
Pixel Streaming システムの各コンポーネントは、以下に指定したデフォルト ポートを使用して通信します。これらのコンポーネントが動作するホストで、各ポートが開いていることを確認する必要があります。
コンポーネント | ポート |
---|---|
Signalling Server host |
|
Matchmaker Server host |
|
SFU Ports |
|
Pixel Streaming コンソール コマンドと起動引数
このセクションには、Pixel Streaming を使用するアプリケーションで役立つコンソール コマンドと起動引数が記載されています。
必須の起動引数
Pixel Streaming を使用する Unreal Engine アプリケーションの起動時には、次の起動引数を指定する必要があります。
コマンドライン引数 | 説明 |
---|---|
-PixelStreamingIP=<value> または <domain> |
Signalling and Web サーバーを実行しているコンピュータの IP アドレスまたはドメイン名を指定します。 |
-PixelStreamingPort=<value> |
Signalling and Web サーバーが Unreal Engine アプリケーションから受信する通信をリッスンするポートを指定します。Signalling 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" はデフォルトの移動キーを除外する場合に使用できます。 |
PixelStreaming.UseMediaCapture |
-PixelStreamingUseMediaCapture |
false |
MediaIOFramework のメディア キャプチャを使用して、Pixel Streaming 内部バックバッファ ソースではなく、フレームをキャプチャします。一部のシナリオでこれを優先して使用できます。 |
該当なし | -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.Codec |
-PixelStreamingEncoderCodec=<value> |
H264 |
Pixel Streaming に使用するエンコーダを指定します。サポート対象エンコーダは「H264」、「AV1」、「VP8」、「VP9」です。 |
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」です。注:CBR のみが推奨されます。 |
PixelStreaming.Encoder.EnableFillerData |
-PixelStreamingEnableFillerData=<value> |
false |
ジャンク データを入力することで、一定のビットレートを維持します。注:CBR で MinQP が -1 の場合は必要ありません。 |
PixelStreaming.Encoder.Multipass |
-PixelStreamingEncoderMultipass=<value> |
"FULL" |
エンコーダによるフレームあたりのパス数。詳細については、NVENC のドキュメントを参照してください。サポートされるモードは、"DISABLED" 、"QUARTER" 、"FULL" です。 |
PixelStreaming.Encoder.MaxSessions |
-PixelStreamingEncoderMaxSessions |
-1 |
Pixel Streaming 向けのハードウェア エンコーダ同時セッションの最大数を設定します (-1 では制限なし)。 |
PixelStreaming.Encoder.H264Profile |
-PixelStreamingH264Profile=<value> |
"BASELINE" |
エンコーダによって使用される H264 プロファイル。サポートされるモードは 受信側の WebRTC 対応デバイスでサポートが保証される唯一のプロファイルは、BASELINE です。 |
WebRTC の構成
次の設定を変更すると、Pixel Streaming プラグインが内部で使用する WebRTC ライブラリの構成が行われます。
コンソール変数 | コマンドライン引数 | デフォルト | 説明 |
---|---|---|---|
N/A |
-LogCmds="LogPixelStreamingWebRTC <LogLevel>" |
Log |
WebRTC のログ レベルを指定します。これは、WebRTC のデバッグに便利です。役立つログ レベルは Log、Verbose、VeryVerbose です。 |
PixelStreaming.WebRTC.DegradationPreference |
-PixelStreamingWebRTCDegradationPreference=<value> |
"MAINTAIN_FRAMERATE" |
劣化設定は、エンコーダ ビットレート/QP が十分ではないときに、破壊的にビットレートに適応する (解像度/フレームのドロップ数の変更) WebRTC の戦略です。 |
PixelStreaming.WebRTC.MaxFps |
-PixelStreamingWebRTCMaxFps=<value> |
60 |
WebRTC がキャプチャ/エンコード/送信を試行する最大 fps。 |
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 |
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 で音声トラックと動画トラックの同期を無効化します。 同期が必要ない場合は、これによってレイテンシーが改善されます。 |
PixelStreaming.WebRTC.MinPort |
-PixelStreamingWebRTCMinPort |
49152 |
WebRTC ポート アロケータで利用可能な最小メディア ポートを設定します。 |
PixelStreaming.WebRTC.MaxPort |
-PixelStreamingWebRTCMaxPort |
65535 |
WebRTC ポート アロケータで利用可能な最大メディア ポートを設定します。 |
PixelStreaming.WebRTC.PortAllocator.Flags |
-PixelStreamingWebRTCPortAllocatorFlags |
"" |
WebRTC ポート アロケータ フラグを設定します。各フラグはカンマ区切りで指定します。サポート対象の値は DISABLE_UDP, DISABLE_STUN, DISABLE_RELAY, DISABLE_TCP, ENABLE_IPV6, ENABLE_SHARED_SOCKET, ENABLE_STUN_RETRANSMIT_ATTRIBUTE, DISABLE_ADAPTER_ENUMERATION, DISABLE_DEFAULT_LOCAL_CANDIDATE, DISABLE_UDP_RELAY, ENABLE_IPV6_ON_WIFI, ENABLE_ANY_ADDRESS_PORTS, DISABLE_LINK_LOCAL_NETWORKS です。 |
PixelStreaming.WebRTC.DisableFrameDropper |
-PixelStreamingWebRTCDisableFrameDropper |
false |
LAN ストリーミングなどでフレームがドロップされている場合に、便利な WebRTC 内部フレーム ドロッパーを無効にします。 |
PixelStreaming.WebRTC.VideoPacing.MaxDelay |
-PixelStreamingWebRTCVideoPacingMaxDelay |
-1.0 |
WebRTC-Video-Pacing フィールド トライアルを有効にして、最大遅延 (ms) パラメータを設定します (ゼロ未満の値は破棄)。 |
PixelStreaming.WebRTC.VideoPacing.Factor |
-PixelStreamingWebRTCVideoPacingFactor |
-1.0 |
WebRTC-Video-Pacing フィールド トライアルを有効にして、動画ペーシング係数パラメータを設定します。値が大きいと、大きなビットレートで寛大になります。 |
PixelStreaming.WebRTC.FieldTrials |
-PixelStreamingWebRTCFieldTrials |
"" |
WebRTC フィールド トライアル文字列を設定します。形式は "TRIAL1/VALUE1/TRIAL2/VALUE2/" です。 |
Signalling サーバーの構成パラメータ
これらのパラメータを設定する方法は 2 つあります。
- コマンドラインから
Start_SignallingServer.ps1
またはnode cirrus.js
を実行し、Signalling and Web サーバーの起動時に設定できます。この場合、各パラメータ名にプレフィックス--
(ダッシュ 2 つ) を付け、スペースを挿入し、設定したい値を入力します。たとえば、--httpPort 81
です。 - コンフィギュレーション ファイルで設定します。デフォルトでは、Signalling and Web サーバー (
cirrus.js
) は、同じフォルダ内の「config.json
」というファイルを検索します。この場合、ファイル内で定義される JSON オブジェクトにおいて、各パラメータおよび値をキー / 値のペアとして設定します。Signalling and Web サーバーを起動したことがある場合は、例として/Samples/PixelStreaming/WebServers/SignallingWebServer/config.json
ファイルにすでにリストされているパラメータを参照してください。
パラメータ | 説明 |
---|---|
--PublicIp <value> |
Signalling and Web サーバーを実行しているコンピュータのパブリック IP 。 |
--HttpPort <value> |
クライアント ブラウザとの HTTP 接続に Signalling and Web サーバーが使用するポート。 |
--StreamerPort <value> |
Signalling and Web サーバーが Unreal Engine アプリケーションから受信する接続をリッスンするポート。 |
--peerConnectionOptions <value> |
Unreal Engine アプリケーションおよびブラウザが自身の外部 IP アドレスを発見する必要がある場合に、クエリを実行する任意の STUN サーバーおよび TURN サーバーのホスト名または IP アドレスを指定します。
STUN サーバーおよび TURN サーバーの詳細については、「ホスティングおよびネットワーキング ガイド」を参照してください。
このパラメータは、通信する順序どおりにサーバー URL をリストした文字列である必要があります。以下の形式になっている必要があります。
JSON コンフィギュレーション ファイルを使用してパラメータを入力する場合も、値は文字列の形式になっている必要があります。上記のように、値は常に二重引用符で囲み、文字列内の引用符をエスケープするにはバックスラッシュを使用します。 |
--HomepageFile <value> |
特定の URL をリクエストせずに接続するクライアント ブラウザに対し、サーバーが提供するデフォルト ページのファイル名。
デフォルト値は |
--AdditionalRoutes <value> |
Signalling and Web サーバーがサービスを提供する追加のフォルダを指定します。
このパラメータは、JSON オブジェクトである必要があります。つまり、コマンドラインではなく、JSON コンフィギュレーション ファイルでのみ設定できます。
各キーが URL の一部になっているオブジェクトでなくてはなりません。また、各キーは、リクエストを行うクライアントに対し、サーバーがサービスを提供するローカル パスでなくてはなりません。たとえば、以下のように設定したとします。
|
--LogToFile <value> |
Signalling and Web サーバーが「 |
--UseHttps <value> |
Signalling サーバーが httpsPort で HTTPS 接続のみを受け入れるようにするには、このパラメータを true に設定します。
また、Signalling and Web サーバーのルート フォルダ内の「 |
--HttpsPort <value> |
HTTPS 接続でリッスンするポート。UseHttps が有効になっている場合にのみ使用します。
デフォルト値は |
--UseMatchmaker <value> |
Signalling and Web サーバーが現在のステータスを Matchmaker サーバーに送信するかどうかを決定します。これは、現在使用されていない Signalling サーバーと Unreal Engine アプリケーションをクライアント ブラウザで見つけやすくするためのものです。 |
--MatchmakerAddress <value> |
Signalling and Web サーバーが通信する Matchmaker サーバーの IP アドレス。 |
--MatchmakerPort <value> |
Signalling and Web サーバーから受信するメッセージを Matchmaker サーバーがリッスンするポート。 |
--SFUPort <value> |
Signalling サーバーと SFU 間の接続を開きます。 |
--ConfigFile <value> |
上記プロパティの値を取得するために Signalling サーバーが使用するコンフィギュレーション ファイルのパスとファイル名を指定します。コマンドラインでのみ設定できます。 |
Matchmaker サーバーのコマンドライン パラメータ
run.bat
ファイルを実行して Matchmaker サーバーを起動する場合、または node.exe matchmaker.js
を実行して Matchmaker サーバーを起動する場合は、以下のパラメータをコマンドラインで入力します。
パラメータ | 説明 |
---|---|
--httpPort <value> |
クライアントからの HTTP 接続を Matchmaker がリッスンするポート番号を設定します。
デフォルト値は |
--matchmakerPort <value> |
Cirrus シグナリング サーバーから受信するメッセージを Matchmaker がリッスンするポート番号を設定します。
デフォルト値は |
SFU サーバーのパラメータ
パラメータ | 説明 |
---|---|
--PublicIP=<value> |
SFU サーバーで使用するパブリック IP アドレス。 |