StreamFX をビルドして使う (Windows)
StreamFX を使いたかったのですが、GPL に引っかかるという理由でビルド済みの形式が提供されていなかったので自分でビルドしました。
誰かの参考になればと思い、備忘録も兼ねて、私がやった方法をメモしておきます。
なお、こちらの方法によって不具合が起きたとしても、当方は責任を取れませんので、ご了承ください。
Standalone ビルド
公式のガイドでは Bundled および Standalone の 2 種類のビルド方法が説明されています。
簡単なのは Bundled の方なのですが、なぜかビルド途中でエラー😓
仕方がないので面倒な Standalone の方を選びました。
必要なもの
以下が必要なため、あらかじめインストールしておきます。
CMake 最新版
Visual Studio 2022 以降 (無料の Community Edition で OK)
Visual Studio Code 最新版
Git for Windows 最新版
PowerShell 7 以降
Visual Studio のインストール時には C/C++ のプロジェクトをビルドできるように、セットアップしてください。(ここでセットアップを間違えても、インストールされる Visual Studio Installer アプリを実行すれば、あとからやり直せます。)
バージョンチェック
互換性の問題が出ないように、OBS Studio と StreamFX のバージョンを合わせます。
まず、現在使用している OBS Studio のバージョンを調べます。私の場合、29.02 (現在の最新版) でした。
StreamFX のバージョンが OBS Studio のどのバージョンに対応しているかは GitHub のリリースページで確認することができます。
OBS Studio 29.02 に対応しているバージョンはベータ版のみでした。OBS 本体の方をダウングレードするのは嫌なので、今回は最新の 0.12.0 Beta 202 にします。
GitHub からソースコードをダウンロードする
OBS Studio、StreamFX 共に、公式のガイドでは最新のソースコードをダウンロードするように書いてあります。
ですが、厳密にバージョンを合わせたいので、特定のコミット (バージョン) を使うようにしたいと思います。
適当な場所にビルド作業用のフォルダを作ります。
ここでは分かりやすいように C ドライブ直下に git という名前のフォルダを作成します。
C:\git
Visual Studio Code を起動し、ターミナルを開きます。
以下のコマンドで作業用フォルダに移動します。
cd C:\git
次に git clone コマンドを使って、ソースコードをダウンロードします。
特定のバージョンをダウンロードするために --branch オプションを指定するのがミソです。
コマンドは以下のようになります。
OBS Studio 29.0.2
git clone --recursive https://github.com/obsproject/obs-studio.git --branch 29.0.2
StreamFX 0.12.0 Beta 202
git clone --recursive https://github.com/Xaymar/obs-StreamFX.git --branch 0.12.0b202
OBS Studio をビルドする
まず先に OBS Studio をビルドします。
OBS Studio それ自体は必要ありません。
ビルド時に生成される副産物が後述の StreamFX のビルドの際に必要になります。
ダウンロードした OBS Studio のフォルダに移動します。
cd C:\git\obs-studio
スクリプトを実行して、OBS Studio のビルドを開始します。
.\CI\build-windows.ps1
ビルド中は進捗が目まぐるしく表示されます。
進捗表示が終わり、入力状態に戻ると、ビルド終了です。
StreamFX のビルドの設定をする
CMake (cmake-gui) を起動します。
[Browse Source…] ボタンを押して、ダウンロードした StreamFX のフォルダを選択します。
選択後、[Where is the source code:] テキストボックスに以下のようなパスが表示されていれば OK です。
C:/git/obs-StreamFX
[Browse Build…] ボタンを押すと、[Browse Source…] ボタンで指定したフォルダが開きます。
まず、"build" という名前のフォルダを作成しましょう。(このフォルダの名前は何でもよいのですが、ここでは "build" という名前にしておきます。)
そして、作成した build フォルダを選択します。
選択後、[Where to build the binaries:] テキストボックスに以下のようなパスが表示されていれば OK です。
C:/git/obs-StreamFX/build
[Configure] ボタンを押します。
コンパイラなどを指定することができるダイアログボックスが表示されますが、何も変えずに [Finish] ボタンを押してください。
その後、途中でエラーになりますが、これは正常な動作です。
ここから、先ほど OBS Studio 本体をビルドしたときにできた副産物のフォルダを指定していきます。
[Search:] テキストボックスに "DIR" と入力してください。
下の画像のように、[Name] / [Value] 欄にエラーになった設定値が赤色でリストアップされます。
ここから一つずつエラーを潰していきます。
とりあえず、libobs_DIR の Value に "C:/git/obs-studio/build64/libobs" と入力して、もう一度 [Configure] ボタンを押してください。
libobs_DIR のエラーが消え、今度は、w32-pthreads_DIR がエラーになったと思います。
w32-pthreads_DIR の Value に "C:/git/obs-studio/build64/deps/w32-pthreads" と入力して、もう一度 [Configure] ボタンを押してください。
w32-pthreads_DIR のエラーが消え、また別の Name / Value がエラーになったと思います。
このようにしてエラーを消していきます。
最終的に下記リストの Name / Value の組み合わせになるよう、設定してください。
なお、リストにはエラーにならない項目も含めています。
エラーにならなくても設定しておいた方がよさそうな項目についても、ここに記載しておきます。
libobs_DIR → C:/git/obs-studio/build64/libobs
w32-pthreads_DIR → C:/git/obs-studio/build64/deps/w32-pthreads
Qt_DIR → C:/git/obs-studio/build64/.qt
obs-frontend-api_DIR → C:/git/obs-studio/build64/UI/obs-frontend-api
FFmpeg_DIR → C:/git/obs-studio/build64/plugins/obs-ffmpeg
エラーが出なくなったら、[Generate] 、[Open Project] の順番でボタンを押します。
成功すると、Visual Studio が起動します。
StreamFX をビルドする
起動した Visual Studio の上側にあるリストボックスで Debug が選択されています。
このリストの値を RelWithDebInfo に変更します。
次に、右側のリストに表示されている StreamFX プロジェクトを右クリックします。
表示されたメニューから「ビルド」を選択して、ビルドを開始します。
ビルド中は進捗が目まぐるしく表示されます。
進捗表示が終わると、ビルド終了です。
dll を OBS Studio のフォルダにコピーする
先ほどのビルドで StreamFX のプラグインファイル (dll) が以下の場所に生成されています。
C:\git\obs-StreamFX\build\RelWithDebInfo\StreamFX.dll
この dll を OBS Studio のプラグインフォルダにコピーします。
通常は OBS Studio のプラグインフォルダは以下のパスになっています。(ただし、OBS Studio のインストール時にカスタマイズしている場合は、この限りではありません。)
C:\Program Files\obs-studio\obs-plugins\64bit
OBS Studio を起動すると、フィルタに StreamFX の項目が追加されています🎉
以上、参考になれば幸いです。