OBS Studio 向けプラグイン StreamFX をソースからビルドした (Windows11) [#Vtuber/あれぐろもると]
最新版の OBS Studio では、ビルド済みの StreamFX の提供がなかったので、以下の環境でソースからビルドしました。
1. Git for Windows のインストール
Git for windows を入れました。下記サイトから最新版の exe ファイルをダウンロードし、展開してインストールしました。
インストール後に Git Bash を開き、初期設定をしました。
2. CMake のインストール
CMake を入れました。下記のサイトから cmake の exe ファイルをダウンロードしました。 exe ファイルはこれ自体が cmake なので、 cmake コマンドをたたいた時に呼ばれるよう C:/Windows/System32 に配置しました。
(この方法は正直おすすめできないので、exe は C:/Users/***/cmake/bin/ などに配置して、システム環境設定から PATH に追加するという方法でやったほうが良いと思います。)
3. Visual Studio 2022 のインストール
Visual Studio Community 2022 をインストールしました。C++ によるデスクトップ開発にチェックを入れてインストールしました。
4. OBS Studio のビルド
obs studio の git リポジトリを clone しました。今回ダウンロードしてきたリポジトリは D: ドライブ直下に置きました。(ほかの場所においてもいいと思いますが、今回は D: ドライブ直下に置いた想定でコマンドを書いていきます。) Git Bash を開き、 D: ドライブに移動しました。
$ cd /d
次に、 obs studio の git リポジトリを --recursive オプションをつけて clone しました。 --recursive オプションをつけないと、このあとの cmake で submodules が足りない旨のエラーが出ます。
$ git clone --recursive https://github.com/obsproject/obs-studio.git
次に、クローンしてきた obs studio を Powershell でビルドしました。まず、 Windows ビルド向けに用意された Powershell スクリプト D:\obs-studio\.github\scripts\Build-Windows.ps1 の16~18行をコメントアウトしました。(コメントアウトとは、このファイルにおいては、行の先頭に # の記号を書いて、実行を無効化することを指します。)
16 #if ( $env:CI -eq $null ) {
17 # throw "Build-Windows.ps1 requires CI environment"
18 #}
Powershell を管理者権限で開きました。このとき PowerShell のバージョンが 7 以上であることを確認してください。 PowerShell 7 は次のページからインストールします。
PowerShell 7 に下記のコマンドを入力し、クローンした obs-studio リポジトリのフォルダーに移動しました。
> cd D:/obs-studio
Powershell の実行ポリシーを変更しました。
> Set-ExecutionPolicy Remotesigned
Windows ビルド向けに用意された Powershell スクリプトを実行しました。
> .github/scripts/Build-Windows.ps1
D:\obs-studio フォルダー内に build_x64 というフォルダーができたことを確認しました。このフォルダーの中にビルド済みの OBS Studio が格納されています。
5. StreamFX のビルド
再度、 Git Bash のほうに戻り、 D: ドライブ直下に StreamFX の git リポジトリを clone しました。このときも --recursive オプションをつけるのを忘れないようにしました。
$ cd /d
$ git clone --recursive https://github.com/Xaymar/obs-StreamFX.git
StreamFX はこのまま Git Bash を使ってビルドしました。(Powershell は使いません。) CMake コマンドを使って、 StreamFX をソースからビルドしました。まず、 cd コマンドで該当のフォルダーに移動してから、 mkdir コマンドでビルドしたものを格納するフォルダーを作成しました。その後、 cmake コマンドでビルドを行いました。
$ cd obs-StreamFX
$ mkdir builds
$ cmake -S . -B builds -Dlibobs_DIR="/d/obs-studio/build_x64/libobs" -Dw32-pthreads_DIR="/d/obs-studio/build_x64/deps/w32-pthreads" -Dobs-frontend-api_DIR="/d/obs-studio/build_x64/UI/obs-frontend-api"
builds フォルダーを開き、StreamFX.sln ファイルを Visual Studio 2022 で開きました。画面上部の Debug になっているところを RelWithDebInfo に変更し、ビルド > ソリューションのビルド を選択してビルドしました。
ビルドによって生成された RelWithDebInfo フォルダー内の StreamFX.dll と StreamFX.pdb ファイルを C:\Program Files\obs-studio\obs-plugins\64bit にコピーしました。また、D:\obs-StreamFX\data 内のデータ effects, examples, locale, thanks.json をすべて C:\Program Files\obs-studio\data\obs-plugins\StreamFX に配置しました。(StreamFX フォルダーは自分で作成する。)
6. OBS Studio での動作確認
D:\obs-studio\build_x64\rundir\RelWithDebInfo\bin\64bit\obs64.exe を開き、 ぼかしフィルタが追加されていることを確認しました。
ぼかしフィルタが正常に動作することを確認しました。
おわりに
環境によってはうまくいかないかもしれないので、もし不都合あれば下記の Twitter アカウントに DM してください。