vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevAniGif - als kostenlose Vollversion auf unserer vb@rchiv CD Vol.5  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück
Rubrik: Multimedia & Sound · Video   |   VB-Versionen: VB2005, VB200819.05.09
Größe und Spieldauer eines AVI-Videos ermitteln

Dieses Beispiel zeigt, wie sich die Bildgröße (Höhe x Breite) und die Spielzeit einer AVI-Datei ermitteln lässt.

Autor:   Dieter OtterBewertung:     [ Jetzt bewerten ]Views:  11.635 
www.tools4vb.deSystem:  Win2k, WinXP, Win7, Win8, Win10, Win11 Beispielprojekt auf CD 

Vor kurzem haben wir Ihnen gezeigt, wie sich ein AVI-Video per API abspielen lässt:
 AVI-Video per API in PictureBox abspielen

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 11.635 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-2024 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