Um dem Timer-Gekrampfe mal ein Ende zu bereiten: TMediaplayer sowie viele andere Videoabspielkomponenten zeichnen nicht einfach auf nem Canvas rum, sondern nutzen ein Fensterhandle als Anhaltspunkt dafür, wo das
Overlay hin platziert werden soll.
Overlay bedeutet dabei, dass dieser Teil des Bildes komplett an der normalen Windows-Grafik vorbei läuft, und man nicht über die üblichen Methoden an die Bilddaten heran kommt, bzw. sie bearbeiten kann. Im Falle des Mediaplayers handelt es sich dabei um ein
DirectX Overlay, und an das zu kommen ist echt nicht trivial (gab es auch mal einige Diskussionen zu im Forum, bezogen auf 3D-Spiele. Da ists das selbe Problem.)
Die einfachste Variante ist es, garkeine Playerkomponente an sich dafür zu bemühen, sondern sich die Bilddaten Frameweise aus der Datei zu holen. Um dies zu tun, kann man sich ewig mit der
API für Videocodecs beschäftigen, oder man nimmt z.B.
DSPack dafür
. Damit lässt sich ein komplettes Video in Bitmaps zerlegt bearbeiten, und je nach dem wie schnell dies von statten geht, kann man nun noch selbst für die Anzeige sorgen. (Alternativ halt wieder mit dem DSPack ein zweites Video encodieren mit den Änderungen.)
Jeder Versuch einfach so auf ein Video zu zeichnen, wird im aller besten Fall flackern wie Hölle, wenn überhaupt
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel