Zeitlupe und Zeitraffer

  • Moin Moin
    Ich möchte ein einfaches Vid zusammenstellen aus mehreren 25 fps aufnahmen.
    An bestimmten stellen mit Zeitlupe und an anderen stellen das Gegenteil. Kann man mithilfe von avisynth und virtual dub alles in ein Video fassen?
    Bisheriger Versuch:

    Code
    #Zeitlupe mit convertfpsAVISource("4-9.avi").BicubicResize(1024,768).Trim(463,0).convertfps(75)


    Das Ergebnis kann sich sehen lassen, aber wenn ich noch einen anderen Abschnitt hinzufügen will bekomme ich die Fehlermeldung:"Framerate doesn't match".....

    Code
    #Zeitraffer mit selectevery
    a = AVISource("4-9.avi").BicubicResize(1024,768).Trim(1,462)
    SelectEvery(a, 4, 0)


    Das Video ist hierbei nur am zucken.

    Kann mir Jemand erklären wie's besser geht?:ja:
    thx :D

  • :welcome:

    (1) Ich nehme an, die "4-9.avi" hatte ursprünglich 25 fps? Dann sorg mal besser für die Kette: .ConvertFPS(75).AssumeFPS(25) -- du willst ja nicht nur, dass Zwischenbilder berechnet werden, sondern dass die danach auch noch langsamer ablaufen.

    (2) Sieht formal eigentlich richtig aus... :ratlos:

  • Hi
    Jetzt habe ich noch eine Frage+Problem:
    Frage: Kann man AviSource nur begrenzt einstezen? Ich glaube die Warnmeldung
    "AviSource:Couldn't locate a decompressor for fourcc" wenn ich x mal AviSource verwendet habe...

    Problem: Wenn ich die .avs mit virtualdub abspiele, wird das Video in gewünschter Geschwindigkeit abgespielt. Wenn ich aber eine AVI produziere ist das Video zu langsam. Woran kann das liegen?

    MfG Alex

  • Es ist möglich, dass sich bestimmte VfW-Codecs nur in begrenzter Anzahl parallel aufrufen lassen. Das wäre allerdings eher ein Problem des Codecs, denke ich. Welcher FourCC ist es denn - und welcher VfW-Codec wird verwendet (VirtualDub: File - Info)?

    Zu langsam? - Möglicherweise hast du es völlig ohne jede Kompression abgespeichert, und beim Abspielen müssen nun Gigabytes pro Minute von der Festplatte gelesen werden? AviSynth arbeitet ja allein im RAM. Für das Herausschreiben als AVI solltest du schon zunächst einen Videocodec auswählen, der sinnvoll komprimiert. Zu Testzwecken ist z.B. der MJPEG-Codec in ffdshow oder XviD mit fester Quantisierung geeignet, zum endgültigen Komprimieren überlegen wir später noch mal...

  • Ursprungsdatei
    Format:AVI
    Fourcc: FPS1 Name: FRAPS Codec
    Sind das die richtigen Infos?


    Wenn ich das Video mit Xvid Komprimiere ist wieder alles bestens. Danke für den Tipp! :)

  • Ja, FRAPS zeichnet mehr oder weniger unkomprimiert auf, weil's ja beim Bildschirm-Aufzeichnen normalerweise schnell gehen muss.

    Eventuell hilft es, die FRAPS-Videos durch ffdshow lesen zu lassen, um mehrere öffnen zu können. Dazu in der VfW-Konfiguration von ffdshow im "Decoder"-Tab den FRAPS-Codec aktivieren.

  • Zitat

    Dazu in der VfW-Konfiguration von ffdshow im "Decoder"-Tab den FRAPS-Codec aktivieren.


    Ok der Status lautet jetzt libavcodec.

    Aber wie lasse ich jetzt mehrere Videos durch ffdshow laufen?

  • Durch AviSynth, meinst du?

    clip1 = AviSource(Datei1) - Welcher FourCC? - FPS1 - Welcher VfW-Codec ist zuständig? - ffdshow.
    clip2 = AviSource(Datei2) - Welcher FourCC? - FPS1 - Welcher VfW-Codec ist zuständig? - ffdshow Kopie 2.
    clip3 = AviSource(Datei3) - Welcher FourCC? - FPS1 - Welcher VfW-Codec ist zuständig? - ffdshow Kopie 3.
    ...

    Es gibt Codecs, die nicht geeignet sind, von sich selbst mehrere Kopien laufen zu lassen, weil alle Kopien sich irgendwo die gleichen Daten teilen würden, und das verursacht ein Durcheinander. Ich hoffe, die ffdshow-Programmierer haben auf "Reentranz" geachtet. Wenn nicht ... tja.

  • Für die Nachwelt: Weitere Lösungen für AviSource Begrenzung

    Zitat

    clip1 = AviSource(Datei1) - Welcher FourCC? - FPS1 - Welcher VfW-Codec ist zuständig? - ffdshow.

    Thx für das Beispiel!

    a = AviSource("9-6.avi", fourCC="FPS1", codec="ffdshow")

    Sorry das ich nerve, aber Ich hab nirgends einen Ersatz für Codec= gefunden:redface:. Könntest du mich grade korrigieren?

    Einmal editiert, zuletzt von Lyko (8. September 2008 um 23:30)

  • Du kannst den Codec nicht manuell bis zur Wahl der DLL in AviSynth festlegen. Es gibt keinen "codec"-Parameter. Der Codec wird systemweit in Windows festgelegt durch eine Tabelle in der Registry (FourCC => DLL). Mein Beispiel sollte dir nur zeigen, was während eines AviSource-Aufrufes automatisch im System passiert, ohne dass du es so exakt beeinflussen kannst, wie du das gern hättest:

    Jedes Mal, wenn du ein Video zusätzlich öffnest, das mit dem gleichen Codec encodiert wurde, wird wieder eine neue Kopie des gleichen Decoders in das System geladen. Es ist wahrscheinlich nicht möglich, zwei FRAPS-Videos in AviSynth so zu laden, dass das eine mit dem Original-FRAPS-Codec geöffnet wird, und das andere mit ffdshow's FRAPS-Decoder.

    Ausnahme wäre der "fourcc"-Parameter, wenn man mehrere Codecs hat, die eigene FourCCs haben, aber potenziell in der Lage wären, Material des Konkurrenten zu decodieren (z.B. XviD zum Decodieren von DivX, Canopus- und Sony-DV-Codecs mit eigenem FourCC). Wenn also ffdshow's VfW-Codec-Konfiguration FRAPS deaktiviert hat, damit der originale FRAPS-Codec in erster Linie zuständig bleibt, könnte man versuchen, mit fourcc="FFDS" entsprechendes zu erreichen.
    __

    Laut deinem verlinkten Beitrag gibt es wohl eine Grenze im Betriebssystem, wie oft auch sauber programmierte Codecs sich laden lassen. Anscheinend liegt die je nach Codec und konkretem Anwendungsfall zwischen 50 und 100 Aufrufen.

    Anscheinend kann DirectShowSource dieses Limit umgehen, indem zum Öffnen nicht VfW-Codecs, sondern DirectShow-Filter verwendet werden. Im Allgemeinen aber ist dieses Vorgehen nicht zu empfehlen, weil DirectShow-Filter teilweise auf Echtzeitwiedergabe optimiert werden und eventuell die Qualität reduzieren können oder auch mal ganze Bilder überspringen, falls das notwendig ist, um das Video nur flüssig laufen zu lassen; oder es werden unerwartet noch Videofilter angewendet...

    Anstatt also 150 kleine Videoclips in einem AviSynth-Skript zu öffnen, sollte man besser überlegen, ob es andere Möglichkeiten gibt, sein gewünschtes Ziel zu erreichen. Wenn du sie bloß aneinanderfügen willst, hilft vielleicht SegmentedAviSource. Oder das Zusammenfügen in mehreren Schritten.

    Auf gute Zusammenarbeit:

    REGELN befolgen | SUCHE benutzen | FAQ lesen | STICKIES beachten

    2 Mal editiert, zuletzt von LigH (9. September 2008 um 08:05)

Jetzt mitmachen!

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