<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh">
	<id>https://www.nmm-hd.org/d/index.php?action=history&amp;feed=atom&amp;title=AviSynth2.5%E5%88%9D%E6%AD%A5%E4%BA%86%E8%A7%A3</id>
	<title>AviSynth2.5初步了解 - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://www.nmm-hd.org/d/index.php?action=history&amp;feed=atom&amp;title=AviSynth2.5%E5%88%9D%E6%AD%A5%E4%BA%86%E8%A7%A3"/>
	<link rel="alternate" type="text/html" href="https://www.nmm-hd.org/d/index.php?title=AviSynth2.5%E5%88%9D%E6%AD%A5%E4%BA%86%E8%A7%A3&amp;action=history"/>
	<updated>2026-04-18T03:11:39Z</updated>
	<subtitle>本wiki的该页面的版本历史</subtitle>
	<generator>MediaWiki 1.36.1</generator>
	<entry>
		<id>https://www.nmm-hd.org/d/index.php?title=AviSynth2.5%E5%88%9D%E6%AD%A5%E4%BA%86%E8%A7%A3&amp;diff=880&amp;oldid=prev</id>
		<title>XsLiDian：+ Category:AviSynth 使用</title>
		<link rel="alternate" type="text/html" href="https://www.nmm-hd.org/d/index.php?title=AviSynth2.5%E5%88%9D%E6%AD%A5%E4%BA%86%E8%A7%A3&amp;diff=880&amp;oldid=prev"/>
		<updated>2011-05-28T17:13:14Z</updated>

		<summary type="html">&lt;p&gt;+ &lt;a href=&quot;/doc/Category:AviSynth_%E4%BD%BF%E7%94%A8&quot; title=&quot;Category:AviSynth 使用&quot;&gt;Category:AviSynth 使用&lt;/a&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;zh&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;←上一版本&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;2011年5月28日 (六) 17:13的版本&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l146&quot;&gt;第146行：&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;第146行：&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; 　　　&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; 　　　&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Category:AviSynth 使用]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key NMM_wiki-wiki_:diff::1.12:old-68:rev-880 --&gt;
&lt;/table&gt;</summary>
		<author><name>XsLiDian</name></author>
	</entry>
	<entry>
		<id>https://www.nmm-hd.org/d/index.php?title=AviSynth2.5%E5%88%9D%E6%AD%A5%E4%BA%86%E8%A7%A3&amp;diff=68&amp;oldid=prev</id>
		<title>Dgwxx：New page: ===视频编辑===  　　基本上来说，AviSynth是这样工作的：首先，你会创建一个包含命令的简单文本文档，它叫做脚本。这些命令代表若干个你想...</title>
		<link rel="alternate" type="text/html" href="https://www.nmm-hd.org/d/index.php?title=AviSynth2.5%E5%88%9D%E6%AD%A5%E4%BA%86%E8%A7%A3&amp;diff=68&amp;oldid=prev"/>
		<updated>2008-09-05T09:51:30Z</updated>

		<summary type="html">&lt;p&gt;New page: ===视频编辑===  　　基本上来说，AviSynth是这样工作的：首先，你会创建一个包含命令的简单文本文档，它叫做脚本。这些命令代表若干个你想...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;===视频编辑===&lt;br /&gt;
&lt;br /&gt;
　　基本上来说，AviSynth是这样工作的：首先，你会创建一个包含命令的简单文本文档，它叫做脚本。这些命令代表若干个你想要的视频以及想要运行的滤镜。然后，当你运行一个视频程序，例如VirtualDub，并且打开刚才的脚本时，AviSynth就会运作起来。它会加载脚本中的视频，并且运行指定的滤镜，然后将结果输出给视频程序。然而视频程序并不知道AviSynth在后台运行，而是以为自己在直接读取一个硬盘上的AVI文件。&lt;br /&gt;
&lt;br /&gt;
　　AviSynth2增加了很多新功能，为了突出这些功能（尤其因为他们在以前的文章中都没有被完好阐述过），我们在这篇文章中把它们标记为&amp;lt;font color=&amp;quot;#F000F0&amp;quot;&amp;gt;v2&amp;lt;/font&amp;gt;''。&lt;br /&gt;
&lt;br /&gt;
　　由于v2.5在内核上做了较大的升级，请在使用前仔细阅读AviSynth v2.5。相关升级都被标记为&amp;lt;font color=&amp;quot;#F000F0&amp;quot;&amp;gt;v2.5&amp;lt;/font&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
====线性编辑：====&lt;br /&gt;
&lt;br /&gt;
　　在AVISynth里能做的最简单的事就好比在VirtualDub里的编辑视频。因为这些语句都太好写了，不需要担心变量以及复杂的表达式。&lt;br /&gt;
&lt;br /&gt;
　　作为测试，请先创建一个文件命名为“test.avs”，然后输入如下一行文字：&lt;br /&gt;
&lt;br /&gt;
 Version&lt;br /&gt;
