Van 30fps progressive naar 25fps progressive

Als je een DVD wilt maken, moeten al je filmpjes 25 frames per seconde (fps) zijn. De meeste videocamera’s in Europa doen dit ook; immers, wij gebruiken altijd 25fps. Echter, de nieuwste digitale fotocamera’s kunnen tegenwoordig ook prima filmpjes maken. Dat is leuk, totdat je ze op DVD wilt zetten: dan blijken de filmpjes vaak 30fps, terwijl ze eigenlijk 25fps moeten zijn. Vaak zijn ze toch nog redelijk om te zetten. Hoe doe je dat?

Benodigde software

Procedure

We gaan weer AviSynth gebruiken, in combinatie met MVTools. MVTools is een filter, dat een hoop geavanceerde effecten kan uitvoeren. Zo zit er een motion compensation filter in het pakket, dat op basis van bewegingen nieuwe beelden creƫert. Dat is heel handig als je van 30fps naar 25fps wilt gaan; de andere mogelijkheden zijn het weggooien van frames (dat doet het Avisynth filter ChangeFPS()) of het bij elkaar gooien van frames (ConvertFPS()).
Het weggooien van frames is, als je bv van 30fps naar 15fps gaat, een prima oplossing. Echter, als je beweging in je film hebt, zal er bij een 30fps -> 25fps conversie 1 van de 6 frames worden weggegooid. Dat geeft een stotterend resultaat, en dat is niet wat we willen.
Gebruik je ChangeFPS(), dan worden er frames over elkaar heen geplakt. Als je dus beweging in je opnames hebt, levert dat een ontzettend lelijk beeld op. Geen goede oplossing dus.

Een oplossing voor de bovengenoemde problemen is MVTools. Dit filter analyseert de frames en ziet de beweging op het scherm, waardoor het
Een nadeel: het is wel een heel langzaam filter, waardoor het alleen handig is als je het gaat converteren naar een ander formaat. Wil je het resultaat direct zien, dan moet je je toevlucht nemen tot een ander filter, of andere instellingen gebruiken.

De code voor het AviSynth filter is dus als volgt (plaats mvtools.dll in de plugin map van AviSynth; je hoeft hem dan niet te laden aan het begin van je script):


avi=Avisource("video.avi")
bvec = avi.MVAnalyse(overlap=4, isb=true, pel=4, search=3, idx=1)
fvec = avi.MVAnalyse(overlap=4, isb=false, pel=4, search=3, idx=1)
return avi.MVFlowFps(bvec , fvec, num=25, den=1, idx=1)

Dit kan je bijvoorbeeld gebruiken in HCenc, of een ander videoprogramma.

Tags: , , , ,

2 Responses to “Van 30fps progressive naar 25fps progressive”

  1. Huib van Mierlo zegt:

    Hallo Ernst,

    kun je me aangeven hoe ik dat dan eenvoudig moet doen, dat omzetten van 30 naar 25 fps? Zoals het nu is beschreven is het wel erg technisch. Heb je geen stap-voor-stap handleiding? Of kan het wellicht in VLC?

    Groeten,

    Huib van Mierlo

  2. Ernst zegt:

    Op dit moment zit ik er helaas niet zo in. Op zich heb je met AviSynth veel vrijheid, die inderdaad resulteert in soms wat omslachtige of ingewikkelde commando’s. Een alternatief dat ook goede kwaliteit biedt, weet ik niet; je kan het een proberen op het forum van Doom9: http://forum.doom9.org

Leave a Reply