Pixel Streaming システムを操作する

Unreal Engine アプリケーションで、ランタイム時に Pixel Streaming システムを操作する方法について説明します。

Windows
MacOS
Linux

クイック スタート ガイド に説明されているように、Pixel Streaming システムをセットアップしている場合、ランタイム時に Pixel Streaming システムを管理するために、Unreal Engine アプリケーションのゲームプレイ コードで特別な操作を実行するは必要はありません。ただし、Pixel Streaming プラグインを使用すれば、Pixel Streaming システムを制御および操作して、特定のエフェクトを使用することができます。このページでは、このような追加オプションについて説明します。

静止画

Unreal Engine アプリケーションで、レンダリングされたすべてのフレームをメディア ストリームにエンコードするには、いくつかの欠点があります。Unreal Engine を実行しているコンピュータのリソースが消費され、それらのすべてのフレームをネットワーク経由で送信すると、帯域幅が使い果たされてしまい、使用可能な帯域幅によっては、エンコードによってレンダリング画像の品質が低下する場合もあります。

GPU リソースとネットワーク帯域幅の使用を最小限に抑えるために、Pixel Streaming プラグインのすべてのフレームのエンコードと送信を一時的に無効にすることで、接続されたクライアントに単一の静的画像を表示することができます。次に例を挙げます。次に例を示します。

  • クライアントがアプリケーションとアクティブにやり取りしておらず、仮想ワールドで何も動いていない場合、何らかの変更が発生するまで、最後にレンダリングされたフレームでアプリケーションを固定したい場合。

  • ロード画面、メッセージ キャプションなどの画像をクライアントに表示したい場合。

これを可能にするために、Pixel Streaming プラグインには、エンコードの一時停止と再開に使用できるブループリント ノードがあります。これらのノードは、ブループリント エディタの [Pixel Streaming Freeze Frame]カテゴリにあります。

Pixel Streaming Freeze Frame functions

  • メディア ストリームを静止画像に置き換える場合は、Freeze Frame ノードを使用します。

    Freeze Frame node

    このノードは、Texture アセットへのオプションの参照を受け入れます。これを提供する場合、接続されたクライアントには、プレイヤー ウィンドウで指定したテクスチャが表示されます。提供しない場合、接続されたクライアントには、このノードを呼び出したときに Unreal Engine アプリケーションによって生成された最後のレンダリング フレームが表示されます。

  • すべてのフレームのストリーミングを再開する場合は、Unfreeze Frame ノードを使用します。

    Unfreeze Frame node

単一のフレームまたは画像テクスチャでフリーズしても、ブラウザからの入力には影響しません。デフォルトでは、プレイヤー ページはフリーズ中にキーボード イベントおよびマウス イベントを Unreal Engine に転送します。

Pixel Streaming イベントに応答する

Pixel Streaming システムは、アプリケーションのゲームプレイ コードが Pixel Streaming セッションの存続期間中に発生する選択されたイベントに応答する方法を提供します。

イベント

説明

On All Connections Closed

Unreal Engine アプリケーションの、このインスタンスに接続されている最後のクライアントが切断したときに生成されます。このイベントが発行されると、アプリケーションのメディア ストリームを表示するクライアントはなくなります。このイベントは、新しいクライアントが参加する準備として、アプリケーションを初期状態にリセットするゲームプレイ ロジックに使用することもできます。

これらのイベントに応答するには、Pixel Streamer Delegates クラスを使用して、それらにバインドします。通常、ゲームプレイの開始時にこのバインディングを設定します。例えば、Event BeginPlay イベントへの応答としてこれを実行できます。バインディングを設定したら、バインドされたイベントがトリガーされるたびにカスタム イベントがトリガーされます。

  1. ブループリント グラフ エディタで、任意のノードの実行ピンから右にドラッグし、Pixel Streamer Delegates > Get Pixel Streamer Delegates を選択します。

    Get Pixel Streamer Delegates

  2. Return Value から右にドラッグし、Pixel Streamer Delegates カテゴリを展開します。イベントのバインディング、およびバインディングを解除するための多くの新しいオプションが表示されます。

    Pixel Streamer Delegates nodes

  3. Bind Event to On All Connections Closed など、イベントの Bind... オプションを選択します。Event 入力を持つ新しいノードを取得します。入力実行ピンを Get Pixel Streamer Delegates の出力実行ピンに接続します。

    Bind Delegate

  4. トリガーするカスタム イベントが既にある場合は、そのタイトル バーにある Output Delegate ピンを、先程作成した Bind ノードの Event 入力に接続します。それ以外の場合は、Event 入力から、左にドラッグし、Add Event > Add Custom Event を選択して、新しいカスタム イベントを作成します。

    Custom Event

  5. Pixel Streaming イベントに応答して実行するブループリント ロジックにカスタム イベントを接続します。

例えば、この実装では同じブループリントで定義されたカスタム関数を呼び出して、アプリケーションを初期状態にリセットします。

Respond to the custom event

メディア フレームワークでストリームを再生する

Pixel Streaming プラグインを使用してメディア ストリームをエンコードおよびブロードキャストする Unreal Engine のインスタンスがある場合、別の Unreal Engine アプリケーションで、そのメディア ストリームを再生できます。

このストリーミング再生は、UE4 のメディア フレームワークに基づいて作成されています。ストリーミング再生の設定は、メディア フレームワークのその他の種類のストリーミング メディア ソースの設定とまったく同じです。詳細な手順については ビデオ ストリームをプレイする を参照してください。

唯一の違いは、ストリーミング メディア ソースに設定する Stream Url の値が次の形式でなければならないという点です。

webrtc://<signaling-server-address>

ここで、<signaling-server-address> は、Signaling and Web サーバーを実行しているコンピュータの IP アドレスとポートです。

次に例を示します。

Stream Media Source configuration

Pixel Streaming メディアのストリーミング再生は、現在 Windows プラットフォームでのみ利用できます。

Select Skin
Light
Dark

新しい Unreal Engine 4 ドキュメントサイトへようこそ!

あなたの声を私たちに伝えるフィードバックシステムを含め、様々な新機能について開発をおこなっています。まだ広く使える状態にはなっていないので、準備ができるまでは、ドキュメントフィードバックフォーラムで、このページについて、もしくは遭遇した問題について教えていただけると助かります。

新しいシステムが稼働した際にお知らせします。

フィードバックを送信