循环遍历子目录并播放所有 mp3 文件

循环遍历子目录并播放所有 mp3 文件

你好,我正在尝试遍历子目录并播放子目录中的所有 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

相关内容