Home
RecentChanges

Search:

» AviSynth is a powerful video FrameServer for Win32.

AviSynth Links:
»Download
»Learn to script
»FAQ
»Manual
»Discussion fora
»Project page
»External filters
»FeedBack

» You can add pages to this website immediately. No login required.
Edit this document

» AboutAviSynth

 

Avisynth 
Logo

SkriptFunktionen

( This site in flag-uk.gif 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.

Zurück zum AviSynthHandbuch

SourceForge Logo

 


Edit this document | View document history
Document last modified Mon, 01 Dec 2003 11:16:54