|
|
INDEX F.A.Q. SEARCH LATEST POSTS
Rules Register Profile Private messages Login
| Author |
Message |
Truman Moderator
Joined: 19 Feb 2001 Location: Berlin, Germany
|
|
How to edit with Avisynth
Newbies start here
Download
Sample scripts
Introduction
Avisynth is a very useful utility created by Ben Rudiak-Gould. It provides many options for joining and filtering videos. What makes Avisynth unique is the fact that it is not a stand-alone program that produces output files. Instead, Avisynth acts as the "middle man" between your videos and video applications.
Basically, Avisynth works like this: First, you create a simple text document with special commands, called a script. These commands make references to one or more videos and the filters you wish to run on them. Then, you run a video application, such as VirtualDub, and open the script file. This is when Avisynth takes action. It opens the videos you referenced in the script, runs the specified filters, and feeds the output to video application. The application, however, is not aware that Avisynth is working in the background. Instead, the application thinks that it is directly opening a filtered AVI file that resides on your hard drive.( http://www.lukesvideo.com/avisynth.html )
Avisynth is a scripting language and a collection of filters for simple non-linear editing tasks. Avisynth is unusual in that it does not generate output files.
Instead, Avisynth scripts, which have the extension .AVS, can be opened directly
in applications which read AVI files. When an AVS file is opened, Avisynth runs in
the background, generating video and audio data according to the script and feeding
it to the application as needed.
Original Avisynth homepage (Ben Rudiak-Gould)
Avisynth doc (updated by dividee)
more guides how to use Avisynth with Adobe Premiere, DVDx, etc.
Download:
Avisynth 1.0beta7d (dividee)
Avisynth 1.0beta6 (Edwin van Eggelen)
Plugins
SpatialSoftenMMX (fixed by dividee)
Mpeg2Dec (original by M.Born)
MPEG2DEC (modified by dividee, added some filters, e.g. TemporalSmoother)
MPEG2DEC2 (modified by Tom Barry)
Vobsub / TextSub (Gabest)
Avisynth BMP loader (dvd2svcd)
Decomb / Tweak (Donald Graft)
VirtualDub filters import script
Avisynth subtitler (dvd2svcd)
GreedyHMA (Tom Barry)
GreyYUY2 (Steady)
ImageSequence (bzzz)
IVTC (Wizard)
Merge 1.0 (Klaus Post)
MJPEGcorrect
SimpleResize 0.3 (Tom Barry)
SmoothHIQ 1.0 (Klaus Post)
TemporalSoften2 (dividee)
UnFilter (Tom Barry)
VScope 1.1 (Randy French)
There are some tools, that help you to write basic scripts.
GordianKnot
D@rk$oul's AVSGen
MPEG2DEC GUI (esby)
AVStool (french)
FitCD (shh)
more links on request
Sample scripts
Make the text roll
Video fade in/out. Dissolve
Add subtitles
Crop and split screen
Resize and add borders
Zoom in/out
Picture in Picture
Full animated menu
Insert a blank clip
Make a video clip from a still image
Clean up a clip captured from VHS tape
Cut and join
Add a logo
Video/audio Reverse SlowMotion FastMotion
more scripts on request
________________________________________________________________________________________
Make the text roll
The following sample scripts create credits of a home-made video. Source is 720x576, 25 fps.
Zoom out the main movie title
| Code: |
AVISource("D:\video\jack.avi")
Animate(0,100,"subtitle","Little Jack's",-1000,500,0,150,"Arial",
\ 1000,$FF0000,"Little Jack's",70,300,0,150,"Arial",60,$FF0000)
Animate(0,100,"subtitle","birthday party",-1000,500,0,150,"Arial",
\ 1000,$FF0000,"birthday party",70,350,0,150,"Arial",60,$FF0000)
|
Zoom in the title
| Code: |
AVISource("D:\video\jack.avi")
Animate(0,100,"subtitle","Little Jack's",240,300,0,150,"Arial",
\ 0,$FF0000,"Little Jack's",70,300,0,150,"Arial",60,$FF0000)
Animate(0,100,"subtitle","birthday party",240,300,0,150,"Arial",
\ 0,$FF0000,"birthday party",70,350,0,150,"Arial",60,$FF0000)
|
Simple text (credits)
| Code: |
AVISource("D:\video\jack.avi")
Subtitle("starring",180,300,150,200,"Arial",40,$FFFFFF)
Subtitle("Jack",200,360,150,200,"Arial",40,$FFFFFF)
#
Subtitle("co-starring",150,300,225,275,"Arial",40,$FFFFFF)
#
Subtitle("mum",180,300,300,350,"Arial",40,$FFFFFF)
Subtitle("and",205,340,300,350,"Arial",20,$FFFFFF)
Subtitle("dad",190,390,300,350,"Arial",40,$FFFFFF)
|
Rolling text (upwards)
| Code: |
AVISource("D:\video\jack.avi")
Animate(400,600,"subtitle","editor.......Bob",100,500,400,600,"Arial",
\ 40,$FFFFFF,"editor.......Bob",100,100,400,600,"Arial",40,$FFFFFF)
Animate(420,620,"subtitle","camera.......Jim",100,500,420,620,"Arial",
\ 40,$FFFFFF,"camera.......Jim",100,100,420,620,"Arial",40,$FFFFFF)
Animate(440,640,"subtitle","regie.......susi",100,500,440,640,"Arial",
\ 40,$FFFFFF,"regie.......susi",100,100,440,640,"Arial",40,$FFFFFF)
Animate(460,660,"subtitle","producer......Ed",100,500,460,660,"Arial",
\ 40,$FFFFFF,"producer......Ed",100,100,460,660,"Arial",40,$FFFFFF)
Animate(480,680,"subtitle","drinks.......Mag",100,500,480,680,"Arial",
\ 40,$FFFFFF,"drinks.......Mag",100,100,480,680,"Arial",40,$FFFFFF)
Animate(500,700,"subtitle","breakfast...Will",100,500,500,700,"Arial",
\ 40,$FFFFFF,"breakfast...Will",100,100,500,700,"Arial",40,$FFFFFF)
Animate(520,720,"subtitle","sponsor......mum",100,500,520,720,"Arial",
\ 40,$FFFFFF,"sponsor......mum",100,100,520,720,"Arial",40,$FFFFFF)
Animate(540,740,"subtitle","party..mcDonalds",100,500,540,740,"Arial",
\ 40,$FFFFFF,"party..mcDonalds",100,100,540,740,"Arial",40,$FFFFFF)
#
Animate(750,950,"subtitle","Bob",100,500,750,950,"Arial",40,$FFFFFF,
\ "Bob",100,100,750,950,"Arial",40,$FFFFFF)
Animate(770,970,"subtitle","Jim",100,500,770,970,"Arial",40,$FFFFFF,
\ "Jim",100,100,770,970,"Arial",40,$FFFFFF)
Animate(790,990,"subtitle","susi",100,500,790,990,"Arial",40,$FFFFFF,
\ "susi",100,100,790,990,"Arial",40,$FFFFFF)
Animate(810,1010,"subtitle","Ed",100,500,810,1010,"Arial",40,$FFFFFF,
\ "Ed",100,100,810,1010,"Arial",40,$FFFFFF)
Animate(830,1030,"subtitle","Mag",100,500,830,1030,"Arial",40,$FFFFFF,
\ "Mag",100,100,830,1030,"Arial",40,$FFFFFF)
Animate(850,1050,"subtitle","Will",100,500,850,1050,"Arial",40,$FFFFFF,
\ "Will",100,100,850,1050,"Arial",40,$FFFFFF)
Animate(870,1070,"subtitle","Max",100,500,870,1070,"Arial",40,$FFFFFF,
\ "Max",100,100,870,1070,"Arial",40,$FFFFFF)
Animate(890,1090,"subtitle","Mike",100,500,890,1090,"Arial",40,$FFFFFF,
\ "Mike",100,100,890,1090,"Arial",40,$FFFFFF)
Animate(910,1110,"subtitle","Cate",100,500,910,1110,"Arial",40,$FFFFFF,
\ "Cate",100,100,910,1110,"Arial",40,$FFFFFF)
Animate(930,1130,"subtitle","Trent",100,500,930,1130,"Arial",40,$FFFFFF,
\ "Trent",100,100,930,1130,"Arial",40,$FFFFFF)
Animate(950,1150,"subtitle","Mark",100,500,950,1150,"Arial",40,$FFFFFF,
\ "Mark",100,100,950,1150,"Arial",40,$FFFFFF)
Animate(970,1170,"subtitle","Tom",100,500,970,1170,"Arial",40,$FFFFFF,
\ "Tom",100,100,970,1170,"Arial",40,$FFFFFF)
Animate(990,1190,"subtitle","Rick",100,500,990,1190,"Arial",40,$FFFFFF,
\ "Rick",100,100,990,1190,"Arial",40,$FFFFFF)
Animate(1010,1210,"subtitle","Bruce",100,500,1010,1210,"Arial",40,
\ $FFFFFF,"Bruce",100,100,1010,1210,"Arial",40,$FFFFFF)
Animate(1030,1230,"subtitle","Laurence",100,500,1030,1230,"Arial",40,
\ $FFFFFF,"Laurence",100,100,1030,1230,"Arial",40,$FFFFFF)
Animate(1050,1250,"subtitle","Larry",100,500,1050,1250,"Arial",40,
\ $FFFFFF,"Larry",100,100,1050,1250,"Arial",40,$FFFFFF)
Animate(1070,1270,"subtitle","Andy",100,500,1070,1270,"Arial",40,
\ $FFFFFF,"Andy",100,100,1070,1270,"Arial",40,$FFFFFF)
Animate(1090,1290,"subtitle","Barry",100,500,1090,1290,"Arial",40,$FFFFFF
\ ,"Barry",100,100,1090,1290,"Arial",40,$FFFFFF)
Animate(1110,1310,"subtitle","J.R.",100,500,1110,1310,"Arial",40,$FFFFFF
\ ,"J.R.",100,100,1110,1310,"Arial",40,$FFFFFF)
Animate(1130,1330,"subtitle","Anne",100,500,1130,1330,"Arial",40,$FFFFFF
\ ,"Anne",100,100,1130,1330,"Arial",40,$FFFFFF)
Animate(1150,1350,"subtitle","Jane",100,500,1150,1350,"Arial",40,$FFFFFF
\ ,"Jane",100,100,1150,1350,"Arial",40,$FFFFFF)
Animate(1170,1370,"subtitle","Tarzan",100,500,1170,1370,"Arial",40,
\ $FFFFFF,"Tarzan",100,100,1170,1370,"Arial",40,$FFFFFF)
Animate(1190,1390,"subtitle","David",100,500,1190,1390,"Arial",40,$FFFFFF
\ ,"David",100,100,1190,1390,"Arial",40,$FFFFFF)
Animate(1210,1310,"subtitle","Don",100,500,1210,1410,"Arial",40,$FFFFFF
\ ,"Don",100,300,1210,1410,"Arial",40,$FFFFFF)
#
Subtitle("and",200,300,1420,1500,"Arial",20,$FFFFFF)
Subtitle("Josephine",100,360,1420,1500,"Arial",40,$FFFFFF)
#
BilinearResize(448,542).AddBorders(16,17,16,17)
|
Rolling text (downwards)
| Code: |
AVISource("D:\video\jack.avi")
Animate(400,600,"subtitle","editor.......Bob",100,100,400,600,"Arial",
\ 40,$FFFFFF,"editor.......Bob",100,500,400,600,"Arial",40,$FFFFFF)
Animate(420,620,"subtitle","camera.......Jim",100,100,420,620,"Arial",
\ 40,$FFFFFF,"camera.......Jim",100,500,420,620,"Arial",40,$FFFFFF)
Animate(440,640,"subtitle","regie.......susi",100,100,440,640,"Arial",
\ 40,$FFFFFF,"regie.......susi",100,500,440,640,"Arial",40,$FFFFFF)
Animate(460,660,"subtitle","producer......Ed",100,100,460,660,"Arial",
\ 40,$FFFFFF,"producer......Ed",100,500,460,660,"Arial",40,$FFFFFF)
Animate(480,680,"subtitle","drinks.......Mag",100,100,480,680,"Arial",
\ 40,$FFFFFF,"drinks.......Mag",100,500,480,680,"Arial",40,$FFFFFF)
Animate(500,700,"subtitle","breakfast...Will",100,100,500,700,"Arial",
\ 40,$FFFFFF,"breakfast...Will",100,500,500,700,"Arial",40,$FFFFFF)
Animate(520,720,"subtitle","sponsor......mum",100,100,520,720,"Arial",
\ 40,$FFFFFF,"sponsor......mum",100,500,520,720,"Arial",40,$FFFFFF)
Animate(540,740,"subtitle","party..mcDonalds",100,100,540,740,"Arial",
\ 40,$FFFFFF,"party..mcDonalds",100,500,540,740,"Arial",40,$FFFFFF)
|
Rolling text (left<----right)
| Code: |
AVISource("D:\video\jack.avi")
X2=-1500# adjust the speed of the subtitles by changing X2
Animate(400,740,"subtitle",
\ "editor: Bob camera: Jim regie: susi producer: Ed etc.",
\ 480,500,400,740,"Arial",40,$FFFFFF,
\ "editor: Bob camera: Jim regie: susi producer: Ed etc.",
\ X2,500,400,740,"Arial",40,$FFFFFF)
|
________________________________________________________________________________________
Video fade in/out. Dissolve
Source is a home made video 720x576, 25 fps
Simple Fade out (fades the last 150 frames lineary to black at the end
and adds 1 pure black frame, audio also fades lineary to silence)
| Code: |
AVISource("D:\video\jack.avi")
FadeOut(150)
|
Simple Fade in
| Code: |
AVISource("D:\video\jack.avi")
Reverse.FadeOut(150).Reverse
|
Cover a part of the video with fade out/in
| Code: |
AVISource("D:\video\jack.avi")
part1=Trim(0,5000).FadeOut(150)
part2=Trim(5001,10000).Reverse.FadeOut(150).Reverse.FadeOut(150)
part3=Trim(10001,0).Reverse.FadeOut(150).Reverse
UnalignedSplice(part1,part2,part3)
|
Cover a part of the video with fade out/in without fading the sound
| Code: |
AVISource("D:\video\jack.avi")
part1=Trim(0,5000).Animate(4850,5000,"Letterbox",0,0,288,288)
part2=Trim(5001,10000).Animate(0,150,"Letterbox",288,288,0,0).
\ Animate(9850,10000,"Letterbox",0,0,288,288)
part3=Trim(10001,0).Animate(0,150,"Letterbox",288,288,0,0)
UnalignedSplice(part1,part2,part3)
|
| Code: |
AVISource("D:\video\jack.avi")
part1=Trim(0,5000).Animate(4850,5000,"Levels",0,1,255,0,255,0,1,0,0,0)
part2=Trim(5001,10000).Animate(0,150,"Levels",0,1,0,0,0,0,1,255,0,255).
\ Animate(9850,10000,"Levels",0,1,255,0,255,0,1,0,0,0)
part3=Trim(10001,0).Animate(0,150,"Levels",0,1,0,0,0,0,1,255,0,255)
UnalignedSplice(part1,part2,part3)
|
Dissolve - Fade the last 150 frames of the first part into the first
150 frames of the next part. Audio is blended as well.
This filter is rather useless, if you have only one source, but it
is great if you want to join several sources. Check the "cut/join" sample.
| Code: |
AVISource("D:\video\jack.avi")
part1=Trim(0,5000)
part2=Trim(5001,10000)
part3=Trim(10001,0)
Dissolve(part1,part2,part3,200)
|
___________________________________________________________________________________________________
Crop and split screen
Source is 720x576.
Crop 20 pixels off the left side.
| Code: |
AVISource("e:\cap.avi")
Crop(20,0,700,576)
|
Crop 20 pixels off the right side.
| Code: |
AVISource("e:\cap.avi")
Crop(0,0,700,576)
|
Crop 20 pixels off the top.
| Code: |
AVISource("e:\cap.avi")
Crop(0,20,720,556)
|
Crop 20 pixels off the bottom.
| Code: |
AVISource("e:\cap.avi")
Crop(0,0,720,556)
|
Split screen. The source resolution is 720x576.
Do nothing.
| Code: |
AVISource("e:\cap.avi")
q1=crop(0,0,360,288)
q2=crop(360,0,360,288)
q3=crop(0,288,360,288)
q4=crop(360,288,360,288)
l1=StackHorizontal(q1,q2)
l2=StackHorizontal(q3,q4)
StackVertical(l1,l2)
|
| Code: |
AVISource("e:\cap.avi")
q1=crop(0,0,360,288)
q2=crop(360,0,360,288)
q3=crop(0,288,360,288)
q4=crop(360,288,360,288)
l1=StackHorizontal(q4,q3)
l2=StackHorizontal(q2,q1)
StackVertical(l1,l2)
|
| Code: |
AVISource("e:\cap.avi")
h1=crop(0,0,360,576)
h2=crop(360,0,360,576)
StackHorizontal(h2,h1)
|
| Code: |
AVISource("e:\cap.avi")
h1=crop(0,0,720,288)
h2=h1.FlipVertical
StackVertical(h1,h2)
|
________________________________________________________________________________________
Resize and add borders
Probably the most used Avisynth filters. Calculate how to resize properly with FitCD.
Read the FitCD dokumentation.
___________________________________________________________________________________________________
Zoom in/out
Zoom into the middle of the picture.
| Code: |
AVISource("e:\cap.avi")
Animate(0,150,"BicubicResize",720,576,0,0.5,0,0,720,576,720,576,0,0.5,280,241,160,94)
|
Zoom out from the middle of the picture.
| Code: |
AVISource("e:\cap.avi")
Animate(0,150,"BicubicResize",720,576,0,0.5,280,241,160,94,720,576,0,0.5,0,0,720,576)
|
Zoom work with Animate, Crop and Resize only. If you want to zoom in/out the entire image,
i.e. without cropping, you have to resize and add borders frame by frame, because Animate
refuses start-args and end-args, that lead to different frame sizes.
__________________________________________________________________________________________
Picture in Picture
The background of this procedure is, that you split the image into several pieces
with the CROP filter and join them again with STACKHORIZONTAL/VERTICAL.
Source is here MPEG-2, dvd2avi project, cropped with dvd2avi 672x424
The 2nd source is AVI (hope you don't mind, that I resized wrong, because it is just an example.)
| Code: |
LoadPlugin("mpeg2dec2.dll")
big=mpeg2source("D:\matrix\matrix.d2v").BicubicResize(448,318).
\ AddBorders(16,129,16,129)# final size 480x576
small=AVISource("D:\video\jack.avi").BicubicResize(68,48).
\ AddBorders(6,6,6,6)# final size is 80x60
height1=400
height2=60
height3=116
width1=250
width2=80
width3=150
part1=big.crop(0,0,480,height1)
part2a=big.crop(0,height1,width1,height2)
part2b=small
part2c=big.crop(width1+width2,height1,width3,height2)
part2=StackHorizontal(part2a,part2b,part2c)
part3=big.Crop(0,height1+height2,480,height3)
StackVertical(part1,part2,part3)
|
_________________________________________________________________________________________
Full animated menu
This is an "extended" version of the script above. This sample script creates a full animated menu.
The background is any part of the video (10000 frames). Assuming, that I want to create
9 chapters later, I add 9 thumbnails to the video clip. Each thumbnail contains 10000 frames of the
video, e.g. the first 10000 of each chapter.
All 10 videoclips play simultaneously. After a while it starts to zoom into the first
thumbnail, a message appears (Chapter 1- Jack's first kiss"- please press key 1 ;-)).
The message disappears and it zooms out to the menu. Then it starts to zoom into the 2nd thumbnail
etc. etc.
I did not add audio to the script and I wont even try it. It should be easier with an audio editor.
In practice 6:40 might be too long for a menu and zooming into such a small part (96,108) is not
the best idea, because a from 96x108 to 480x576 resized image is very unsharp. This is just an example.
Loading the AVS into an application takes a couple of minutes, be patient.
Converting takes several hours, be even more patient. :LOL
big=AVIsource("D:\video\jack.avi").BicubicResize(448,542).AddBorders(16,17,16,17).Trim(0,9999)
small=AVIsource("D:\video\jack.avi").BicubicResize(96,108)
small1=Trim(small,0,9999)
small2=Trim(small,10000,19999)
small3=Trim(small,14401,24400)
small4=Trim(small,45000,54999)
small5=Trim(small,48000,57999)
small6=Trim(small,60000,69999)
small7=Trim(small,72000,81999)
small8=Trim(small,65432,75431)
small9=Trim(small,90000,99999)
x=480
height1=48
height2=108
height3=48
height4=108
height5=48
height6=108
height7=108
width1=48
width2=96
width3=48
width4=96
width5=48
width6=96
width7=48
part1=big.crop(0,0,x,height1)
part2a=big.crop(0,height1,width1,height2)
part2b=small1
part2c=big.crop(width1+width2,height1,width3,height2)
part2d=small2
part2e=big.Crop(width1+width2+width3+width4,height1,width5,height2)
part2f=small3
part2g=big.Crop(width1+width2+width3+width4+width5+width6,height1,width7,height2)
part2=StackHorizontal(part2a,part2b,part2c,part2d,part2e,part2f,part2g)
part3=big.Crop(0,height1+height2,x,height3)
part4a=big.crop(0,height1+height2+height3,width1,height4)
part4b=small4
part4c=big.crop(width1+width2,height1+height2+height3,width3,height4)
part4d=small5
part4e=big.Crop(width1+width2+width3+width4,height1+height2+height3,width5,height4)
part4f=small6
part4g=big.Crop(width1+width2+width3+width4+width5+width6,height1+height2+height3,width7,height4)
part4=StackHorizontal(part4a,part4b,part4c,part4d,part4e,part4f,part4g)
part5=big.Crop(0,height1+height2+height3+height4,x,height5)
part6a=big.crop(0,height1+height2+height3+height4+height5,width1,height6)
part6b=small7
part6c=big.crop(width1+width2,height1+height2+height3+height4+height5,width3,height6)
part6d=small8
part6e=big.Crop(width1+width2+width3+width4,height1+height2+height3+height4+height5,width5,height6)
part6f=small9
part6g=big.Crop(width1+width2+width3+width4+width5+width6,height1+height2+height3+height4+height5,width7,height6)
part6=StackHorizontal(part6a,part6b,part6c,part6d,part6e,part6f,part6g)
part7=big.Crop(0,height1+height2+height3+height4+height5+height6,x,height7)
vid=StackVertical(part1,part2,part3,part4,part5,part6,part7)
chap1in=Trim(vid,0,999).Animate(700,900,"BicubicResize",480,576,0,0.5,0,0,480,576,480,576,0,0.5,48,48,96,108)
chap1out=Trim(vid,1000,1499).Animate(100,300,"BicubicResize",480,576,0,0.5,48,48,96,108,480,576,0,0.5,0,0,480,576)
chap2in=Trim(vid,1500,1999).Animate(200,400,"BicubicResize",480,576,0,0.5,0,0,480,576,480,576,0,0.5,192,48,96,108)
chap2out=Trim(vid,2000,2499).Animate(100,300,"BicubicResize",480,576,0,0.5,192,48,96,108,480,576,0,0.5,0,0,480,576)
chap3in=Trim(vid,2500,2999).Animate(200,400,"BicubicResize",480,576,0,0.5,0,0,480,576,480,576,0,0.5,336,48,96,108)
chap3out=Trim(vid,3000,3499).Animate(100,300,"BicubicResize",480,576,0,0.5,336,48,96,108,480,576,0,0.5,0,0,480,576)
chap4in=Trim(vid,3500,3999).Animate(200,400,"BicubicResize",480,576,0,0.5,0,0,480,576,480,576,0,0.5,48,204,96,108)
chap4out=Trim(vid,4000,4499).Animate(100,300,"BicubicResize",480,576,0,0.5,48,156,96,108,480,576,0,0.5,0,0,480,576)
chap5in=Trim(vid,4500,4999).Animate(200,400,"BicubicResize",480,576,0,0.5,0,0,480,576,480,576,0,0.5,192,204,96,108)
chap5out=Trim(vid,5000,5499).Animate(100,300,"BicubicResize",480,576,0,0.5,192,156,96,108,480,576,0,0.5,0,0,480,576)
chap6in=Trim(vid,5500,5999).Animate(200,400,"BicubicResize",480,576,0,0.5,0,0,480,576,480,576,0,0.5,336,204,96,108)
chap6out=Trim(vid,6000,6499).Animate(100,300,"BicubicResize",480,576,0,0.5,336,156,96,108,480,576,0,0.5,0,0,480,576)
chap7in=Trim(vid,6500,6999).Animate(200,400,"BicubicResize",480,576,0,0.5,0,0,480,576,480,576,0,0.5,48,360,96,108)
chap7out=Trim(vid,7000,7499).Animate(100,300,"BicubicResize",480,576,0,0.5,48,360,96,108,480,576,0,0.5,0,0,480,576)
chap8in=Trim(vid,7500,7999).Animate(200,400,"BicubicResize",480,576,0,0.5,0,0,480,576,480,576,0,0.5,192,360,96,108)
chap8out=Trim(vid,8000,8499).Animate(100,300,"BicubicResize",480,576,0,0.5,192,360,96,108,480,576,0,0.5,0,0,480,576)
chap9in=Trim(vid,8500,8999).Animate(200,400,"BicubicResize",480,576,0,0.5,0,0,480,576,480,576,0,0.5,336,360,96,108)
chap9out=Trim(vid,9000,0).Animate(100,300,"BicubicResize",480,576,0,0.5,336,360,96,108,480,576,0,0.5,0,0,480,576)
chap1=UnalignedSplice(chap1in,chap1out)
chap2=UnalignedSplice(chap2in,chap2out)
chap3=UnalignedSplice(chap3in,chap3out)
chap4=UnalignedSplice(chap4in,chap4out)
chap5=UnalignedSplice(chap5in,chap5out)
chap6=UnalignedSplice(chap6in,chap6out)
chap7=UnalignedSplice(chap7in,chap7out)
chap8=UnalignedSplice(chap8in,chap8out)
chap9=UnalignedSplice(chap9in,chap9out)
UnalignedSplice(chap1,chap2,chap3,chap4,chap5,chap6,chap7,chap8,chap9)
Subtitle("Chapter selection",100,500,0,500,"Arial",40,$FFFFFF)
Subtitle("chapter 1",150,150,950,1050,"Arial",40,$FFFFFF)
Subtitle("_press 1_",150,450,950,1050,"Arial",40,$FFFFFF)
Subtitle("chapter 2",150,150,1950,2050,"Arial",40,$FFFFFF)
Subtitle("_press 2_",150,450,1950,2050,"Arial",40,$FFFFFF)
Subtitle("chapter 3",150,150,2950,3050,"Arial",40,$FFFFFF)
Subtitle("_press 3_",150,450,2950,3050,"Arial",40,$FFFFFF)
Subtitle("chapter 4",150,150,3950,4050,"Arial",40,$FFFFFF)
Subtitle("_press 4_",150,450,3950,4050,"Arial",40,$FFFFFF)
Subtitle("chapter 5",150,150,4950,5050,"Arial",40,$FFFFFF)
Subtitle("_press 5_",150,450,4950,5050,"Arial",40,$FFFFFF)
Subtitle("chapter 6",150,150,5950,6050,"Arial",40,$FFFFFF)
Subtitle("_press 6_",150,450,5950,6050,"Arial",40,$FFFFFF)
Subtitle("chapter 7",150,150,6950,7050,"Arial",40,$FFFFFF)
Subtitle("_press 7_",150,450,6950,7050,"Arial",40,$FFFFFF)
Subtitle("chapter 8",150,150,7950,8050,"Arial",40,$FFFFFF)
Subtitle("_press 8_",150,450,7950,8050,"Arial",40,$FFFFFF)
Subtitle("chapter 9",150,150,8950,9050,"Arial",40,$FFFFFF)
Subtitle("_press 9_",150,450,8950,9050,"Arial",40,$FFFFFF)
Subtitle("Chapter selection",100,500,9500,0,"Arial",40,$FFFFFF)
#ResampleAudio(44100)
_________________________________________________________________________________________
Insert a blank clip
Insert a 5 sec blank clip between two scenes of the movie movie. Framesize,
framerate and colour space of the blank clip must match the properties of the movie.
| Code: |
LoadPlugin("MPEG2DEC.dll")
AudioDub(mpeg2source("D:\matrix\matrix.d2v"),
\ WAVSource("D:\matrix\matrix.wav")).
\ BilinearResize(448,404,0,0,720,576).AddBorders(16,80,16,92)
clip1=Trim(0,999).FadeOut(100)
clip2=Trim(1000,0).Reverse.FadeOut(100).Reverse
black=BlankClip(125,480,576,"YUY2",25,1,44100,true,true,$000000)
UnalignedSplice(clip1,black,clip2)
|
_________________________________________________________________________________________
Make a video clip from a still image
Source is a 100x100 BMP. This image will be converted to a 10 sec video clip
and inserted between two scenes of the movie movie.
| Code: |
LoadPlugin("MPEG2DEC.dll")
AudioDub(mpeg2source("D:\matrix\matrix.d2v"),
\ WAVSource("D:\matrix\matrix.wav")).
\ BilinearResize(448,404,0,0,720,576).AddBorders(16,80,16,92)
clip1=Trim(0,999).FadeOut(100)
clip2=Trim(1000,0).Reverse.FadeOut(100).Reverse
LoadPlugin("Avisynth BMP Loader.dll")
BlankClip(250,100,100,"YUY2",25,1,44100,true,true,$000000)
pic=AvisynthBMP_Loader("C:\Pics\","smile.bmp").
\ BilinearResize(448,404).AddBorders(16,80,16,92).Reverse.
\ FadeOut(100).Reverse.FadeOut(100)
UnalignedSplice(clip1,pic,clip2)
|
________________________________________________________________________________________
Clean up a clip captured from VHS tape
Source is 640x480.
Cover garbage on the bottom of the clip.
| Code: |
LoadPlugin("MPEG2DEC.dll")
mpeg2source("I:\cap\cap.d2v")
Letterbox(0,16)
|
Crop garbage off the bottom of the clip. To keep the proper framesize and aspect ratio,
add as many border count lines as you croped before.
| Code: |
AVISource("D:\video\jack.avi")
CropBottom(16)
AddBorders(0,0,0,16)
|
You prefer a centered image....
| Code: |
AVISource("D:\video\jack.avi")
Crop(0,0,640,464)
AddBorders(0,8,0,8)
|
You hate borders at all...., then you have to sacrifice a bit left and/or right and resize
to a valid framesize.
| Code: |
LoadPlugin("MPEG2DEC.dll")
mpeg2source("I:\cap\cap.d2v")
BicubicResize(480,480,1/3,1/3,4,0,632,464)
|
is the same as
| Code: |
LoadPlugin("MPEG2DEC.dll")
mpeg2source("I:\cap\cap.d2v")
Crop(4,0,632,464)
BicubicResize(480,480)
|
If you have a very old and noisy source, you may try to clean it with some denoise
filters. The SpatialSoften plugin work quite well. Try different filters and values.
| Code: |
LoadPlugin("MPEG2DEC.dll")
LoadPlugin("AVISynth_Spatial.dll")
Avisource("I:\cap\cap.avi")
Crop(4,0,632,464)
SpatialSoftenMMX(2,4,6,false,false,4,4,6,8)
TemporalSmoother(3,3)
SpatialSoftenMMX(2,4,6,false,false,4,4,6,8)
BicubicResize(480,480)
|
________________________________________________________________________________________
Cut and join
You have captured a TV show. Cut out the commercials.
| Code: |
AVISource("d:\cap\cap.avi")
Trim(0,30000)+Trim(36000,65000)+Trim(71000,0)
|
Join captured clips in a new order
| Code: |
AVISource("d:\cap\cap.avi")
Trim(0,30000)+Trim(71000,0)+Trim(36000,65000)
|
Join several clips
| Code: |
AVISource("d:\cap\cap1.avi")+AVISource("d:\cap\cap2.avi")
\ +AVISource("d:\cap\cap3.avi")
|
You have captured several shows and want to extract some scenes of each show and join
it to a new compilation.
| Code: |
LoadPlugin("mpeg2dec.dll")
LoadVFAPIPlugin("c:\mpegtool\TMPGEnc\m2v.vfp","m2vsource")
v1=AVISource("d:\cap\cap1.avi").BilinearResize(480,576)
v2=ConvertFPS(AVISource("d:\cap\cap2.avi"),25)
v3=AVISource("d:\cap\cap3.avi")
v4=m2vsource("d:\cap\cap.mpg")
v5=AudioDub(mpeg2source("d:\cap\cap.d2v"),WAVsource("d:\cap\cap.wav")
v6=SegmentedAVISource("d:\cap\cap4.avi")
Trim(v4,4836,8463)+Trim(v1,100,5000)+Trim(v6,10000,0)+Trim(v6,2000,7000)+
\ Trim(v2,1000,9000)+Trim(v5,0,6543)+Trim(v5,6550,0)+Trim(v3,4836,8463)
|
You may add some fade in/out/cross effects.
| Code: |
LoadPlugin("mpeg2dec.dll")
LoadVFAPIPlugin("c:\mpegtool\TMPGEnc\m2v.vfp","m2vsource")
v1=AVISource("d:\cap\cap1.avi").BilinearResize(480,576)
v2=ConvertFPS(AVISource("d:\cap\cap2.avi"),25)
v3=AVISource("d:\cap\cap3.avi")
v4=m2vsource("d:\cap\cap.mpg")
v5=AudioDub(mpeg2source("d:\cap\cap.d2v"),WAVsource("d:\cap\cap.wav")
v6=SegmentedAVISource("d:\cap\cap4.avi")
c1=Trim(v4,4836,8463).Reverse.FadeOut(100).Reverse.FadeOut(100)
c2=Trim(v1,100,5000).Reverse.FadeOut(100).Reverse.FadeOut(100)
c3=Trim(v6,10000,0).Reverse.FadeOut(100).Reverse
c4=Trim(v6,2000,7000)
c5=Trim(v2,1000,9000)
c6=Trim(v5,0,6543)
c7=Trim(v5,6550,0)
c8=Trim(v3,4836,8463).FadeOut(100)
c3_8=Dissolve(c3,c4,c5,c6,c7,c8,100)
UnalignedSplice(c1,c2,c3_8)
|
Another way to cross fade... At the end of the first clip the image moves to the left
side followed by the image of the 2nd clip. The sound of both clips is faded linearly
into each other.
| Code: |
Split the video and audio to separate files.
videoclip1=AVIsource("D:\cap1.avi")# no audio
videoclip2=AVIsource("D:\cap2.avi")# no audio
audioclip1=WAVsource("D:\cap1.wav")
audioclip2=WAVsource("D:\cap2.wav")
v1=Trim(videoclip1,0,3849)
a1=Trim(AudioDub(videoclip1,audioclip1),0,3849)
v2=Trim(videoclip1,3850,3999)
a2=Trim(AudioDub(videoclip1,audioclip1),3850,3999)
v3=Trim(videoclip2,0,149)
a3=Trim(AudioDub(videoclip2,audioclip2),0,149)
v4=Trim(videoclip2,150,7499)
a4=Trim(AudioDub(videoclip2,audioclip2),6150,7499)
#
s2_3=StackHorizontal(v2,v3)
v2_3=Animate(0,299,"CROP",s2_3,0,0,720,576,s2_3,1440,0,720,576)
video=UnalignedSplice(v1,v2_3,v4)
audio=Dissolve(a1+a2,a3+a4,150)
AudioDub(video,audio)
|
zoom
| Code: |
v1=AVISource("e:\cap1.avi")
v2=AVISource("e:\cap2.avi")
c1=Animate(10000,10150,"BicubicResize",v1,720,576,0,0.5,0,0,720,576,v1,720,576,0,0.5,280,241,160,94)
c2=Animate(0,150,"BicubicResize",v2,720,576,0,0.5,280,241,160,94,v2,720,576,0,0.5,0,0,720,576)
Dissolve(c1,c2,50)
|
letterbox
| Code: |
LoadPlugin("C:\WINNT\system32\MPEG2DEC2.dll")
v1=AVISource("e:\cap1.avi").
\ Animate(9949,10000,"subtitle","________________________",0,0,9949,10000,"Arial",60,$000000,
\ "________________________",0,288,9949,10000,"Arial",60,$000000).
\ Animate(9949,10000,"subtitle","________________________",0,576,9949,10000,"Arial",60,$000000,
\ "________________________",0,288,9949,10000,"Arial",60,$000000)
v2=AVISource("e:\cap2.avi").
\ Animate(0,49,"letterbox",288,288,0,0)
UnalignedSplice(v1,v2)
|
________________________________________________________________________________________
Add a logo
There is no Avisynth logo filter. That's why I use Donald Graft's logo filter for
VirtualDub. Also I added this example to show how to use VirtualDub plugins.
Static logo fades in (frame #100-199) and fades out (frame #401-500). It will appear
in the very upper left corner of the image.
| Code: |
LoadPlugin("mpeg2dec.dll")
AudioDub(mpeg2source("D:\matrix\matrix.d2v").BicubicResize(448,318).
\ AddBorders(16,129,16,129).Trim(0,9999),WAVSource("D:\matrix\matrix.wav"))
function VD_Logo(clip clip, int "x", int "y", int "alpha", bool "transparent",
\ int "xr", int "xg", int "xb", int "tolerance", string "filename",
\ bool "animate", int "start", int "duration", int "loops",
\ int "fadeinlen", int "fadeoutend", int "fadeoutlen")
{
LoadVirtualdubPlugin("c:\program files\VirtualDub-1_4_10\plugins"
\ +"\logo.vdf", "_VD_Logo", 1)
return clip._VD_Logo(default(x,0), default(y,0), default(alpha,128),
\ default(transparent,true)?1:0, default(xr,0), default(xg,0),
\ default(xb,255),default(tolerance,0), default
\ (filename,VirtualDub_plugin_directory+"\logo.bmp"),
\ default(animate,false)?1:0, default(start,0), default(duration,0),
\ default(loops,0),default(fadeinlen,0),
\ default(fadeoutend,200), default(fadeoutlen,0))
}
ConvertToRGB()
VD_logo(0,0,128,true,0,0,0,0,"D:\MyLogo.bmp",false,100,500,0,100,500,100)
ConvertToYUY2()
|
Static logo (100x100) appers in the middle of the image (480x576). It is flashing 1 time
per second and will disappear after 12 seconds.
| Code: |
LoadPlugin("mpeg2dec.dll")
AudioDub(mpeg2source("D:\matrix\matrix.d2v").BicubicResize(448,318).
\ AddBorders(16,129,16,129).Trim(0,9999),WAVSource("D:\matrix\matrix.wav"))
Import("D:\vdub_filters.avs")
ConvertToRGB
VD_logo(190,238,128,true,0,0,0,0,"D:\MyLogo.bmp",false,1,25,0,12,25,12)
VD_logo(190,238,128,true,0,0,0,0,"D:\MyLogo.bmp",false,26,25,0,12,50,12)
VD_logo(190,238,128,true,0,0,0,0,"D:\MyLogo.bmp",false,51,25,0,12,75,12)
VD_logo(190,238,128,true,0,0,0,0,"D:\MyLogo.bmp",false,76,25,0,12,100,12)
VD_logo(190,238,128,true,0,0,0,0,"D:\MyLogo.bmp",false,101,25,0,12,125,12)
VD_logo(190,238,128,true,0,0,0,0,"D:\MyLogo.bmp",false,126,25,0,12,150,12)
VD_logo(190,238,128,true,0,0,0,0,"D:\MyLogo.bmp",false,151,25,0,12,175,12)
VD_logo(190,238,128,true,0,0,0,0,"D:\MyLogo.bmp",false,176,25,0,12,200,12)
VD_logo(190,238,128,true,0,0,0,0,"D:\MyLogo.bmp",false,201,25,0,12,225,12)
VD_logo(190,238,128,true,0,0,0,0,"D:\MyLogo.bmp",false,226,25,0,12,250,12)
VD_logo(190,238,128,true,0,0,0,0,"D:\MyLogo.bmp",false,251,25,0,12,275,12)
VD_logo(190,238,128,true,0,0,0,0,"D:\MyLogo.bmp",false,276,25,0,12,300,12)
ConvertToYUY2
|
To make an animated logo, create a series of bitmap files *0000.bmp, *0001.bmp, *0002.bmp, etc.
Here the logo will appear from start to the end of the movie, because it loops forever.
| Code: |
AviSource("e:\movie.avi")
Import("D:\vdub_filters.avs")
ConvertToRGB
VD_Logo(20,20,255,true,0,0,0,0,"D:\logo0001.bmp",true,0,1,0,0,0,0)
ConvertToYUY2
|
________________________________________________________________________________________________
Video/audio Reverse SlowMotion FastMotion
Simple reverse
| Code: |
Avisource("c:\video.avi")
Reverse
|
Simple slow motion (5 times as slow)
| Code: |
Avisource("c:\video.avi")
ConvertFPS(125).AssumeFPS(25,sync_audio=true).ResampleAudio(44100)
|
Simple fast motion (5 times as fast)
| Code: |
Avisource("c:\video.avi")
ConvertFPS(5,zone=80,vbi=49).AssumeFPS(25,sync_audio=true).ResampleAudio(44100)
|
The following sample scrip combines the 3 scripts above.
The video starts and plays 5 minutes with normal speed. Then the image freezes 2 seconds.
Fast motion back to 4:00 followed by slow motion to 5:00.
Fast motion back to 4:00 followed by fast motion to 5:00.
After that it plays normally till the end (6:40).
You will end with a 10:26 clip. Audio is in sync all the time.
Also try ChangeFPS instead of ConvertFPS.
| Code: |
vid=AudioDub(AVIsource("c:\video.avi"),WAVSource("c:\audio.wav"))
clip1=Trim(vid,0,7499)# 7500 frames
clip2=FreezeFrame(Trim(vid,0,49),0,49,7499)# 50 frames
clip3=Trim(vid,6500,7499).Reverse.ConvertFPS(5,zone=80,vbi=49).AssumeFPS(25,sync_audio=true)
\ .ResampleAudio(44100)# 200 frames
clip4=Trim(vid,6500,7499).ConvertFPS(125).AssumeFPS(25,sync_audio=true)
\ .ResampleAudio(44100)# 5000 frames
clip5=Trim(vid,6500,7499).Reverse.ConvertFPS(5,zone=80,vbi=49).AssumeFPS(25,sync_audio=true)
\ .ResampleAudio(44100)# 200 frames
clip6=Trim(vid,6500,7499).ConvertFPS(5,zone=80,vbi=49).AssumeFPS(25,sync_audio=true)
\ .ResampleAudio(44100)# 200 frames
clip7=Trim(vid,7500,9999)# 2500 frames
UnalignedSplice(clip1,clip2,clip3,clip4,clip5,clip6,clip7)
|
___________________________________________________________________________________________________
Last edited by Truman on Jul 05, 2002 12:16, edited 6 times in total
|
|
asnamlar Member
Joined: 10 Aug 2001
|
|
Hi Truman, I use Avisynth to prepare my captured videos so I don't need to cut after TMPGEnc. This works fine all the time.
I would like to do the same with the project file generated by DVD2AVI but I don't know how to open this file from Avisynth, can you help me?
Thanks
|
|
Truman Moderator
Joined: 19 Feb 2001 Location: Berlin, Germany
|
|
| asnamlar wrote: |
Hi Truman, I use Avisynth to prepare my captured videos so I don't need to cut after TMPGEnc. This works fine all the time.
I would like to do the same with the project file generated by DVD2AVI but I don't know how to open this file from Avisynth, can you help me?
Thanks |
Copy MPEG2DEC.dll to winnt\system32 (windows\system).
Create the dvd2avi project.
LoadPlugin("mpeg2dec.dll)
mpeg2source("C:\dir\filename.d2v")
You have to use avisynth 1.0beta3 or later.
|
|
Daagar Member
Joined: 10 Jun 2002
|
|
Great guide! The links to all the various versions of avisynth and related filters is worth the read alone. There are so many out there it gets very confusing. Thanks!
|
|
Truman Moderator
Joined: 19 Feb 2001 Location: Berlin, Germany
|
|
****deleted by Truman****
Last edited by Truman on Jun 29, 2002 11:06, edited 1 time in total
|
|
kinneera Member
Joined: 09 Aug 2001
|
|
Once I changed "mpeg2dec2.dll" to "mpeg2dec.dll" it appeared to be loading successfully until it gave an error on line 84 that said the arguments to function "UnalignedSplice" were wrong.
Does this script require the newest version of Avisynth?
|
|
Truman Moderator
Joined: 19 Feb 2001 Location: Berlin, Germany
|
|
Hi Kinneera, thank you for testing the script. I used mpeg2dec2.dll instead of mpeg2dec.dll. Avisynth version is 1.0beta6. Well, I re-read the script and have found a bunch of errors. I will update it soon. Currently I am encoding to MPEG. It takes about 8 hours ! Remember, the clip is 6min 40sec only.
edit: I have added it to first post.
|
|
Big_Jit Member
Joined: 13 Oct 2001 Location: Atlantic Beach, Fl
|
|
Wow! what a GREAT guide! This is one I've been waiting for! Thankyou!...
_________________ Big_Jit
|
|
phelix Member
Joined: 30 Dec 2001 Location: United States
|
|
Nice Guide. I would have never though making menus were possible with the available filters in avisynth.
I guess now would be a good time to mention that I'm working on new set of avisynth filters to make making menus simple. THe following script is an example:
background=AVISource("background.avi")
clip1=AVIsource("clip1.avi").BicubicResize(252,168)
clip2=AVIsource("clip2.avi").BicubicResize(252,168)
clip3=AVIsource("clip3.avi").BicubicResize(252,168)
#let's make this one circular
clip4=AVIsource("clip4.avi").BicubicResize(252,168).AlphaMask("circle_alpha_mask.png",0,0)
# lay out four clips on a background video stream, and then superimpose
# a PNG image containing the chapter titles
tmp=background.VideoOverlay4(clip1,70,30,clip2,400,30,clip3,70,280,clip4,400,280)
tmp.StillFrameOverlay("mytitles.png",0,0)
The picture below is a sample of how far I've gotten. All three images are full video streams. Notice the overlap and the shape of the center video (featuring that lovable zim character, 'the blotch').
|
|
The_Flash Member
Joined: 19 Apr 2001
|
|
This is perhaps one of the most worthwhile guides posted here. Great source of information and the added links put the icing on tha cake. Terrific intro for anyone looking to get rid of the vfapi turtle. Thanks for putting in the time.
|
|
offline incognito
Joined: 05 Jun 2002 Location: Mondo Caine
|
|
Impressive. This is the style of guide we should have more of on
this site - well done!
|
|
Truman Moderator
Joined: 19 Feb 2001 Location: Berlin, Germany
|
|
| phelix wrote: |
I guess now would be a good time to mention that I'm working on new set of avisynth filters to make making menus simple.
|
Wow, that looks very promising. I would love to test it.
|
|
ABS Member
Joined: 15 Jun 2002
|
|
Great article and wel written!
And speaking of old VHS tapes, I have a very old VHS tape that has some broken fields (eg. odd lines ok, but even lines are just noise). So I converted the thing to 50fps uncompressed AVI, sized 352x288 and did all the cleaning/editing needed. Now, I understand that I could Re-interlace it from 50fps progressive to 25fps Interlace using the Weave command, but for some reason I just get a 352x288 25fps file without re-interlacing. I use the following:
a = avisource ("e:\test.avi")
AssumeFieldBased(a)
Weave(a)
Any idea what I'm doing wrong?
|
|
Truman Moderator
Joined: 19 Feb 2001 Location: Berlin, Germany
|
|
@ ABS
a = avisource ("e:\test.avi")
AssumeFieldBased(a)
Weave
or
avisource ("e:\test.avi")
AssumeFieldBased
Weave
should work fine.
|
|
ABS Member
Joined: 15 Jun 2002
|
|
Great! Works as charm!
Thanks!
|
|
Truman Moderator
Joined: 19 Feb 2001 Location: Berlin, Germany
|
|
ABS, I am not an expert on interlaced video, but i was surprised to hear that the odd fields are OK and the even fields are noisy. Is that a common problem with interlaced video or old VHS tapes?
btw, hope you did the editing/cleaning with Avisynth
|
|
ABS Member
Joined: 15 Jun 2002
|
|
| Truman wrote: |
ABS, I am not an expert on interlaced video, but i was surprised to hear that the odd fields are OK and the even fields are noisy. Is that a common problem with interlaced video or old VHS tapes?
btw, hope you did the editing/cleaning with Avisynth  |
Well, I was giving it an All-too-perfect description!
It's actually a Compact VHS tape from my old videocamera (tape is about 7 years old) and for some reason you have alot of frames where one field (not necceraly the odd or the even) is quite ok, and the other field is just noise. Now, it was easy if there was a simple repeating pattren, but there wasn't, so I had to split it into 50fps and simply remove all the noisey fields, filling them up with interpulation of the Previous and next field. (Did it in Ulead MSP6.5) and the result was quite good.
I might put up a page on my site with small "before and after" video clips to show extactly how it is...
ABS
|
|
Tommyknocker Banned
Joined: 27 Apr 2002 Location: The State of Frustration
|
|
Dear Truman:
I tried to get your animated menu to run. Since I do not have Jack.avi, I decided to use some avi clips from my Civilization II game.
I received some address erors, so I tried to change the values in the first two lines. Now it tells me the StackHorizontal Values are wrong. The avi files I want to use are 320x240. Can you help me?
_________________ Deck the halls with boughs of holly;
Fa la la la la la la la la!!!
|
|
Truman Moderator
Joined: 19 Feb 2001 Location: Berlin, Germany
|
|
Frame size of "big" is 480x576.
x= width1+width2+width3+width4+width5+width6+width7=480.
height1+height2+height3+height4+height5+height6+height7=576.
If you did not change a StackHorizontal value, the script is correct.
To test the script you can simply replace d:\video\jack.avi with your path\filename.
Well, at the beginning the framesize may be wrong, but you can load it into an application without error message. Then you have to adjust the values of the resize filters.
btw, there are typo's in line 63, 65 and 67. Replace 156 with 204.
|
|
Tommyknocker Banned
Joined: 27 Apr 2002 Location: The State of Frustration
|
|
I did as you said and left the values as they were, only changing the path and file names and the typos you listed. I get this error message. What am I doing wrong?
_________________ Deck the halls with boughs of holly;
Fa la la la la la la la la!!!
|
|
Truman Moderator
Joined: 19 Feb 2001 Location: Berlin, Germany
|
|
the infamous access violation message... I don't know, make sure, you use Avisynth 1.0 beta6 and try to load a different AVI, maybe there is a corrupt frame. Also try to load the avs into TMPGEnc or an other app.
|
|
TerryToonz Member
Joined: 06 Feb 2001
|
|
Is it possible to use DeLogo in an Avisynth script?
|
|
Tommyknocker Banned
Joined: 27 Apr 2002 Location: The State of Frustration
|
|
You should be able to use any VDub tool.
_________________ Deck the halls with boughs of holly;
Fa la la la la la la la la!!!
|
|
TerryToonz Member
Joined: 06 Feb 2001
|
|
The problem is that the VD Delogo filter has a rather extensive GUI and I don't know how to apply it via Avisynth.
|
|
Truman Moderator
Joined: 19 Feb 2001 Location: Berlin, Germany
|
|
TerryToonz Member
Joined: 06 Feb 2001
|
|
tigerten Member
Joined: 15 Sep 2001
|
|
dear truman.
I am trying to use this guide to make my own animated menu. As you know i am realy new to the Avisynth thing. I hope you don't laught at my question.
can you possible explain to me the those arguments numbers(what they represent) in the following line to me?
vid=StackVertical(part1,part2,part3,part4,part5,part6,part7)
chap1in=Trim(vid,0,999).Animate(700,900,"BicubicResize",480,576,0,0.5,0,0,480,576,480,576,0,0.5,48,48,96,108)
chap1out=Trim(vid,1000,1499).Animate(100,300,"BicubicResize",480,576,0,0.5,48,48,96,108,480,576,0,0.5,0,0,480,576)
Thank you very much.
|
|
Truman Moderator
Joined: 19 Feb 2001 Location: Berlin, Germany
|
|
The filters work as follows:
Animate(start-frame,end-frame,"filtername",start-argument,end-argument)
BicubicResize(frame-target-width,frame-target-height[,b,c],
crop-sorce-left,crop-source-top,
frame-source-width,frame-source-height)
b and c are parameters to adjust the properties of two-part cubic (by Mitchel and Netravali read more about it if you like).
| Quote: |
chap1in=Trim(vid,0,999).Animate(700,900,"BicubicResize",480,576,0,0.5,
0,0,480,576,480,576,0,0.5,48,48,96,108)
chap1out=Trim(vid,1000,1499).Animate(100,300,"BicubicResize",480,576,
0,0.5,48,48,96,108,480,576,0,0.5,0,0,480,576)
|
Frame 0-700 the framesize is 480*576
From frame 701 to 900 the frame will get cropped lineary to a frame size of 96*108 of the original framesize. (crop left48,top48,right336,bottom420). At the same time the cropped frame will get resized lineary to keep a framesize of 480*576.
Short said, it zooms into a small part of the frame.
chap1out=zoom out this way.
It is quite hard to understand, because there are hundreds of numbers in the script. Also I think there might be a better solution than using the original Avisynth filters, because this method is damn slow. I am still testing Avisynth2. Maybe it is easier to do with the layer filter or even a logo filter. However, working with this script (a lot of trial and error, I know) will help to understand how Avisynth works.
Hope it helps so far.
|
|
eatin sammiches for lunch Member
Joined: 12 Sep 2001
|
|
tigerten Member
Joined: 15 Sep 2001
|
|
thank you so much for the explanation. It helps a lot. I have figured everything else except for this. I checked the reference guide for the arguments formats of both animation and bicubicresize, but couldn't figure out what is what. Now it is under my control cause i know what they are now.
thanks again.
Yes it is very slow. if you ever come up with something faster, please let us know.
This is by far the best guide i have ever seen in this forum. I am trying on other example you put here, hope they all work out. I also hope you will produce more guides like this for this forum.
I have another question regarding the "trim" filter of Avisynth. It started as i designed. But it won't stop until the whole clip is finished. for example, in the animated menu. the 6 small pictures. they don't finish at the same time ( they are of the same number of frames). in stead, the number 9 finishes first (cause it starts last), the number 1 will finish last. And they all will end up at the same frame?
Can you help me with that as well?
big=AVIsource("F:\video\Clips\sanxia.avi").Trim(0,600)
small=AVIsource("F:\video\Clips\sanxia.avi").BicubicResize(180,120)
small1=Trim(small,0,150)
small2=Trim(small,151,300)
small3=Trim(small,301,450)
small4=Trim(small,451,600)
x=720
height1=80
height2=120
height3=80
height4=120
height5=80
width1=120
width2=180
width3=120
width4=180
width5=120
part1=big.crop(0,0,x,height1)
part2a=big.crop(0,height1,width1,height2)
part2b=small1
part2c=big.crop(width1+width2,height1,width3,height2)
part2d=small2
part2e=big.Crop(width1+width2+width3+width4,height1,width5,height2)
part2=StackHorizontal(part2a,part2b,part2c,part2d,part2e)
part3=big.Crop(0,height1+height2,x,height3)
part4a=big.crop(0,height1+height2+height3,width1,height4)
part4b=small3
part4c=big.crop(width1+width2,height1+height2+height3,width3,height4)
part4d=small4
part4e=big.Crop(width1+width2+width3+width4,height1+height2+height3,width5,height4)
part4=StackHorizontal(part4a,part4b,part4c,part4d,part4e)
part5=big.Crop(0,height1+height2+height3+height4,x,height5)
vid=StackVertical(part1,part2,part3,part4,part5)
chap1in=Trim(vid,0,75).Animate(5,55,"BicubicResize",720,480,0,0.5,0,0,720,480,720,480,0,0.5,120,80,180,120)
chap1out=Trim(vid,76,150).Animate(5,55,"BicubicResize",720,480,0,0.5,120,80,180,120,720,480,0,0.5,0,0,720,480)
chap2in=Trim(vid,151,225).Animate(5,55,"BicubicResize",720,480,0,0.5,0,0,720,480,720,480,0,0.5,420,80,180,120)
chap2out=Trim(vid,226,300).Animate(5,55,"BicubicResize",720,480,0,0.5,420,80,180,120,720,480,0,0.5,0,0,720,480)
chap3in=Trim(vid,301,375).Animate(5,55,"BicubicResize",720,480,0,0.5,0,0,720,480,720,480,0,0.5,120,280,180,120)
chap3out=Trim(vid,376,450).Animate(5,55,"BicubicResize",720,480,0,0.5,120,280,180,120,720,480,0,0.5,0,0,720,480)
chap4in=Trim(vid,451,525).Animate(5,55,"BicubicResize",720,480,0,0.5,0,0,720,480,720,480,0,0.5,420,280,180,120)
chap4out=Trim(vid,526,600).Animate(5,55,"BicubicResize",720,480,0,0.5,420,280,180,120,720,480,0,0.5,0,0,720,480)
chap1=UnalignedSplice(chap1in,chap1out)
chap2=UnalignedSplice(chap2in,chap2out)
chap3=UnalignedSplice(chap3in,chap3out)
chap4=UnalignedSplice(chap4in,chap4out)
UnalignedSplice(chap1,chap2,chap3,chap4)
Subtitle("Chapter selection",200,450,0,45,"Arial",40,$FFFFFF)
Subtitle("chapter 1",250,150,50,100,"Arial",40,$FFFFFF)
Subtitle("_press 1_",250,450,50,100,"Arial",40,$FFFFFF)
Subtitle("chapter 2",250,150,200,250,"Arial",40,$FFFFFF)
Subtitle("_press 2_",250,450,200,250,"Arial",40,$FFFFFF)
Subtitle("chapter 3",250,150,350,400,"Arial",40,$FFFFFF)
Subtitle("_press 3_",250,450,350,400,"Arial",40,$FFFFFF)
Subtitle("chapter 4",250,150,500,550,"Arial",40,$FFFFFF)
Subtitle("_press 4_",250,450,500,550,"Arial",40,$FFFFFF)
Subtitle("Chapter selection",200,450,551,600,"Arial",40,$FFFFFF)
#ResampleAudio(44100)
|
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You can vote in polls in this forum
|
|