PDA

Vollständige Version anzeigen : AVI


schlarb
27.04.2001, 23:45
Hallo zusammen,
Gibt es eine Möglichkeit Avi,s mit Ton abzuspielen, ohne Ton keine Probleme.
Gruß Michael

Stefan Kulpa
28.04.2001, 05:03
Hallo Michael,

wie spielst Du das AVI denn ab?
Mit dem MMControl (MCI32.OCX) geht's auch mit Ton (sofern die Datei Sound beinhaltet).

z.B.:
MMControl1.Notify = False
MMControl1.Wait = True
MMControl1.Shareable = False
MMControl1.DeviceType = "AVIVideo"
MMControl1.FileName = "I:\Programme\Intro.avi"
MMControl1.Command = "Open"

Es müßte auch mit dem relativ neuen ActiveMovie-Control von Microsoft funktionieren, dass habe ich aber noch nicht probiert.

HTH,

schlarb
28.04.2001, 10:16
Tip ist prima,
aber kleine Lücke, wie bekomme ich das AVI in einem Formular abgespielt. Jetzt wird ja das AVI in einem separatem Control abgespielt.
Gruß Michael.

Stefan Kulpa
28.04.2001, 12:02
Hallo Michael,

das ist leider etwas aufwendiger. Allerdings kan man so ganz auf das Control verzichten und das API benutzen.
Als VB'ler habe ich zwar so meine Probleme mit Access und API, aber in diesem Fall funktioniert's.

Nachfolgend die Sourcen aus dem Modulteil einer Form.

Im Form_Activate()-Ereignis merke ich mir das Windows-Handle der Form in der formglobalen Variablen m_hWnd.
Der Aufruf der AVI-Datei erfolgt in diesem Beispiel über eine Schaltfläche; das läßt sich natürlich auch ändern.
Aufgerufen wird dabei die Methode PlayAVIFile(), die einige (optionale) Parameter erwartet.
Hier habe ich lediglich den Pfad zur Datei (s. Konstante) und - ganz wichtig - das betroffene Windows-Handle übergeben.
Über die Parameter lLeft, lTop, lHeight und lWidth läßt sich die Darstellung des AVI auf dem Formular beeinflussen.
Das ganze erfolgt in Pixel! Damit kannst Du das AVI an jede beliebige Stelle im Formular positionieren.

Viel Spaß damit ...

Gruß,

<FONT SIZE=1 FACE=Courier New><FONT COLOR=#000080>Option</FONT> Compare Database

<FONT COLOR=#000080>Const</FONT> csMYAVIFILE <FONT COLOR=#000080>As</FONT> <FONT COLOR=#000080>String</FONT> = "I:\WINNT\Temp\Intro.avi"

