• Hätte da mal ein Problem. Würde gerne aus mehreren JPEG Bildern ein AVI mit hilfe von AviSynth erstellen, nur leider bekomme ich das nicht hin. Wie muss ich vorgehen oder besser gefragt wie muss das Script aussehen?

    Ich meine mich daran Erinnern zu können das Selur mal so etwas aus Bildern zum vergleich zu Resize Filtern gemacht hat. Nur wie?

  • Vielleicht findet man mehr zur AviSynth-Funktion "ImageSource()", denn alle Clip-Quellen sollten einheitlich "...Source()" heißen. Aber ImageReader() ist nur ein anderer Name für ImageSource().

    http://avisynth.org/mediawiki/ImageSource

    Wichtig hierbei ist, die "sprintf-Syntax" zu verstehen. Irgendwie muss ja diese Funktion ausrechnen, welche Dateinamen zu deiner Bilderfolge passen.

  • Richtig; VirtualDub(Mod) kann auch eine Reihe von Bildern als Video einlesen, wenn sie geeignete Dateinamen haben (also immer schön fortlaufend nummeriert, und die kleinen Zahlen links mit Nullen aufgefüllt, dass sie immer gleich lang sind).

  • Gibt es auch ein 'Umbennenungstool' für Linux?

    Probleme kann man niemals mit derselben Denkweise lösen, durch die sie entstanden sind.

    Albert Einstein

  • Die große Schwierigkeit unter Linux ist, an der Kommandozeile Gruppen von Dateien nach Mustervorgaben umzubenennen. Hauptursache dafür ist, dass Platzhalter-Zeichen zuerst vom System in eine Liste von Dateinamen aufgelöst werden, bevor das Programm die Kommandozeile liest. Man müsste also, um etwas ähnliches wie

    ren DSC*.jpe *.jpg

    wie unter Windows zu erreichen, zunächst die Sternchen-Dateimasken durch die geeignete Quote-Variante vor der Auflösung durch die Shell schützen, damit das Programm selber auch den Stern zu sehen bekommt; und dann müsste das Programm schließlich die Umbenennung vornehmen.

    In einigen Linux-Distributionen mag es das Kommando "rename" geben, andere haben wohl nur das Shell-interne Kommando "mv" dafür zur Verfügung. Zum Umbenennen mehrerer Dateien aber wird man suchen müssen (z.B. nach Ausdrücken wie "rename multiple files with wildcards", "mass rename" oder "bulk rename"). Ein Beispiel dafür könnte z.B. "mmv" (multi move) sein.

    Ein paar mögliche GUI-Tools

  • ich habe hierzu auch mal ein paar fragen.

    ich habe mir diese seite angeschaut und die samples soweit auch verstanden.

    ich habe einen ordner mit bildern welche ich zu einem film machen möchte. jedes bild sollte 1 sek angezeigt werden. dafür gibts ja auch eine entsprechende option.
    allerdings sind in dem ordner 560 bilder.
    wie kann ich das machen, dass alle bilder hintereiander zu einem film verarbeitet werden und jedes bild 1sek angezeigt wird.

  • Kommt drauf an. Wichtigste Frage: Haben die 560 Bilddateien Dateinamen mit fortlaufenden Nummern, oder haben alle einen jeweils wesentlich unterschiedlichen Namen? Wenn du "die Samples soweit verstanden" hast, dass solltest du ja auch mit der "sprintf-Syntax" ein passendes Dateinamensmuster erstellen können, falls sie nach einem erkennbaren Muster benannt sind.

    Wenn du sie dann alle der Reihe nach als Clip mit 1 fps laden lassen kannst, dann gäbe es zwei Ansätze, sie beim Ändern von 1 fps auf 25 fps um das 25-fache zu vervielfachen:

    a) ChangeFPS(25)
    b) AssumeFPS(25).SelectEvery(1, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)

  • meisterlee
    Renaming via script ist in Linux überhaupt kein Problem und man brauch noch nicht mal Tools ala Joe dazu.

    Die Frage ist erst mal nach was du sortieren willst.
    Alphanumerisch:

    Code
    ls

    Nach Änderungsdatum:

    Code
    ls -ltr

    Alle .jpg's:

    Code
    ls *.jpg

    Grundsätzlich arbeitet man unter linux CLI mit "move" -> mv <old> <new>

    Nächste frage: wie soll denn die Nummerierung aussehen ? Einfach nur hochzählen, mit führender "0" oder "00" oder "pic" ...

    Das Ganze kann dann in eine Schleife verpackt werden.

  • Kommt drauf an. Wichtigste Frage: Haben die 560 Bilddateien Dateinamen mit fortlaufenden Nummern, oder haben alle einen jeweils wesentlich unterschiedlichen Namen? Wenn du "die Samples soweit verstanden" hast, dass solltest du ja auch mit der "sprintf-Syntax" ein passendes Dateinamensmuster erstellen können, falls sie nach einem erkennbaren Muster benannt sind.

    Wenn du sie dann alle der Reihe nach als Clip mit 1 fps laden lassen kannst, dann gäbe es zwei Ansätze, sie beim Ändern von 1 fps auf 25 fps um das 25-fache zu vervielfachen:

    a) ChangeFPS(25)
    b) AssumeFPS(25).SelectEvery(1, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)

    also die bilder kann ich alle mit vortlaufender nummer machen. (ist im moment nach datum sortiert. (2010-08-03 bis 2012-03-05)
    hatte auch gemerkt das es da für besser geht.

    ein bild kann man ja auch 25mal pro sekunde anzeigen lassen mit dem operator: end = 25
    aber das geht ja nur für ein bild. ich könnte jetzt aus jedem bild einen 1sek-clip machen und die zusammen muxen.

    dein weg a) der ist nicht so gut oder? hatte da mal gelesen das changefps nicht so optimal arbeitet.
    dein weg b) verstehe ich nicht so ganz was das da in klammern ist mit den vielen Nullen)


    am liebsten wäre es mir wenn man in einem AVS-script das ganze unterbringen könnte.

  • Na ja, du kannst folgendes machen:

    Code
    # Read files "100.jpg" through "199.jpg" into an PAL clip
    ImageSource("%d.jpg", 100, 199, 25)
    SelectEvery(1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0) # 25 zero's

    Das .avs Script öffnet die Alle Dateien beginnend von 100.jpg bis 199.jpg. Daraus wird ein Video Stream erzeugt mit 25fps bestehend aus 100 Bildern (4 Sekunden)
    Um jetzt jedes Bild 1 Sekunde darzustellen (100 sek = 1:40 min) wird durch das "SelectEvery" jedes Bild 25 Mal wiederholt.
    "SelectEvery(1 ..." -> für jedes 1. Bild stelle 25 mal (25 Nullen) Bild Nummer "0" (also sich selbst) da.

  • @ hubble4c:

    Was du anscheinend rund um ImageSource noch nicht so recht verstanden hast: Damit lädst du möglichst nicht ein einzelnes Bild, sondern die gesamte Bilderliste. In deinem Fall hättest du also nach der korrekten Anwendung einen Video-Clip, der aus den 560 Bildern besteht, jedes deiner Bilder wurde zu einem Frame im Video.

    Damit die Bilder je eine Sekunde lang angezeigt werden, gibst du ImageSource erst mal eine Framerate von 1 fps vor.

    Die bei PAL übliche Framerate ist natürlich 25 fps. Um bei dieser Framerate ein Bild eine Sekunde lang zu sehen, muss es 25 Frames lang angezeigt werden. Es muss also jedes einzelne Frame 25 Mal vervielfacht werden. Variante b) tut eben genau das, wie es may24 beschrieben hat, anschaulich auf "triviale Art": Tatsächlich jedes Frame 25 Mal wiederholen. Variante a) wird vermutlich das gleiche tun, nur kann ich da nicht "hinter die Kulissen schauen" und nur vermuten, dass es wohl genauso laufen könnte; allerdings fallen mir mögliche Fallen ein, in die man hier tappen könnte (z.B. dass vielleicht das erste Bild nur 12 oder 13 Mal wiederholt wird), was also zu testen wäre.

    Um dir alles ganz genau erklären zu können, wie alles zu einem AviSynth-Skript zusammenkommt, müsste ich wissen, wie deine Bilder ganz genau heißen, damit dich nicht unterschiedliche Bildnamen verwirren.

    Auf gute Zusammenarbeit:

    REGELN befolgen | SUCHE benutzen | FAQ lesen | STICKIES beachten

    2 Mal editiert, zuletzt von LigH (6. März 2012 um 16:54)

  • Na ja, du kannst folgendes machen:

    Code
    # Read files "100.jpg" through "199.jpg" into an PAL clip
    ImageSource("%d.jpg", 100, 199, 25)
    SelectEvery(1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0) # 25 zero's

    Das .avs Script öffnet die Alle Dateien beginnend von 100.jpg bis 199.jpg. Daraus wird ein Video Stream erzeugt mit 25fps bestehend aus 100 Bildern (4 Sekunden)
    Um jetzt jedes Bild 1 Sekunde darzustellen (100 sek = 1:40 min) wird durch das "SelectEvery" jedes Bild 25 Mal wiederholt.
    "SelectEvery(1 ..." -> für jedes 1. Bild stelle 25 mal (25 Nullen) Bild Nummer "0" (also sich selbst) da.


    danke für die erklärung und den codeschnipsel. klingt für mich sehr gut und werde es dann gleich mal testen.

Jetzt mitmachen!

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