Ich möchte ein Screencasting-Programm für die Windows-Plattform schreiben, bin mir aber nicht sicher, wie ich den Bildschirm erfassen soll. Die einzige mir bekannte Methode ist die Verwendung von GDI, aber ich bin gespannt, ob es andere Möglichkeiten gibt, dies zu tun, und wenn ja, welche verursachen den geringsten Aufwand? Geschwindigkeit hat Priorität.
Das Screencasting-Programm dient zur Aufnahme von Spielmaterial. Wenn dies jedoch die Optionen einschränkt, bin ich immer noch offen für andere Vorschläge, die nicht in diesen Bereich fallen. Wissen ist schließlich nicht schlecht.
Bearbeiten : Ich bin auf diesen Artikel gestoßen: Verschiedene Methoden zum Erfassen des Bildschirms . Es hat mich in die Windows Media API-Methode und die DirectX-Methode eingeführt. In der Schlussfolgerung wird erwähnt, dass das Deaktivieren der Hardwarebeschleunigung die Leistung der Erfassungsanwendung drastisch verbessern kann. Ich bin gespannt, warum das so ist. Könnte jemand die fehlenden Lücken für mich ausfüllen?
Bearbeiten : Ich habe gelesen, dass Screencasting-Programme wie Camtasia ihren eigenen Capture-Treiber verwenden. Könnte mir jemand eine ausführliche Erklärung geben, wie es funktioniert und warum es schneller ist? Möglicherweise benötige ich auch Anleitungen zur Implementierung von so etwas, aber ich bin mir sicher, dass ohnehin bereits Dokumentation vorhanden ist.
Außerdem weiß ich jetzt, wie FRAPS den Bildschirm aufzeichnet. Es bindet die zugrunde liegende Grafik-API ein, um sie aus dem Backpuffer zu lesen. Soweit ich weiß, ist dies schneller als das Lesen aus dem Frontpuffer, da Sie eher aus dem System-RAM als aus dem Video-RAM lesen. Den Artikel können Sie hier lesen .
MovePlayerLeft()
. Außerdem zeichnen Sie die Zeit und Dauer von Tastendrücken und anderen Eingaben auf. Wenn Sie sich dann im Wiedergabemodus befinden, ignorieren Sie einfach die Eingabe und lesen stattdessen die aufgezeichneten Daten. Wenn Sie in den Daten einen linken Tastendruck sehen, rufen Sie an MovePlayerLeft()
.