ID3TAG richtig auslesen und verändern

  • VB.NET

Es gibt 25 Antworten in diesem Thema. Der letzte Beitrag () ist von Dodo.

    ID3TAG richtig auslesen und verändern

    Hallo

    Und zwar arbeite ich derzeit an einem Projekt womit man ID3Tags auslesen kann und später soll man diese sogar ändern können,
    das Klappt auch soweit ganz gut mit dem Auslesen, aber manche MP3 Dateien die einen ID3 Tag haben,
    also Album, Interpret und Song vorhanden sind, liest er nicht aus, die stellen bleiben leer und bei anderen macht er komisch Symbole wie ������

    Wie kann ich das im Griff bekommen, ich habe eine If abfrage wenn v1 dann dass und wenn V2 dann das, sowie wie ich weiß gibt es nur Zwei Versionen eines Tags, kann mich aber täuschen :)
    MFG
    LEON
    _______________________________________________
    Entweder man ist Teil der Lösung oder Teil des Problems.
    Ja ich weiß, ich habe auch schon mehrere Varianten durch, ist immer das Selbe Problem, Felder bleiben leer, die Lib was du meinst heißt glaube ich: UltraID3Lib
    nur weiß ich nicht wie ich das verwenden soll, es gibt leider kein tut darüber, und zweitens weiß ich nicht mal ob diese überhaupt diese fehler nicht mehr hat.

    Dafür müsste es einer schon probiert haben :)

    Weil so müsste ich dann alles ändern...
    MFG
    LEON
    _______________________________________________
    Entweder man ist Teil der Lösung oder Teil des Problems.
    Hast eigendlich recht, nur ich weiß nicht wie ich Sie anwenden soll, auf der Hauptseite habe ich auch nichts gefunden,
    weiß auch nicht, ob es ein tut darüber gibt, ich habe noch keines gefunden...


    Spoiler anzeigen

    VB.NET-Quellcode

    1. On Error Resume Next
    2. Dim song As String, künstler As String, album As String
    3. Dim datei As String, fs As FileStream, br As BinaryReader
    4. Dim id3tag As String, id3tag2 As String
    5. Dim searchResults As String() = Directory.GetFiles("D:\", "*.mp3", SearchOption.AllDirectories)
    6. For Each result As String In searchResults
    7. id3tag = ""
    8. id3tag2 = ""
    9. datei = (result)
    10. fs = New FileStream(datei, FileMode.Open, FileAccess.Read)
    11. br = New BinaryReader(fs)
    12. Dim file As New FileInfo(datei)
    13. Dim tagposition As Integer = (file.Length - 128)
    14. fs.Position = tagposition
    15. id3tag = br.ReadChars(3)
    16. If id3tag <> "ID3" Then
    17. fs.Position = 0
    18. id3tag2 = br.ReadChars(3)
    19. End If
    20. If id3tag = "ID3" Or id3tag2 = "ID3" Then
    21. 'treffer
    22. fs.Position = tagposition + 3
    23. song = br.ReadChars(30)
    24. song = song.Trim(vbNullChar)
    25. fs.Position = tagposition + 33
    26. künstler = br.ReadChars(30)
    27. künstler = künstler.Trim(vbNullChar)
    28. fs.Position = tagposition + 63
    29. album = br.ReadChars(30)
    30. album = album.Trim(vbNullChar)
    31. If song > "�" Then
    32. song = "Ungültiger Titel"
    33. Else : End If
    34. If künstler > "�" Then
    35. künstler = "Ungültiger Interpret"
    36. Else : End If
    37. If album > "�" Then
    38. album = "Ungültiges Album"
    39. Else : End If
    40. Dim lv As ListViewItem = Audio_Playlistview.Items.Add(song)
    41. lv.SubItems.Add(künstler)
    42. lv.SubItems.Add(album)
    43. lv.SubItems.Add(datei)
    44. Else : End If
    45. Next



    Da ist ein beispiel :)
    MFG
    LEON
    _______________________________________________
    Entweder man ist Teil der Lösung oder Teil des Problems.
    Das sieht aus wie die Version von Se..Vid...
    ich weis ja nicht ob ich das hier nennen darf.


    aber die Version ist gut und Funktioiert auch.
    Wenn dann doch fehler kommen, liegt es daran das die Dateien entweder falsch beschriftet sind oder es wurde ein schlechtes Ripper Programm genutzt.
    Richtig, SV
    Komisch ist, das bei fast allen MP3 eines Album richtig angezeigt werden, bis auf 2-3 und das verstehe ich nicht, darunter sind viele einzeln titel die das gleich habe, nur wie kann ich diese umwandeln?

    In anderen MP3 Player tool wie VLC werden die richtig angezeigt.
    MFG
    LEON
    _______________________________________________
    Entweder man ist Teil der Lösung oder Teil des Problems.

    ChaosBernd schrieb:

    liegt vermutlich am encoding.... aber da passe ich jetzt lieber

    aber singu und Beep sind unterwegs. vieleicht wissen die ne lösung.

    würde mich eigentlich auch interessieren.

    Man hat mich gerufen und ich bin gekommen. Ich hab mich mit ID3Tags und VB.NET noch nicht beschäftigt. Werd mich aber mal schlau machen.
    Ich arbeite ja nicht nur am Auslesen, sondern ich arbeite eigendlich an einem DirectX Audio und Video Player, sieht halt irgendwie komisch aus, wenn nicht alles richtig dargestellt wird,
    außerdem muss ich:

    Off-Topic an:
    eine möglichkeit finden auch Videos auszulesen, wie ich gesehen habe, besitzen die keinen direkten IDTag, aber irgendwie müssen die ja ausgelesen werden
    Off-Topic aus:
    MFG
    LEON
    _______________________________________________
    Entweder man ist Teil der Lösung oder Teil des Problems.
    Das ist klasse, ich werde auch weiter suchen, leider gibt es wenig seite darüber, mal sehen, weil irgendwo muss es ja dran liegen:

    Ich poste mal drei Verschiedene MP3s im Code: (nur ein ausschnitt)

    Die ausgelesen wird:

    Spoiler anzeigen

    Quellcode

    1. ID3TIT2Clash of the ChampionsTPE1
    2. Jeremy SouleTALBSupreme Commander2007TCONSoundtrackTRCK14���i
    3. ��"�ZDV�+@�3A�@c�5Id



    Und der nicht ausgelesen wird, und leer bleibt:

    Quellcode

    1. ID3TIT2The Final CataclysmTPE1
    2. Jeremy SouleTALBSupreme Commander OSTTYER2007TCONSoundtrackTRCK18���i
    3. �>"�J


    Der diese komischen Symbole macht ����

    Quellcode

    1. ID3WXXXTCOPTOPETCOMTRCKTYERTCONMixCOMMenghttp://www.mixkatalog.deTENC@TLANEnglishTIT2COMMdeuhttp://www.mixkatalog.deTALBTPE1���Info����w
    2. "$')+.1469;>@CEHJMORUWZ\_adfiknqtvy{~��������������������������������������������������:LAME3.90.�2�$�F���w��^6���i


    Es gibt schon ein unterschied, weiß nur nicht ob der bedeutsam ist: beide von V2
    MFG
    LEON
    _______________________________________________
    Entweder man ist Teil der Lösung oder Teil des Problems.
    Gut, und wie soll ich das jetzt umsetzen?
    MFG
    LEON
    _______________________________________________
    Entweder man ist Teil der Lösung oder Teil des Problems.
    Der Beitrag war wirklich etwas Sinnlos von ChaosBernd.

    Aber hier mal ein Beispeil für die UltraID3Lib

    VB.NET-Quellcode

    1. Dim mp3Object As New UltraID3
    2. mp3Object.Read("musik.mp3")
    3. With mp3Object.ID3v1Tag
    4. txtArtist.Text = .Artist
    5. txtTitle.Text = .Title
    6. txtAlbum.Text = .Album
    7. txtYear.Text = .Year
    8. txtGenre.Text = .Genre
    9. End With


    ist das wirklich so schwer? Einmal in den Namespace geschaut und schon musst man sogut wie gar nicht mehr überlegen.
    Danke dir, habe es getestet, aber der fehler hier ist der gleiche, die Felder bleiben leer,
    wenn ich keine Catch rutine drinne habe zeit er mir den fehler:

    Ist aber nicht wild, weil dieser nur zeigt das kein wert Vorhanden sind:

    VB.NET-Quellcode

    1. Das Objekt mit Nullwert muss einen Wert haben.


    Aber sonst sind die gleichen fehler vorhanden, ich denke da gibt es noch eine andere möglichkeit, weil VLC kann das ja auch.
    MFG
    LEON
    _______________________________________________
    Entweder man ist Teil der Lösung oder Teil des Problems.
    Hast mal anstatt ID3v1 den ID3v2 versucht? Das sind 2 unterschiedliche Informationen in der MP3.

    Un Fehlermeldungen sind ne feine sache, aber ohne dazugehörigen Code macht das auch nicht viel sinn. Wer weiß was du da nun genau fabriziert hast xDD