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

ConditionalFilter Deutsch

( This site in flag-uk.gif english )

ConditionalFilter

ConditionalFilter(clip "testclip", clip "source1", clip "source2", string "filter", string "operator", string "value", bool "show")

ConditionalFilter gibt source1 zur�ck, wenn die Bedingung, die durch filter+operator+value angegeben ist, zutrifft. Andernfalls wird source2 zur�ckgegeben. Wenn filter nicht ausdr�cklich auf einen Clip angewendet wird, so wird der auf den testclip angewendet. Der Ton wird source1 entnommen.

Beispiel:

Es werden Frames von "vid_blur" genommen, wenn der durchschnittliche Helligkeitswert eines Frames unter 20 ist. Ansonsten wird der Original-Frame "vid" genommen. Wenn man am Ende "true" hinzuf�gt, werden der aktuelle Wert angezeigt:

vid = AviSource("Dateiname.avi")

vid_blur = vid.Blur(1.5)

ConditionalFilter(vid, vid_blur, vid, "AverageLuma()", "lessthan", "20")

Mit filter kann jeder interner Filter sein, aber auch einige vordefinierte Funktionen (siehe unten).

F�r operator kann man "equals", "morethan" oder "lessthan" w�hlen. Oder nat�rlich stellvertretend "=", ">" oder "<".

Die internen Funktionen (bis jetzt) sind:

  • AverageLuma(clip)
  • AverageChromaU(clip)
  • AverageChromaV(clip)
Dies gibt den durchschnittlichen Wert des Pixels einer Ebene (Kanal) zur�ck. (Erfordert YV12 und IntegerSSE).
  • RGBDifference(clip1, clip2)
  • LumaDifference(clip1, clip2)
  • ChromaUDifference(clip1, clip2)
  • ChromaUDifference(clip1, clip2)
Diese Funktionen geben als Dezimalzahl zwischen 0 und 255 die absolute Differenz zwei Ebenen (Kan�len) zur�ck. (Erfordert YV12 und IntegerSSE).

Diese Funktionen beziehen sich immer auf "last". Da man diesen Parameter nicht spezifizieren braucht, wurde er durch den Testclip ersetzt.

Andere interne Funktionen sind:

  • RGBDifferenceFromPrevious(clip)
  • YDifferenceFromPrevious(clip)
  • UDifferenceFromPrevious(clip)
  • VDifferenceFromPrevious(clip)
  • RGBDifferenceToNext(clip)
  • YDifferenceToNext(clip)
  • UDifferenceToNext(clip)
  • VDifferenceToNext(clip)

Diese Funktionen sollte recht nett sein, wenn man Szenenwechsel erkennen will:

Beispiel:

Es wird der letzte Frame vor einem Szenenwechsel durch den ersten Frame nach dem Szenenwechsel ersetzt:

ConditionalFilter(last, last, last.trim(1,0), "YDifferenceToNext?()", ">", "10", true)

Weitere interne Funktionen:

  • YPlaneMax(clip, float threshold)
  • UPlaneMax(clip, float threshold)
  • VPlaneMax(clip, float threshold)
  • YPlaneMin(clip, float threshold)
  • UPlaneMin(clip, float threshold)
  • VPlaneMin(clip, float threshold)
  • YPlaneMedian(clip)
  • UPlaneMedian(clip)
  • VPlaneMedian(clip)
  • YPlaneMinMaxDifference(clip, float threshold)
  • UPlaneMinMaxDifference(clip, float threshold)
  • VPlaneMinMaxDifference(clip, float threshold)

Threshold ist das Verh�ltnis, wieviel Prozent an Pixeln sind �ber oder unter dem Minimum erlaubt sind. Der Schwellenwert ist optional und standardm��ig 0.


ScriptClip

ScriptClip(clip "clip", string "function", bool "show")

ScriptClip gibt den Clip zur�ck, der von der Funktion f�r jeden Frame ausgew�hlt wurde.

Beispiele:

Dies zeigt den Unterschied zwischen gegen�ber den vorherigen Frame im aktuellen Frame an:

clip = AviSource("C:\Dateiname.avi")

ScriptClip(clip, "Subtitle(String(YDifferenceFromPrevious?))")

Hier wird Blur auf jeden Frame angewendet entsprechend dem Unterschied zum vorherigen Frame. Au�erdem zeigt es, wie Fehler angezeigt werden bei manchen Frames :)

clip = AviSource("C:\Dateiname.avi")

ScriptClip(clip, "Blur(YDifferenceFromPrevious?/20.0)")

Dies wendet TemporalSoften in sehr ruhigen Szenen und Blur mit variablen Parametern in bewegten Szenen an. Wir weisen auch eine Variable zu, weshalb es einen Zeilensprung gibt:

function fmin(float "f1", float "f2") {

return (f1<f2) ? f1 : f2

}

clip = AviSource("C:\Dateiname.avi")

ScriptClip(clip, "diff = YDifferenceToNext?()"+chr(13)+"diff > 2.5 ? Blur(fmin(diff/20,1.5)) : TemporalSoften(2,7,7,3,2)")

Beschr�nkungen: Das Ergebnis des Skriptes MUSS exakt die gleichen Eigenschaften (Farbraum, Breite und H�he) haben wie der Clip, den ScriptClip bekommen hat. Das Ergebnis kann eine andere L�nge haben, aber mindestens die des Quellclips. Der Ton eines Clips wird unver�ndert durchgeschleift. Bei zwei unterschiedlichen Quellen (z.B. Mpeg2Dec3 und AviSource) kann es zu Problemen mit dem Farbr�umen kommen - ein beliebter Fehler.


FrameEvaluate

FrameEvaluate(clip "clip", script "function" [,bool after_frame])

�hnlich wie ScriptClip, au�er dass das Ergebnis des Filters ignoriert wird. Kann dazu genutzt werden, um Variablen usw. zuzuweisen. Die Frames werden direkt durchgeschleift.

Seit AviSynth v2.53 gibt es die after_frame Option. Diese gibt an, ob das Skript, bevor (Standard) oder nachdem der Frame von den obigen Filtern geholt wurde, ausgewertet werden soll.

SourceForge Logo

 


Edit this document | View document history
Document last modified Thu, 14 Aug 2003 01:46:27