![]() |
Tipp 0102
|
AVI- & MPEG-Dateien ohne Control abspielen
|
 |
|
Autor/Einsender: Datum: |
|
Alexander Csadek 22.07.2001 |
|
Entwicklungsumgebung: |
|
VB 6 |
|
|
Über die ActiveMovie control type library können AVI's und MPEG's
mit dem
FilgraphManager-Objekt abgespielt werden, ohne dass ein Steuerelement in der Form sichtbar ist.
Der Film wird in einer eigenen Form
abgespielt, die entweder normal oder als Vollbild angezeigt werden
kann, wobei sich Vollbild natürlich sehr für Intros von Spielen eignet.
|
Mit der Methode RenderFile wird der Film geladen, mit Run das Abspielen gestartet,
mit Stop angehalten, und über das Objekt IMediaEvent kann festgestellt werden, ob der Film abgespielt wurde.
|
Mit dem Objekt IMediaPosition können div. Informationen des Films 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 pMC As FilgraphManager
Public bPlay As Boolean
Public bPause As Boolean
|
|
|
Code im Codebereich der Form
Form1 |
|
|
Option Explicit
Private Sub cmd_Load_Click()
bPause = False
cmd_Play.Enabled = False
cmd_Pause.Enabled = False
cmd_Stop.Enabled = False
lbl_CurrentPos.Caption = "aktuelle Position: "
lbl_StopTime.Caption = "Film-Länge: "
lbl_Rate.Caption = "Rate (1=normal,.5=halftime,-1=rückwärts): "
With CDiag
.Filter = ".AVI File|*.avi|.MPG File|*.mpg|.MPEG File|*.mpeg"
.FileName = "*.avi"
.ShowOpen
If Trim$(.FileName <> vbNullString) Then
If Trim$(.FileName) = "*.avi" Then Exit Sub
cmd_Play.Enabled = True
Else
Exit Sub
End If
End With
End Sub
Private Sub cmd_Pause_Click()
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
Private Sub cmd_Play_Click()
cmd_Play.Enabled = False
cmd_Pause.Enabled = True
cmd_Stop.Enabled = True
If chk_Vollbild.Value = 1 Then
frmAVI.WindowState = 2
frmAVI.Left = 0
frmAVI.Top = 0
Else
frmAVI.WindowState = 0
frmAVI.Left = 3000
frmAVI.Top = 3000
End If
frmAVI.Show
Form1.SetFocus
End Sub
Private Sub cmd_Stop_Click()
cmd_Play.Enabled = True
cmd_Pause.Enabled = False
cmd_Stop.Enabled = False
pMC.Stop
Set pMC = Nothing
bPlay = False
Unload frmAVI
End Sub
Private Sub Form_QueryUnload(Cancel As Integer, _
UnloadMode As Integer)
End
End Sub
Private Sub Timer1_Timer()
If Not bPlay Then Exit Sub
Dim pME As IMediaEvent
Dim EventCode As Long
Dim pPOS As IMediaPosition
Set pME = pMC
On Error Resume Next
pME.WaitForCompletion 0, EventCode
Set pME = Nothing
Set pPOS = pMC
lbl_CurrentPos.Caption = "aktuelle Position: " & _
pPOS.CurrentPosition
lbl_StopTime.Caption = "Film-Länge: " & pPOS.Duration
lbl_Rate.Caption = "Rate (1=normal,.5=halftime,-1=rückwärts): " _
& pPOS.Rate
If EventCode = 0 Then Exit Sub
If Form1.chk_Loop.Value = 1 Then
pPOS.CurrentPosition = 0
pMC.Run
Else
pMC.Stop
Set pMC = Nothing
bPlay = False
cmd_Play.Enabled = True
cmd_Pause.Enabled = False
cmd_Stop.Enabled = False
Unload frmAVI
End If
Set pPOS = Nothing
End Sub
|
|
|
Code im Codebereich der Form
frmAVI |
|
|
Option Explicit
Private Sub Form_Load()
Dim pVW As IVideoWindow
Set pMC = New FilgraphManager
pMC.RenderFile Form1.CDiag.FileName
Set pVW = pMC
pVW.Visible = True
pVW.WindowStyle = CLng(&H6000000)
If Form1.chk_Vollbild.Value = 1 Then
pVW.Left = CLng(0)
pVW.Width = frmAVI.Width
pVW.Top = CLng(0)
pVW.Height = frmAVI.Height
Else
pVW.Left = CLng(0)
pVW.Top = CLng(0)
End If
pVW.Owner = frmAVI.hWnd
Set pVW = Nothing
pMC.Run
bPlay = True
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,8
kB)
|
Downloads bisher: [ 4523 ]
|
|
|