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.