Nicht eingeloggt
Registrieren

UT2004 FragMovie Guide Part 1



- UT2004 FragMovie Guide -

Recording, Vorgehensweise und Encoding bis zu einem fertigen FragMovie
A Tutorial by Stryke


In diesem Tutorial wird Schritt für Schritt erklärt, wie man Bildmaterial aus UT2004 aufnimmt, wie man dabei vorgeht und wie man das Video am Ende encoded. Es wird nicht erklärt, wie man in Bearbeitungsprogrammen das Video- und Audiomaterial schneidet, oder in irgendeiner Weise bearbeitet. Dies folgt dann irgendwann mit Part 2 des UT2004 FragMovie-Guides.


Mini-Glossar:


Für die Umsetzung des Tutorials werden folgende Programme benötigt:



Am Anfang steht die Planung!

Bevor überhaupt mit der Aufnahme des Videomaterials begonnen wird, müssen die Demos, aus denen die Szenen aufgenommen werden, vorhanden sein. Das ist wohl klar und muss nicht weiter erläutert werden. Abspielen kann man die Demos aus dem UT2004 Menü unter Community -> Demos.
Aufnehmen werden wir nicht mit Fraps, wie das in vielen anderen Tutorials erklärt wird, sondern mit dem Dumpframingverfahren. Da ich als Qualitätsfetischist mir und euch nicht diesen "Bildmatsch" aufzwingen will, den man bei einer Aufnahme mit dem Frapscodec erhält, werden wir diese andere Variante nehmen. Damit will ich nicht sagen, dass Fraps schlecht sei, sondern, dass die Qualität nicht ausreichend ist für unsere Zwecke.

Dumpframing ist das Speichern von jedem Frame in einen Screenshot. Der Vorteil dabei ist, dass wir per Konsolenbefehl die Frameanzahl festlegen können und so eine feste Anzahl von Screenshots haben, die wir nachher mit VirtualDub zusammensetzen können, um so ein flüssiges Bild zu erhalten.
Man kann hierbei ohne Performanceprobleme die Einstellungen von UT2004 auf das Maximum drehen, da ja beim Speichern der einzelnen Frames keine Ruckler mit aufgezeichnet werden.
Der erste Schritt ist also, die Grafikeinstellungen in UT2004 und im Treiber voll aufzudrehen. Dazu gehört auch, Antialiasing (wichtig!) und Anisotrope Filterung jeweils auf das im Treiber maximale (FSAA 8-16x und AF 16x) zu stellen.
Bei einigen Treiberversionen von nvidia Karten muss man darauf achten, dass durch das FSAA die Screenshots nicht verzerrt oder schwarz dargestellt werden. Zur Not den neusten Treiber installieren und bei weiterhin bestehenden Problemen den Renderer von UT2004 auf OpenGL stellen.

Das Erste was man jetzt machen muss, ist sicherzustellen, dass genug Platz auf der Festplatte frei ist, da das Dumpframing verdammt viel Speicherplatz braucht. Die Screenshots werden als BMP gespeichert, was eine unkomprimierte Bilddatei mit entsprechender Größe ist.
Eine kleine Rechnung dazu:

Eine bmp mit 800*600px ist 1.37MB groß.
Bei einer Framerate von 25FPS (PAL Standard) wären das (1.37 * 25 = ) 34.25MB/s
Bei einem Video von 1 Minute wären das 2055MB auf der Festplatte.

Nochmal kurz in einer Tabelle: Da ich wie schon gesagt Qualitäsfetischist bin, wird in diesem Tutorial eine Aufnahme in 1280*720px beschrieben, da diese Auflösung dem HDTV720p Standard entspricht. Diese Auflösung wird auf dem Monitor beim Abspielen der Demo erst Verzerrt sein, auf den Screenshots nachher aber total klar im 16:9 Format anstatt im 4:3 Format dargestellt.

Nachdem auf der Festplatte für genügend Platz gesorgt ist, musst du dich entscheiden, in welcher Auflösung das Fragmovie am Ende entstehen soll. Diese Auflösung stellst du im UT2004 im Menü, in der ini oder per Konsolenbefehl (setres BxH) ein.
Als nächstes musst du vor jeder Aufnahme das HUD so einstellen, wie es im Video zu sehen sein soll. Auf den Screenshots wird nämlich genau das zu sehen sein, was auf deinem Monitor dargstellt wird.

