なるように、なる

徒然なつぶやき、備忘録です。

NDI on WSL(Windows Subsystem for Linux)

WSLでUSBカメラ画像を使いたかったのですが、WSLは現状デバイスアクセスできないということだったので、NDI(Network Device Interface)でWinからWSLに画像を送り込む環境を構築しました、という話。

 

ポイント

通常、NDI ReceiverはマルチキャストDNS(mDNS)でSenderを自動認識するのだが、WSLはmDNSに対応していない。そのため、NDI Discovery Serverを利用し、ReceiverとSenderを接続する。

 

環境構築

  1. WSL環境の構築:省略
  2. NDI SDKのWSLへのインストール:省略
  3. NDI SDKのWinへのインストール:省略
  4. NDI ToolsのWinへのインストール
    SDKとは別途インストールする必要がある。
      -> https://ndi.tv/tools/
  5. NDI Access Manager for LinuxのWSLへのインストール
    NDI ToolsはWin版しか提供していない。その代わりのもの。
      -> http://www.sienna-tv.com/ndi/accessmanager.html
          リクエストするとメールでzipのダウンロードアドレスが送られてくる。

接続手順

  1. NDI Access ManagerでNDI Discovery Serverを利用するように設定(Win)
    C:\Program Files\NewTek\NDI 4 Tools\Access Manager\
      Application.NdiGroupEditor.exe

    f:id:Shampagne:20200201232654j:plain

  2. NDI Access ManagerでNDI Discovery Serverを利用するように設定(WSL)
    以下のバイナリを叩く。
    /PATH_TO_INSTALL/Access Manager Ubuntu$ ./NDI\ Access\ Manager

    f:id:Shampagne:20200201233832j:plain

    ブラウザからアクセスする(事前にポート9091を開放しておく)

    f:id:Shampagne:20200201233940p:plain

  3. NDI Discovery Serverを起動する(Win)
    C:\Program Files\NewTek\NDI 4 SDK\Bin\Utilities\x64\
    NewTek NDI Discovery Service.exe
  4. 送受信アプリを起動する
    私の場合は、
    WSL: Receiver
      /PATH_TO_INSTALL/NDI SDK for Linux/examples/C++/NDIlib_Recv
    WIN: Sender
      C:\Program Files\NewTek\NDI 4 Tools\Test Patterns

    上手くいってると疎通する。

    f:id:Shampagne:20200201234816j:plain

     

NDIビギナーなので、誤りなどありましたらご指摘ください。