Nasenbaer
2011-10-13, 20:58:46
Hi,
ich möchte in etwa sowas programmieren wie es Fraps kann. Also Videos von Direct3D-Anwendungen aufnehmen und ggf. auch vom Desktop, falls keine Anwendung läuft.
Etwas googlen brachte mir 3 Möglichkeiten:
1. BitBlt() über GDI was natürlich nicht gerade schnell und zukunftssicher sein wird. Und ob das mit DX geht bezeifle ich mal auch.
2. Die DX9-Methode GetFrontBufferData(), die aber nur dann geht, wenn ich den Quellcode des Programmes, dass ich aufnehmen will, habe. Und außerdem auf DX9 beschränkt.
3. Über Windows Media Encoder 9 soll man per IWMEncVideoSource2::SetInput(BSTR) den Monitor als Quelle setzen können und dann ein Video von abgreifen können.
Für mich klingt einzig die letzte Variante als ein, die man vielleicht mal ausprobieren könnte. Aber ist WME 9 die aktuellste Version? Hab nix neueres gefunden.
Oder habt ihr vielleicht ne bessere Idee, wie man ein Video mit hoher Geschwindigkeit abgreifen könnte?
Mfg
Michael
ich möchte in etwa sowas programmieren wie es Fraps kann. Also Videos von Direct3D-Anwendungen aufnehmen und ggf. auch vom Desktop, falls keine Anwendung läuft.
Etwas googlen brachte mir 3 Möglichkeiten:
1. BitBlt() über GDI was natürlich nicht gerade schnell und zukunftssicher sein wird. Und ob das mit DX geht bezeifle ich mal auch.
2. Die DX9-Methode GetFrontBufferData(), die aber nur dann geht, wenn ich den Quellcode des Programmes, dass ich aufnehmen will, habe. Und außerdem auf DX9 beschränkt.
3. Über Windows Media Encoder 9 soll man per IWMEncVideoSource2::SetInput(BSTR) den Monitor als Quelle setzen können und dann ein Video von abgreifen können.
Für mich klingt einzig die letzte Variante als ein, die man vielleicht mal ausprobieren könnte. Aber ist WME 9 die aktuellste Version? Hab nix neueres gefunden.
Oder habt ihr vielleicht ne bessere Idee, wie man ein Video mit hoher Geschwindigkeit abgreifen könnte?
Mfg
Michael