vctrans plugin for vapoursynth version r24, is free and the author does not give any guarentee for its operation. It may be downloaded and used at the users risk.
vctrans has a number of functions for various types of transitions. This is used for smoothly and with a selected style perform transition from clip A to clip B over a specified length of overlap: All these functions are improved or modified versions of TransAll plugin for avisynth and are ported with suitable changes from the original avisynth plugins TransAll
.The plugin requires that both the input clips A and B have constant identical formats. The time in seconds of overlap is the third parameter for all the functions. Additional parameters depending on the transition function selected may be specified. The clips must be at least one frame longer than overlap duration. Several transitions may come out better with longer overlap duration than the default value. The functions included in this plugin are listed below. Clicking on any of them will open its desription
import vapoursynth as vs core = vs.get_core() # need to add matrix also for conversion RGB to YUV #frmt = vs.YUV444P8 frmt = vs.RGB24 time = 2.0 core.std.LoadPlugin(path=r'c:\....\vctrans.dll') # using two photos as input. Use any two of yours imga = core.imwri.Read([ "c:\images\snapshot1.jpg"]) imgb = core.imwri.Read([ "c:\images\singer.png"]) #ensure both are of same format and dimensions imga = core.resize.Bicubic(imga,height = 480, width = 720,format=frmt) imgb = core.resize.Bicubic(imgb,height = 480, width = 720,format=frmt) # looping to get one frame more than overlap in these 30fps videos reta = core.std.Loop(imga,61) retb = core.std.Loop(imgb,61) ret = core.trans.Accord(reta, clipb = retb, overlap = time, twin = 0, dir = 1, open = 0) ret = ret + core.trans.Accord(retb, clipb = reta, overlap = time, twin = 1, dir = 1, open = 0) ret = ret + core.trans.Accord(reta, clipb = retb, overlap = time, twin = 0, dir = 0, open = 0) ret = ret + core.trans.Accord(retb, clipb = reta, overlap = time, twin = 1, dir = 0, open = 0) vid = core.text.Text(ret, "Accord", 2) ret = core.trans.Bubbles(reta, clipb = retb, overlap = time, static = 0) ret = ret + core.trans.Bubbles(retb, clipb = reta, overlap = time, static = 1) ret=core.text.Text(ret, "Bubbles", 2) vid = vid + ret ret = core.trans.Central(reta, clipb = retb, overlap = time, nturns = -5, emerge = 0) ret = ret + core.trans.Central(retb, clipb = reta, overlap = time, nturns = 5, emerge = 1) ret = ret + core.trans.Central(reta, clipb = retb, overlap = time, nturns = 0, emerge = 0, resize = 0) ret =core.text.Text(ret, "Central", 2) vid = vid + ret ret = core.trans.Crumple(retb, clipb = reta, overlap = time, crumple = 1, emerge = 1) ret = ret + core.trans.Crumple(reta, clipb = retb, overlap = time, crumple = 1, emerge = 0) ret = ret + core.trans.Crumple(retb, clipb = reta, overlap = time, crumple = 0, emerge = 1) ret = ret + core.trans.Crumple(reta, clipb = retb, overlap = time, crumple = 0, emerge = 0) ret = core.text.Text(ret, "Crumple", 2) vid = vid + ret ret = core.trans.Disco(retb, clipb = reta, overlap = time, nturns = -4, emerge = 0) ret = ret + core.trans.Disco(reta, clipb = retb, overlap = time, nturns = 0, emerge = 1) ret = ret + core.trans.Disco(retb, clipb = reta, overlap = time, nturns = 5, emerge = 1) ret = core.text.Text(ret, "Disco", 2) vid = vid + ret ret = core.trans.Door(reta, clipb = retb, overlap = time, vert = 0, open = 1) ret = core.text.Text(ret, "Door", 2) vid = vid + ret ret = core.trans.FlipPage(retb, clipb = reta, overlap = time, left = 1) ret = ret + core.trans.FlipPage(reta, clipb = retb, overlap = time, left = 0) ret = core.text.Text(ret, "FlipPage", 2) vid = vid + ret ret = core.trans.Funnel(retb, clipb = reta, overlap = time, dir = 1) ret = ret + core.trans.Funnel(reta, clipb = retb, overlap = time, dir = 2) ret = ret + core.trans.Funnel(retb, clipb = reta, overlap = time, dir = 3) ret = ret + core.trans.Funnel(reta, clipb = retb, overlap = time, dir = 4) ret = core.text.Text(ret, "Funnel", 2) vid = vid + ret ret = core.trans.Paint(retb, clipb = reta, overlap = time, style = 1) ret = ret + core.trans.Paint(reta, clipb = retb, overlap = time, style = 2) ret = ret + core.trans.Paint(retb, clipb = reta, overlap = time, style = 3) ret = ret + core.trans.Paint(reta, clipb = retb, overlap = time, style = 4) ret = core.text.Text(ret, "Paint", 2) vid = vid + ret ret = core.trans.Push(retb, clipb = reta, overlap = time, dir = 1) ret = ret + core.trans.Push(reta, clipb = retb, overlap = time, dir = 2) ret = ret + core.trans.Push(retb, clipb = reta, overlap = time, dir = 3) ret = ret + core.trans.Push(reta, clipb = retb, overlap = time, dir = 4) ret = core.text.Text(ret, "Push", 2) vid = vid + ret ret = core.trans.Ripple(retb, clipb = reta, overlap = time,origin = 0, amp = 12, wlength = 14, merge = 1) ret = ret + core.trans.Ripple(reta, clipb = retb, overlap = time,origin = 1, amp = 2, wlength = 8, merge = 1) ret = ret + core.trans.Ripple(retb, clipb = reta, overlap = time,origin = 2, amp = 4, wlength = 12, merge = 1) ret = ret + core.trans.Ripple(reta, clipb = retb, overlap = time,origin = 3, amp = 8, wlength = 16, merge = 1) ret = ret + core.trans.Ripple(retb, clipb = reta, overlap = time,origin = 4, amp = 10, wlength = 20) ret = ret + core.trans.Ripple(reta, clipb = retb, overlap = time,origin = 5, amp = 12, wlength = 30) ret = ret + core.trans.Ripple(retb, clipb = reta, overlap = time,origin = 6, amp = 3, wlength = 40) ret = ret + core.trans.Ripple(reta, clipb = retb, overlap = time,origin = 7, amp = 1, wlength = 50) ret = ret + core.trans.Ripple(retb, clipb = reta, overlap = time,origin = 8, amp = 5, wlength = 20, merge = 1) ret = core.text.Text(ret, "Ripple", 2) vid = vid + ret ret = core.trans.Roll(reta, clipb = retb, overlap = time, dir = 1) ret = ret + core.trans.Roll(retb, clipb = reta, overlap = time, dir = 1, rollin = 0) ret = ret + core.trans.Roll(reta, clipb = retb, overlap = time, dir = 3) ret = ret + core.trans.Roll(retb, clipb = reta, overlap = time, dir = 3, rollin = 0) ret = ret + core.trans.Roll(reta, clipb = retb, overlap = time, dir = 5) ret = ret + core.trans.Roll(retb, clipb = reta, overlap = time, dir = 5, rollin = 0) ret = ret + core.trans.Roll(reta, clipb = retb, overlap = time, dir = 7) ret = ret + core.trans.Roll(retb, clipb = reta, overlap = time, dir = 7, rollin = 0) ret = ret + core.trans.Roll(reta, clipb = retb, overlap = time, dir = 2) ret = ret + core.trans.Roll(retb, clipb = reta, overlap = time, dir = 2, rollin = 0) ret = ret + core.trans.Roll(reta, clipb = retb, overlap = time, dir = 4) ret = ret + core.trans.Roll(retb, clipb = reta, overlap = time, dir = 4, rollin = 0) ret = ret + core.trans.Roll(reta, clipb = retb, overlap = time, dir = 6) ret = ret + core.trans.Roll(retb, clipb = reta, overlap = time, dir = 6, rollin = 0) ret = ret + core.trans.Roll(reta, clipb = retb, overlap = time, dir = 8) ret = ret + core.trans.Roll(retb, clipb = reta, overlap = time, dir = 8, rollin = 0) ret = core.text.Text(ret, "Roll", 2) vid = vid + ret ret = core.trans.Scratch(reta, clipb = retb, overlap = time, style = 1) ret = ret + core.trans.Scratch(retb, clipb = reta, overlap = time, style = 2) ret = ret + core.trans.Scratch(reta, clipb = retb, overlap = time, style = 3) ret = ret + core.trans.Scratch(retb, clipb = reta, overlap = time, style = 4) ret = ret + core.trans.Scratch(reta, clipb = retb, overlap = time, style = 5) ret = ret + core.trans.Scratch(retb, clipb = reta, overlap = time, style = 6) ret = ret + core.trans.Scratch(reta, clipb = retb, overlap = time, style = 7) ret = core.text.Text(ret, "Scratch", 2) vid = vid + ret ret = core.trans.Shuffle(retb, clipb = reta, overlap = time, dir = 1) ret = ret + core.trans.Shuffle(reta, clipb = retb, overlap = time, dir = 2) ret = ret + core.trans.Shuffle(retb, clipb = reta, overlap = time, dir = 3) ret = ret + core.trans.Shuffle(reta, clipb = retb, overlap = time, dir = 4) ret = core.text.Text(ret, "Shuffle", 2) vid = vid + ret ret = core.trans.Slide(retb,clipb = reta, overlap = time, dir = 0, slidein = 0) ret = ret + core.trans.Slide(reta, clipb = retb, overlap = time, dir = 1, slidein = 0) ret = ret + core.trans.Slide(retb, clipb = reta, overlap = time, dir = 2, slidein = 0) ret = ret + core.trans.Slide(reta, clipb = retb, overlap = time, dir = 3, slidein = 0) ret = ret + core.trans.Slide(retb, clipb = reta, overlap = time, dir = 4, slidein = 0) ret = ret + core.trans.Slide(reta, clipb = retb, overlap = time, dir = 5, slidein = 0) ret = ret + core.trans.Slide(retb, clipb = reta, overlap = time, dir = 6, slidein = 0) ret = ret + core.trans.Slide(reta, clipb = retb, overlap = time, dir = 7, slidein = 0) ret = ret + core.trans.Slide(retb, clipb = reta, overlap = time, dir = 8, slidein = 0) ret = ret + core.trans.Slide(reta, clipb = retb, overlap = time, dir = 1, slidein = 1) ret = ret + core.trans.Slide(retb, clipb = reta, overlap = time, dir = 2, slidein = 1) ret = ret + core.trans.Slide(reta, clipb = retb, overlap = time, dir = 3, slidein = 1) ret = ret + core.trans.Slide(retb, clipb = reta, overlap = time, dir = 4, slidein = 1) ret = ret + core.trans.Slide(reta, clipb = retb, overlap = time, dir = 5, slidein = 1) ret = ret + core.trans.Slide(retb, clipb = reta, overlap = time, dir = 6, slidein = 1) ret = ret + core.trans.Slide(reta, clipb = retb, overlap = time, dir = 7, slidein = 1) ret = ret + core.trans.Slide(retb, clipb = reta, overlap = time, dir = 8, slidein = 1) ret = ret + core.trans.Slide(reta, clipb = retb, overlap = time, dir = 0, slidein = 1) ret = core.text.Text(ret, "Slide", 2) vid = vid + ret ret = core.trans.Sprite(retb, clipb = reta, overlap = time, dir = 1) ret = ret + core.trans.Sprite(reta, clipb = retb, overlap = time, dir = 2) ret = ret + core.trans.Sprite(retb, clipb = reta, overlap = time, dir = 3) ret = ret + core.trans.Sprite(reta, clipb = retb, overlap = time, dir = 4) ret = core.text.Text(ret, "Sprite", 2) vid = vid + ret ret = core.trans.Swing(retb, clipb = reta, overlap = time, dir = 1,open = 0, ndoors = 1, corner = 1) ret = ret + core.trans.Swing(reta, clipb = retb, overlap = time, dir = 0,open = 0, ndoors = 1, corner = 2) ret = ret + core.trans.Swing(retb, clipb = reta, overlap = time, dir = 0,open = 1, ndoors = 1, corner = 3) ret = ret + core.trans.Swing(reta, clipb = retb, overlap = time, dir = 1,open = 1, ndoors = 1, corner = 4) ret = ret + core.trans.Swing(retb, clipb = reta, overlap = time, dir = 0,open = 1, ndoors = 2, corner = 1) ret = ret + core.trans.Swing(reta, clipb = retb, overlap = time, dir = 0,open = 1, ndoors = 2, corner = 2) ret = ret + core.trans.Swing(retb, clipb = reta, overlap = time, dir = 0,open = 1, ndoors = 2, corner = 3) ret = ret + core.trans.Swing(reta, clipb = retb, overlap = time, dir = 0,open = 1, ndoors = 2, corner = 4) ret = ret + core.trans.Swing(retb, clipb = reta, overlap = time, dir = 1,open = 1, ndoors = 4, corner = 1) ret = ret + core.trans.Swing(reta, clipb = retb, overlap = time, dir = 1,open = 1, ndoors = 4, corner = 2) ret = ret + core.trans.Swing(retb, clipb = reta, overlap = time, dir = 1,open = 1, ndoors = 4, corner = 3) ret = ret + core.trans.Swing(reta, clipb = retb, overlap = time, dir = 1,open = 1, ndoors = 4, corner = 4) ret = core.text.Text(retb, "Swing", 2) vid = vid + ret ret = core.trans.Swirl(retb, clipb = reta, overlap = time, dir = 1, qr = 5) ret = ret + core.trans.Swirl(reta, clipb = retb, overlap = time, dir = -1, qr = 2) ret = core.text.Text(ret, "Swirl", 2) vid = vid + ret ret = core.trans.VenitianBlinds(retb, clipb = reta, overlap = time, style = 1) ret = ret + core.trans.VenitianBlinds(reta, clipb = retb, overlap = time, style = 2) ret = ret + core.trans.VenitianBlinds(retb, clipb = reta, overlap = time, style = 3) ret = ret + core.trans.VenitianBlinds(reta, clipb = retb, overlap = time, style = 4) ret = ret + core.trans.VenitianBlinds(retb, clipb = reta, overlap = time, style = 1, open = 0) ret = ret + core.trans.VenitianBlinds(reta, clipb = retb, overlap = time, style = 2, open = 0) ret = ret + core.trans.VenitianBlinds(retb, clipb = reta, overlap = time, style = 3, open = 0) ret = ret + core.trans.VenitianBlinds(reta, clipb = retb, overlap = time, style = 4, open = 0) ret = core.text.Text(ret, "VenitianBlinds", 2) vid = vid + ret ret = core.trans.Weave(reta, clipb = retb, overlap = time, style = 1) ret = ret + core.trans.Weave(retb, clipb = reta, overlap = time, style = 2) ret = ret + core.trans.Weave(reta, clipb = retb, overlap = time, style = 3) ret = ret + core.trans.Weave(retb, clipb = reta, overlap = time, style = 4) ret = core.text.Text(ret, "Weave", 2) vid = vid + ret ret = core.trans.Wipe(reta, clipb = retb, overlap = time, dir = 1) ret = ret + core.trans.Wipe(retb, clipb = reta, overlap = time, dir = 2) ret = ret + core.trans.Wipe(reta, clipb = retb, overlap = time, dir = 3) ret = ret + core.trans.Wipe(retb, clipb = reta, overlap = time, dir = 4) ret = ret + core.trans.Wipe(reta, clipb = retb, overlap = time, dir = 5) ret = ret + core.trans.Wipe(retb, clipb = reta, overlap = time, dir = 6) ret = ret + core.trans.Wipe(reta, clipb = retb, overlap = time, dir = 7) ret = ret + core.trans.Wipe(retb, clipb = reta, overlap = time, dir = 8) ret = core.text.Text(ret, "wipe", 2) vid = vid + ret #format conversions to suit the player #ret = core.resize.Bicubic(vid,format=vs.YUV420P8) #ret = core.resize.Bicubic(ret,height = 480, width = 720,format=vs.YUV444P8) #ret = core.fmtc.bitdepth(vid,flt = 0) # set the clip to be output ret.set_output()
To my index page | to down load plugin vctrans | go to Avisynth |