oof
19th July 2003, 22:23
I hate to be a weeny, But I can't seem to figure this one out.
For whetever reason I have a video that has duplicate frames
every so often. Vdub shows a K frame followed by a D frame
at the duplicate pairs. My ATI capture card caused it.
The video is an MJPEG AVI.
This is causing A/V unsync every time there is a duplicate.
It can be fixed by saving the audio, deleting the dropped
frames, and then restoring the audio.
There is one (or two) about every sec. so manually deleting them
is very tedious.
I am trying to find an automated way to fix this.
AviSynth is probably the only way. It doesn't work so far.
* this is maybe close but no cigar
#####################
avisource( "file.avi" ).ConvertToYV12( )
# ShowFrameNumber() # Debug
ConditionalFilter(last , last.trim(1,0) , last , "YDifferenceToNext()" , "<", "1.0" , true )
####################
Frames 26 and 27 in the source are duplicates, The frame sequence out of this filter is ... 25 - 26 - 28 - 28 - 29 - 30 ... etc.
It deleted 27 OK but now there's 2 28s !
Is there a way to loop over frames ? Not in the Docs i've seen.
If I could get a variable set to the right frame number I could
use DeleteFrame.
Any clues ?
For whetever reason I have a video that has duplicate frames
every so often. Vdub shows a K frame followed by a D frame
at the duplicate pairs. My ATI capture card caused it.
The video is an MJPEG AVI.
This is causing A/V unsync every time there is a duplicate.
It can be fixed by saving the audio, deleting the dropped
frames, and then restoring the audio.
There is one (or two) about every sec. so manually deleting them
is very tedious.
I am trying to find an automated way to fix this.
AviSynth is probably the only way. It doesn't work so far.
* this is maybe close but no cigar
#####################
avisource( "file.avi" ).ConvertToYV12( )
# ShowFrameNumber() # Debug
ConditionalFilter(last , last.trim(1,0) , last , "YDifferenceToNext()" , "<", "1.0" , true )
####################
Frames 26 and 27 in the source are duplicates, The frame sequence out of this filter is ... 25 - 26 - 28 - 28 - 29 - 30 ... etc.
It deleted 27 OK but now there's 2 28s !
Is there a way to loop over frames ? Not in the Docs i've seen.
If I could get a variable set to the right frame number I could
use DeleteFrame.
Any clues ?