Ich habe eine Delphi-App, die Schnappschüsse von einer Webcam in 1-Sekunden-Intervallen nimmt. Auf dem Entwicklungs-PC geht es gut, aber auf der Zielplattform (Atom-basierter Tablet-PC mit eingebettetem Windows 7 mit einer anderen Kamera) ist es extrem flockig. Nach einem Neustart und beim ersten Start der App wird normalerweise die Webcam initialisiert und es werden normale Frames angezeigt. Beim nächsten Start der App wird der Webcam-Treiber jedoch nicht gefunden. Außerdem wird ein Dialogfeld angezeigt fragt mich, um die Videoquelle zu spezifizieren, vermutlich, weil sie einen nicht finden kann.Video-Capture-Dialog taucht mit eingebetteten PC-Webcam Delphi App
Meine Frage: Ich bin sicher, dass das mit Videoaufnahme-API-Anrufen nicht in der richtigen Reihenfolge oder etwas verwandt ist, aber gibt es ein Tool (wie Wireshark), die es mir ermöglichen, die API-Aufrufe zu schnüffeln, damit ich vergleichen kann, was auf dem eingebetteten Windows 7-System mit dem XP-Entwicklungssystem geschieht, das funktioniert?
Ich verwende die folgenden Anrufe/Nachrichten:
Initialisation:
capCreateCaptureWindow
WM_CAP_DRIVER_CONNECT
WM_CAP_SET_PREVIEW (false)
WM_CAP_SET_VIDEOFORMAT (as camera after boot is in format I can't handle)
WM_CAP_GET_VIDEOFORMAT
auf 1 sec Timer:
WM_CAP_SET_CALLBACK_FRAME
WM_CAP_GRAB_FRAME_NOSTOP
Auf Rückruf:
WM_CAP_SET_CALLBACK_FRAME (nil)
Auf Finish :
Diese Frage ist unklar. Fragen Sie, wie Sie die Treiberauswahl zuverlässiger machen können oder wie Sie API-Aufrufe überwachen können? Das sind zwei völlig getrennte Probleme, und wenn Sie nach beiden fragen möchten, sollten Sie mehrere Beiträge machen. Und welche dieser Fragen löst die angenommene Antwort? –
Marcos Vorschlag, eine Verzögerung (oder tatsächlich eine Verzögerung und Wiederholungen) einzuführen, hat die Treiberauswahl zuverlässiger gemacht. – rossmcm