見出し画像

OBS Studio 向けプラグイン StreamFX をソースからビルドした (Windows11) [#Vtuber/あれぐろもると]

最新版の OBS Studio では、ビルド済みの StreamFX の提供がなかったので、以下の環境でソースからビルドしました。

ビルド環境は以下の通りです。
* Windows11 (SDK 10.0.22621.755)
* OBS Studio 29.0.0-354-g3eab47721
* StreamFX 0.12.0


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 #}

補足:
コメントアウトするのは、このスクリプトが本来 GitHub での自動テスト用に書かれたコードであるためです。 GitHub 上での実行環境であるかどうかをチェックする部分を無効化して使用します。

Powershell を管理者権限で開きました。このとき PowerShell のバージョンが 7 以上であることを確認してください。 PowerShell 7 は次のページからインストールします。

PowerShell 7 に下記のコマンドを入力し、クローンした obs-studio リポジトリのフォルダーに移動しました。

> cd D:/obs-studio

Powershell の実行ポリシーを変更しました。

> Set-ExecutionPolicy Remotesigned

Windows ビルド向けに用意された Powershell スクリプトを実行しました。

> .github/scripts/Build-Windows.ps1

注意:
ここで The obs-studio PowerShell build script requires PowerShell Core 7. Install or upgrade your PowerShell version: https://aka.ms/pscore6  というエラーが表示された場合は、 PowerShell のバージョンが古いです。 バージョン 7 以上の PowerShell で実行してください。

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"

cmake コマンド解説:
* -S オプション: ビルド対象のフォルダーを指定します。 CMakeLists.txt があるフォルダーです。
* -B オプション: ビルドによって生成されるファイルを保存するフォルダーを指定します。
* -D オプション: 今回の CMakeLists.txt に必要なフォルダーの PATH を設定しています。これらのフォルダーは 手順 4 によって生成されたものです。

builds フォルダーを開き、StreamFX.sln ファイルを Visual Studio 2022 で開きました。画面上部の Debug になっているところを RelWithDebInfo に変更し、ビルド > ソリューションのビルド を選択してビルドしました。

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 してください。


この記事が気に入ったらサポートをしてみませんか?