AviSynth脚本实例
一些简单实例
实例 1: 剪辑片段
# 这是一行注释.所有以符合'#'开头的行都是注释 # 并且将被AviSynth忽略. # 从脚本所在目录加载文件"somevideo.avi" AVISource("somevideo.avi") # "Trim" 确定哪些帧被保留.下面的一行语句保留帧 # [0, 12000], [20000, 32000], [44000, end] 并且将他们拼接在一起, # 有效地移除了帧[12001, 19999] 和 [32001, 43999] # # 提示: 区间表示法[a, b] 表示所有从a到b的帧,包括a和b # Trim(0, 12000) ++ Trim(20000, 32000) ++ Trim(44000, 0)
实例 2: 调整画面尺寸
AVISource("somevideo.avi") #将视频帧尺寸调整到 320x240 LanczosResize(320, 240)
实例 3: 混入音频
video = AVISource("somevideo.avi") #我们也可以用AviSynth加载 WAV 文件 audio = WAVSource("music.wav") #将视频和音轨混流 AudioDub(video, audio)
实例 4: 调整亮度,移除噪点,淡入淡出
AVISource("somevideo.avi") #"TemporalSoften"是众多降噪滤镜中的一种 TemporalSoften(4, 4, 8, scenechange=15, mode=2) #增加视频的gamma系数(与亮度有关) Levels(0, 1.2, 255, 0, 255) #从黑色淡入最开始的15帧 FadeIn(15) #将最后15帧淡出到黑色 FadeOut(15)
更复杂的一些实例
实例 5: poptones的图层实例
LoadPlugin("MPEG2DEC.dll") clip1 = Mpeg2Source("combine.d2v").Crop(16, 0, 688, 576).ConvertToRGB32 noise = AviSource("noise.avs").ConvertToRGB32 clip1 = clip1.Layer(noise, "add", 8, 0, 0, use_chroma=true) clip2 = clip1.Trim(125766, 0) clip = clip1.Layer(clip2, "add", 128, 0, 0, use_chroma=true).Trim(9180, \ 86780).AssumeFrameBased.ComplementParity.Bob #生成去logo图层 logosrc=AviSource("nologo.avi").Weave.ConvertToRGB32.BilinearResize(59,13) masklogo = AviSource("whitelogo.avi").ConvertToRGB32 logo = logosrc.Mask(masklogo).BilinearResize(60, 27) #现在遮盖掉那个丑陋的白色logo... clip = clip.Layer(logo, "add", 255, 582, 36, use_chroma=true) blur = clip.GeneralConvolution(0, "10 10 10 10 10 10 10 10 10 10 10 10 16 10 10 10 10 10 10 10 10 10 10 10 10") #sobel边缘检测算子... 矩阵的力量! hor = clip.GeneralConvolution(0, "-1 0 1 -2 0 2 -1 0 1") vert = clip.GeneralConvolution(0, "-1 -2 -1 0 0 0 1 2 1") edgemask = hor.Layer(vert,"lighten",255,0,0,1) #现在锐化模糊画面的边缘... clip = clip.Mask(edgemask) clip = blur.Layer(clip, "add", 128, 0, 0) return clip
实例 6: 利用”flash to images”将视频输出到图片集
params.avs
filename="somefile.avi" logfile="output.txt" path="P:\ath\To\Files\" lumathresh=80 imageprefix="prefix_"
FindFlash.avs
Import("Params.avs") AviSource(path+filename).ConvertToYV12 WriteFileIf(path+logfile, "(AverageLuma>lumathresh) && \ (YDifferenceToNext() > 0)", "current_frame","space", "current_frame")
SaveFlash.avs
Import("Params.avs") AviSource(path+filename) ScriptClip(""" ImageWriter(path+imageprefix,myvar, myvar, "bmp",false) """) ConditionalReader(path+logfile, "myvar", false)
转载请注明: 转载自MeGUI中文版博客