Bert Brenner
16.06.09, 11:07
Ich habe massig flv Dateien die ich gerne konvertieren möchte. Um das ganze schnell laufen zu lassen würde ich gerne 4 Instanzen von mencoder gleichzeitig laufen lassen.
Ich vermute mal das mein Aufruf der Funktion encode mit & eine Subshell startet und daher ENCODERS immer wieder auf 0 steht.
Gibts eine Lösung für mein Problem?
Ich habe hier mal ein paar Sleeps eingefügt damit ihr das Problem leicht nachvollziehen könnt.
#!/bin/bash
ENCODERS=0
encode() {
while [ $ENCODERS -gt 3 ]; do
echo Warte...
sleep 5
done
ENCODERS=$(($ENCODERS + 1))
echo Count: $ENCODERS In: $1 Out: $2
#mencoder $1 -oac mp3lame -lameopts cbr:br=32:mode=3 -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=250
sleep 20
echo Done
ENCODERS=$(($ENCODERS - 1))
}
for INPUT_FILE in $*; do
OUTPUT_FILE=$(basename $INPUT_FILE .flv).avi
sleep 1
encode $INPUT_FILE $OUTPUT_FILE &
done
Ich vermute mal das mein Aufruf der Funktion encode mit & eine Subshell startet und daher ENCODERS immer wieder auf 0 steht.
Gibts eine Lösung für mein Problem?
Ich habe hier mal ein paar Sleeps eingefügt damit ihr das Problem leicht nachvollziehen könnt.
#!/bin/bash
ENCODERS=0
encode() {
while [ $ENCODERS -gt 3 ]; do
echo Warte...
sleep 5
done
ENCODERS=$(($ENCODERS + 1))
echo Count: $ENCODERS In: $1 Out: $2
#mencoder $1 -oac mp3lame -lameopts cbr:br=32:mode=3 -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=250
sleep 20
echo Done
ENCODERS=$(($ENCODERS - 1))
}
for INPUT_FILE in $*; do
OUTPUT_FILE=$(basename $INPUT_FILE .flv).avi
sleep 1
encode $INPUT_FILE $OUTPUT_FILE &
done