作り方は後ほど書く。動かした結果を並べて見たら、どうやらRosetta 2で動かすとCPUの使用率は若干高い。メモリ使用率は4倍も高い。やっぱりネイティブで動かした方がいいね。
を参考に、streamfx/source/obs/gs/gs-vertex.hppの #include <xmmintrin.h>
作り方。
注意:自分用メモ。内容は間違っている可能性があるし、人によってはこの方法で動かない場合あり。
あと次の機能が使えない。
- ブラウザソースでハードウェアアクセラレータ
- 一部のVST(x86_64のVST)
Rosetta 2を使わずターミナルを起動
ターミナルを起動。Rosetta 2使うように設定している場合は設定を解除すること。
どちらで動いているか分からない場合は
とコマンドを実行して「arm64」が返ってくればいい。
brewインストール
次のコマンドでbrewをインストール
brewインストール後、念のためにarm64版がインストールされたのか次のコマンドで確認する。
PREFIXが/opt/homebrew
Rosseta 2がfalseになっていればいい。
OBSのビルド方法はいくつかあって、その方法は公式ページに書いてある。
「macOS Full Build Script」「Pre-Built Dependencies」
これらの方法をARMでビルドするようちょっと手を加える。
macOS Full Build Scriptの場合
こっちの方法は必要なファイルのダウンロードからライブラリの依存関係の解決まで全て自動でやってくれるので楽。オススメ。
OBSダウンロード
OBSのソース編集
を参考に、
UI/CMakeLists.txt
libobs/util/platform-cocoa.m
plugins/mac-capture/mac-audio.c
を編集する。
を参考に、
plugins/mac-vth264/encoder.c
を編集する。
ビルドスクリプト
CIフォルダに設置。
ビルド
buildフォルダにOBSのディスクイメージが出来上がるので、それを使ってインストールする。
Pre-Built Dependenciesの場合
こっちの方法はライブラリの依存関係がそのままなので、そのままでは何か環境が変わったり/tmp/obsdepsが消えたりするとOBSが動かなくなるので注意。あとこの方法だとブラウザソースが使えません。
obs-depsをビルド
obs-depsはOBSで使われるライブラリの依存関係を構築およびパッケージ化するためのもの。
macosフォルダに「macos-deps-YYYY-MM-DD.tar.gz」「macos-qt-5.15.2-YYYY-MM-DD.tar.gz」ができるので、これを/tmp/obsdepsフォルダに展開。
OBSダウンロード
OBSのソース編集
を参考に、
UI/CMakeLists.txt
libobs/util/platform-cocoa.m
plugins/mac-capture/mac-audio.c
を編集する。
を参考に、
plugins/mac-vth264/encoder.c
を編集する。
ビルド
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をビルドすると同じような方法で導入できる。
spectralizer
spectralizerが動くか試してみた。
まずはFFTWをインストール。
次のコマンドでspectralizerをビルド&インストール。
obs-multi-rtmp
obs-multi-rtmpが動くか試してみた。次のコマンドでビルドとインストールができた。
obs-ndi
動かない。 次の方法でarm64用プラグインをビルドできるが、NDIのarm64対応ライブラリがないので起動時にエラーが出る。
obs-websocket
obs-websocketが動くか試してみた。次のコマンドでビルドとインストールができた。