Вы также можете использовать ffprobe, который является частью ffmpeg.
sudo apt-get install ffmpeg
ffprobe file.mp3
Если вам не нужна другая информация, например длина дорожки и т. д., вы можете комбинировать вывод с grep:
ffprobe file.mp3 2>&1 | grep -A90 'Metadata:'
Или для того, чтобы получить только автора:
ffprobe -loglevel error -show_entries format_tags=artist -of default=noprint_wrappers=1:nokey=1 file.mp3
Вы можете выбрать другие теги, разделив их запятой, например format_tags=title,album. [ ! d4]
Я хотел найти ключевое слово во всех mp3-файлах в папке. В папке было 486 файлов, поэтому стало интересно узнать, какое из упомянутых здесь решений является самым быстрым. Вот цикл, который я использовал:
# sudo apt-get install ffmpeg lltag eyed3 mp3info id3v2 libimage-exiftool-perl libid3-tools id3tool
keyword='fill_me_in'
getTitleFF() { ffprobe "$1" 2>&1 | sed -E -n 's/^ *title *: (.*)/\1/p'; }
getTitleLL() { lltag --show-tags title "$1" | sed -nE 's/^ TITLE=(.*)/\1/p'; }
getTitleEyed() { eyeD3 2>&1 "$1" | grep 'title'; }
getTitleInfo() { mp3info -p %t "$1"; }
getTitleId3() { id3v2 -l "$1" | sed -nE 's/^TIT2 \([^)]*\): (.*)/\1/p'; }
getTitleExif() { exiftool -title -b "$1"; }
getTitleId3i() { id3info "$1" | sed -n 's/^=== TIT2 \(.*\): //p'; }
getTitleTool() { id3tool "$1" | sed -n 's|^Song Title:\t||p'; }
for prog in FF LL Eyed Info Id3 Exif Id3i Tool; do
echo "=== getTitle${prog} ==="
time \
for file in *.mp3; do
if "getTitle${prog}" "$file" | grep -q "$keyword"; then
echo "$file"
fi
done
done
Примечания:
lltag и mp3info не находят название, потому что файлы, которые я использовал, имели теги ID3v2, см. комментарий от @ s-prasanth: Как читать mp3-теги в оболочке? eyeD3 проблематично использовать программно, потому что он использует цветовые коды (смелость). eyeD3, а также id3v2 (но только для тегов ID3 v1) возвращают название и исполнителя в той же строке, что еще больше усложняет ситуацию; поэтому getTitleEyed, а иногда getTitleId3 возвращают название и исполнителя, поэтому, пожалуйста, не копируйте эти функции. getTitleId3 будет работать только для тегов ID3 v2, потому что id3v2 имеет разные форматы для ID3v1- и ID3v2-тегов, то естьTitle : Artist:
против ID3v2: TIT2 (Title/songname/content description):
Поскольку единственная программа этих 5 eyeD3 печатает красное предупреждение для два файла: Invalid mode/bitrate combination for layer II
No ID3 v1.x/v2.x tag found!
Кажется, что эти два файла имеют теги ID3v1, потому что эти два файла являются единственными, где lltag и mp3info могут получить заголовок. Мне интересно, если это ошибка в eyeD3, поскольку никакая другая программа, упомянутая здесь, не имеет проблемы с этими файлами ... Примечания:
Поразительно, что победитель здесь id3tool (mp3info работает быстрее, но не работает с ID3 v2). id3v2 также довольно быстро, но функция getTitleId3 нуждается в настройке, чтобы работать с ID3v1-тегами, что в худшем случае может замедлить его в 2 раз.
Я предлагаю вам искать «плагины gstreamer» в программном центре. В описании он покажет, какой из них вам нужен для mp3.
, если вы не найдете ничего, что вам, вероятно, нужно включить в источники Universe и Multiverse. вы можете сделать это при редактировании >> источников программного обеспечения.