FFMPEG: "I/O error occurred"

Teilerfolg???

Ich bin nun soweit, dass ich ein Bild umwandeln kann, wenn ich den kompletten Dateinamen angebe :confused::

ffmpeg -f image2 -i ./20110312224654598.jpg ./test.avi

Input #0, image2, from './20110312224654598.jpg':
Duration: 00:00:00.04, start: 0.000000, bitrate: N/A
Stream #0.0: Video: mjpeg, yuvj420p, 640x480, 25 tbr, 25 tbn, 25 tbc
Output #0, avi, to './test.avi':
Stream #0.0: Video: mpeg4, yuv420p, 640x480, q=2-31, 200 kb/s, 90k tbn, 25 tbc
Stream mapping:
Stream #0.0 -> #0.0
Press [q] to stop encoding
frame= 1 fps= 0 q=4.7 Lsize= 41kB time=0.04 bitrate=8417.6kbits/s
video:36kB audio:0kB global headers:0kB muxing overhead 15.680400%



Allerdings klappt das Konvertieren von mehreren Bildern noch nicht.

#ffmpeg -f image2 -i ./2011%d.jpg ./test.avi

./2011%d.jpg: I/O error occurred
Usually that means that input file is truncated and/or corrupted.
 
Seid ihr denn sicher, dass diese Wildcard "%d" unter den gegebenen Vorrausetzungen funktioniert? Muss dafür eventuell eine andere Shell genutzt werden oder noch eine Lib mit eincompiliert?
 
Hat bei dir der Aufruf mit dem %d funktioniert?
Ach ja, das richtige Pattern lautet %Zahld, wobei die Zahl der Anzahl der Ziffern im Dateinamen entspricht (ganz gewöhnliche printf-Syntax). Die erste Datei muss dabei unbedingt den Namen haben, der durchs Anwenden des Patterns auf 1 entsteht, i.e. lautet das Pattern bild%04d.jpg, so werden die folgenden Dateien erwartet: bild0001.jpg, bild0002.jpg, bild0003.jpg usw. Beginnen die Namen irgendwo mittendrin, so kann man sich mit dem hier beschriebenen Trick behelfen.

@phoneuser: und das alles hat nichts mit freetz zu tun, das hättest Du auf der ffmpeg-Homepage nachlesen können. Das default-output-Format lautet übrigens mpeg4, das schafft die Box ressourcenmäßig nicht wirklich. Welche zusätzlichen Parameter übergeben werden müssen, sei Dir als Übungsaufgabe überlassen ;-)
 
Das ist doch schon mal was :p...

Auch wenn es am Ende nichts bringen sollte, bin ich mit sicherheit um eine Erfahrung reicher.

Na dann...Bericht folgt.
 
Klappt!

Hallo zusammen,

es funktioniert nun. Ich konnte eine Serie von jpg-Bildern in ein avi-Format umwandeln. Der clou an der Geschichte ist wohl das Umbenennen aller Bilder in die Form "img001.jpg, img002.jpg" etc. Erst danach werden diese verarbeitet. Die Meldungen von ffmpeg sind hier etwas irreführend!

Es steht noch so einiges an (Framerate, Größe vom Video usw.), aber das ist Feintuning... Danke für Eure Hilfe. :blonk:
 
nächstes Problem ...

..nachdem ich nun die Konvertierung hinbekommen habe, hänge ich bei folgendem Phänomen fest:

Ich sortiere die Bilder mit "ls -ltr" nach timestamp und benenne diese entsprechend um (img001, img002 etc).

Das erzeugte Video entspricht nicht der Chronologie der Bildfolge. Man muss sich das in etwa so vorstellen, dass z.B. eine Person die Strasse entlang geht und dabei drei Schritte vor und zwei Schritte zurück macht...???
 
Und welcher deiner Schritte funktioniert nicht?

Gruß
Oliver
 
Ich sortiere die Bilder mit "ls -ltr" nach timestamp und benenne diese entsprechend um (img001, img002 etc).
und entspricht die Timestamp-Reihenfolge der "Chronologie der Bilder"? Wie kommen die Dateien in das Verzeichnis, in dem sie umbenannt/umgewandelt werden? per ftp? Wird der Timestamp beim Übertragen beibehalten (bei den meisten mir bekannten ftp-Servern nicht)? Auf jeden Fall bin ich mir zu 99% sicher, dass die Datei-Timestamp-Reihenfolge einfach nicht die richtige ist. Sorg' entweder dafür, dass die Timestamp-Reihenfolge der Chronologie entspricht, oder schreib ein kleines Script, welches eine Zahl als Parameter bekommt und beginnend mit dieser die Dateien umbenennt. Oder noch besser patche ffmpeg und übergib diese Zahl dem ffmpeg (kann nicht so schwer sein, lernst auch C dabei ;-)).
 
Oh ja, C wollte ich immer mal lernen ;)

Ich habe mittlerweile die Lösung gefunden (auch wenn ich nicht weiss warum) :confused:

Ich verwende keine Sortierung, sondern lasse mir die Dateinamen einfach auflisten (ls -1). Diese nummeriere ich dann mittels einer for-Schleife durch und formatiere den Dateinamen entsprechend für ffmpeg. Nun passt auch die Chronologie im Film. Es kann sein, dass anhand des Dateinamens die Reihenfolge passt. Die original FTP-Dateien sehen so aus:

20110324195814812.jpg
20110324195815011.jpg
20110324200335488.jpg
20110324200335687.jpg
20110324200335886.jpg
20110324200336085.jpg
20110324200336284.jpg
20110324200336483.jpg
20110324200336682.jpg

200 Dateien wurden in knapp einer Minute konvertiert. Morgen werden sich wohl mehrere Tausend Dateien ansammeln. Bin mal gespannt, wie lange die Konvertierung dann dauert ...
 
Zuletzt bearbeitet:
Es ist naheliegend, daß die Dateinamen aufsteigen vergeben werden, auf jeden Fall ist der Ansatz viel besser, als nach Timestamp zu sortieren, insbesondere bei Dateisystemen, bei denen die Auflösung 1 Sekunde ist, was für die meisten Dateisysteme zutrifft.
Damit sind schon die ursprünglichen Timestamps ungeeignet, schon vor eventuellen Veränderungen, die noch dazu kommen können.

Die Ziffern sind höchstwahrscheinlich Jahr, Monat, Tag, Stunde, Minute, Sekunde, Tausendstel. Klar passt da die Reihenfolge.
 
Kurz zur Erinnerung: Ziel war es ja, die JPG-Bilder einer IP-Cam auf einem Stick an der Fritzbox zu speichern und diese dann mit ffmpeg zu AVI zu konvertieren (per shellskript und via crontab) . Den AVI-Film wollte ich dann freigeben und am Fernseher mittels der Dreambox 800 anschauen. Es funktioniert!!!:p

Die Konvertierung geht überraschend gut. Ich muss sagen, dass ich es Nachts laufen lasse und daher der Zeitfaktor keine große Rolle spielt. Einige Kleinigkeiten wie Variablen in der crontab oder Filmparameter muss ich noch optimieren, aber damit möchte ich hier keinen behelligen. Danke an Alle, die geholfen haben. :D
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.