Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi DirectX: Videostream in Einzelbilder in AVI (https://www.delphipraxis.net/69286-directx-videostream-einzelbilder-avi.html)

skyobserver 12. Mai 2006 22:24


DirectX: Videostream in Einzelbilder in AVI
 
Hallo, zusammen...


:gruebel: Weiß jemand, wie man folgende Aufgabenstellung mit DirectX9 lösen kann:

1. Der Videostream einer Webcam soll in einzelne Bitmaps zerlegt werden
ohne erst auf einem Panel zu landen. Dabei darf kein Bild mehrfach
geladen oder eines ausgelassen werden.

2. Nach der Bearbeitung sollen die Bitmaps wieder in einen Videostream
zusammengesetzt werden damit ich beim Speichern in einer AVI-Datei
einen in Windows installierten Video-Codec verwenden kann.


Habe keine Ahnung wie man diese ganzen Filter zusammensetzten muß um so
was hinzubekommen. Wer hat sich bloß so einen Zeigerdschungel ausgedacht? :wall:

:( Bis jetzt habe ich es lediglich geschaft die Liste der Video-Capture-Devices
zu ermitteln und von einem den Preview-Stream auf einem Panel anzuzeigen.

:shock: Wenn ich nochmal so viele Stunden mit der Online-MSDN zu DirectX und der
Übersetzung der (leider nicht immer) vorhandenen C++ Beispiele verbringe
bin ich reif für die Klapsmühle... :stupid:

VideoForWindows kommt wegen fehlender Features (leider) nicht in Frage.
Das wäre warscheinlich auch zu einfach gewesen...


Bin schon dankbar für Hinweise zu Teilproblem 1 oder 2

skyobserver 19. Mai 2006 11:53

Re: DirectX: Videostream in Einzelbilder in AVI
 
OK...mittlerweile hab ich's hintereinander...(halbwegs...)

pacman1986 19. Mai 2006 11:55

Re: DirectX: Videostream in Einzelbilder in AVI
 
wäre nett wenn du uns sagen würdest wie ^^

skyobserver 19. Mai 2006 12:51

Re: DirectX: Videostream in Einzelbilder in AVI
 
Nun gut...


was ich noch nicht hintereinander habe ist Einzelbilder wieder in einen Videostream zu 'pressen'...

was das andere betrifft: DirectShow heißt das Zauberwort!

Dort kann man über das GraphBuilder-Objekt verschiedene Filter zu einer Filterkette (Filter Graph) verbinden.
Für eine Webcam nimmt man als Eingangs-Filter ein Video-Capture-Filter (Liste der verfügbaren Geräte muß man erstmal ermitteln).
Als zweites nimmt man einen SampleGrabber-Filter (Der kann die Einzelbilder liefern).
Wenn man nun den Capture-Filter mit dem SampleGrabber-Filter verbindet so stellt DirectShow eine intelligente Verbindung her:
Ist der Ausgangs-Pin vom Capture-Filter nicht mit dem Eingangs-Pin vom SampleGrabber-Filter kompatibel (Webcam liefert AVI-Stream
mit Bild und Ton - SampleGrabber erwartet nur Videobilder) schaltet DirectShow selbstständig noch einen AVI-Splitter-Filter
dazwischen damit es passt.
Jetzt fehlt am Ende der Kette noch Video-Render-Filter. Möchte man neben den Einzelbildern keine Anzeige des Videostreams,
muß man anstatt dem Video-Render-Filter einen Null-Render-Filter verwenden. Ohne Ausgabe-Filter läuft die Filter-Kette nicht!
Dann die beiden Filter-Teile verbinden.

Ich bin im Moment selber noch dabei diese Theorie in Code umzusetzen. Am besten bekommt man einen Einblick, wenn man
mal mit dem Tool GraphEdit von Microsoft 'herumspielt'.

Das gibts nicht bei Microsoft! Soll angeblich im DirectX-SDK enthalten sein (...isses aber nich...)

Im Web hier gefunden:
Download-Link zu Microsoft GraphEdit

Dieses Tool ist nichts anderes als eine grafische Oberfläche für die Funktionen von DirectShow.


Das das Thema sehr umfangreich ist möchte ich hier zunächst erstmal auf die Doku zu DirectShow
in der Microsoft-MSDN verweisen (Win32 -> Multimedia -> Audio und Video -> DirectShow).

Wenn gewünscht, kann ich später (wirklich später...) etwas Code posten. Ich versuche gerade eine Komponente
daraus zu entwickeln die sich einfach in ein Programm einbauen läßt.
Die COM-Programmierung von DirectShow finde ich nämlich sehr nervig...


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:37 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz