Hi zusammen
In meinem video gibt es Bilder die zum Teil gedoppelt wurden um auf die entsprechenden FPS zu kommen. Nur scheinbar nicht nach einem festen Muster. Manchmal gibt's 5 aufeinander folgende Bilder und das sechste ist eine Kopie des fünften, manchmal nur drei oder vier aufeinander folgende und dann eine Kopie des letzten ... Dadurch entstehen zwangsweise Ruckler.
Nun könnte man die Kopien via TDecimate einfach killen, aber meine Idee wäre es die Kopie zu verwerfen und aus dem vorherigen bzw. nachfolgendem Frame ein eues zu berechnen. Nur leider komme ich nicht weiter:
mpeg2source("vts_01_1.d2v")
ConditionalFilter(last, last, last.interpolate(), "YDifferenceFromPrevious()", "greaterthan", "0", true)
function interpolate(clip clp)
{
clip_a = last
# del current frame
clip_a.SelectEvery(1,1)
sup = clip_a.MSuper()
backward_vec = sup.MAnalyse(isb = true, truemotion=true, search=5, dct=8, trymany=true )
forward_vec = sup.MAnalyse(isb = false, truemotion=true, search=5, dct=8, trymany=true )
clip_a.MFlowFps(sup,backward_vec,forward_vec,num=0)
return(last)
}
Alles anzeigen
Das Problem sollte wohl klar sein: Wie verwerfe ich die Kopie und interpoliere das neue Bild ? Z.Z. scheitert es an SelectEvery(1,1). Das sollte doch das aktuelle Bild überspringen und zum nächsten übergehen ... Wenn nun MAnalyse(isb = true) zuschlägt, sollte die Kopie nicht mehr vorhanden sein und das vorherige Bild als backward_vec genommen werden ...