特定の範囲にフィルタをかける

以下のような方法を使えば、特定の範囲のフレームだけにフィルタをかけることができます。

ApplyRangeフィルタ

AviSynth内蔵のApplyRangeフィルタを使用する方法です。AviSynth 2.5.1以降のバージョンで利用できます。

詳しくは、ApplyRangeのページを参考にしてください。Animateフィルタのページも参照。

Trimフィルタを利用する

Trimフィルタを利用して、特定の範囲のフレームにフィルタをかけることができます。以下のような手順で行います。

  1. Trimフィルタを使って、フィルタをかける範囲とかけない範囲に分割します
  2. フィルタをかけたい範囲にだけフィルタをかけます。
  3. 演算子+(またはSplice)で、分割したクリップを結合しなおします。
  • 例1(300フレームあるクリップの100-199フレームにのみフィルタをかける)
    c1 = Trim(0, 99)
    c2 = Trim(100, 199).ColorYUV(cont_u=1,cont_v=1) #この範囲にフィルタをかける
    c3 = Trim(200, 299)
    c1 + c2 + c3
  • 例2(先頭から99フレームまでにのみフィルタをかける)
    c1 = Trim(0, 99).ColorYUV(cont_u=1,cont_v=1) #この範囲にフィルタをかける
    c2 = Trim(100, 299)
    c1 + c2
  • 例3(200フレームから最終フレームまでにのみフィルタをかける)
    c1 = Trim(0, 199)
    c2 = Trim(200, 299).ColorYUV(cont_u=1,cont_v=1) #この範囲にフィルタをかける
    c1 + c2

FilterRange関数

ユーザー定義関数のFilterRangeを利用すれば、指定範囲にフィルタをかけることができるようになります。この関数は、上記のTrimフィルタを利用するで紹介した方法を、1つにまとめたものであると言うことができます。

詳しくは、作者のサイト、および、当サイトのFilterRangeのページを参照。

JDL_ApplyRange関数

JDL_ApplyRangeは、jdl-range.avsiの中に含まれています。jdl-range.avsiには、他にも、クリップ内のある範囲で動作する関数が含まれています。

  • 使用例
    Import("jdl-range.avsi") #オートローディングしたときは不要
    Import("jdl-util.avsi") #オートローディングしたときは不要
    JDL_ApplyRange(123, 456, "ColorYUV(cont_u=1,cont_v=1)")

JDL_ApplyRangeでは、jdl-util.avsiに含まれる関数も使われています。そのため、jdl-range.avsiだけでなく、jdl-util.avsiも必要になります。*1

FilterRangeExプラグイン(ApplyRangeEx/FilterRangeEx)

  • 説明: FilterRangeExプラグインには、ApplyRangeExとFilterRangeExという2つのフィルタが収録されています。これらのフィルタは、ApplyRangeとFilterRangeの機能を拡張したもので、複数の指定範囲にフィルタを適用することができます。また、「両者の違いは、フィルタの指定文字列に、パラメタ値と共に指定するか、別に指定するか」にあります。
  • 作者: kiraru2002
  • URL: アーカイブを参照。

FilterRangeEx関数

FilterRangePlus関数

HowToApplyFilterToManySingleFrames

ConditionalFilterとConditionalReaderを組み合わせて、たくさんのフレームや範囲にフィルタを適用する方法。HowToApplyFilterToManySingleFrames、およびHowToApplyFilterToManySingleFrames - にーやんのブログ 2を参照。


*1 拡張子がavsiのファイルは、オートローディング用のpluginsフォルダに入れると、自動的に読み込まれます。オートローディングについては、外部プラグインを使うを参照。

最終更新日時: 2014-03-12 (水) 23:56:03 (2018d)