AviSynth2.5疑难解答

出自NMM Doc
跳转到: 导航, 搜索

本页翻译:秋月くれは

目录

AviSynth2.5疑难解答

当遇到问题时请首先阅读下面的文字

安装问题

如果AviSynth工作时您遇到了问题,请首先尝试下面的脚本

Version()

然后用Windows Media Player 6.4(文件名是”mplayer2.exe”,位于”C: \Program Files\Windows Media Player”文件夹中,注意其他版本的WMP是无效的)。如果您能看到一段显示Avisynth版本号和版权说明文字的视频,说明AviSynth已被正确安装。

如果这样不能工作,您可以尝试下面的方法:

其他问题

使用AviSynth创建脚本并非永远都很简单,有时候AviSynth会输出非常奇怪的结果。以下是一个有助于您解决最常见错误的简短指导。

简化书写

如果AviSynth输出了奇怪的结果,尝试简化您的脚本。尝试把您的脚本写成尽可能多行的形式。这将有助于您确认问题,比如:

video = AviSource("file23.avi").ConvertToYUY2().Trim(539,8534)
return AudioDub(Blur(video,1.5).Reduceby2().Bilinearrresize(512,384),Wavsource("file23.wav").AmplifyDB(4.5)

上述语句的可读性显然不如下面的语句

AviSource("file23.avi")
ConvertToYUY2()
Trim(539, 8534)
Blur(video, 1.5)
Reduceby2()
Bilinearrresize(512, 384)
AudioDub(Wavsource("file23.wav"))
AmplifyDB(4.5)

另外,这还有一些好处,您将能更轻松的

随时检查参数

如果您使用的一个滤镜得到了意料之外的结果,请尝试使用最简单的参数。请随时通过AviSynth的主页或者随AviSynth安装的文档检查您内置滤镜的相关信息。

请确认您使用了和文档描述中相同类型的参数。最常见的一种错误是与所有滤镜的第一个参数-视频文件(clip)有关的。请确认您已熟知“后入为主”的原则,如果您没有指定“最后的视频文件(last clip)”,大多数滤镜都会返回一个“无效参数”的错误。

如果您最后一个滤镜的输出赋值给了一个变量,并且不存在“最后的视频剪辑”,您将得到一个“滤镜的返回值不能是一个视频文件(clip)”的错误,比如:

video = AviSource("file.avi")
audio = WavSource("file.wav")
combined = AudioDub(video, audio)

这是一个错误脚本,下面的写法能解决这个问题:

video = AviSource("file.avi")
audio = WavSource("file.wav")
AudioDub(video, audio)

现在此处的“最后”一条指令(last)包含了一个视频剪辑,或者这样:

video = AviSource("file.avi")
audio = WavSource("file.wav")
combined = AudioDub(video, audio)
return combined

现在此处为返回一个变量,甚至可以这样:

video = AviSource("file.avi")
audio = WavSource("file.wav")
return AudioDub(video, audio)

使用VirtualDub测试脚本

经常使用VirtualDub或改进的VirtualDubMod去测试您的脚本。这是所有开发者测试AviSynth功能时使用的方法。AviSynth当然也能在和其他程序上运行,但如果您在其他程序上运行AVS脚本返回了错误,这经常并非AviSynth本身所致,而是受到了您使用软件内部的限制。

这些限制常常和下面因素有关:

单步检查脚本

正如同在上面#简化书写中说提到的,如果脚本有问题,单步检查您的每句脚本永远是一个正确的选择。

您可以通过在句首(或在滤镜处理前)添加“#”注释掉一个或多个滤镜。这是让AviSynth忽略该句(以及这之后所有行)的方法。

您可以在脚本的任意位置添加“return last”或“return myvariable”语句。

您可以通过在脚本的任何位置添加[Info()滤镜]获得现阶段滤镜所得的图像和音频。

检查您自动装载插件目录下的文件

一般而言,自动装载的插件总能正确工作,但您绝不能在此目录下进行以下操作:

您同时必须记住,位于您插件文件夹下的所有AVSI文件都会被自动装载到您的脚本中。这是一个允许您使用您自己撰写(或借用他人撰写)的函数而不需要复制粘贴它们的声明定义到每个脚本中的功能。 注.在旧AviSynth版本中(直到2.0.7),所有位于您插件文件夹下的AVS文件都被自动包含在您的脚本中。这也意味着您可能复制到插件文件夹下的任何实例脚本都会被自动包含在您的脚本中,而这有可能产生错误(在旧版本中)!

一般而言,在任何AVSI(早期为AVS)文件中,没有包括在函数中的指令都是有问题的。

AVSI和DLL以外的其他文件格式会被忽略,所以可以安全的把您的文档放在插件文件夹下。

如何清空插件文件夹?只需要创建一些子目录(比如”hide”)然后把全部(或部分)文件移动到这个子目录下。请记住一些文件(DirectShowSource.dll, TCPDeliver.dll插件, ColorRGB.avsi)是AviSynth的组成部分(从2.5.6版起)。

使用相对保守的图像尺寸

如果您遇到图像碎裂,请尝试使用相对保守的帧大小,也就是说,使用高度和宽度都能被16整除的大小(译者注:MOD16)。在许多场合,使用不能被2整除的图像尺寸会产生问题,应当永远避免这种用法。

但,如果您确实发现用某些特定图像尺寸时会产生问题,请提交一份BUG报告。请参照下面的提交方法。

最后请查看AviSynth常见问题解答

如果您的问题仍然得不到解决(在某些解码器中载入脚本或色彩空间错误),请参阅Avisynth2.5_FAQ,特别是 Q2.4:解码器X读取AVS文件有问题? 同时也请确认已查看Q1.4: 当前版本的主要缺陷是什么?

BUG报告/寻求帮助

在能提供有效的帮助前我们需要您提供很多信息。如果您没有向我们提供这些信息,这等于给我们了一个无法为您提供帮助或者定位错误的绝佳机会。

务必确认提供了下列信息:

BUG报告可以提交到AviSynth2的SourceForge Project页面。提交前请先在该页面确认是否存在和您遇到情况相近的BUG,请注意这确实是有可能的。外部插件的错误应提交给插件作者,而不是给我们。

一个能获得帮助的好地方是Doom9论坛。请在提出问题前先搜索论坛是否有相关讨论,那里有很多讨论主题!如果有,您可以直接参加讨论。

个人工具
名字空间
动作
导航
工具箱
其他资源