<FONT COLOR=#000080>Private</FONT> <FONT COLOR=#000080>Declare</FONT> <FONT COLOR=#000080>Function</FONT> GetActiveWindow <FONT COLOR=#000080>Lib</FONT> "user32" () <FONT COLOR=#000080>As</FONT> <FONT COLOR=#000080>Long</FONT>
<FONT COLOR=#000080>Private</FONT> <FONT COLOR=#000080>Declare</FONT> <FONT COLOR=#000080>Function</FONT> mciSendString <FONT COLOR=#000080>Lib</FONT> "WINMM.DLL" <FONT COLOR=#000080>Alias</FONT> _
"mciSendStringA" (<FONT COLOR=#000080>ByVal</FONT> lpstrCommand <FONT COLOR=#000080>As</FONT> <FONT COLOR=#000080>String</FONT>, _
<FONT COLOR=#000080>ByVal</FONT> lpstrReturnString <FONT COLOR=#000080>As</FONT> <FONT COLOR=#000080>String</FONT>, _
<FONT COLOR=#000080>ByVal</FONT> uReturnLength <FONT COLOR=#000080>As</FONT> <FONT COLOR=#000080>Long</FONT>, _
<FONT COLOR=#000080>ByVal</FONT> hwndCallback <FONT COLOR=#000080>As</FONT> <FONT COLOR=#000080>Long</FONT>) <FONT COLOR=#000080>As</FONT> <FONT COLOR=#000080>Long</FONT>

<FONT COLOR=#000080>Dim</FONT> m_hWnd <FONT COLOR=#000080>As</FONT> <FONT COLOR=#000080>Long</FONT>
<FONT COLOR=#808080><HR></FONT>

<FONT COLOR=#000080>Private</FONT> <FONT COLOR=#000080>Sub</FONT> Form_Activate()

m_hWnd = Me.hwnd

<FONT COLOR=#000080>End</FONT> <FONT COLOR=#000080>Sub</FONT>
<FONT COLOR=#808080><HR></FONT>

<FONT COLOR=#000080>Private</FONT> <FONT COLOR=#000080>Sub</FONT> cmdGo_Click()

PlayAVIFile sAVIFilepath:=csMYAVIFILE, hwnd:=m_hWnd

<FONT COLOR=#000080>End</FONT> <FONT COLOR=#000080>Sub</FONT>
<FONT COLOR=#808080><HR></FONT>

<FONT COLOR=#000080>Public</FONT> <FONT COLOR=#000080>Function</FONT> PlayAVIFile(sAVIFilepath <FONT COLOR=#000080>As</FONT> <FONT COLOR=#000080>String</FONT>, Optional lLeft <FONT COLOR=#000080>As</FONT> <FONT COLOR=#000080>Long</FONT> = 25, _
Optional lTop <FONT COLOR=#000080>As</FONT> <FONT COLOR=#000080>Long</FONT> = 120, Optional lHeight <FONT COLOR=#000080>As</FONT> <FONT COLOR=#000080>Long</FONT> = 160, _
Optional lWidth <FONT COLOR=#000080>As</FONT> <FONT COLOR=#000080>Long</FONT> = 160, Optional hwnd <FONT COLOR=#000080>As</FONT> <FONT COLOR=#000080>Long</FONT> = 0) <FONT COLOR=#000080>As</FONT> <FONT COLOR=#000080>Boolean</FONT>

<FONT COLOR=#008000>'// Übergabe der Werte in Pixel</FONT>
<FONT COLOR=#000080>Const</FONT> csSPACE <FONT COLOR=#000080>As</FONT> <FONT COLOR=#000080>String</FONT> = " "
<FONT COLOR=#000080>Dim</FONT> sMCICmd <FONT COLOR=#000080>As</FONT> <FONT COLOR=#000080>String</FONT>
<FONT COLOR=#000080>Dim</FONT> lRes <FONT COLOR=#000080>As</FONT> <FONT COLOR=#000080>Long</FONT>

PlayAVIFile = <FONT COLOR=#000080>False</FONT>

<FONT COLOR=#000080>On</FONT> <FONT COLOR=#000080>Error</FONT> GoTo Err_PlayAVIFile
<FONT COLOR=#000080>If</FONT> hwnd = 0 <FONT COLOR=#000080>Then</FONT> hwnd = GetActiveWindow()

sMCICmd = ("open " & sAVIFilepath & " type AVIVideo alias animation parent " & _
LTrim$(Str$(hwnd)) & " style " & LTrim$(Str$(&H40000000)))
lRes = mciSendString(sMCICmd, 0&, 0, 0)
sMCICmd = "put animation window at " & lLeft & _
csSPACE & lTop & csSPACE & lWidth & csSPACE & lHeight
lRes = mciSendString(sMCICmd, 0&, 0, 0)
lRes = mciSendString("play animation wait", 0&, 0, 0)
lRes = mciSendString("close animation", 0&, 0, 0)
PlayAVIFile = <FONT COLOR=#000080>True</FONT>

<FONT COLOR=#000080>Exit</FONT>_PlayAVIFile:
<FONT COLOR=#000080>Exit</FONT> <FONT COLOR=#000080>Function</FONT>

Err_PlayAVIFile:
PlayAVIFile = <FONT COLOR=#000080>False</FONT>
Resume <FONT COLOR=#000080>Exit</FONT>_PlayAVIFile

<FONT COLOR=#000080>End</FONT> <FONT COLOR=#000080>Function</FONT></FONT>