ffdshowのフィルタを使う
ffavisynthプラグイン内蔵のffdshowフィルタを使えば、ffdshowのフィルタをAviSynthで利用することができるようになります。
以下の方法を使用するためには、ffdshowのインストール時に、追加コンポーネントとしてffavisynthプラグインを指定し、インストールしておく必要があります。ffavisynthプラグインのインストール方法については、ffavisynthプラグインのインストールを参考にしてください。
ffdshowのフィルタを利用するための手順は、以下の通りです*1。
1.プリセットの作成 †
まず最初に、ffdshowの設定画面で、プリセットを作成します。
1-1.設定画面の起動 †
[スタート]メニュー -> [ffdshow] -> [Video decoder configuration]をクリックして、ffdshowのビデオデコード設定画面を起動します。音声フィルタを使用したい場合は、[Audio decoder configuration]から設定を行ってください。
1-2.新規プリセットの作成 †
[画像の設定](Image settings*2)を選択します
[新規](New)をクリックすると、[Preset name]欄に[default *](*は数字)という名前のプリセット追加されます。
デフォルトのプリセット(default)を使用することも可能です。ただし、その場合は、動画再生プレイヤーでの再生時に、(他のプリセットを適用しない限り)ここで行った設定が適用されてしまいます。動画再生用とは別の設定でフィルタリングしたい場合は、新規プリセットを作成してください。
もし別の名前に変更したいときは、[リネーム](Rename)をクリックして、お好みの名前*3に変えてください。
ここでは、プリセットの名前を hoge という名前に変更したものと仮定します。
1-3.フィルタの設定 †
フィルタの設定を行います。
ここでは、フィルタの適用結果が一目で分かるように、[画質のプロパティ](Picture properties)の[輝度のゲイン](Luminance gain)を最大にしてみました。あくまでも説明用の設定ですので、マネをしないでください。
フィルタを有効にするためには、左のメニューか右の設定画面左上のチェックボックス(上の例では[画質のプロパティ](Picture properties)の左横)にチェックを入れる必要があります。
また、念のために、画面上部のプリセット名が、あなたが変更したいプリセット(ここではhoge)になっているか確認するとよいでしょう。プルダウンメニューで簡単にプリセットを切り換えることも可能です。
フィルタの設定がすべて終わったら、[適用]ボタンをクリックします。
1-4.プリセットの保存 †
プリセットを保存したい場合は、プリセット名を選択した状態で[ファイルに保存する...](Save to file...)をクリックし、適当な名前を付けて保存します。
フィルタの設定を[適用]し、プリセットが[Preset name]欄に登録されていれば、そのプリセットに関する設定は、一時的にレジストリに書き込まれます。そのため、プリセットを保存しなくても、ffdshowのフィルタを利用することは可能です。
2.スクリプトの変更 †
次に、AviSynthのスクリプトを変更します。
例として、ColorBarsフィルタで作成した320x240のカラーバーをソースクリップとして使用し、ffdshowフィルタの使用例を示したいと思います。
ソースとして使用したカラーバーのスクリーンショット。
なお、ffdshowフィルタ(ffavisynthプラグイン)の書式については、ffavisynthを参考にしてください。
2-1.ffavisynthプラグインの読み込み †
ffdshow-20051124.exe以降のffavisynthプラグインは、以下のようにLoadCPluginフィルタを使って読み込む必要があります。詳しくは、ffavisynthを参照。
LoadCPlugin("ffavisynth.dll")
ffdshow-20051124.exeよりも前のffavisynthプラグインは、LoadPluginかプラグインのオートローディングを使って読み込むことができます。
2-2.ffdshow のフィルタを呼び出す関数について †
ffdshow のビデオフィルタを使用したい場合は ffdshow 関数を、ffdshow のオーディオフィルタを使用したい場合は ffdshowAudio 関数を使って呼び出します。
ffdshow(clip, string "preset", string "options")
ffdshowAudio(clip, string "preset", string "options")
いずれの関数も、preset と options の 2 つのパラメータを指定することが可能です。それぞれの指定の仕方については、以下の説明の中で解説します。
2-3.プリセットの適用 †
preset には、適用したいプリセットを指定します。たとえば、上で作成したプリセット(hoge)を適用したい場合、以下のように記述します。
- スクリプト例:
LoadCPlugin("ffavisynth.dll") # ffdshow-20051124.exe以降 ColorBars(320, 240) #ソースクリップ ffdshow("hoge") #プリセットhogeを指定 return last
- スクリプト変更後のプレビュー画面 ソースクリップと比べて、明らかに画面が明るくなっています。
2-4.オプションの指定 †
options を指定することによって、プリセットで指定されているffdshowの各フィルタの値をオーバーライド(上書き)することが可能です。ただし、プリセットで有効化されていない*4フィルタの値を、追加指定することはできません。
2-4-1.オプションの指定例(1): 単一のオプションを指定する場合 †
options は、「名前=値」の形で記述します。たとえば、プリセット hoge の [輝度のゲイン](lumGain)を50に変更したいなら、以下のように記述します。
- スクリプト例:
LoadCPlugin("ffavisynth.dll") # ffdshow-20051124.exe以降 ColorBars(320, 240) #ソースクリップ ffdshow("hoge", "lumGain=50") return last
- スクリプト変更後のプレビュー画面
[輝度のゲイン]の値(プリセットでは256)が50に上書きされたため、画面が暗くなりました。
2-4-2.オプションの指定例(2): 複数のオプションを指定する場合 †
- スクリプト例: 上記(1)例に、[色づけ](Colorize)の強さ(strength)と色の変更*5を追加。
LoadCPlugin("ffavisynth.dll") # ffdshow-20051124.exe以降 ColorBars(320, 240) #ソースクリップ ffdshow("hoge", "lumGain=50,colorizeStrength=128,colorizeColor=16711680") return last
- 複数のオプションを指定する場合の注意:
- カンマ区切りで指定する。
- 各オプションの間に半角スペースを挿入しない。
ffdshow("hoge", "lumGain=50,colorizeStrength=128") # 良い例
ffdshow("hoge", "lumGain=50, colorizeStrength=128") # 悪い例
- スクリプト変更後のプレビュー画面
輝度の変更に加えて、画面全体の色も変化しました。
2-5.オプション名を知る方法 †
オプション指定時に使用する名前(上の例におけるlumGainやcolorizeStrengthなど)を知るためには、現状*6では、レジストリの情報から推測するしかないようです。
2-5-1.レジストリエディタの起動 †
[スタート]メニュー -> [ファイル名を指定して実行(R)]をクリックします。
名前欄に
regedit
と入力し、[OK]をクリックします。
レジストリエディタが起動されました。
2-5-2.プリセットの情報が登録されている場所 †
ffdshowのプリセットの値は、以下の場所に登録されています(上図参照):
HKEY_CURRENT_USER\Software\GNU\ffdshow\(プリセット名)
画面左のメニューから、Windowsのエクスプローラと同様の操作で、プリセットのフォルダに移動することができます。[編集] -> [検索]から、該当するフォルダを検索することも可能です。
2-5-3.オプション名を知るためのヒント †
オプション名を知るためには、デフォルトの(設定を変更していない)プリセットとあなたが作成した新しいプリセットの値を比較するとよいでしょう。
デフォルト(default)のプリセットの場合。
プリセットhogeの場合。
上の2つを比較すると、lumGainの値が異なっています。デフォルトではlumGainの値は128、hogeでは256です。これらの値は、ffdshowの設定画面で行った変更と一致しています。
以上のことから、プリセットhogeで設定した[輝度のゲイン]に対応するオプション用の名前は、lumGainであると推測されます。
*1 2004年12月12日版のCVSビルドを元に解説しています。
*2 このページでは日本語化済みの画像を使用しています。カッコ内は英語メニューの場合の表記です。
*3 日本語名のプリセットの動作については未確認です。余計なトラブルを回避するためには、プリセットの名前は英語にしたほうがいいでしょう。
*4 チェックボックスにチェックが入っていない、設定がoffになっている、など。
*5 16711680を、16進数で表すとFF0000(赤色)。
*6 2004年12月12日版のCVSビルド。