外部プラグインを使う のバックアップ差分(No.7)


  • 追加された行はこの色です。
  • 削除された行はこの色です。
#contents

//**外部プラグインとは?
//外部プラグイン(([[IT用語辞典 e-Words : プラグインとは 【plug-in】 ─ 意味・解説:http://e-words.jp/w/E38397E383A9E382B0E382A4E383B3.html]]))とは、それを利用することによって、AviSynthに新たな機能(多くの場合、ビデオフィルタ)を追加することができるプログラムのことです。
**外部プラグインとは? [#v51ea2b1]
外部プラグイン(([[IT用語辞典 e-Words : プラグインとは 【plug-in】 ─ 意味・解説:http://e-words.jp/w/E38397E383A9E382B0E382A4E383B3.html]]))とは、それを利用することによって、AviSynthに新たな機能(多くの場合、ビデオフィルタ)を追加することができるプログラムのことです。

//AviSynthには、すでに数多くの内蔵フィルタが含まれていますが、外部プラグインを利用することで、その数をさらに増やすことができるようになります。
AviSynth本体にも数多くのフィルタが内蔵されていますが、外部プラグインを使うことで、さらに利用できるフィルタの数を増やすことができます。

//***外部プラグインの拡張子
//AviSynthの外部プラグインの拡張子は、基本的には、dll(([[IT用語辞典 e-Words : DLLとは 【Dynamic Link Library】 ─ 意味・解説:http://e-words.jp/w/dll.html]]))です。
***外部プラグインの拡張子 [#n08dce46]
AviSynthの外部プラグインの拡張子は、基本的に、dll(([[IT用語辞典 e-Words : DLLとは 【Dynamic Link Library】 ─ 意味・解説:http://e-words.jp/w/dll.html]]))です。

//例外として、Lanczos3Resizeプラグイン(lanczos3.vdf)((AviUtl用の[[Lanczos 3-lobed 拡大縮小プラグイン:http://www.marumo.ne.jp/auf/]]のAviSynth移植版。[[Aeternitas Movie:http://aetermv.hp.infoseek.co.jp/]]のアーカイブ倉庫にてミラーされています。AviSynth本体にも、LanczosResizeとLanczos4Resizeという同様のフィルタが内蔵されています。))や[[可変フレームレート出力 for AviUtl:http://www.tenchi.ne.jp/~yoko/aviutl/vfrout/]](itvfr.auf, itvfr_deint.auf)のように、dll以外の拡張子を持つプラグインもあります。
例外として、Lanczos3Resizeプラグイン(lanczos3.vdf)((AviUtl用の[[Lanczos 3-lobed 拡大縮小プラグイン:http://www.marumo.ne.jp/auf/]]のAviSynth移植版。[[Aeternitas Movie:http://aetermv.hp.infoseek.co.jp/]]のアーカイブ倉庫にてミラーされています。AviSynth本体にも、LanczosResizeとLanczos4Resizeという同様のフィルタが内蔵されています。))や[[可変フレームレート出力 for AviUtl:http://www.tenchi.ne.jp/~yoko/aviutl/vfrout/]](itvfr.auf, itvfr_deint.auf)のように、dll以外の拡張子を持つプラグインもあります。

**外部プラグインの入手 [#h19fa9aa]
***外部プラグインの情報 [#o96c10e4]
AviSynthの外部プラグインに関する情報は、[[AviSynth.org:http://www.avisynth.org/]]の[[AviSynthFAQ:http://www.avisynth.org/AviSynthFAQ]]や、当Wiki内の[[外部プラグイン]]のページから知ることができます。

//※ここから下は古い内容。
-[[AviSynth.org:http://www.avisynth.org/]]の[[AviSynthFAQ:http://www.avisynth.org/AviSynthFAQ]](英語)
--[[AviSynth v1.0x/v2.0x用の外部プラグイン:http://www.avisynth.org/Section+3%3A+Filters%2C+plugins+and+colorspaces#q3.4]]
--[[AviSynth v2.5x用の外部プラグイン:http://www.avisynth.org/Section+3%3A+Filters%2C+plugins+and+colorspaces#q3.5]]

**外部プラグインを読み込む方法 [#j8f3a537]
AviSynthでは、[[外部プラグイン]](拡張子 *.dll)を読み込ませることで、さらに多くのフィルタを利用することができるようになります。
-[[外部プラグイン]]

[[外部プラグイン]]を読み込む方法には、次の2つがあります。
これらのページを参考に、各プラグイン作者のサイトなどから入手してください。

+LoadPluginフィルタで読み込む。
+プラグインのオートローディング(自動読み込み)機能を利用する。
***[[AviSynth Filter Collection:http://www.avisynth.org/warpenterprises/]] [#l3c48b35]

**それぞれの方法のメリット/デメリット [#l5e9293a]
***LoadPluginフィルタ [#t434cff2]
-メリット
--オートローディングに伴って発生するおそれのある不具合(([[FAQ>オリジナルFAQ#t2157db2]]を参照。))を回避できる。
-デメリット
--使用したいプラグインの数だけスクリプトを記述しなければならない。
--どのフィルタがどのプラグインを必要とするか把握していなければならない。
また、[[AviSynth Filter Collection:http://www.avisynth.org/warpenterprises/]]には、数多くのプラグインがミラーされています。何らかの事情により、プラグイン作者のサイトにつながらないといった場合には、こちらから入手することができます。

***オートローディング(自動読み込み)機能 [#i0d44278]
-メリット
--オートローディング用のフォルダに外部プラグインを入れておくだけで読み込むことができる。
--必要な時に必要なプラグインが自動で読み込まれる((AviSynthPluginsを参照。))ので、プラグインの読み込みを意識しなくてもよい。
-デメリット
--一部の外部プラグインをオートローディング用のフォルダに入れると不具合が発生する(([[FAQ>オリジナルFAQ#t2157db2]]を参照))。
--AviSynth1.0/2.0用のプラグインを利用するためには、結局、LoadPluginフィルタを使わなければならない(AviSynth2.5の場合)。
-[[AviSynth Filter Collection:http://www.avisynth.org/warpenterprises/]]

#br
**LoadPluginフィルタで読み込む [#f8036ab9]
***説明 [#m65d067b]
AviSynth内蔵のLoadPluginフィルタを使って、手動で[[外部プラグイン]]を読み込みます。
***ダウンロードしたら... [#xf218236]
ほとんどのプラグインは、ZIP形式などに圧縮された状態で配布されています。

[[後述>#l251ade7]]のオートローディングよりも、スクリプトを記述しなければならないぶん、手間はかかりますが、[[オートローディングに伴って発生するおそれのあるトラブル>#cddd7331]]を回避することができます。
ダウンロードしたら、適当な場所に解凍し、あなたのプラグインディレクトリに移動(またはコピー)してください。

[[外部プラグイン]]の入手先については、[[外部プラグイン]]のページを参考にしてください。
プラグインディレクトリの場所は、外部プラグインの読み込み方によって変わってきます。詳しくは、下記の[[外部プラグインを読み込むための2つの方法>#r6fec4d7]]を参照。

[[外部プラグイン]]をダウンロードしたら、(圧縮されている場合は)解凍して、適当な場所に置いてください。AviSynthプラグイン用に新規フォルダを作成して、その中に置くとよいでしょう。
**外部プラグインを読み込むための2つの方法 [#r6fec4d7]
外部プラグインを読み込むための方法には、次の2つがあります。

***書式 [#ka4ea5c6]
 LoadPlugin(string filename)
-引数
--filename: プラグインの名前
+LoadPluginフィルタで読み込む。
+[[プラグインのオートローディング]](自動読み込み)機能を利用する。

***使用例 [#y09b301b]
-「C:\AviSynth\Plugins」にあるhoge.dllを読み込む
 LoadPlugin("C:\AviSynth\Plugins\hoge.dll")
***LoadPluginフィルタで読み込む。 [#q68a90f9]
LoadPluginを参照。

**オートローディングを利用する [#l251ade7]
***オートローディングとは? [#mc1799e3]
AviSynth v2.0.6から、プラグインのオートローディング(自動読み込み)機能が導入されました。~
AviSynthをインストールしたディレクトリ((インストール時に変更していなければ、「C:\Program Files\AviSynth2.5」。))下のpluginsフォルダにプラグインをコピーすると、そのプラグインは自動で読み込まれるようになります。
なお、こちらの方法では、外部プラグインは、任意のフォルダから読み込むことができます。ただし、外部プラグインまでのパスを正確に指定する必要があります。

関数定義ファイル(拡張子 *.avsi)も、オートローディングによって読み込むことが出来ます。
***[[プラグインのオートローディング]](自動読み込み)機能を利用する。 [#sf52e1c6]
[[プラグインのオートローディング]]を参照。

***プラグインフォルダの場所 [#ub16ca12]
#ref(plugin1.png)
pluginsフォルダは、スタートメニューの''[スタート] -> [AviSynth 2.5] -> [Plugin Directory]''から開くことも出来ます。
なお、こちらの方法では、外部プラグインは、オートローディングの対象となるディレクトリに置く必要があります。

***オートローディングを利用するには? [#p9baa367]
#ref(plugin2.png)
オートローディングしたいプラグインをpluginsフォルダにコピーするだけでOKです。
***それぞれの方法のメリット/デメリット [#l5e9293a]
-LoadPluginフィルタ
--メリット
---オートローディングに伴って発生するおそれのある不具合(([[FAQ>オリジナルFAQ#t2157db2]]を参照。))を回避できる。
--デメリット
---使用したいプラグインの数だけスクリプトを記述しなければならない。
---どのフィルタがどのプラグインを必要とするか把握していなければならない。

すでにVirtualDubなどのアプリケーションを起動している場合は、いったん終了させてください。~
次回起動時から、AVSを開く時にプラグインも読み込まれるようになります。
-[[プラグインのオートローディング]]
--メリット
---オートローディング用のフォルダに外部プラグインを入れておくだけで読み込むことができる。
---必要な時に必要なプラグインが自動で読み込まれる((AviSynthPluginsを参照。))ので、プラグインの読み込みを意識しなくてもよい。
--デメリット
---一部の外部プラグインをオートローディング用のフォルダに入れると不具合が発生する(([[FAQ>オリジナルFAQ#t2157db2]]を参照))。
---AviSynth1.0/2.0用のプラグインを利用するためには、結局、LoadPluginフィルタを使わなければならない(AviSynth2.5の場合)。

***オートローディング使用上の注意 [#cddd7331]
一部のプラグインをpluginsフォルダに置くだけで、AviUtlやVirtualDubなどのアプリケーションが強制終了するという問題が報告されています。

この問題は、原因となるプラグインをpluginsフォルダから出すことによって、回避することができます。~
最近pluginsフォルダにコピーしたプラグインがあれば、いったんpluginsフォルダの外に出してみて、問題が起きないかどうか確認してみてください。

問題のプラグインも、pluginsフォルダ以外の場所から、LoadPluginフィルタで読み込めば、問題なく読み込むことができます。

[[オリジナルFAQ]]の[[[AviUtlやVirtualDubが強制終了します。]>オリジナルFAQ#t2157db2]]を参照。

***同じフィルタ(関数)を含むプラグインを使い分ける [#h75bf457]
AviSynth2.5.5から、
 DLLNAME_function()
 (プラグイン名_関数名())
という記述法が、サポートされました。

これにより、pluginsフォルダ内に、同じ名前のフィルタ(関数)を含むプラグインが2つ以上ある場合に、それらのプラグインを明示的に使い分けることができるようになりました。

 # 例1: MPEG2DEC.dllのMPEG2Sourceを使う
 MPEG2DEC_MPEG2Source("Source.d2v")
 
 # 例2: DGDecode.dllのMPEG2Sourceを使う
 DGDecode_MPEG2Source("Source.d2v")

この方法は、オートローディング使用時のみ利用可能です。

***プラグインフォルダに関するレジストリ情報 [#z337ef8e]
オートローディング用のディレクトリは、以下のレジストリに登録されています。

 [HKEY_LOCAL_MACHINE\SOFTWARE\AviSynth]
 "plugindir2_5"="C:\\Program Files\\AviSynth 2.5\\plugins"

このレジストリ情報を変更することで、別のディレクトリをプラグインディレクトリにすることも可能です。~
ただし、レジストリを書き換えると、システムに影響を及ぼす恐れもありますので、よく分からない場合は変更しないでください。