Einzelnen Beitrag anzeigen

Benutzerbild von skyobserver
skyobserver

Registriert seit: 18. Mai 2005
Ort: Ense
114 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#4

Re: DirectX: Videostream in Einzelbilder in AVI

  Alt 19. Mai 2006, 12:51
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...
  Mit Zitat antworten Zitat