Rubrik: Multimedia & Sound · Audio | VB-Versionen: VB.NET | 28.01.08 |
MP3-Informationen auslesen (.NET) Auslesen der Tag-Informationen einer MP3-Datei, wie Titel des Songs, Interpret, Erscheinunghsjahr, etc. | ||
Autor: Dieter Otter | Bewertung: | Views: 22.872 |
www.tools4vb.de | System: WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
MP3-Dateien sind schon fast gar nicht mehr wegzudenken - lassen sich doch so fast 200 Songs auf einer normalen CD brennen. Jede MP3-Datei enthält hierbei Informationen über den Interpret, Erscheinungsjahr, Titel und einiges mehr.
Der nachfolgende Tipp zeigt, wie man mit VB.NET eben diese Informationen auslesen kann.
Erstellen Sie ein neues Windows-Forms Projekt, platzieren auf die Form ein TextBox-Control (txtFile), ein Button (Button1), sowie ein ListBox-Control (ListBox1) und fügen nachfolgenden Code ein:
Public Class Form1 ' Daten-Struktur der MP3-Informationen Private Structure MP3Info Dim Titel As String Dim Interpret As String Dim Album As String Dim Jahr As String Dim Kommentar As String Dim Genre As String End Structure
''' <summary> ''' Liest den ID3V1-Tag einer MP3-Datei aus ''' </summary> ''' <param name="sFile">MP3-Dateiname</param> ''' <returns>Struktur mit den MP3-Informationen</returns> Private Function ReadMP3Info(ByVal sFile As String) As MP3Info Dim oInfo As New MP3Info ' Prüfen, ob Datei auch existiert If System.IO.File.Exists(sFile) Then Try Dim oStream As New System.IO.FileStream(sFile, IO.FileMode.Open) ' Position des MP3-Tags oStream.Seek(-128, IO.SeekOrigin.End) ' jetzt 128 Bytes lesen Dim bData(127) As Byte oStream.Read(bData, 0, 128) ' Byte in String umwandeln Dim sData As String = System.Text.Encoding.Default.GetString(bData) ' Prüfen, ob Daten mit TAG beginnen If sData.Substring(0, 3) = "TAG" Then With oInfo ' jetzt die Struktur mit den Infos füllen .Titel = StripNull(sData.Substring(3, 30)) .Interpret = StripNull(sData.Substring(33, 30)) .Album = StripNull(sData.Substring(63, 30)) .Jahr = StripNull(sData.Substring(93, 4)) .Kommentar = StripNull(sData.Substring(97, 30)) .Genre = StripNull(sData.Substring(127, 1)) End With End If oStream.Close() Catch ex As Exception End Try End If ' Rückgabewert: MP3Info Return (oInfo) End Function
' Sucht nach dem ersten Null-Zeichen und gibt den linken Teil ' des Strings zurück Private Function StripNull(ByVal sData As String) As String Dim nPos As Integer = sData.IndexOf(Chr(0)) If nPos >= 0 Then Return sData.Substring(0, nPos).TrimEnd Else Return sData.TrimEnd End If End Function
' MP3-Info lesen und anzeigen Private Sub ShowMP3Infos(ByVal sFile As String) Dim oInfo As MP3Info = ReadMP3Info(sFile) With ListBox1.Items .Clear() .Add("Titel: " & oInfo.Titel) .Add("Interpret: " & oInfo.Interpret) .Add("Album: " & oInfo.Album) .Add("Jahr: " & oInfo.Jahr) .Add("Kommentar: " & oInfo.Kommentar) .Add("Genre: " & oInfo.Genre) End With End Sub
Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click ' Datei auswählen With New OpenFileDialog .Filter = "MP3-Datei (*.mp3)|*.mp3" .FileName = txtFile.Text If .ShowDialog() = Windows.Forms.DialogResult.OK Then txtFile.Text = .FileName ShowMP3Infos(txtFile.Text) End If End With End Sub End Class
Beim Klick auf den Button wird der Standard-Dialog zur Auswahl einer MP3-Datei aufgerufen. Nach Übernahme der Datei werden die MP3-Informationen im ListBox-Control angezeigt.