Як читати mp3 теги в оболонці?


53

Чи є спосіб прочитати mp3-теги файлу з оболонки? Щось на зразок: mp3tags MyFile.mp3 authorмає вивести авторський тег mp3-файлу.

Відповіді:


47

Ви також можете використовувати те, ffprobeщо входить до складу ffmpeg.

sudo apt-get install ffmpeg
ffprobe file.mp3

Якщо ви не хочете іншої інформації, наприклад, довжини доріжки тощо, ви можете комбінувати результат з грепом:

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.


Я хотів шукати ключове слово у всіх файлах 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" | sed -n 's|\x1b\[[0-9;]*mtitle[^:]*: ||p'; }
getTitleInfo() { mp3info -p %t "$1"; }
getTitleId3()  { id3v2 -l "$1" | sed -nE 's/^(TIT2 \([^)]*\)|Title *): (.*)/\2/p'; }
getTitleExif() { exiftool -title -b "$1"; }
getTitleId3i() { id3info "$1" | sed -nE '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оскільки жодна інша програма, згадана тут, не має проблем з цими файлами ...

Результати (в режимі реального часу):

 Program  | Version    | Time / s
----------+------------+-----------
 exiftool | 10.25      | 49.5 ± 0.5
 lltag    | 0.14.5     | 41   ± 1.0
 ffprobe  | 3.1.3-1+b3 | 33   ± 0.5
 eyeD3    | 0.6.18     | 24   ± 0.5
 id3info  | 3.8.3      | 4.2  ± 0.1
 id3v2    | 0.1.12     | 2.9  ± 0.1
 id3tool  | 1.2a       | 1.7  ± 0.1
 mp3info  | 0.8.5a     | 1.4  ± 0.1

Тут переможцем є час id3tool(mp3info швидше, але не працює з ID3 v2). id3v2також досить швидкий, але getTitleId3функція потребує коригування, щоб також працювати з ID3v1-тегами, що, в гіршому випадку, може сповільнити його за рахунок коефіцієнта 2.


1
Ого. Я був користувачем живлення exiftool протягом багатьох років, і я не мав уявлення, що він може також читати метадані для звукових файлів! Рішення ffprobe (або avprobe в моєму випадку) також чудово, дякую. Це найкраща відповідь!
березня 1616

1
Дякую вам за велетенську роботу! Деякі з цих інструментів недоступні у мого менеджера пакунків у Fedora. Чи можете ви включити id3infoу своє порівняння?
Вітеніс Бівайніс

ffmpegє ще одна перевага: вона працює з aac/ m4aфайлами. Інші інструменти, схоже, не (чи ви знаєте інше?). Я також запропоную шукати його FORMATрозділ, щоб уникнути випадків, коли в потоці також є titleтощо ffprobe -loglevel error -show_entries format -i "$1" 2>&1 | sed -E -n 's|^TAG:title=(.*)$|\1|p'.
Джонатан Ю.

@JonathanY. Ви маєте рацію, аудіо, закодоване AAC, збережене у файлі, що містить M4A, має метадані не ID3, і тому їх можна читати лише ffmpeg та додатково exiftool, поза вибором у моїй відповіді.
mxmlnkn

FLAC має ще один формат метаданих, відмінний від MP4 / M4A, а саме метадані коментарів vorbis, але теги також можна читати за допомогою exiftoolабо ffprobe. Більш спеціалізований інструмент для цієї роботи був би metaflac --listв flacпакеті. Для ogg exiftoolтакож працює, але є і vorbiscomment -lз vorbis-toolsпакета. Дивно vorbiscommentі metaflacїх не можна замінювати, навіть якщо у обох FLAC та OGG є метадані Vorbis?
mxmlnkn

26

Гаразд, я знайшов програму сам. Він називається mp3info та встановлений

sudo apt-get install mp3info

Щоб отримати окремі mp3 теги з файлу, потрібно зателефонувати

mp3info -p %a file.mp3

який дає виконавцю файлу. % A означає, що потрібно знайти виконавця, а для інших тегів є ще деякі ключі.


20
Додаткова інформація: Є 4 різні стандарти mp3 тегів id3v1, id3v2.2 (застарілі), id3v2.3, id3v2.4 en.wikipedia.org/wiki/ID3 . У файлі можуть бути теги v1 та / або v2 (так, v1 та v2 можуть співіснувати, але v2.x та v2.y не можуть співіснувати). Я вважаю, що v2.3 є найбільш широко використовуваним. Відповідно до ibiblio.org/mp3info (Див. Todo), теги v2 не підтримуються mp3info. Ви можете подивитися id3v2- Він може редагувати / додавати v2 та відображати v1 та v2. Якщо вам не подобається те, як він відображає теги, ви можете написати скрипт, який запускає id3v2та обробляє вихід належним чином.
S Прасант

@SPrasanth, як зробити так, щоб він відображав певний тег. Наприклад: лише виконавець mp3-файлу?
Gowtham Gopalakrishnan

@SPrasanth Я це отримав. Дякую, я використовую -Rпрапор, grepщоб отримати вказаний вихід.
Gowtham Gopalakrishnan

Коли ви друкуєте назву доріжки% t, вона друкує її відрізаною.
Тулен Кордова

1
На жаль: Only ID3 versions 1.0 and 1.1 are supported.
simlev

11

Можна використовувати eyed3 . Спочатку з терміналу встановіть:

sudo apt-get install eyed3

Потім запустіть:

eyeD3 song.mp3

Поєднайте це, grepщоб отримати конкретні теги в одному рядку.

eyeD3 song.mp3 | grep artist

(щоб зняти всі mp3-теги, дивіться ТУТ )


1
Я спробував це, і команда для використання - це eyeD3, з великого регістру D;). Але я знайшов інший інструмент, який краще відповідає моїм потребам, під назвою mp3info. Це може виводити mp3 теги без необхідності використовувати grep, який я вважаю за краще.
red_trumpet