Für weitere Einstellungen und Techniken innerhalb des Abspielens der Demo ist die RypleCam zu empfehlen. Dieses Tool dient der InGame-Bearbeitung einer Kamerafahrt in einer Demo. Die neuste Version gibt es auf der offiziellen Seite www.ryplecam.net, wo man auch Tutorials zur Bedienung findet.

Dann gibt es da noch eine Kleinigkeit, die, der Übersicht halber, vor dem Starten des Dumpframings erledigt werden sollte. Und zwar das Leeren des ScreenShot Ordners von UT2004. Wenn dieser nämlich voll ist, kann man evtl. sehr lange suchen, bis man den Anfang der dumped Frames gefunden hat.

So, nun schreiben wir noch schnell zwei Zeilen in die User.ini, mit deren Hilfe wir das Dumpframing starten und beenden können. Such dir zwei Tasten auf deiner Tastatur aus und schreib diese Befehle dahinter, wie ich das mit den Tasten K und L gemacht habe.

K=fiexdfps 25|dumpframes start
L=dumpframes stop|fixedfps

Wenn man nun die Taste K (oder welche auch immer du dir ausgesucht hast) während des Spiels drückt, wird die Framerate auf 25 festgesetzt und das Dumpframing wird gestartet.
Hierbei wird euer UT2004 auf jeden Fall ruckeln, was aber normal ist, da nun die Datenmengen, die oben in der Tabelle aufgeführt sind auf die Festplatte geschrieben werden müssen. Wenn man die Frames dann nachher wieder zusammenfügt, hat man aber wieder ein flüssiges Bild.
Drückt man nun die Taste L (oder welche auch immer festgelegt wurde), wird das Dumpframing gestoppt und die Framerate-Begrenzung wird wieder aufgehoben.



Wohin mit den ganzen Frames?

Das ist eine gute Frage, die man mit einem Programm beantworten kann: VirtualDub.
Nach der Installation öffnest du VirtualDub und kannst nun unter "File » Open video file" in deinen UT2004\ScreenShot Ordner wechseln, wo du den ersten Screenshot der Szene auswählst. Stelle sicher, dass unten links ein Häkchen bei "Automatically detect and load additional segments" gesetzt ist.


Jetzt erscheint ein Fenster, in dem "Scanning for images" steht. Dies kann je nach Anzahl der Screenshots eine Weile dauern, da VirtualDub jetzt den kompletten Ordner nach *.bmp Files durchsucht, die eine fortlaufende Reihenfolge im Dateinamen aufweisen.
Nachdem VirtualDub damit fertig ist, stellst du unter "Video » Frame Rate..." folgendes ein:


Als nächstes wählst du unter "Video » Compression..." [Uncompressed RGB] aus.


Ich denke es wird an dieser Stelle Zeit für eine Erklärung, warum wir diesen Weg gehen. Es geht hier um die Reihenfolge, in der man bei der Erstellung eines Fragmovies vorgeht.
Als erstes werden alle Szenen des Videos aufgenommen und mit VirtualDub als unkomprimierter Stream in einer AVI gespeichert. Danach wird mit einem Videoschnittprogramm wie Adobe Premiere oder Sony Vegas das Video so zurecht geschnitten, wie es nachher zu sehen sein soll. Als letzter Schritt wird das Video mit Adobe After Effects um Effekte bereichert, sodass es nicht nach einem puren Machinima aussieht.
Während dieses ganzen Prozesses wird das Video immer unkomprimiert gespeichert! Da wir keinen unnötigen Qualitätsverlust haben wollen, bleibt die Qualität des Videostreams unangetastet. Erst gaaaanz am Schluss, wenn alle Bearbeitung des Videos abgeschlossen ist, wird der Videostream encodiert.

So, aber jetzt erstmal zurück zu VirtualDub, wo wir nun nur noch eine Sache überprüfen, und gegebenenfalls einstellen müssen.
Unter "Video" muss ein Punkt bei "Full processing mode" sein und unter "Audio" ein Punkt bei "no Audio", welcher standardmäßig bei "source Audio" steht.
Von der Größe der entstehenden Datei macht es zwar keinen Unterschied, ob "no Audio" ausgewählt ist oder nicht, aber für den weiteren Umgang mit der *.avi-Datei ist es praktischer, wenn im header keine Audiospuren angegeben sind. Es könnte sonst eventuell zu einer falschen Interpretation des AviSynth-Scripts kommen.


