-
Notifications
You must be signed in to change notification settings - Fork 10
KFMDeint
Nekopanda edited this page Nov 24, 2018
·
13 revisions
KFMDeint(KFMDeint.avsi)はKFMとKTGMCを使ったインターレース解除フィルタ。
内部で逆テレシネ、QTGMCの補間、シーンチェンジ周辺のフレーム置き換え(DecombUCF)、KTGMC、KSMDegrainを呼んでいる。
KFMDeint(clip src, int "mode", int "pass", string "preset", float "thswitch", bool "ucf", bool "nr", bool "svp", string "filepath", bool "cuda", int "dev", int "threads", bool "show")
- clip src
- ソースクリップ(インターレース)
- int mode = 0
- 処理モード。以下の値が使用可能
- 0: VFR
- 1: QTGMCによる60fps
- 2: KFMによる24fps
- 3: 24/30/60fpsの3クリップモード
- 4: VFR(60fps出力)
- mode=3は、24p,30p,60pの3クリップを返す。(正確には、引数にfpsを渡すと該当クリップを返す関数を返す。)
- 処理モード。以下の値が使用可能
- int pass = 0
- マルチパス使用時のパス。以下の値が使用可能。
- 0: マルチパス不使用。リアルタイムで処理する。mode=0,4は同じ処理となる(60fpsクリップが返る)。
- 1: 逆テレシネパターン解析(mode=0,2,4で使用可能)
- 2: タイムコード生成(pass=1の結果が必要。mode=0,4で使用可能)
- 3: フレーム出力(mode=2ではpass=1の結果が必要。mode=0,4ではpass=2の結果が必要)
- pass=1,2は、KFMDeintの出力クリップの最後までフレームを取得すると、解析結果がファイルに書き込まれる。そのファイルがその次のパスで必要となる。
- マルチパスの利点
- 精度が若干上がる
- 逆テレシネのパターンがなるべく固定される
- VFRタイムコードが出力できる
- マルチパス使用時のパス。以下の値が使用可能。
- string preset = (Height(src) >= 720) ? "Faster" : "Slower"
- Q(K)TGMCのpreset
- float thswitch = 0.5
- 24fps/30fpsと60fpsの切り替えしきい値
- bool ucf = false
- DecombeUCFを有効にするか
- bool nr = false
- KSMDegrainによるノイズリダクションを有効にするか
- bool svp = false
- SVPによるフレーム補間を有効にするか
- Avisynth and Vapoursynth pluginsが必要
- SVPをサポートするのはmode=2または4のみ。mode=2の場合、補完された60fpsクリップが返る
- string filepath = "kfmdeint"
- マルチパス使用時の中間ファイル出力パス。中間ファイル名は以下のようになる( kfmdeint の部分が
filepath
で指定した名前に置き換わる。)- テレシネパターン解析結果(pass=1の出力): kfmdeint.result.dat
- フレーム継続時間(pass=2の出力): kfmdeint.duration.txt
- タイムコード(pass=2の出力): kfmdeint.timecode.txt
- マルチパス使用時の中間ファイル出力パス。中間ファイル名は以下のようになる( kfmdeint の部分が
- bool cuda = false
- CUDAで処理するか
- int dev = 0
- CUDAで処理する場合のGPU番号
- int threads = 6
- CPUで処理する場合のスレッド数
- bool show = false
- 左上に情報を表示する
まず、pass=1を実行(以下のクリップを最後のフレームまで実行する)
LWLibavVideoSource("ソースパス").OnCPU(2)
KFMDeint(mode=0, pass=1, cuda=true)
これで、 kfmdeint.result.datが出力される。 次にpass=2を実行(以下のクリップを最後のフレームまで実行する)
LWLibavVideoSource("ソースパス").OnCPU(2)
KFMDeint(mode=0, pass=2, cuda=true)
これで、 kfmdeint.duration.txtと kfmdeint.timecode.txtが出力される。 次にpass=3でエンコード
LWLibavVideoSource("ソースパス").OnCPU(2)
KFMDeint(mode=0, pass=3, cuda=true)
エンコード結果に kfmdeint.timecode.txtを反映させればVFR化が完了。
LWLibavVideoSource("ソースパス").OnCPU(2)
c = KFMDeint(mode=3, cuda=true)
c(24) # 24fpsクリップ
c(30) # 30fpsクリップ
c(60) # 60fpsクリップ