vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
vb@rchiv Offline-Reader - exklusiv auf der vb@rchiv CD Vol.4  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück
Rubrik: Multimedia & Sound · Audio   |   VB-Versionen: VB4, VB5, VB603.06.02
Länge einer MP3-Datei mit Hilfe der API auslesen

Auslesen der Länge (Spieldauer) einer MP3-Datei ohne Verwendung zusätzlicher Controls

Autor:   Michael HartmannBewertung:     [ Jetzt bewerten ]Views:  26.223 
ohne HomepageSystem:  Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 Beispielprojekt auf CD 

Wenn Sie unseren  aktuellen Workshop aufmerksam durchgearbeitet haben, sollte Ihnen nachfolgender Tipp zum Auslesen der Länge (Spieldauer) einer MP3-Datei gar nicht mal so neu vorkommen

Um die Länge einer MP3-Datei auszulesen muss man nämlich nicht unbedingt auf zusätzlich Controls wie z.B. dem Windows Media Player zurückgreifen. Es geht auch mit Hilfe der Windows-API. Der Code ist klein und nicht sonderlich schwer zu verstehen. Er besteht lediglich aus zwei API-Deklarationen und einer Funktion, die die Länge der übergebenen MP3-Datei in Millisekunden zurück liefert.

Hier nun der Code:

' benötigte API-Deklarationen
Private Declare Function mciSendString Lib "winmm.dll" _
  Alias "mciSendStringA" ( _
  ByVal lpstrCommand As String, _
  ByVal lpstrReturnString As String, _
  ByVal uReturnLength As Long, _
  ByVal hwndCallback As Long) As Long
 
Private Declare Function GetShortPathName Lib "kernel32" _
  Alias "GetShortPathNameA" ( _
  ByVal lpszLongPath As String, _
  ByVal lpszShortPath As String, _
  ByVal cchBuffer As Long) As Long
' Ermittelt die Länge einer MP3-Datei
' in Millisekunden
Private Function GetMP3Length( _
  ByVal strFileName As String) As Long
 
  Dim strBuffer As String
  Dim lRet As Long
  Dim sReturn As String
 
  ' Da die mciSendString Funktion mit langen Dateinamen
  ' nicht korrekt arbeitet, muss zuvor der kurze
  ' 8.3 Dateiname der MP3-Datei ermittelt werden.
  strBuffer = Space$(255)
  lRet = GetShortPathName(strFileName, strBuffer, Len(strBuffer))
 
  If lRet <> 0 Then
    strFileName = Left$(strBuffer, InStr(strBuffer, vbNullChar) - 1)
  End If
 
  ' MP3-Datei öffnen
  mciSendString "open " & strFileName & _
    " type MPEGVideo alias mp3audio", 0, 0, 0
 
  ' Länge der Datei in Millisekunden auslesen
  sReturn = Space$(256)
  lRet = mciSendString("status mp3audio length", _
    sReturn, Len(sReturn), 0&)
 
  ' MP3-Datei schliessen
  mciSendString "close mp3audio", 0, 0, 0
 
  GetMP3Length = Val(sReturn)
End Function

Für das Umwandeln der Zeitrückgabe (Millisekunden) in ein besser lesbares Format (Minuten:Sekunden) können Sie zusätzlich nachfolgende Funktion einsetzen:

' Millisekunden in lesbares Zeitformat umwandeln
Private Function FormatTime(ByVal lMSec As Long) _
  As String
 
  Dim iMin As Integer
  Dim iSec As Integer
 
  iSec = Int(lMSec / 1000)
  iMin = Int(iSec / 60)
  iSec = iSec - (iMin * 60)
 
  FormatTime = Format$(iMin, "00") & ":" & _
    Format$(iSec, "00")
End Function

Dieser Tipp wurde bereits 26.223 mal aufgerufen.

Voriger Tipp   |   Zufälliger Tipp   |   Nächster Tipp

Über diesen Tipp im Forum diskutieren
Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

Neue Diskussion eröffnen

nach obenzurück


Anzeige

Kauftipp Unser Dauerbrenner!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.
 
   

Druckansicht Druckansicht Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
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.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel