当前位置: 首页 > 工具软件 > AviSynth > 使用案例 >

AviSynth脚本实例

何骞尧
2023-12-01

一些简单实例

实例 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中文版博客

本文链接地址: http://keith70.u.sourceforge.net/?p=393

转载于:https://www.cnblogs.com/keith70/archive/2012/02/17/2356411.html

 类似资料: