xmlSlides - Aktueller Stand

Vor einiger Zeit hatte ich ja bereits ein paar Ideen und Entwürfe für meine Präsentations-Software für Browser vorgestellt. Mittlerweile hat sich einiges getan bzw. geändert.

Zunächst einmal: Ich bearbeite dieses Projekt nun im Rahmen meines Praktikums und meiner Abschlussarbeit an der Hochschule. Das heisst vor allem, dass das Projekt nun nicht mehr nur ein kleines Hobby-Projekt für zwischendurch ist, das ich vieleicht irgendwann einmal fertig stelle, sondern dass ich aktuell in Vollzeit daran arbeite und es in jedem Fall in absehbarer Zeit vorzeigbare Ergebnisse geben wird. Ich möchte ja schließlich mein Studium und die Abschlussarbeit vernünftig abschließen.

Eine weitere Konsequenz daraus ist, dass ich viele Sachen nicht mehr “einfach so” programmieren kann, wie es mir grade passt, sondern ich tiefgreifendere Untersuchungen anstellen muss, damit wirklich ein vernünftiges Ergebniss herauskommt. Eine erste Konsequenz daraus ist, dass ich einen Großteil der bisherigen Arbeit über Bord geworfen habe und das ganze von Grund auf neu plane. Die Anforderungen bleiben jedoch weitestgehend gleich, nur der Lösungsweg verändert sich etwas.

Im ersten Schritt verzichte ich nun auf eine selbstentwickelte XML-Sprache und werde stattdessen eine bereits bestehende XML-Sprache zurückgreifen. Welche konkret steht aber aktuell noch nicht ganz fest. Auf der einen Seite ist das DocBook-Format für Technische Dokumentationen eine etablierte Technologie und bietet auch eine Art Spezialisierung für die Beschreibung von Präsentationen. Der Nachteil dieser Variante ist jedoch, dass das Format unglaublich komplex ist und sehr sehr viele Elemente enthält, die ich in meiner Software nicht benötige. Die hohe Komplexität spricht auch gegen eine der Hauptanforderungen nach Einfachheit und Nutzerfreundlichkeit. Man könnte jedoch auch nur einen Teil des DocBook-Slides-Formates implementieren und auf den Rest verzichten. Diese Lösung hat allerdings auch ihre Schattenseiten.

Eine andere recht vielversprechende Technologie ist das Slide-Format von MulberryTech. Dieses Format bietet nicht so viele Elemente wie das DocBook-Format und ist damit nicht so komplex. Aus meiner Sicht sind die vorhandenen Elemente teilweise auch sinnvoller bezeichnet, was verständlich ist da es speziell für Folienpräsentationen entwickelt ist. Die Dokumentation der Elemente innerhalb der Dokument-Typ-Definition ist auch sehr vorbildlich. Einziger Wehrmutstropfen ist bei diesem Format jedoch, dass es letzlich auch eine Eigenentwicklung eines Unternehmens ist und kein Etablierter Standard wie DocBook.

Die Plattform

Was vermutlich gleich bleiben wird im Vergleich zu den alten Konzepten, ist die Plattform. Ich werde das Programm mit großer Wahrscheinlichkeit als Firefox-Plugin entwickeln. Hierfür habe ich bereits an einem Entwurf für die Oberfläche gearbeitet.

Es wäre jedoch auch eine Webbasierte Lösung denkbar, bei der der Nutzer auf einer Webseite einen Editor vorfindet und seine Präsentationen erstellen kann. Dies könnte dann auch direkt mit einem Hosting-Angebot verknüpft werden, bei der die erstellten Präsentationen auf dem Server verbleiben und der Nutzer eine URL zu seiner Präsentation zur Verfügung gestellt bekommt, über die er die Präsentation jederzeit direkt ansehen kann.

Wie genau die Lösung aussehen wird, muss ich noch genau entscheiden. Wie gesagt: Da es sich hierbei nun um ein Projekt im Wissenschaftlichen Rahmen handelt, müssen solche Entscheidungen natürlich sehr viel Detailierter behandelt und die Abwägung zwischen Technologien mit Bedacht getroffen werden.

more...

xmlSlides: Erster Entwurf der XML-Sprache und erstes XSL-Stylesheet

Ich habe einen ersten Entwurf der zugrunde liegenden XML-Sprache für mein Programm “xmlSlides” entwickelt. Damit wird noch lange nicht der volle Funktionsumfang von HTML-Präsentationen abgedeckt, jedoch lassen sich simple Präsentationen bereits erstellen.

In meinem Programm sollen Präsentationen, genauer gesagt nur der Inhalt der Präsentation in einer XML-Datei abgelegt werden. Diese XML-Datei beschreibt in möglichst abstrakter Form den reinen Content der Folien. Im Anschluss wird mit Hilfe von XML Transformationen aus der XML-Datei die eigentliche XHTML-Präsentation erstellt. Diese Vorgehensweise hat den Vorteil, dass das eigentliche Ausgabeformat nur durch das verwendete XSL-Stylesheet festgelegt wird. Es können also auch verschiedene XLS-Stylesheets für verschiedene Ausgabeformen angeboten werden. In erster Linie sollen damit die verschiedenen HTML-Präsentations-Technologien, wie S5, DOMSlides oder Slideous abgedeckt werden. Jedoch sind auch Exporte nach PDF und sogar OpenOffice-Impress und MS-Powerpoint 2007 (beide sind ebenfalls XML-Formate) denkbar - wobei die beiden letztgenannten und insbesondere MS-Powerpoint ziemlich unwahrscheinlich sind.

Für das XML-Format habe ich ein entsprechendes XML-Schema entwickelt, wechels wie bereits erwähnt, noch unvollständig ist.

Das XML-Dokument

Ein Beispielhaftes XML-Dokument könnte so aussehen:

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="xmlslides.xsl" ?>
<slides xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:noNamespaceSchemaLocation="xmlslides.xsd">
 <head>
   <title>Vortrag</title>
   <author>Manuel</author>
 </head>
 <body>
   <slide>
     <headline>Folie 1</headline>
     <contentBox>
       <text>Hallo Welt</text>
       <text>Das ist die erste Folie</text>
     </contentBox>
   </slide>
   <slide>
     <headline>Folie 2</headline>
     <contentBox>
       <text>Servus zur zweiten Folie</text>
     </contentBox>
   </slide>
  </body>
</slides>

Darin gibt es einen head und einen body ähnlich wie in HTML. Im head wird der Titel und der Autor der Präsentation definiert. Hier werde ich in Zukunft noch weitere Angaben hinzufügen.

Im Body-Bereich werden die eigentlichen Folien beschrieben. Jede Folie wird von einem <slide>-Element umschlossen. Als erstes kann jede Folie eine Überschrift mit dem Element <headline> enthalten. Im Anschluss folgt der eigentliche Inhalt der Folie in einem <contentBox>-Element. Dieses Element soll in Zukunft ein Attribut align bekommen, welches die Werte horizontal oder vertical annehmen kann. Damit soll bestimmt werden, ob die innerhalb der ContentBox definierten Elemente Horizontal oder Vertikal angeordnet werden sollen.

Innerhalb der ContentBox folgen die eigentlichen Elemente zur Anzeige auf der Folie. Aktuell ist hier nur das Element <text> zur Anzeige von normalen Text definiert. Hier folgen in Zukunft aber noch weitere Elemente für Listen, Bilder, Tabellen oder Code-Abschnitte.

Jedes dieser Elemente soll von dem align-Attribut der Umschließenden ContentBox beeinflusst werden. So werden entweder alle Elemente untereinander oder Nebeneinander angezeigt.

XSL-Transformation

Wenn das XML-Dokument mit der Abstrakten Beschreibung der Folien fertig ist, muss es mit Hilfe eines XSL-Stylesheet in die entsprechende Anzeigefähige Form gebracht werden. Aktuell benutze ich als Anzeige-Technologie Slideous mit minimalen Erweiterungen und einem von mir erstellten Template. Später sollen aber natürlich ncoh weitere Technologien wie S5 unterstützt werden.

Das XSL-Stylesheet sieht folgender Maßen aus:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

 <xsl:template match="/">
   <html>
    <head>
     <title>
      <xsl:value-of select="slides/head/title"/>
     </title>
     <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
     <meta name="author"><xsl:attribute name="content"><xsl:value-of select="slides/head/author"/></xsl:attribute></meta>
     <meta name="date" content="19.12.2009" />
     <meta name="autoincrement" content="false" />

     <link rel="stylesheet" type="text/css" href="slideous/slideous.css" />
     <script src="slideous/slideous.js" type="text/javascript" />

    </head>
    <body>                   
     <div id="statusbar">
      <span style="float:right;">
       <span style="margin-right:4em;font-weight:bold;">
        <span id="slideidx">
        </span> of {$slidecount}</span>
        <button id="prevslidebutton" title="previous slide">&#171;</button>
        <button id="nextslidebutton" title="next slide">&#187;</button>
        <button id="incfontbutton" title="content">A+</button>
        <button id="decfontbutton" title="first slide">A-</button>
        <select id="tocbox" size="1"><option></option></select>
       </span>

       <span id="eos">&#189;</span>
         <span><xsl:attribute name="title">{$location},{$date}</xsl:attribute>{$title}, {$author}</span>
     </div>
     <xsl:for-each select="slides/body/slide">
       <div>
         <h1><xsl:value-of select="headline" /></h1>
         <div>
           <xsl:for-each select="contentBox/text">
             <p><xsl:value-of select="."/></p>
           </xsl:for-each>
        </div>
       </div>                    
     </xsl:for-each>
   </body>        
 </html>
