vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Erstellen von dynamischen Kontextmen?s - wann immer Sie sie brauchen!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   RSS-Feeds  | Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2021
 
zurück
Rubrik: Multimedia & Sound · Audio   |   VB-Versionen: VB4, VB5, VB618.04.02
MP3 via API abspielen

Um einen MP3-Song abzuspielen kann man entweder das Windows-Media-Player Control verwenden, oder auf auf eine einzige API-Funktion zurückgreifen.

Autor:   Dieter OtterBewertung:     [ Jetzt bewerten ]Views:  78.251 
www.tools4vb.deSystem:  Win9x, WinNT, Win2k, WinXP, Vista, Win7, Win8, Win10 Beispielprojekt auf CD 

MP3's sind in aller Munde. Überall im Internet kann man sich diese "saugen". Per Doppelklick im Windows Explorer lassen sich diese dann auch anhören (natürlich auch mit anderen Anwendungen).

Wie aber lassen sich MP3-Dateien in einem Visual Basic Programm abspielen?

Klarer Fall! Man nehme das "Windows-Media-Player Control", setzt ein paar Eigenschaften und schon hört man den Klang des MP3-Files aus den Lautsprecherboxen

Es geht aber auch anders - und zwar ohne zusätzliches Control!

Man nehme eine API-Funktion namens mciSendString und nachfolgenden Code:

' zunächst die benötigte API-Deklaration
Private Declare Function mciSendString Lib "winmm.dll" _
  Alias "mciSendStringA" ( _
  ByVal lpszCommand As String, _
  ByVal lpszReturnString As String, _
  ByVal cchReturnLength As Long, _
  ByVal hwndCallback As Long) As Long

Abspielen einer MP3-Datei

' MCI öffnen
If mciSendString("open " & sFile & _
  " type MPEGVideo alias MyMP3", 0, 0, 0) = 0 Then
  ' MP3 abspielen
  mciSendString "play MyMP3 from 0", 0, 0, 0
End If

Wiedergabe beenden und MCI schließen

mciSendString "stop MyMP3", 0, 0, 0
mciSendString "close MyMP3", 0, 0, 0

Das war's. Mehr braucht man nicht!

Hinweis
Beinhaltet der MP3-Dateiname Sonderzeichen, wie Leerzeichen, so muss dieser zunächst in das "alte" DOS-Format (kurzer Dateiname) gebracht werden. Dies erledigt wiederum eine API-Funktion für uns.

Und um das ganze etwas universeller einsetzbar zu machen, coden wir uns einfach zwei Prozeduren, die Sie dann beliebig einsetzen und aufrufen können - am besten Sie verwenden hierfür ein eigenes Modul.

' Modul MP3-Play and Stop via API
Option Explicit
 
' zunächst die benötigte API-Deklaration
Private Declare Function mciSendString Lib "winmm.dll" _
  Alias "mciSendStringA" ( _
  ByVal lpszCommand As String, _
  ByVal lpszReturnString As String, _
  ByVal cchReturnLength 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
' MP3-Datei abspielen
Public Function MP3_Play(ByVal sFile As String, _
  ByVal sAlias As String) As Boolean
 
  Dim bResult As Boolean
 
  ' Dateinamen in DOS 8.3 Format, da z.B. Sonderzeichen
  ' wie Leerzeichen Probleme machen
  Dim sBuffer As String
  Dim lResult As Long
 
  sBuffer = Space$(255)
  lResult = GetShortPathName(sFile, sBuffer, Len(sBuffer))
 
  If lResult <> 0 Then
    sFile = Left$(sBuffer, InStr(sBuffer, vbNullChar) - 1)
 
    ' MCI öffnen
    lResult = mciSendString("open " & sFile & _
      " type MPEGVideo alias " & sAlias, 0, 0, 0)
 
    If lResult = 0 Then
      ' MP3 abspielen
      If mciSendString("play " & sAlias & _
        " from 0", 0, 0, 0) = 0 Then      
        bResult = True
      End If
    End If
  End If
 
  MP3_Play = bResult
End Function
' Wiedergabe stoppen und MCI schließen
Public Sub MP3_Stop(ByVal sAlias As String)
  mciSendString "stop " & sAlias, 0, 0, 0
  mciSendString "close " & sAlias, 0, 0, 0
End Sub

Der Aufruf aus dem Programm heraus sieht dann wie folgt aus:

' MP3 abspielen
MP3_Play "c:\myMP3s\Test.mp3", "MyAlias"
' MP3-Wiedergabe stoppen
MP3_Stop "MyAlias"

Dieser Tipp wurde bereits 78.251 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.

Aktuelle Diskussion anzeigen (5 Beiträge)

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-2021 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