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

Convert Deutsch

( This site in flag-uk.gif english )

ConvertBackToYUY2(clip)

ConvertToRGB(clip)

ConvertToRGB24(clip)

ConvertToRGB24(clip, bool "interlaced")

ConvertToRGB32(clip)

ConvertToRGB32(clip, bool "interlaced")

ConvertToYUY2(clip)

ConvertToYUY2(clip, bool "interlaced")

ConvertToYV12(clip)

ConvertToYV12(clip, bool "interlaced")

Vor AviSynth v2.5 konnte AviSynth intern nur mit zwei Farbräumen umgehen, RGB und YUY2. Seit AviSynth v2.5 beherrscht AviSynth nun auch einen dritten Farbraum, YV12. Diese Filter konvertieren einen Farbraum in einen anderen. Wenn das Video bereits in dem angegebenen Format vorliegt, wird es unverändert durchgeschleift (mit RGB ist in dieser Dokumentation RGBA gemeint). ConvertToRGB konvertiert zu RGB32, es sei denn, der Clip ist RGB24. Falls du unbedingt 24-Bit RGB brauchst, nutze explizit ConvertToRGB24 und ConvertToRGB32 für die Rücktransformation.

Seit AviSynth v2.51/v2.52 wurde ein optionaler interlaced Parameter hinzugefügt (Standard: interlaced=false). Wenn dieser auf false steht, bedeutet dies, dass der Clip progressiv ist, wenn der Parameter auf true steht, bedeutet dies, dass der Clip interlaced ist. Diese Option wurde hinzugefügt, weil z.B. (angenommen der Clip ist interlaced YV12):

SeparateFields(clip)

ConvertToYV12

Weave

das Upsampling nicht korrekt ist. Stattdessen sollte man besser verwenden:

ConvertToYV12(clip, interlaced=true)

Alle VirtualDub-Filter (geladen mit LoadVirtualDubPlugin) arbeiten nur mit RGB32.

RGB24, RGB32: Die Farben werden als Werte von Rot, Grün und Blau gespeichert. In RGB32 gibt es noch zusätzlich einen Alpha Kanal für Transparenz. Die Bildauflösung kann beliebige Werte annehmen.

YUY2: Das Bild wird als ein Helligkeitswert (luma) Y und zwei Farbwerte (chroma) U und V gespeichert. Für zwei horizontal nebeneinander liegenden Pixel gibt es nur einen Farbpaar und zwei Helligkeitswerte (zwei Y's, ein U, ein V). Daher muss die Breite ein Vielfaches von 2 sein.

YV12: Hier gilt das gleiche wie bei YUY2, allerdings gibt es nur noch einen Farbpaar für 4 Pixel (ein 2x2 Quadrat). Beide Bildabmessungen müssen daher ein Vielfaches von 2 sein, falls das Video interlaced ist, muss die Höhe sogar ein Vielfaches 4 sein, da man das 2x2 Quadrat aus einem Feld und nicht aus einem Frame nimmt.

Manche Funktionen überprüfen die Bestimmungen für die Bildabmessungen, manche runden die Parameter, und es gibt noch manche, wo zu einer Bildverzerrung kommt oder eine Fehler ausgegeben wird.

Das Arbeiten in YUY2 ist schneller als in RGB. Und YV12 ist noch schneller und ist das offizielle MPEG Format, so dass man wenig Farbraumkonvertierungen braucht.

Umwandlungen zwischen den Formaten sind nicht ganz verlustfrei, daher sollte man so wenig Umwandlungen als möglich verwenden. Wenn mehrere Umwandlungen notwendig sind, sollte man ConvertBackToYUY2 verwenden, falls die Quelle schon in YUY2 vorlag. Dadurch wird ein Verwischen der Farben vermindert, es leidet aber immer noch die Genauigkeit.

In vielen Fällen ist der ConvertToRGB Filter nicht notwendig. Wenn AviSynth das Video im YUY2 Farbraum ausgibt und eine Anwendung RGB benötigt, wird das Betriebssystem den installierten YUY2 Codec für die Konvertierung nutzen. Wenn aber kein YUY2 Codec installiert ist oder wenn (wie bei ATI's und einigen anderen YUY2 Codecs) der Codec falsch von YUY2 nach RGB konvertiert, sollte man die AviSynth eigenen Filter zum Konvertieren nutzen.

ConvertToRGB24 und ConvertToRGB32 erzwingen ein bestimmtes RGB-Format. RGB24 ist meistens langsamer als RGB32. Falls also die Quelle RGB24 ist, sollte man nach RGB32 konvertieren, da dies schneller ist. Der einzige Grund, RGB24 zu verwenden, können Kompatibilitätsprobleme bei manchen Anwendungen (z.B. TMPGEnc) sein.

HuffYUV wird als YUY2-Codec verwendet, wenn kein anderer installiert ist. Falls du also HuffYUV installierst und alle anderen YUV2 Codecs deinstallierst, wirst du nie ConvertToRGB gebrauchen.

Beispiele:

Es gibt eine leichte Bildverzerrung durch die Konvertierung zwischen YUV und RGB.

Mal gucken, ob du sie sehen kannst:

control = ConvertToYUY2()

test = ConvertToYUY2(ConvertToRGB(ConvertToYUY2(ConvertToRGB(control))))

test = ConvertToYUY2(ConvertToRGB(test))

return Subtract(test,control)

SourceForge Logo

 


Edit this document | View document history
Document last modified Wed, 06 Aug 2003 03:47:03