腳本示例

出自NMM Doc
於 2011年5月29日 (日) 01:17 由 XsLiDian對話 | 貢獻 所做的修訂 →‎例 6:将整个视频中的闪光画面写为图像
(差異) ←上個修訂 | 最新修訂 (差異) | 下個修訂→ (差異)
跳至導覽 跳至搜尋

這裏有一些 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) 

參閱