</xsl:template>    
</xsl:stylesheet>

Als Ergebnis kommt dann folgende Präsentation heraus:

  • xml-Transformation (benötigt XSLT-Fähigen Browser z.B. Firefox oder moderne IE): test.xml
  • fertiges HTML-Dokument: test.html

Zum testen kann man in modernen Browsern mit XSLT-Unterstützung (IE ab version 6?, Firefox,…) das entsprechende XML-Dokument direkt im Browser laden. Sofern das XSL-Stylesheet im selben Verzeichnis liegt, sollte als Ergebnis direkt das transformierte XHTML-Dokument, sprich die Präsentation im Browser erscheinen. Natürlich müssen dafür auch die Dateien (CSS, JS, Grafiken) von Slideous vorhanden sein. Alles zusammen habe ich als ZIP-Archiv hier zum Download bereit gestellt: xmlslides_01.zip

Wie eingangs erwähnt, ist der Funktionsumfang noch äusserst rudimentär. Jedoch als prinzipielle Machbarkeitsstudie ist es für mich der erste Schritt in die richtige Richtung. Für Kritik und Hinweise bin ich wie immer Dankbar, vor allem was das XML-Schema und allgemein meine Vorstellung des XML-Dokuments angeht.

more...

Musik Player: Songbird oder selbst entwickeln

Nicht erst seit Gestern bin ich auf der Suche nach einer tollen Musik-Abspielsoftware, die alle meine Anforderungen erfüllt. Bisher war die Suche aber nicht wirklich Erfolgreich. Bisher habe ich vor allem den Player “foobar2000” benutzt, welcher von Art und Umfang der Funktionen überaus Großartig ist. Wer möchte kann eine (ziemlich schnelle) MedienDatenbank benutzten - muss aber nicht. Ich persönlich bin da wohl ein bisschen Altmodisch und bevorzuge die Klassischen Playlisten. Diese lassen sich in Foobar2000 sehr intuitiv steuern. Man kann mehrere Playlisten anlegen und in Tabs ordnen. Das ganze in einer simplen, praktischen und unaufdringlichen grafischen Gestaltung. Prima. Doch leider wird das Bild meiner Meinung nach durch 2 Fakten etwas getrübt, wobei der eine Fakt wohl aus dem anderen folgt: Erstens: Foobar2000 ist keine freie OpenSource-Software, zumindest nicht komplett. Und zweitens, was wesentlich relevanter ist: Foobar2000 läuft nur unter Windows und nicht unter Linux. Die Musik-Player, die ich bisher unter Linux ausprobiert habe, können leider Foobar2000 nicht das Wasser reichen - zumindest was meine Bedürfnisse angeht.

SongBird

Hoffnung habe ich geschöpft, als ich vom Player “Songbird” hörte. Dieser basiert auf Mozillas XUL-Technologie, was eine ganze Reihe positiver Eigenschaften nach sich zieht. Er läuft unter Windows genauso wie unter Linux. Die Anpassbarkeit über Plugins sollte auf einfachste Art und Weise funktionieren und das Mozilla-Toolkit bietet jede Menge Potetial was die Gestaltung der Oberfläche und den Funktionsumfang angeht.

Songbird möchte eine Art “MusikBrowser” sein, jedoch verschenkt er jede Menge Potential. Das fängt schon bei den Tabs an. Tabs sind für Browser heute eine alltägliche Funktion und so bietet auch Songbird tabs. Jedoch kann ich meine MusikPlayliste ausschließlich im ersten Tab ablegen. Alle weiteren Tabs sind ausschließlich für das Besuchen von Webseiten gedacht. Warum kann ich nicht (ähnlich simple wie in Foobar2000) meine verschiedenen Wiedergabelisten in jeweils einen Tab ablegen?

