Як читати 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.