W dniu 2016-04-20 o 23:39, Kamil pisze:
WinDV działa bardzo dobrze. Niedawno użyłem go
do skopiowania 20 taśm DV. Format PAL, czyli 720x576,
50Hz z przeplotem. Nie wygląda to zbyt dobrze
na współczesnym sprzęcie, ale przerobiłem wybrane
nagrania na 720p60. Starannie, tzn. z deinterlacem
wysokiej jakości i interpolacją ruchu pozwalającą
na przerobienie 50fps na 60fps.
Tak wyglądają przerobione filmiki sprzed 16 lat:
https://youtu.be/AjYxHfMZJaU
https://youtu.be/tHiLMcznuR4
(uwaga: nie wszystkie przeglądarki wyświetlają 60fps;
dobrze działa np. Chrome, na innych może być 30fps).
Przerabianie DV na 720p60 jest bardzo skomplikowane.
Ale mam skrypt dla AviSynth, który wszystko robi.
Oczywiście też jest skomplikowany i wymaga mnóstwa
dodatków. Wygląda tak:
# start
# oryginalny film: DV PAL 720x576 50fps z przeplotem
PluginPath = "c:\video\AviSynth\plugins\"
LoadPlugin(PluginPath+"nnedi3.dll")
LoadPlugin(PluginPath+"masktools2-25.dll")
LoadPlugin(PluginPath+"RemoveGrain.dll")
LoadPlugin(PluginPath+"gradfun2db.dll")
LoadPlugin(PluginPath+"AddGrainC.dll")
LoadPlugin(PluginPath+"SmoothDeinterlacer.dll")
LoadPlugin(PluginPath+"mt_masktools-26.dll")
LoadPlugin(PluginPath+"nnedi3.dll")
LoadPlugin(PluginPath+"mvtools2.dll")
LoadPlugin(PluginPath+"nnedi2.dll")
LoadPlugin(PluginPath+"dfttest.dll")
LoadPlugin(PluginPath+"VerticalCleanerSSE2.dll")
LoadPlugin(PluginPath+"nnedi.dll")
LoadPlugin(PluginPath+"FFT3DFilter.dll")
LoadPlugin(PluginPath+"TDeint.dll")
LoadPlugin(PluginPath+"EEDI2.dll")
LoadPlugin(PluginPath+"RepairSSE2.dll")
LoadPlugin(PluginPath+"RemoveGrainSSE2.dll")
LoadPlugin(PluginPath+"SSE2Tools.dll")
Import(PluginPath+"LimitedSharpenFaster.avsi")
Import(PluginPath+"GradFunkMirror.avsi")
Import(PluginPath+"QTGMC-3.32.avsi")
LoadPlugin(PluginPath+"svpflow1.dll")
LoadPlugin(PluginPath+"svpflow2.dll")
LoadPlugin(PluginPath+"mvtools2.dll")
Import(PluginPath+"TempGaussMC_beta2.avsi")
Import(PluginPath+"InterFrame2.avsi")
directshowsource("MojeNagranieDV.avi") # ustawienie źródła
#AssumeTFF()
AssumeBFF()
ConvertToYV12()
QTGMC( Preset="Slow" )
USS(960,720)
Cores=4 # działajmy współbieżnie
SetMemoryMax(512)
InterFrame(Cores=Cores,NewNum=60000, NewDen=1000)
###
### function Ultimate Super Sample : USS()
### by LaTo INV.
###
### Need : nnedi, limitedsharpenfaster, gradfunkmirror, addgrain
###
### USS(input, ox, oy, PP1, PP2, PP3)
### ox = destination width
### oy = destination height
### PP1 = "Limited Sharpen Faster" post-processing
### PP2 = "GradFun2DB" post-processing
### PP3 = "Add Grain" post-processing
###
### Default : USS(last, 1280, 720, 100, 1.2, 5)
###
function USS(clip input, int "ox", int "oy", int "PP1", float "PP2", int "PP3") {
ox = default(ox, 1280)
oy = default(oy, 720)
PP1 = default(PP1, 100)
PP2 = default(PP2, 1.2)
PP3 = default(PP3, 5)
ix = input.width
iy = input.height
scaleX = ceil(float(ox)/float(2 * ix))*2
scaleY = ceil(float(oy)/float(2 * iy))*2
scale = scaleX > scaleY ? scaleX : scaleY
upscale2 = scale > 1 ? input
\ .nnedi3(dh=true,Y=true,U=true,V=true,field=1).turnleft()
\ .nnedi3(dh=true,Y=true,U=true,V=true,field=0).turnright()
\ : input
upscale4 = scale > 2 ? upscale2
\ .nnedi3(dh=true,Y=true,U=true,V=true,field=1).turnleft()
\ .nnedi3(dh=true,Y=true,U=true,V=true,field=0).turnright()
\ : upscale2
upscale8 = scale > 4 ? upscale4
\ .nnedi3(dh=true,Y=true,U=true,V=true,field=1).turnleft()
\ .nnedi3(dh=true,Y=true,U=true,V=true,field=0).turnright()
\ : upscale4
upscale16 = scale > 8 ? upscale8
\ .nnedi3(dh=true,Y=true,U=true,V=true,field=1).turnleft()
\ .nnedi3(dh=true,Y=true,U=true,V=true,field=0).turnright()
\ : upscale8
process = upscale16
\ .LimitedSharpenFaster(ss_x=1.0,ss_y=1.0,strength=PP1)
\ .gradfunkmirror(PP2)
\ .addgrain(PP3,0,0)
output = process.spline36resize(ox,oy)
return output
}
###
P.