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
 
Weitere Links zum Thema
MP3-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,8 kB) Downloads bisher: [ 4524 ]

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