Stand: 24. August 2013 (Noch im Aufbau) | Die einzelnen Videos zu den entsprechenden Abschnitten kommen im September definitiv jetzt und werden euch Visuel durch das Tutorial führen. Damit ist es euch überlassen, ob ihr euch das anlesen tut hier oder euch das anschauen wollt. ;D
Index
- Einleitung +
Grundlegende Sachen die man Wissen muss (Mathematik bleibt nicht aus) +
Das erste Skript soll ein Intro sein ohne etwas zu laden. - Videos laden, anpassen und ein Bild im Bild erzeugen mit Hilfe von Overlay (Erklärung von Variablen)
- Videos per AVISynth schneiden, croppen und Positionen ansprechen
- Animationen und Alphamasken mittels AVISynth
- Funktionen und ihre Nutzung + If Then Else - Abfragen
Einleitung
So, ein herzliches Willkommen schon mal hier, für das Tutorial zur Videobearbeitung mit AVISynth.
AVISynth wird euch hier im Forum ständig gegen den Kopf geworfen in Zusammenhang mit [lexicon]MeGUI[/lexicon]. Doch was ist dieses AVISynth eigentlich erst mal?
AVISynth ist in erster Linie ein [lexicon]Frameserver[/lexicon] der per Script gesteuert wird. Sogenannte AVS Skripte. Bedeutet das AVISynth keine Grafische Benutzeroberfläche benötigt um eine Videobearbeitung zu realisieren. Zudem ist AVISynth vollkommen kostenlos und kann wie auch schon oft erwähnt im Forum, Sachen machen wo andere kostenpflichtige Programme scheitern.
Warum eigentlich Frameserver? Weil AVISynth mittels der AVS Skripte alle Frames die entweder geladen wurden oder erzeugt wurden von A nach B liefert, damit andere Programme die mit AVISynth zusammenarbeiten diese auch verarbeiten können.
Ich werde euch in diesem Tutorial nicht nur per Video Beispiele und Tricks zeigen, sondern euch auch Skripte hier direkt erklären.
Das wird so in etwa die Tiefe haben für euch, das es für LPer 100% ausreichen wird.
Für das editieren des Scriptes kann jeder Texteditor genommen werden. Ich empfehle euch aber den kostenlosen AvsP Editor mit dem ihr auch gleich eine Vorschau habt und zusätzliche Infos in der Unteren Leiste.
Downloaden könnt ihr den AvsP Editor auf der Hauptseite von AVISynth
Oder den AvsPmod von der Doom9 Seite - Sogar um einiges besser ;D
Grundlegende Sachen die man Wissen muss (Mathematik bleibt nicht aus)
Wer mit AVISynth arbeiten will hat keine Zeitangaben, da das Skript mit Frames arbeitet. Um sich aber nich zu verrennen mit Frames bedient man sich folgender Rechnungen:
Frames / FPS = Time(sek)
Time(sek) * FPS = Frames
Frames / Time(sek) = FPS
Das sollte den Leuten in Elektrotechnik bekannt vorkommen mit Wiederstand, Spannung und Stromstärke. Man könnte es hier genauso machen und es in ein Dreieck stecken
Dann gibt es noch Rechnungen bezüglich der Positionen. Wir haben ein Bild mit x und y Koordinaten. Diese werden in Pixelpositionen angegeben. (Abkürzung px). Dabei ist die Position 0,0 in der oberen linken Ecke und die max x und max y Position an der unteren rechten Ecke.
Bei Zentrierungen für Bild in Bild, Thumbnails, Schriftzeichen etc. muss oft mit dem Mittelwert gerechnet werden. Als Beispiele werde ich das immer an einem 1080p Videos machen. Natürlich sind die Rechnungen alle identisch zu jeder anderen [lexicon]Auflösung[/lexicon].
Um eine Aufnahme so Seitenverhältnismäßig genau zu skalieren bedient man sich wieder einer Rechnung die wie folgt aussieht:
Unser [lexicon]Quellvideo[/lexicon] hat jetzt mal ganz dämliche Werte von 224x400 und wir wollen das auf 1080p hochskalieren.
Also rechnen wir:
(224 * 1080) / 400 = 604,8
Also beträgt die exakte neue [lexicon]Auflösung[/lexicon] 604,8 x 1080 . Da Kommastellen aber unschön sind und meist zu Fehlern führen rundet man am besten auf die nächst gerade Zahl. Hier währe es also 604 x 1080. Ich hab bewusst 604 genommen, da 605 ungerade ist und bei vielen Programmen wie [lexicon]MKV[/lexicon] Merge zu abstürzen führen kann.
Die Rechnung sollte aus der Mathematik bekannt sein indem man den Fehlenden Wert durch ein Kreuzverfahren ermittelt.
224/400 = x/1080 in diesem Fall. Hier wird einfach nach x aufgelöst. ;D
Farbangaben werden Hexadezimal angegeben. Das klingt jetzt komplizierter als es ist. Ihr habt einen bestimmten Farbraum zur Verfügung der durch R G und B bestimmt wird. Diese Werte können für R, G oder auch für B von 0 - 255 gehen.
Um aber Speicher zu sparen haben sich Programmierer damals gedanken gemacht und bedienen sich Hexadezimalzahlen mit der Baisis 16. Um nicht weiter ins Detail zu gehen um euch zu langweilen warum und wieso das so gemacht wird (Weil kann man auf Wikipedia nachlesen wunderschön), hier mal ein Beispiel wie so eine Umrechnung aussieht:
255 / 16 = 15 Rest 15
15 / 16 = 0 Rest15
15 = F
Also FF
235 / 16 = 14 Rest 11
14 / 16 = 0 Rest 14
11 = B
14 = E
Also EB
Immer den Restbetrag von hinten nach vorne lesen um den Wert zu erhalten. Die Farbangabe wird dann durch ein $ Zeichen gekennzeichnet und sieht im Script dann so aus z.B.: $FF0EEB . Also R 255, G 14, B 235
Das wars erst mal zur Grundrechnung die man benötigt in AVISynth. Taschenrechner von Vorteil ;D
Das erste Skript soll ein Intro sein ohne etwas zu laden.
(Video erscheint hier)
Es geht weiter. Und ich werde euch hier selbstverständlich auch noch ein Video dazu machen. ;D
Wir sitzen also vor unserem leeren AVS Script und wollen uns ein Intro erstellen wo ganz simple nur ein Schriftzug eingeblendet und ausgeblendet werden soll. Aber es soll nix geladen werden, sondern einfach komplett neu im Script entstehen.
Dafür brauchen wir erst einmal ein Bild auf das wir arbeiten können. Sozusagen unsere Spielwiese ;D
Hier müssen wir wissen wie groß der Clip werden soll und wievel FPS das ganze haben soll und wie lang der Clip gehen soll. Ich werde das mit 30 Sekunden machen mit 30FPS bei einer [lexicon]Auflösung[/lexicon] von 1920x1080.
Also rechnen wir mit 30 * 30 = 900
Also wird das Video 900 Frames betragen. Das Bild erzeugen wir mit Blankclip wie folgt:
BlankClip(length=900, width=1920, height=1080, fps=30)
Jetzt haben wir schon mal ein leeren schwarzen Clip von 30 Sekunden und 900 Frames.
Die Hintergrundfarbe kann man natürlich ändern, indem man den Befehl mit color erweitert.
BlankClip(length=900, width=1920, height=1080, fps=30, color=$0000FF)
Jetzt haben wir anstatt einer schwarzen Fläche, eine blaue. Die Farbe könnt ihr natürlich bestimmen wie ihr wollt.
Um Fehler zu entgehen durch spätere Video und Sound zusammknüpfungen, legen wir uns hier eine leere Audiospur an für diesen Clip.
Dafür ergänzen wir einfach den Befehl mit Audio_rate
BlankClip(length=900, width=1920, height=1080, fps=30, color=$0000FF, audio_rate=44100)
Jetzt haben wir schon einen Clip mit 900 Frames, eine [lexicon]Auflösung[/lexicon] von 1920x1080, 30 FPS, einer blauen Videofläche wo noch nix drauf ist und eine leere Audiospur erzeugt. Zudem beträgt das Video haargenau unsere 30 Sekunden. Audioinfo ist momentan 44.1Khz Mono mit 8bit.
Jetzt kommt die Schrift hinzu die wir zentriert auf die Fläche haben wollen. Also eröffnen wir eine nächste Zeile mit Subtitle.
Subtitle("Mein erstes AVISynth Video")
Damit wird ein gelber Sub oben in die linke Ecke auf Position 0, 0 geschrieben. Um Untertitel zu positionieren gibt es 9 unterschiedliche Ausrichtungen. Einmal 1 = unten/links, 2 = unten/mitte, 3 = unten/rechts, 4 = mitte/links, 5 = mitte/mitte, 6 = mitte/rechts, 7 = oben/links, 8 = oben/mitte und 9 = oben/rechts
Diese Werte werden in der Funktion align eingetragen, den wir jetzt mal hinzufügen werden:
Subtitle("Mein erstes AVISynth Video", align=5)
Ihr könnt die Position aus selbst bestimmen mit x und y Werten. Wenn ihr das machen solltet, ist eine Ausrichtung mit align total überflüssig. Um das mit x und y Werten an eine bestimmte Position zu setzen macht man folgendes:
Subtitle("Mein erstes AVISynth Video", x= 367, y=654)
So könnt ihr das manuell da hinsetzen wo ihr den Text haben wollt.
Als nächstes kommt das hinzufügen von Farbe, Schriftgröße und Schriftzeichen(Font). Dafür ändern wir wieder unseren Subtitle Befehl wie folgt:
Subtitle("Mein erstes AVISynth Video", font="Comic Sans MS", size=60, text_color=$FFFFFF, align=5)
Hinzugekommen sind die Parameter font, size und text_color
Damit ist unser Schriftzug erst mal fertig soweit.
Der letzte Schritt betrifft das einblenden und ausblenden. Mit einem zweiten Clip hätte man auch ganz einfach eine Überblendung machen können mit dem Befehl Dissolve. Den werd ich im späteren Tutorialverlauf noch verwenden. Hier reichen uns für den Anfang Fadein und Fadeout. Bei der internen Fadein und Fadeoutfunktion wird eine Bildblende gemacht. Bedeutet: Nicht die Subs werden angesprochen bei diesem Befehl, sondern das entsprechende aktuelle Overlay in dem das ganze passiert. (Zu Overlay werd ich auch später noch kommen)
Wir haben unser Hintergrundvideo blau gemacht. Demnach sollten wir, wenn wir nur den Text Effektmäßig ansprechen wollen auch in Blau blenden.
Dazu machen wir eine neue Zeile mit Fadein und Fadeout
Fadein(100, color=$0000FF).Fadeout(100,color=$0000FF)
Damit wird der Text für 100 Frames ein und Ausgeblendet. Also insgesamt 200 Frames. Das passiert am Anfang und am Ende des Gesamt Overlay Clips.
Damit ist das Intro fertig und euer erstes selbst erstelltes Video mit AVISynth. Eine Farbconvertierung seitens [lexicon]MeGUI[/lexicon] sollte automatisch geschehen. Ansonsten setzt man den Befehl ConvertToYV12() noch an letzter Stelle.
Hier noch mal alles im Überblick:
Damit beende ich erst mal das Anfangstutorial und werde die nächsten Tage bestimmt das nächste starten und euch weiter in die Materie einführen ;D
Bis dahin... viel Spaß mit AVISynth