NDIを活用することでDJイベント "The Utopia Tone" の映像伝送をIPネットワーク上に移行します。
PythonとSDL2を使用してNDIソースを受信し全画面表示を行ったり、OpenCVを使用してNDIソースの送信を行います。
動作にはPython3及びavahi-daemon、libgl1-mesa-dev、portaudio19-devが必要です。 以下のコマンドで必要なパッケージをインストールしてください。
# Debian/Ubuntu
$ sudo apt install git curl avahi-daemon libgl1-mesa-dev portaudio19-dev
# Fedora
$ sudo dnf install git curl avahi mesa-libGL-devel portaudio-devel
$ curl -LsSf https://astral.sh/uv/install.sh | sh次に、リポジトリをクローンし、仮想環境を作成して依存関係をインストールします。
$ git clone https://github.com/TechnoTUT/utone-ndi-utils.git
$ cd utone-ndi-utils
$ uv venv
$ uv pip install -r requirements.txtNDIソースを受信して全画面表示するには、以下のコマンドを実行します。
$ uv run rx.py -s "<NDI Source Name>" --fullscreen<NDI Source Name>は、受信したいNDIソースの名前に置き換えてください。
NDIソースを送信するには、以下のコマンドを実行します。
$ uv run tx.pySystemdを使用して自動起動する場合は、以下の手順を実行します。なお、GUIなしの環境でも動作します。
ExecuteStartとWorkingDirectoryのパスを適切なものに変更します。
以下では、例として受信側の設定を示しますが、送信側も同様の手順で設定できます。送信側の設定を行う場合は、rxをtxに置き換えてください。
$ mkdir -p ~/.config/systemd/user
$ cp systemd-example/ndi-rx.service ~/.config/systemd/user/
$ vim ~/.config/systemd/user/ndi-rx.service自動起動を有効にします。
$ systemctl --user daemon-reload
$ systemctl --user enable --now ndi-rx.serviceログイン時でなく、システム起動時に自動起動する場合は、lingerを有効にします。
$ sudo loginctl enable-linger username