PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Selbst geschriebenes Shellskript funktioniert nicht ganz



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

Painkiller
16.06.09, 12:06
Kannst einen dreckigen Workaround machen:


for video in *.flv ; do

mencoder $video -video -parameter &

while [ "`pgrep mencoder | wc -l`" -gt "4" ] ; do

sleep 4

done

done

:ugly:

Bert Brenner
16.06.09, 14:00
Na klar, warum bin ich da nicht selbst drauf gekommen.

Das reicht natürlich. Danke.