你好,我正在尝试遍历子目录并播放子目录中的所有 MP3,但停止后我只播放一首曲目,这是我的代码
#!/bin/bash
shopt -s globstar nullglob dotglob
cd /home/user/AUDIO
find . -wholename "*/*.mp3" | while read line; do
TITLE=$(ffprobe -loglevel error -show_entries format_tags=title -of default=nw=1:nk=1 "$line")
ARTIST=$(ffprobe -loglevel error -show_entries format_tags=artist -of default=nw=1:nk=1 "$line")
DURATION=$(ffprobe -loglevel error -show_entries format=duration -of default=nw=1:nk=1 "$line")
playCMD=$(ffplay -i "$line")
if bash -c "$playCMD"; then
echo "PLAYING NOW\!\!\! Track: $TITLE Title: $ARTIST Duration: $DURATION"
else
echo "nothing to play"
fi
done
答案1
您只需添加-autoexit
选项即可ffplay
。
现在,为什么是bash -c
而不是 呢ffplay -autoexit -i "$line"
?
而且由于您使用的是 bash,因此您可以用以下方式替换循环:
for f in **/*.mp3
do
TITLE=
...
echo "PLAYING NOW\!\!\! Track: $TITLE Title: $ARTIST Duration: $DURATION"
else
echo "nothing to play"
fi
done