TSファイルを逆テレシネかけてからSVP4で60fps補間(アニメ視聴環境を整える その3)

題の通りなのだが、ハマったところとかあったので備忘録代わりに記述。

 

avrop50.hatenablog.com

 

この環境から更に更新

使用ハードウェア構成

AMD Ryzen7 2700X @4.0Ghz
・G.skill DDR4-3400 16GB RAM
NVIDIA GeForceGTX1080Ti
ASUS ROG CROSSHAIR VI HERO

使用ソフトウェア構成

・Windows10 1809
・GeForceExperience + GeForce Game Ready Driver 418.91
・LAV Video Decoder 0.72.0
ffdshow rev 4553
・SVP 4.3.0.157
Avisynth+ r2772-MT
・TIVTC v1.0.14
・MPC-BE 1.5.3
・madVR 0.90.24
ソフトウェアはすべて64bit版を使用

SVP4は有料版を購入したがavisynthプラグインを使うだけならフリー版でも問題なさそう。

今回、RadeonからGeForceに鞍替えしたのでBluesky FRC(fluidmotion)が使えなくなった。

そのためSVP4を導入したのだが、Bluesky FRCと同じく、60iのアニメを見ようとすると一定周期でカクつく。

そのため、今回も逆テレシネをかける。

とりあえず以下がavsの中身になった。

SetMemoryMax(6000)
global threads=25
LoadPlugin("C:\Program Files (x86)\SVP 4\plugins64\svpflow1.dll")
LoadPlugin("C:\Program Files (x86)\SVP 4\plugins64\svpflow2.dll")
SetFilterMTMode("DEFAULT_MT_MODE",2)
SetFilterMTMode("SVSuper",1)
SetFilterMTMode("SVAnalyse",1)
SetFilterMTMode("ffdshow_source",3)
SetFilterMTMode("TDecimate",2)
ffdshow_source()
TDecimate(mode=1, hybrid=0)
ConvertToYV12()
global source_width = width
global source_height = height
global crop_string = ""
global resize_string = ""
global super_params = "{scale:{up:0},gpu:1,rc:true}"
global analyse_params = "{block:{w:32},main:{search:{coarse:{type:2,distance:-6,bad:{sad:2000,range:24}},type:2}},refine:[{thsad:250}]}"
global smoothfps_params = "{gpuid:11,rate:{num:5,den:2},algo:2,scene:{}}"
global demo_mode=0
global stereo_type=0
########## BEGIN OF base.avs ##########
# This file is a part of SmoothVideo Project (SVP) ver.4
# This is NOT the full AVS script, all used variables are defined via
# JScript code that generates the full script text.
function interpolate(clip src)
{
input = crop_string=="" ? src : eval("src."+crop_string)
input = resize_string=="" ? input : eval("input."+resize_string)
#MT-MODE-1 #do not remove this line!
super=SVSuper(input, super_params)
vectors=SVAnalyse(super, analyse_params, src=input)
smooth=SVSmoothFps(input, super, vectors, smoothfps_params, mt=threads, src=src)
#MT-MODE-2 #do not remove this line!
return demo_mode==0 ? smooth : demo(input,smooth)
}
input=last
stereo_type==0 ? eval(""" interpolate(input)
""") : stereo_type==1 ? eval("""
lf = interpolate(input.crop(0,0,input.width/2,0))
rf = interpolate(input.crop(input.width/2,0,0,0))
StackHorizontal(lf, rf)
""") : stereo_type==2 ? Eval("""
lf = interpolate(input.crop(0,0,0,input.height/2))
rf = interpolate(input.crop(0,input.height/2,0,0))
StackVertical(lf, rf)""") : input
########### END OF base.avs ###########
Prefetch(threads)

細かいパラメータの意味は以下を参考にされたし。

The list of SVP parameters

 

導入方法としては上記に列挙したソフトウェアをすべてインストール後、MPC-BEを起動する。SVPManagerは起動しない。起動されていたら終了する。

f:id:avrop50:20190215212514j:plain

 

内部フィルターを全て無効化後、外部フィルターに移りこんな順にフィルターを追加する。この順番で、優先するのラジオボタンをすべて選択。

f:id:avrop50:20190215212650j:plain

LAV Video decoderをダブルクリックし設定を開く。

Hardware AccelerationとHardware/GPU Deinterlacingの項目を確認。25/30pになっていること。

適用もしくはOKをクリックし、設定を閉じる。

最後にffdshow raw video filterをダブルクリックし設定を開く。

Avisynthにチェックが入っていること、ffdshowのビデオソースを追加するのチェックが外れていること、入力色空間のチェックがYV12のみになっていることを確認し、画像のようにavsを記述する。

f:id:avrop50:20190215212953j:plain

 

何にハマったのか?

・BlueSky FRCの感覚で使おうとしたら、24fps->60fpsの補間をしているつもりが48fpsになっていた。

->24fpsファイル用の記述に変更することで解決。

・直前までavisynthプラグインのIT.dllで逆テレシネをかけていたがどうも相性が悪くプレイヤーが落ちてしまう現象が発生し、ドツボにはまっていた。

->最初に使っていたTIVTC.dllに戻すことで解決。

 

まあこんな感じでRadeonからGeForceに鞍替えしてもヌルヌルアニメ再生ができた。