AVIsynth

Aus Colliseum
Version vom 16. Dezember 2014, 16:18 Uhr von Whugemann (Diskussion | Beiträge) (Demoskript zur Veröffentlichung auf den EVU-Seiten hinzugefügt)
Zur Navigation springen Zur Suche springen

Das skriptgesteuerte Programm AVIsynth erlaubt die nahezu beliebige (insbesondere auch nichtlineare) Bearbeitung von Videos unter Windows. Dabei liest AVIsynth das Video ein, führt die im Skript definierten Bearbeitungsschritte durch und reicht einen Strom unkomprimierter Einzelbilder an ein beliebiges Programm – meist VirtualDub – weiter. AVIsynth ist damit ein sogenannter Frameserver. Das Programm läuft (nur) unter Windows und kann von Haus aus nur AVI-Dateien lesen. Über etliche PlugIns und Sonderfunktionen können jedoch nahezu alle anderen Formate (insbesondere MPEG, MOV, Flashvideo) gelesen werden. AVIsynth selbst arbeitet im Hintergrund; es gibt kein Programmfenster; die Ergebnisse der Bearbeitung können nur über ein anderes Programm sichtbar gemacht werden.

Die Funktionsweise von AVIsynth ist im Hugemann: Unfallrekonstruktion im Kapitel "Bild- und Videobearbeitung" beschrieben. Auf der Website zum Buch finden registrierte Benutzer etliche Beispielskripte samt Erläuterungen.

Als Editor für AVIsynth-Skripte ist AvsP das Werkzeug der Wahl. Ein einfaches Skript sieht z.B. etwa folgendermaßen aus:

AVIsource("C:\Test\MeinVideo.avi")
# Halbbilder zu doppelter Framerate auseinanderziehen
BoB()
# Höhen-Breiten-Verhältnis (Aspect-Ratio) auf 4:3 korigieren
LanczosResize(720,540)

Dieses Skript speichert man in einer Textdatei mit der Endung *.AVS und öffnet es anschließend mit VirtualDub.

Zwei Videos synchronisieren und nebeneinander stellen

Radfahrer aus verschiedenen Perspektiven

Im VKU 02/2015 wurde auf der EVU-Doppelseite ein Fall besprochen, bei dem ein Schlangenlinien fahrender Radfahrer aus zwei Perspektiven gefilmt und die Videos synchronisiert und nebeneinander zue einem Video zusammengestellt wurden.

Demo: Synchronisation zweier Videos – erstes Bild

Das dazu notwendige Vorgehen in AVIsynth können wir hier nur im Prinzip verdeutlichen, weil die Videodatein zu groß sind, um sie ins Colliseum zu stellen. Im nachfolgenden Beispiel werden die Videos stattdessen im Skript selbst erzeugt. Kopiert man die folgenden Zeilen in AvsP, so ist das Ergebnis ein Video, das direkt in VirtualDub angezeigt wird:

# Das Skript stellt zwei Videos mit unterschiedlichen Auflösungen
# und unterschiedlichen Frameraten nebeneinander dar
#
# 4 Sekunden Video 720x576 mit 25 fps, Hintergrund rot
BlankClip(width=720, height=576, fps=25, length= 100, color=$FF0000)
RotesVideo=ShowFrameNumber(size=100)
#
# 3 Sekunden Video 720x576 mit 50 fps, hochkant mit blauem Hintergrund
BlankClip(width=576, height=720, fps=50, length= 150, color=$0000FF)
BlauesVideo=ShowFrameNumber(size=100)
#
# Die Framerate des blauen Videos halbieren und die Höhe auf 576 Pixel zuschneiden
# Die Videos starten am Synchronistationspunkt: 
# Blau: Frame 44
# Rot:  Frame 30
Links=SelectEvery(BlauesVideo,2,44).Crop(0,0,-0,576)
Rechts=SelectEvery(RotesVideo,1,30)
#
# Die Videos (mit einem hellgrauen Zwischenstreifen) nebeneinander stellen
StackHorizontal(Links.AddBorders(0,0,32,0,color=$999999),Rechts)