Bildsequenzen in mehrere kleine Videos umwandeln

  • Hallo!

    Ich habe absolut keinen Plan von AviSynth und bin hierher über das Forum von dvdBoard gekommen, da man mir sagte, dass man mein Problem höchstwahrscheinlich hier lösen könnte.

    Ich habe eine Bildsquenz bestehend aus 20000 einzelnen Bildern. Nun möchte ich daraus möglichst automatisiert 200 Avis á 100 Einzelbilder machen.

    Wer kann mir helfen?

    Vielen Dank
    Michael

  • :welcome:

    Sicher geht das - mit der Funktion "ImageSource". Man muss dazu allerdings die "printf-Tokens" verstehen, um ausdrücken zu können, nach welchem Muster die Dateinamen aufgebaut sind, die diese Funktion der Reihe nach lesen soll.

    Wenn du uns markante Beispiele gibst, wie deine Bilder heißen, können wir dir helfen. - Oder du suchst mal im Forum weiter, da hab ich das schon mal etwas ausführlicher erklärt...

  • Jetzt bin ich grad baff.

    Ich hab mich schon von einem Forum zu anderen gehangelt und schon nicht mehr geglaubt, dass mal jemand sagt "sicher geht das".

    Also meine dateien fangen bei mov0000.jpg an und hören bei mov20000.jpg auf.

    Wie die AVIs dann heißen ist schnuppe.

    Schön wäre es, wenn Du mir es erst einmal für diesen Fall erklärst. Da ich das Prinzip gern verstehen möchte (weil weitere solche Dinge vor), würde ich mich über nen Link auf den Beitrag ebenso freuen, wo Du das schon ma näher erklärt hast.

    Danke Dir soweit!

    Micha

  • Öhm ... hmmm ... zähle bitte noch mal durch. ;)

    Leider hat "mov0000.jpg" bei dir nur 4 Ziffern (Nullen), "mov20000.jpg" aber 5 Ziffern. Auf die Anzahl müssen wir uns aber irgendwie verlassen können. Es sei denn, dass bei "mov9999.jpg" ein Filmchen aufhört und bei "mov10000.jpg" ein anderes beginnt...

    Trennen wir also den Dateinamen in Teile, die gleich bleiben, und Teile, die fortlaufende Nummern darstellen.

    1) "mov"
    2) laufende Nummer mit (4 oder) 5 Ziffern
    3) ".jpg"

    Teil 2 müssen wir also irgendwie so umschreiben, dass AviSynth weiß, dass es hier einen Platzhalter mit bestimmten Werten ersetzen muss. Hierbei wird die Syntax für Parameter in der C-Funktion sprintf verwendet:

    2a) % - das Prozent als Zeichen für den Beginn eines Platzhalters
    2b) 04 - eine Zahl als (Mindest-) Anzahl von Ziffern; wenn eine 0 davorsteht, wird nach links mit Nullen aufgefüllt
    2c) d - ein Buchstabe als Hinweis für den Datentyp (d ~ dezimal: Ganzzahl)

    Die Platzhalter-Umschreibung für die Dateinamen deiner Bilderliste sollte also so aussehen: "mov%04d.jpg".

    Jetzt musst du nur noch für jedes Video wissen:

    - Nummer des ersten Bildes des Clips
    - Nummer des letzten Bildes des Clips
    - Framerate (fps)
    - benötigter Pixeltyp (wird für eine Komprimierung zu MPEG4 sicher YV12 sein)

    Die ersten 100 Bilder mit PAL-Framerate wäre also:
    movie001.avs

    PHP
    ImageSource("mov%04d.jpg", 0, 99, 25, false, false, "YV12")


    Die nächsten 100:
    movie002.avs

    PHP
    ImageSource("mov%04d.jpg", 100, 199, 25, false, false, "YV12")

    Du müsstest dann nur sehen, ob du ab mov10000.jpg dann %05d verwenden musst.


    Und dann fehlt eigentlich "bloß" noch die Automatisierung der Konvertierung von 200 AviSynth-Skripten in 200 AVIs (oder was auch immer).

  • Zitat

    Und dann fehlt eigentlich "bloß" noch die Automatisierung der Konvertierung von 200 AviSynth-Skripten in 200 AVIs (oder was auch immer).



    Das geht z.B. ganz prima mit "for /F" in CMD, womit man auch automatisiert die AVS-Dateien erzeugen und eine Kommandozeile für X264 oder ffmpeg generieren kann...
    ..oder man schreibt ein paar Zeilen perl.

Jetzt mitmachen!

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