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
のものと差し替える。
動作確認
作ったら作ったで、どうしても実機で試したくなったので借りてきた。動いた。よかった。 pic.twitter.com/GDoffVxE3X
— kilin (@kilinbox) June 17, 2021