Seite 1 von 1

Frage: Webcam zu AVI (DivX)?

Verfasst: 21.02.2005 17:00
von Kukulkan
Hallo,

Hab inzwischen ein Programm geschafft, welches Bilder meiner Webcam ausliest, verarbeitet (Pixelweise per PeekB() und PokeB()) und wieder ausgiebt (DrawImage()).

Jetzt lese ich die Bilder aktuell mit

Code: Alles auswählen

SendMessage_(hWndC, #WM_CAP_EDIT_COPY, 0, 0) 
über das Clipboard aus.

Ich möchte jetzt statt einer Einzelbildverwaltung eine Aufnahme als AVI starten und später wieder Stoppen (zB als DivX-Video).
Hat jemand einen Codeschnipsel der das in der Art schon macht? Ich möchte NICHT jedes Bild vom Clipboard holen und dann ein AVI zusammenbasteln. Ich hab was in VB im Internet gefunden mit

Code: Alles auswählen

SendMessageAsAny(hCapWnd, WM_CAP_SET_SEQUENCE_SETUP, Len(capParms), capParms)
Leider steige ich da aber nicht wirklich durch :-(

Hat jemand was Informatives? Was gehört in WM_CAP_SET_SEQUENCE_SETUP und capParms rein?

Volker

Verfasst: 21.02.2005 17:14
von bobobo
Hmm ..was spricht eigentich gegen die AviCap ..die sollte eigentlich noch laufen (hoffentlich) (kann das leider nicht ausprobieren)

http://www.purearea.net/pb/download/userlibs/Avicap.zip

dann ersparst Du Dir den ganzen Zinnober mit PeekB und PokeB

außerdem speichtert das Teil schon in AVI-Files

Verfasst: 21.02.2005 17:22
von Kukulkan
Hallo bobobo,
Hmm ..was spricht eigentich gegen die AviCap
Dass ich dann eine zusätzliche DLL benötige. Es sollte ein Programm ohne Setup werden (meine Vorgabe).
Das PeekB() und PokeB() ist nur für meine Effekte. Um diese geht es mir aber garnicht sondern jetzt möchte ich das Bild einfach als AVI auf die Platte setzen. Ohne DLL's oder sowas.

Grüsse,

Volker

Verfasst: 21.02.2005 17:41
von Kukulkan
Hallo,

Hab jetzt einen Durchbruch gehabt! Allerdings immer noch ein Problem:

Ich mache das jetzt so (Ausschnitt):

Code: Alles auswählen

#WM_CAP_START = #WM_USER 
#WM_CAP_FILE_GET_CAPTURE_FILEA = #WM_CAP_START + 21
#WM_CAP_DLG_VIDEOCOMPRESSION = #WM_CAP_START + 46 
#WM_CAP_STOP = #WM_CAP_START + 68 
#WM_CAP_SEQUENCE = #WM_CAP_START + 62

; Aufnahme starten
FileName.s = "c:\MyCapture.avi"
SendMessage_(hWndC, #WM_CAP_DLG_VIDEOCOMPRESSION , 1, 0)     ; Dateiformat wählen lassen
SendMessage_(hWndC, #WM_CAP_FILE_GET_CAPTURE_FILEA, FileName.s, 0)
SendMessage_(hWndC, #WM_CAP_SEQUENCE, 0, 0)

; Aufnahme stoppen
SendMessage_(hWndC, #WM_CAP_STOP, 0, 0)
Leider bekommt die Datei aber immer den Namen AVICAP.AVI. Das ist der letzte Name einer anderen AVI-Capture-Software. Klappt meine Übergabe nicht? Eine Idee?

Volker

Verfasst: 21.02.2005 17:44
von bobobo
eine Lib ist keine DLL sondern eine Zusatzoption die
beim Erstellen von PB-Programmen mit verwendet
werden kann.
(ins Verzeichnis DeinePbVerzeichniss\PureLibraries\UserLibraries
reinkopieren . die chm-Datei ins pbHelp-Verzeichis) danach PbEditor neuaufrufen und Du hast die Funktionen der LIB @YourHand beim Programmieren.

Es entsteht auch mit Verwendung der LIB nur eine EXE wenns nur eine sein soll.

Das Problem bei den PB-Libs ist die eventuel nichtvorhandene Aufwärtskompatibilität weil sich in künftigen PB-Version noch recht viel ändert. Aber das braucht Dich nicht davon abzuhalten eine Lib zu benutzen solange sie funktioniert.

Verfasst: 21.02.2005 17:45
von bluejoke
Ich hab das hier dazu gefunden:
http://www.powerbasic.com/support/forum ... 01966.html

Vielleicht hilft das ja