enquanto o loop está sendo executado apenas uma vez?

1

Eu estou tentando fazer um clipe fora do arquivo de vídeo, jogando-o apenas por um determinado intervalo.

make_mclip.sh

#!/bin/bash

mediafile=$@
mediafile_fullpath=$PWD/./$mediafile
tmpedlfile=$(mktemp)

mplayer -edlout $tmpedlfile "$mediafile" &> /dev/null

cat $tmpedlfile | while read f
do
    startpos=$(echo $f | awk '{print $1}')
    endpos=$(echo $f | awk '{print $2}')
    length=$(echo "$endpos-$startpos" | bc)

    tmpclip=$(mktemp --suffix='.mclip' --tmpdir=$PWD)
    echo -e "$mediafile_fullpath\t$startpos\t$length" > $tmpclip

    mplayer_clip.sh "$tmpclip" &>/dev/null

    echo -n "clip name : "
    read clipname < /dev/tty

    mv -nv "$tmpclip" "$clipname.mclip"
done

echo doing rm "$tmpedlfile"

mplayer_mclip.sh

#!/bin/bash

mediafile=$(cat "$@" | awk -F'\t' '{print $1}')
startpos=$(cat "$@" | awk -F'\t' '{print $2}')
length=$(cat "$@" | awk -F'\t' '{print $3}')

mplayer -ss $startpos -endpos $length "$mediafile" &> /dev/null

Mas, por algum motivo, o loop while em make_mclip.sh é executado apenas uma vez, mesmo que $ tempedlfile contenha mais de uma linha; a única exceção é se a linha

    mplayer_clip.sh "$tmpclip" &>/dev/null

é removido.

O que há de errado?

ps. Eu também gostaria de saber se já existe um programa para isso.

    
por AirTycoon 21.10.2013 / 04:09

1 resposta

1

mplayer está "consumindo" tmpedlfile conteúdo restante. Você precisa adicionar uma opção para não ignorar sua stdin:

mplayer -noconsolecontrols -ss $startpos -endpos $length "$mediafile" &> /dev/null
    
por 21.10.2013 / 05:05