Vor längerer Zeit hatten wir in einem Tipp gezeigt, wie sich MP3-Informationen (ID3v1) auslesen lassen: Unser heutiger Tipp liest nicht nur alle ID3v1-Tag Informationen aus, sondern kann diese auch wieder zurückspeichern. Die MP3-Informationen werden hierbei in einem benutzerdefinierten Datentyp zwischengespeichert: ' 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 Byte End Structure ' Genre-Auflistung Private Enum Genre Blues = 0 ClassicRock = 1 Country = 2 Dance = 3 Disco = 4 Funk = 5 Grunge = 6 HipHop = 7 Jazz = 8 Meta = 9 NewAge = 10 Oldies = 11 Other = 12 Pop = 13 R_B = 14 Rap = 15 Reggae = 16 Rock = 17 Techno = 18 Industrial = 19 Alternative = 20 Ska = 21 DeathMetal = 22 Pranks = 23 Soundtrack = 24 EuroTechno = 25 Ambient = 26 TripHop = 27 Vocal = 28 JazzFunk = 29 Fusion = 30 Trance = 31 Classical = 32 Instrumental = 33 Acid = 34 House = 35 Game = 36 SoundClip = 37 Gospel = 38 Noise = 39 AltRock = 40 Bas = 41 Soul = 42 Punk = 43 Space = 44 Meditative = 45 InstrumentalPop = 46 InstrumentalRock = 47 Ethnic = 48 Gothic = 49 Darkwave = 50 TechnoIndustrial = 51 Electronic = 52 PopFolk = 53 Eurodance = 54 Dream = 55 SouthernRock = 56 Comedy = 57 Cult = 58 Gangsta = 59 Top40 = 60 ChristianRap = 61 Pop_Funk = 62 Jungle = 63 NativeAmerican = 64 Cabaret = 65 NewWave = 66 Psychadelic = 67 Rave = 68 Showtunes = 69 Trailer = 70 LoFi = 71 Tribal = 72 AcidPunk = 73 AcidJazz = 74 Polka = 75 Retro = 76 Musical = 77 RockNRoll = 78 HardRock = 79 Folk = 80 Folk_Rock = 81 NationalFolk = 82 Swing = 83 Fusion1 = 84 Bebob = 85 Latin = 86 Revival = 87 Celtic = 88 Bluegrass = 89 Avantgarde = 90 GothicRock = 91 ProgressiveRock = 92 PsychedelicRock = 93 SymphonicRock = 94 SlowRock = 95 BigBand = 96 Chorus = 97 EasyListening = 98 Acoustic = 99 Humour = 100 Speech = 101 Chanson = 102 Opera = 103 ChamberMusic = 104 Sonata = 105 Symphony = 106 BootyBass = 107 Primus = 108 PornGroove = 109 Satire = 110 SlowJam = 111 Club = 112 Tango = 113 Samba = 114 Folklore = 115 End Enum ID3v1-Tag einer MP3-Datei auslesen ''' <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 = bData(127) End With End If oStream.Close() Catch ex As Exception End Try End If ' Rückgabewert: MP3Info Return (oInfo) End Function ID3v1-Tag speichern ''' <summary> ''' Speichert die IDVv1-Informationen in die angegebene Datei ''' </summary> ''' <param name="sFile">MP3-Dateiname</param> ''' <param name="Info">MP3Info-Struktur</param> Private Function SaveMP3Info(ByVal sFile As String, ByVal Info As MP3Info) As Boolean Dim Success As Boolean = False ' 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 die MP3-Infos in ein Byte-Array konvertieren Dim bData(127) As Byte With Info FillData(bData, 0, "TAG") FillData(bData, 3, .Titel) FillData(bData, 33, .Interpret) FillData(bData, 63, .Album) FillData(bData, 93, .Jahr) FillData(bData, 97, .Kommentar) bData(127) = .Genre End With oStream.Write(bData, 0, 128) oStream.Close() Success = True Catch ex As Exception End Try End If ' Rückgabewert: Success Return (Success) End Function Hilfsfunktionen ' 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 ' Kopiert den Text an die angegebene Position in das Byte-Array Private Sub FillData(ByRef Data() As Byte, _ ByVal StartPos As Integer, ByVal Text As String) Dim bData() As Byte = System.Text.Encoding.Default.GetBytes(Text) For i As Integer = 0 To bData.Length - 1 Data(StartPos + i) = bData(i) Next End Sub Beispiel ' MP3-Infos lesen und anzeigen Dim sFile As String = "d:\test.mp3" Dim oInfo As MP3Info = ReadMP3Info(sFile) Jetzt werden die MP3-Informationen verändert... With oInfo .Title = "MyMP3 File" .Artist = "Me" .Album = "My Album" .Year = "2009" .Comments = "No comment" .Genre = CByte(Genre.Disco) End With Diese Änderungen sollen nun in die MP3-Datei gespeichert werden... If SaveMP3Info(sFile, oInfo) Then MsgBox("MP3-Informationen wurden erfolgreich geschrieben!", MsgBoxStyle.Information) Else MsgBox("MP3-Informationen konnten nicht gespeichert werden!", MsgBoxStyle.Exclamation) End If Dieser Tipp wurde bereits 17.500 mal aufgerufen. Voriger Tipp | Zufälliger Tipp | Nächster Tipp
Anzeige
Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv Vol.6 (einschl. Beispielprojekt!) Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m. |
Neu! sevCommand 4.0 Professionelle Schaltflächen im modernen Design! Mit nur wenigen Mausklicks statten auch Sie Ihre Anwendungen ab sofort mit grafischen Schaltflächen im modernen Look & Feel aus (WinXP, Office, Vista oder auch Windows 8), inkl. große Symbolbibliothek. Tipp des Monats April 2024 Skyfloy Chart von Microsoft und dazu noch gratis Tutorial für Microsoft Chart Controls für Microsoft .NET Framework 3.5 TOP Entwickler-Paket TOP-Preis!! Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1605.50 EUR... |
||||||||||||||||
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein. |