VSampleDemo
Es gibt Beispiele zu Hauf, wie man WebCams mittels Video for Windows (VfW) anspricht. Wie das Ganze mit
DirectX funktioniert ist schon weit weniger gut dokumentiert. Mittlerweile gibt es dafür Lösung in DSPack und der Komponente TVideoSample von Egor Averchenkov (ich hab's allerdings nicht ausprobiert).
Trotzdem stelle ich hier mal meinen Port der Microsoft
DirectX 9.0
SDK Update (Summer 2003) Beispiele PlayCap und PlayCapMoniker vor.
Im Anhang findet ihr einen Screenshot (Version 2.1) und den Source der Demo-Applikation (Version 3.1).
Link zu Screenshot, Binary und Source auf meiner Homepage:
VSampleDemo.
Der Aufbau der Demo-Applikation ist grob wie folgt:
- VSample.pas greift auf die Webcams zu. Diese
Unit ist der eigentliche Port der Microsoft C++ Beispiele.
- VFrame.pas erlaubt einen vereinfachten Zugriff auf VSample, inklusive einer "NewVideoImage"-Event Methode
- Frame_Video.pas bietet eine (häßliche!) Oberfläche zur Steuerung (Start/Stop/Anzeige), gekapselt in ein TFrame (unglückliche Namensähnlichkeit)
- MainForm beinhaltet zwei der Frames aus Frame_Video.pas, damit gleichzeitig zwei laufende Videos angezeigt werden können.
History:
Version 3.2
09.07.2012
- Support für 8-Bit Graustufenbilder. Statt
RGB Bilder nachträglich in Graustufen umzurechnen, kann man nun direkt 8-bit Graustufenbilder abfragen (Property Gray8bit). Bringt aber nur bei Codecs wie YUY2 Zeitersparnis, bei
RGB kostet es Zeit!
- Liste der unterstützten Videoauflösungen korrigiert. Bisher stand da jeder Eintrag doppelt.
- Kleinere Speicherlöcher geflickt.
Version 3.1
06.05.2012
Kleinere Korrekturen und Anpassungen:
- YUY2 nimmt nun Rücksicht auf Microsofts LifeCam Cinema (Die schickt im 1280*720 Video mode 33% mehr Daten als nötig)
- MJPEG Dekompression mit
GDI+. Das ist etwas schneller als das in Delphi mitgelieferte JPEG.
- Die Bild-Spiegelung in der Demo3 führte auf meinem etwas neueren Win7 64bit zum Crash. Habe die Methode jetzt geändert.
Version 3.0
23.08.2009
- Unterstützung anderer Videoformate (nicht nur
RGB):
° YUY2 (YUYV, YUNV)
° MJPG
° I420 (YV12, IYUV)
- Direkte Ansteuerung der Video-Eigenschaften
- Überwachungs-Modus "Surveillance". Schreibt JPG Dateien in ein "Spy" Unterverzeichnis. ACHTUNG! Laßt euch nicht die Festplatte volllaufen!
Version 2.1
30.08.2008
- Neuere
DirectX Header und
Jedi.inc-Datei
(Damit sollte der Code mit Delphi >7 kompilierbar sein)
- Rudimentäre Echtzeit-Video-Bildverarbeitung:
° Invertieren
° Umwandlung in Graustufen
° Hervorhebung der Änderungen zum vorherigen Video-Frame
- Pause/Resume
- Update der Kameraliste mittels Popup möglich
- Kameras werden über ihren Index innerhalb der Kameraliste und nicht mehr über den Namen gestartet.
(Dies sollte die Verwendung zweier Kameras mit gleichem Namen ermöglichen)
Version 2.0
27.07.2008
- Callback Bug beseitigt.
-
DirectX Dateien mit im Archiv (spart den separaten Download)
Version 1.0
05.06.2006
- Initial version
Da VSampleDemo mittlerweile arg unübersichtlich geworden ist, habe ich noch drei ganz simple Demos zur Verwendung von VSample.pas und VFrame.pas gestrickt. Source-Codes findet ihr ebenfalls im Anhang.
Gruß
Michael