[英]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.