WSLでUSBカメラ画像を使いたかったのですが、WSLは現状デバイスアクセスできないということだったので、NDI(Network Device Interface)でWinからWSLに画像を送り込む環境を構築しました、という話。
ポイント
通常、NDI ReceiverはマルチキャストDNS(mDNS)でSenderを自動認識するのだが、WSLはmDNSに対応していない。そのため、NDI Discovery Serverを利用し、ReceiverとSenderを接続する。
環境構築
- WSL環境の構築:省略
- NDI SDKのWSLへのインストール:省略
- NDI SDKのWinへのインストール:省略
- NDI ToolsのWinへのインストール
SDKとは別途インストールする必要がある。
-> https://ndi.tv/tools/ - NDI Access Manager for LinuxのWSLへのインストール
NDI ToolsはWin版しか提供していない。その代わりのもの。
-> http://www.sienna-tv.com/ndi/accessmanager.html
リクエストするとメールでzipのダウンロードアドレスが送られてくる。
接続手順
- NDI Access ManagerでNDI Discovery Serverを利用するように設定(Win)
C:\Program Files\NewTek\NDI 4 Tools\Access Manager\
Application.NdiGroupEditor.exe
- NDI Access ManagerでNDI Discovery Serverを利用するように設定(WSL)
以下のバイナリを叩く。
/PATH_TO_INSTALL/Access Manager Ubuntu$ ./NDI\ Access\ Manager
ブラウザからアクセスする(事前にポート9091を開放しておく)
- NDI Discovery Serverを起動する(Win)
C:\Program Files\NewTek\NDI 4 SDK\Bin\Utilities\x64\
NewTek NDI Discovery Service.exe - 送受信アプリを起動する
私の場合は、
WSL: Receiver
/PATH_TO_INSTALL/NDI SDK for Linux/examples/C++/NDIlib_Recv
WIN: Sender
C:\Program Files\NewTek\NDI 4 Tools\Test Patterns
上手くいってると疎通する。
NDIビギナーなので、誤りなどありましたらご指摘ください。