Ver / editar dados ID3 para arquivos MP3


152

Qual é uma maneira rápida e fácil de visualizar e editar tags ID3 (artista, álbum etc.) usando C #?

Respostas:


186

Thirding TagLib afiada .

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

1
Alguém pode me dizer como definir a propriedade Artist? Há uma grande quantidade de propriedades relacionadas (FirstArtist, Ocupação Artística, JointedArtists, FirstPerformer) e quase todos eles são somente leitura ou obsoleto ...
Laserson

3
Um pouco tarde, mas você pode adicionar artistas / artistas da seguinte forma: mp3.Tag.Performers = new string [] {"Artista 1", "Artista 2", "Artista 3"};
Nokturnal

Biblioteca incrível. Eu usei para copiar tags id3.
Ronnie Overby

Esta biblioteca suporta tags ID3v2 modernas? O trecho de Simucal sugere que não (a menos que ele tenha participado).
18713 James James

TagLib é GPL. Esta dificilmente é uma resposta apropriada aqui.
Sean O'Neil

65

O TagLib Sharp é bastante popular.

Como uma observação lateral, se você quiser dar uma olhada rápida e suja em fazer você mesmo ... aqui está um trecho de C # que encontrei para ler as informações de tags de um mp3.

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
Isso é apenas para ID3v1. A v2 tem outra estrutura, está no início do arquivo (ao contrário da v1, que estava no final) e tem comprimento variável (a v1 é sempre 128 bytes).
11118

É uma solução muito longa e não otimizada. stackoverflow.com/a/4361634/1395101
Amin Ghaderi

Encoding.Defaultpode ser substituído por Encoding.UTF8. Para obter mais informações, visite: gigamonkeys.com/book/practical-an-id3-parser.html
Mirjalal

25

UltraID3Lib ...

Esteja ciente de que o UltraID3Lib não está mais disponível oficialmente e, portanto, não é mais mantido. Veja os comentários abaixo para o link para um projeto do Github que inclui esta biblioteca

//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 Esta é a melhor biblioteca de longe - já que o 'UltraID3Lib suporta a maioria dos setenta e quatro tipos de quadros especificados no ID3 v2.3', bem como as tags ID3v1 anteriores. Melhor resposta.
18713 James

+1 Isto é muito mais fácil de usar e mais simples maneira de lidar com mp3 metadados
amrswalha

1
Eu usei isso recentemente e funciona muito bem e não sobrecarrega o processo. É rápido e fácil de usar e responde por quase todas as tags existentes nas versões 1 e 2 do ID3 (você pode usar as duas ao mesmo tempo ou apenas uma ou outra). Faz muito mais do que eu precisava. Ele também tinha um arquivo de ajuda muito abrangente. Vou recomendar isso a todos.
1934286

Saudações; O link está inacessível. O UltraID3Lib foi descontinuado?
Adeus

Encontrei uma versão do UltraID3Lib incluída neste projeto do GitHub. github.com/clementboone/MyWindowsMediaPlayer O projeto contém uma pasta UltraID3Lib que é o conteúdo completo do arquivo zip que costumava estar disponível.
Matt

15

O TagLib Sharp tem suporte para leitura de tags ID3.


Comecei a usar o TagLib sharp com base na recomendação aqui e funcionou muito bem para o meu aplicativo (que era somente leitura de informações sobre MP3).
Greg7gkb 22/10/08

Veja a resposta de hewins abaixo para o novo local do link
Conrad Frix


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.