TSファイルを逆テレシネかけてからSVP4で60fps補間(アニメ視聴環境を整える その3)
題の通りなのだが、ハマったところとかあったので備忘録代わりに記述。
この環境から更に更新
使用ハードウェア構成
・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)
細かいパラメータの意味は以下を参考にされたし。
導入方法としては上記に列挙したソフトウェアをすべてインストール後、MPC-BEを起動する。SVPManagerは起動しない。起動されていたら終了する。
内部フィルターを全て無効化後、外部フィルターに移りこんな順にフィルターを追加する。この順番で、優先するのラジオボタンをすべて選択。
LAV Video decoderをダブルクリックし設定を開く。
Hardware AccelerationとHardware/GPU Deinterlacingの項目を確認。25/30pになっていること。
適用もしくはOKをクリックし、設定を閉じる。
最後にffdshow raw video filterをダブルクリックし設定を開く。
Avisynthにチェックが入っていること、ffdshowのビデオソースを追加するのチェックが外れていること、入力色空間のチェックがYV12のみになっていることを確認し、画像のようにavsを記述する。
何にハマったのか?
・BlueSky FRCの感覚で使おうとしたら、24fps->60fpsの補間をしているつもりが48fpsになっていた。
->24fpsファイル用の記述に変更することで解決。
・直前までavisynthプラグインのIT.dllで逆テレシネをかけていたがどうも相性が悪くプレイヤーが落ちてしまう現象が発生し、ドツボにはまっていた。
->最初に使っていたTIVTC.dllに戻すことで解決。
まあこんな感じでRadeonからGeForceに鞍替えしてもヌルヌルアニメ再生ができた。