簡體   English   中英

Bash 腳本在 while 循環中停止執行 ffmpeg - 為什么?

[英]Bash script stops execution of ffmpeg in while loop - why?

我有這個 bash 腳本,用於將.mp4視頻轉換為.mp3音頻。 它運行,但只循環一次,盡管/home/myname/mp4dir有更多的 mp4 文件。

該腳本將它找到的第一個.mp4文件轉換為.mp3 ,除非已經有一個.mp3文件。 這應該在循環中完成,但在第一次調用 ffmpeg 后腳本停止。

為什么?

#!/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

答案是將-nostdin添加到 ffmpeg (不會回答這樣的老問題,但仍然是相關的 Google 搜索中的佼佼者)。

在終端試試這個

創建 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

從我們得到的評論中,實際上有您正在循環的輸入文件(無論哪種),並且ffmpeg至少啟動一次。 然后,你被卡住了。

添加

&> ffmpeg.outerr < /dev/null 

到您的ffmpeg命令並在您的“循環”(即 ffmpeg)執行時監視文件ffmpeg.outerr 它會告訴你問題是什么。 您可以自己解決這個問題,或者您使用標簽ffmpeg返回到 stackoverflow 解決這個ffmpeg 特定的問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM