( This site in
english )
Die Quelle und das Ergebnis dieser Funktionen ist keine Clips, aber andere Variablen, die man im Skript nutzen kann.
Numerische Funktionen:
Floor(float): Konvertiert eine Dezimalzahl in Integer (rundet alle Dezimalstellen ab).
- Beispiele:
- Floor(1.2) = 1
- Floor(1.6) = 1
- Floor(-1.2) = -2
- Floor(-1.6) = -2
Ceil(float): Konvertiert eine Dezimalzahl in Integer (rundet alle Dezimalstellen auf).
- Beispiele:
- Ceil(1.2) = 2.0
- Ceil(1.6) = 2.0
- Ceil(-1.2) = -1
- Ceil(-1.6) = -1
Round(float): Konvertiert eine Dezimalzahl in Integer (rundet alle Dezimalstellen zur n�hesten Integerzahl auf oder ab).
- Beispiele:
- Round(1.2) = 1
- Round(1.6) = 2
- Round(-1.2) = -1
- Round(-1.6) = -2
Sin(float) (v2):
Cos(float) (v2):
Pi() (v2):
Log(float) (v2):
Exp(float) (v2):
Pow(float base, float power) (v2):
Sqrt(float) (v2):
Abs(float / integer) (v2.07): Absoluter Wert eines Integer oder Dezimalzahl.
- Beispiel:
- Abs(-3.8) = 3.8
Sign(float) (v2.07): Gibt das Vorzeichen der Zahl als -1, 0 oder 1 zur�ck.
- Beispiele:
- Sign(-3.5) = -1
- Sign(3.5) = 1
- Sign(0) = 0
Int(float) (v2.07): Konvertiert von Dezimalzahl zu Integer (rundet ab).
- Beispiele:
- Int(1.2) = 1
- Int(1.6) = 1
- Int(-1.2) = -1
- Int(-1.6) = -1
Frac(float) (v2.07): Gibt den entsprechenden Bruch der Dezimalzahl zur�ck.
- Beispiele:
- Frac(3.7) = 0.7
- Frac(-1.8) = -0.8
Float(int) (v2.07): Konvertiert von Integer zu Dezimalzahl.
Value(string) (v2.07): Konvertiert eine Zeichenkette in einen Zahlenwert.
HexValue(string) (v2.07): Gibt den Wert einer hexadezimaler Zeichenkette zur�ck.
- Beispiel:
- HexValue ("FF00") = 65280
Rand([int max] [, bool scale] [, bool seed]) (v2.07):
Gibt eine Zufallszahl als Integer zwischen 0 and dem Maximum zur�ck. Alle Parameter sind optional. max ist der maximale Wert+1 (Standard: 32768) und kann auch negativ sein, wenn man nur negative Zufallszahlen haben will.
Es arbeitet sowohl im normalen als auch modulierten Modus (Standard scale=true, wenn abs(max) > 32768, ansonsten false). Der normale Modus skaliert die internen Zufallszahlen bis zum Maximum, w�hrend der modulierte Modus (scale=false) den Rest einer Ganzzahl, die durch eine Zufallszahl geteilt wurde. Ich finde den modulierten Modus besser f�r kleine max Werte. Nutze seed=true startet den Zufallszahlen-Generator mit der aktuellen Zeit (Standard: false) und ist an sich nicht notwendig (aber was man hat, hat man). Normalerweise wird Rand f�r die Select Funktion genutzt.
- Beispiel:
- Select(Rand(5), clip1, clip2, clip3, clip4, clip5)
Spline(float X, x1, y1, x2, y2, .... [, bool cubic]) (v2.51): Interpolatiert Y am Punkt X unter Verwendung der Kontrollpunkte x1,y1, usw. . Man muss mindestens zwei x/y-Paare angeben. Die Interpolation kann kubisch (das Ergebnis ist dann ein Spline) oder linear (das Ergebnis is ein Polygone) sein.
- Beispiele:
- Spline(5, 0, 0, 10, 10, 20, 0, false) = 5
- Spline(5, 0, 0, 10, 10, 20, 0, true) = 7
String Funktionen:
LCase(string) (v2.07): Gibt die Zeichenkette in Kleinbuchstaben zur�ck.
- Beispiel:
- LCase("AviSynth") = "avisynth"
UCase(string) (v2.07): Gibt die Zeichenkette in Gro�buchstaben zur�ck.
- Beispiel:
- UCase("AviSynth") = "AVISYNTH"
StrLen(string) (v2.07): Gibt die L�nge derZeichenkette zur�ck.
- Beispiel:
- StrLen("AviSynth") = 8
RevStr(string) (v2.07): Gibt die Zeichenkette umgedrehter Reihenfolge zur�ck.
- Beispiel:
- RevStr("AviSynth") = "htnySivA"
LeftStr(string, int) (v2.07): Gibt die ersten int Zeichen zur�ck.
- Beispiel:
- LeftStr("AviSynth", 3) = "Avi"
RightStr(string, int) (v2.07): Gibt die letzten int Zeichen zur�ck.
- Beispiel:
- RightStr("AviSynth", 5) = "Synth"
MidStr(string, int pos [, int length]) (v2.07):
Gibt einen Teil der Zeichenkette zur�ck, der bei pos (f�r den ersten Buchstaben pos=0) beginnt und die angegeben L�nge hat oder bis zum Ende der Zeichenkette.
- Beispiel:
- MidStr("AviSynth", 3, 2) = "iS"
FindStr(string, substring) (v2.07): Gibt den Versatz von substring innerhalb von string zur�ck. Die Suche ber�cksichtigt die Gro�- und Kleinschreibung.
- Beispiel:
- Findstr("AviSynth", "syn") = 4
String(float / int) (v2): Konvertiert eine Zahl in eine Zeichenkette.
- Beispiel:
- Subtitle( "Clip H�he ist" + String(last.height) )
Chr(int) (v2.51): Gibt das ASCII Zeichen zur�ck
- Beispiel:
- Gibt ein Anf�hrungszeichen wieder:
- Chr(34)
Time(string) (v2.51): Gibt eine Zeichenkette mit der aktuellen Systemzeit in einem vorgegeben Format zur�ck. Abk�rzung f�r das Ausgabeformat:
%a K�rzel des Wochentages
%A Volle Name des Wochentages
%b K�rzel des Monats
%B Voller Name des Monats
%c Datum und Zeit im lokalem Format
%d Tag und Monat als Dezimalzahlen (01 - 31)
%H Stunde im 24-Stunden Format (00 - 23)
%I Stunde im 12-Stunden Format (01 - 12)
%j Tag des Jahres als Dezimalzahl (001 - 366)
%m Monat als Dezimalzahl (01 � 12)
%M Minute als Dezimalzahl (00 � 59)
%p Current locale�s A.M./P.M. indicator for 12-hour clock
%S Sekunde als Dezimalzahl (00 � 59)
%U Woche des Jahres als Dezimalzahl mit Sonntag als ersten Wochentag (00 � 53)
%w Wochentag als Dezimalzahl (0 � 6; Sonntag ist 0)
%W Wochentag des Jahres als Dezimalzahl mit Montag ersten Wochentag (00 � 53)
%x Date representation for current locale
%X Time representation for current locale
%y Jahr ohne Jahrhundertangabe als Dezimalzahl (00 � 99)
%Y Jahr mit Jahrhundertangabe als Dezimalzahl
%z, %Z Zeitzonen Name oder K�rzel; es wird nichts zur�ckgegeben, wenn die Zeitzone unbekannt ist
%% Prozent Zeichen
Das # Zeichen kann vor jeden Formatierungs-Code vorangestellt werden. In diesem Fall wird die Deutung des Formatierungs-Codes wie folgt ge�ndert:
%#a, %#A, %#b, %#B, %#p, %#X, %#z, %#Z, %#% # Zeichen werden ignoriert.
%#c Long date and time representation, appropriate for current locale. For example: �Tuesday, March 14, 1995, 12:41:29�.
%#x Long date representation, appropriate to current locale. For example: �Tuesday, March 14, 1995�.
%#d, %#H, %#I, %#j, %#m, %#M, %#S, %#U, %#w, %#W, %#y, %#Y Remove leading zeros (if any).
Funktionen, die die Version �berpr�fen:
VersionNumber() (v2.07): Gibt die AviSynth Versionnummer als Dezimalzahl zur�ck.
- Beispiel:
- VersionNumber() = 2.07
VersionString() (v2.07): Gibt die AviSynth Versionsinformationen als string (die erste Zeile von Version) wieder.
- Beispiel:
- {{VersionString() = "AviSynth 2.08 (avisynth.org) 22 nov. 2002"
Funktionen zum �berpr�fen von Variablen-Typen und Dateien:
IsBool(var)
IsInt(var)
IsFloat(var)
IsString(var)
IsClip(var)
Exist(Dateiname) (v2.07): Gibt true oder false zur�ck, je nachdem ob die Datei existiert oder nicht.
Defined(var): ergibt true, wenn var definiert ist, ansonsten false.
Default(x,d): ergibt x, wenn Defined(x) true ist, ansonsten d.
Hinweis: Defined und Default wurde urspr�nglich entwickelt, um mit optionalen Variablen in benutzerdefinierten Funktionen umzugehen und sollte dort feststellen, ob eine optionale Variable �bergangen wurde. Eine komplett undefinierte Variable erzeugt einen Fehler. Siehe f�r mehr Informationen "Benutzerdefinierte Funktionen" weiter hinten im Text.
- Beispiele:
- Man kann Eval f�r sowas verwenden:
- settings = "352, 288"
- Eval("BicubicResize(" + settings + ")")
- Es kann auch der Inhalt von anderen AviSynth Skripten mit Import importiert werden:
- Import(Dateiname) # verarbeitet den Inhalt von einem anderen AviSynth Skript
- F�r Fehlermeldungen und zum Auffangen von falschen Benutzereingaben kann folgendes verwendet werden:
- Assert(bool, string "Fehlermeldung") # Fehlermeldungen erzeugen
- Es gibt auch eine Funktion, mit der man �berpr�fen kann, ob ein Fehler auftreten WIRD:
- Try {
- AviSource("C:\Dateiname.avi")
- }
- catch(Fehlermeldung) {
- Blackness.Subtitle(Fehlermeldung)
- }
Control Functions:
SetMemoryMax(int) (v2): Setzt die maximale Speichergr�sse, die AviSynth verwendet (in MB). In manchen Versionen ist die Standardgr��e 5MB, was recht wenig ist. Wenn Probleme auftreten (besonders langsame Geschwindigkeit), sollte dieser Wert auf mindestens 32MB gesetzt werden.
SetWorkingDir(string) (v2): Setzt das Standard-Verzeichnis f�r AviSynth (normalerweise sonst das Verzeichnis in dem sich das Skript befindet). Das kann vor allem f�r das einfache Laden von Quell-Clips verwendet werden und hat keinerlei Auswirkung auf das automatische Laden der Plugins. Das Ergebnis ist 0 wenn erfolgreich, sonst -1 (wenn z.B. der Pfad nicht existiert)
Bedingte Operatoren:
[
Variable =]
boolscher Ausdruck ?
wenn wahr, dann Wert oder Operation :
wenn falsch, dann Wert oder Operation
nop() (v2.07): Gibt NULL zur�ck. Wird haupts�chlich f�r bedingte Ausf�hrung wie z.B. Importieren oder wobei kein R�ckgabewert ausgegeben wird.
- Beispiel:
- VersionNumber < 2.07 ? Import("patches.avs") : nop()
Select(index, item0 [,item1...]) (v2.07): Gibt item zur�ck, ausgew�hlt durch index (index=0 -> item0). Items k�nnen beliebige Variablen, Clips oder beides sein. Kann man z.B. mit Rand() als index nutzen, um zuf�llig einen Clip auszuw�hlen.
Benutzerdefinierte Funktionen:
Man kann auch selber Funktionen definieren. Die SkriptGrammatik innerhalb einer Funktion ist diegleiche wie im ganzen Skript. Die Funktion kann einen Clip oder jeden Variablen-Typ wiedergeben. Das Format im Allgemeinen ist wie folgt:
- Funktion Funktionsname([Variablen-Typ Variablenname [,...])
- {
- Funktionsbefehle
- .
- .
- .
- return(Ergebnis)
- }
Geschwungene Klammern m�ssen die Funktionsbefehle einfassen, aber sie k�nnen sich die Zeile mit dem Funktionskopf und / oder dem ersten und letzten Funktionsbefehl teilen.
- Beispiel:
- Eine einzeilige Funktion:
- function rednum(clip c, int "num") { return subtitle(c,string(default(num,0)),text_color=$FF0000) }
Variablen von Funktionen k�nnen optional gemacht werden, indem man Variablenname in Anf�hrungsstriche setzt (z.B. int "num" im obigen Beispiel). Innerhalb der Funktion kannst du auch eine Defined oder Default Funktion angeben, um herauszufinden, ob Variablenname �bergangen und der Standardwert eingesetzt wurde oder ob es die Bearbeitung �ndert. Optionale Parameter kann man auch �ber die Variablenname=Wert Syntax setzen, um andere optionale Parameter zu �bergehen.
- Beispiele:
- Ziemlich gut f�r NTSC->PAL Konvertierungen. Noch besser w�re es mit Smart Bob. :-)
- function NTSC2PAL(clip c) {
- Assert(c.height == 480, "NTSC2PAL: Quell-Clip muss 480 Zeilen haben")
- Bob(c, height=576)
- ChangeFPS(50)
- SeparateFields.SelectEvery(4,0,3)
- return Weave()
- }
- AviSource("Dateiname.avi").NTSC2PAL
Falls du etwas Cooles erstellt, kannst du es unter GesammelteFunktionen ver�ffenlichen.