Knowledge for WordPress

Knowledge for Google Products

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


2020年2月18日火曜日

【備忘録】PHP7.2.x --> 7.3.14 へのアップグレード(ソースからコンパイル)

PHP のサポート期間について(バージョンごとの一覧表あり)(Qiita)
をみて、PHP 7.2系ってセキュリティサポートが 2020年11月30日なんだよなぁ、別にもう少し後でもいいけど、PHP 7.4 系も出ているし、まずは PHP 7.3 系にしてみるか!ということでやりました。

ローカル環境ではすでに PHP7.3系と7.4系でテストしているので、管理運用している主要なウェブサイトは影響無いことが分かっています。

とはいえ、前回のようにいきなりPHP 7.0.x --> 7.2.7 へのアップグレードをすると、面倒なことが起こる可能性が高いので、まずは1つだけバージョンをあげるかーという感じです。
をみても、特に影響の大きいものはないはず! とはいえ、ソースからコンパイルするので、エラーなくすんなりインストールは出来なかったのでした。まぁ Openssl を標準では使いたくない!ってことで、nginx や postfixは LibreSSLを組み込んでいることがあるのもややこしいところです。

ソースからコンパイルしてインストール


基本的なところは、 PHP 7.0.x --> 7.2.7 へのアップグレード のときと同じです。
./configure に必要なオプションをつけて、

make ZEND_EXTRA_LIBS='-liconv'
make install

で完了。prefixは /usr/local/php-7.3.14 にしているので
/usr/local/php-7.3.14 以下にインストールされます。この時点では既存の PHPには影響しません。

APCu モジュールのインストールと有効化


今回、これがちょっと面倒でした。

cd /usr/local/php-7.3.14/bin
./pecl install APCu

とインストールしようとすると、前回のとき同様エラーになりました。
ただし前回と違ったのは

WARNING: channel "pecl.php.net" has updated its protocols, use "pecl channel-update pecl.php.net" to update
php: symbol lookup error: /usr/local/php-7.3.14/lib/php/***/openssl.so: undefined symbol: SSL_CTX_set_min_proto_version

というエラーが出たこと。前者は 
pecl channel-update pecl.php.net

として収まりましたが、後者は openssl 絡み(openssl 1.1.0 以上じゃないといけない)なので、そう簡単ではありません。

ということで、前回同様ソースをとってきてインストールすることになりました。

https://pecl.php.net/package/APCu より、5.1.18をダウンロードし

tar -xzvf apcu-5.1.18.tar.gz
cd apcu-5.1.18
/usr/local/php-7.3.14/bin/phpize

のコマンドを実行すると、
Configuring for:
PHP Api Version: 20180731
Zend Module Api No: 20180731
Zend Extension Api No: 320180731
configure.ac:3: error: Autoconf version 2.68 or higher is required
configure.ac:3: the top level

などのエラーがでます。autoconf は yum のパッケージ管理していたので、2.66系なんですよね。仕方がないので、autoconf をソースからインストールすることになりました。

autoconf をソースからインストール


curl -O http://ftp.gnu.org/gnu/autoconf/autoconf-2.69.tar.gz
tar -xzvf autoconf-2.69.tar.gz
cd autoconf-2.69
./configure
./make
./make install

とまぁこんな感じで、/usr/local/bin/autoconf にインストールされます。
yum パッケージのものは /usr/bin/autoconf にあり、PATHの優先度は /usr/local/bin が上なので、autoconf コマンドは /usr/local/bin/autoconf が今後使われることになります。

autoconf -V
autoconf (GNU Autoconf) 2.69

となれば入ってますね。

そして改めて、APCu のインストールです。
apcu-5.1.18 のフォルダに移動し

/usr/local/php-7.3.14/bin/phpize
./configure --enable-apcu --with-php-config=/usr/local/php-7.3.14/bin/php-config
./make
./make install

として、
Installing shared extensions: /usr/local/php-7.3.14/lib/php/*****/
Installing header files: /usr/local/php-7.3.14/include/php/
と出てきたら、インストール出来ていることになります。

次に APCu が php に組み込まれているか確認します。

/usr/local/php-7.3.14/bin/php -m | grep apcu
apcu
と apcu が出力されれば組み込まれています。

これで PHP-7.3.14 はインストールできたので、あとは既存の PHP-7.2.x との入れ替えです。

PHP 7.2.x から 7.3.14 へのアップグレード手順


 PHP 7.0.x --> 7.2.7 へのアップグレード のときと同じです。

自分が利用としている モジュールが組み込まれていることを確認できれば、 php-fpm サービスを停止して、シンボリックリンクの書き換えをした上でサービスを再起動し、ウェブサービスも再起動しておきます。

今回は php-fpmのログをみていましたが、特に PHP-7.3.14にしたことによるエラーはありませんでした。まぁとはいえ単に PHP を使ったサイトにまだアクセスされていないだけの可能性もあるので、まだしばらくチェックが必要だと思いますけどね。

最後に phpmyadmin などを入れているなら、そこで PHPのバージョンが Web上で変更されていることも合わせて確認しておくとよいでしょう。

2020年2月18日 @kimipooh