脚本示例
(重定向自脚本范例)
这里有一些 AviSynth 脚本示例,它们是按复杂程度分类的。首先下载并安装 AviSynth,然后将这些脚本以扩展名“.avs”保存,这样就可以在您最喜欢的视频播放器或编辑器中载入了。
目录
简单的示例
例 1:剪辑片段
# 这是注释。 # 注释行需以“#”符号开头,它们将被 AviSynth 忽略。 # 载入与本脚本同目录的文件“somevideo.avi” AVISource("somevideo.avi") # Trim 指定要保留的帧。 # 下面几行保留区间 [0, 12000]、[20000, 32000]、[44000, 结尾] 的帧 # 并将它们连接起来,也就是移除区间 # [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") # 也可以载入 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 的 Layer 用法示例
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:将整个视频中的闪光画面写为图像
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)
参阅
- 请参阅 AviSynth 社群编撰的 共享功能(以及外部插件)