&lt;br /&gt;
　　现在用Windows Media Player或其他来打开这个文件，你会看到一个10秒钟的写有AVS版本号及版权信息内容的视频片段。&lt;br /&gt;
&lt;br /&gt;
　　Version叫做“源滤镜”，这意味着它的作用是生成片段而非修改。在AVISynth脚本中第一个命令永远是源滤镜。&lt;br /&gt;
&lt;br /&gt;
　　现在加入第二句，让它看起来是这样：&lt;br /&gt;
&lt;br /&gt;
 Version&lt;br /&gt;
 ReduceBy2&lt;br /&gt;
&lt;br /&gt;
　　在Media Player中再次打开这个文件，你应该还可以看到那些版权信息，不过只有以前的一半大小。'''ReduceBy2'''是一个“变换滤镜”，它会以某种方式改变原有的视频片段。你可以连续使用多个变换滤镜就好像在VirtualDub里一样。&lt;br /&gt;
&lt;br /&gt;
　　让我们再加一句使视频变成淡出至黑色的结尾，它应该是这个样子：&lt;br /&gt;
&lt;br /&gt;
 Version&lt;br /&gt;
 ReduceBy2&lt;br /&gt;
 FadeOut(10)&lt;br /&gt;
&lt;br /&gt;
　　现在再次打开文件，片段的前9秒应该是一样的，而最后一秒会平滑的淡出到黑色。&lt;br /&gt;
&lt;br /&gt;
　　FadeOut滤镜需要一个数值，用来代表淡出所需的帧数。&lt;br /&gt;
&lt;br /&gt;
　　渐变开始之前的时间太长了，所以我们需要修剪视频的起始部分以减少等待的时间。&lt;br /&gt;
&lt;br /&gt;
　　我们扔掉前120帧，保留120-150帧：&lt;br /&gt;
&lt;br /&gt;
 Version&lt;br /&gt;
 ReduceBy2&lt;br /&gt;
 # 砍掉前119帧，保留120-150帧&lt;br /&gt;
 # (AVISynth的起始帧数是从0算起的)&lt;br /&gt;
 Trim(120,150)&lt;br /&gt;
 FadeOut(10)&lt;br /&gt;
&lt;br /&gt;
　　在这个例子中，我们第一次使用了注释。&lt;br /&gt;
&lt;br /&gt;
　　注视以”#”开头，一直到最后一个字母结束，是被AVISynth完全忽视掉的。Trim滤镜需要两个数值，以逗号“,”(英文半角，AVS脚本内一切皆为英文半角)分开，两个数分别代表视频中要保留的起始帧和中止帧，若最后一帧输入的是0，就代表到视频片段的最后一帧。所以如果要砍掉前119帧，可以输入Trim(120,0)。&lt;br /&gt;
&lt;br /&gt;
　　像这样把帧数仔细记录真是一件麻烦事，在VirtualDub等这样的程序里直接打开一个部分完成的脚本就方便多了，它会把帧数都为你显示出来。你还可以用ShowFrameNumber滤镜，它会把帧数直接打在视频上。&lt;br /&gt;
&lt;br /&gt;
　　其实实际使用中在AVISynth里有一个比Version实用很多的源滤镜，就是AVISource，它用来从硬盘中读取一个AVI（或其它视频格式）的文件。如果你手头上已经有了一个AVI文件，那么你可以试试把这些相同的滤镜加到你的文件上。&lt;br /&gt;
&lt;br /&gt;
 AVISource(&amp;quot;d:\capture.avi&amp;quot;)  # 这里要写你实际的路径和文件&lt;br /&gt;
 ReduceBy2&lt;br /&gt;
 FadeOut(15)&lt;br /&gt;
 Trim(120,0)&lt;br /&gt;
&lt;br /&gt;
　　只有单独一行AVISource命令的脚本可以为只支持小于2GB文件的视频程序提供大于2GB文件的支持。&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
====非线性编辑：====&lt;br /&gt;
&lt;br /&gt;
　　好了我们到了有趣的部分了，建立一个有如下语句的AVS文件：&lt;br /&gt;
&lt;br /&gt;
 StackVertical(Version, Version)&lt;br /&gt;
