DemoRecorder

javascriptxul

Dieses Programm richtet sich an Hobbyfilmer, die mit CounterStrike:Source GameVideos herstellen möchten. Dabei nimmt das Programm den sonst mühseligen Prozess des Aufnehmens aus dem Spiel ab. Allerdings handelt es sich aktuell noch um eine frühe Alpha-Version. Es sind noch nicht alle Funktionen implementiert und getestet ist die Software auch noch nicht ausführlich. Die Benutzung geschieht deshalb auf eigene Gefahr.

Lestards DemoRecorder wird als freies OpenSource-Projekt unter der MPL/GPL veröffentlicht.

Beschreibung

Das Aufnehmen von VideoSzenen aus dem Spiel ist relativ Zeitaufwendig und Umständlich. Die in der Source-Engine eingebaute Aufnahmefunktion kann mit einer beliebig einstellbaren Framerate aufnehmen und schreibt dabei jede Frame einzeln auf die Festplatte. Dieses Vorgehen hat einige starke Vorteile: Zum einen werden Ruckler oder FPS-Schwankungen innerhalb des Videos vermieden, zum anderen ist es damit Möglich, mehr oder weniger unabhängig von der Leistungsfähig des Systems mit sehr guten Grafikeinstellungen aufzunehmen. Da die Framerate beliebig einstellbar ist, sind auch extreme Zeitlupen kein Problem.

Der Nachteil dieser Methode ist jedoch, dass der Aufnahmeprozess sehr lange braucht. So sind bei entsprechenden Frameraten Aufnahmezeiten von einer halben Stunde pro Szene keine Seltenheit. Wärend diesem Aufnehmen kann man den Rechner nicht benutzen sondern ist zum Zuschauen verdammt. Nach dem Aufnehmen hat man tausende Bilddateien auf der Festplatte, welche man nun noch mit VirtualDub zu einer AVI-Datei umwandeln muss. Das alles ist etwas mühselig.

Mit meinem DemoRecorder ist es möglich, diesen Aufnahmeprozess zu Automatisieren. Man wählt seine Demo-Dateien aus, gibt an, in welchem Bereich jeweils aufgenommen werden soll, macht seine Einstellungen und drückt auf "Record". Den Rest erledigt mein Programm. Es nimmt eine Szene nach der Anderen auf und nach einiger Zeit hat man alle Videodateien auf der Platte. Zwar dauert die Aufnahme mit meinem DemoRecorder genauso lange und auch hier ist der Rechner wärend dem Aufnehmen nicht benutzbar, der Vorteil ist aber, dass man nicht dabei sitzen braucht und nach jeder Szene von Hand die Aufnahme der nächsten Szenen zu starten. Die Aufnahme, auch mit mehreren Dateien geht automatisch. Man könnte hier z.B. die Aufnahme starten und derweil Einkaufen gehen oder sonst was machen und nach einiger Zeit kommt man zum PC zurück und hat alle Szenen im Kasten, und zwar direkt im AVI-Format. Das Umwandeln der Screenshots übernimmt das Programm nämlich auch selbstständig.

Ein Problem, was allerdings auch hier bestehen bleibt, ist die Dateigröße der Videodateien. Diese werden unkomprimiert auf der Festplatte abgelegt. Eine recht hohe Auflösung und hohe Framerate tuen ihr übriges. So sind Dateigrößen von mehreren Gigabyte für Videoclips von wenigen Sekunden, keine Seltenheit. Die Oben genannten Vorteile werden durch diesen Nachteil etwas teuer erkauft. Wer jedoch Wert auf Qualitativ hochwertige Aufnahmen macht, wird dieses Problem jedoch gerne in Kauf nehmen. Komprimierung ist in der Regel auch mit starken Qualitätsverlusten behaftet, welche eben hier nicht zu befürchten sind. Unschlagbar wird die Bildqualität aber vor allem dadurch, dass Frame per Frame auf die Festplatte geschrieben wird und das Spiel beim Aufnehmen die Geschwindigkeit eben an diesen Aufnahmeprozess anpasst. Das beim normalen Spielen übliche Abwägen zwischen hohen Grafikoptionen und flüssigem FPS fällt hier weg. Die Optionen können bis zum Anschlag gestellt werden da die Framerate sowieso konstant gehalten wird. Technisches

