VideoHelp Forum
+ Reply to Thread
Results 1 to 8 of 8
Thread
  1. Multimedia storyteller bigass's Avatar
    Join Date
    Dec 2006
    Location
    London, Ontario Canada
    Search Comp PM
    Clients have brought me VHS tapes of old super-8 film. We know there are multiple ways to capture film to video. A few right ways, and a bunch of different wrong ways. It's too late to go back and capture these the right way. I'm trying to make the best of what I've been given to work with, which are VHS tapes of the transfers.

    I'm attaching samples from three tapes.

    I've read some tutorials on IVTC processing to take 29.97 interlaced down to 24ish progressive. Super-8 tended to run at 18 fps.

    Throw the effect of a projector's shutter and unknown shutter speed on the capturing camera's end, and make the whole thing interlaced, and now I'm puzzled at how best to turn these tapes into the best progressive output for delivery. For regular interlaced NTSC, I usually QTGMC it and double the framerate. Turning 18 fps into 59.94 feels like the wrong answer.

    I've managed to get a looks-good-but-is-it result in Virtualdub2 by running the IVTC filter with settings of Reduce Frame rate, Autodetect field mode, Adaptive pattern phase. That feeds to Deinterlace with Yadif, Keep top field. Then crop, canvas size, resize, bibbity bobbity boo. Yes, levels and noise and all that, but it's untangling the fields that I don't get.

    Recommendations, gang? In Vdub, I hope, please, maybe?
    Image Attached Files
    Quote Quote  
  2. denoise with qtgmc, try decimating with tdecimate.
    Quote Quote  
  3. I only looked at the second video but I see the shutter speed to be about 21.4 fps.

    Code:
    LWLibavVideoSource("vh-vhs-super8-sample 13.avi", cache=false, prefer_hw=2) 
    AssumeTFF()
    MergeChroma(Blur(0.0, 1.0).Sharpen(0.0, 0.7))
    QTGMC()
    SRestore(frate=21.4)
    AssumeFPS(18.0)
    I used a nasty blur on the chroma because two fields have very different colors. If any frames end up with blended chroma they'll probably be removed by SRestore().

    Once you have the right frame rate you can start the other fixes.
    Image Attached Files
    Last edited by jagabo; 29th Sep 2021 at 11:14.
    Quote Quote  
  4. Multimedia storyteller bigass's Avatar
    Join Date
    Dec 2006
    Location
    London, Ontario Canada
    Search Comp PM
    Maybe this is like musicians who can tell a song's BPM just by listening for a few seconds, but could you share the magic behind your estimation of 21.4 fps? For the rest, I'm going to need to RTFM, as Avisynth is still a foreign language to me. Thank you, jagabo.
    Quote Quote  
  5. QTGMC() turns each field into a frame. So after QTGMC() you have 59.94 frames per second.

    Code:
    LWLibavVideoSource("filename.ext") 
    AssumeTFF() # or AssumeBFF(), as appropriate
    QTGMC()
    You can then step through the video counting the number of unique frames (ignoring blended frames and minor artifacts) in a one second sequence (a medium speed horizontal panning shot is best for this). Say you find 24 unique frames out of 60 -- you know the underlying film frame rate is (very close to) 24 fps.

    SRestore() reduces the frame rate by preferentially discarding blended frames, then discarding duplicate frames. Add SRestore() to the script and set frate to the frame rate you've determined:

    Code:
    LWLibavVideoSource("filename.ext") 
    AssumeTFF() # or AssumeBFF(), as appropriate
    QTGMC()
    SRestore(24.0)
    Then run through the video again to verify the result. If you still find duplicate frames or blended frames the frame rate is too high; reduce it and scan again. If you see that there are missing frames (jumps in the motion) the frame rate is too low, increase it and scan again. Note that SRestore() can take a while to lock into a pattern. So always run through a few dozen sequential frames before you you start checking for dups or drops. And always step forward. It's not always possible to get a perfect result.

    Here's what I mean by "ignoring blended frames." This image shows a portion of six successive frames during a panning shot:

    Image
    [Attachment 61061 - Click to enlarge]


    Frames 105 and 106 show the goal post in the same place. Frame 107 is a blend of two film frames so it should be not be counted as a "different" frame (the film was advanced while the camera was capturing the field so it got a blend of the two film frames). Frames 108 and 109 show the posts in the same place, but they have moved left from frames 105 and 106. In frame 110 they have moved to the left again. So there are 3 unique positions in this 6 frame sequence.
    Quote Quote  
  6. Multimedia storyteller bigass's Avatar
    Join Date
    Dec 2006
    Location
    London, Ontario Canada
    Search Comp PM
    Thanks for your guidance, as always, jagabo. Ok, if I'm following correctly, interlaced video goes into QTGMC for deinterlacing into 59.94. I figure out how many unblended and unrepeated frames are in that 59.94, and that's my approximate (original projection at the time of recording) frame rate that I will tell Srestore to aim for as it digs through that 59.94 stream looking for the (x) number of good frames I asked for. What comes out the other end is a progressive video at the frame rate I asked for, delivered by Srestore's best efforts based on the information I gave it. If it's botched, I will first suspect my count or math and make adjustments before re-running the script. Does that sound like I've got it or am I way off the rails now?

    After that video comes out, since it's just a series of proper images from the film, I ought to be free to say, OK computer, I know I went through all that to have you make a 20.19 fps video, but you've secretly been exactly 18 fps all along! And now when people play back this video, it will play as originally shot, not just as originally projected ... because I've since learned that DIY NTSC telecine-ers are/were fond of tweaking the projection speed up from 18 fps to 20 fps to minimize camera flicker.

    jagabo, you're forging important shit in my mind with this. I've worked with super-8 and video as separate worlds since I was a child, and you're helping bridge the divide between them. Thank you again.
    Quote Quote  
  7. Yes, you have it all right.

    At least one of the other videos has another problem where the frames are partially blended. I.e. the top portion isn't blended but the bottom portion is, or vice versa. I'll have to think about how to deal with that a bit.
    Quote Quote  
  8. vh-vhs-super8-sample 14.avi appears to be about 15 fps. The partially blended frames go away after qtgmc().SRestore():

    Code:
    LWLibavVideoSource("vh-vhs-super8-sample 14.avi") 
    AssumeTFF()
    MergeChroma(Blur(0.0, 1.0).Sharpen(0.0, 0.7))
    QTGMC()
    SRestore(frate=15.0)
    Quote Quote  



Similar Threads

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