Videos vom gleichem Format (Codec Typ) mit unterschiedlichen Frameraten verbinden?

  • Hab hier 3 gleiche Videos vom selben Codec Typ, aber einer davon mit unterschiedlicher Framerate, vorliegen.

    [Blockierte Grafik: http://img.xrmb2.net/images/260898.png]

    MediaInfo Nr.1 = http://img.xrmb2.net/images/696220.png
    MediaInfo Nr.2 = http://img.xrmb2.net/images/859045.png
    MediaInfo Nr.3 = http://img.xrmb2.net/images/432013.png

    Die Videos sind Screencast Aufnahmen von meinem Linux Desktop :)
    Wollte ein Tutorial ohne Audiokommentar erstellen..
    Hier mal die 3 Original Aufnahmen mit der selben Framerate als H264 komprimiert und für euch hochgeladen:

    http://www.file-upload.net/download-10394…merate.rar.html

    Würde mich freuen, wenn ihr euch die 3 Demo Samples, mal kurz anschauen könnt.
    Ich benötige in Video Nr.2 einen Art: Vorspuleffekt!
    Deshalb auch der Testversuch mit der Erhöhung von 300 FPS in Video Nr.2
    Möchte nicht 10 Minuten warten, bis die Stelle abgespielt ist :(
    Das ganze soll unter einer Minute ablaufen..
    Seht selber^^

    Wollte VirtualDub mit einem AviSynth Script überlisten, das leider nicht klappt :(

    [Blockierte Grafik: http://img.xrmb2.net/images/947552.png]

    Code
    c1 = AVISource("VideoNr.1-mit_15-FPS_UT420--bt.709--(ohneAudio).avi") 
    c2 = AVISource("VideoNr.2-mit_300-FPS_UT420--bt.709--(ohneAudio).avi") 
    c3 = AVISource("VideoNr.3-mit_15-FPS_UT420--bt.709--(ohneAudio).avi") 
     
    c1 ++ c2 ++ c3 
     
    AssumeFPS(15.000)  # So das Video Nr.2 mit dem 300 Vorspuleffekt, wieder als 15 FPS abgespielt wird!
    ConvertToYV12()

    Auch dasselbe mit L-SMASH-Works decodiert, hat nicht geklappt!
    Wer kann mir bei der Umsetzung weiterhelfen?
    (Ein Video mit gleicher Framerate schneller machen = Vorspuleffekt einbauen)

    5 Mal editiert, zuletzt von H264x (8. März 2015 um 22:16)

  • Wenn Video Nr.2 von 300 FPS auf AssumeFPS(15.000) im Script gesetzt ist, hat es wieder seine ca. 10 Min im Urspünglichen Zustand.
    In deinem Test Video, ist die Framerate jetzt 50.000 ;)
    Ich suche eine Möglichkeit, das Video schneller laufen zu lassen, ohne die Framerate dabei zuverändern!
    Vorspuleffekt etc..
    Bin noch am Googlen.. (Vielleicht finde ich noch was Interessantes)
    Bis jetzt, habe ich schon mal das hier endeckt: http://www.grcvisuals.com/blog/?p=32
    Slow Motion --> Das ist der Langsam / Zeitlupen / TimeLapse Effekt..

  • Du kannst mit ConvertFPS und ChangeFPS die Framerate ändern, OHNE dabei Einfluss auf die Laufzeit zu nehmen:

    http://avisynth.org.ru/docs/english/corefilters/fps.htm

    Das mit 300fps ablaufende Video lässt sich dadurch also auf 15fps konvertieren, wobei das Ergebnis trotzdem noch im Zeitraffer abgespielt wird.

    Das kannst du auch mit AssumeFPS kombinieren - sprich: nutze AssumeFPS um die Framerate zu erhöhen und dadurch das Video zu beschleunigen und gleich im Anschluss ConvertFPS oder ChangeFPS, um die Framerate zu senken und die Beschleunigung beizubehalten.

    Who is General Failure and why is he reading my hard drive?

    He was trying to get in touch with Private Data but if it involves a Major Disaster I understand that the fault lies with General Protection.

    Furthermore, if you cannot reboot it may be because of a corrupt Colonel.


  • Das kannst du auch mit AssumeFPS kombinieren - sprich: nutze AssumeFPS um die Framerate zu erhöhen und dadurch das Video zu beschleunigen und gleich im Anschluss ConvertFPS oder ChangeFPS, um die Framerate zu senken und die Beschleunigung beizubehalten.

    Danke, das klappt super :)
    Nun wollte ich an einem anderem Video, kurz was ausprobieren...

    Und zwar, das zwischen Frame 1230-1462 ein Slow Motion Effekt ensteht!
    Danach soll das Video wie gewohnt weiter laufen...
    Kannst du mir den Befehl kurz korregieren?

    So muss ich nicht Umständlich ein Video in mehrere Teile splitten / gewünschten effekt anwenden und wieder zusammenbasteln ;)
    Sondern das Video als ganzen Stück in einem Rutsch bearbeiten :)

    2 Mal editiert, zuletzt von H264x (9. März 2015 um 20:22)

  • Du kannst einem Clip immer nur insgesamt eine Framerate zuweisen, das geht nicht abschnittsweise. AviSynth unterstützt kein VFR. Abgesehen davon unterstützt auch ApplyRange wohl nicht mehrere Funktionen in einem Aufruf...

    Um mehrere Clips zu einem zusammenzufügen, müssen sie (unter anderem auch) die gleiche Framerate haben. Wenn du also nur einem Abschnitt einen Zeitlupen- / Zeitraffer-Effekt geben willst, muss das in einem einzelnen Clip passieren. Also Trim() verwenden. Geht nicht anders. Vor allem weil ChangeFPS/ConvertFPS auch die Frame-Anzahl ändern kann, dann würde ApplyRange vielleicht durcheinanderkommen, oder zumindest du, wenn du danach noch was auf den Clip anwenden willst.

  • 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:

    Code
    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:

    Code
    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:

    Code
    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:

    Code
    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

    Who is General Failure and why is he reading my hard drive?

    He was trying to get in touch with Private Data but if it involves a Major Disaster I understand that the fault lies with General Protection.

    Furthermore, if you cannot reboot it may be because of a corrupt Colonel.

    Einmal editiert, zuletzt von Tom Keller (9. März 2015 um 23:01)


  • Des weiteren wüsste ich auch leider nicht, wie bzw. ob man überhaupt die verschachtelte Variante von AssumeFPS + ChangeFPS in dieser Form:

    Code
    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.

    Strike :encouragement: Hab es Geschafft :)
    Nach über einer Stunde Rumfummeln ;)

    Danke euch beiden für die Hilfe.

    PS: Die Laufzeit an sich, verlängert sich natürlich!
    Die FPS bleibt im komplettem Video gleich.

    Edit:
    Hier das Video zu dem gerade genannten AviSynth Test Script: https://www.youtube.com/watch?v=YpZxAFhwxzQ
    Zum Download, einfach mal den: Video Download Helper vom Mozilla Firefox fragen ;)
    Damit könnt ihr es 1:1 ausprobieren, wie ich es getan habe :)

    2 Mal editiert, zuletzt von H264x (9. März 2015 um 23:17)

  • Die Laufzeit an sich, verlängert sich natürlich!


    Und damit hat halt ApplyRange (unter anderem) Probleme... denn es liefert einen Clip mit 232 Frames Länge an eine Filterfunktion und bekommt danach einen Clip mit fast 1400 Frames zurück, der aber in die gleiche "Lücke" rein muss, die der ursprüngliche Clip hinterlassen hat. Das geht halt nicht ;) ...

    Hier das Video zu dem gerade genannten AviSynth Test Script


    Hab's gerade hiermit getestet:

    Code
    LWlibavVideoSource("BMX - Freestyle Edition 2014_2015 (2) (1080p).mp4")
    SlowD(1230,1462,5,29.97)


    ... und es funktioniert auch :D .

    Falls du eine flüssigere Zeitlupe willst, kannst du's übrigens auch mal mit MVFlowFps, InterFrame oder ähnlichen Funktionen versuchen. Abhängig von Framerate und der Qualität des Quellmaterials entstehen dann allerdings (bedingt durch die Technik) mal mehr und mal weniger sichtbare Artefakte:

    http://shareplace.com/?2EF2965F4

    Who is General Failure and why is he reading my hard drive?

    He was trying to get in touch with Private Data but if it involves a Major Disaster I understand that the fault lies with General Protection.

    Furthermore, if you cannot reboot it may be because of a corrupt Colonel.

  • Und ich dachte gestern noch: Hoffentlich erwähnt jetzt bloß keiner MFlowFPS aus MVTools2, damit beschäftigt uns H264x dann noch eine Woche mit Nachfragen; mindestens ... :eek:

    ;D

    Hättest du mal lieber nichts gesagt ;)
    Jetzt habe ich Fieber bekommen...
    Wenn du magst, kannst du ja schon mal Anfangen eine Anleitung dazu für Waldorfschüler zu schreiben ;)
    #1
    Werd sie bei Gelegenheit mal ausprobieren :D


    Falls du eine flüssigere Zeitlupe willst, kannst du's übrigens auch mal mit MVFlowFps, InterFrame oder ähnlichen Funktionen versuchen. Abhängig von Framerate und der Qualität des Quellmaterials entstehen dann allerdings (bedingt durch die Technik) mal mehr und mal weniger sichtbare Artefakte:

    http://shareplace.com/?2EF2965F4

    Sieht doch ganz Nett aus :)
    Ich überlegs mir, ob ich die Funktion irgendwann mal benötige ;)
    Obwohl, das hier würde ich schon gerne mal ausprobieren:
    https://www.youtube.com/watch?v=3OBR-i2bMuY
    Oder das hier: [ VHS Bad Motion Effekte ]
    https://www.youtube.com/watch?v=DAV2H5je5qY
    https://www.youtube.com/watch?v=vB3cWuPRCz0
    Fische einfügen, wäre auch cool ;)
    https://www.youtube.com/watch?v=AOnl7EypypM
    ^^ Aber bitte alles für AviSynth :)

    LigH --> Ich habe es mir anders überlegt!
    Ich benötige dein Tutorial ;)



    Hab's gerade hiermit getestet:

    Code
    LWlibavVideoSource("BMX - Freestyle Edition 2014_2015 (2) (1080p).mp4")SlowD(1230,1462,5,29.97)


    ... und es funktioniert auch :D .

    SlowD = Funktioniert, leider nicht bei mir :(
    Bekomme folgende Fehlermeldung:

    [Blockierte Grafik: http://img.xrmb2.net/images/494670.png]

    Hier mal mein AviSynth Script dazu:

    Müsste doch eigentlich alles richtig sein oder?

    13 Mal editiert, zuletzt von H264x (11. März 2015 um 14:28)

  • Wann teilst du denn in diesem Skript AviSynth mit, wie die Funktion SlowD deklariert ist?

    Tipp: EDIT2 aus #8

    Danke, jetzt klappt es :)
    Hab es oben nachträglich im AviSynth Script editiert.
    Die SlowDown Funktion muss erst "Statisch Compiliert" im Script eingebaut werden, bevor der Hauptbefehl aufgerufen werden kann.
    Ist das so Richtig erklärt?
    Das ganze "gedöns" könnte man doch auch in einer *.AVSI Datei verfrachten, damit das AviSynth Script übersichtlicher bleibt? oder..
    Hab mich schon immer gewundert, warum manche AviSynth Scripte, so lang wie ein ganzer Roman sind und man nur Bahnhof versteht ;)

  • AviSynth compiliert nicht wirklich (erstellt also keinen ausführbaren Code vor der Ausführung). AviSynth interpretiert eher (entscheidet in jeder Zeile während der Ausführung, was zu tun ist). Aber das nur am Rande...

    Da es sich um eine benutzerdefinierte Funktion handelt, muss AviSynth den Quelltext der Funktion erst mal irgendwoher kennen. Entweder man schreibt diesen mit in das Skript, oder man importiert den Quelltext aus einer *.avsi-Datei (letzteres ist übersichtlicher und leichter wiederzuverwenden; so wie bei QTGMC).


  • Falls du eine flüssigere Zeitlupe willst, kannst du's übrigens auch mal mit MVFlowFps, InterFrame oder ähnlichen Funktionen versuchen. Abhängig von Framerate und der Qualität des Quellmaterials entstehen dann allerdings (bedingt durch die Technik) mal mehr und mal weniger sichtbare Artefakte:

    Danke, erstmal dafür :)
    Vielleicht weißt du ja noch was zu den [ VHS Bad Motion Effekte ] in Beitrag: #12 ;)

    Als nächstes bräuchte ich zur SlowDown Funktion, den Gegenteil Befehl:
    "Videos schneller laufen zu lassen, ohne die Framerate dabei zuverändern"
    Also die Variante ohne "Vid.Trim" Befehl?
    Die Variante mit "Vid.Trim" Befehl, habe ich hier schonmal dokumentiert:

    Und wie ist es jetzt noch Möglich, schneller als 310 FPS im Video vorzuspulen?
    [Blockierte Grafik: http://img.xrmb2.net/images/594543.png]

    Mir ist nämlich bei einem anderen Video aufgefallen... das nur 15 FPS hat, der Vorspul Effekt, nur bis Maximal 150 FPS angewendet werden kann :(
    Hängt das etwa mit der Tatsächlichen Framerate zusammen, wie sich ein Video in seinen Urspünglichen Zustand befindet?

    z.B.
    AssumeFPS(15.000) x 10 Linear Irgendwas = 150.000 FPS (ab 160.000 ist hier Schluß)
    AssumeFPS(29.970) x 10 Linear Irgendwas = 299.700 FPS (Hier geht es Tatsächlich bis 310.000)

    11 Mal editiert, zuletzt von H264x (10. März 2015 um 19:10)

  • In der Error-Meldung steht doch eigentlich alles genau drin:
    Die Framerate darf nur höchsten 10 mal so hoch sein - mehr ist bei linearer Frameabfrage nicht möglich. Um die lineare Abfrage du deaktivieren, musst du als Parameter für ChangeFPS linear=false angeben (siehe hier bzw. hier):

    Zitat

    In v2.54, an option linear=true/false is added to ChangeFPS. This will make AviSynth request frames in a linear fashion, when skipping frames. Default is true.

    Sprich...
    Wenn du den Parameter so ergänzt:

    Code
    ChangeFPS(29.970, linear=false)


    ... kannst du das Video mit AssumeFPS auch auf 500fps beschleunigen und dann mit ChangeFPS in 29,97fps konvertieren.


    Und übrigens:
    Die Funktion SlowD von der vorherigen Seite fasst auch nur Trim, AssumeFPS und ChangeFPS zusammen - sie ist also NICHT nur zum Verlangsamen geeignet, sondern kann genausogut zum Beschleunigen benutzte werden. Statt:

    Code
    SlowD(1230, 1462, 5, 29.97)


    ... nimmst du halt:

    Code
    SlowD(1230, 1462, 310, 29.97)


    EDIT:
    Ich hab mal die SlowD Funktion um den "Linear Access" Parameter von ChangeFPS ergänzt:

    Code
    function SlowD( clip clp, int "strtfrm", int "endfrm", float "slowdfps", float "rtrnfps", bool "linearf" ){strtfrm   = default( strtfrm,             0 )endfrm    = default( endfrm,              0 )slowdfps  = default( slowdfps,          5.0 )rtrnfps   = default( rtrnfps, clp.frameRate )linearf   = default( linearf,          true )startclp  = Trim(clp,0,strtfrm-1).AssumeFPS(rtrnfps)changeclp = Trim(clp,strtfrm,endfrm).AssumeFPS(slowdfps).ChangeFPS(rtrnfps,linear=linearf)endclp    = Trim(clp,endfrm+1,-0).AssumeFPS(rtrnfps)return startclp++changeclp++endclp}


    Default ist true - dafür reicht so eine Eingabe:

    Code
    SlowD(1230, 1462, 300, 29.97)


    Um die lineare Abfrage zu deaktivieren muss man einfach nur ein false an die letzte Stelle setzen und kann dann z.B. auch das Video auf 500fps beschleunigen, um es danach in 29,97fps zu konvertieren:

    Code
    SlowD(1230, 1462, 500, 29.97, false)

    Who is General Failure and why is he reading my hard drive?

    He was trying to get in touch with Private Data but if it involves a Major Disaster I understand that the fault lies with General Protection.

    Furthermore, if you cannot reboot it may be because of a corrupt Colonel.

  • Ein fettes Danke an "Tom Keller" für die Script Hilfe :)
    Hab es gerade mit beiden Varianten getestet und es läuft Super!

    Was meinste: Hat dieser Beitrag die 5 ***** verdient ;)
    [Blockierte Grafik: http://img.xrmb2.net/images/727285.png

    Bei extremem Zeitraffer kann man auch einfach SelectEvery() verwenden, um z.B. nur jedes 50. Frame zu verwenden.
    Hat den Vorteil, dass die nominale Framerate des Clips dabei nicht verändert wird.



    Jetzt bin ich Durcheinnander :(
    Noch ein Weg mehr, der nach Rom führen kann..
    Kam gerade so schön mit den anderen Funktionen zurecht :)

    Gehört SelectEvery() noch zur "SlowD Funktion" /
    oder kann man es auch bei der "Vid.Trim" Variante anwenden?
    Hab: SelectEvery() bei beiden Varianten probiert und es klappte leider nicht.
    Siehe:

    Hier mal die beiden Test Scripte mit SelectEvery() eingebaut..

     Vid.Trim Variante + nominale Framerate beibehalten!.avs

    Code
    LoadPlugin("C:\AviSynth\L-SMASH\LSMASHSource.dll") Vid=LSMASHVideoSource("BMX - Freestyle Edition 2014 & 2015 _Teil2 mit 720p.mp4")  # 1.) Zwischen Frame 1230 - 1462 einen "Slow Motion Effekt" einbauen: # oder # 2.) Zwischen Frame 1230 - 1462 einen "Vorspul Effekt" einbauen:  V1=Vid.Trim(0,1229).AssumeFPS(29.970) # V2=Vid.Trim(1230,1462).AssumeFPS(5.000).ChangeFPS(29.970) #.1 V2=Vid.Trim(1230,1462).AssumeFPS(450.000).ChangeFPS(29.970) #.2 V3=Vid.Trim(1463,6963).AssumeFPS(29.970)  V1++V2++V3  SelectEvery(50) [COLOR=#ff0000]# Klappt nicht mit der Vid.Trim Variante! Jetzt der nächste Versuch mit der SlowD Funktion... [/COLOR]ConvertToYV12()


    SlowD Funktion + nominale Framerate beibehalten!.avs

    Einmal editiert, zuletzt von H264x (11. März 2015 um 12:56)

  • :grübeln:

    Probierst du nur so blind rum, oder versuchst du manchmal auch erst die Dokumentation zu lesen und zu verstehen, was da passiert?

    Hast du schon mal versucht, dir bildlich vorzustellen, wie für den "Zeitraffer"-Effekt aus einem 300-fps-Clip wie V2 ein (knapp) 30-fps-Clip wird, ohne dass die Abspiel-Dauer sich ändert? ... Das ist vergleichbar mit einer Strecke von 300 mm, die in cm gemessen 30 ergibt. Ja, da sind dann nur noch ein Zehntel so viele Frames enthalten; also muss entweder nur jedes zehnte Bild ausgewählt werden, oder es müssen zehn Bilder zu einem zusammengerechnet werden.

    Der Original-Clip von V2 hatte auch nur 15 fps. Den hast du auf 300 fps umgestellt, damit er schneller abläuft (also etwas ähnliches wie "AssumeFPS(300)", nur im AVI-Header). Nehmen wir mal diesen Schritt zurück; gehen wir mal vom Original aus, das über 10 Minuten läuft. Bei 15 fps sind da also über 15*60*10 = 9000 Frames enthalten. Oder anders: Wenn der mit 300 fps abgespielt nur 34,87 s dauert, hatte er 10461 Frames.

    Jetzt soll dieser Clip bei etwa 30 fps (der Unterschied zu 29.97 sei mal zum Kopfrechnen zu vernachlässigen) auch nur 34,87 s dauern, so wie bei 300 fps. Dafür brauchen wir nur jedes 30/300 = zehnte Frame. Das Ergebnis hat also nur noch 1046 Frames.

    PHP
    c2 = AVISource("VideoNr.2-mit_15-FPS_UT420--bt.709--(ohneAudio).avi") # das Original ohne Stauchung auf 300 fps
    c2tl = c2.SelectEvery(10).AssumeFPS(30000,1001) # Zeitraffer = time lapse

    ConvertFPS(linear=false) würde auch nicht viel anderes tun als SelectEvery, nur eventuell auch mit nicht ganzzahligen Abständen. Für ganzzahlige Zeitraffer-Faktoren wäre SelectEvery aber die wahrscheinlich schnellste Methode.

    Umgekehrt wäre die schnellste Methode für eine Zeitlupe, jedes Frame nur einfach zu vervielfachen; das wäre aber auch die schlechteste, weil man dann starkes Ruckeln sieht. Hier können Interpolationstechniken sinnvoll sein.

    Abgesehen davon komme ich mittlerweile sowieso durcheinander. Mit welcher Framerate wurde es aufgezeichnet (15 fps)? Welche Framerate soll es am Ende haben (29,97 fps)? Womit willst du die Framerate umwandeln, wenn die Abspielgeschwindigkeit erhalten bleiben soll (weil, V3 mit 15 fps und AssumeFPS(29,97) läuft dann knapp doppelt so schnell ab)? Das alles verwirrt noch.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!