Thanks for the sample. Looks like damaged tape.
The video is animation crated at 23.976 film speed with duplicate frames, and some form of pulldown (telecine) has been applied for 25fps playback. In this case the duped frames and pulldown are to your advantage. You can replace bad frames with good duplicates. Unfortunately IVTC (inversese telcine) won't work with bad frames, so I used QTGMC to deinterlace, fixed bad frames, then used srestore() to get the original 23.976 fps. It's possible that the same pulldown algorithm might not be used for the entire movie.
You have to deinterlace the clip to move frames around and to use Stab() to stabilize a little. It's a pretty messy clip with buzzing edges and other noise. Mount the video in
Virtualdub and add its yadif deinterlacer, then observe the clip frame by frame. The frame numbers quoted below are deintelace frame numbers, which are double the original field numbers in the original clip.
There are frame hops in deinterlaced frames 14, 23, 90, and 99. You also have horizontal dropouts ("rips") all over the place and blotchy distortion in the bricks of the background door and at the big guy's feet, notably frames 15, 43, 44, 91, 98, 101, 114, and 115, and more distortion on the door and floor in some of the 80's and 90's. I also noticed before any frames were fixed that the bottom border flutters slightly up and down. I deinterlaced with QTGMC and corrected these glitches manually by replacing bad frames with good frames using Avisynth's built-in FreezeFrame() function.
The syntax for FreezeFrame is:
FreezeFrame (clip, int first_frame, int last_frame, int source_frame)
http://avisynth.nl/index.php/FreezeFrame
An example would be the first frame hop in frame 14 and the distortion on the floor in frames 13 and 15. I replaced 13-14-15 with good frame 12:
Code:
FreezeFrame(13,15,12)
The script I used:
Code:
AviSource("Drive:\path\to\video\Problem Clip.avi")
ConvertToYV12(interlaced=true)
AssumeTFF()
QTGMC(preset="medium",border=true)
FreezeFrame(13,15,12)
FreezeFrame(22,24,21)
FreezeFrame(86,87,88)
FreezeFrame(89,89,88)
FreezeFrame(90,90,89)
FreezeFrame(90,90,89)
FreezeFrame(91,91,92)
FreezeFrame(97,98,96)
FreezeFrame(99,99,98)
FreezeFrame(100,100,101)
RemoveSpotsMC()
Stab()
Crop(10,0,0,-16).AddBorders(8,4,2,12)
sRestore()
return last
The attached mpg sample was re-encoded with 2:2 pulldown flags applied for 25fps DVD.
What VCR and external frame tbc are you using? Usually, although not always, a line and frame tbc can help prevent this sort of thing. The horizontal frame shift at the start and end look as if they might be intentional, not unusual for anime. If not, the only way to fix it is to take all the shifted frames at once and shift them one way or the other to match the start and end frames, which means cropping of all the frames in the entire sequence -- that would be rather drastic.