sQeez
Anmeldungsdatum: 14. August 2009
Beiträge: Zähle...
|
Hi Leute,
ich wollte mir ein Skript schreiben, dass mir automatisch alle Videos in einem Ordner (den ich als Parameter übergebe $1) in das Format umwandelt, dass ich auch als Parameter übergebe $2. Doch das Skript funktioniert nicht so wie es soll, denn die while-Schleife bricht nach dem ersten ffmpeg ab, sodass das Skript nur ein Video umwandelt, aber ich weiß nicht warum. | #!/bin/bash
ls -S "$1" > /tmp/.convert
a=1
while read LINE
do
ffmpeg -i "$1/$LINE" -target "$2" vid"$a"
a=$((a+1))
done < /tmp/.convert
|
Ich hoffe ihr könnt mir helfen! Bearbeitet von rklm: Syntaxhighlightinh
|
tuantub
Anmeldungsdatum: 8. Juni 2007
Beiträge: Zähle...
Wohnort: Berlin
|
Hallo, versuch mal vid"$a" durch vid$a zu ersetzen, vielleicht steckt hier der Hase 😉
|
user_unknown
Anmeldungsdatum: 10. August 2005
Beiträge: 17552
Wohnort: Berlin
|
tuantub schrieb: Hallo, versuch mal vid"$a" durch vid$a zu ersetzen, vielleicht steckt hier der Hase 😉
Weißt Du das durch Studium der Handbücher? Hast Du es ausprobiert? Oder ist es nur geraten?
|
tuantub
Anmeldungsdatum: 8. Juni 2007
Beiträge: 55
Wohnort: Berlin
|
|
user_unknown
Anmeldungsdatum: 10. August 2005
Beiträge: 17552
Wohnort: Berlin
|
Sowas kann man aber ausprobieren, bevor man es anderen als Lösung anbietet. sQeez schrieb: Ich hoffe ihr könnt mir helfen!
In /tmp/.convert steht aber mehr als eine Datei?
|
sQeez
(Themenstarter)
Anmeldungsdatum: 14. August 2009
Beiträge: 6
|
user unknown schrieb: In /tmp/.convert steht aber mehr als eine Datei?
Ja klar. Ich hab vorher anstatt ffmpeg zu benutzen, mir den Inhalt der Variable LINE mit echo ausgegeben, also liest read die Datei Zeile für Zeile aus und in die Datei hab ich auch rein geguckt und da stehen auch mehr als eine Datei drin.
Ich versteh auch wirklich nicht, warum die while-Schleife abbricht, dass Skript müsste doch eigentlich funktionieren.
Oder nicht ^^?
|
user_unknown
Anmeldungsdatum: 10. August 2005
Beiträge: 17552
Wohnort: Berlin
|
sQeez schrieb: Ich versteh auch wirklich nicht, warum die while-Schleife abbricht, dass Skript müsste doch eigentlich funktionieren.
Oder nicht ^^?
Ich bin da sehr vorsichtig. Wenn etwas nicht klappt, dann meist, weil man was falsch gemacht hat, auch wenn man es nicht sofort sieht. Oder nach 10 Minuten. Im Sinne von "SELECT is broken!"
|
NoKurth
Anmeldungsdatum: 18. August 2006
Beiträge: 430
|
Hallo sQeez,
ich habe es mir mal angeschaut und bin zu dem Ergebnis gekommen, dass ffmpeg ein Problem hat. Egal, was ich anstelle, nachdem ffmpeg ein Mal durchgelaufen ist, liefert das nächste read das Dateiende. Irgend etwas scheint hier nicht zu stimmen. Wird ffmpeg im Hintergrund aufgerufen (& am Zeilenende), funktioniert alles ohne Probleme... Ich weiß auch nicht woran es liegt, kann es aber mit Jaunty 64bit nachstellen.
Viele Grüße Norman
|
sQeez
(Themenstarter)
Anmeldungsdatum: 14. August 2009
Beiträge: 6
|
Alles klar!! Vielen dank für deine schnelle Hilfe!!!
Es funktioniert! Nur er wandelt natürlich jetzt alle Videos gleichzeitig um ^^
Ich muss noch gucken wie ich das hinkriege, dass er dann nicht alle gleichzeitig umwandelt.
Aber erst mal vielen Dank!!!
|
abulafia2
Anmeldungsdatum: 5. Februar 2009
Beiträge: 208
|
NoKurth schrieb: ich habe es mir mal angeschaut und bin zu dem Ergebnis gekommen, dass ffmpeg ein Problem hat.
Das hängt tatsächlich mit dem Design von ffmpeg zusammen. Auch wenn den Thread niemand mehr verfolgt - ich habe so lange nach einer Lösung gesucht, dass ich sie einfach mal poste. Man muss in den Zeilen mit dem ffmpeg-Aufruf am Ende "< /dev/null" einfügen. Im konkreten Beispiel also: #!/bin/bash
ls -S "$1" > /tmp/.convert
a=1
while read LINE
do
ffmpeg -i "$1/$LINE" -target "$2" vid"$a" < /dev/null
a=$((a+1))
done < /tmp/.convert Dann arbeitet funktioniert die Schleife wie gewünscht. Hoffentlich hilft es jemandem. (Lösung gefunden auf http://lists.mplayerhq.hu/pipermail/ffmpeg-user/2008-December/018263.html.)
|
sQeez
(Themenstarter)
Anmeldungsdatum: 14. August 2009
Beiträge: 6
|
vielen dank für deine Lösung!!!
|
NoKurth
Anmeldungsdatum: 18. August 2006
Beiträge: 430
|
Hallo. abulafia2 schrieb: NoKurth schrieb: ich habe es mir mal angeschaut und bin zu dem Ergebnis gekommen, dass ffmpeg ein Problem hat.
Das hängt tatsächlich mit dem Design von ffmpeg zusammen. [...]
Danke, dass meine Theorie bestätigt wurde. Dies sind die Momente, wo es richtig Spaß macht, hier zu helfen.
Gruß Norman
|
delmic
Anmeldungsdatum: 12. März 2010
Beiträge: 116
Wohnort: Grafenrheinfeld
|
Ich hatte das gleiche Problem und ich hatte viele Varianten in meinem Skript ausprobiert, bis ich auf diesen Post gestoßen bin. Ich habe das Programm mkvdts2ac3 aus einem Skript aus aufgerufen mit < /dev/null wird jetzt endlich nicht nur die erste Zeile abgearbeitet.
| #!/bin/bash
#!/bin/sh
Liste=Serien.txt
while read line
do
./mkvdts2ac3.sh "$line" < /dev/null
done < $Liste
|
Da möchte ich doch einfach mal Danke sagen für den Post der Lösung. Grüße Michael
|