はじめに
最近、特定少人数のオフラインイベントの配信や完全オンラインイベントの配信活動が増えてきました。
その時に大活躍してくれるのが ATEM mini ですが、USB Type-C で接続する他にネットワーク経由で操作することができます。
手元でボタン操作ができない時にリモートから画面を切り替える場合、ATEM Software Control を使用します。
ネットワーク経由で操作できるということで、Node-RED から ATEM mini を操作してみました。
![title.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F72479%2Fa4497c73-3903-48a6-86e6-a169891a421b.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=65dc0e804618d8b904c4995aa2de93af)
BMD プロトコル
ネットワーク経由で操作する際に BMD (Black Magic Design) というプロトコルが使用されていることが分かりました。Wireshark を起動してプロトコルの内容を見てみることにします。
デフォルトの Wireshark では BMD プロトコルを解析できませんので、プラグインをインストールします。
以下、macOS を例に説明します。
lua のインストール
$ brew install lua
解析プラグインのインストール
$ mkdir ~/.config/wireshark
$ mkdir ~/.config/wireshark/plugins
$ git clone https://github.com/peschuster/wireshark-atem-dissector
$ mv wireshark-atem-dissector/atem_dissector.lua ~/.config/wireshark/plugins
Wireshark を起動すると、ATEM mini と ATEM Software Control が通信している内容を確認することができます。
ATEM Switchers SDK
ATEM Switchers 8.1.2 SDK (執筆時点) が公開されており、オリジナルのスイッチャーアプリを作成することができます。
サンプルのアプリケーションがソースコードと一緒に含まれていますので、すぐに試すことができます。
以下はシンプルなスイッチャーパネルアプリです。
Node-RED モジュール
以下、macOS 上の Node-RED デスクトップアプリ を例に説明します。
Node-RED を起動して右上の「Menu (メニュー)」から「Manage palette (パレットの管理)」を選択すると「User Settings (ユーザ設定)」画面が表示されます。
「Install (ノードを追加)」タブを選択し、検索フォームで「blackmagic」と入力して検索するといくつかリストアップされます。
「blackmagic-atem-nodered」の「install (ノードを追加)」ボタンを押下します。
パレットに新しいノード (BlackMagic / ATEM) が追加されていることを確認します。
サンプルフロー
ATEM mini の入力 1 と 入力 2 を切り替えるシンプルなフローを作成しました。
(サンプルフローはこちらからダウンロードできます。)
![flow_atem_01.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F72479%2Fb19552f5-cd6d-9dbe-b307-667cac6f038d.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=41a0ce1b892d6f9766cbfe68f9ba2f16)
![ATEM_node_01.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F72479%2Fb229802e-369b-e830-dc8e-89965257e6d8.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=9394ea5325b6e6ac52fb271bc6978502)
![ATEM_node_02.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F72479%2F72a30371-5f94-1021-b9c8-8861b4118c86.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=a8cbdca0612c8183f72dd3788f41320f)
ATEM ノードへの入力は function ノードで msg.payload にコマンドとデータを設定するだけです。
他に使用できるコマンドとデータについてはこちらで確認することができます。
それでは、みなさまも良き配信ライフを!