Làm thế nào để đọc các thẻ mp3 trong shell?


53

Có cách nào để đọc các thẻ mp3 của một tập tin từ shell không? Một cái gì đó như: mp3tags MyFile.mp3 authornên xuất thẻ tác giả của tệp mp3.

Câu trả lời:


47

Bạn cũng có thể sử dụng ffprobeđó là một phần của ffmpeg.

sudo apt-get install ffmpeg
ffprobe file.mp3

Nếu bạn không muốn thông tin khác, như độ dài theo dõi, v.v., bạn có thể kết hợp đầu ra với grep:

ffprobe file.mp3 2>&1 | grep -A90 'Metadata:'

Hoặc để chỉ nhận tác giả:

ffprobe -loglevel error -show_entries format_tags=artist -of default=noprint_wrappers=1:nokey=1 file.mp3

Bạn có thể chọn các thẻ khác bằng cách tách chúng bằng dấu phẩy, chẳng hạn như format_tags=title,album.


Tôi muốn tìm kiếm một từ khóa trong tất cả các tệp mp3 trong một thư mục. Thư mục có 486 tệp, vì vậy thật thú vị khi biết giải pháp nào được đề cập ở đây là nhanh nhất. Đây là vòng lặp tôi đã sử dụng:

# 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

Ghi chú:

  • lltagmp3infokhông tìm thấy tiêu đề, vì các tệp tôi đang sử dụng có thẻ ID3v2, hãy xem nhận xét của @ s-prasanth: Làm cách nào để đọc thẻ mp3 trong shell?
  • eyeD3 là vấn đề khi sử dụng theo chương trình, bởi vì nó sử dụng mã màu (độ đậm).
  • eyeD3và cũng id3v2(nhưng chỉ đối với các thẻ ID3 v1) trả lại tiêu đề và nghệ sĩ trên cùng một dòng, điều này làm phức tạp thêm mọi thứ; do đó getTitleEyedvà đôi khi getTitleId3trả lại cả tiêu đề và nghệ sĩ, vì vậy vui lòng không sao chép-dán các chức năng đó.
  • getTitleId3 sẽ chỉ hoạt động cho các thẻ ID3 v2, vì id3v2có các định dạng khác nhau cho các thẻ ID3v1- và ID3v2, tức là

    Title  :                                 Artist:    
    

    so với ID3v2:

    TIT2 (Title/songname/content description): 
    
  • Vì chương trình duy nhất trong số 5 eyeD3bản này in cảnh báo màu đỏ cho hai trong số các tệp:

    Invalid mode/bitrate combination for layer II
    No ID3 v1.x/v2.x tag found!
    

    Có vẻ như hai tệp này có thẻ ID3v1, vì hai tệp đó là những tệp duy nhất có lltagmp3infocó thể nhận được một tiêu đề. Tôi tự hỏi liệu đây có phải là một lỗi eyeD3không vì không có chương trình nào khác được đề cập ở đây có vấn đề với các tệp này ...

Kết quả (thời gian thực):

 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

Người chiến thắng theo thời gian ở đây là id3tool(mp3info nhanh hơn, nhưng không hoạt động với ID3 v2). id3v2cũng khá nhanh, nhưng getTitleId3chức năng sẽ cần điều chỉnh để hoạt động với các thẻ ID3v1, điều tồi tệ nhất có thể làm chậm nó bởi yếu tố 2.


1
Ồ Tôi đã là một người sử dụng năng lượng exiftool trong nhiều năm và tôi không biết nó cũng có thể đọc siêu dữ liệu cho các tệp âm thanh! Giải pháp ffprobe (hoặc avprobe trong trường hợp của tôi) cũng rất tuyệt, cảm ơn. Đây là câu trả lời tốt nhất!
tuyên bố

1
Cảm ơn bạn đã làm việc khổng lồ! Một số công cụ này không có sẵn từ người quản lý gói của tôi ở Fedora. Bạn có thể vui lòng bao gồm id3infotrong so sánh của bạn?
Vytenis Bivainis

ffmpegcó một lợi thế khác: nó hoạt động với aac/ m4afiles. Các công cụ khác dường như không (hoặc bạn có biết khác không?). Tôi cũng sẽ đề nghị tìm kiếm FORMATphần của nó , để tránh trường hợp một luồng cũng có titlevv ffprobe -loglevel error -show_entries format -i "$1" 2>&1 | sed -E -n 's|^TAG:title=(.*)$|\1|p'. : .
Jonathan Y.

@JonathanY. Bạn nói đúng, âm thanh được mã hóa AAC được lưu trữ trong tệp M4A-containter có siêu dữ liệu không phải ID3 và do đó chỉ có thể được đọc bởi ffmpeg và exiftool, ngoài lựa chọn trong câu trả lời của tôi.
mxmlnkn

FLAC có định dạng siêu dữ liệu khác với MP4 / M4A là siêu dữ liệu nhận xét vorbis, nhưng các thẻ cũng có thể được đọc bằng exiftoolhoặc ffprobe. Các công cụ chuyên dụng hơn cho công việc này sẽ là metaflac --listtừ flacgói. Đối với ogg exiftoolcũng hoạt động, nhưng cũng có vorbiscomment -ltừ vorbis-toolsgói. Thật kỳ lạ vorbiscommentmetaflackhông thể thay thế cho nhau, mặc dù cả FLAC và OGG đều có siêu dữ liệu coment vorbis?
mxmlnkn

26

Ok, tôi tự tìm một chương trình. Nó được gọi là mp3info và được cài đặt bởi

