• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Stapelverarbeitung für ffmpeg?

hallo leute!

hoffentlich könnt ihr mir ein wenig helfen.
ich bräuchte ein kurzes script, um einige video-schnipsel auf ein andere auflösung zu bringen.

alle videos wären in einem bestimmten ordner.
ich stelle mir ein script vor, das nacheinander alle videos bearbeitet und sie in neuer grösse neu abspeichert (dateiname beispielsweise um einen buchstaben oder so erweitert).

kann mir da jemand tipps geben?
den ffmpeg-befehl kriege ich wahrscheinlich hin, ich weiss aber nicht, wie ich ihm variablen übergeben kann...
oder sollte ich lieber transcode verwenden? ideal wäre ein befehl, der auch schwarze ränder ergänzen könnte (widescreen -> vga).

gruss
volker
 
Hallo Volker,

mit z.B. mencoder könntest Du es eventuell in einem 1-Zeiler machen.
Folgende Zeile sucht mit find alle mpg, übergibt die Ergebnisse an mencoder, welcher dann skaliert auf 140 Pixel Breite (gleiches Verhältnis) und dann mit demselben Namen +Endung avi abspeichert.

Code:
find *.mpg -exec mencoder '{}'  -vf scale -zoom -xy 140 -o '{}'.avi -oac copy -ovc lavc -lavcopts vcodec=mpeg4 ';'

ffmpeg läuft hier zur Zeit beim Aufruf auf einen Fehler, aber ich denke eine Zeile wie:
Code:
find *.mpg -exec ffmpeg -i '{}'  -s sqcif '{}'neu.mpg ';'

könnte auch laufen. Leider fehlt mir auf die Schnelle die script Kenntnis, um die Namen schöner abzubilden.
Vielleicht muss man da mit cut o.ä. ein bisschen schneiden.
 
hi longman!

vielen dank für deinen tipp! hat vorzüglich funktioniert!
ich habe folgenden befehl benutzt:
Code:
find *.AVI -exec mencoder '{}'  -vf scale=640:480 -o '{}'.avi -oac copy -ovc 
lavc -lavcopts vcodec=mpeg4 ';'

jetzt hätte ich dazu noch zwei fragen.

1. mein ausgangsmaterial hat die auflösung 640x384. es soll wie oben zu erkennen auf 640x480 konvertiert werden. bei obigem beispiel geschieht das durch "strecken" des films. gibt es auch eine möglichkeit, anstelle des verzerrens schwarze balken oben und unten einzufügen?
2. richtig genial wäre es, wenn es eine möglichkeit gäbe, ganz viele dateien mittels eines ähnlichen befehls zu einem film zusammenzufassen. die filmchen liegen schon in sortierter reihenfolge vor, das wäre also nicht das problem. das script müsste einfach nur alle filme, sortiert nach dateiname, zu einem einzigen film zusammenfassen. geht sowas? wäre super!

danke und gruß
volker
 
Im Paket 'Transcode' liegt der nützliche Befehl 'avimerge', ebenso müsste in diesem Fall das 'cat'ten aller vorhandenen Schnipsel zu einer Datei funktionieren.
 
danke für den tipp!

ich bin script-technisch jedoch leider nicht ganz so fit.
wie erreiche ich bei avimerge denn zum beispiel, dass er automatisch alle avi's in einem bestimmten ordner zusammenfasst?

ich will ja schließlich nicht alle dateinamen einzeln eintippen müssen... ;)

und zur änderung des bildformates gibt es keinen script-befehl, der auch nen schwarzen rahmen addieren kann, oder?

gruss
volker
 
Die Sache ist nur die: woher soll avimerge wissen, in welcher Reihenfolge die Teile zusammengeklebt werden sollen? Kannst es zur Not ja mal mit wildcards probieren, auch die bashcompletion der Dateinamen per 'tab' funktioniert bestimmt. Kann aber durchaus sein, dass ich hier eine Option übersehe.
 
Die Sache ist nur die: woher soll avimerge wissen, in welcher Reihenfolge die Teile zusammengeklebt werden sollen?

naja, ich dachte, das würde nach der namensortierung geschehen können. ich habe nämlich allen filmschnipsel die datumsangaben vorangestellt, also 081003, 081004, 081005 usw...

wildcards? bashcompletion? du meinst, ich müsste die namen tatsächlich alle eintippen? das wäre ja ein riesenaufwand...
 
stolley schrieb:
hallo leute!

hoffentlich könnt ihr mir ein wenig helfen.
ich bräuchte ein kurzes script, um einige video-schnipsel auf ein andere auflösung zu bringen.

alle videos wären in einem bestimmten ordner.
ich stelle mir ein script vor, das nacheinander alle videos bearbeitet und sie in neuer grösse neu abspeichert (dateiname beispielsweise um einen buchstaben oder so erweitert).

kann mir da jemand tipps geben?
den ffmpeg-befehl kriege ich wahrscheinlich hin, ich weiss aber nicht, wie ich ihm variablen übergeben kann...
oder sollte ich lieber transcode verwenden? ideal wäre ein befehl, der auch schwarze ränder ergänzen könnte (widescreen -> vga).

gruss
volker

wenn es eine Lösung mit GUI sein darf: winff sollte genau das können
http://packman.links2linux.de/package/winff

ansonsten gibt es noch jMencode, yameg (auch bei packman verfügbar)
 
danke, das klingt super!
werd's mal ausprobieren.

was ich inzwischen geschafft habe:

meine videos per script oben und unten mit schwarzem balken zu versehen, um sie von 640x384 auf 640x480 zu bringen:

Code:
find *.AVI -exec mencoder '{}'  -vf expand=0:-96:0:100 -o '{}'neu.avi -oac copy -ovc lavc -lavcopts vcodec=mpeg4 ';'
 
Tip:
mit winff alles einstellen und dann die "Konsolen-Ausgabe anzeigen lasse" ==> du hast die ffmpeg Befehle mit Paramter etc und kannst sie in dein bash-script rein packen :)
 
wenn es eine Lösung mit GUI sein darf: winff sollte genau das können

tja, winff habe ich installiert.
aber da muss ich ja auch einzeln die film dazupacken, oder?
das nimmt mir ja leider nicht wirklich arbeit ab.

ich dachte, es gebe einen so ähnlichen befehl wie diesen hier:

Code:
find *.AVI -exec mencoder '{}'  -vf scale=640:480 -o '{}'.avi -oac copy -ovc
lavc -lavcopts vcodec=mpeg4 ';'

nur halt, um die videoschnipsel aneinanderzufügen?

gruss
volker
 
Oben