AviSynth - wie richtig layern mit alpha

powerfx

Admiral
Registriert
Apr. 2009
Beiträge
9.351
Buona sera,

eine wahrscheinlich sehr einfache Frage an die AviSynth-Profis hier.

Ich möchte über ein ganz normales AVI ein zweites mit weißem Text auf schwarzem Hintergrund legen und dabei schwarz quasi als Alpha-Kanal definieren.

Eigentlich geht das schon fast komplett mit
Code:
bg = AviSource("background.avi").ConvertToRGB32()
top = AviSource("top.avi").ConvertToRGB32()
return Layer(bg, top, "lighten")
Allerdings springt "top.avi" immer hin und her und flackert auch sonst gelegentlich.

Gibt es eine bessere Lösung dafür?

Wäre sehr dankbar.
 
Code:
LoadPlugin("C:\Programme\megui\tools\ffms\ffms2.dll")
#deinterlace
#crop
#denoise
movie = FFVideoSource("d:\XVideos\NFS4_TRN_12_04_11\NFS4_TRN_12_04_11.avi").AssumeFPS(30.000)
logo = ImageSource("d:\Eigene Daten\cooltext516692378.bmp",0,0,movie.Framerate()).Loop(movie.Framecount())
Overlay(movie,logo,x=614,y=913,opacity=1.0,mode="Luma")

So geht es mit Wasserzeichen zumindest.

FFVideoSource und ImageSource kannste ja beide mit AVISource ersetzen. Vllt meckert er ja nicht. :)

und mode eben auch umändern auf deins.

Wenns nicht hinhaut, vllt mal hier fragen

http://forum.gleitz.info/

Dann kriegste ganz sicher eine gescheite Antwort :)
 
Zuletzt bearbeitet:
"Overlay" ist das Stichwort. Danke. Ich bin immer bei "Layer" gelandet.

Das Flackern bekomme ich übrigens mit "DirectShowSource" weg.
Ein Problem ist nur noch das die dunkelblaue Umrandung des Textes manchmal vom Hintergrund verschluckt wird (wegen "lighten"). Ich versuche das mal mit einer Maske.
 
Ja, solange es funktioniert, ist es ja egal. Wenn's nicht mehr funktioniert, dann. :)

Ich habe jetzt eine ganz einfache Lösung, da AviSynth bereits alles dafür an Bord hat.
Also falls jemand mal was ähnliches sucht:
Code:
top = DirectShowSource("top.avi").ConvertToRGB32()
transparent = resetmask(top).colorkeymask($000000, 10)
bg = DirectShowSource("background.avi").ConvertToRGB32()
Layer(bg, transparent)
(Statt "DirectShowSource" kann man nehmen, was einem besser gefällt.)

"top" ist hier das Video mit dem Text, was die obere Ebene darstellen soll. Daraus wird schwarz ("000000", übrigens default) durch Transparenz ersetzt und auf das Video im Hintergrund (bg) gelegt.
"10" ist die Abweichungstoleranz.
Zum Überlagern kann man hier auch wieder "Layer" verwenden. Das reicht aus.
 
Müssen diese Farbkonvertierungen dabei wirklich sein?

Wäre schön wenn man das vermeiden kann.
 
Welche Konvertierungen? "ConvertToRGB32"?
Bei mir ist es relativ egal, da es sowieso schon RGB32 ist (beide Videos synthetisch erzeugt).

Ansonsten müsste man das ausprobieren, da du aber mit "ColorKeyMask" einen RGB-Farbraum adressierst, glaube ich nicht, dass es anders funktionieren wird.
Du müsstest dann eben eigene Masken für YUV (oder was immer du haben möchtest) erzeugen. Das ist komplizierter, da es wahrscheinlich keine fertigen Funktionen gibt.
 
Zuletzt bearbeitet:
Naja ich brauchs eh nicht. Mir reicht das Wasserzeichen, da gehts eben mit Overlay.

Wenn dein Material eh schon in RGB32 ist dürfte aber eig. auch der ConvertToRGB32 Anhängsel überflüssig sein, oder?^^

Ja für Fraps z.B. braucht man YUY2 Farbbereich (oder eben YV12 würde auch gehen, da x264 auf YV12 ändert.)
Lossless RGB haken bei Fraps rein machen wenn ich in 2048x1152 aufnehme, kommt nicht so gut, ruckelt dann^^
 
Zurück
Oben