MP3 dosyaları için ID3 verilerini görüntüleme / düzenleme


152

C # kullanarak ID3 etiketlerini (sanatçı, albüm vb.) Görüntülemenin ve düzenlemenin hızlı ve kolay yolu nedir?

Yanıtlar:


186

Thirding TagLib Keskin .

TagLib.File f = TagLib.File.Create(path);
f.Tag.Album = "New Album Title";
f.Save();

1
Birisi bana Sanatçı özelliğini nasıl ayarlayacağımı söyleyebilir mi? Bir çok ilgili özellik var (FirstArtist, Sanatçı, JointedArtists, FirstPerformer) ve neredeyse hepsi salt okunur veya kullanımdan kaldırılmıştır ...
Laserson

3
Biraz geç, ancak sanatçıları / sanatçıları şu şekilde ekleyebilirsiniz: mp3.Tag.Performers = new string [] {"Performer 1", "Performer 2", "Performer 3"};
nokturnal

Harika kütüphane. İd3 etiketlerini kopyalamak için kullandım.
Ronnie Overby

Bu kütüphane modern ID3v2 etiketlerini destekliyor mu? Simucal'ın pasajı bunu önermez (henüz katılmamışsa).
James

TagLib GPL'dir. Bu burada pek uygun bir cevap değil.
Sean O'Neil

65

TagLib Sharp oldukça popüler.

Bir yan not olarak, kendiniz yaparken hızlı ve kirli bir göz atmak istedim .. İşte bir C # snippet bir mp3 etiket bilgisi okumak için bulundu.

class MusicID3Tag

{

    public byte[] TAGID = new byte[3];      //  3
    public byte[] Title = new byte[30];     //  30
    public byte[] Artist = new byte[30];    //  30 
    public byte[] Album = new byte[30];     //  30 
    public byte[] Year = new byte[4];       //  4 
    public byte[] Comment = new byte[30];   //  30 
    public byte[] Genre = new byte[1];      //  1

}

string filePath = @"C:\Documents and Settings\All Users\Documents\My Music\Sample Music\041105.mp3";

        using (FileStream fs = File.OpenRead(filePath))
        {
            if (fs.Length >= 128)
            {
                MusicID3Tag tag = new MusicID3Tag();
                fs.Seek(-128, SeekOrigin.End);
                fs.Read(tag.TAGID, 0, tag.TAGID.Length);
                fs.Read(tag.Title, 0, tag.Title.Length);
                fs.Read(tag.Artist, 0, tag.Artist.Length);
                fs.Read(tag.Album, 0, tag.Album.Length);
                fs.Read(tag.Year, 0, tag.Year.Length);
                fs.Read(tag.Comment, 0, tag.Comment.Length);
                fs.Read(tag.Genre, 0, tag.Genre.Length);
                string theTAGID = Encoding.Default.GetString(tag.TAGID);

                if (theTAGID.Equals("TAG"))
                {
                    string Title = Encoding.Default.GetString(tag.Title);
                    string Artist = Encoding.Default.GetString(tag.Artist);
                    string Album = Encoding.Default.GetString(tag.Album);
                    string Year = Encoding.Default.GetString(tag.Year);
                    string Comment = Encoding.Default.GetString(tag.Comment);
                    string Genre = Encoding.Default.GetString(tag.Genre);

                    Console.WriteLine(Title);
                    Console.WriteLine(Artist);
                    Console.WriteLine(Album);
                    Console.WriteLine(Year);
                    Console.WriteLine(Comment);
                    Console.WriteLine(Genre);
                    Console.WriteLine();
                }
            }
        }

12
Bu sadece ID3v1 içindir. v2 başka bir yapıya sahiptir, dosyanın başlangıcındadır (sonunda bulunan v1'in aksine) ve değişken uzunluğu vardır (v1 her zaman 128 bayttır).
jishi

çok uzun bir çözümdür ve optimize edilmemiştir. stackoverflow.com/a/4361634/1395101
Amin Ghaderi

Encoding.Defaultile değiştirilebilir Encoding.UTF8. Daha fazla bilgi için: gigamonkeys.com/book/practical-an-id3-parser.html
Mirjalal

25

UltraID3Lib ...

UltraID3Lib'in artık resmi olarak bulunmadığını ve bu nedenle artık korunmadığını unutmayın. Bu kütüphaneyi içeren bir Github projesine bağlantı için aşağıdaki yorumlara bakın

//using HundredMilesSoftware.UltraID3Lib;
UltraID3 u = new UltraID3();
u.Read(@"C:\mp3\song.mp3");
//view
Console.WriteLine(u.Artist);
//edit
u.Artist = "New Artist";
u.Write();

+1 Bu, bugüne kadarki en iyi kitaplıktır - çünkü 'UltraID3Lib, ID3 v2.3'te belirtilen yetmiş dört kare türünün çoğunu ve erken ID3v1 etiketlerini destekler. En iyi cevap.
James

+1 Bu, mp3 meta verileri ile başa çıkmak için çok daha kolay ve daha kolay bir yol
amrswalha

1
Bunu son zamanlarda kullandım ve harika çalışıyor ve süreci zorlamıyor. Kullanımı hızlı ve kolaydır ve ID3 sürüm 1 ve 2'de bulunan hemen hemen her etiketi açıklar (her ikisini aynı anda veya sadece birini veya diğerini kullanabilirsiniz). İhtiyacımdan çok daha fazlasını yapıyor. Ayrıca çok kapsamlı bir yardım dosyası vardı. Bunu herkese tavsiye edeceğim.
1934286

Selamlar; Bağlantıya erişilemiyor. UltraID3Lib Sonlandırıldı mı?
Güle güle

Bu GitHub projesinde UltraID3Lib'in bir sürümünü buldum. github.com/clementboone/MyWindowsMediaPlayer Proje, eskiden mevcut olan zip dosyasının tüm içeriği olan bir UltraID3Lib klasörü içeriyor.
Matt

15

TagLib Sharp'ın ID3 etiketlerini okuma desteği vardır.


Burada tavsiye dayalı TagLib keskin kullanmaya başladı ve benim uygulama (ki MP3 bilgi salt okunur) için harika çalıştı.
greg7gkb

Yeni bağlantı konumu için hewins'in cevabına bakın
Conrad Frix


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.