PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Screen-/Video-Capturing von Direct3D-Anwendung? (so wie bei FRAPS)


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

Demirug
2011-10-13, 21:19:15
Fraps hook sich direkt in DirectX ein.

http://research.microsoft.com/en-us/projects/detours/ zeigt wie man sowas im Prinzip macht. Man braucht dann allerdings immer noch tiefgreifende Kenntnisse über die Arbeitsweise der verschiedenen DirectX Versionen. Wenn man sowas wie Detours selber schreiben will sind auch noch Assembler und Systemprogrammierungs Kenntnisse erforderlich.

Nasenbaer
2011-10-13, 21:33:01
Hm das klingt dann natürlich etwas komplizierter als gedacht. Aber ist wohl auch der einzig wirklich praktible Weg?!
Ich werd's mir mal anschauen.

PatkIllA
2011-10-13, 21:44:43
Oder habt ihr vielleicht ne bessere Idee, wie man ein Video mit hoher Geschwindigkeit abgreifen könnte?HDMI Grabberkarte...

Nasenbaer
2011-10-13, 22:05:18
Bringt mir leider nix.
Ich will, als Ganzes gesehen, ein Spiel vom Desktop aufs Notebook streamen können. Sprich ich muss die Daten in den RAM bekommen fürs Streamen.

Für DX9-DX11 scheints aber schon was einigermaßen fertigen zu geben: http://spazzarama.wordpress.com/2011/03/14/c-screen-capture-and-overlays-for-direct3d-9-10-and-11-using-api-hooks/

Würden dann noch Sound und Input fehlen - was ich irgendwie total verdrängt habe. *gg*

Hmm das ist dann als praxistaugliche Anwendung für eine Person dann doch etwas zu viel Aufwand, da es denn sicher auch mit mancher Anwendung nicht problemlos arbeitet. :/
Muss das alles wohl nochmal durch'n Kopf gehen lassen.

PatkIllA
2011-10-13, 22:08:17
Bringt mir leider nix.
Ich will, als Ganzes gesehen, ein Spiel vom Desktop aufs Notebook streamen können. Sprich ich muss die Daten in den RAM bekommen fürs Streamen.HDMI Grabber gibt es auch für USB 3 ;)

Nasenbaer
2011-10-13, 22:19:54
Verstehe ich nicht?!
Und wie soll ich damit ne OnLive-Für-Arme-Software basteln können?

Damit kann ich kabelgebunden meinen Desktop-Ausgang abgreifen und auf Platte speichern aber das will ich ja gar nicht!?

PatkIllA
2011-10-13, 22:20:41
Damit kann ich kabelgebunden meinen Desktop-Ausgang abgreifen und auf Platte speichern aber das will ich ja gar nicht!?Man kann damit natürlich auch live gucken. Ton wäre auch dabei. Input kann man auch per Netzwerk verfügbar machen.

Nasenbaer
2011-10-13, 22:33:19
Nagut dann ist es aber wohl einfacher sich nen Wireless HDMI-Adapter zu besorgen sowie Wireless Maus+Keyboard und dann halt ein einzelnes Display statt nem ganzen Notebook zu verwenden.