Mp3 etiketleri kabukta nasıl okunur?


53

Bir dosyanın mp3 etiketlerini kabuktan okumak için bir yol var mı? Bir şey gibi: mp3tags MyFile.mp3 authorbir mp3 dosyasının yazar-etiketini çıkarmalı.

Yanıtlar:


47

Bunun bir ffprobeparçası olanı da kullanabilirsiniz ffmpeg.

sudo apt-get install ffmpeg
ffprobe file.mp3

İz uzunluğu ve benzeri başka bilgiler istemiyorsanız, çıktıyı grep ile birleştirebilirsiniz:

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

Veya yalnızca yazarı almak için:

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

Diğer etiketleri, örneğin virgül ile ayırarak seçebilirsiniz format_tags=title,album.


Bir klasördeki tüm mp3 dosyalarında bir anahtar kelime aramak istedim. Klasör 486 dosyaya sahipti, bu yüzden burada belirtilen çözümlerden hangisinin en hızlı olduğunu bilmek ilginç bir hal aldı. İşte kullandığım 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

Notlar:

  • lltagve mp3infobir başlık bulamıyorum, çünkü kullandığım dosyalar ID3v2 etiketlerine sahipti, @ s-prasanth yorumuna bakınız: mp3 etiketleri kabukta nasıl okunur?
  • eyeD3 renk kodları (kalınlık) kullandığından programlı olarak kullanmak sorunludur.
  • eyeD3ve ayrıca id3v2(ancak yalnızca ID3 v1 etiketleri için) başlığı ve sanatçıyı aynı satırda döndürür; bu, işleri daha da karmaşıklaştırır; bu nedenle getTitleEyedve bazen getTitleId3hem başlığı hem de sanatçıyı döndürün, bu yüzden lütfen bu işlevleri kopyalayıp yapıştırmayın.
  • getTitleId3 sadece ID3 v2 etiketleri için çalışacaktır, çünkü id3v2ID3v1- ve ID3v2-etiketleri için farklı formatlar vardır.

    Title  :                                 Artist:    
    

    ID3v2'ye karşı:

    TIT2 (Title/songname/content description): 
    
  • Bu 5 programın tek programı eyeD3iki dosya için kırmızı bir uyarı oluşturuyor:

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

    Bu iki dosya ID3v1 etiketleri var gibi bu iki dosya nerede tek olanlar, çünkü görünüyor lltagve mp3infobir başlık alabilirsiniz. Bunun bir hata olup olmadığını merak ediyorum, eyeD3burada belirtilen başka hiçbir program bu dosyalarla ilgili bir sorun yaşamadığı için ...

Sonuçlar (gerçek zamanlı):

 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

Zaman kazandıran kazanan burada id3tool(mp3info daha hızlı, ancak ID3 v2 ile çalışmıyor). id3v2aynı zamanda oldukça hızlıdır, ancak getTitleId3fonksiyonun ID3v1 etiketleri ile de çalışabilmesi için ayar yapılması gerekir, bu da en azından faktör 2 ile yavaşlatabilir.


1
Vay. Yıllardır exiftool uzman bir kullanıcı oldum ve ses dosyalarının meta verilerini de okuyabileceği konusunda hiçbir fikrim yoktu! Ffprobe (veya benim durumumda avprobe) çözümü de harika, teşekkürler. Bu en iyi cevap!
marlar

1
Devasa işin için teşekkürler! Bu araçların bazıları Fedora'daki paket yöneticimden alınamıyor. Lütfen id3infokarşılaştırmanıza dahil olabilir misiniz ?
Vytenis Bivainis

ffmpegbaşka bir avantajı var: aac/ m4afiles ile çalışıyor . Diğer araçlar görünmüyor (ya da başka türlü biliyor musunuz?). FORMATBir akışın da titlevb ffprobe -loglevel error -show_entries format -i "$1" 2>&1 | sed -E -n 's|^TAG:title=(.*)$|\1|p'. Olduğu durumlardan kaçınmak için, onun bölümünü aramanızı da önereceğim .
Jonathan Y.,

@JonathanY. Haklısın, M4A içeren bir dosyada depolanan AAC kodlu ses ID3 olmayan meta verilere sahiptir ve bu nedenle cevabımdaki seçim dışında sadece ffmpeg ve ek olarak exiftool tarafından okunabilir.
mxmlnkn 27:17

FLAC'ların MP4 / M4A'dan farklı bir başka meta veri formatı vardır, yani vorbis yorum meta verileridir, ancak etiketler exiftoolveya ile de okunabilir ffprobe. Bu iş için daha özel bir araç olacağını metaflac --listgelen flacpaketin. OGG için exiftoolde çalışır, ancak orada da vorbiscomment -lgelen vorbis-toolspaketin. FLAC vorbiscommentve OGG'nin metaflacher ikisi de vorbis kod meta verisine sahip olsa bile, tuhaf ve birbiriyle değiştirilemez mi?
mxmlnkn

26

Tamam, tek başıma bir program buldum. Bu mp3info denir ve tarafından yüklenir

sudo apt-get install mp3info

Bir dosyadan tek mp3 etiketlerini almak için, birinin araması gerekir.

mp3info -p %a file.mp3

Bu dosya sanatçısı verir. % A, birinin sanatçıyı almak istediği anlamına gelir ve diğer etiketler için başka anahtarlar da vardır.


20
Ek bilgi: 4 farklı mp3 etiketi standardı vardır id3v1, id3v2.2 (eski), id3v2.3, id3v2.4 en.wikipedia.org/wiki/ID3 . Bir dosya v1 ve / veya v2 etiketlerine sahip olabilir (Evet v1 ve v2 bir arada bulunabilir, ancak v2.x ve v2.y bir arada bulunamaz). V2.3'ün en yaygın kullanılanın olduğuna inanıyorum. İbiblio.org/mp3info'ya göre (Bakınız Todo) v2 etiketleri tarafından desteklenmiyor mp3info. Bakmak isteyebilirsiniz id3v2- v2'yi düzenleyebilir / ekleyebilir ve v1 ve v2'yi görüntüleyebilir. Etiketleri görüntüleme şeklini beğenmiyorsanız id3v2, çıktıyı uygun şekilde çalıştıran ve işleyen bir komut dosyası yazabilirsiniz .
S Prasanth

@SPrasanth belirli bir etiketi göstermeyi nasıl sağlayabilir? Örneğin: Sadece bir mp3 dosyasının sanatçısı?
Gowtham Gopalakrishnan

@SPrasanth Anladım. Teşekkürler Belirtilen çıktıyı elde etmek için -Rbayrak kullanıyorum grep.
Gowtham Gopalakrishnan

Parça başlığını% t ile yazdırdığınızda, kırpılmış olarak yazdırır.
Tulains Córdova

1
Maalesef: Only ID3 versions 1.0 and 1.1 are supported.
simlev

11

Eyed3'ü kullanabilirsiniz . İlk önce, bir terminalden, kurun:

sudo apt-get install eyed3

O zaman koş:

eyeD3 song.mp3

grepBir satırda belirli etiketleri elde etmek için bunu birleştirin .

eyeD3 song.mp3 | grep artist

(tüm mp3 etiketlerini çıkarmak için BURAYA bakınız )


1
Bunu denedim ve kullanılacak komut eyeD3, büyük harf D;). Ancak mp3info adında, ihtiyaçlarıma daha iyi uyan başka bir araç buldum. Bu, tercih ettiğim grep kullanmaya gerek kalmadan mp3 etiketlerini çıkartabiliyor.
red_trumpet

o id3v2 ile çalışır, ancak @red_trumpet doğru olduğundan eyeD3 benim için daha iyi çalışır, komut olmalıdır eyeD3değileyed3
bmaupin

İstenilen formatta çıktı etiketlerine ekran eklentiyi kullanın: eyeD3 --plugin display -p "%t% by %a%" *.
simlev

Bu, ALL etiketlerini görüntülemez, örneğin ISRC yok. Aşağıda belirtilen id3v2 programı ayrıca ISRC'yi de verir, ancak süresi yoktur ...
minyves

8

ID3v2 kullanmayı tercih ediyorum, sadece yazın id3v2 -l somefile.mp3. Daha spesifik kullanım için id3v2 man sayfasını da görebilirsiniz.


Bu harika ve çok iyi çalışıyor
jpo38

Kesinlikle en iyi cevap olması gerekiyorsa, diğer tüm araçların bazı dağıtımlarda bağımlılık sorunları vardır.
Sergio

İşte önerilir mid3v2yerine nedeniyle Unicode desteği eksikliği. Ayrıca id3v2 son güncelleme 2013 tarihinde yapıldı .
Pablo A

2

Exiftool'u deneyebilirsiniz (Dosyalara meta bilgileri okuyun ve yazın).

"ExifTool, platformdan bağımsız bir Perl kütüphanesi ve çok çeşitli dosyalarda meta bilgileri okumak, yazmak ve düzenlemek için kullanılan bir komut satırı uygulamasıdır. ExifTool, EXIF, GPS, IPTC, XMP, JFIF, GeoTIFF, ICC dahil olmak üzere birçok farklı meta veri formatını destekler Profil, Photoshop IRB, FlashPix, AFCP ve ID3 ile Canon, Casio, FLIR, FujiFilm, GE, HP, JVC / Victor, Kodak, Yaprak, Minolta / Konica-Minolta, Motorola’nın birçok dijital fotoğraf makinesinin yapımcısı notları, Nikon, Nintendo, Olympus / Epson, Panasonic / Leica, Pentax / Asahi, Birinci Aşama, Reconyx, Ricoh, Samsung, Sanyo, Sigma / Foveon ve Sony. " - Phil Harvey'den ExifTool

İşte komutun bir örneği:

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

Check out lltagsadece mp3 / ID3 daha destekleyen bir çözüm arıyorsanız eğer.

Şununla yükleyin:

sudo apt-get install lltag

Tüm etiketleri onunla görüntülemek için: ( -Sgöstermek içindir)

lltag -S somefile.mp3

bazı etiketleri onunla görüntülemek için:

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

0

Pancar

Sen başlayabilir bu screencast ve Başlangıç kılavuzuna

İkisinden birini yükleyin:

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

Ayrıca:

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.