Vor kurzem haben wir Ihnen gezeigt, wie sich ein AVI-Video per API abspielen lässt: Heute möchten wir Ihnen zeigen, wie sich die Größe des Videos ermitteln lässt, so dass Sie die PictureBox zum Abspielen des Videos auch entsprechend groß anzeigen können. Außerdem zeigt unser Tipp noch, wie sich die Gesamt-Spielzeit des Files auslesen lässt. Erstellen Sie ein neues Klassenmodul namens AVI und fügen nachfolgenden Code ein: Imports System.Runtime Imports System.Runtime.InteropServices Public Class AVI ' benötigte API-Deklarationen Private Declare Auto Function AVIFileOpen Lib "avifil32" ( _ ByRef ppfile As Integer, _ ByVal szFile As String, _ ByVal mode As Integer, _ ByVal pclsidHandler As Integer) As Integer Private Declare Auto Function AVIFileRelease Lib "avifil32" ( _ ByVal pfile As Integer) As Integer Private Declare Auto Function AVIFileInfo Lib "avifil32" ( _ ByVal pfile As Integer, _ ByRef pfi As AVIInfo, _ ByVal lSize As Integer) As Integer Private Declare Auto Sub AVIFileInit Lib "avifil32" () Private Declare Auto Sub AVIFileExit Lib "avifil32" () ' AVI Info-Struktur <StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Auto)> _ Private Structure AVIInfo Public dwMaxBytesPerSec As Integer Public dwFlags As Integer Public dwCaps As Integer Public dwStreams As Integer Public dwSuggestedBufferSize As Integer Public dwWidth As Integer Public dwHeight As Integer Public dwScale As Integer Public dwRate As Integer Public dwLength As Integer Public dwEditCount As Integer <MarshalAs(UnmanagedType.ByValTStr, SizeConst:=64)> _ Public szFileType As String End Structure ' Eigenschaften Private _Length As Integer Private _Width As Integer Private _Height As Integer ''' <summary> ''' Erstellt eine neue Instanz der Klasse und liest die AVI-Informationen ''' der übergebenenen AVI-Datei aus. ''' </summary> ''' <param name="Filename">Dateiname des AVI-Files</param> Public Sub New(ByVal Filename As String) Dim hFile As Integer Dim AviInfo As New AVIInfo ' Fehlerbehandlung aktivieren Try ' Initialisieren AVIFileInit() ' AVI öffnen (Handle erstellen) If AVIFileOpen(hFile, Filename, &H20, 0&) = 0 Then ' Infos lesen If AVIFileInfo(hFile, AviInfo, Marshal.SizeOf(AviInfo)) = 0 Then With AviInfo _Width = .dwWidth _Height = .dwHeight _Length = .dwLength / .dwRate * .dwScale End With End If End If Catch ex As Exception Finally ' Beenden AVIFileExit() If hFile <> 0 Then AVIFileRelease(hFile) End Try End Sub ''' <summary> ''' Gibt die Breite der animierten Bildsequenz zurück. ''' </summary> Public ReadOnly Property Width() As Integer Get Return _Width End Get End Property ''' <summary> ''' Gibt die Höhe der animierten Bildsequenz zurück. ''' </summary> Public ReadOnly Property Height() As Integer Get Return _Height End Get End Property ''' <summary> ''' Gibt die Spieldauer der animierten Bildsequenz in Sekunden zurück. ''' </summary> Public ReadOnly Property Length() As Integer Get Return _Length End Get End Property ''' <summary> ''' Gibt die Spieldauer im Format mm:ss zurück. ''' </summary> Public ReadOnly Property FormatLength() As String Get Return CDate("00:00:00").AddSeconds(_Length).ToString("mm:ss") End Get End Property ''' <summary> ''' Gibt die Spieldauer im angegebenen Format zurück. ''' </summary> ''' <param name="Format">Formatierungsstring, z.B. HH:mm:ss</param> Public ReadOnly Property FormatLength(ByVal Format As String) As String Get Return CDate("00:00:00").AddSeconds(_Length).ToString(Format) End Get End Property End Class Aufrufbeispiel: Dim filename As String = "d:\clock.avi" Dim AVIInfo As New AVI(filename) With AVIInfo MsgBox("Höhe x Breite: " & CStr(.Height) & " x " & CStr(.Width) & vbCrLf & _ "Spieldauer: " & CStr(.Length) & " Sekunden" & vbCrLf & _ "mm:ss: " & .FormatLength() & vbCrLf & _ "hh:mm:ss: " & .FormatLength("HH:mm:ss")) End With Dieser Tipp wurde bereits 12.004 mal aufgerufen. Voriger Tipp | Zufälliger Tipp | Nächster Tipp
Anzeige
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. |
vb@rchiv CD Vol.6 Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! Online-Update-Funktion Entwickler-Vollversionen u.v.m. Tipp des Monats Januar 2025 Dieter Otter Zeilen einer MultiLine-TextBox ermitteln (VB.NET) Dieser Zipp zeigt, wie man die Zeilen einer MultiLine-TextBox exakt so ermitteln kann, wie diese auch in der TextBox dargestellt werden. Neu! sevCoolbar 3.0 Professionelle Toolbars im modernen Design! Mit sevCoolbar erstellen Sie in wenigen Minuten ansprechende und moderne Toolbars und passen diese optimal an das Layout Ihrer Anwendung an (inkl. große Symbolbibliothek) - für VB und MS-Access |
||||||||||||||||
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. |