2020年5月11日月曜日

仮想カメラ OBS-Studio + OBS-VirtualCamプラグイン をソースからインストール方法(Mac編)

OBS-Studio + OBS-VirtualCamプラグインを使えば、下記のように遠隔会議システムで利用するカメラで、映像や画像等メディアリソースを合成して仮想カメラとして見せる方法があるようです。うまく活用すれば、プロジェクタに投影したプレゼン資料を、あたかも講師(本人やアバター等)がその場にいて発表しているような合成ができるかもしれません。
そうしたことにどこまで意義があるかわかりませんが、MacでのOBS-Studio + OBS-VirtualCamプラグインインストールは、私の環境では一筋縄ではいかなかったので、インストールについて備忘録を残します。

インストールの流れ


*OBS-VirtualCamプラグインをインストールするためには、OBS-Studio本体もソースからビルドする必要があるようです。試しにバイナリの OBS-Studioに組み込もうと思いましたが、うまくいかず。
基本的には、OBS-VirtualCamプラグイン(Mac版)が置いてある GitHubの Building の通りに進めます。ただし途中でエラーになったりしてうまくいかない場合があります。どういうエラーに遭遇して、どのように解決したのかも含めて説明していきます。

STEP 1. 準備


インストールに必要な、コマンドツール、コンパイルシステムのインストールが必要です。いずれもターミナルアプリ(Macintosh HD > ユーティリティ内)上で操作します。それぞれ参考先のサイトを参考にインストールしてみてください。

1. Homebrew のインストール(Xcode内のコマンドツールも自動的に入る)


2. Git ツールのインストール


STEP 2. OBS-Studio のイントール

以下、青文字の部分が、ターミナルで実行するコマンドです。
これを入れてEnterをプッシュすることになります。
$HOME(/Users/ユーザ名)以下に
obs-studio
フォルダを作って、その中にインストールすると仮定します。

cd $HOME
git clone --recursive https://github.com/obsproject/obs-studio.git
brew install FFmpeg x264 Qt5 cmake mbedtls swig

=== (エラー1)以前から Homebrew を使っていた場合 ===
Error: Permission denied @ apply2files - /usr/local/lib/pcsc/drivers/scmccid.bundle
これは、brew cleanup でエラーがでて途中で止まっています。
https://github.com/Homebrew/homebrew-core/issues/45009 を参考に解決しました。

brew doctor
と診断すると、いろいろ出てきて
Warning: Broken symlinks were found. Remove them with `brew cleanup`:
  /usr/local/lib/pcsc/drivers/scmccid.bundle
という今回のエラーに関係するところが出てきます。

sudo rm  -rf  /usr/local/lib/pcsc/drivers/scmccid.bundle
brew cleanup
でエラーがでないことを確認した上で、改めて
brew install FFmpeg x264 Qt5 cmake mbedtls swig 
でエラーがでないことを確認
========================================

mkdir build
cd build
export QTDIR=/usr/local/opt/qt
cmake .. && make -j

STEP 3. OBS-VirtualCamプラグイン のインストール


$HOME/obs-mac-virtualcam フォルダにインストールされます。

git clone https://github.com/johnboiles/obs-mac-virtualcam.git
cd obs-mac-virtualcam
export OBS_DIR=$PWD/../obs-studio
mkdir build
cd build
cmake -DLIBOBS_INCLUDE_DIR:STRING=$OBS_DIR/libobs -DLIBOBS_LIB:STRING=$OBS_DIR/build/libobs/libobs.dylib -DOBS_FRONTEND_LIB:STRING=$OBS_DIR/build/UI/obs-frontend-api/libobs-frontend-api.dylib -DQTDIR:STRING=/usr/local/opt/qt ..
make -j

=== (エラー2)すでに XCodeをインストールしていた場合 ===
3 warnings generated.
make[1]: *** [src/obs-plugin/CMakeFiles/obs-plugin.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
[ 98%] Built target dal-plugin
make: *** [all] Error 2
'bootstrap_create_server' is deprecated: first deprecated in macOS 10.10

新しいバージョンのXCode にアップデートされていて、一度も Xcodeを開いていない場合に上記エラーになる場合があります。一度アプリケーションフォルダにインストールされている XCodeを開くと、command components 追加を要求してくると思うので、これをインストールします。もし求められなければ、ターミナルより
sudo xcodebuild -runFirstLaunch
を入力して、インストール画面をだしましょう。

そして
make -j
を再度実行します。
========================================

=== (エラー3)下記のエラーになってしまった場合(make -j) ===
make[2]: *** No rule to make target `../../obs-studio/build/libobs/libobs.dylib', needed by `src/obs-plugin/obs-mac-virtualcam.so'.  Stop.
make[1]: *** [src/obs-plugin/CMakeFiles/obs-plugin.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
[ 63%] Built target dal-plugin
make: *** [all] Error 2

cd $HOME/obs-studio/build
make -j

と再度、OBS-Studio をコンパイルしましょう。

cd $HOME/obs-mac-virtualcam
cd build
make -j

と改めて実行してエラーがでないことを確認します。
========================================

最後に、ビルドできたOBS-VirtualCamプラグインを本体のほうへコピーします。
$OBS_DIR は、すでに
*export OBS_DIR=$PWD/../obs-studio
と環境変数として、 $OBS_DIR は、$HOME/obs-studio のフォルダを指しています。

cp src/obs-plugin/obs-mac-virtualcam.so $OBS_DIR/build/rundir/RelWithDebInfo/obs-plugins/
sudo rm -rf /Library/CoreMediaIO/Plug-Ins/DAL/obs-mac-virtualcam.plugin && sudo cp -r src/dal-plugin/obs-mac-virtualcam.plugin /Library/CoreMediaIO/Plug-Ins/DAL

これでインストールは完了です。

STEP 4. 実行してみる


cd $HOME/obs-studio/build/rundir/RelWithDebInfo/bin
./obs

でウィンドウが立ち上がり、ツールにある Start Virtual Camera を選択すると、Stop Virtual Camera に切り替わって起動しているか確認します。

→ 

実際の使い方については冒頭に挙げた
あたりを参考にしてみてはと思います。

2020年5月11日 @kimipooh