VideoHelp Forum




+ Reply to Thread
Results 1 to 4 of 4
  1. Hello,

    I have a few AVI videos that are originally 29,976 fps (sitcom, shot on tape) but they were ripped at 23,976 fps. The result is a jerky playback. Will changing the framerate back to 29,976 fix the problem?

    If so, could someone tell me how to do it? I tried with Virtualdub, and changing the framerate only speeds up the video. I think I need to apply a 3:2 pulldown or something, but I don't know much about that. I would really appreciate the help.

    Thank you.
    Quote Quote  
  2. Originally Posted by Nico Darko View Post
    I have a few AVI videos that are originally 29,976 fps (sitcom, shot on tape) but they were ripped at 23,976 fps. The result is a jerky playback. Will changing the framerate back to 29,976 fix the problem?
    No. One frame out of every 5 is missing. Duplicating one of the remaining frames is not the same as restoring that missing frame.

    You can manually replace frames with a motion interpolated frame using ReplaceFramesMC() in AviSynth:

    https://forum.videohelp.com/threads/352741-Frame-interpolation?p=2226119&viewfull=1#post2226119

    That works with some simple motions but generates artifacts with complex motions. Automating that will be difficult if there are any cadence changes.
    Quote Quote  
  3. Originally Posted by jagabo View Post
    Automating that will be difficult if there are any cadence changes.
    Yes, if there are cadence changes. But, ordinarily, any idiot stupid enough to blindly decimate 29.97fps to 23.976fps will use some filter that does it every five frames. No cadence changes. One can't know for sure, of course, without checking first.

    And if the dropped frames are consistent throughout, then it can be automated, sort of. I'd do it this way:

    First, replace missing frames with dupes of the frame previous to the drops. That can be done fairly easily by figuring out the correct syntax for a SelectEvery call. One possible answer might be:

    SelectEvery(4,0,1,2,2,3)

    Different frames in the cycle might have to be duplicated.

    Once the dupes are in place, then the FillDrops function will seek out each second frame in a duped pair and replace it with an interpolated frame:

    function filldrops (clip c)
    {
    vf=c.mvanalyse(truemotion=true,pel=2,isb=false,del ta=1,idx=1)
    vb=c.mvanalyse(truemotion=true,pel=2,isb=true,delt a=1,idx=1)
    global filldrops_d = c.mvflowinter(vb,vf,time=50,idx=1)
    global filldrops_c = c
    c.scriptclip("""ydifferencefromprevious()==0? filldrops_d : filldrops_c""")

    }


    This code finds all duplicated frames and replaces the second instance of two duplicate frames with a motion-estimated frame.

    It was originally Mug Funky's script.
    Quote Quote  
  4. Thank you !! I'll try that.
    Quote Quote  



Similar Threads

Visit our sponsor! Try DVDFab and backup Blu-rays!