sudo apt-get install mp3info

Để có được các thẻ mp3 duy nhất từ ​​một tệp, người ta phải gọi

mp3info -p %a file.mp3

cung cấp cho các nghệ sĩ của các tập tin. % A có nghĩa là người ta muốn lấy nghệ sĩ và có một số khóa khác cho các thẻ khác.


20
Thông tin bổ sung: Có 4 tiêu chuẩn khác nhau của thẻ mp3 id3v1, id3v2.2 (lỗi thời), id3v2.3, id3v2.4 en.wikipedia.org/wiki/ID3 . Một tệp có thể có các thẻ v1 và / hoặc v2 (Có v1 và v2 có thể cùng tồn tại, nhưng v2.x và v2.y không thể cùng tồn tại). Tôi tin rằng v2.3 là một trong những sử dụng rộng rãi nhất. Theo ibiblio.org/mp3info (Xem Todo) thẻ v2 không được hỗ trợ bởi mp3info. Bạn có thể muốn xem xét id3v2- Nó có thể chỉnh sửa / thêm v2 và hiển thị v1 và v2. Nếu bạn không thích cách nó hiển thị các thẻ, bạn có thể viết một tập lệnh chạy id3v2và xử lý đầu ra một cách thích hợp.
S Prasanth

@SPrasanth làm thế nào để làm cho nó hiển thị một thẻ cụ thể. Ví dụ: chỉ nghệ sĩ của một tệp mp3?
Gowtham Gopalakrish Nam

@SPrasanth Tôi hiểu rồi. Cảm ơn tôi đang sử dụng -Rcờ với grepđể có được đầu ra được chỉ định.
Gowtham Gopalakrish Nam

Khi bạn in tiêu đề bài hát với% t, nó sẽ in nó bị cắt bớt.
Tulains Córdova

1
Thật không may : Only ID3 versions 1.0 and 1.1 are supported.
simlev

11

Bạn có thể sử dụng eyed3 . Đầu tiên, từ một thiết bị đầu cuối, cài đặt:

sudo apt-get install eyed3

Sau đó chạy:

eyeD3 song.mp3

Kết hợp điều đó với grepđể có được các thẻ cụ thể trong một dòng.

eyeD3 song.mp3 | grep artist

(để loại bỏ tất cả các thẻ mp3, xem TẠI ĐÂY )


1
Tôi đã thử điều này và lệnh sử dụng là eyeD3, với chữ hoa D;). Nhưng tôi đã tìm thấy một công cụ khác, phù hợp hơn với nhu cầu của tôi, được đặt tên là mp3info. Điều này có thể xuất các thẻ mp3 mà không cần sử dụng grep, mà tôi thích.
red_trumpet

eyeD3 hoạt động tốt hơn đối với tôi bởi vì nó hoạt động với ID3v2, nhưng @red_trumpet là đúng, lệnh nên eyeD3khôngeyed3
bmaupin

Sử dụng plugin hiển thị cho các thẻ đầu ra ở định dạng mong muốn : eyeD3 --plugin display -p "%t% by %a%" *.
simlev

Điều này không hiển thị TẤT CẢ các thẻ, ví dụ không có ISRC. Chương trình được đề cập dưới đây id3v2 cũng trả về ISRC, nhưng không có thời lượng ...
minyves

8

Tôi thích sử dụng id3v2, chỉ cần gõ id3v2 -l somefile.mp3. Bạn cũng có thể xem trang man id3v2 để sử dụng cụ thể hơn.


Điều này thật tuyệt và hoạt động rất tốt
jpo38

Chắc chắn nên là câu trả lời tốt nhất, tất cả các công cụ khác có vấn đề phụ thuộc vào một số phân phối.
Sergio

Ở đây được khuyến nghị mid3v2thay vì thiếu hỗ trợ Unicode. Ngoài ra bản cập nhật cuối cùng của id3v2 là vào năm 2013 .
Pablo A

2

Bạn có thể thử exiftool (Đọc và ghi thông tin meta trong tệp).

"ExifTool là thư viện Perl độc lập với nền tảng cộng với ứng dụng dòng lệnh để đọc, viết và chỉnh sửa thông tin meta trong nhiều loại tệp. ExifTool hỗ trợ nhiều định dạng siêu dữ liệu khác nhau bao gồm EXIF, GPS, IPTC, XMP, JFIF, GeoTIFF, ICC Profile, Photoshop IRB, FlashPix, AFCP và ID3, cũng như ghi chú của nhà sản xuất nhiều máy ảnh kỹ thuật số của Canon, Casio, FLIR, FujiFilm, GE, HP, JVC / Victor, Kodak, Leaf, Minolta / Konica-Minolta, Motorola, Nikon, Nintendo, Olympus / Epson, Panasonic / Leica, Pentax / Asahi, Giai đoạn một, Reconyx, Ricoh, Samsung, Sanyo, Sigma / Foveon và Sony. " - ExifTool của Phil Harvey

Dưới đây là một ví dụ về lệnh:

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

Kiểm tra lltagnếu bạn đang tìm kiếm một giải pháp hỗ trợ nhiều hơn là chỉ mp3 / ID3.

Cài đặt nó với:

sudo apt-get install lltag

để xem tất cả các thẻ với nó: ( -Sdành cho hiển thị)

lltag -S somefile.mp3

để xem các thẻ nhất định với nó:

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

0

Củ cải

Bạn có thể bắt đầu với hình màn ảnh nàynhững bắt đầu Bắt dẫn

Cài đặt một trong hai:

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

Cũng thế:

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.