Hallo zusammen,
ich probiere gerade ob sich ein Videoprojekt mit Delphi realisieren läst.
Ich möchte bis zu vier Videos synchronisieren und in einer beliebigen Geschwindigkeit vorwärts und rückwärts abspielen. Das benötigt man für Bewegungsanalysen im Sport.
Das Problem ist, das ich bisher keine Komponenten gefunden habe, mit denen ich Videos vorwärts und rückwärts laufen lassen kann und im Idealfall auch noch auf die Einzelbilder zugreifen kann. Oder ich quäle sie so sehr dass sie abstürzen.
Ich habe mir die VideoLab 2.0
www.mitov.com Komponenten angeschaut und bin mit denen bisher am weitesten gekommen. Leider können die nicht schnell genug in den Bildern rückwärts springen und die Direct Show Komponenten von VideoLab sind meiner Erfahrung nach leider nicht stabil (oder ich hab sie falsch aufgerufen).
Ebenso habe ich mir das DSPack angeschaut, scheitere da aber immer schon am Aufruf von Funktionen und Prozeduren aufgrund der unglaublichen Fülle von Parametern.
Ich habe bereits sehr gute Erfahrungen mit Graphics32
graphics32.org/wiki/ und möchte diese Komponenten nutzen um die Videobilder als BMP anzuzeigen und ggf. darauf rumzumalen.
Meine Lösungsansätze sind bisher:
Eine Videokomponente auf ein bestimmtes Bild positionieren und das Bild als BMP auslesen. Die BMP's in einem Layer mit Graphics32 anzeigen.
An das BMP muss ich dran, weil ich in den meisten Fällen noch eine De-Interlace Routine über das Bild jagen muss.
Das funktioniert mit einem Video noch ganz toll, bei vieren stottert es ganz gewaltig beim rückwärts spielen.
Ich überlege derzeit teile des Videos in eine TBitmap32List einzulesen und die Bilder einfach über ein Array auszulesen. Da bekomme da aber schon nach wenigen Sekunden ein gewaltiges Speicherproblem vier Videos a 4 Sekunden benötigen mal eben 500 MB Speicher.
Fragen:
Welche Videoformate unterstützen Rückwärtslauf?
Welche Komponenten eignen sich dafür?
Hat jemand eine Bessere Idee, wie man an einzelne Videoframes heran kommt, besonders wenn man rückwärts abspielen möchte?
Wie kann ich ggf. 32bit Bitmaps im Speicher oder auf der Festplatte Platz sparend ablegen?
Ich würde mich über einige Tips und Anregungen freuen, bevor ich mich an das Schreiben der Hauptrotinen mache. Keine Angst, Quellcode will ich keinen.