2008-09-16 5 views

Répondre

168

THIRDING TagLib Sharp.

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

+1. Juste ce dont j'avais besoin. – David

+1

Quelqu'un peut-il me dire comment définir la propriété Artist? Il y a beaucoup de propriétés similaires (FirstArtist, Artist, JointedArtists, FirstPerformer) et presque toutes sont en lecture seule ou obsolètes ... – Laserson

+3

Un peu en retard, mais vous pouvez ajouter les artistes/artistes par ce qui suit: mp3.Tag .Performers = new string [] {"Performer 1", "Performer 2", "Performer 3"}; – nokturnal

15

TagLib Sharp prend en charge la lecture des étiquettes ID3.

+0

J'ai commencé à utiliser le pointu TagLib basé sur la recommandation ici et cela a fonctionné très bien pour mon application (qui était en lecture seule des informations MP3). – greg7gkb

+0

+1. Juste ce dont j'avais besoin. – David

+0

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

62

TagLib Sharp est très populaire.

En note, si vous voulez jeter un coup d'œil rapide et sale à le faire vous-même .. voici un extrait de C# que j'ai trouvé pour lire les informations d'une étiquette de 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(); 
       } 
      } 
     } 
+11

Ceci est seulement pour ID3v1. v2 a une autre structure, c'est au début du fichier (contrairement à v1 qui était à la fin) et a une longueur variable (v1 est toujours de 128 octets). – jishi

+2

+1. Juste ce dont j'avais besoin. – David

+0

Ne fonctionne pas pour moi :( –

25

UltraID3Lib ...

//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

+1 Ceci est la meilleure bibliothèque de loin - depuis 'UltraID3Lib supporte la plupart des soixante-quatorze types d'images spécifiées dans la ID3 v2.3 'ainsi que les balises ID3v1 au début.Belle réponse – James

+0

+1 Ceci est beaucoup plus facile à utiliser et plus simple pour traiter les métadonnées mp3 – amrswalha

+1

Je l'ai utilisé récemment et cela fonctionne génial et ne pas alourdir le processus Il est rapide et facile à utiliser et représente à peu près toutes les balises qui existent dans les versions 1 et 2 d'ID3 (vous pouvez utiliser les deux en même temps ou seulement l'une ou l'autre), ce qui est bien plus que ce dont j'avais besoin. comprehe Fichier d'aide nsive. Je vais recommander ceci à tout le monde. – fredsbend

2

J'ai enveloppé la librairie de décodeurs mp3 et l'ai rendue disponible pour les développeurs .net. Vous pouvez le trouver ici:

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

Inclus sont les échantillons pour convertir le fichier mp3 à PCM, et lire les tags ID3.

1

ID3.NET implémenté ID3v1.x et ID3v2.3 et prend en charge les opérations de lecture/écriture sur la section ID3 dans les fichiers MP3. Il y a aussi un NuGet package disponible.

0

documentant quelque part juste:

j'ai pu recompiler TagLib-Sharp pour le Core 2. .NET les autres options pour le faire (id3lib et plus) ne fonctionne pas pour le Core .NET.

Questions connexes