Und wo wir bei den Wiedergabelisten sind. Wieso ist es so umständlich, überhaupt eine Playlist zu erzeugen? Als ich Songbird ausprobiert habe, hatte ich ständig das Gefühl, dass ich unbedingt auf die Musikdatenbank angewiesen bin. Ohne Musikdatenbank, nur mit simplen Playlisten zu arbeiten erschien mir unglaublich umständlich. Schade. Weiter geht das ganze mit dem Layout. Leider ist es nicht ohneweiteres möglich, ungewollte Oberflächenelemente, wie z.B. die Seitenleiste der Mediathek, einfach auszublenden.

Die eigentlichen Schwächen im Vergleich zu Foobar2000 zeigen sich jedoch erst bei genauerem Hinsehen: Wärend ich bei Foobar2000 nicht nur die komplette Oberfläche (inklusive Menüs) frei gestalten sondern auch ALLE Funktionen, die irgendwo im Player stecken auch über Tastatur-Shortcuts steuern kann, sind die Möglichkeiten bei Songbird hier dürftig. Nur für ein knappes Dutzend Funktionen lassen sich Tastaturkürzel belegen. Diese aber dazu teilweise noch mit Einschränkungen. So ist es in Foobar2000 ohne Probleme möglich, Tastaturkürzel für das Abspielen von Songs auf den Nummernblog zu legen. In Songbird ist dies so nicht möglich. Ich muss zwingend eine Sondertaste zusätzlich angeben. Das ist sicherlich gut gemeint, für mich persönlich stellt das aber ein ärgerliche Einschränkung dar.

Ein weiteres, eigentlich total simples Feature, welches ich bei Foobar2000 lieben gelernt habe sind die Funktionen “Playback follows Cursor” und “Cursor Follows Playback”. Wenn ich in der Playlist einen Song markiere, dann wird dieser als nächstes abgespielt. Somit kann ich den aktuellen Song noch fertig hören und Foobar2000 springt danach selbstständig zu der Stelle in der aktuellen Playlist (oder in anderen Playlists), an der ich weiter hören möchte. Ein unglaublich simples aber trotzdem cooles Feature, welches ich sonst noch bei keinem anderen Musikplayer gefunden habe.

Die Lösung?

Technisch ist Songbird wirklich klasse. Die XUL-Plattform ist meiner Meinung nach eine wirklich gute Wahl bei der Entwicklung von dieser Art von Software. Vor allem für die vielen Internet-Funktionen, die Songbird implementiert ist diese Plattform hervorragend geeignet. Offensichtlich gehöre ich wohl leider nicht so ganz zur Zielgruppe von Songbird. Meine Idee war also, Songbird durch geeignete Plugins so zu erweitern, dass er meine Anforderungen doch erfüllt. Entweder Plugins von anderen Programmierern oder von mir selbst programmierte Plugins. Nach einigen Suchen bin ich da mittlerweile jedoch ein wenig Skeptisch geworden da Foobar2000 und Songbird scheinbar völlig andere Zielgruppen ansprechen und der Aufbau von Songbird in einer ganz andere Richtung geht.

Damit war die Idee geboren, eventuell eben selbst eine MusikPlayer-Software zu schreiben, die genau meine Bedürfnisse erfüllt. Nicht mehr und nicht weniger. Da Songbird freie OpenSource-Software ist wäre es ja Möglich, gewisse Grundfunktionalitäten wie das reine Abspielen von MP3s in eine eigene Anwendung zu übernehmen. Als Plattform würde ich selbstverständlich auch Mozillas XUL einsetzen und den Player natürlich auch unter einer freien OpenSource-Lizenz veröffentlichen. Ob und Wann ich diese Player-Software wirklich schreibe, weiss ich aber aktuell noch nicht. Die Idee ist zumindest da und wenn sich die Zeit finden lässt, dann setze ich diese vieleicht auch um. Mal Schauen :-)

more...

Mockup - 'LestardMusicPlayer'

Über die Feiertage habe ich ein wenig Zeit gehabt und an einem Mockup für einen Musikplayer gearbeitet. Als Plattform habe ich wiedermal Mozillas XUL gewählt. Das GUI ist an meine Konfiguration von Foobar2000 angelegt.

Wie gesagt handelt es sich nur um ein Mockup. Jegliche Programmlogik fehlt noch völlig. Weder lässt sich Musik abspielen noch die Playlists direkt bearbeiten. Es dient nur als Test und Beispiel für die Programmoberfläche.

