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

2021年2月11日木曜日

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


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




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

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スクリプトは動作しないかもしれん)

Xcodeのバージョン確認

OBSをビルドする際に一緒にCEFをビルドするのだが、CEFのビルド要件がXcode12.2なので、Xcodeのバージョンが12.2であることが望ましい。
とかやってXcodeのバージョンを確認すること。
12.2じゃなくてもビルドできるかもしれないが、できないかもしれない。
私が確認した限り、Xcode12.5ではCEFビルド時にエラーが出た。
そういう場合はApple DevelperサイトからXcode12.2をダウンロードしてきて、
Xcode12.2.appなどの名前でアプリケーションフォルダにインストールして、
として、使用するXcodeのバージョンを切り替えてやる必要がある。

OBSダウンロード


ビルドスクリプトのダウンロード

 CIフォルダに設置。

ビルド

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





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

 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」に置き換えれば使えるようになる。

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が動くか試してみた。次のコマンドでビルドとインストールができた。

---
覚書
デフォルトのdmgbuildはx86_64のもの?
which dmgbuildで/usr/local/bin/dmgbuildが返ってきたらそうかも。
そのままではx86_64のpythonを要求される。一度消して
pip3 install dmgbuild で入れ直した方がいい。
---