Die Lösung heißt NTFS (New Technology File System) und als AVI nutzen Sie das AVI 2 - Format nach dem OpenDML-Standard. Doch was machen Sie, wenn Betriebssystem und Ihre Anwendersoftware diese Standards nicht unterstützen? Oder was macht man, wenn man generell mit kleinen Video-Projekten (also kleinen AVI-Dateien) arbeitet und auch weiterarbeiten will? Ich selbst z.B. habe einen Film über eine Rundreise verarbeitet. Um das Projekt leichter handhaben zu können, habe ich mir jeden Reisetag einzeln vorgenommen. Am Ende hatte ich acht recht kleine AVI-Segmente in der Größe zwischen 35 MB und 1,5 GB und das, obwohl mein Betriebsystem und mein Rechner problemlos den ganzen Film als einheitliches langes AVI erlaubt hätte. Nun kann man jedes AVI-Segment einzeln durch den Encoder schicken, um daraus jeweils einen MPEG-Stream zu machen. Aber brennt man diese einzelnen MPEG-Files nachher auf eine SVCD oder DVD, so sind "Ruckler" an den Übergängen fast unvermeidlich. Nero- und WinOnCD-User wissen bei den SVCDs ein Lied davon zu singen. Sehen Sie dazu auch die älteren EDV-TIPPs:
Eine
Alternative wäre es, die einzelnen MPEGs vor dem Brennen wieder zusammenzufügen.
Einsetzbar wäre dazu z.B.
Doch Preise zwischen US$1495,- und US $2950,- sind recht viel Geld für den Hobbyfilmer. Und wenn beim Versuch, zwei Files zu verbinden, die Meldung "Can't past" hochkommt, wie bei der Version 3.x
- weil man nur zwei unterschiedliche Bitraten genutzt hat - ist man gut bedient, den Rat des Herstellers anzunehmen, der auf seiner Website den Hinweis gibt "Our editors are not guaranteed to edit all MPEG videos; test compatibility with demo versions of our products before purchase".
Schaut man ins Internet, so werden so
abenteuerliche Problemlösungen wie der MS-DOS-Befehl "Copy /b
file1.mpg+file2.mpg+file3.mpg fileall.mpg" verbreitet (Quelle:
Klar, das gibt ein großes File, aber läuft das auch einwandfrei auf einem DVD-Player? Und weiter gefragt: Kann man bei einem solchen File überhaupt den schnellen Vorlauf ("Seek") des DVD-Players nutzen? Und sind die Ruckler wirklich dadurch beseitigt? Vergessen Sie so Lösungen ganz schnell wieder. Sie haben mit diesem Copy-Befehl nur ein File erzeugt, dass groß ist, aber ansonsten ist das File hinsichtlich der MPEG-Struktur absolut unbrauchbar!
Das Zauberwort dazu heißt "Frameserver". Ein Frameserver ist ein Programm, dass ein
Video bzw. Einzelbilder (also Frames - darum auch Frame-Server) an ein anderes Programm weiterreicht. Wenn Sie so wollen, läuft da ein
Programm im Hintergrund, dass das eigentliche AVI-Ursprungsfile einließt und
einer weiteren Applikation, in unserem Beispiel
Einen sehr leistungsfähigen aber dennoch kostenlosen Frameserver finden wir in Form des
Programms AVISynth
von
Unter
Im Jan. 2003 (bei der Entstehung dieses Tipps) war im Web die Version 2.0.7 von Avisynth verfügbar, die im Gegensatz zur Originalversion von Ben Rudiak-Gould jetzt mit einer kpl. Installationsroutine ausgestattet ist. Nach dem Start der Datei "AviSynth_207.exe" erscheint etwa folgendes Bild:
Auf Wunsch können Sie bei der Installation auch noch eine deutsche Dokumentation auf Ihrer Festplatte installieren:
Ist die Installation abgeschlossen, kommt die Frage nach der Bedienung von "Avisynth". Avisynth ist, wenn Sie so wollen, gleichermaßen eine Scriptsprache und eine Filtersammlung. Die Bedienung selbst ist jedoch etwas kryptisch und für den Laien nicht so einfach zu durchschauen. Details dazu finden Sie in der recht ausführlichen (auch deutschen)
Dokumentation, die zur Installationsroutine gehört und auch unter
http://math.berkeley.edu/~benrg/avisynth-reference.html *). Eine andere
wirklich gute Einsprungadresse zu diesem Thema ist
Wie bei einer Scriptsprache üblich, werden die "Regie"-Anweisungen in ein Script geschrieben - also in eine Textdatei - in unserem Fall, mit der Endung *.avs. Nachstehend will ich Ihnen ein solches Script einmal vorstellen. Ziel dieses Scripts ist es, einige AVI-Dateien miteinander zu verbinden und somit quasi eine einheitliche große Datei an VirtualDub oder TMPGEnc (um nur einmal zwei typische Anwenderprogramme zu benennen) zu übergeben. Avisynth generiert dabei aber keine neue Datei. Es operiert mit einem "fake file", das ist im Prinzip erst mal nur eine Textdatei, die aber von einigen Programmen als AVI interpretiert wird. Die eigentlichen Zielprogramme wie z.B. VirtualDub oder TMPGenc können die Scriptdatei öffnen und behandeln diese wie ein echtes AVI-File. Es macht dabei also keinen Unterschied, ob VirtualDub direkt das Ursprungs-AVI oder die *.AVS-Scriptdatei öffnet und zur Anzeige bringt oder ausführt. Avisynth läuft dann zwischenzeitlich im Hintergrund und generiert in Abhängigkeit von den Scriptanweisungen Video- und Audiodaten und übergibt diese dem Zielprogramm. Mit einem solchen "Frameserving" können wir also den Codieraufwand verringern, da man mehrere Schritte (wie z.B. das Abschneiden von Bildrändern oder die Veränderung von Farbton, Sättigung und Helligkeit) in einem Script vereinen kann. Doch kommen wir zurück zu unserem "Vereinigungs-Script". Mittels eines Texteditors (wie z.B.
UltraEdit-32 von
und speichern diese unter "uniting.avs" (oder einem anderen beliebigen Namen) ab. Achtung! Sie sollten zur Erstellung nur einen Editor benutzen, der keine Steuerzeichen generiert und sollte er die Datei nur im Textformat *.txt abspeichern können, so müssen Sie das File nachher in *.avs umbenennen. Dabei ist "dv01.avi" jetzt in unserem Beispiel die Datei, die wir eigentlich sehen bzw. weiterreichen wollen. (Passen Sie Ihren Path entsprechend an.) Der eigentliche Befehl heißt im Prinzip soviel wie, nehme die Datei "dv01.avi" und bringe sie zur Anzeige. Wir fangen bewusst mit nur einem AVI an, um die Darstellung zu testen. Im nächsten Schritt nehmen wir die Datei uniting.avs" und öffnen diese mit VirtualDub. (File / Open video File).
Im Normalfall sollten Sie jetzt Ihr File via Avisynth abspielen können. In meinem Fall kam leider folgende Fehlermeldung:
Avisynth konnte das File leider nicht öffnen. Wenn AVISource("J:\dv01.avi") versagt, ist der alternative Befehl "DirectShowSource" angesagt.
Wir nutzen also zum Laden nun die
DirectShow-Filter, wie sie auch der Windows Mediaplayer nutzt. Im EDV-TIPP
Nun konnte ich problemlos das AVI zur Anzeige bringen:
Doch leider ohne Ton. Schaut man sich in VirtualDub (über den Menüpunkt "File" / "File Information") das File an, so kann man ersehen, dass alle Audio-Informationen leer sind.
Wo war die Ursache für das Problem? Die Quelldatei ist ein DV-AVI, das als Type-1 mittels MainConcept DV Codec 2.04 erstellt wurde. Und ich konnte machen was ich wollte, keine der Avisynth-Einstellungen (AVISource, OpenDMLSource oder DirectShowSource) erlaubte es mir, das File kpl. mit Bild und Ton anzuzeigen. Wo der Unterschied von Type1- und Type2-Videos
liegt, habe ich im EDV-TIPP
Will man ein solches Type1-File ohne Avisynth in VirtualDub laden, so bekommt man schon sehr früh den Hinweis auf eine Inkompatibilität.
Was war also zu tun? Im Prinzip habe ich es mir ganz einfach gemacht und gar nicht lange nach den Ursachen geforscht. Ich habe meine Type1-Videos (die mit Ulead MSP 6.x entstanden sind) einfach in Type2-Videos umgewandelt. Mit einem bei Ulead frei verfügbaren
Und siehe da, sowohl VirtualDub als auch Avisynth hatten mit diesem Format keinerlei Probleme mehr:
Dabei arbeite ich persönlich am liebsten mit Variablen, wie man sie auch von höheren Programmiersprachen kennt. Um das hier etwas zu vereinfachen, habe ich den Variablen "a" bis "g" jeweils ein AVI-Segment zugeordnet. Sie können aber auch irgendwelche andere Variablen wie z.B. "v1" oder "Film1" nehmen. Und im zweiten Schritt habe ich die einzelnen Filmsegmente mit der Anweisung "a+b+c+d+e+f+g" verknüpft. Das fertige Script sieht damit so aus.
Der Vorteil dieser Programmierung liegt darin, dass Sie die Reihenfolge jederzeit ändern können. Wenn "e" z.B. vor "c" ablaufen soll, so verknüpfen Sie einfach so:
Wenn die Reihenfolge der AVIs allerdings durch den File-Namen bestimmt ist, können Sie aber auch mit einer "Segmentierung" arbeiten. Dazu benennen Sie Ihre AVIs etwa wie folgt:
Ist Ihr Script nun fertig, prüfen Sie es einfach wieder mit VirtualDub.
Läuft es dort einwandfrei, so gehen Sie den nächsten Schritt und übergeben Sie
Ihr Datei
Dazu öffnen wir wie üblich unser virtuelles AVI-File in Form unserer Datei "uniting.avs".
Leider wird TMPGenc unsere *.avs-Erweiterung vermutlich nicht auf Anhieb als "Compressible video source" erkennen. Sie können zwar den Dateityp auf "All files *.*" ändern, doch löst das unser Problem nur teilweise. Wir müssen die Erweiterung "AVS" der TMPGEnc-Applikation also erst bekannt machen. Dies geschieht über das VFAPI-Plugin "Readavs.dll". Diese kleine DLL-Datei finden wir unter http://math.berkeley.edu/~benrg/avisynth-apps.html *). Hier ist unter TMPGEnc (noch eine alte Version) eine DLL aufgeführt, die Sie unter dem Namen "tmpgenc-readavs.zip" herunterladen können. Keine Sorge, die DLL läuft auch auf den neueren TMPGEnc-Versionen. Entpacken Sie diese Datei und kopieren Sie das ReadAVS.dll-File in Ihr TMPGEnc-Verzeichnis. Schauen Sie sich dann mit einem Editor die Datei "ReadAVS.reg" an und ändern Sie die dortige Pfadangabe von:
in:
Haben Sie die Änderung gemacht, so speichern Sie die Datei wieder ab und doppelklicken Sie sie. Sie bekommen nun etwa folgendes Fenster, das Sie mit "Ja" bestätigen.
Ihr nächster Versuch eine AVS-Datei mit TMPGEnc zu öffnen, wird nun problemlos ablaufen:
Das Registrieren der "ReadAVS.dll"
hat einen weiteren Vorteil. Sie können nun in TMPGEnc auch die notwendigen
Prioritäten (sofern notwendig) für das Ausführen der Applikation vergeben (rechte Maustaste):
Ja, Sie haben recht. TMPGEnc kann seit der Version 2.59.x (wie auch viele andere Encoder) segmentierte Files einlesen, sofern in der Karteikarte "Enviromental setting" / "General" der Haken an "Open sequence files as a movie" gesetzt wurde.
Damit können Sie recht problemlos segmentierte gleichartige AVI-Files einlesen. Übrigens, für Canopus DV Files funktionierte diese Funktion auch in früheren Versionen. Die Betonung liegt hier auf "gleichartig". Weichen die Files hinsichtlich ihrer AVI-Struktur voneinander ab, so wird der Prozess bei dem andersartigen File abgebrochen.
So ist es z.B. möglich, ein solches virtuelles Avisynth-File auch an
Dass dann problemlos zu einem MPEG-Stream verarbeitet wird.
Sollten Sie einmal Probleme haben, in
einer bestimmten AVI-Applikation eine AVS-Datei zu öffnen, so gibt es einen kleinen
Umweg. (Der
Hori Hiroyuki, der Entwickler vom TMPGEnc, hat ein
kleines Tool mit dem Namen "VFAPI Reader Codec" geschrieben, das es nicht
nur in einer
Was macht nun das Programm "VFAPI Reader Codec"? Es "wrapped" die AVS-Datei (umhüllt die AVS-Datei also mit einem "Schutzumschlag"). Es generiert -vereinfacht gesagt- aus unserem *.avs-File ein "virtuelles AVI". Dabei macht es kein klassisches AVI im eigentlichen Sinne, sondern es "verpackt" die Informationen aus der AVS-Datei nur so, dass sie leichter als AVI verstanden werden. Das *.avs wird dabei ein *.avi. Übrigens, wird die Ton-Spur unseres Ursprungs-AVIs kpl. in das neue virtuelle AVI geschrieben. VirtualDub-User sollten bei der Anwendung des Programms darauf achten, dass der "AVIFile handler" nicht im Proxy-Modus läuft. Details zum "AVIFile handler" sehen Sie unter
Der Proxymodus wird durch das Starten der Datei "proxyoff.reg" im VirtualDub-Unterverzeichnis "AVIPROXY" abgeschaltet. (und durch "proxon.reg" wieder eingeschaltet). Bei Problemen kann es ggf. auch sinnvoll sein, den kpl. "VirtualDub-Frameclient support" kurzfristig zu deinstallieren und nach der Umwandlung wieder einzuschalten (Versuch macht "kluch"....;-)
Nach dieser Vorbereitung können wir nun den "VFAPI Reader Codec" aktivieren: Doppelklicken Sie zuerst die mitgelieferte Batchdatei "vifpset.bat" und danach starten Sie das eigentliche Programm "VFAPIConvEN.exe". Unter Windows XP ist das Programm hinsichtlich der Darstellung zwar etwa "buggy", aber es arbeitet im übrigen einwandfrei.
Über "Add Job" öffnet sich ein Fenster, über das wir unsere bereits bekannte Datei "uniting.avs" aufrufen können.
Nach einem Klick auf den Button "Öffnen" kommt folgendes Fenster hoch:
Definieren Sie das Ausgangsfile und lassen Sie die Optionen unverändert. Klicken Sie nun auf "Run" und warten Sie bis der Export-Vorgang abgeschlossen ist:
Das so entstandene AVI-File sollte sich nun problemlos in allen anderen Programmen nutzen lassen.
Doch zurück zu Avisynth: Es gibt übrigens auch die Möglichkeit, Avisynth z.B. als Frameserver direkt aus einem Schnittprogramm wie Premiere heraus laufen zu lassen. Damit ist die direkte Übergabe (die Spezialisten sagen dazu "piping") z.B. in Richtung TMPGenc möglich, ohne das kpl. Projekt neu "rendern" zu müssen. Große AVI-Ausgabe-Dateien, die die Festplatte unnötig belasten, werden so vermieden. Auf der Webseite
Eine neuere (aber kostenpflichtige) Version finden Sie (zur Zeit) als "Premiere Video Server Plugin
v0.951 + client.dll" bei Edwin van Eggelen unter
Nun ist die Bedienung von AVISynth, wie gesagt, etwas kryptisch. Findige Programmierer haben deshalb versucht die Scriptsprache mittels einer grafischen Benutzeroberfläche (GUI) umzusetzen. Die meiner Meinung nach technisch beste Version, ist von "Darksoul". Ich selbst habe die Version 1.8 ergattert und getestet und muss sagen, für die meisten Fälle des "täglichen Lebens" ist sie perfekt:
Nach Info des Autors fehlt zwar noch eine Dokumentation, aber das ist wirklich zu verschmerzen, denn das Programm erklärt sich fast selbst. Leider ist das Tool vollkommen aus dem Internet verschwunden - schade (update-info 15.02.04). Wer will, kann sich das - mit ein paar Mausklicks generierte - fertige AVS-Script in einem eigenen Fenster ansehen:
Und wenn erforderlich, noch per Hand ergänzen und erneut abspeichern. In der aktuellen Fassung werden für die "DVD-Ripper" wichtige Plugins aus dem
Rippack von
Solche Anwenderprogramme zeigen jedoch wieder mal, dass die "Ripper-Szene" viele - auch für den Hobbyfilmer sehr wichtige - Tools bereithält!
Ein alternativer Frameserver ist
Nun habe ich weiter oben schon darauf hingewiesen, dass Avisynth nicht nur
als Framserver arbeitet, sondern auch eine Vielzahl von Bearbeitungs- und
Und gerade die Filtermöglichkeiten sind hervorzuheben. Avisynth filtert, also verändert, Ursprungfiles mit einer Geschwindigkeit wie fast kein anderes Programm. Finden Sie in den Weiten des Internets allerdings nicht den Filter, den Sie brauchen, oder nutzen Sie leidenschaftlich VirtualDub-Filter, so können Sie problemlos auch zwei Frameserver hintereinander schalten. Laden Sie doch einfach mal Ihr "User.avs", also Ihr Avisynth-Script in
VirtualDub, der ebenfalls einen Frameserver bereitstellt - sofern der
Stellen Sie dort den Filter Ihrer Wünsche ein:
Klicken Sie im nächsten Fenster auf den Button "Add". Suchen Sie sich im folgenden Fenster die Filterfunktion aus, die Ihre Wünsche erfüllt:
Ich will für Demozwecke hier mal das Bild um 180 Grad drehen. Bestätigen Sie nun zweimal mit OK und starten Sie dann den Framserver:
Details für die Vorbereitung der Funktion finden Sie unter:
Quittieren Sie das folgende Fenster mit einem Klick auf Start:
Sie werden nun gefragt unter welchem Dateinamen Sie den Aufruf abspeichern wollen.
Ich habe hier "test.vdr" (Endung *.vdr nicht vergessen) gewählt. Danach erscheint folgendes Fenster:
Lassen Sie dieses Fenster so stehen, wie es steht und starten Sie nun TMPGEnc und lesen Sie die Datei "test.vdr" ein:
Hier sehen Sie bereits, dass das kpl. Videobild um 180 Grad gedreht ist. Encodieren Sie es wie gewohnt ins MPEG-Format und schließen erst dann den VirtualDub-Frameserver wieder. Schauen Sie sich um Internet einmal nach für Sie geeigneten Filtern um. Sie
finden für fast alle Problemstellungen einen entsprechenden Filter. Eine gute
erste Adresse ist
Egal, ob Sie ein Logo aus dem Bild entfernen wollen oder das Bild weicher zeichnen möchten - für alles gibt es die richtigen Filter. Nutzen Sie also ruhig mal einen Framserver. Mit ihm können Sie nicht nur AVIs verbinden. ;-)
Weiterführende bzw. ergänzende Links:
Zum Thema Haftung für Links sehen Sie bitte meinen entsprechenden
| ||||||||||||||||||