Anzeigen / Bearbeiten von ID3-Daten für MP3-Dateien


152

Was ist eine schnelle und einfache Möglichkeit, ID3-Tags (Interpreten, Alben usw.) mit C # anzuzeigen und zu bearbeiten?

Antworten:


186

Thirding TagLib Sharp .

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

1
Kann mir jemand sagen, wie man das Eigentum eines Künstlers festlegt? Es gibt viele verwandte Eigenschaften (FirstArtist, Artist, JointedArtists, FirstPerformer) und fast alle von ihnen sind schreibgeschützt oder veraltet ...
Laserson

3
Ein bisschen spät, aber Sie können die Darsteller / Künstler wie folgt hinzufügen: mp3.Tag.Performers = new string [] {"Performer 1", "Performer 2", "Performer 3"};
Nokturnal

Tolle Bibliothek. Ich habe es verwendet, um ID3-Tags zu kopieren.
Ronnie Overby

Unterstützt diese Bibliothek moderne ID3v2-Tags? Simucals Ausschnitt schlägt nicht vor (es sei denn, er hat gerade daran teilgenommen).
James

TagLib ist GPL. Dies ist hier kaum eine angemessene Antwort.
Sean O'Neil

65

TagLib Sharp ist sehr beliebt.

Als Randnotiz, wenn Sie einen kurzen und schmutzigen Blick darauf werfen möchten, es selbst zu tun. Hier ist ein C # -Schnipsel, den ich gefunden habe, um die Tag-Informationen eines MP3s zu lesen.

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
Das ist nur für ID3v1. v2 hat eine andere Struktur, sie befindet sich am Anfang der Datei (im Gegensatz zu v1 am Ende) und hat eine variable Länge (v1 ist immer 128 Byte).
Jishi

Es ist eine viel zu lange Lösung und nicht optimiert. stackoverflow.com/a/4361634/1395101
Amin Ghaderi

Encoding.Defaultkann durch ersetzt werden Encoding.UTF8. Weitere Informationen finden Sie unter: gigamonkeys.com/book/practical-an-id3-parser.html
Mirjalal

25

UltraID3Lib ...

Beachten Sie, dass UltraID3Lib nicht mehr offiziell verfügbar ist und daher nicht mehr gewartet wird. In den Kommentaren unten finden Sie den Link zu einem Github-Projekt, das diese Bibliothek enthält

//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 Dies ist bei weitem die beste Bibliothek - da 'UltraID3Lib fast alle vierundsiebzig Arten von Frames unterstützt, die in ID3 v2.3 angegeben sind' sowie die frühen ID3v1-Tags. Beste Antwort.
James

+1 Dies ist viel einfacher zu bedienen und einfacher mit MP3-Metadaten
umzugehen

1
Ich habe dies kürzlich verwendet und es funktioniert fantastisch und belastet den Prozess nicht. Es ist schnell und einfach zu bedienen und berücksichtigt nahezu jedes Tag, das in den ID3-Versionen 1 und 2 vorhanden ist (Sie können beide gleichzeitig oder nur das eine oder andere verwenden). Es macht weit mehr als ich brauchte. Es hatte auch eine sehr umfassende Hilfedatei. Ich werde es jedem empfehlen.
1934286

Schöne Grüße; Link ist nicht zugänglich. Wird UltraID3Lib eingestellt?
Auf Wiedersehen

Ich habe eine Version von UltraID3Lib gefunden, die in diesem GitHub-Projekt enthalten ist. github.com/clementboone/MyWindowsMediaPlayer Das Projekt enthält einen UltraID3Lib-Ordner, der den vollständigen Inhalt der ZIP-Datei enthält, die früher verfügbar war.
Matt

15

TagLib Sharp unterstützt das Lesen von ID3-Tags.


Ich habe angefangen, TagLib Sharp basierend auf der Empfehlung hier zu verwenden, und es hat für meine Anwendung (die nur MP3-Informationen enthält) hervorragend funktioniert.
Greg7gkb

Siehe hewins Antwort unten für den neuen
Linkstandort


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.