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 author
nên xuất thẻ tác giả của tệp mp3.
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 author
nên xuất thẻ tác giả của tệp mp3.
Câu trả lời:
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ú:
lltag
và mp3info
khô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).eyeD3
và 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 đó getTitleEyed
và đôi khi getTitleId3
trả 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ì id3v2
có 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 eyeD3
bả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ó lltag
và mp3info
có thể nhận được một tiêu đề. Tôi tự hỏi liệu đây có phải là một lỗi eyeD3
khô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).
id3v2
cũng khá nhanh, nhưng getTitleId3
chứ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.
id3info
trong so sánh của bạn?
ffmpeg
có một lợi thế khác: nó hoạt động với aac
/ m4a
files. 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 FORMAT
phần của nó , để tránh trường hợp một luồng cũng có title
vv ffprobe -loglevel error -show_entries format -i "$1" 2>&1 | sed -E -n 's|^TAG:title=(.*)$|\1|p'
. : .
exiftool
hoặc ffprobe
. Các công cụ chuyên dụng hơn cho công việc này sẽ là metaflac --list
từ flac
gói. Đối với ogg exiftool
cũng hoạt động, nhưng cũng có vorbiscomment -l
từ vorbis-tools
gói. Thật kỳ lạ vorbiscomment
và metaflac
không thể thay thế cho nhau, mặc dù cả FLAC và OGG đều có siêu dữ liệu coment vorbis?
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.
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 id3v2
và xử lý đầu ra một cách thích hợp.
-R
cờ với grep
để có được đầu ra được chỉ định.
Only ID3 versions 1.0 and 1.1 are supported
.
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 )
eyeD3
khôngeyed3
eyeD3 --plugin display -p "%t% by %a%" *
.
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.
mid3v2
thay 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 .
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)
Kiểm tra lltag
nế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ó: ( -S
dà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
Bạn có thể bắt đầu với hình màn ảnh này và nhữ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ế:
exiftool -v3 *.mp3
mid3v2
từ ( python-mutagen
gói) ( thay vìid3v2
, bản cập nhật cuối cùng là vào năm 2013 !)id3
- Trình chỉnh sửa cho thẻ ID3 (không giống với id3 này )id3tool
- Trình chỉnh sửa dòng lệnh cho các thẻ id3id3ren
- tag3 và đổi tên id3