🖼️

(UE4)NDIを受信する(NDI)

2022/02/14に公開

*概要
プラグインを使い、UE4でNDIメディアを受信する

*作業環境
UE:4.26.2
NDI:5
OS:Windows10

NDIとは


NewTek社が開発した、LAN経由で映像信号を伝送することができるプロトコルです。
詳しくはNewTekサイトをご覧ください。

現在、様々なシステムやデバイスに普及されつつあり、
UnrealEngineにも対応しています。

NDI 5

2021年6月2日、NDIの最新バージョンであるNDI 5が発表され、
豊富なアップデートとともに、UE4.25、26対応のSDKが公式にリリースされました。
尚、4.27でも利用可能の様です。

インストール手順

まずはこちらから、NDI Toolsをインストールしましょう。

UEと映像信号を相互伝送するために必要になります。
Studio Monitorというアプリで、発信されているNDI信号を確認することができます。

Unreal Engine Plugin

前述の通り、NDIはUEに対応したSDKが配布されています。
インストールも複雑な手順は特に無く、自分でも簡単に使うことができました。
今回はNDIプラグインで、映像の受信/送信を行いたいと思います。

インストール手順

こちらからNDI SDK for Unreal Engineをダウンロードします。

これはUEにNDIプラグインを追加するためのものです。

NDI SDK for Unreal Engine
というインストーラーを実行すると、
Program Files/NewTek/NDI SDK for Unreal Engine/PluginBuilds
の中に、4.25と4.26というフォルダがあります。
それぞれの中にあるNDIIOというフォルダを、
以下ファイルパスにコピペしましょう。

Program Files/EpicGames/バージョン/Engine/Plugins/

プロジェクトを開いて、プラグインを確認すると、

NDI IO Pluginが新しく追加されているので、
Enableにしてリスタートしましょう。

受信する

まず、NDI信号を受け取るレシーバーを作ります。
コンテンツブラウザで右クリックし、
MediaからNDIMediaReceiverを選びましょう。

次に、入力した映像のテクスチャを作ります。
先程のレシーバーをダブルクリックで開き、
VideoTextureから、CreateNewAssetのNDIMediaTexture2Dを選びます。

以下のような2つのアセットができました。

さらにもう1つアセットを追加します。

右クリックでブループリントクラスのアクターアセットを作成しましょう。

名前は、NDIReceiverActorにしておきました。

これに、コンポーネントを追加します。

Add Compornentから、NDI Receiver Compornentを選びましょう。

追加したら、設定のPropertiesからNDI Media Sourceを指定します。

これは、先ほど作成したNDIMediaReceiverを選びましょう。

このNDIReceiverActorに、NDIを受信するためのブループリントを組みます。

使用するノード

Find Network Source by Name


SouceNameに送信中のNDIを指定すると認識してくれます。
送受信中のメディアはNDItoolsのNDIMonitorで確認できます。

Start Receiver


Find Network Source by Nameで見つけたNDIを受信します。
TargetにはNDIReceiverCompornentを繋ぎます。

最低限必要なノードは以上です。
これらを、以下のように組み立てます。

NDIのソースを発見すると「Found NDI」、受信を開始すると「Start NDI」と表示されます。


今回受信するNDIは、スマートフォンからこのように発信されています。

それでは、NDIReceiverActorをレベル上に置き、実行してみましょう。

上手くいってそうです。
作成したNDIMediaTexture2Dを開いてみてください。

スマホで撮影されている画が、リアルタイムで映っています。
NDIの受信に成功しました。

感想

NDIToolsやプラグインによってとても簡単にNDIを扱えるので、ふとした思いつきなど気軽に検証できるのがいいなと思いました。


参考
NDI Video Receiver in Unreal Engine

Discussion