Musik-Infos auslesen

  • VB.NET

Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von Cebrox.

    Musik-Infos auslesen

    Hallo,

    ich schreibe mir grad ein kleines Programm welches meine Musik sortieren soll. Momentan hänge ich daran fest die Informationen wie "Album" und "Interpreten" auszulesen. Hab hier im Forum schon mal geschaut aber leider noch nichts passendes gefunden (oder ich bin einfach zu blöd die SuFu zu benutzen). Ich möchte nur die Infos einer einzelnen Datei auslesen (Interpret und Album), damit mein Programm die Ordner dafür erstellen kann. Vorhanden ist nur der Pfad der MP3-Datei bzw WMA-Datei. Code brauche ich glaub ich nicht posten. Muss nur wissen welche Funktionen ich wie benutzen muss.

    Danke schonmal.
    Cebrox
    Ich will jetzt mithilfe der Klasse die mir SystemUnknown als erstes gepostet hat die Daten so in Variablen speichern.

    VB.NET-Quellcode

    1. Imports System.IO
    2. Module Sorter
    3. Dim Metadaten As New MP3Info
    4. Dim Album As String
    5. Dim Interpret As String
    6. Dim Pfad As String
    7. Sub Main()
    8. Pfad = My.Application.CommandLineArgs.Item(0)
    9. If My.Application.CommandLineArgs.Count = 0 Then
    10. Console.WriteLine("Kein Argument angegeben")
    11. ElseIf My.Application.CommandLineArgs.Count > 1 Then
    12. Console.WriteLine("Zu viele Argumente")
    13. Else
    14. Album = Metadaten.GetID3v1Tag.Album(Pfad)
    15. Interpret = Metadaten.GetID3v1Tag.Artist(Pfad)
    16. End If
    17. End Sub


    Nur leider bekomme ich dann folgenden Fehler:
    System.ArgumentNULLException: Der Pfad darf nicht NULL sein.

    Wenn ich die Variable "Pfad" ausgeben lasse, bekomme ich den Pfad raus.
    Schaffe es wohl doch nicht alleine. @:D

    @Kangaroo
    Danke für den Tipp mit Google.
    Bei dem Code, den Du oben benutzt kann ich Dir leider nicht weiterhelfen.
    Ich lese im allgemeinen mehrere ID3 Tags aus und auch eben nicht nur den ID3v1 Standart.
    Deswegen benutze ich o. genannte dll.
    Einfach in My Project - Verweise hinzufügen - lokale Kopie = true und dann kannste auch schon loslegen.
    Hat etliches an Funktionen zu bieten. Kannste auch Album-Cover lesen. MP3Tags lesen & schreiben.
    War ja nur'n Vorschlag

    mfg OnkelR
    Mal auf die Schnelle geantwortet, ich hab nix an Dokus gefunden, ein paar Codeschnipsel, aber nicht der Rede wert.
    Brauchst Du auch nicht, die is garnicht so kompliziert. Die dlll hast Du? Wenn du n' paar Tips brauchst zum Aufrufen,
    helf ich gern. Muss halt nur erst mal in meinen Projekten schnüffeln.
    mfg OnkelR
    Ja, importiert hab ich die DLL. Funktioniert auch so weit. Müsste jetzt nur wissen, wo ich den Pfad der Datei angebe, die ausgelesen werden soll. Und wie ich dann Album und Interpret abrufe. Habe hierzu schon mal nen Code-Schnipsel gefunden. Weiß aber nicht ob das so richtig ist.

    ramansingla.com/2010/12/05/wor…-tags-using-taglib-sharp/

    Wenn ja, kann ich das so auf mein Programm umsetzten. Das wäre dann denke ich kein großes Problem mehr. Muss halt nur wissen ob das, das ist was ich suche. Allerdings schreibt sie hier glaub ich etwas in die Tags. Aber lesen sollte ja genau so funktionieren.
    so geht's

    VB.NET-Quellcode

    1. Dim Dateipfad As String = "d:\wasweissich\mucke.mp3"
    2. Dim mfile As TagLib.File = Nothing
    3. Dim strGenre As String = Nothing
    4. Dim strInterpret As String = Nothing
    5. Dim strAlbum As String = Nothing
    6. Dim strTitel As String = Nothing
    7. Dim strJahr As String = Nothing
    8. Dim strkbps As String = Nothing
    9. Dim strKommentar As String = Nothing
    10. Try
    11. mfile = TagLib.File.Create(Dateipfad)
    12. Catch ex As Exception
    13. MetaData_ok = False
    14. MessageBox.Show("mfile" & vbCrLf & vbCrLf & _
    15. "InnerException: " & vbCrLf & ex.Message.ToString & vbCrLf & vbCrLf & _
    16. "Ausnahme: " & vbCrLf & ex.ToString, "Fehlermeldung", _
    17. MessageBoxButtons.OK, MessageBoxIcon.Error)
    18. Exit Sub
    19. End Try
    20. strGenre = mfile.Tag.FirstGenre
    21. strInterpret = mfile.Tag.FirstPerformer
    22. strAlbum = mfile.Tag.Album
    23. strTitel = mfile.Tag.Title
    24. strJahr = mfile.Tag.Year.ToString
    25. strKommentar = mfile.Tag.Comment
    26. strkbps = mfile.Properties.AudioBitrate.ToString
    27. 'Albumcover
    28. If mfile.Tag.Pictures.Length >= 1 Then
    29. Dim bin As Byte() = DirectCast(mfile.Tag.Pictures(0).Data.Data, Byte())
    30. CoverPictureBox.Image = Image.FromStream(New MemoryStream(bin)).GetThumbnailImage(CoverPictureBox.Width, CoverPictureBox.Height, Nothing, System.IntPtr.Zero)
    31. Else : CoverPictureBox.Image = Nothing
    32. End If


    musste natürlich anpassen (Steuerelemente und so)

    mfg OnkelR