Tipp 0100 MP3-Dateien ohne Control abspielen
Autor/Einsender:
Datum:
  Alexander Csadek
14.07.2001
Entwicklungsumgebung:   VB 6
Über die ActiveMovie control type library können MP3-Dateien mit dem FilgraphManager-Objekt abgespielt werden, ohne dass ein Steuerelement in der Form sichtbar ist. Mit der Methode RenderFile wird die MP3-Datei geladen, mit Run das Abspielen gestartet, mit Stop angehalten, und über das Objekt IMediaEvent kann festgestellt werden, ob die MP3-Datei abgespielt wurde.
Mit dem Objekt IMediaPosition können div. Informationen der MP3-Datei (keine MP3-Tags!) ermittelt werden, wie z.B. die aktuelle Abspiel-Position sowie die Gesamtlänge, und auch die CurrentPosition kann gesetzt werden.
Code im Codebereich des Moduls
 
Option Explicit

Public bMusicPlay As Boolean
Public pMC As FilgraphManager
Public bPause As Boolean

Public Sub PlayMusic()
  Set pMC = New FilgraphManager
  pMC.RenderFile Form1.CDiag.FileName

  Form1.MusicTimer.Enabled = True

  pMC.Run
  bMusicPlay = True
  bPause = False
End Sub

Public Sub PauseMusic()
  If bPause Then
    pMC.Run
    Form1.cmd_Pause.Caption = "P&ause"
    bPause = False
  Else
    pMC.Pause
    Form1.cmd_Pause.Caption = "Pl&ay"
    bPause = True
  End If
End Sub

Public Sub StopMusic()
  bMusicPlay = False
  bPause = False
  Form1.MusicTimer.Enabled = False
  pMC.Stop
  Set pMC = Nothing
End Sub
 
Code im Codebereich der Form
 
Option Explicit

Private Sub cmd_Load_Click()
  cmd_Play.Enabled = False
  cmd_Stop.Enabled = False
  cmd_Pause.Enabled = False
  lbl_CurrentPos.Caption = "aktuelle Position: "
  lbl_StopTime.Caption = "MP3-Länge: "
  lbl_Rate.Caption = "Rate (1=normal,.5=halftime,-1=rückwärts): "
  With CDiag
    .Filter = ".MP3 File|*.mp3"
    .FileName = "*.mp3"
    .ShowOpen
    If Trim$(.FileName <> vbNullString) Then
      If Trim$(.FileName) = "*.mp3" Then Exit Sub
      cmd_Play.Enabled = True
    Else
      Exit Sub
    End If
  End With
End Sub

Private Sub cmd_Play_Click()
  PlayMusic
  cmd_Stop.Enabled = True
  cmd_Play.Enabled = False
  cmd_Pause.Enabled = True
End Sub

Private Sub cmd_Stop_Click()
  StopMusic
  cmd_Stop.Enabled = False
  cmd_Play.Enabled = True
  cmd_Pause.Enabled = False
End Sub

Private Sub cmd_Pause_Click()
  PauseMusic
End Sub

Private Sub cmd_Beenden_Click()
  Unload Me
  End
End Sub

Private Sub MusicTimer_Timer()
  If Not bMusicPlay Then Exit Sub

  Dim pME As IMediaEvent
  Dim pMEPos As IMediaPosition
  Dim EventCode As Long

  Set pME = pMC

  On Error Resume Next
  pME.WaitForCompletion 0, EventCode
  Set pMEPos = pMC

  lbl_CurrentPos.Caption = _
        "aktuelle Position: " & pMEPos.CurrentPosition
  lbl_StopTime.Caption = "MP3-Länge: " & pMEPos.Duration
  lbl_Rate.Caption = _
        "Rate (1=normal,.5=halftime,-1=rückwärts): " & pMEPos.Rate

  Set pMEPos = Nothing
  Set pME = Nothing

  If EventCode = 0 Then Exit Sub

  MusicTimer.Enabled = False
  pMC.Stop
  Set pMC = Nothing
  bMusicPlay = False
  bPause = False
  PlayMusic
End Sub
 
Weitere Links zum Thema
AVI- & MPEG-Dateien ohne Control abspielen
Hinweis
Um diesen Tipp ausführen zu können, muss die ActiveMovie control type library (QUARTZ.DLL) als Verweis in das Projekt eingebunden werden 
Bei Verteilung der Anwendung ist darauf zu achten, dass die Datei QUARTZ.DLL auf dem Client vorhanden ist.

Windows-Version
95
98/SE
ME
NT
2000
XP
Vista
Win 7
VB-Version
VBA 5
VBA 6
VB 4/16
VB 4/32
VB 5
VB 6


Download  (4,5 kB) Downloads bisher: [ 5836 ]

Vorheriger Tipp Zum Seitenanfang Nächster Tipp

Startseite | Projekte | Tutorials | API-Referenz | VB-/VBA-Tipps | Komponenten | Bücherecke | VB/VBA-Forum | VB.Net-Forum | DirectX-Forum | Foren-Archiv | DirectX | VB.Net-Tipps | Chat | Spielplatz | Links | Suchen | Stichwortverzeichnis | Feedback | Impressum

Seite empfehlen Bug-Report
Letzte Aktualisierung: Donnerstag, 11. August 2011