Das Mockup gibt es hier zum Download

Hier ein Screenshot:

Screenshot

more...

Vortrag XUL bei der LinuxUserGroup Görlitz

Für die LinuxUserGroup an der Hochschule habe ich einen Vortrag zum Thema XUL und Entwicklung von Anwendungen auf Basis des MozillaApplicationFrameworks sowie Erstellung von Plugins für den Firefox gehalten.

Die Vortragsfolien sind mit xhtml, css und JavaScript erstellt und können deshalb auch direkt im Internet angeschaut werden. Ich hab die Folien hier verlinkt: Vortrag XUL

Nebenbei bemerkt: Die Folien entsprechen beispielhaft dem, was mit meinem geplanten Programm xmlSlides erstellbar sein wird. Diese Folien hier habe ich per Hand geschrieben jedoch soll es in Zukunft möglich sein, soetwas mit meinem Programm auf einfache Weise erstellen zu lassen.

more...

Hochschule-Cluster

Im Rahmen eines Forschungsprojekts an der Hochschule Zittau/Görlitz beschäftigen wir uns mit der Einrichtung, Installation und Konfiguration eines Cluster-Computers zu Lehr- und Forschungszwecken. Als Hardware-Grundlage dienen uns dabei 10 Minicomputer mit Intel-Atom-Prozessor, je 2GB Arbeitsspeicher und jeweils 300 GB Festplatte. Die Technik hat uns die Hochschule finanziert.

Die 10 Computer sind aktuell über reguläre Netzwerk-Kabel in einem geswitchten Netzwerk miteinander verbunden. Als Software versuchen wir vorwiegend Freie Software einzusetzen. Als Betriebssystem kommt Debian-Linux zum Einsatz.

Zur Entwicklung von verteilter Software ist aktuell auf allen Maschinen eine Java-VM installiert. In einem regulären Studienprojekt befassen wir uns aktuell mit der Anpassung einer Data-Mining-Software um diese parallelisiert auf dem Cluster auszuführen.

more...

SimpleVBlog - Studentisches Projekt

Im Rahmen eines Projekts an der Hochschule erstellen wir eine Videoblog-Engine mit Hilfe von JavaEE-Technologien. Konzeptionell möchten wir eine möglichst schlanke und einfach benutzbare Software schaffen, welche ohne komplizierte Administrations-Backend auskommt. Als Technologien kommen JSF 1.2, Facelets, IceFaces und Hibernate zum Einsatz.

An dem Projekt sind Beteiligt: Tobias Gaertner, Markus Fleck, Torsten Schröter, Marcus Waschke und meine Wenigkeit.

Zu meinen Aufgaben im Team gehören die Grafische Gestaltung der Oberfläche, die Entwicklung der Oberfläche mit Facelets sowie IceFaces und die Programmierung einiger Seitenelemente für die Anzeige und Editierung der Blogeinträge.

screenshot

more...

FreeSoftwareAlternatives - Studentisches Projekt

Im Fach “Knowledge Media Design” entwickeln wir prototypisch ein Webangebot, welches über Freie Software als Alternative für übliche (properitäre) Windows-Software informiert. Das Angebot richtet sich vor allem an Windows-Nutzer, die sich auf der einen Seite für Freie Software interessieren und diese auch gerne nutzen möchten, den Schritt zu einem komplett freien Betriebssystem wie Linux (noch) nicht waagen möchten.

Der Nutzer soll auf unserer Webseite informationen und vor allem Alternativ-Vorschläge für Software erhalten. Der Umstieg soll dem Nutzer durch erweiterte Informationen sowie Tutorials erleichert werden. Am Rande soll auch über die Beweggründe und Vorteile von Freier Software eingegangen werden. Das Webangebot soll jedoch nicht Belehrend oder gar Aufdringlich wirken sondern schlicht und einfach Alternativen aufzeigen.

Bei diesem Projekt fungiere ich als Teamleiter. Weitere Aufgaben sind die Erstellung und Betreuung eines an das Projekt angelegten Youtube-Channels, welcher die Videotutorials beinhalten soll. Die Integration der Youtube-Videos in unser Webangebot ist ebenfalls meine Aufgabe. Des weiteren werde ich bei der Entwicklung der Programmcodes in PHP behilflich sein.

Aktuelle Ergebnisse kann ich noch nicht präsentieren, da das Projekt noch in seiner Anfangsphase steckt.

more...

DemoRecorder

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.

more...