Laden...

ID3Taglib Picture auslesen

Erstellt von LodiGoesC# vor 12 Jahren Letzter Beitrag vor 12 Jahren 3.225 Views
L
LodiGoesC# Themenstarter:in
5 Beiträge seit 2012
vor 12 Jahren
ID3Taglib Picture auslesen

Hallo, wie im Titel bereits erwähnt, verwende ich ID3TagLib.dll
Ich möchte damit das Bild der .mp3 Datei ändern. Hierfür benötige ich Hilfe, da ich keinen Frame finde, der den "Front Cover" Tag beschreibt.

Hier gehts zum allgemeinen Thema zu ID3TagLib:
Bibliothek für ID3v1/ID3v2 Tags in mp3-Dateien

MFG Lodi

R
100 Beiträge seit 2009
vor 12 Jahren

@LodiGoesC#: Mit ID3TagLib habe ich leider keine Erfahrung aber mit TagLibSharp kannst du das Bild des Album der .mp3 Datei ändern. Der Code sieht ungefähr so aus


	TagLib.File file = TagLib.File.Create("UMTD.mp3");
	file.Tag.Pictures = new Picture[] { new Picture("Pic.png") };
	file.Save();

Das Beispiel kannst du von C# – How to read MP3 header? herunterladen.

L
LodiGoesC# Themenstarter:in
5 Beiträge seit 2012
vor 12 Jahren

Danke für die schnelle Antwort. Ich habe es gleich ausprobiert, leider erfolglos 😕

Hat noch jemand anderes eine Ahnung? 😃

M
1.439 Beiträge seit 2005
vor 12 Jahren

Bilder werden in einem "APIC"-Frame gespeichert. Ist ein solcher in deiner MP3-Datei vorhanden?

L
LodiGoesC# Themenstarter:in
5 Beiträge seit 2012
vor 12 Jahren

Hab gerade einfach mal rumgebingt(!!!) 😄

und ich bin eben genau auf dieses "APIC" (entspichte dem "FrameFactory.AttachedPictureFrameId") gestoßen. Jedoch weiß ich nicht wie ich diese FrameID in meinem Programm verwende, denn selbst wenn die .mp3 Datei ein Bild hat, ist mein TextFrame immer null...


FileInfo oFile = new FileInfo(sFullname);
ID3File file = new ID3File(sFullname);
ID3v2Tag v2Tag = file.ID3v2Tag;
TextFrame f = FrameFactory.GetFrame(FrameFactory.AttachedPictureFrameId) as TextFrame;
if (f == null)
{
       f = FrameFactory.GetFrame(FrameFactory.AttachedPictureFrameId) as TextFrame;
                v2Tag.Frames.Add(f);
}
f.Text = sImagePath;
file.Save(sFullname);

Das komische daran ist, dass wenn ich in den Prozess schaue, sehe ich, dass v2Tag einen Frame für "APIC" hat.

4.942 Beiträge seit 2008
vor 12 Jahren

Hallo,

TextFrame erscheint mir bei einem Bild auch der falsche Frame-Typ zu sein, verwende mal direkt die Basisklasse Frame.
Wenn ich das Klassendiagramm auf How ID3v2 Class works ? richtig interpretiere, müßte die Klasse 'AttachedPictureFrame' sein.

Edit: Unter Do Anything With ID3 gibt es genauere Infos darüber.

L
LodiGoesC# Themenstarter:in
5 Beiträge seit 2012
vor 12 Jahren

Auf dem 2. Link war ich auch schon. Jedoch ist der dort angegebene Code nicht auf mein Projekt (ID3TagLib.dll) übertragbar.

Bevor Fragen aufkommen: Ich will nicht eine alternative zu ID3TagLib, da mein Projekt mittlerweile schon recht umfangreich ist und eben von grundauf auf diese .dll aufbaut. 😕

M
1.439 Beiträge seit 2005
vor 12 Jahren

Wie bereits gesagt ist es kein TextFrame sondern ein PictureFrame. Entsprechend casten und du kannst das Bild über das Picture Property setzen.