Ver / editar datos ID3 para archivos MP3


152

¿Cuál es una manera rápida y fácil de ver y editar etiquetas ID3 (artista, álbum, etc.) usando C #?

Respuestas:


186

Lanzamiento de TagLib Sharp .

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

1
¿Alguien puede decirme cómo configurar la propiedad del artista? Hay muchas propiedades relacionadas (FirstArtist, Artist, JointedArtists, FirstPerformer) y casi todas son de solo lectura o están en desuso ...
— Laserson

3
Un poco tarde, pero puede agregar los artistas / artistas de la siguiente manera: mp3.Tag.Performers = new string [] {"Performer 1", "Performer 2", "Performer 3"};
— nokturnal

Impresionante biblioteca. Lo usé para copiar etiquetas id3.
— Ronnie Overby el

¿Esta biblioteca admite etiquetas ID3v2 modernas? El fragmento de Simucal sugiere que no (a menos que él haya tomado parte de él).
— James

TagLib es GPL. Esta no es una respuesta apropiada aquí.
— Sean O'Neil

65

TagLib Sharp es bastante popular.

Como nota al margen, si desea echar un vistazo rápido y sucio para hacerlo usted mismo ... aquí hay un fragmento de C # que encontré para leer la información de la etiqueta de un 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
Eso es solo para ID3v1. v2 tiene otra estructura, está al comienzo del archivo (en oposición a v1 que estaba al final) y tiene una longitud variable (v1 siempre es de 128 bytes).
— jishi

Es una solución muy larga y no está optimizada. stackoverflow.com/a/4361634/1395101
— Amin Ghaderi

Encoding.Defaultpuede ser reemplazado con Encoding.UTF8. Para obtener más información, visite: gigamonkeys.com/book/practical-an-id3-parser.html
— Mirjalal

25

UltraID3Lib ...

Tenga en cuenta que UltraID3Lib ya no está oficialmente disponible y, por lo tanto, ya no se mantiene. Vea los comentarios a continuación para ver el enlace a un proyecto de Github que incluye 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 es la mejor biblioteca con diferencia, ya que 'UltraID3Lib es compatible con la mayoría de los setenta y cuatro tipos de marcos especificados en ID3 v2.3', así como con las primeras etiquetas ID3v1. La mejor respuesta.
— James

+1 Esto es mucho más fácil de usar y una forma más sencilla de tratar con metadatos mp3
— amrswalha

1
Utilicé esto recientemente y funciona de maravilla y no carga el proceso. Es rápido y fácil de usar y representa casi todas las etiquetas que existen en las versiones ID3 1 y 2 (puede usar ambas a la vez o solo una u otra). Hace mucho más de lo que necesitaba. También tenía un archivo de ayuda muy completo. Se lo recomendaré a todos.
— 1934286

Saludos; El enlace es inaccesible. ¿Se descontinúa UltraID3Lib?
— Adiós

Encontré una versión de UltraID3Lib incluida en este proyecto de GitHub. github.com/clementboone/MyWindowsMediaPlayer El proyecto contiene una carpeta UltraID3Lib que es el contenido completo del archivo zip que solía estar disponible.
— Matt

15

TagLib Sharp tiene soporte para leer etiquetas ID3.


Comencé a usar TagLib Sharp según la recomendación aquí y funcionó muy bien para mi aplicación (que era de solo lectura de información de MP3).
— greg7gkb

Vea la respuesta de Hewins a continuación para la nueva ubicación del enlace
— Conrad Frix


Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.