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.