eyeD3 для мене працює краще, тому що він працює з id3v2, але @red_trumpet вірно, команда повинна бути eyeD3неeyed3
bmaupin

Використання дисплея плагін для виведення тегів в потрібному форматі: eyeD3 --plugin display -p "%t% by %a%" *.
simlev

Тут не відображаються ВСІ теги, наприклад, немає ISRC. Згадана нижче програма id3v2 повертає також ISRC, але без тривалості ...
minyves

8

Я вважаю за краще використовувати id3v2, просто введіть id3v2 -l somefile.mp3. Ви також можете ознайомитись із довідковою сторінкою id3v2 для більш конкретного використання.


Це чудово і працює дуже добре
jpo38

Однозначно найкраща відповідь, усі інші інструменти мають проблеми із залежністю від деяких дистрибутивів.
Серхіо

Тут рекомендується mid3v2замість цього через відсутність підтримки Unicode. Також остання версія оновлення id3v2 була 2013 року .
Пабло А

2

Ви можете спробувати exiftool (Читання та запис метаінформації у файли).

"ExifTool - незалежна від платформи бібліотека Perl, а також додаток командного рядка для читання, запису та редагування метаінформації в широкому спектрі файлів. ExifTool підтримує безліч різних форматів метаданих, включаючи EXIF, GPS, IPTC, XMP, JFIF, GeoTIFF, ICC Профіль, Photoshop IRB, FlashPix, AFCP та ID3, а також нотатки виробника багатьох цифрових камер Canon, Casio, FLIR, FujiFilm, GE, HP, JVC / Victor, Kodak, Leaf, Minolta / Konica-Minolta, Motorola, Nikon, Nintendo, Olympus / Epson, Panasonic / Leica, Pentax / Asahi, Phase One, Reconyx, Ricoh, Samsung, Sanyo, Sigma / Foveon та Sony ". - ExifTool від Філа Гарві

Ось приклад команди:

exiftool test.mp3 
ExifTool Version Number         : 10.00
File Name                       : test.mp3
Directory                       : .
File Size                       : 8.2 MB
File Modification Date/Time     : 2016:03:02 21:44:58+01:00
File Access Date/Time           : 2016:04:06 21:34:01+02:00
File Inode Change Date/Time     : 2016:03:02 21:45:36+01:00
File Permissions                : rw-rw-r--
File Type                       : MP3
File Type Extension             : mp3
MIME Type                       : audio/mpeg
MPEG Audio Version              : 1
Audio Layer                     : 3
Sample Rate                     : 44100
Channel Mode                    : Stereo
MS Stereo                       : Off
Intensity Stereo                : Off
Copyright Flag                  : False
Original Media                  : False
Emphasis                        : None
VBR Frames                      : 9544
VBR Bytes                       : 8467680
ID3 Size                        : 115419
Band                            : Tech N9ne Collabos
Album                           : Strangeulation (Deluxe Edition)
Composer                        : Tech N9ne Collabos
Genre                           : Rap & Hip-Hop
Copyright                       : 2014 Strange Music, Inc
Title                           : American Horror Story (feat. Ces Cru)
Artist                          : Tech N9ne Collabos
Track                           : 10
Year                            : 2014
Comment                         : 
Lyrics                          : 
Private                         : (Binary data 8192 bytes, use -b option to extract)
Picture MIME Type               : image/jpeg
Picture Type                    : Front Cover
Picture Description             : 
Picture                         : (Binary data 104371 bytes, use -b option to extract)
Audio Bitrate                   : 272 kbps
Date/Time Original              : 2014
Duration                        : 0:04:09 (approx)

1

Перевірте, lltagчи шукаєте ви рішення, яке підтримує більше, ніж просто mp3 / ID3.

Встановіть його за допомогою:

sudo apt-get install lltag

щоб переглянути всі теги з ним: ( -Sпризначено для показу)

lltag -S somefile.mp3

для перегляду певних тегів із ним:

lltag --show-tags artist,album,title,number somefile.mp3

0

Буряк

Ви можете почати з цим скрінкасти і в Початку роботи керівництва

Встановіть будь-який:

pip install beets  # latest version
apt install beets  # repo version

Також:

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.