vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Zippen wie die Profis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   RSS-Feeds  | Newsletter  | Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2015
 
zurück
Rubrik: Multimedia & Sound · Audio   |   VB-Versionen: VB4, VB5, VB620.08.02
MP3 im Loop abspielen

Dieses Beispiel zeigt, wie sich der Abspielvorgang einer MP3-Datei beim Beenden autom. wiederholen lässt.

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

Summer-Special bei Tools & Components!
Gute Laune Sommer bei Tools & Components
Top Summer-Special - Sparen Sie teilweise über 100,- EUR
Alle sev-Entwicklerkomponenten und Komplettpakete jetzt bis zu 25% reduziert!
zum Beispiel:
  • Developer CD nur 455,- EUR statt 569,- EUR
  • sevDTA 2.0 nur 224,30 EUR statt 299,- EUR
  •  
  • vb@rchiv   Vol.6 nur 18,70 EUR statt 24,95 EUR
  • sevCoolbar 3.0 nur 58,70 EUR statt 69,- EUR
  • - Werbung -Und viele weitere Angebote           Aktionspreise nur für kurze Zeit gültig

    Wie man eine MP3-Datei abspielt, haben wir Ihnen bereits in früheren Tipps & Tricks gezeigt, u.a. auch die API-Variante. Und genau auf dieser Variante baut unser heutiger Tipp auf.

    Diesmal zeigen wir Ihnen, wie sich eine MP3-Datei im Loop abpsielen lässt, d.h. sobald der Abspielvorgang beendet ist, beginnt das Szenario wieder von vorne. Alles, was wir hierzu brauchen, ist ein Timer-Control, das uns ständig über die Restdauer informiert, so dass der Abspielvorgang bei einer Restdauer von 0 von vorne beginnen kann.

    Erstellen Sie ein neues Projekt und plazieren auf die Form zwei CommandButtons: cmdPlay und cmdStop. Und natürlich ein Timer-Control - Timer1. Alles andere erledigen wir dann per Code.

    Option Explicit
     
    ' 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
    Private Sub Form_Load()
      ' Timer initialisieren
      Timer1.Enabled = False
      Timer1.Interval = 100
    End Sub
     
    Private Sub Form_Unload(Cancel As Integer)
      ' Abspielvorgang beenden und MP3 schließen
      cmdStop.Value = True
    End Sub
    ' MP3-Datei öffnen
    Private Sub OpenMP3(ByVal sFile As String)
      Dim sBuffer As String
      Dim lResult 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.
      sBuffer = Space$(255)
      lResult = GetShortPathName(sFile, sBuffer, _
        Len(sBuffer))
     
      If lResult <> 0 Then
        sFile = Left$(sBuffer, InStr(sBuffer, vbNullChar) - 1)
      End If
     
      ' MP3-Datei öffnen
      mciSendString "open " & sFile & _
        " type MPEGVideo alias myMP3", 0, 0, 0
    End Sub
     
    ' MP3-Datei schließen
    Private Sub CloseMP3()
      mciSendString "close myMP3", 0, 0, 0
    End Sub
     
    ' Kommando senden und "Ergebnis" zurückgeben
    Private Function SendCommand(ByVal sCmd As String) As Long
      Dim lResult As Long
      Dim sReturn As String
     
      sReturn = Space$(256)
      lResult = mciSendString(sCmd, sReturn, Len(sReturn), 0&)
     
      SendCommand = Val(sReturn)
    End Function
    Private Sub cmdPlay_Click()
      Dim sFile As String
     
      ' MP3-Datei, die abgespielt werden soll
      sFile = "c:\temp\IrgendEine.mp3"
     
      ' MP3 öffnen
      OpenMP3 sFile
     
      ' Abpsielvorgang starten
      SendCommand "play myMP3 from 0"
     
      ' Timer aktivieren
      Timer1.Enabled = True
    End Sub
    Private Sub cmdStop_Click()
      ' Stoppen und schließen
      Timer1.Enabled = False
      CloseMP3
    End Sub
    Private Sub Timer1_Timer()
      ' Status abfragen und ggf. Abspielvorgang von
      ' vorne beginnen
      Dim lCurPos As Long
      Dim lLength As Long
     
      ' aktuelle Position
      lCurPos = SendCommand("status myMP3 position")
     
      ' Gesamtspielzeit
      lLength = SendCommand("status myMP3 length")
     
      ' Prüfen, ob am Ende angelangt und ggf.
      ' Abspielvorgang von vorne beginnen
      If lCurPos >= lLength Then
        SendCommand ("play myMP3 from 0")
      End If
    End Sub

    Dieser Tipp wurde bereits 18.365 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-2015 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