160 votes

Afficher/modifier les données ID3 des fichiers MP3

Quel est le moyen le plus rapide et le plus simple de visualiser et de modifier les balises ID3 (artiste, album, etc.) en utilisant C# ?

196voto

Luke Points 2171

Thirding TagLib Sharp .

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

1 votes

Quelqu'un peut-il me dire comment définir la propriété Artist ? Il existe de nombreuses propriétés connexes (FirstArtist, Artist, JointedArtists, FirstPerformer) et presque toutes sont en lecture seule ou dépréciées...

3 votes

Un peu tard, mais vous pouvez ajouter les interprètes/artistes de la manière suivante : mp3.Tag.Performers = new string[] { "Performer 1", "Performer 2", "Performer 3" } ;

0 votes

Superbe bibliothèque. Je l'ai utilisée pour copier les balises id3.

67voto

Simucal Points 34961

TagLib Sharp est assez populaire.

En passant, si vous voulez jeter un coup d'oeil rapide et sale pour le faire vous-même, voici un extrait de C# que j'ai trouvé pour lire les informations de tag d'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 votes

C'est seulement pour ID3v1. v2 a une autre structure, il est au début du fichier (par opposition à v1 qui était à la fin) et a une longueur variable (v1 est toujours 128 octets).

0 votes

C'est une solution très longue et non optimisée. stackoverflow.com/a/4361634/1395101

0 votes

Encoding.Default peut être remplacé par Encoding.UTF8 . Pour plus d'informations, visitez le site : gigamonkeys.com/book/pratique-un-id3-parser.html

26voto

Matt Points 453

UltraID3Lib ...

Sachez que UltraID3Lib n'est plus officiellement disponible, et n'est donc plus maintenue. Voir les commentaires ci-dessous pour le lien vers un projet Github qui inclut cette bibliothèque

//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();

0 votes

+1 C'est de loin la meilleure bibliothèque, car "UltraID3Lib prend en charge la plupart des soixante-quatorze types de cadres spécifiés dans la norme ID3 v2.3", ainsi que les premières balises ID3v1. Meilleure réponse.

0 votes

+1 C'est un moyen beaucoup plus facile à utiliser et plus simple de traiter les métadonnées mp3.

1 votes

Je l'ai utilisé récemment et il fonctionne très bien, sans alourdir le processus. Il est rapide et facile à utiliser et tient compte d'à peu près tous les tags qui existent dans les versions 1 et 2 d'ID3 (vous pouvez utiliser les deux à la fois ou juste l'un ou l'autre). Il fait bien plus que ce dont j'avais besoin. Il dispose également d'un fichier d'aide très complet. Je le recommanderai à tout le monde.

15voto

tslocum Points 1818

TagLib Sharp prend en charge la lecture des balises ID3.

0 votes

J'ai commencé à utiliser TagLib sharp sur la base de la recommandation faite ici et cela a très bien fonctionné pour mon application (qui était en lecture seule des informations sur les MP3).

0 votes

Voir la réponse de hewins ci-dessous pour le nouvel emplacement du lien.

2voto

Daniel Mošmondor Points 10926

J'ai créé une bibliothèque de décodeurs mp3 et l'ai mise à la disposition des développeurs .net. Vous pouvez la trouver ici :

http://sourceforge.net/projects/mpg123net/

Sont inclus les échantillons pour convertir les fichiers mp3 en PCM, et lire les tags ID3.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X