Das Programm basiert auf dem Mozilla Application Framework. Die Benutzeroberfläche ist mit XUL (XML Userinterface Language) entwickelt. Das Programm läuft in der XULRunner-Laufzeitumgebung. Als Programmiersprache kommt vor allem JavaScript zum Einsatz.

Zur Umwandlung der TGA-Bilddateien in eine AVI-Datei wird VirtualDub benutzt, welches im Paket auch mitgeliefert wird. Ausserdem benutze ich zur Dateiarbeit eine Bibliothek aus dem XUL-Explorer-Projekt. Dieses ist, genau wie VirtualDub und auch meine eigenes Projekt, Freie OpenSource-Software weshalb das Mitliefern bzw. Benutzen kein Problem darstellt.

Als Lizenz kommt wahlweise die GPL und/oder die MPL zum Einsatz. Als Programmier-Neuling erhoffe ich mir daraus, Feedback von Erfahrenen Programmierern zu bekommen. Aktueller Stand

Aktuell befindet sich die Software in einem frühen Alpha-Stadium. Die Aufnahme und das Umwandeln der Bilder zu einer AVI-Datei funktioniert bereits. Aktuell jedoch nur mit einer einzelnen Datei und noch nicht im Stapelbetrieb. Durch entsprechende Kapselung der Funktionen sollte dies aber unkompliziert nachrüstbar sei.

Das Programm ist noch nicht ausführlich getestet. Es kann deshalb noch zu einigen Fehlern kommen. Da ich auf Prozesse (counterstrike:Source und VirtualDub) zugreife, kann ich Probleme die damit zusammenhängen nicht ausschließen. In der Entwicklung ist es z.B: hin und wieder vorgekommen, dass das Spiel beim Aufnehmen eingefroren ist und ich den Rechner neustarten musste.

Der anfangs geplante 3D-Kamerapfad-Export werde ich nun nicht mehr realisieren, da mstHavoc und das Team von AdvancedFX diese Funktion mittlerweile in wesentlich besserer Form im Rahmen ihres HLAE-Projekts implementiert haben.

Für FirefoxNutzer: Da die Oberfläche in XUL geschrieben ist, lässt sich diese auch im Firefox-Browser darstellen. Hier der Link Andere Browser werden mit dem Link jedoch nicht klar kommen.

Für alle andere habe ich einen Screenshot gemacht: Die aktuelle Benutzeroberfläche

Die aktuelle Benutzeroberfläche Was für die Zukunft geplant ist

Für die Zukunft sind noch einige Zusatzfunktionen geplant. Vor allem möchte ich Einstellungsprofile ermöglichen. Der Nutzer soll seine Einstellungen und auch Customdateien in einem Aufnahme-Profil speichern können. Das Kopieren und anschließende Aufräumen der Customdateien übernimmt der DemoRecorder.

In einer späteren Version könnte die Möglichkeit implementiert werden, mit der ganze Videos automatisch erstellt werden könnten. Mit Hilfe von AviSynth wäre es möglich, den kompletten Schnitt programmgesteuert auszuführen. Der Nutzer könnte dazu ein Musikstück auswählen und mit einer Tagging-Funktion, gewisse Spannungsgeladene Momente der Musik taggen. An diesen Highlights könnte sich ein Algorithmus beim Schneiden orientieren. Aus einem Pool von Kamerafahrten könnten Aufnahmen für Intro und Outro erstellt werden.

Dieses Automatische Schnittsystem würde aber vor allem eine Machbarkeitsstudie darstellen. Es wäre schließlich ziemlich langweilig, wenn Alle Videos nur noch Algorithmisch erzeugt werden. Aus Programmierersicht stellt dies jedoch eine interessante Aufgabe dar. Dies liegt aber noch in weiter Zukunft und ist bisher nicht weiter als eine Idee.