Codec einer Avi-file herausfinden

Peter Marlton

Grünschnabel
Hallo,

ich suche Vb-Code mit dem ich den Video und Audio Codec einer *.avi - file auslesen kann.

Bis jetzt habe ich herausgefunden, dass im StreamHeader der avi-file sehr viele Informatioenen über die Datei stehen. Der Video-codec wird zum Beispiel mit einem Four Character Code (FourCC) bezeichnet und legt ganz genau einen bestimmtem Codec fest. Dieser Codec wird im Header durch das schluesselwort 'vids' eingeleitet. Ein Video das mit divx codiert wurde hat dann somit im Header 'vidsdivx' stehen. Diese FourCC sind auf der Seite www.fourcc.org ziemlich ausführlich aufgelistet. Nun suche ich eine Lösung wie ich den Video Codec auslesen kann, sowie auch den Audio Codec.
Mit der Api AviFileInfo kann man schon einige Informationen aus der avi-file herausholen. Ich glaube das mit dem Codec muss man mit der Api AVIStreamInfo machen. Nur weiss ich nicht wie ich das machen soll.

Kann mir da jemand weiterhelfen? Ich suche einen vollständigen SourceCode mit dem ich das machen kann.

MFG Peter
 
Hallo,
mit diesem Code kann man den Codec herausfinden. Leider ist das keine besonders ausgefeilte Methode:
Code:
'verwendete Objekte:
'Drivelistbox(drive1), DirListBox (Dir1), FileListBox (File1), Textbox (Text1), Label (Label1), Commandbutton (Command1)

Private Const BIN_GETBINSTRING = 109
Private Const BIN_LENBINSTRING = 8

Private Sub Command1_Click()
    Dim sPath   As String
    Dim sRes    As String
    
    sPath = Text1
    If sPath = vbNullString Then Label1 = vbNullString: Exit Sub
    sRes = fGetAviCodec(sPath)
    If Mid$(sRes, 5, 1) = Chr(0) Then
        Label1 = "Kein CODEC vorhanden"
    Else
        Label1 = "Verwendeter Codec : " & UCase(Right$(sRes, 4))
    End If
    sPath = Empty: Text1 = vbNullString
End Sub



Private Function fGetAviCodec(ByVal sPath As String) As String
    Dim ifno            As Integer
    Dim sAviCodec       As String
    
    If sPath = vbNullString Then Exit Function
    
    ifno = FreeFile
    Open sPath For Binary As ifno
        sAviCodec = String(BIN_LENBINSTRING, " ")
        Get #ifno, BIN_GETBINSTRING, sAviCodec
        fGetAviCodec = sAviCodec
    Close ifno
End Function

Private Sub Dir1_Change()
    File1.Path = Dir1.Path
End Sub

Private Sub Drive1_Change()
    On Error Resume Next
    Dir1.Path = Drive1.Drive
    If Err = 0 Then
        Drive1.Drive = Dir1.Path
    End If
End Sub

Private Sub File1_Click()
    Dim sPath           As String
    Dim sComplettePath  As String
    
    On Error Resume Next
    sPath = Dir1.Path
    If Right$(sPath, 1) <> "\" Then
        sPath = sPath + "\"
    End If
    
    sComplettePath = (sPath + File1.FileName)
    Text1 = sComplettePath
End Sub

Private Sub Form_Load()
    File1.Pattern = "*.avi"
    ChDir App.Path
    Drive1_Change
End Sub

MFG Peter
 

Neue Beiträge

Zurück