Wie 'LigH' schon schreibt, wird ApplyRange da nicht funktioniert. Zum einen ist es erstmal nur darauf ausgelegt einen einzigen Effekt auf einen bestimmten Abschnitt anzuwenden - du hast aber einfach zwei hintereinander "gepappt"... was halt so nicht geht.
Zum anderen ginge zwar bei anderen Filterfunktionen das zweimalige Ausführen von ApplyRange um zwei Effekte nacheinander auf den gleichen Abschnitt anzuwenden - aber auch das wird hier nicht klappen, da ApplyRange ja (wenn du z.B. zuerst per AssumeFPS die Framerate vom Abschnitt änderst) im nächsten Zwischenschritt versuchen wird, den Abschnitt mit der niedrigeren Framerate in das Video mit der Ursprungsframerate zu integrieren. Bekanntermaßen erlaubt AviSynth aber nicht das Zusammenfügen von Videoschnippseln mit unterschiedlichen Frameraten - das wird also in einer Fehlermeldung oder in in einer Ausgabe resultieren, das nichts mit dem gewünschten Ergebnis zu tun hat.
Des weiteren wüsste ich auch leider nicht, wie bzw. ob man überhaupt die verschachtelte Variante von AssumeFPS + ChangeFPS in dieser Form:
ChangeFPS(last.AssumeFPS(5.000),29.970)
... mit ApplyRange kombinieren kann. Ich glaube aber nicht, dass das geht, da das Ergebnis von so einem Slowdown ja die komplette Laufzeit und Frameanzahl des Schnippsels ändert - und ich bezweifle mal ganz stark, dass ApplyRange damit umgehen kann.
EDIT:
Wie vermutet wird das nichts mit ApplyRange. Ich hab mal eine simple benutzerdefinierte Funktion erstellt, die AssumeFPS und ChangeFPS hintereinander ausführt:
function SlowD( clip clp, int "slowdfps", int "rtrnfps"){slowdfps = default( slowdfps, 5.0 )rtrnfps = default( rtrnfps, clp.frameRate )return ChangeFPS(clp.AssumeFPS(slowdfps), rtrnfps)}
Wenn ich die mit ApplyRange verwende, wird für den definierten Abschnitt einfach nur ein schwarzes Bild ausgespuckt. Auf das komplett Video angewandt funktioniert sie aber problemlos.
EDIT2:
Hier... versuch's mal mit dieser benutzerdefinierten Funktion:
function SlowD( clip clp, int "strtfrm", int "endfrm", float "slowdfps", float "rtrnfps" ){strtfrm = default( strtfrm, 0 )endfrm = default( endfrm, 0 )slowdfps = default( slowdfps, 5.0 )rtrnfps = default( rtrnfps, clp.frameRate )complclp = clpstartclp = Trim(complclp,0,strtfrm-1).AssumeFPS(rtrnfps)changeclp = Trim(complclp,strtfrm,endfrm).AssumeFPS(slowdfps).ChangeFPS(rtrnfps)endclp = Trim(complclp,endfrm+1,-0).AssumeFPS(rtrnfps)return startclp++changeclp++endclp}
Damit sollte es möglich sein, AssumeFPS und ChangeFPS einfach auf einzelne Abschnitte anwenden zu können. Dafür reicht folgender Aufruf im Script:
SlowD([COLOR='#EE82EE']1230[/COLOR], [COLOR='#A52A2A']1462[/COLOR], [COLOR='#0000FF']5[/COLOR], [COLOR='#008000']29.97[/COLOR])
Bedeutet: wende den Effekt von Frame-Nummer 1230 bis Frame-Nummer 1462 des Ausgangsvideos an... wobei dieser Abschnitt auf 5 Frames/Sekunde verlangsamt und danach (ohne Geschwindigkeitsänderung) in 29.97 Frames/Sekunde konvertiert und das ganze Video in dieser Framerate ausgegeben werden soll.
Beachte aber dabei:
Mit jeder Anwendung dieser Funktion ändert sich die Laufzeit. Du darfst sie also nicht einfach mehrfach "blind" nacheinander anwenden, sondern musst nach jeder Anwendung erstmal nachsehen, wohin sich der Timecode bzw. die Framenummer für die nächste Anwendung bei der vorherigen Benutzung der Funktion verschoben hat