Einzelnen Beitrag anzeigen

Medium

Registriert seit: 23. Jan 2008
3.679 Beiträge
 
Delphi 2007 Enterprise
 
#6

AW: MJPEG Stream anzeigen

  Alt 27. Aug 2014, 00:12
Meine Frage war schon ernst gemeint. TJPEGImage auf ein TImage ist ja schön und gut, aber auch dafür gibt es etliche Wege. Mir schwob hier ein Fetzchen Code vor, dass du zeigen könntest. (TImage an sich ist schon eher wenig optimal, da dieses intern auch immer sein Puffer-Bitmap mit führt. Eine Paintbox könnte daher zumindest schon mal ein klein wenig helfen, vermutlich aber nicht genug. Je nach dem wie du bisher zeichnest eben.)

Die Hardwarebeschleunigung umfasst, so wie der Begriff üblicherweise verwendet wird, übrigens nicht nur das bloße Zeichnen. Hier wird vor allem auch das Dekodieren in für GPUs (bzw. den diversen Media- und Streaming-Extensions der CPUs) optimierter Weise verlagert. Nur muss man sich dafür dann komplett vom Komfort der VCL verabschieden, und so weit ich das überblicke entweder herstellerspezifische APIs der Treiber nutzen, oder aber sich den "Spaß" gönnen die Dekodierung komplett selbst entweder über Shader oder GPGPU-Frameworks (OpenCL, Cuda, ...) machen. Da sprechen wir dann aber schon über Mannwochen bis das sauber ist.
Selbst wenn man einen Decoder scheiben will, der "nur" MMX, SSD und Konsorten nutzt, muss man zumindest unter Delphi mit handgemachtem Assembler ans Werk rücken, da Delphi nicht für die Extensions optimiert und imho auch erst gar nicht kompiliert.

Was recht viele Videoprogramme nutzen, ist die freie libavcodec.dll des FFmpeg-Projektes. Leider habe ich da auf die Schnelle keine Infos zu einer API gefunden, und ob es da eventuell schon einen fertigen Wrapper für Delphi zu gibt. Es könnte sich da durchaus lohnen nach zu suchen, da hier ein riesen Batzen an Arbeit bereits getan ist.

Falls du das Video wirklich nur anzeigen willst, ohne die Einzelbilder weiterzuverarbeiten, könnte man sich auch noch den VLC-Player genauer anschauen. Ich glaube mal etwas davon gelesen zu haben, dass es da Wrapper gibt, um die Videoausgabe in eigene Fenster zu lenken. Sicher bin ich da aber nicht. Der Player lässt sich prinzipiell recht einfach mit einem Stream direkt aus einer Kamera füttern, und übernimmt alles bis zur Darstellung.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)

Geändert von Medium (27. Aug 2014 um 00:18 Uhr)
  Mit Zitat antworten Zitat