&lt;br /&gt;
　　打开它，结果是这样：输出的视频中有两行一模一样的版本信息，一行在另一行之上。&lt;br /&gt;
&lt;br /&gt;
　　StackVertical不需要数值或是字符串作为参数，而是需要视频剪辑。在以上语句当中Version滤镜被两次调用，每一次都返回给StackVertical一个版本信息的视频，于是StackVertical把它们拼在一起（不管那视频从哪儿来的）。&lt;br /&gt;
&lt;br /&gt;
　　UnalignedSplice也是有用的此类滤镜之一，它可以将视频剪及首尾相接，这段语句就是将3段视频（例如可能是AVI_IO生成的）读取并连接在一起：&lt;br /&gt;
&lt;br /&gt;
 UnalignedSplice(AVISource(&amp;quot;d:\capture.00.avi&amp;quot;), \&lt;br /&gt;
   AVISource(&amp;quot;d:\capture.01.avi&amp;quot;), \&lt;br /&gt;
   AVISource(&amp;quot;d:\capture.02.avi&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
　　StackVertical和UnalignedSplice都可以接受少到两个多到六七十个的视频。你也可以用加号“+”代替UnalignedSplice，作为速记。&lt;br /&gt;
&lt;br /&gt;
　　比如说这段语句，与上段语句的功能是一样的：&lt;br /&gt;
&lt;br /&gt;
 AVISource(&amp;quot;d:\capture.00.avi&amp;quot;) + \&lt;br /&gt;
   AVISource(&amp;quot;d:\capture.01.avi&amp;quot;) + \&lt;br /&gt;
   AVISource(&amp;quot;d:\capture.02.avi&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
　　现在假设你的一个程序捕捉到的视频存到了多个AVI片段里，但音频又存到了一个单独的WAV文件里，你能把他们重新组合在一起么？你说呢：&lt;br /&gt;
&lt;br /&gt;
 AudioDub(AVISource(&amp;quot;d:\capture.00.avi&amp;quot;) + \&lt;br /&gt;
   AVISource(&amp;quot;d:\capture.01.avi&amp;quot;) + \&lt;br /&gt;
   AVISource(&amp;quot;d:\capture.02.avi&amp;quot;), \&lt;br /&gt;
   WAVSource(&amp;quot;d:\audio.wav&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===语法===&lt;br /&gt;
&lt;br /&gt;
====表达====&lt;br /&gt;
&lt;br /&gt;
　　一个AVISynth的脚本当中会有形如以下的陈述：&lt;br /&gt;
&lt;br /&gt;
 variable_name = expression  （变量名 = 表达）&lt;br /&gt;
&lt;br /&gt;
　　在这个例子当中expression被求值并将结果赋予variable_name&lt;br /&gt;
&lt;br /&gt;
　　还有一个很重要的省略形式：&lt;br /&gt;
&lt;br /&gt;
 expression&lt;br /&gt;
&lt;br /&gt;
　　以上语句当中expression被求值并将结果赋予一个特殊的视频片段变量last。&lt;br /&gt;
&lt;br /&gt;
　　功能与以下语句相同：&lt;br /&gt;
&lt;br /&gt;
 last = expression&lt;br /&gt;
&lt;br /&gt;
　　结尾通常是这样：&lt;br /&gt;
&lt;br /&gt;
 return expression&lt;br /&gt;
&lt;br /&gt;
　　在这里expression被求值并用作了这个脚本的返回值，也就是说，若这个AVS文件被打开，视频程序看到的仅是这个值的视频片断。&lt;br /&gt;
&lt;br /&gt;
　　若返回值没有被特意指派，那么last的值就会被用作返回值。&lt;br /&gt;
&lt;br /&gt;
　　基本的调用函数的表达如下：&lt;br /&gt;
&lt;br /&gt;
 Function(args)  函数（参数）&lt;br /&gt;
&lt;br /&gt;
　　视频剪辑函数从来都是创建一段新视频而不更改现有视频。&lt;br /&gt;
&lt;br /&gt;
　　args是一串以逗号“,”分隔开的函数参数列表，这个列表可以是空的（意味着所有参数或者部分参数可选）。&lt;br /&gt;
&lt;br /&gt;
　　如果滤镜函数的第一个参数是一个视频剪辑，并且这个视频剪辑并没有被提供，那么将用特殊变量last来替代。&lt;br /&gt;
&lt;br /&gt;
　　AVISynth的滤镜可以识别指定参数(arg=expression)，它们之间的顺序可以随意调换。没有被指定的参数将使用默认值，这会使某些滤镜用起来简单些。&lt;br /&gt;
&lt;br /&gt;
　　你可以写：&lt;br /&gt;
&lt;br /&gt;
 Subtitle(&amp;quot;Hello, World!&amp;quot;, text_color=$00FF00, x=100, y=200)&lt;br /&gt;
&lt;br /&gt;
　　而不用这样：&lt;br /&gt;
&lt;br /&gt;
 Subtitle(&amp;quot;Hello, World!&amp;quot;, 100, 200, 0, 999999, &amp;quot;Arial&amp;quot;, 24, $00FF00)&lt;br /&gt;
&lt;br /&gt;
　　　&lt;/div&gt;</summary>
		<author><name>Dgwxx</name></author>
	</entry>
</feed>