eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.rec.foto.cyfrowaFilm poklatkowy › Re: Film poklatkowy
  • Data: 2018-05-19 18:32:07
    Temat: Re: Film poklatkowy
    Od: Piotrne <p...@p...onet.pl> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    W dniu 2018-05-19 o 14:51, Krzysztof Halasa pisze:

    > W każdym razie generalnie lepiej zostawić materiał w formacie, w jakim
    > jest, i wszelkie operacje przeprowadzać dopiero podczas wyświetlania -
    > nie trzeba wtedy robić zmiany szybkości (obecny sprzęt potrafi zwykle
    > pracować z dowolną szybkością wyświetlania), potrzebny jest tylko
    > deinterlacing z podwojeniem FPS + (tylko jeden) upscaling.

    Oczywiście oryginalnego materiału nie niszczę. Do oglądania na telewizorze
    nadaje się bardzo dobrze. Ale po wysłaniu takiego nagrania na YouTube
    zauważalnie spada jakość: przeprowadzana jest bardzo prosta konwersja
    na 30 fps przez powielanie niektórych ramek (czasem w dziwny, nierównomierny
    sposób) i obraz jest pomniejszany do 480 linii. Jedyne rozwiązanie
    to przerobienie filmu lepszymi metodami przed wysłaniem.

    Przy poprawnej konwersji 50 fps -> 60 fps "cienie" nie powstają.
    To nie jest nakładanie / przenikanie sąsiednich kadrów, tylko wykrywanie
    ruchu obiektów i generowanie pośrednich obrazów przez wyznaczenie
    pozycji obiektów w "międzyczasie". Wykorzystywane są m.in. te same
    biblioteki, co przy stabilizacji drgań obrazu na podstawie analizy
    jego treści. Przy prawidłowym wykrywaniu ruchu możliwe jest dowolne
    zwiększanie fps.

    Poniżej - skrypt dla AviSynth wykonujący konwersję PAL -> 720p60.
    Znalazłem kiedyś tutaj:
    http://forum.doom9.org/archive/index.php/t-138285.ht
    ml
    i uzupełniłem o ładowanie niezbędnych pluginów (których trzeba poszukać
    samodzielnie):

    # start
    # oryginalny film: DV PAL 720x576 4:3 50fps z przeplotem (interlaced)
    # docelowy: 720p60 (720 linii, 4:3, 60 fps bez przeplotu)
    PluginPath = "c:\Programy\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("Naganie_PAL_z_kamery_DV.avi")
    #AssumeTFF()
    AssumeBFF()
    ConvertToYV12()
    QTGMC( Preset="Slow" )
    USS(960,720)
    #Addborders(160,0,160,0)
    #USS(1280,720)
    Cores=2
    SetMemoryMax(512)
    #SetMTMode(3,Cores)
    InterFrame(Cores=Cores,NewNum=60000, NewDen=1000)
    Subtitle("2001-01-01 11:41:33", 40,650,90,119,"Arial",40,$ffffff)
    Subtitle("2001-01-01 11:41:34", 40,650,120,149,"Arial",40,$ffffff)
    Subtitle("Nagrał Piotr Fabian", 40,650,180,210,"Arial",40,$ffffff)
    ###
    ### 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).turnle
    ft()
    \ .nnedi3(dh=true,Y=true,U=true,V=true,field=0).turnri
    ght()
    \ : input
    upscale4 = scale > 2 ? upscale2
    \ .nnedi3(dh=true,Y=true,U=true,V=true,field=1).turnle
    ft()
    \ .nnedi3(dh=true,Y=true,U=true,V=true,field=0).turnri
    ght()
    \ : upscale2
    upscale8 = scale > 4 ? upscale4
    \ .nnedi3(dh=true,Y=true,U=true,V=true,field=1).turnle
    ft()
    \ .nnedi3(dh=true,Y=true,U=true,V=true,field=0).turnri
    ght()
    \ : upscale4
    upscale16 = scale > 8 ? upscale8
    \ .nnedi3(dh=true,Y=true,U=true,V=true,field=1).turnle
    ft()
    \ .nnedi3(dh=true,Y=true,U=true,V=true,field=0).turnri
    ght()
    \ : 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.


Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: