Die Community zu .NET und Classic VB.
Menü

VB 5/6-Tipp 0331: MP3 Tag auslesen

 von 

Beschreibung 

Jedes MP3 File enthält einen Tag, der diverse Informationen beinhaltet. Diese lassen sich recht leicht mit diesem Tip auslesen.

Schwierigkeitsgrad:

Schwierigkeitsgrad 1

Verwendete API-Aufrufe:

keine

Download:

Download des Beispielprojektes [2,23 KB]

'Dieser Quellcode stammt von http://www.activevb.de
'und kann frei verwendet werden. Für eventuelle Schäden
'wird nicht gehaftet.

'Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum.
'Ansonsten viel Spaß und Erfolg mit diesem Source!

'------------- Anfang Projektdatei Projekt1.vbp -------------
'--------- Anfang Formular "Form1" alias Form1.frm  ---------
' Steuerelement: Kombinationsliste "Combo1"
' Steuerelement: Textfeld "txtGenreCode"
' Steuerelement: Textfeld "txtComment"
' Steuerelement: Textfeld "txtYear"
' Steuerelement: Textfeld "txtAlbum"
' Steuerelement: Textfeld "txtArtist"
' Steuerelement: Textfeld "txtTitle"
' Steuerelement: Beschriftungsfeld "Label8"
' Steuerelement: Beschriftungsfeld "Label6"
' Steuerelement: Beschriftungsfeld "Label5"
' Steuerelement: Beschriftungsfeld "Label4"
' Steuerelement: Beschriftungsfeld "Label3"
' Steuerelement: Beschriftungsfeld "Label2"
' Steuerelement: Beschriftungsfeld "Label1"

Option Explicit

Private Type TagInfo
    Tag As String * 3
    Songname As String * 30
    artist As String * 30
    album As String * 30
    year As String * 4
    comment As String * 30
    genre As String * 1
End Type

Dim FileName As String
Dim CurrentTag As TagInfo

Private Sub Form_Load()
    Dim temp As String
    On Error Resume Next

    FileName = App.Path & IIf(Right(App.Path, 1) = "\", "", "\") & "myMP3.mp3"

    Open FileName For Binary As #1
    With CurrentTag
    
        Get #1, FileLen(FileName) - 127, .Tag
        If Not .Tag = "TAG" Then
            Label8.Caption = "No Tag"
            Close #1
            Exit Sub
        End If
        
        Get #1, , .Songname
        Get #1, , .artist
        Get #1, , .album
        Get #1, , .year
        Get #1, , .comment
        Get #1, , .genre
        Close #1
        
        txtTitle = RTrim(.Songname)
        txtArtist = RTrim(.artist)
        txtAlbum = RTrim(.album)
        txtYear = RTrim(.year)
        txtComment = RTrim(.comment)
        
        temp = RTrim(.genre)
        txtGenreCode = Asc(temp)
        Combo1.ListIndex = CInt(txtGenreCode) - 1
    End With
    Close #1
End Sub
'---------- Ende Formular "Form1" alias Form1.frm  ----------
'-------------- Ende Projektdatei Projekt1.vbp --------------

Tipp-Kompatibilität:

Windows/VB-VersionWin32sWin95Win98WinMEWinNT4Win2000WinXP
VB4
VB5
VB6

Hat dieser Tipp auf Ihrem Betriebsystem und mit Ihrer VB-Version funktioniert?

Ja, funktioniert!

Nein, funktioniert nicht bei mir!

VB-Version:

Windows-Version:

Ihre Meinung  

Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.

Archivierte Nutzerkommentare 

Klicken Sie diesen Text an, wenn Sie die 19 archivierten Kommentare ansehen möchten.
Diese stammen noch von der Zeit, als es noch keine direkte Forenunterstützung für Fragen und Kommentare zu einzelnen Artikeln gab.
Aus Gründen der Vollständigkeit können Sie sich die ausgeblendeten Kommentare zu diesem Artikel aber gerne weiterhin ansehen.

Kommentar von blab am 01.07.2010 um 10:49

Ich bräuchte diesen code in VB.Net weiß jemand da eine brauchbare seite?

Kommentar von sebastian Geutebrück am 25.10.2004 um 20:39

Ein Tipp, wie ich ihn liebe. Einfach und ohne Zusatzmodule (ActiveX und Co.) nutzbar.

Kommentar von Elmar Burg am 22.09.2003 um 22:59

Ich hab mal in meinen Archiven gesucht und hier an alle die wissen wollen wie man die Zeit eines Titels berechnet ausgibt:
Ich verwende für mein Programm den MediaPlayer als MP1
Die Interwalle der beiden verwendeten timer sind jeweils "100"
Scroll1 ist ein Scrollbar mit dem ich die Position des Liedes steuern kann.


Private Sub Timer1_Timer()
On Error Resume Next
Scroll1 = MP1.CurrentPosition
End Sub



Private Sub Timer2_Timer()

Dim TimeEnd As String
Dim intSec As Integer
Dim Time2 As String
Dim strSec As String
Dim a As String
Dim b As Integer
Dim c As String
Dim d As String
'StartZeit
c = Scroll1.Value / 60 'Time2 wird die Sec-Zeit duch 60 (minutenzeit) zugewiesen
c = Format(c, "###0.00") 'time2 wird in format 0,00 gebracht
b = Len(c) - 3 'intsec wird die länge der vorkommazahlen zugewiesen
a = Mid(c, 1, b) 'Timeend ist die VorkommaZahl
b = Right(c, 2) 'intSec wird zur Nachkommazahl im 100er-System
b = b / 100 * 60 'umformung in 60er system
d = Format(CStr(b), "00") 'es wird das format 00 zugewiesen
'EndZeit
Time2 = MP1.SelectionEnd / 60 'Time2 wird die Sec-Zeit duch 60 (minutenzeit) zugewiesen
Time2 = Format(Time2, "###0.00") 'time2 wird in format 0,00 gebracht
intSec = Len(Time2) - 3 'intsec wird die länge der vorkommazahlen zugewiesen
TimeEnd = Mid(Time2, 1, intSec) 'Timeend ist die VorkommaZahl
intSec = Right(Time2, 2) 'intSec wird zur Nachkommazahl im 100er-System
intSec = intSec / 100 * 60 'umformung in 60er system
strSec = Format(CStr(intSec), "00") 'es wird das format 00 zugewiesen
lblZeit.Caption = a + ":" + d + "/" + TimeEnd + ":" + strSec 'Zeiten werden ausgegeben
End Sub


Es gibt bestimmt bessere Wege, aber da ich nicht der Experte schlechthin bin hab ichs halt so realisiert

gruss
Elmar

Kommentar von Compy am 24.08.2003 um 09:30

Das ist mittlerweile der 7 Code, der ID3.. VERSION 1 ausliest. Da mir da zu wenig Infos zu erhalten sind, wie liest man denn ID3 VERSION 2 Tags aus??? (Sie WinAmp -> ID3 Tag bearbeiten)

Danke im Vorraus, Compy.

Kommentar von Jansens am 24.01.2002 um 15:15

Wie bekomme ich bestimmte Felder aus dem MP3 Tag in eine SQL Datenbank?
Falls jemand antwortet bitte einfach eine e-mail schreiben. Danke im vorraus!!!

Kommentar von elite01 am 16.12.2001 um 13:18

Hallo Björn,
hast du was degegen, wenn ich dein VB-Quelltext etwas verändere und zum downloaden bereitstelle? Ich benutze deinen Tip NICHT kommerziell und schreibe Autor und Email und die Originalfassung mit in meinem Quelltext.

Kommentar von Daniel Stietz am 07.12.2001 um 13:19

Hier ist ein Link wo der MP3 Header und der Aufbau des ID3Tag beschrieben wird:
http://sites.inka.de/sites/plagiats-home/mp3-format.html

Kommentar von GreySound am 07.11.2001 um 16:16

Ich habe eine Sequenzer QY10 von Yamaha, der über GM (General Midi) verfügt, wie kann ich über die Soundkarte so ein Gerät ansprechen und die Daten auslesen???? Danke für jeden Tipp

Kommentar von Kundi am 02.09.2001 um 13:56

Wenn man diesen Tip im Forum einfügt, steht immer noch der falsche Titel da ("MP3 Header auslesen"). Ihr könnt das ganze ja mal in "ID3v1-Tag aus MP3s auslesen".

Kommentar von Hady Khandani am 16.07.2001 um 16:41

Hallo!
Wie bzw. wo kann ich denn die Länge eines MP3 Songs auslesen bzw. berechnen????
Danke
Antwort bitte an hady.khandani@gmx.de

Kommentar von Marco am 27.05.2001 um 19:27

Gibt es vielleicht doch eine ProgrammierMöglickeit um eine SDI-Formn vertikal zu scrollen???

Kommentar von Michael am 09.01.2001 um 00:09

Wie bereits erwähnt, liest dieses Beispiel den ID3Tag, genauer den ID3-Tag der Version 1.0 aus. Die Version 1.1, die noch die Track# unterstützt (in dem das comment nur 28 Byte hat gefolgt von $00 und der Track#), wird nicht vollständig ausgelesen (Track# fehlt).
Wer etwas zum MP3-Header sucht, der schaue mal unter www.id3.org nach. Da gibt es Informationen zu den Tags und dem Header.

Kommentar von Kristof am 26.11.2000 um 07:13

Ich habe mir mal die Arbeit gemacht und rausgefunden, wie die diversen MP3-Header aufgebaut sind. Aus diesen Infos sind die Bitrate usw. auszulesen und damit die Spielzeit zu berechnen. Da das sehr umfangreich ist und auch eine große Tabelle beinhaltet, kann ich es hier leider nicht posten, aber Interessenten per E-Mail schicken. Bei Anfragen bitte deutlich im Betreff angeben: "MP3-Header", sonst werden die Mails ungelesen gelöscht. Bei AOL gibts halt tonnenweise Spam-Mails :(

Kommentar von Roli am 15.11.2000 um 20:45

Weiss zufällig jemand wie man die Spielzeit des Songs berechnen oder auslesen kann?

Kommentar von fill am 09.11.2000 um 19:11

Hi VBler!
Ist es irgendwie möglich...
1. ...diese Header (per VB) zu ändern?
2. ...die Bitrate und Länge herauszufinden?
Danke vielmals!
-fill

Kommentar von hazor am 22.10.2000 um 22:44

hi leutz,
mp3-filez kann man auch mit winmm.dll abspielen
weiß einer wie der header aufgebaut ist???

Kommentar von Götz Reinecke am 09.10.2000 um 19:32

Hallo Fidsche,
das müßte mit dem Mulitmedia-Control gehen. Meines Wissens erlaubt er auch das abspielen von MP3-Files
Grüße
Götz

Kommentar von Fidsche am 08.10.2000 um 13:02

Wie kann ich einen MP3 Player programmieren? bzw. was brauche ich für eine dll

Kommentar von Kundi am 06.10.2000 um 23:33

Damit ließt man den ID3Tag und nicht den Header aus. Im Header steht zum Beispiel die Bitrate, Frequenz, Mode, usw.