アプリケーション開発ポータルサイト
ServerNote.NET
Amazon.co.jpでPC関連商品タイムセール開催中!
カテゴリー【Windows
OBS StudioとStreamFXをソースコードからコンパイルして使用しぼかしフィルタを適用する
POSTED BY
2023-07-05

画面キャプチャー、動画編集にものすごく便利なオープンソースソフト「OBS Studio」。
動画に様々な効果を入れられるが、「ぼかし」機能についてはプラグイン「StreamFX」を導入しないと使えない。

そのStreamFXはバイナリ完成品の無償提供が終了していることから、今回折角なので、
どちらもオープンソースなわけであるから、ソースコードからコンパイルして導入したのでメモ。

1、必要ソフトウェアのインストール

以下のものが必要になってくる。

Windows PowerShell 7

OBS-Studio最新ソースのバッチファイルは古いPowerShellだと動かない(エラー)ことがある。以下記事等を参照して最新7を導入しておく。

【Windows】PowerShellの最新バージョン7を導入する

以降PowerShellは上記最新7(スタートメニュー→PowerShell(単独)を起動するものとする。

Visual Studio 2022 Community Edition

https://visualstudio.microsoft.com/ja/downloads/

から「Community」「無料ダウンロード」でダウンロード、インストーラ起動。
「C++ によるデスクトップ開発」にのみチェックを入れてインストール実行。

7-zip for Windows

https://7-zip.opensource.jp/

から「ダウンロード」64ビット x64をダウンロード、インストーラ起動&実行。
インストールするだけではダメで「7z」コマンドにパスを通す必要がある

設定→システム→バージョン情報→システムの詳細設定→環境変数→システム環境変数→Path→編集→新規→C:\Program Files\7-Zip

としてPATHを追加し、スタートメニュー→PowerShellを右クリック→管理者として実行し、

7z

と打って、エラーにならなければOK。もしパスが通っていない場合、これから進めるソースコードのコンパイル時に

Invoke-Expression : 用語 '7z' は、コマンドレット、関数、スクリプト ファイル、または操作可能なプログラムの名前として認識
されません。名前が正しく記述されていることを確認し、パスが含まれている場合はそのパスが正しいことを確認してから、再試行
してください。
発生場所 C:\Users\serve\downloads\obs-studio-29.1.2\obs-studio-29.1.2\CI\windows\01_install_dependencies.ps1:83 文字:9
+         Invoke-Expression "7z x vlc_${Version}.zip -ovlc"
+         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (7z:String) [Invoke-Expression], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException,Microsoft.PowerShell.Commands.InvokeExpressionCommand

などと言われ、中断エラーになってしまう。

Git for Windows

OBS Studio本体、StreamFXどちらもGitからソースコードをクローンして持ってくる。ソースのTARアーカイブなどを持ってきても、途中で以下のようなコンパイルエラーが起こってしまう。

-- Configuring incomplete, errors occurred!
cmake -S . -B build64 -G Visual Studio 17 2022 -DCMAKE_GENERATOR_PLATFORM="x64" -DCMAKE_SYSTEM_VERSION="10.0.18363.657"
 -DCMAKE_PREFIX_PATH:PATH="C:\Users\serve\downloads\obs-studio-29.1.2\obs-build-dependencies\windows-deps-2023-04-12-x6
4" -DCEF_ROOT_DIR:PATH="C:\Users\serve\downloads\obs-studio-29.1.2\obs-build-dependencies\cef_binary_5060_windows_x64"
-DENABLE_BROWSER=ON -DVLC_PATH:PATH="C:\Users\serve\downloads\obs-studio-29.1.2\obs-studio-29.1.2/../obs-build-dependen
cies/vlc-3.0.0-git" -DENABLE_VLC=ON -DCMAKE_INSTALL_PREFIX="build64/install" -DVIRTUALCAM_GUID="" -DTWITCH_CLIENTID=""
-DTWITCH_HASH="" -DRESTREAM_CLIENTID="" -DRESTREAM_HASH="" -DYOUTUBE_CLIENTID="" -DYOUTUBE_CLIENTID_HASH="" -DYOUTUBE_S
ECRET="" -DYOUTUBE_SECRET_HASH="" -DGPU_PRIORITY_VAL="" -DCOPIED_DEPENDENCIES=OFF -DCOPY_DEPENDENCIES=ON -DBUILD_FOR_DI
STRIBUTION="OFF"  -Wno-deprecated -Wno-dev --log-level=ERROR exited with non-zero code 1.
発生場所 C:\Users\serve\downloads\obs-studio-29.1.2\obs-studio-29.1.2\CI\include\build_support_windows.ps1:137 文字:9
+         throw "${Command} ${CommandArgs} exited with non-zero code ${ ...
+         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : OperationStopped: (cmake -S . -B b...on-zero code 1.:String) [], RuntimeException
    + FullyQualifiedErrorId : cmake -S . -B build64 -G Visual Studio 17 2022 -DCMAKE_GENERATOR_PLATFORM="x64" -DCMAKE_
   SYSTEM_VERSION="10.0.18363.657" -DCMAKE_PREFIX_PATH:PATH="C:\Users\serve\downloads\obs-studio-29.1.2\obs-build-dep
  endencies\windows-deps-2023-04-12-x64" -DCEF_ROOT_DIR:PATH="C:\Users\serve\downloads\obs-studio-29.1.2\obs-build-d
 ependencies\cef_binary_5060_windows_x64" -DENABLE_BROWSER=ON -DVLC_PATH:PATH="C:\Users\serve\downloads\obs-studio-
29.1.2\obs-studio-29.1.2/../obs-build-dependencies/vlc-3.0.0-git" -DENABLE_VLC=ON -DCMAKE_INSTALL_PREFIX="build64/    i
nstall" -DVIRTUALCAM_GUID="" -DTWITCH_CLIENTID="" -DTWITCH_HASH="" -DRESTREAM_CLIENTID="" -DRESTREAM_HASH="" -DYO    UT
UBE_CLIENTID="" -DYOUTUBE_CLIENTID_HASH="" -DYOUTUBE_SECRET="" -DYOUTUBE_SECRET_HASH="" -DGPU_PRIORITY_VAL="" -D    COP
IED_DEPENDENCIES=OFF -DCOPY_DEPENDENCIES=ON -DBUILD_FOR_DISTRIBUTION="OFF"  -Wno-deprecated -Wno-dev --log-leve    l=ER
ROR exited with non-zero code 1.

https://gitforwindows.org/

から、Download→インストーラ起動。すべてデフォルトのチェックでインストール。

スタートメニュー→PowerShellを右クリック→管理者として実行し、

git

と打って、エラーにならなければOK。

CMake for Windows

https://cmake.org/download/

から、

Windows x64 Installer: cmake-3.26.4-windows-x86_64.msi

を選択・ダウンロード、インストーラ実行。

Add CMake to the system PATH for all users

にチェックを入れて、インストール。

スタートメニュー→PowerShellを右クリック→管理者として実行し、

cmake

と打って、エラーにならなければOK。

2、ソースコードの取得(クローン)と実行ポリシーの変更

ここではホームフォルダのDocumentsを作業フォルダとする。

スタートメニュー→PowerShellを右クリック→管理者として実行し、両ソースを必要なものを再帰的に同時取得するrecursiveオプションをつけてクローンを実行、ソース取得。

cd $HOME/Documents

git clone --recursive https://github.com/obsproject/obs-studio.git

git clone --recursive https://github.com/Xaymar/obs-StreamFX.git

コンパイルの際実行権限が必要になるので、以下のようにポリシーを変更する。

Get-ExecutionPolicy -list

        Scope ExecutionPolicy
        ----- ---------------
MachinePolicy       Undefined
   UserPolicy       Undefined
      Process       Undefined
  CurrentUser       Undefined
 LocalMachine    RemoteSigned

Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass

実行ポリシーの変更
実行ポリシーは、信頼されていないスクリプトからの保護に役立ちます。実行ポリシーを変更すると、about_Execution_Policies
のヘルプ トピック (https://go.microsoft.com/fwlink/?LinkID=135170)
で説明されているセキュリティ上の危険にさらされる可能性があります。実行ポリシーを変更しますか?
[Y] はい(Y)  [A] すべて続行(A)  [N] いいえ(N)  [L] すべて無視(L)  [S] 中断(S)  [?] ヘルプ (既定値は "N"): Y

Get-ExecutionPolicy -list

        Scope ExecutionPolicy
        ----- ---------------
MachinePolicy       Undefined
   UserPolicy       Undefined
      Process          Bypass
  CurrentUser       Undefined
 LocalMachine    RemoteSigned

この変更は、PowerShellを終了する(ウインドウを閉じる)と自動で元に戻るため、手動で戻す必要はない。

3、OBS Studio本体のビルド

最新リポジトリの場合、ビルドバッチファイルはobs-studio/.github/scripts/Build-Windows.ps1となっている。

これを実行してビルドを開始する。

cd $HOME/Documents

obs-studio/.github/scripts/Build-Windows.ps1

コンパイルが無事成功したら、以下のものが生成されているか確認。

C:\Users\serve\Documents\obs-studio\build_x64\rundir\RelWithDebInfo\bin\64bit\obs64.exe
C:\Users\serve\Documents\obs-studio\build_x64\rundir\RelWithDebInfo\obs-plugins
C:\Users\serve\Documents\obs-studio\build_x64\libobs
C:\Users\serve\Documents\obs-studio\build_x64\deps\w32-pthreads
C:\Users\serve\Documents\obs-studio\build_x64\UI\obs-frontend-api

4、StreamFXのビルド

obs-StreamFXフォルダに移動し、ビルドディレクトリbuildsを作る。

cd $HOME/Documents/obs-StreamFX

mkdir builds

続けて、以下cmakeコマンドでビルドファイルを生成する。

cmake -S . -B builds -Dlibobs_DIR="C:\Users\serve\Documents\obs-studio\build_x64\libobs" -Dw32-pthreads_DIR="C:\Users\serve\Documents\obs-studio\build_x64\deps\w32-pthreads" -Dobs-frontend-api_DIR="C:\Users\serve\Documents\obs-studio\build_x64\UI\obs-frontend-api"

終わったらGUIのエクスプローラで上記buildディレクトリを開き、StreamFX.slnファイルをダブルクリックして実行。

Visual Studioに関連付けられていなければ、アプリを選択して開く→Visual Studio 2022として開く。

Visual StudioでStreamFXプロジェクトが読み込まれるので、上セレクトボックスの「Debug」を「RelWithDebInfo」に変更して、
メニューバー「ビルド」→「ソリューションのビルド」を実行する。

5、StreamFXファイルのOBS Studioへの入れ込み

ビルド完了後、

C:\Users\serve\Documents\obs-StreamFX\builds\RelWithDebInfo

にStreamFX.dllはじめ複数ファイルが生成されるので、それらすべてを、

C:\Users\serve\Documents\obs-studio\build_x64\rundir\RelWithDebInfo\obs-plugins\64bit

にコピーする。

さらに、

C:\Users\serve\Documents\obs-studio\build_x64\rundir\RelWithDebInfo\data\obs-plugins

フォルダに、新規フォルダー「StreamFX」を作成する。StreamFXというフォルダ名でないと正常に使えないので注意。
そして、

C:\Users\serve\Documents\obs-StreamFX\data

の中身すべて(effectsなど)を、

C:\Users\serve\Documents\obs-studio\build_x64\rundir\RelWithDebInfo\data\obs-plugins\StreamFX

にコピーして完了。

6、OBS Studioの起動とぼかしフィルタのテスト

C:\Users\serve\Documents\obs-studio\build_x64\rundir\RelWithDebInfo\bin\64bit\obs64.exe

を起動する。ソースからコンパイルした本体が動くのだから、感無量。

ソースで「+」して、適当に「画面キャプチャ」を追加する。そしてすぐ上の「フィルタ」ボタンでフィルタウインドウを開く。

「エフェクトフィルタ」の「+」をクリックすると、「ぼかし」をはじめ、いくつかのStreamFX固有のフィルタが追加されているはずだ。

ぼかしを選択すれば、ぼかしの強さを「サイズ」で、「マスクを適用」でぼかし適用範囲、および範囲境界線にもぼかしを入れられる。

以上です。お疲れ様でした!

※本記事は当サイト管理人の個人的な備忘録です。本記事の参照又は付随ソースコード利用後にいかなる損害が発生しても当サイト及び管理人は一切責任を負いません。
※本記事内容の無断転載を禁じます。
【WEBMASTER/管理人】
自営業プログラマーです。お仕事ください!
ご連絡は以下アドレスまでお願いします★

☆ServerNote.NETショッピング↓
ShoppingNote / Amazon.co.jp
☆お仲間ブログ↓
一人社長の不動産業務日誌
【キーワード検索】