OBS(Apple Silicon arm64)をビルドする


 せっかくApple Silicon M1チップのMac買ったのでOBSもRosetta 2経由じゃなくてそのまま動かしたいよね。ってことでチャレンジしてみた。
 作り方は後ほど書く。動かした結果を並べて見たら、どうやらRosetta 2で動かすとCPUの使用率は若干高い。メモリ使用率は4倍も高い。やっぱりネイティブで動かした方がいいね。




作り方。
 注意:自分用メモ。内容は間違っている可能性があるし、人によってはこの方法で動かない場合あり。
    あと次の不具合がある。
  • 27.1で追加されたYouTube統合機能が使えない
  • ブラウザソースを追加した状態で音声モニタリングを使うとOBSがクラッシュする&次回からOBSが起動しなくなる
  • x86_64のVSTが認識しない
  • macOS Montereyでブラウザソースを使うとクラッシュする

Rosetta 2を使わずターミナルを起動

 ターミナルを起動。Rosetta 2使うように設定している場合は設定を解除すること。
 どちらで動いているか分からない場合は
 とコマンドを実行して「arm64」が返ってくればいい。

brewインストール

次のコマンドでbrewをインストール

brewインストール後、念のためにarm64版がインストールされたのか次のコマンドで確認する。

PREFIXが/opt/homebrew
Rosseta 2がfalseになっていればいい。

必要なものをbrewを使ってインストール

Python(64-bit universal2)のインストール

/Library/FrameworksにPython.frameworkがあること。
さらにその中のPythonがarm64対応でないとobspython.soを作る所でエラーが出る。
PythonのダウンロードページからmacOS 64-bit universal2版をダウンロード&インストールすること。
(とはいえ、universal2版はpython3.9からの提供で、OBSは現在python3.8対応なので、OBSがビルドできてもpythonスクリプトは動作しないかもしれん)

ビルド (2021.10.05更新)

 buildフォルダにOBSのディスクイメージが出来上がるので、それを使ってインストールする。




もしCEFのビルド部分でエラーが出たらXcodeのバージョン確認

OBSをビルドする際に一緒にCEFをビルドするのだが、CEFのビルド要件がXcode12.2〜12.5なので、自分のXcodeのバージョンもあわせることが望ましい。
とかやってXcodeのバージョンを確認すること。
そういう場合はApple Develperサイトから以前のXcodeをダウンロードしてきて、
Xcode12.2.appなどの名前でアプリケーションフォルダにインストールして、
として、使用するXcodeのバージョンを切り替えてやる必要がある。


ウインドウキャプチャや画面キャプチャが働かない場合

 macOSのセキュリティにひっかかってる可能性あり。システム環境設定の「セキュリティとプライバシー」で何を許可すればいいか分からんと思うので、次のコマンドを実行して出てくるダイアログで許可すればいい。

ブラウザソースの映像が出ない場合

 設定→「詳細設定」から「ブラウザソースのハードウェアアクセラレーションを有効にする」のチェックを外す。

仮想カメラ

 通常配布されているOBS(x86_64版)をインストールした事がある場合、x86_64版の仮想カメラプラグインがインストールされているため仮想カメラが使えない。
 /Library/CoreMediaIO/Plug-Ins/DAL/
 にある「obs-mac-virtualcam.plugin」を削除して
 build/plugins/mac-virtualcam/src/dal-plugin/
 の中にある「obs-mac-virtualcam.plugin」に置き換えれば使えるようになる。

プラグイン対応

arm64に対応したプラグインであれば、今回のOBSでも使うことができる。
ほとんどはソースが公開されているものなので、自分でビルドすれば使えるものが多い。
私が確認したところ、次のプラグインをarm64用にビルドすることで使えた。
  • StreamFX
  • spectralizer
  • obs-multi-rtmp
  • obs-ndi
  • obs-websocket
  • obs-text-pango
  • StreamDeckPlugin
  • move-transition
  • source-record
  • Face Tracker
  • Advanced Scene Switcher

以下、いくつかビルド方法例

StreamFX

 StreamFXが動くか試してみた。そのままじゃビルドできなかったが・・・

 過去に書いたMac用にOBSとStreamFXをビルドすると同じようなようにOBSと一緒にビルドすることで利用できるようになる。

 スタンドアロンビルドができるようにも考えられてはいるが、今のところビルドに必要なバイナリ(obs-studio-arm64-0.0.0.0-macos-64.7z)がまだ用意されていないのでビルドできない。これが用意されたら、おそらく次の方法でスタンドアロンビルドできるようになると思う。

spectralizer

 spectralizerが動くか試してみた。
 まずはFFTWをインストール。
 次のコマンドでspectralizerをビルド&インストール。

obs-multi-rtmp

 obs-multi-rtmpが動くか試してみた。arm64版はここにアップロードしている。
自分でビルドする場合は次のコマンド。

obs-ndi

 動かない。 次の方法でarm64用プラグインをビルドできるが、NDIのarm64対応ライブラリがないので起動時にエラーが出る。
 (2021年3月7日追記)NDI SDK 4.6.2 に arm64対応ライブラリが入っているので、それを使うことで動作する。


obs-websocket

 obs-websocketが動くか試してみた。次のコマンドでビルドとインストールができた。


obs-text-pango

obs-text-pangoが動くか試してみた。次のコマンドでビルドとインストールができた。

source-record

git clone https://github.com/exeldro/obs-source-record.git
フォルダ名を「source-record」にしてOBSソースのpluginsフォルダに移動。
plugins/CMakeLists.txt に add_subdirectory(source-record)
を追記してOBSごとビルド。
packagesbuild ./plugins/source-record/CI/macos/source-record.pkgproj
すれば source-record.pkg ができる。

move-transition

git clone https://github.com/exeldro/obs-move-transition.git
フォルダ名を「move-transition」にしてOBSソースのpluginsフォルダに移動。
plugins/CMakeLists.txt に add_subdirectory(move-transition)
を追記してOBSごとビルド。
packagesbuild ./plugins/move-transition/CI/macos/move-transition.pkgproj
すれば move-transition.pkg ができる。

Face Tracker


Advanced Scene Switcher




---
覚書
デフォルトのdmgbuildはx86_64のもの?
which dmgbuildで/usr/local/bin/dmgbuildが返ってきたらそうかも。
そのままではx86_64のpythonを要求される。一度消して
pip3 install dmgbuild で入れ直した方がいい。
だいたいどれもpkgが作れるようpkgprojを用意してくれているので
packagesbuild ./installer.pkgproj
とかやるとpkgファイルを作ることができる。
---

気になるニュース