张光清:AviSynth怎么用,以及使用方法详细解答
黄欣怡的回答:
AviSynth(AVI合成器)是一个功能强大无比的基于avs脚本文件的视频处理与帧服务软件,建立.avs文件索引输出,还有强大的脚本滤镜功能,很多编辑软件可以支持。本文详细介绍了AviSynth的使用方法. 一、如何加载插件 1.SetWorkingDir() 指定插件路径 如: SetWorkingDir("D:\AviSynth 2.5\plugins\") 2.LoadPlugin() 加载插件 如: LoadPlugin("VSFilter.dll") 加载字幕插件 LoadPlugin("mpeg2dec3.dll") 加载DVD的mpeg2编码器插件 LoadPlugin("mpasource.dll") 加载mp3插件 二、源媒体怎么读取 1.DirectShowSource() 万能调用 如: DirectShowSource("e:\vob\ss.VOB") 2.AVISource() avi文件调用 如: AVISource(e:\avi\1.avi,false) 3.MPEG2source() 这个用于解码DVD的mpeg2格式的视频 如: MPEG2source("XXX.d2v") 4.WAVSource("e:\vob\ss.wav") 读取wave音频 5.AC3Source("e:\vob\ss.ac3") 读取ac3音频 6.MPASource("e:\vob\ss.mp3") 读取mp3音频 7.Convertfps=true 转换帧率 如: DirectShowSource("e:\vob\ss.vob",Conertfps=true) 表示不指定帧率,适用于RMVB、WMV 注:WAVSource和AVISource是属于核心脚本,无须读取插件,但AC3Source和MPASource需要读取AC3Source和MPASource插件 DirectShowSource的读取需要安装各种音频和视频的解码器 三、Crop()、LanczosResize()、SimpleResize()、AddBorders() 裁黑边、调整大小、调整大小、加黑边 1.Crop() 裁黑边 (左,上,长,宽) 如: Crop(8,0,704,480) 左右各切去8像素,上下各切去0像素 原分辨率720*480 2.LanczosResize() 调整大小 (长,宽) 画质锐利、真实,适合普通电影 如: LanczosResize(640,480) 3.SimpleResize() 调整大小 (长,宽) 画质柔和,适合动画 如: SimpleResize(640,480) 4.AddBorders() 加黑边 (左,上,右,下) 如: AddBorders(0,64,0,64) 四、画面滤镜 1.Levels() 层次 亮度、对比度(1.3~2之间较合适)、Gamma值(调节画面亮暗)如: Levels(0,1.5,255,0,255) 2.Tweak() 调整 色度、饱和度、亮度、对比度 色度:-180.0~180.0 默认0.0 正数趋向红色,负数趋向绿色 饱和度:0.0~10.0 默认1.0 0.0为黑白 亮度:-255.0~255.0 默认0.0 一般调节在0~30之间,以15~20为宜 对比度:0.0~10.0 默认1.0 如: Tweak(0,1,20,1) 3.FadeIn()、FadeOut() 淡入、淡出 (帧)如: FadeIn(24)、FadeOut(24) 4.Trim() 截取 某段影片 (开始帧,结束帧)如: Trim(240,480) 五、声音滤镜 1.AudioDub() 合并影音 (视频,音频)如: Video=AVISource("xxx.avi",False,"YUY2") False为关闭视频中的音频 YUY2为色彩模式 Audio=WAVSource("xxx.wav") AudioDub(Video,Audio) 2.GetChannel()、GetLeftChannel()、GetRightChannel() 获取声道 如: Stereo=WavSource("test.wav") Return GetChannel(stereo) 返回test.wav的左声道 Stereo=WavSource("test.wav") Return GetLeftChannel(stereo) 返回test.wav的声道 3.DelayAudio() 延迟声音 由于从VOB里分离的AC3通常有延迟,所以用Azid转码得到的WAV也有延迟,在用AudioDub合并时就需要加上这个延迟 如: WAVSource("test.wav").DelayAuido(0.5) 把test.wav延迟0.5秒 DelayAudio(wavsource("text.wav"),-30) 把test.wav延迟30毫秒 +表示提前 4.ResampleAudio() 音频重新采样 如: WAVSource("text.wav").ResampleAudio(48000) 重新采样率48000Hz 5.AmplifydB() 声道音量缩放 如: AmplifydB(WAVSource("text.wav"),4,-3) 左声道音量放大4dB,右声道音量减小3dB AmplifydB(WAVSource("text.wav"),4,0,-3) 左声道音量放大4dB,中声道音量放大0dB,右声道音量减小3dB 6.MergeChannels() 组合左、右声道 如: Left=WAVSource("C:\1.wav").GetLeftChannel Right=WAVSource("C:\2.wav").GetRightChannel MergeChannels(Left,Right) 六、字幕滤镜 1.VobSub() Sub字幕 将字幕的2个文件test.idx和test.sub放在同一个目录下 如: LoadPlugin("VobSub.dll") VobSub("test")或VobSub("e:\vob\ test.idx") 2.TextSub() SSA和ASS字幕 如: LoadPlugin("TextSub.vdf") TextSub("h:\avs\jrvs.ssa") 加载水印文本 LoadPlugin("VSFilter.dll") TextSub("F:\DVD\js60\js601.srt") 加载srt字幕 七、色彩模式转换 1.ConvertToRGB32、ConvertToRGB24、ConvertToRGB、ConvertToYUY2、ConvertToYV12 如: AVISource("text.avi","YUY2")=AVISoerce("text.avi").ConvertToYUY2 八、其它虑镜 1.截图 连续截图、截取特定Frame 格式bmp,、dds、jpg/jpe/jpeg、pal、pcx 如: DirectShowSource("E:\VIDEO\text.mp4",fps=23.970).ConvertToRGB32 trim(1,10) ImageWriter("D:\ever\",0,0,"jpg") 连续截图 截取影片选段中的第0帧到第9帧图像(全部帧) DirectShowSource("E:\VIDEO\text.rmvb",convertfps=true).ConvertToRGB24 trim(1,10) ImageWriter("D:\ever\",3,7,"jpg") 连续截图 截取影片选段中的第4帧到第8帧图像 DirectShowSource("E:\VIDEO\text.mp4",fps=23.970).ConvertToRGB trim(10,10) ImageWriter("D:\ever\",0,0,"jpg") 截取特定Frame 截取整个影片的第11帧 DirectShowSource("E:\VIDEO\text.rmvb",convertfps=true).ConvertToRGB24 trim(1,10) ImageWriter("D:\ever\",4,4,"jpg") 截取特定Frame 截取影片选段中的第5帧(整个影片的第6帧) 九、常见外置滤镜 (1)源文件滤镜 1.MPEG2Dec 读取DVD2AVI产生d2v工程文件,内建去除Noise的TemporalSmoother 如: LoadPlugin("MPEG2Dec.dll") MPEG2Source("test.d2v") 2.MPEG2Dec2 支持P4的SSE2指令集,用文本编辑工具打开d2v,把iDCT_Algorithm=?改成5 速度快,效果好 如: LoadPlugin("MPEG2Dec2.dll") MPEG2Source("test.d2v") 3.MPEG2Dec3 加入Nic的图像后处理(PP),一定程度减少Noise,好像除了P4的SSE2外,还加入了AMD的3D Now!优化,目前还在开发中 如: LoadPlugin("MPEG2Dec3.dll") MPEG2Source("test.d2v",CPU=4) CPU=4开启PP模式 (2)处理滤镜 1.ColorYUY2 颜色补偿 如: LoadPlugin("ColorYUY2.dll") ColorYUY2(0,10,0,10,0,0,0,0,0) 2.ChangeFPS() 改变帧率 如: ChangeFPS(23.976) 数值12、15、20、23.976、24、25、29.970、30 3.UnDot() 消除噪点 可用一个或多个,可连用 如: LoadPlugin("UnDot.dll") DirectShowSource("test.avi") UnDot() LanczosResize(480,272) UnDot() LoadPlugin("UnDot.dll") DirectShowSource("test.avi") UnDot().UnDot().UnDot().UnDot() 4.KenKunNR() 降噪 threshold=1 to 3,数值越大,强度越大 如: LoadPlugin("WarpSharp.dll") KenKunNR(threshold=1) 5.FluxSmooth() 柔化 兼有降噪 降噪作用稍强于UnDot() 如: LoadPlugin("FluxSmooth.dll") FluxSmooth(5,7) 一般使用默认(5,7) 6.SpatialSoften() 空间轴柔化 (柔化程度,亮度域值,色彩域值)如: SpatialSoften (4,8,8) 柔化程度数值不要太大,2-5之间,亮度域值、色彩域值需测试调节 7.TemporalSoften() 时间轴柔化 如: TemporalSoften(2,3,3,mode=2,scenechange=6) 一般使用这个参数 8.Convolution3D() 3D柔化 一般动画用animeHQ,电影用movieHQ 如: LoadPlugin("Convolution3d.dll") Convolution3D("movieHQ") 电影 Convolution3D("animeHQ") 动画 9.Deen() 锐化 兼有降噪 如: LoadPlugin("deen.dll") Deen("c2d",2,3,3) 较轻 Deen("a3d",3,3,1,3) 较轻 Deen("c2d",2,6,6) 中等 Deen("a3d",3,6,1,6) 中等 Deen("c2d",2,10,12) 强力 Deen("a3d",3,10,1,12) 强力 10.Sharpen() 锐化 数值越大,效果越强 如: Sharpen(0.2) 一般取0.2~0.3 11.WarpSharp() 锐化 主要改动depth、bump两个数值 如: LoadPlugin("WarpSharp.dll") WarpSharp(depth=30,blur=2,bump=40,cubic=-0.6) 越下面的线条越细 WarpSharp(depth=40,blur=2,bump=60,cubic=-0.6) WarpSharp(depth=60,blur=2,bump=96,cubic=-0.6) 全屏的时候,明显感觉出锯齿 12.Blur() 模糊 参数范围-1.0~1.58 负数为清晰 可以连续加载,可以结合MergeChroma或MergeLuma使用 如: Blur(0,1).Blur(0,1) MergeLuma(Blur(0,1)Blur(0,1))Blur(-1) 相当于锐化滤镜 Blur(-0.9,1) 水平清晰,竖直模糊 竖直模糊更具有线条感 Blur(1.3,-0.7) 水品模糊,竖直清晰 13.柔化滤镜可以参考一些自动生成的模板 片源不好就按需选用,尽量少用,或者不用 如: little Noise TemporalSoften(2,3,3,mode=2,scenechange=6) MergeChroma(blur(1.3))=MergeLuma(blur(1.0)) FluxSmooth(5,7) Medium Noise TemporalSoften(3,5,5,mode=2,scenechange=10) Convolution3D("moviehq") FluxSmooth(7,7) Heavy Noise Temporalsoften(4,8,8,mode=2,scenechange=10) Convolution3D("movielq") FluxSmooth(10,15) (3)交错滤镜 1.Decomb 包含IVTC、Deinterlace滤镜 IVTC(Inverse Telecine) 将DVD或VCD记录的29.976fps(NTSC)或25fps(PAL)的隔行信号还原为胶片的23.976fps的逐行信号,可有效消除影片的“拉丝(Interlace)”现象、平滑减少每秒内的帧数,以获得画面质量与码流的最佳比例 Deinterlace反交错,恢复逐行扫瞄图像 参数如: Guide 0~2 默认0 NTSC用1,PAL用2,可以提高IVTC准确度 Gthresh 0~100 默认15 控制区分不同帧的程度 Post 默认true 用来处理IVTC遗漏的细节,使画面略微模糊 Threshold 0~255 默认15 控制post的程度 Dthreshold 0~255 默认9 控制threshold判定IVTC遗漏的程度 Blend 默认true 在交错画面用渲染来替代填充 Chroma 默认false 在交错画面的亮度色度调整 Cycle 2~25 默认5 每n帧删除1帧,NTSC选5,PAL选25 Mode 0~2 默认2 Mode=0 对Cycle里最相近的帧不进行处理 Mode=1 对Cycle里最相近的帧进行处理,用于处理混合帧速 Mode=2 在一个很长的范围里进行帧对比,可以正确处理动画里由8帧或12帧复制为29.97帧的情况 Threshold 默认0 控制mode=1时的处理重复帧的程度,Threshold默认100,控制mode=2时的处理重复帧的程度 Quality 0~3 默认2 采样和色度的质量,与速度成反比 如: LoadPlugin("Decomb.dll") Telecide(Guide=1,Gthresh=50,Chroma=True,Quality=3,Post=false) Decimate(cycle=5) NTSC 3:2 PullDown LoadPlugin("Decomb.dll") Telecide(Guide=1,Gthresh=50,Chroma=True,Quality=3,Post=false) Decimate(Cycle=5,Mode=2) NTSC Progressive和Interlaced混合 LoadPlugin("Decomb.dll") Telecide(Guide=2,Gthresh=50,Chroma=True,Quality=3,Post=false) Decimate(Cycle=25) PAL 十、实例 (一)截边、改变分辨率 Avisource("H:\xx.avi").crop(5,20,630,440).lanczosresize(640,352) Corp 与 Lanczosresize 两者顺序不能变 Corp切黑边,把一个640*480分辨率的片源,左右各切去5,上下各切去20,数值为(5,20,630,440)<左,上,长,宽> Lanczosresize 改变分辨率 (长,宽) 压RMVB如要改小分辨率的话建议:704*396的片源用576*324,640*480的片源用512*384 尤其是DVD转RMVB,通常拷贝出来的VOB都带有大片黑边,一定要切黑边否则压时浪费码率 另外比较保险的分辨有640*352,640*272 切边还可用 Easy Realmedia Producer(简称:ERP)里面的功能,方便一些 或是用gk里的功能,可以计算失真 用ERP打开片源>参数设置>设置裁切区域>手动调节,用鼠标拖动红色边框,Inpug Preview为预览 (二)合并输出 v1=trim(avisource("H:\RAW\武器\9.avi",false).changefps(23.976),0,767) false关闭音频 通常 After Effects 做的特效都是无声的,所以要关闭片源音频 changeFPS(23.976)强制显示帧数 合并的前提:必需帧数统一 要截取的帧数可以用 VDM 查看 v2=trim(avisource("H:\字幕存储\武器\op.avi",false).changefps(23.976),0,225) AE做的特效,事先用VDM得知为226帧 v3=trim(avisource("H:\RAW\武器\0.avi",false).changefps(23.976),994,0) 三个语句分别是:截取片源0~767帧、截取AE特效全部帧、截取片源994~最后帧 即是切去片源中间一段,并用 AE 特效代替 a=v1+v2+v3 Return a.textsub("H:\09.ass").textsub("H:\武器op09.ass") 若片源分辨率不一样,需统一分辨率 v1=trim(avisource("H:\RAW\wuqi\9.avi",false).changefps(23.976).lanczosresize(704,396),0,767) 最终输出结果为无声,AVI 内嵌时使用 RMVB 内嵌直接加挂音频 Loadplugin("H:\plugin\mpasource.dll") v4=mpasource("H:\wav\武器\09.mp3") Audiodub(a,v4) 注:这样加载的音频在压 RMVB 时,音频设置最好不用 RA10 PLUS 用 RA10 PLUS.48Kbps压出来音频头一两分钟是无音的,RA8 没问题 120帧的片源的截切 强制显示23.976帧,再用 VDM 打开看帧序号 合并时 AE 特效也要用这个帧率 AVS 切广告再合并AE特效 因牵扯到音频,所以得先处理音频 如:0~100帧是AE特效,无声 300~350是广告 切了广告的部分再合并AE特效,视频部分完成 因 AE 特效无声,音频就要另写一脚本提取 即将原片源的广告切除的脚本,不禁声音,然后用 VDM 打开,保存 WAV 音频 120帧的片源的压缩 直接强制帧数:Changefps(23.976) 另一个:Selectevety(5,0)