Jetzt kann das Video unter "File » Save as AVI..." als unkomprimierter Stream in eine AVI gespeichert werden. Diese AVI wird genau so groß sein, wie die bmp files, die von VirtualDub geöffnet wurden. Es ist als wieder die gleiche Menge Platz auf der Festplatte nötig um die AVI zu speichern.

Während des Speicherns wird ein Fenster mit einem Fortschrittsbalken angezeigt, in dem man unter Anderem die Zeit und die Geschwindigkeit des Encodingvorgangs sehen kann. Die Geschwindigkeit wird in FPS dargestellt und gibt an, wieviele Frames pro Sekunde codiert werden. Der Wert dürfte etwa zwischen 4 und 8 FPS liegen, was stark von der Hardware abhängt.





Von riesiegen AVIs und kleinen Codecs

Zwischen dem letzten Teil des Tutorials und Diesem hier liegt noch ein riesiger Schritt, auf den ich nicht eingegangen bin: Die Video- und Audiobearbeitung mit Programmen wie Sony Vegas und Adobe After Effects.
Der folgende Teil des Tutorials erklärt das Encoding, welches der letzte Schritt bei der Erstellung eines Fragmovies ist. Was ich hier jetzt erkläre, machst du also erst nachdem du dein Fragmovie komplett geschnitten, mit Effekten belegt und bis zum Final-Status bearbeitet hast.
Wenn du eine Beta des Movies schonmal angucken möchtest um zu sehen wie es aussieht, kannst du natürlich schonmal schnell encoden. Dann encodest du aber nicht mit so hoher Qualität, wie du das bei der Final machen würdest, da dieser Vorgang recht viel Zeit in Anspruch nimmt.

Für das Encoding brauchst du das Programm MeGUI, welches du nach dem Download in genau das Verzeichnis entpackst, in dem es später ausgeführt werden soll. Sobald du die megui.exe startest, werden hier nämlich die Pfade angelegt, unter denen die Codecs gespeichert werden.
Nach dem Start wird dir MeGUI vorschlagen upzudaten. Du wählst bei dem Update alles aus und klickst auf Update, woraufhin neben den Codecs und .ddls auch ProfileCollections installiert werden. Bei Letzeren wählst du alle in dem Fenster erscheinenden Profile aus, da Diese quasi alle Voreinstellungen enthalten, die wir brauchen. Da es bei der Einstellung eines Codecs so verdammt viele Möglichkeiten und ein riesiges Spektrum an Funktionen gibt, die teilweise so komplex sind, dass wenn ich sie hier erklären würde, es den Rahmen dieses Tutorials sprengen würde. Deshalb spart es enorm viel Zeit einfach ein voreingestelltes Profil auszuwählen.

Der unkomprimierte Videostream in der AVI wird jetzt in mehreren Schritten verwendet. Als Erstes erstellen wir ein AviSynth-Script, das wie eine Art Zwischenstation einen Teil der Informationen speichert, die für den Encodingvorgang benötigt werden. Danach wird das AviSynth-Script, das ja auf unsere AVI verlinkt, als Source für den Codec gewählt, welcher dann konfiguriert wird. Wenn die Konfiguration abgeschlosen ist, wird das Encoding (also die Aufgabe an MeGUI) in die Queue (Warteschlange) aufgenommen.
Selbiges passiert auch mit dem Audiostream.


Ersellung des AviSynth-Scripts:

