ラズパイ上で NDI 送受信できる dicaffeine ソフトウェアを使用してみた

# はじめに
ひさびさに NewTek のフォーラムを見ていたら、ラズパイ上で NDI 送受信できる dicaffeine というスゴいソフトウェアを見つけたので、さっそく使用してみました。

## NewTek フォーラム
ARM デバイスで NDI ライブラリを使用する方法について NewTek フォーラムをチェックしていました。以前は NDI 送信 (Encode) はできるが、NDI 受信 (Decode) はできないと認識していましたが、NDI 受信もできるようになったことを確認しました。

https://en.wikipedia.org/wiki/Network_Device_Interface
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/11028317-85f8-db16-3e74-b4baaf7d9e23.png" width="75%">
https://forums.newtek.com/showthread.php/151197-NDI-for-arm-devices
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/ff908413-6df2-26a9-864a-e88d5896b21e.png" width="75%">

最近の投稿を確認したところ、Sienna が NDI Monitor for Raspberry PI を試作していたり、NDI 送受信できる dicaffeine というソフトウェアが存在することを知りました。

https://twitter.com/NDI_Cloud/status/1145754510343778314
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/71a83983-487c-3f1f-8b1a-7bd753911b16.png" width="50%"> 
![スクリーンショット 2020-06-28 16.03.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/1eac0312-a90c-cb02-a79f-d3a46dc368b5.png)
![dicaffeine_hp.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/1b812f18-47d7-b3be-a6e5-f0adca4fc86a.png)

## dicaffeine ソフトウェア
dicaffeine のホームページに導入手順が記載されていますので、その通りに実行すれば問題ありませんでした。

### 環境
- Raspberry Pi 4  
  - Raspberry Pi OS (32bit 版)  
    2020-05-27-raspios-buster-armhf.zip (OS イメージファイル)
  - ウェブカメラ (Logitech, Inc. Webcam C270)
- NDI ソース
  - JustWifiCam (iOS)
- NDI Monitor (macOS)

※ dicaffeine はソースコードが公開されておらずバイナリ (32bit版) だけが提供されていますので、Raspberry Pi OS (64bit 版) では動かすことができません。

```bash
$ wget -O - http://dicaffeine.com/repository/dicaffeine.key | sudo apt-key add -
$ echo "deb https://dicaffeine.com/repository/ buster main non-free" | sudo tee -a /etc/apt/sources.list.d/dicaffeine.list
$ sudo apt update
$ sudo apt install -y dicaffeine
$ systemctl status dicaffeine
● dicaffeine.service
   Loaded: loaded (/etc/systemd/system/dicaffeine.service; enabled; vendor preset: enabled)
   Active: active (running) since Sun 2020-06-28 13:24:32 JST; 3h 15min ago
  Process: 371 ExecStartPre=/bin/sleep 6 (code=exited, status=0/SUCCESS)
 Main PID: 479 (dserver)
    Tasks: 3 (limit: 4915)
   Memory: 5.8M
   CGroup: /system.slice/dicaffeine.service
           └─479 /usr/bin/dserver -c /etc/dicaffeine/dserver.json

 6月 28 13:24:26 raspberrypi systemd[1]: Starting dicaffeine.service...
 6月 28 13:24:32 raspberrypi systemd[1]: Started dicaffeine.service.
 6月 28 13:24:38 raspberrypi dserver[479]: INFO 1: 13:24:38 [BackendServer] Loaded config.
 6月 28 13:24:38 raspberrypi dserver[479]: INFO 1: 13:24:38 [BackendServer] No valid streamer startup config found..
 6月 28 13:24:38 raspberrypi dserver[479]: INFO 1: 13:24:38 [BackendServer] Server started on port 80
```

dicaffeine のインストールが完了すると、ポート:80 でプロセスが起動していますので、ブラウザ (Chromium) を起動して localhost へアクセスします。

ログイン画面でパスワードの入力を求められるので、初期パスワード (admin) を入力します。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/f21ed1f4-c716-5295-df5f-a727cc94e533.png" width="75%">

PLAYER タブを選択すると NDI 受信することができます。NDI ソースを選択して Play ボタンを押下するとリアルタイムに確認することができました。(全画面で表示されます。[ESC] ボタンで終了します。)
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/55472c20-dc84-848e-8c7b-0d99bd03bd30.png" width="75%">

STREAMER タブを選択すると NDI 送信することができます。NDI ソースとして USB カメラを選択して Stream ボタンを押下すると、NDI Monitor (macOS) で確認することができます。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/9318c60a-a7ee-664b-5ed3-c93be560c6e8.png" width="75%">
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/72479/70e890f4-0f10-95ed-30f4-b0721ed3c1b9.png" width="75%">