Hallo!
Ich habs nach langem tüfteln doch endlich geschafft Bilder aus einer Webcam mit DirectX (DirectShow) zu lesen. Das Problem war, dass man nach dem Starten der Kamera nicht gleich beginnen kann den Stream einzulesen, da DirectX anscheinend noch etwas initialisieren muss (keine Ahnung). Auf jeden Fall hab ich gesehen, dass andere Programme nach dem Starten der Kamera ein Sleep(500) einbauen bevor sie das erste Frame einlesen. Nachdems bei mir bei Sleep(500) ab und zu noch immer nicht geht, hab ichs auf Sleep(1000) gesetzt und es funktioniert prima. Irgendwie sehr schlimm Sleep zu verwenden, aber wenns nicht anders geht..
Jetzt aber zu meinem Problem: Ich möchte nun in meinem Programm Videos auch laden und es funktioniert auch alles prima, nur gibts es eine Stelle, an der es ein großes Problem gibt. Nachdem ich nämlich die Kamera gestartet habe und später wieder gestoppt habe, kann ich keine Videos mehr öffnen. Auch Sleep hilft hier nichts mehr :distur:.
Ich öffne die AVI-Files mit AVIFileOpen und dort passiert auch schon der Fehler. Ich weiß leider nicht welcher Fehler genau passiert, weil ich die Funktion aus einer Library verwende und diese den Rückgabewert nicht weitergibt. Folgende Werte können auftreten:
AVIERR_BADFORMAT
The file couldn't be read, indicating a corrupt file or an unrecognized format.
AVIERR_MEMORY
The file could not be opened because of insufficient memory.
AVIERR_FILEREAD
A disk error occurred while reading the file.
AVIERR_FILEOPENA disk error occurred while opening the file.
Das erste und das dritte würde ich ausschließen, aber ich könnte auch nichts damit anfangen, wenn ich wüsste welcher Wert zurückgeliefert wird, weil ich mir nicht erklären kann, warum das nur passiert, nachdem ich die Kamera an hatte (und anschließend sauber geschlossen).
Hat jemand einen Rat?
mfg