Unter "Tools » AviSynth Script Creator" findest du das Tool zum Erstellen des AviSynth-Scripts. Dieses öffnest du und klickst bei "Video Input" auf den [...]-Button, um deine AVI zu öffnen. Jetzt musst du dich kurz gedulden, bis ein Videofenster aufgeht, in dem ein Frame aus der Mitte des Videos zu sehen ist.
Wenn das Video Schwarze Balken oben und unten habe sollte, kannst du diese mit Hilfe der Crop-Funktion entfernen. Wenn du vorher das Pixelverhältnis während der Bearbeitung des Videos verändert haben solltest, kannst du Anamorph Codieren. Du solltest das Pixelverhältnis allerdings nur ändern, wenn du weisst was du tust, da du danach auch das InputDAR einstellen musst.
Solltest du das Video croppen, aktivierst du unter Resize die "Suggest Resolution" Funktion um nicht alles per Hand nachrechnen zu müssen. Mit dem Croppen verändert sich natürlich auch die Auflösung, da du ja Pixel wegscheidest. Trage unter Resize also vor dem Croppen die ursprüngliche Auflösung ein, damit das Video nicht verkleinert wird.


Als nächstes wechselst du zu dem Reiter "Filters", bei dem du als SourceType Progressive, und unter Resize Filter den Lanczos Filter auswählst.


Vergewissere dich noch, dass unter "Edit" in dem Script der Eintrag fps=25 steht und speichere jetzt das Script. Das Fenster wird sich schliessen und es wird erneut eine Videovorschau angezeigt. Schliesse das Vorschaufenster und wähle nun das VideoProfile aus.


Video- und Audioencoding:

Für gute Qualität sind die vier HQ-*** Profile zu empfehlen, also wählst du eines von denen aus, wobei die Qualität mit der Rechenzeit in folgender Reihenfolge steigt: HQ-Slow < HQ-Slower < HQ-Slowest < HQ-Insane
Für einen Betatestlauf empehle ich HQ-Slow mit einem 1Pass Encoding, während für den finalen Render HQ-Slowest recht gut ist.
Du wählst jetzt natürlich noch unter "Video Output" einen Pfad und Dateinamen aus, unter dem du die Videodatei speichern willst.


Nun öffnest du mit einem Click auf "Config" das Konfigurationsmenü für den Codec, in dem du aber nur einen Wert, oder bei einem Betadurchlauf zwei Werte, änderst.
Für den Finalrender stellst du nur die Bitrate ein, die abhängig von deiner Auflösung zu wählen ist.
Als Beispiel: Ich habe eine Auflösung von 1280*640px und wähle 4Mbps.
Diese krumme Auflösung habe ich übrigens durch das cropping der schwarzen Balken erreicht. Ursprünglich hatte ich eine Auflösung von 1280*1024px, wovon ich oben und unten jeweils 192px weggeschnitten habe.
Wenn du eine Auflösung von 800*600px hast, nimmst du entsprechend weniger (ca. 2Mbps - 3Mbps). Die Bitrate ist die Menge an Informationen, die in dem Videostream gespeichert wird und hat folglich direkten Einfluss auf die Bildqualität.
Wenn du nur eine Betaversion renderst, wählst du das Profil HQ-Slow aus und stellst unter Config als Mode "1Pass" anstelle "Automated 2Pass" ein.



Genau so verfährst du mit dem Audiostream, den du einfügst, indem du die WAV unter "Audio Input" auswählst und öffnest.
Hier wählst du als Profile NDAAC-LC-MultiChannel-HQ-320Kbps. Sollte dieses Profil bei dir nicht existieren, wählst du NDAAC-LC-MultiChannel-HQ-256Kbps und änderst unter "Config" die Bitrate zu 320Kbit indem du den Regler ganz nach rechts ziehst.
Wenn du nicht ganz so viel Wert auf die Audioqualität legst, oder deine Source schon eine niedrigere Bitrate hatte, dann kannst du auch eine Bitrate von 224Kbps - 256Kbps wählen.
Wichtig: Du brauchst noch den Nero AAC Encoder, den MeGUI aus lizenztechnischen Gründen nicht per Autoupdate runterladen kann.
Den Codec kannst du auf der offiziellen Seite von Nero Digital runterladen. Die neroAacEnc.exe entpackst du jetzt in das Hauptverzeichnis von MeGUI (Das gleiche Verzeichnis in dem sich auch die megui.exe befindet)
Auch hier musst du, genau wie bei der Videodatei, einen Pfad und einen Dateinamen unter "Audio Output" wählen.


Du kannst mit dem Bitrate Calculator, den du unter "Tools » Bitrate Calculator" findest, eine ungefähre Größe der fertigen Datei, oder eine Bitrate für eine bestimmte Größe ausrechnen lassen. Das ist ganz praktisch, wenn dein Movie nicht größer als eine bestimmte Bytezahl sein soll.


Jetzt, nachdem du alle Einstellungen vorgenommen hast, bleibt nur noch eins: Das Encoden...
Mach dich auf eine hohe CPU-Auslastung für eine lange Zeit gefasst, denn Rendervorgänge wie Video- und AudioEncoding können verdammt lange dauern.
Bei meinem Athlon X2 3800+ hat das Encoden meines Movies (was im übrigen das aufgenommene UT2004 Intro war) ca. 45 Minuten gedauert.
Du klickst im Hauptfenster von MeGUI sowohl bei "Video encoding" als auch bei "Audio" auf den Button "Enqueue" und gehst auf den Reiter "Queue", um dort auf den "Start"-Button zu klicken.

Das Multipexen (muxen): 

Nach dem Encoden hast du jeweils zwei Dateien, die jetzt noch zusammengefügt werden müssen. Das sind einmal die *.mkv mit dem Videostream (oder MP4 wenn du dieses Containerformat ausgewählt hast) und die *.mp4 mit dem Audiostream.
Das Zusammenführen dieser beiden Dateien nennt man Muxen. Auch Dafür hat MeGUI gleich mehrere Tools mitgebracht.
Ich benutze jetzt aus Gewohnheit den MKV Muxer, aber die Anderen funktionieren recht ähnlich. Wenn du also aus irgendeinem Grund kein mkv benutzen willst, kannst du auch MP4 wählen.
Um das gleich vorweg zu nehmen: AVI ist zu alt für AVC Codecs wie x264 und Audiocodecs wie AAC.
Wenn du grauenhafter Weise ( ) AVI benutzen möchtest, dann darfst du nicht als x264 und ND-AAC encoden, sondern musst XviD und MP3 verwenden.
Warum ich das jetzt erst erwähne? Weil ich dich vor diesem Fehler bewahren will!
ASP Codecs wie XviD und Audiocodecs wie MPEG1-Layer 3 (MP3) können dir nie die Qualität leifern, die dir AVC Codecs wie x264 und Audiocodecs wie AAC bieten.
Dies sind die Codecs der Zukunft.

Vergiss aber nicht, überall wo du dein Fragmovie vorstellst, auch das CCCP zu verlinken, damit Diejenigen, die es noch nicht haben, auch die in deinem Video verwendeten Codecs öffnen können.

Du öffnest jetzt also unter "Tools » Muxer » Mkv muxer" den MKV-Multiplexer und trägst hier nun unter "Video Input" die Containerdatei mit deinem Videostream ein und bei "Audio Input" die Containerdatei mit deinem Audiostream.
Bei Video stellst du unter "FPS" noch 25 ein und trägst als "Name" Wahlweise einen Namen für den Videostream, oder einfach gar nichts ein.
Unter "Audio" wählst du als "Language" noch die Sprache aus, die als Streamsprache angezeigt werden soll (wird wahrscheinlich niemals jemand sehen, aber falls doch, sieht's so besser aus ^^) und bei "Name" trägst du genau wie bei "Video" irgendetwas deiner Wahl ein.
Und wenn du bei "Name" Horst und Peter einträgst, wird das eh nur jemand sehen, der die Datei mit einem Programm zum Auslesen der Streaminformationen öffnet.
Sollte dein Audiostream etwas versetzt sein, kannst du unter "Delay" auch noch die Anzahl der Millisekunden angeben, die der Audiostream früher oder später anfängt. Wenn der Stream früher anfängt, setzt du ein - (Minus) vor die Zahl.
Solltest du noch Untertitel oder eine Kapitelaufteilung wie bei einer DVD haben, kannst du Diese unter "Subtitles" und "Chapter" eintragen.
Bei "Output" legst du noch schnell den Pfad und den Dateinamen deiner *.mkv Datei fest und klickst dann auf Queue, um die Multiplexing-Aufgabe in die Warteschlange aufzunehmen.


Sobald du die Warteschlange startest, wird MeGui eine kurze Weile rechnen, und schon hast du dein fertig encodiertes FragMovie (Oder was auch immer du da gerade encoded hast).

Sollten noch Fragen zu diesem Thema offen sein, kannst du diese hier im Hardware/Software-Board stellen.