AviUtlプラグイン制作入門(作成からビルドまで)

2018年12月2日日曜日

AviUtl AviUtlプラグイン C++ VisualStudioCommunity プログラミング 開発




プラグインを作りたい

最近、AviUtl界隈が盛り上がっていますが、みんなスクリプトを作っています。
でも僕はプラグインを作りたい!
あわよくばバズりたい!


というわけで、初めてなので一ミリもわかりませんが、やってみたいと思います。



使用言語

AviUtlのプラグイン開発において、使用する言語は「C++」です。
ちなみに僕は、C++を触ったことがありません
なので完全初心者。大丈夫かよ。



開発環境を整える

まずは開発環境を整えます。
C++を開発するには、エディダとコンパイラを準備しなくてはいけませんが
今回は統合開発環境の「Visual Studio Community 2017(以下VS Community)」を利用します。


ダウンロード方法ですが、こちらにアクセスして


Visual Studio IDEの「Windows用ダウンロード」から、Community2017を選択すれば、ダウンロードができます。


インストールについては、ここを参照。


インストール時に「C++によるデスクトップ開発」をクリックした後、右側の「インストールの詳細」で


「x86用とx64用のVisual C++ MFC」をクリックして、インストールを行ってください。

2021年9月4日追記
これ不要という報告をもらいました
なんかうまくいかなかったら有効にしてみるとかで良いと思います

VS Communityは統合開発環境なので、自動で構築をやってくれるので非常に便利。
更に有料の「Visual Studio Professional」相当の機能を利用できます。
個人はほとんど制限ないですが、企業はなんか規約あったと思うので
こちらのサイトを参照。


また、AviUtlプラグイン開発に当たり「AviUtl Plugin SDK」が必要になります。
AviUtlのお部屋からダウンロードし、解凍しておいてください。


これでとりあえず開発環境の構築は終わり。



サンプルプラグインで遊んでみよう!

最初は作り方なんてわからないので、既存のプラグインを改造して遊んでみたいと思います。


今回使うのが
AviUtl Plugin SDKの中の
audio_filter.cpp(プラグインソース)
filter.h(ヘッダーファイル)
audio_filter.def(リソースファイル)
です。


ファイル>新規作成>プロジェクト
をクリック。


そうしたら、「Windows デスクトップウィザード」を選択して、下の名前を適当に決めます。
決まったら、右下のOKをクリック


すると「Windows デスクトップ プロジェクト」の設定画面が開くので、
「アプリケーションの種類」を「ダイナミック リンク ライブラリ(.dll)」に設定。

無駄なファイルを生成しないために、「空のプロジェクト(E)」にもチェックを入れて、OKをクリック。

そうすると、マジで空のプロジェクトが立ち上がります。


右側のソリューションエクスプローラーを見ても、空っぽなのがわかると思います。
ですのでここに、ファイルを追加していきます。


ソースファイルを右クリック
追加>既存の項目 をクリック


そしたら、先程解凍した「AviUtl Plugin SDK」の「audio_filter.cpp」を追加


同様に、ヘッダーファイルには「filter.h」、リソースファイルには「audio_filter.def」を追加。


ソリューションエクスプローラーはこんな感じになっているかと思います。
そうしたら、ソースファイルをいじっていきたいと思います!


現在の「audio_filter.cpp」の中身はこんな感じだと思います。
「レベル」という文字をいじってみましょう。


戦闘力に変えておきました。
ちなみに、「レベル」だったところは、AviUtlの数値を設定するところ(見たらわかります)の文字で、下の「戦闘力の調整」というところは、ウィンドウの名前です。


編集できたところで、コンパイルしてみましょう。



コンパイルの設定

ところで、編集中にエラーが出ていることに気づいたでしょうか?


これですね。これ。
これはAviUtl Plugin SDKがマルチバイト文字で書かれているからなんですね。

2021年9月6日追記

これは文字列を代入するときに定義エラーが出ちゃってるんですが、これがあるとエラーでコンパイルできないので、どうにかしたいと思います。

なので、マルチバイト文字に対応させていきましょう。


プロジェクト名(ここではplugins1202)を右クリックし、プロパティを開きます。


まずは、左上の
「構成(C):Debug」となっているところを「すべての構成」に変更しておきます
※画像では変更を忘れています。ごめん。


そしたら、構成プロパティ>全般の
文字セットを「Unicode文字セットを使用する」から「マルチバイト文字セットを利用する」に変更。
MFCの利用を「標準Windowsライブラリを使用する」から「共有DLLでMFCを使う」に変更。


更に、「ターゲットの拡張子」を「.dll」から「.auf」に変更しておきます。
そしたら一旦右下の適用をクリックして保存。OKをクリックして一旦閉じます。


次に、ソリューションエクスプローラーで「audio_filter.def」を選択して


「audio_filter.defファイルのプロパティ」の相対パスをコピー。


そしたらもう一度プロジェクトのプロパティを開きます。


構成プロパティ>リンカー>入力
の「モジュール定義ファイル」に先程コピーした相対パスを貼り付け。
適用をクリックしてから、OKをクリックして閉じます。


今度は、「audio_filter.cpp」のプロパティを開きます。


構成プロパティ>C/C++>コマンドライン
で、追加のオプションに「/Zc:strictStrings-」を設定して、適用。


この設定は、マルチバイト文字をunicodeに強制するコンパイラの機能を無効化するコマンドで、これをしないとエラーでコンパイルできません。

2021年9月4日追記 
なんかこれは違うらしく、Microsoftの公式からの情報によると、「文字列リテラル型の変換を無効にします」ということらしいです

(これ、どのサイトも書いていなかったのでここですごく手こずりました。ざっと1日かかりました。)


OKを押して閉じます。
これでコンパイルのための設定は完了です。



ビルドから完成まで

ビルドとは、プログラムを使用できるようにコンパイルしたりする作業のことです(たぶん)。
これをすることで、AviUtlでこのプラグインが使えるようになります。


といっても
ビルド>ソリューションのビルド
をクリックするだけでできます。


「ビルド:1 正常終了、0 失敗...」になっていれば成功です。
警告がポップアップで表示されるかもしれませんが(実行できませんなど)
拡張子を.aufに変更しているためですので無視して大丈夫です。

ビルドされたファイルは
「C:\Users\[ユーザー名]\source\repos\[プロジェクト名]\Debug\[プロジェクト名.auf]」
に保存されているので、それをAviUtlのPluginsフォルダに入れれば

AviUtlのフィルタオブジェクトの中に



作ったプラグインがあります。


中身はただの音量の調整ですが、ひとまずプラグインを作ることができました。


ちなみに、ビルドした後でも「XXXXX.auf」のファイル名を変更することができるので
お好みの名前に変更して使ってください。


これでプラグインの作り方は終わりです。



参考にしたサイト


ブログ検索

総閲覧数