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