このエントリーをはてなブックマークに追加

2021年6月15日火曜日

Elgato Stream DeckをOBS(Apple Silicon arm64)で使う


 OBS(Apple Silicon arm64独自ビルド)を使っている人から、「Elgato Stream Deckが使えないんだけど」と言われたので、使えるようにできないか試してみた。

Elgato Stream Deckをインストール(状況確認)

 Elgatoのダウンロードページからアプリケーションをダウンロード、インストール。アプリケーションとOBSプラグインがインストールされる。どちらもIntelアーキテクチャ。
 この状態でOBSを起動してみると、どうやらプラグインのロードに失敗しているっぽい。

streamdeck-obs-pluginのダウンロード

 幸いにもプラグインのソースコードはGitHubで公開されていたので、これをダウンロード。Qt 5.10.1向けのソースらしい。

streamdeck-obs-pluginの一部ファイルを差し替え

 streamdeck-obs-pluginに入っているOBSのライブラリはIntelアーキテクチャのものなので、これをarm64でビルドしたものに差し替える。
 具体的には次のファイルを消して、
  streamdeck-obs-plugin-master/obs-dev/bin/mac/libobs-frontend-api.dylib
  streamdeck-obs-plugin-master/obs-dev/bin/mac/libobs.0.dylib
 OBSをarm64ビルドした時に同じファイルが出来ているはずなので(っていうかOBSの中のFrameworksフォルダ内にもある)これをコピーする。

 さらにヘッダファイルも古いので最新のものにする。
 具体的には次のlibobsフォルダを削除して、
  streamdeck-obs-plugin-master/obs-dev/headers/libobs
 最新のobsのソースにある、libobsフォルダをコピーする。

QT Createrをインストール

 QTのダウンロードページからQTインストーラーをダウンロード。私はオープンソースユーザー向けのものをダウンロードした。
 インストーラーからQTをインストールする。インストールするためにはQTアカウントが必要。持っていないならアカウントを作らないといけない。
 インストールウィザードではインストールする内容を聞いてくるが、たぶんデフォルトのままでいい。

QT5(arm64)をインストール

 今までの手順でQT Createrと一緒にQTもインストールされたがIntel(x86_64)のものなので、ターミナルを使ってHomebrewからQT5(arm64)をインストールする。

QT Createrでarm64でビルドする設定

 Manualの「arm-darwin-generic-mach_o-64bit」に対し、arm64でビルドするための設定を行う。

 [Kits]タブ
 C/C++ Compiler: Apple Clang(arm64)
 QT version: QT 5.xx.x(↑のHomebrewでインストールしたQT5のバージョン)
 QT mkspec: macx-clang-arm64


 [QTバージョン]タブ
 Manualの「QT5.xx.x」に対し、HomebrewでインストールしたQT5を使用するための設定を行う。
 Qmakeのパス: /opt/homebrew/Cellar/qt@5/5.xx.x/bin/qmake

ビルド

ビルドしたら、ビルドフォルダにlibStreamDeckPlugin.soができる。

依存関係の書き換え

このままではビルドしたプラグイン移動したり、Mac環境が変わった時に動かなくなる可能性があるので、依存ライブラリのパスを次のコマンドで書き換える。

インストール

libStreamDeckPlugin.so を StreamDeckPlugin.so という名前に変えて、
/Library/Application Support/obs-studio/plugins/StreamDeckPlugin/bin
のものと差し替える。

動作確認