vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Sch?tzen Sie Ihre Software vor Software-Piraterie - mit sevLock 1.0 DLL!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   RSS-Feeds  | Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2020
 
zurück
Rubrik: Multimedia & Sound · Video   |   VB-Versionen: VB4, VB5, VB621.08.03
Bildgröße einer Video-Datei auslesen

Mit Hilfe der API-Funktion "mciSendString" lässt sich schnell und einfach die Bildgröße einer Video-Datei auslesen.

Autor:   MartoengBewertung:     [ Jetzt bewerten ]Views:  15.322 
www.martoeng.deSystem:  Win9x, WinNT, Win2k, WinXP, Vista, Win7, Win8, Win10 Beispielprojekt auf CD 

Das Windows-API stellt mit dem Multimedia Common Interface die Möglichkeit, Videos abzuspielen. Doch um ein Video abzuspielen, benötigt man erstmal die Bildgröße der Datei. Über die Funktion mciSendString kann man Textbefehle senden, die die Datei öffnen, abspielen und wieder schließen.

Wie man eine Video-Datei abspielt, haben wir Ihnen ja bereits gezeigt:
 AVI-Video per API in PictureBox abspielen

Was uns jetzt interessiert, ist die Bildgröße, so dass das Ausgabe-Control (z.B. eine PictureBox) entsprechend angepasst werden kann.

Wie bereits eingangs erwähnt lässt sich die Bildgröße ebenfalls über mciSendString ermitteln:

Dim sReturn As String
Dim nResult As Long
Dim nWidth As Long
Dim nHeight As Long
 
' Buffer füllen
sReturn = Space(255)
 
' Größe ermitteln
nResult = mciSendString("where MyAVI destination", _
  sReturn, Len(sReturn), 0)
 
If InStr(sReturn, Chr$(0)) > 0 Then
  sReturn = Left$(sReturn, InStr(sReturn, Chr$(0)) - 1)
End If
 
If sReturn <> "" Then
  sReturn = Mid$(sReturn, InStr(1, sReturn, " "))
  sReturn = Mid$(sReturn, InStr(2, sReturn, " ") + 1)
 
  nWidth = CLng(Mid$(sReturn, 1, InStr(1, sReturn, " ") - 1))
  nHeight = CLng(Right$(sReturn, Len(sReturn) - _
    InStrRev(sReturn, " ") + 1))
Else
  nWidth = 0: nHeight = 0
End If

Erläuterung:

nResult = mciSendString("where MyAVI destination", _
  sReturn, Len(sReturn), 0)

Hier ermittelt man die Größe. Zurückgegeben wird diese im String sReturn. Das Format ist "x y Width Height". Diese Angaben sind alle in Pixeln, sodass der Skaliermodus (ScaleMode) des Formulars auf Pixel gestellt werden muss, wenn später das Bildfeldsteuerelement für die Wiedergabe die richtige Größe erhalten soll. Alternativ kann man die Größenangabe auch in Form-Maßeinheit umrechnen:

nWidth = ScaleX(nWidth, vbPixels, Me.ScaleMode)
nHeight = ScaleY(nHeight, vbPixels, Me.ScaleMode)

Hinweis:
Das Ermitteln der Bildgröße sollte natürlich vor dem Abspielen des Videso erfolgen

Sie können den eingangs erwähnten Tipp jetzt wie folgt erweitern:

Private Sub AVI_SetSize()
  Dim sReturn As String
  Dim nResult As Long
  Dim nWidth As Long
  Dim nHeight As Long
 
  ' Buffer füllen
  sReturn = Space(255)
 
  ' Größe ermitteln
  nResult = mciSendString("where MyAVI destination", _
    sReturn, Len(sReturn), 0)
 
  If InStr(sReturn, Chr$(0)) > 0 Then
    sReturn = Left$(sReturn, InStr(sReturn, Chr$(0)) - 1)
  End If
 
  If sReturn <> "" Then
    sReturn = Mid$(sReturn, InStr(1, sReturn, " "))
    sReturn = Mid$(sReturn, InStr(2, sReturn, " ") + 1)
 
    nWidth = CLng(Mid$(sReturn, 1, InStr(1, sReturn, " ") - 1))
    nHeight = CLng(Right$(sReturn, Len(sReturn) - _
      InStrRev(sReturn, " ") + 1))
 
    Picture1.Width = ScaleX(nWidth, vbPixels, Me.ScaleMode)
    Picture1.Height = ScaleX(nHeight, vbPixels, Me.ScaleMode)
  End If
End Sub
' AVI-File öffnen
Private Sub AVI_Open(ByVal sFile As String)
  Dim sBuffer As String * 256
  Dim nResult As Long
 
  ' DOS-Namen ermitteln (8.3-Format)
  nResult = GetShortPathName(sFile, sBuffer, Len(sBuffer))
  sFile = Left$(sBuffer, nResult)
 
  ' AVI öffnen
  ' öffnet ein Gerät und eine Multimedia-Datei
  mciSendString "open " & sFile & " type avivideo" & _
    " alias myAVI", 0, 0, 0
 
  ' Bildgröße setzen
  AVI_SetSize
 
  ' Anzeige in der PictureBox
  mciSendString "window myAVI handle " & _
    CStr(Picture1.hWnd), 0, 0, 0
End Sub

Dieser Tipp wurde bereits 15.322 mal aufgerufen.

Voriger Tipp   |   Zufälliger Tipp   |   Nächster Tipp

Über diesen Tipp im Forum diskutieren
Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

Neue Diskussion eröffnen

nach obenzurück


Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6
(einschl. Beispielprojekt!)

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
   

Druckansicht Druckansicht Copyright ©2000-2020 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel