4

.mp4ビデオを.mp3オーディオに変換するためのこのbashスクリプトがあります。実行されますが、ループは1回だけ実行されますが、にはさらにmp4ファイルがあります/home/myname/mp4dir

スクリプトは、ファイルが既に存在しない限り、最初.mp4に見つかったファイルをに変換します。これはループで実行する必要がありますが、ffmpegの最初の呼び出しの後、スクリプトは停止します。.mp3.mp3

なんで?

#!/bin/bash
find /home/myname/mp4dir -name "*.mp4" | while read f
do
        fOut=`echo $f | sed s/mp4/mp3/`
        echo "convert $f => $fOut"
        if ! test -f $fOut
        then
                ffmpeg -i $f -vn -f mp3 $fOut
        fi
done
4

3 に答える 3

8

答えはffmpegに追加することです-nostdin(このような古い質問には答えませんが、関連するGoogle検索でトップになります)。

于 2015-09-06T21:15:24.957 に答える
4

ターミナルでこれを試してください

bash nohup.shを作成し、これに貼り付けます

#!/bin/sh
while true
do
 /var/www/bash/Someother-bash-script-goes-here.sh
 sleep 60
done

nohup.shが配置されているターミナルタイプ

nohup sh nohup.sh >/dev/null 2>&1 &

nohup、60秒ごとに実行されます。このようにgrepサービスチェックを実行できます

 #!/bin/sh
SERVICE='ffmpeg'

if ps ax | grep -v grep | grep $SERVICE > /dev/null
then
    echo "$SERVICE service running, will not bother ffmpeg yet"
else
    echo "$SERVICE is not running"
    echo "$SERVICE is not running!" | /var/www/bash/start_service.sh
fi
于 2012-10-26T10:47:22.710 に答える
3

コメントから、ループしている入力ファイル(どのような種類のものでも)が実際にありffmpeg、少なくとも1回は開始することがわかりました。その後、あなたは立ち往生しています。

追加

&> ffmpeg.outerr < /dev/null 

コマンドにアクセスし、「ループ」、つまりffmpegの実行中ffmpegにファイルを監視します。ffmpeg.outerrそれはあなたに問題が何であるかを教えてくれます。この問題を自分で解決するか、タグを使用してこのffmpeg固有の問題ffmpegでstackoverflowに戻ることができます。

于 2012-09-22T14:55:30.610 に答える