AviUtlプラグイン作成


方針など

AviUtlプラグインを作成するにあたって参考になる情報ならなんでも。

注意

今のところこのページを書いているのは、公開されていたフィルタプラグインのソースを微改変してBCCでビルドしてみたら一応動くプラグインが作成できて胸をなでおろしたという、プログラミングに疎い本Wiki管理人のみであり、各プラグイン作者様のサイトを巡るうちにプラグイン作成に関係していそうだと思った情報をまとめているだけに過ぎません。間違いを書いているかもしれない点をご留意ください。

コメント

更新情報、抜け、御意見などありましたらお願いします。

  • フェードインやフェードアウトなど透過率が変化する透過性ロゴのゴロ消しで、 自動で透過率を調整する機能を持ったロゴ消しプラグはないかいな? -- 2012-11-18 (日) 17:46:47
  • <あなたも、プラグイン作ってみません?>コーナー -- 2015-02-12 (木) 19:33:22
  • 自動で透過率を調整する機能を持った ←「透過性ロゴ(改)」で検索! -- 2018-05-09 (水) 13:42:02
  • 自動で透過率を調整する機能を持った ←「透過性ロゴ(改)」で検索! -- 2018-05-10 (木) 10:28:00
  • WMV出力プラグイン plus -- 2019-12-24 (火) 17:05:00

基本情報

  • AviUtlプラグインの拡張子である「.auf」「.aui」「.auo」「.auc」「.aul」は、「.dll」をリネームしただけのもの。 プログラミングで「〜.dll」を作成し、それをリネームすることで完成。
  • プラグインを置くフォルダ(ディレクトリ)は、aviutl.exeのあるフォルダか、そのフォルダ内にユーザーが作成した「plugins」フォルダ内(?)。 (AviUtl付属テキストに「プラグインはPluginsディレクトリに入れたときのみ1つ下のディレクトリまで参照します。」とある。また「フィルタープラグインの最大数は96個までです。」ともあるが、導入プラグインが多い人ほどPluginsフォルダ内に置いた方が管理しやすいのではないか。) どちらのフォルダでも動作するように作るのが望ましいと思われる。
  • AviUtl本体内部の詳細な情報?は、作者サイトでは特に公開されていない。
  • AviUtlの一番の特徴と思われるのが、内部の色情報の保持に「Pixel YC」という独自フォーマットを採用して、32bitRGBや8bitYUV4:4:4等の情報も無劣化で(?)変換して格納している点(「AviUtl Plugin SDK」内の「filter.h」等や後述の解説サイトを参照)。この「Pixel YC」に対応したプラグイン作成が望ましいと思われる。
    • この「Pixel YC」はデータ量が多いため、YUY2のまま処理をする他のソフトと比較するとどうしても処理に時間がかかる。この点に対処するために用意されたと思われるのが「YUY2フィルタモード」。しかし各フィルタプラグイン(.auf)が「YUY2フィルタモード」に対応していないと使えず、対応させるのにはひと手間かかるうえ、作者自身、
      YUY2フィルタモードについてはAviUtlの正式な機能ではなく
      テスト的なおまけ機能として考えていますので
      試してみたい人のみ対応させてください。
      と書いていて、機能自体の先行きが不明なこともあってか、対応しているフィルタプラグインはごくわずか。「YUY2フィルタモード」に対応させるよりは、他の高速化(CPU高速化命令、マルチスレッド、GPU利用など)に対応した方が、フィルタプラグインとして利用されやすいはず。
  • プラグインの本体対応Ver.については、本家サイトで配布されている「AviUtl Plugin SDK」内の各プラグインに対応したファイルの冒頭の記載が参考にできると思われる(ソースの記述と#includeで取り込んでいるヘッダーファイルの記述とで、Ver.の新しい方以降に対応)。
    • 以下、参考(aviutl_plugin_sdk(0.99i4以降、20100222版)より)
      (2003-08-16更新)jp_resource.rc
      サンプル日本語リソース(言語拡張リソース) for AviUtl ver0.99
      (2009-05-30更新)color.h
      色変換プラグイン ヘッダーファイル for AviUtl version 0.99h 以降
      (2009-06-14更新)yuy2_color.cpp(#include "color.h")
      サンプルYUY2色変換プラグイン(色変換プラグイン) for AviUtl ver0.99h以降
      (2008-03-16更新)input.h
      入力プラグイン ヘッダーファイル for AviUtl version 0.99d 以降
      (2002-05-03更新)avi_input.cpp(#include "input.h")
      サンプルAVI(vfw経由)入力プラグイン for AviUtl ver0.98以降
      (2009-01-24更新)output.h
      出力プラグイン ヘッダーファイル for AviUtl version 0.99g4 以降
      (2008-05-27更新)bmp_output.cpp(#include "output.h")
      サンプルBMP出力プラグイン(出力プラグイン) for AviUtl ver0.98以降
      (2010-02-13更新)filter.h
      フィルタプラグイン ヘッダーファイル for AviUtl version 0.99i4 以降
      (2000-10-19更新)audio_filter.cpp(#include "filter.h")
      サンプルオーディオフィルタ(フィルタプラグイン) for AviUtl ver0.96c以降
      (2002-05-03更新)importexport_filter.cpp(#include "filter.h")
      サンプルIMPORT&EXPORTプラグイン(フィルタプラグイン) for AviUtl ver0.96c以降
      (2002-07-23更新)disp_filter.cpp(#include "filter.h")
      サンプル表示プラグイン(フィルタプラグイン) for AviUtl ver0.98c以降
      (2002-07-24更新)loupe_filter.cpp(#include "filter.h")
      サンプル表示プラグイン(フィルタプラグイン) for AviUtl ver0.98c以降
      (2007-11-02更新)yuy2_filter.cpp(#include "filter.h")
      YUY2フィルタモード対応サンプルフィルタ(フィルタプラグイン) for AviUtl ver0.99a以降
      (2008-05-22更新)multithread_filter.cpp(#include "filter.h")
      マルチスレッド対応サンプルフィルタ(フィルタプラグイン) for AviUtl ver0.99a以降
      (2008-07-25更新)video_filter.cpp(#include "filter.h")
      サンプルビデオフィルタ(フィルタプラグイン) for AviUtl ver0.99e以降
      (2009-06-25更新)interlace_filter.cpp(#include "filter.h")
      サンプルインターレース解除プラグイン for AviUtl ver0.98以降
      (2009-09-13更新)edit_filter.cpp(#include "filter.h")
      サンプル編集プラグイン(フィルタプラグイン) for AviUtl ver0.99i以降
  • AviUtl本体の作者であるKENくん氏が作成している、『AviUtlで複数の映像、画像、テキスト等を任意の場所に表示したり、フィルタを任意の場所に指定したりすることが出来る「拡張編集プラグイン」』上でも動作するフィルタプラグインを作成したい場合、以下の記述に注意(「拡張編集プラグインversion 0.87」付属txtより)。
    また、下記の条件のフィルタは扱えません。
    	◇トラックバーが 32 個を超えるもの
    	◇チェックボックスが 16 個を超えるもの
    	◇フィルタの名前が 63 バイト以上のもの
    	◇拡張データ領域が 1024 バイトを超えるもの
    	◇func_proc が無いもの
    	◇下記のフラグを使用しているもの
    	  FILTER_FLAG_DISP_FILTER,
    	  FILTER_FLAG_INTERLACE_FILTER
    	  FILTER_FLAG_CONFIG_POPUP
    	  FILTER_FLAG_CONFIG_CHECK
    	  FILTER_FLAG_CONFIG_RADIO
    	  FILTER_FLAG_RADIO_BUTTON
    	  FILTER_FLAG_WINDOW_HSCROLL
    	  FILTER_FLAG_WINDOW_VSCROLL
    (リサイズ処理系のフィルタはこの条件に引っかかってしまっている場合が多いのか、拡張編集プラグイン上で扱えるものは少なく感じました)

プラグイン作成の参考になるサイト


AviUtlのお部屋

まずは本家。こちらの「AviUtl Plugin SDK」は必須。

MakKi's SoftWare

2009-01-24に公開された文書「AviUtlの内部形式について」は必読(dgwxx氏による和中(?)翻訳(仮?):关于AviUtl内部颜色格式も現れました)。「Pixel YC」を含めた内部処理について詳細にまとめられている。

永遠に工事中

AviUtlプラグインの作り方で、画像処理(プログラミング)を主軸にフィルタ作成の解説。「Microsoft Visual Studio.NET」「MinGW(gcc)」「Borland C Compiler」「Visual C++ Toolkit 2003」など各種開発環境も念頭に書かれている(?)。

以下、開発環境で大まかに分類。

MinGW系

ごみ置き場

MinGWでAviUtlプラグイン作成で、“完全フリーのWindows用の(最低限の)プログラミング開発環境”であるMinGWでのAviUtlプラグインのビルドまでを解説。「おまけ」として「YUY2とPIXEL_YC(AviUtlの内部ピクセルフォーマット)の相互変換」も書かれている。


BCC(Borland C++ Complier)系

まるも製作所

日々の戯言 2001年9月に、「BCC (Borland C++ Complier)を用いたM4Cの作り方」が書かれている(M4Cという出力プラグインは…サイト内で検索してください)。MMXやSSEの最適化にも踏み込んでいる?

BCCでプログラムを作ろう

BCC(Borland C++ Complier)でのプログラミングの解説で、管理人が初めに検索して参考にしたページ。AviUtlプラグイン解説に特化されているわけではないが、ちょうどDLL作成まで触れられているので一応。

Microsoft系(?)

まるも製作所

日々の戯言 2005年1月に、「VC.NET での拡張 AVI 出力ビルド方法」と称してVC.NET 系での AviUtl 用プラグインのプロジェクト作成方法が書かれている。


にゃんこ印のwebサイト

AviUtlのプラグインフィルタをデバッグに以下のような説明あり。

AviUtlの自作プラグインを作る際にデバッグできないと大変なのでその方法をチョロっと紹介。VisualStudio2005(VisualC++)での方法です(今更2005?・・)。っていうか半分ジブン用メモ。自己流なのでホントは もっと良い方法や しておいた方がよい設定 などがあるに違いない・・・。

AviUtl オリジナルプラグイン公開サイト

ビルド/とりあえずにて、Visual C++ 2008 Express Edition などの開発環境でのビルド体験。またメモにて「MTオプション」「SSE2」などの小ネタ集あり。

その他

Kiraru2002's RoomWebArchive

<あなたも、プラグイン作ってみません?>コーナーWebArchive)にて、AviUtlではなくAviSynthのプラグイン作成手順例が書かれている。AviUtl向けではないものの、AviSynthも動画を扱うソフトのためか映像フォーマット自体の解説などもあって、AviUtlプラグインを作成するにあたっても参考にできる部分が多い。

以上で紹介したページだけでなく、ソースが公開されている各種AviUtlプラグインも大いに参考になると思います。

メニュー

AviUtlプラグイン

AviUtlマニュアル

更新履歴

最新の30件

2020-11-23 2020-07-23
  • AviUtlプラグイン作成
2017-04-27 2011-01-12 2010-12-16 2016-09-04 2010-12-16 2016-07-01 2011-01-12 2010-12-16 2011-01-22 2011-01-12 2010-12-27 2016-11-27 2016-09-04 2015-12-24 2014-07-25 2014-07-20 2014-07-18 2014-07-14 2014-03-26 2014-03-09 2014-02-17 2014-02-15 2013-08-24 2013-07-08 2013-02-28

  • counter: 24245
  • today: 5
  • yesterday: 5
  • online: 2