vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
TOP-Angebot: 17 bzw. 24 Entwickler-Vollversionen zum unschlagbaren Preis!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Bild aus Video mit directx auslesen 
Autor: bierhurra
Datum: 30.08.12 20:29

Ich habe an meinem Mediacenter das Problem, dass ab und an meine Sendungen nicht richtig aufgenommen werden.
Die Videodatei ist dann einfach schwarz.
Ich habe ein Programm geschrieben, welches den Ordner überwacht wo die Datein gespeichert werden.
Während das Mediacenter aufzeichnet, kann man sich die Videos bereits anschauen.
Jetzt möchte ich feststellen, ob es sich um eine vernünftige Aufzeichnung handelt oder nur um ein scharzen Bild.
Wenn die Aufzeichnung beendet ist, ist es kein Prolblem. Die fehlerhaft Datei ist erheblich kleiner. Während der Aufzeichnung ist dies aber nicht so (muss mit der Art und Weise des Streaming in die *.wtv Datei zusammen hängen).

Jetzt habe ich mich mit directx probiert. Die verschiedensten Informationen konnte ich bereits auslsen. z.B. Auflösung, Datenrate. Leider ist die bei alles Datein gleich. Irgendwie komisch.
Jetzt dachte ich daran ein einzelnes Bild aus der Datei zu extrahieren. Ein komplett schwarzen sollte sich erkennen lassen. Leider bekomme ich einfach nicht hin.
Imports DirectShowLib
Imports System.Runtime.InteropServices
Imports System.Drawing.Imaging
Imports System.Drawing
 
Module Module1
    Sub main()
        Dim FileName As String
 
        Dim FGM As IGraphBuilder
 
        Dim MC As IMediaControl
 
        Dim MP As IMediaPosition
 
        Dim WC As IVMRWindowlessControl9
 
        Dim Bmp As Bitmap
 
 
        FileName = "c:\videos\abc.wtv"
 
        FGM = New FilterGraph
 
        Dim VMR9 As IBaseFilter = New VideoMixingRenderer9
 
 
        Dim FC As IVMRFilterConfig9 = VMR9
 
        FC.SetRenderingMode(VMR9Mode.Windowless)
 
        FGM.AddFilter(VMR9, "Video Mixing Renderer 9")
 
        WC = VMR9
 
        'WC.SetVideoClippingWindow(Me.Handle)
 
        FGM.RenderFile(FileName, 0)
 
        MP = FGM
 
        MC = FGM
 
        MC.Run()
 
 
        Pause(5)
 
        MC.Pause()
 
        Dim iDIB As IntPtr = IntPtr.Zero
 
        WC.GetCurrentImage(iDIB)
 End Sub
 
    Function Pause(Zeit As Double)
        Dim Start As Double
        Dim Ende As Double
 
        Start = DateAndTime.Timer
        Ende = Start + Zeit
        If Ende > 60 * 60 * 24 Then Pause(Zeit) 'Timer leifert ms ab 
        ' mitternacht. Genau um Mitternavcht kann ende sonst zu einer 
        ' dauerschleife werden
        Do While DateAndTime.Timer < Ende
            Application.DoEvents()
        Loop
    End Function
End Module
Ich habe es mit
basicVideo.GetCurrentImage(ImageBuffer, Bild)
und
WC.GetCurrentImage(iDIB)
probiert.
Beides funktierte nicht.

Bei basicVideo.GetCurrentImage(ImageBuffer, Bild) war das Bild immer 0.
Bei WC.GetCurrentImage(iDIB) kommt immer die Fehlermeldung HRESULT E_FAIL.
Was wohl bedeuten könnte das kein Bild vorhanden ist.
Ich durchforste das Internet und die MSDN Seiten, leider ohne Erfolg.

Vielleicht hat ja jemand eine Idee. Ich bin auch für komplett andere Vorschläge offen.
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Bild aus Video mit directx auslesen1.327bierhurra30.08.12 20:29

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

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