2007/11/30

世界无尽, 译海无涯

首先, 我还是很高兴能够加入Panoramio(Google Earth软件背后的网站)简体中文化的团队. 大家可以到这里找找看J2y的名字. 当然, 有很多比我更早加入, 义务帮助Panoramio全球化的前辈们, 在这里也顺带向他们一道致敬.
网络本身是不分国界的, 但语言问题却会困扰各地不同的人们无法对等地交换信息, 我想, 作为一个关心互联网发展, 支持网络自由精神的人来说, 这也算是我作为个人, 能出的绵薄之力.

说来惭愧, 比起老本行IT业, 其实我在翻译这个行当里有更多的经验, 从最早帮某组织(恕不明指)撰写一篇篇短短的英语发布信息开始, 历经YYJoy汉化组[Nintendogs], [Hotel Dusk Room 215], [Theme Park]等项目, 虽然都不是大型的(其实文本数量相当可观), 商业化或正规化的文案翻译, 不过也逐渐摸索出自己的风格和坚持来. 应该说, 我还是有作为一名有经验的译者的骄傲在. 啊哈哈, 虽然[Theme Park]让我感觉限制过多, 无法随心所欲发挥自己的风格, 最后大部分还是丢给了其他翻译解决就是了...=v=

其实事情的起因是这样, 最近有点想在澳洲各地走一走, 光看旅行网站的介绍实在觉得笼统, 想来想去还是下一个Google Earth, 自己可以参考来查询... 当然了, 后来么, 就开始查自己住的地方附近的情况, 又萌发了自己拍照上传的念头, 因为Eastwood这地方不比歌剧院, 虽然有卫星照片, 但附近几乎没有什么"生活照", 刚好我又拍了几张, 于是就传上去想"填补空白"... 后来发现不是立刻可以显示在Google Earth里(废话), 在啃"帮助"的时候发现有些地方的英语根本没翻过来, 虽然我是看得明白啦, 但好像这样不太好看的样子... 啃到最后, 看到需要能帮助翻译的人, 虽然觉得中国地大物博人口众多, 应该不缺我一个, 不过看到开着的"天窗", 还是跑去申请了一下.
对方的Email很快就来了, 直接把待翻译文件贴上来了orz... 打开看了一下, 完成度还是颇高的, 三下五除二把剩下的"未翻译"条目+"不确定"条目消灭完又扔回去了. 还问"有没有其他活了?" 下一封信对方告诉我"Panoramio这个网站是活的, 时刻会有更新内容发布, 或对现有内容修改, 有空的话, 请随时下载XX文件检查并提供修正." 所以这个不比汉化或其他静态的翻译, 而是需要日常维护, 保持更新的. 嗯, 这样也好, 有点"翻译团队"的味道了, 呵呵.

做过几次后, 还是有了发现... 给Panoramio翻译, 感觉也和汉化不太一样, 怎么说呢... 在汉化组里, 整体来说, 还是有类似"玩乐"的心情掺杂其中, 但Panoramio的翻译最后是要拿出来给Google Earth用户查询的, 感觉更加正式负责才行, 而且绝大多数地理信息都是客观的, 音译不能照感觉来, 每一条都需要去查询各种资料, 这时才感觉到, 自己所知的实在是太少了!
而且因为翻译们各自的风格不同, 有些地名是按照英语习惯从小到大写的, 又有些是直接保留原文, 只翻译类型的... 比如, "Caerphilly Castle in Wales"这条, 原本的译者翻译成"Caerphilly城堡, 威尔士", 可是我觉得, 如果查询这条信息的国人, 是想过去旅行, 或有其他特定的目的, 看到这个条目依然一头雾水, 搜索原名查找信息的话, 也会出现语言不通的障碍, 还是不是很妥当. 因此我改成了"威尔士卡尔菲利城堡". 每个条目都要查询, 确定之后才写入, 虽然效率上不是很高, 但我想, 本身做这个翻译, 就是为了方便国人, 如果可以实现完全的, 正式的中文化, 这样才是真正的目的所在.

这种追求完美的作风, 也许就是在YYJoy汉化组的时候养成的吧... 在翻译中, 其实也存在所谓的"二八定律", 要做到80%左右的程度, 也许大部分人也能理解, 需要的工作时间也不多, 但作出各种考证, 提升最后20%的质量, 则需要数倍于之前的工作量和时间, 大概, YYJoy和Bus的理念, 也就区别在此吧. 不过, 既然Panoramio没有给时间上的限制, 我想, 还是一步就尽量做好, 毕竟原文没有更动, 译文也不再会被标示成"未翻译"了, 千千万万的用户, 哪怕比例再小, 如果出现困扰, 也都是不必要的事, 不是吗?

希望大家可以支持中文版Panoramio和Google Earth, 如果发现谬误, 也请一定要反馈~ 因为我始终相信, 这样可以帮助更多人, 这应该也是互联网精神的体现吧. 哪怕我们和其中的绝大部分人, 终其一生都未必会有机会见面.

谨以此文, 感谢Panoramio和Google.
查看全文及评论...

2007/09/25

For English OS Users: To Display and Input Chinese

Okay, this article is for those who are currently using an English Windows XP or Windows Server 2003, and wish to run Chinese applications properly. There are 2 simple ways to reach the goal with:
NO RE-INSTALL!
NO CHANGE TO THE ORIGINAL OS!

Get ready for it?

1. To Display Chinese correctly in Chinese Applications

This is the simplest way to actually display Chinese characters inside the application, you may read the options correctly and something like that, making it possible to understand well and just use it in a local environment(non-system scale support). The solution is Microsoft Applocale Utility.

a. Download the utility: you may choose a way either from Microsoft Official Download(Validation Required) or Mediafire File Host(Freely Download)

b. Install the utility.

c. Run the utility: "next" -> locate the application you want to run in Chinese(ie, qq.exe), "next" -> choose the language(ie, Chinese Simplyfied), "next" -> check the box to make a shortcut, or uncheck it to skip the step(if you use the application often, check it.)

d. Done and enjoy. The application should work properly now. If you checked the box in step c, you could find the shortcut in "Microsoft Applocale" of the start menu.


Problems: now you may read Chinese in the application interface, but you may wish to type in Chinese characters as well(ie, an IM program).

If you don't have a Windows CD with you, I'm sorry there's nothing I can do, but if you do have one, or you think you could borrow one from a friend(any language version, and it's legal, we will not "install one copy of Windows in 2 computers, lol"), please read the next method.

2. To Make Chines Apps Totally Compatible with Your OS

a. Have your Windows CD in the optical driver(ie, CD-ROM or DVD-ROM).

b.
Click "Start", then click on the "Control Panel", find the "Regional and Language Options" icon and double click it.

c. Click the "Language" tab, then check the box of "Install for East languages". A dialog box will pop out to inform you that to install those language, you need to have about 230MB of free disk space in Driver C. I hope you do . If you really do, click "OK".

d. After the installation from the Windows CD, you'll be asked to reboot in order to let those settings take effect. Finish your unsaved work and reboot.

e. Congratulations! Now you could read Chinse characters in your OS with no problem at all. What's more? Input methods! Enjoy your Chinese applications!


So, what do you think? easy, right?
"I don't think there is a way to solve this problem I have other than installing a Chinese OS."
Before you say this sentence, better ask an expert.
The world is beautiful, isn't it?
查看全文及评论...

2007/09/15

从硬盘到网络2

昨天晚了, 就没申请, 今天过去一看才知道, 乖乖, 原来是AOL出的(真臭名昭著), 不过光是这个Xdrive好像也还行, 就注册吧... 这时, 这个噩梦才刚开始:
AOL和Live还有Google一样, 都是一个统合性的ID, 但是这注册, 真是有史以来我见过最恶劣的: 要真实地址邮编电话不说(对身份验证竟然严格到这种程度), 对浏览器的支持也极差, 一会一个白屏, 没反应了, 一刷就出错, 说"请从头来过", 开什么玩笑, 又不是在表演阵内智则!
在这里折腾了我个把小时, 最后放弃从Xdrive直接注册, 从AOL走, 谁知道AOL要的资料更详细, 邮编和地址还要对应, 无奈, 只有去查了大致的资料, 半搬运半捏造地填上, 最后好歹用IE撑过去了, 也拿到了AOL帐号, 然后绕回Xdrive注册, 花了好些功夫才搞定. 结果下载软件安装的时候, 问我要XP光盘, 亏得我备着, 要不还不能玩... 唉...
好吧, 我们先插一段广告活跃气氛(汗), Mediafire及时寄来了邮件, 说昨天是因为小故障, 所以一小部分用户暂时不能登录了, 应该在很短时间里已经恢复了, 并对造成的不便道歉. 瞧瞧人家, 瞧瞧人家!
好了, 继续吧, Xdrive安装完后, 要重启一次(广告2: Mozy目前版本的软件已经不需要重启了, 随装随用), 得了, 都动到system32目录了, 还有什么说的, 重启吧...
好, 精彩的这才要来:
重启完毕后啊, 应该就该连了吧? 好, 连不上. 跳个连接失败的对话框后, 整个程序就僵在那里... 我说你倒是让我重试啊? 当然密码什么都是复制上去的, 不可能错, 几次下来(说起来快, 几次下来... 每次都要从任务管理器把这些进程手动关掉, 再重开), 我这么判断... 这个玩意, 美国以外的IP进不去(别提GFW, 老子能在Blogger写博, GFW对我来说就是个P). 得了, 既然人家态度都摆出来了, 咱也别费事搞代理什么了, 该干吗干吗吧
删软, 闪人, 那... 灵活机动的就用Mediafire了, 底层些的备份, 接下去就靠Mozy了, 心里这么琢磨: 2G, 拉4人长1G, 拉12个人不就和Xdrive一样么? 聊做安慰吧...
不过奉劝各位还没体验过硬盘浮云的兄弟姐妹, 数据备份是头等大事. 您听得进, 就听, 听不进, 以后也别找我哭, 谢谢各位
查看全文及评论...

从硬盘到网络1

自从上次硬盘坏掉之后, 我就开始热心于寻找各种各样的在线备份系统(天知道为什么我不早写这么做!), 不过这毕竟也是没办法的事, 幸亏有很大一部分东西, 在其他的电脑上已经存过一次, 或者, 已经传到某些网络空间去了(比如Picasa, 当然, 目的是分享而不是备份)
说起损失么... 至少, 在这里的大部分照片, 工作过的文件, 游戏的存档, 以及各种IM的记录也都不存在了(感谢Google用邮箱空间保存聊天记录!) 其他一些七零八落收集起来的东西, 也就不谈了. 幸而, 我还有办法用电脑, 还有办法说"幸亏不是在更重要的时候发生", 那么痛定思痛, 是该考虑备份的问题了...
首先浮上台面的是Mediafire, 它有很多吸引人的地方, 无限的空间, 文件夹管理, 就是单文件100M, 也并不让人觉得苛刻... 其实, 还是相当理想的. 但是, 好像总有点不对, 比如...
直到昨天Mediafire突然出了问题, 怎么也登录不上, 我以为是浏览器的cookies过期了, 猜测了几次密码后, 觉得也许是忘记了, 那就让他们发给我吧, 点了"忘记密码", 然后输入了邮箱, 这才出了一身冷汗: "我们的数据库中没有使用该邮箱注册的记录"... 这什么意思? 帐号被取消了?
这个时候我开始思考, 是不是该好好考虑这个问题, 当然使用Mediafire很久了, 我个人还是很推荐的, 但是, 如果会发生这种事, 是不是意味着, 也许在我需要以前冗余的数据时, 我未必可以从Mediafire恢复我需要的数据? 以"备份"而言, 这种文件托管服务是不是依然不够可靠? 当然手里也没停下, 立刻噼里啪啦打了一封complain的邮件给support team, 名义自然是咨询, 不过口气不是很友好, 我想对方应该可以看出来. 同时, 也在FAQ里翻找有没有关于删除account的规则限制...
这时我突然反应过来: 他娘的凭什么? 我上传敏感文件, 受版权保护的文件怎么了? 我不能只给自己用么? 你一托管文件的凭什么检查我传了什么东西? 再一次证明中国人几千年来积累的伟大奴性在我身上依然没有消除. 正常人类的思路应该是: 你在条约里写清楚, 老子用你的服务不许搞些违法乱纪的事, "万一搞了, 责任自负", 而不是"一经发现, 立刻处理", 谁他妈授予你的权力处理? 你连监控的权力都没有, 懂不懂? 懂不懂?
想到这, 我也没继续啃那一大屏的规章, 倒是用"旁光"瞟到了一个标题:"我能用Mediafire备份我的数据吗?" 既来之则安之, 点进去瞧瞧. 人家说了, Mediafire的某些方面, 其实不适合用作为数据备份, 但是人家厚道的地方就在这: 自己不行, 没什么, 推荐了个叫Mozy的在线数据备份服务. 想当然耳, 关键词是Free.
好了, 斩断截说, Mozy大致是这样的: 分2种, Home和Por. 免费给2G, 这是Home最低一档, 然后就是每月5美子, 空间无限. 以上这两项只能家用, 业务用必须注册Pro, 价钱我没看, 估计撑死了也就10几块钱的事. 但是免费也有免费的办法: 老规矩了, 拉人. 注册的时候听说, 拉4个多给1G, 这他娘的可比WebNG大方多了, WebNG一个人只给10M(当然了, 人家毕竟是可外连的纯净HTTP空间), 注完了进去一看, 乖乖, 每拉一个人, 两边都多给256M. 这玩意不错哈. 当即多注了两个, 这才开始用.
啧啧, 人家这个叫备份. 不走HTTP, 直接有专门的软件, 你就指定你想备份哪些吧, 文件夹和文件都成, 第一批就先给你传上去, 然后你设定一下备份的频率, 每隔这些时间, 给你把更动传上去, 反正保证数据一直up-to-date. 不错吧? 恢复的时候麻烦点, 先说想恢复什么, 然后人家给你准备, 准备完了邮给你个通知, 点了才能下. 那也没办法, 一人2G, 光是找也要时间, 别说凑一块给你下了, 可以理解. 但这个就造成一个问题: 不适合分享. 那就安生了吧, 专心拿来做备份...
看着他们首页光荣地放着很多杂志的推荐, 我又闲不住了, 不是有篇文章叫"Top 5 Online Backup"么? 那剩下那几个怎么样? 点进去看呗! 链接都在, 这叫一大方.
稍微瞄了一下, 得, 免费的就这么几个, 还有一个叫Xdrive, 5G, 据说收费的部分还其他的什么做得不是太好, 可人家有5G不是? 试试...
可今天时间晚了, 以后吧.
查看全文及评论...

2007/09/10

AVS全面学习(重点在Decomb)

 在本章中,我们来学习AviSynth,并手工创建AVS脚本。AVS在DVDRip制作中是至关重要的一个步骤,直接影响到画质好坏。因此,AVS也是无数Ripper花大力气研究的对象。
  当积累了一定经验和熟练度之后,创建AVS脚本是一件相当有乐趣且轻松的事情。有经验的Ripper看到片源之后,立刻就可以基本确定需要使用那些滤镜、怎样搭配滤镜参数,之后,只要进行细微的调整,便可得到希望的效果。新手成为老手,需要一个积累经验的过程,除了多看别人的心得、遇到问题勤于提出之外,就只剩下自己多做片、积累实战经验。经验的积累是一个较长的过程,因此不要梦想阅读了某篇文章后一夜之间成为所谓高手,经验不会骗人,因此脚踏实地才是正确的道路。
  有点说多了。现在来提一下提高AVS运用水平的两条小经验:
  1. 英语要好,因为大多数滤镜的文档都是E文的,且很少有中文翻译版;
  2. 善于使用各种搜索引擎,比如GOOGLE、一些论坛的搜索引擎等。
  3. 善于提问。在提出问题之前,看看说明、用搜索引擎搜索一下,这样一来,应该说85%的问题都能够很好的解决。这样不但为别人省去了麻烦,而且这样学来的知识最牢固。
  废话不多说了,我们来进行——

第一节 AviSynth简介

  AviSynth是AVI SYNTHesizer的缩写,意思就是AVI合成器,是一个Frameserver。(Frameserver就是一个把影像文件从一个程序转换到另外一个程序的过程, 其间没有临时文件或中介文件产生)
  AviSynth是由Ben Rudiak-Gould首创的一种非常有用的工具,能够提供各种方式来处理影像文件。最独特的就是AviSynth并不是一个独立的影像处理程序,而是在影像文件和影像处理软件之间担任“中间人”的角色。
AviSynth的基本工作原理是这样的:
  首先由使用者建立一个包含特定命令的文本,称之为“脚本”(后缀为avs),这些命令指定要运行处理的影像文件和滤镜;
然后运行影像应用程序,比如VD或ND,打开脚本。此时AviSynth就开始工作了,打开脚本中指定的影像文件,运行特定的滤镜,并把输出结果提供给  影像应用程序。但影像应用程序并不了解AviSynth在后台所做的处理,而认为是直接打开了一个“被处理过”的影像文件。

第二节 AVS语法及基本应用技巧——写给新手

  既然要编写脚本,就要知道怎么写。在本节中,我们结合实例来了解一下AVS脚本的基本语法。只有懂得了写法,才能更好的运用。当然,不少人会觉得本节都是废话——那么恭喜你,你已经是老手了,你可以直接跳到下一节。
AVS脚本的语法非常类似于C语言的语法,但比C要简单得多。如果你有一定的C语言(或以C为基础的脚本语言,如PHP)的编写经验,那么你会发现AVS 竟然是如此的简单——你甚至可以跳过本节直接进行下节的内容。比如,笔者有过将近一年的PHP编程经验,当接触到AVS的时候,几乎没有花费任何力气就上手了。
  跟往常一样,先了解几个概念。
  函数——函数的英文名字叫function,这个词在英文中还有“功能”意思,没错!AVS中绝大部分的功能都是通过各种各样的函数来实现的。至于“函数” 的确切定义,高一《数学(上册)》中写得很明白,笔者就不废话了。AVS中的函数按调用方式分为两类,一种是内置函数,一种是外挂函数。内置函数已经放置在AviSynth软件内部,可以在脚本中直接调用;外挂函数不包含于AviSynth中,需要在脚本中额外加载相应的DLL文件或其他AVS脚本函数才能调用。AVS包含的众多内置函数我们将会专门抽出一节来介绍。
  外置函数可以在网上下载得到。正是因为这点,AVS被赋予了几乎无限的扩展性,我们可以通过在网上找到各种函数来实现五花八门的功能。忘记说了,有些人喜欢管“函数”叫做“滤镜(filter)”或“插件(plugin)”,实际上这么叫也是正确的,就连AVS的众多官方文档都称之为滤镜、插件。但是就笔者个人来说,更愿意叫“函数”,因为这些“滤镜”的使用方式是函数的f(x)的形式。
  参数——既然有函数,就要说参数。如果说函数是实现某样功能用的,那么参数就是告诉函数通过什么方式实现、实现到什么程度等等的信息。上面说的f(x)的调用形式,f是函数名称,x就是参数。有的函数一个参数就够了,有的函数却要很多参数,四个、五个、十多个。比如Telecide这个函数如果把所有的参数加起来一共有十四个之多。好在不是所有的参数都是必要的。有些参数可以写也可以不写。如果不写,函数就会自动使用其内部的默认值。但是,如果必写的参数不写,那么函数就无法启动。
  变量——变量可以简单的理解成某个对象的名字(实际上要复杂一些^^;;)。比如,我们规定“本文作者=大虾”,那么当我们提到“本文作者”的时候,我们的第一反应就是那个叫“大虾”的家伙,HeiHei。
  好了,下面我们借个一段极其简单的范例来了解一下AVS的语法:
#plugin
LoadPlugin("E:\gk\AviSynthPlugins\DGDecode.dll")
#source
mpeg2source("F:\dvdrip-temp\soultaker.d2v")
#crop
crop(4,4,712,476)
#resize
LanczosResize(640,352)
  上面的例子中,“#”后面跟着的句子是被“注释”掉的。注释是什么意思呢?就是说,AviSynth读到这句话的时候,一看到这句话前面有“#”,就会54 (无视)它,继续读到下一行。编写脚本写注释是一个好习惯,尤其是极其复杂的脚本。这种情况AVS脚本大概不会遇到,但是当编写PHP的时候,成千上万行的代码如果没有注释……那无论是试图阅读代码的人还是作者本人,都会头晕脑胀。
糟糕——扯远了。我们回到主题。
  紧接着下面,“LoadPlugin”,这是一个函数的名字,后面的括号“()”中的内容就是参数。LoadPlugin函数的功能是载入插件,后面括号中的参数便是告诉函数,要载入“E:\gk\AviSynthPlugins\DGDecode.dll”这个插件。
Mpeg2source是包含于上面提到的“DGDecode.dll”中的外挂函数,也就是说,如果不加载DGDecode.dll这个文件的话,mpeg2source就无法使用。
Crop是AviSynth的内置函数。这里涉及到了多参数函数。这个函数有四个参数,每个参数之间用“,”隔开(注意是英文逗号,不是中文逗号)。
函数的写法多种多样,像LanczosResize函数,只有两个参数,所以我们写“640,352”即可。但是像前文提到的Telecide这样复杂的函数,我们需要将参数的名字也写进去。比如:
Telecide(order=1,guide=1,post=2,vthresh=25,show=true)
  其中,order、guide、post等等的,就是参数名称,参数名称和参数值之间用“=”连接(废话!)。
  还有一点要注意,数值型(比如1、25之类的)/真假型(true或者false)的参数,不需要用双引号(英文双引号)引起来。但是,字符型的参数,必须要用双引号引起来。例如:
mpeg2source("F:\dvdrip-temp\soultaker.d2v",idct=7)
  这个例子很明白,"F:\dvdrip-temp\soultaker.d2v"是字符型的变量值,要加双引号;7是数字型的参数,不用加双引号。

  下面介绍一些小花招,让我们的处理更加轻松。

AVS技巧1:使用变量
  当我们在一段AVS之中需要打开多段片源、需要分别处理的时候,就要用到变量。请看下面的例子:
Clip1=avisource(“d:.avi”)
Clip2=avisource(“d:.avi”)
Clip3=clip1+clip2
Return(clip3)
  在这个例子中,clip1、clip2、clip3都是变量,现在你也能够理解变量的概念了吧。
  很明显,我们在clip3中将前两个片源合并在了一起,然后用return函数输出clip3,我们在视频编缉软件中最终看到的结果是:播放1.avi,1.avi放完后,紧接着放2.avi。
  当然,这里只是举例子,其实合并没这么简单的,因为两段片源的fps、分辨率、颜色模式都要完全相同。至于怎么让他们“完全相同”,将会在后面的章节中讲到。这里只是要大家了解变量是什么东西。

AVS技巧2:“.”的妙用
  看下面的AVS脚本:
v1=avisource("C:.avi").ConvertToYUY2()
v2=avisource("C:.avi").ConvertToYUY2()
……
  这样写等价于:
v1=avisource("C:.avi")
v1= ConvertToYUY2(v1)
v2=avisource("C:.avi")
v2= ConvertToYUY2(v2)
  是不是省了很多事?赫赫~在编写复杂的脚本的时候尤其好用~(至于ConvertToYUY2是什么东西……我们后文再讲)

AVS技巧3:分段处理

  就算是同一影片在不同的段落中也会表现出来不同的特色。有时候我们需要对一些片源进行特殊处理,这就用到了截取。还是先看例子:
Source=avisource(“c:\clip.avi”)
Clip1=trim(source,0,1999)
Clip2=trim(source,2000,3000)
……
  这样,我们就用trim函数分别截取了影片的0~1999(包括1999)号帧和2000~3000帧。下面就能针对两段影片分别进行处理了。
有一点请注意:0号帧也算一帧,0号帧其实是影片的第一帧,1号帧是第2帧,依此类推……我们截取到1999号帧,事实上截取了2000帧!自然,2000号帧是影片的第2001帧。

  AVS的基础语法以及一些小技巧就讲到这里了,更多的应用技巧还希望大家自己去探索。这一章对已经掌握AVS的人来说可能是废话,但是对于从来没接触过AVS得初心者,却是需要重点掌握的。俗话说,工欲善其事,必先利其器。要写好AVS脚本,必须要打好基础才行。

  第三节 AVS常用内置滤镜介绍
  本节大虾偷懒,转载一篇精品论坛的经典文章给大家看。(既然有人写好了,大虾自然可以偷懒了~HiaHiaHiaHia)本文在原文的基础上略微修改了一下,还望作者见谅。
  AviSynth内建了数目繁多的滤镜,所以只能介绍一些最常见实用的一部分。

1、源文件滤镜

① AVISource
用于导入AVI格式的影片,需要安装相应的Codec才能导入。
例:AVISource(“test.avi”)
② WAVSource
导入WAV
例:WAVSource(“test.wav”)

2、处理滤镜

① AddBorders
加边:给影像加黑边。参数是整数,顺序是左、上、右、下。
例:AddBorders(0,64,0,64)
就是给图像上下各加64像素的黑边。这个滤镜似乎并不常用。

② ConvertToRGB 和 ConvertToYUY2
改变颜色环境:
VD和AviUtl第三方滤镜有的需要RGB环境才能运行,需要ConvertToRGB来进行切换。
有的RAW文件是RGB的,但一些AVISynth滤镜只能运行在YUV下,就需要用ConvertToYUY2来处理。
关于颜色环境的问题,请参阅本文第三章相关内容。
例:ConvertToRGB()
改变成RGB颜色环境
ConvertToYUY2()
改变成YUV颜色环境

③ Crop
切边:为了保持比例或切除黑边,参数是整数,顺序是左、上、宽、高。
例:Crop(8,0,704,480)
左右各切去8像素。

④ Levels
层次:调节亮度、对比度和Gamma值。
例:Levels(0,1.2,255,0,255)
调整Gamma,使画面变亮


⑤ LanczosResize
缩放滤镜:LanczosResize是BicubicResize的替代者,提供更精准、更锐利的画质。在日本普遍使用,欧美大多使用BicubicResize。本来是日本人开发的第三方滤镜,自AviSynth 2.05版本开始吸收为内置滤镜。
例:LanczosResize(640,480)
把分辨率改变为640*480

⑥ Tweak
调整:可以调节色度,饱和度,亮度,对比度。
色度:-180.0~180.0,默认0.0。正数趋向红色,负数趋向绿色。
饱和度:0.0~10.0,默认1.0。0.0为黑白。
亮度:-255.0~255.0,默认0.0。
对比度:0.0~10.0,默认1.0。

3、编辑滤镜

①FadeIn 和 FadeOut
淡入和淡出:提供淡入和淡出功能,尤其是淡出功能,可以使影片结束地更自然。参数为整数,表示需要编辑的帧数。
例:FadeOut(24)
影片最后24帧淡出

②Trim
截取:可以截取某段影片。参数为整数,表示需要编辑的开始帧和结束帧。
例:Trim(240,480)
截取240~480帧这一片断

4、声音滤镜

① AudioDub
影音合并:可以把影像和声音合并在一起。
例:Video = AVISource("test.avi")
Audio= WAVSource("test.wav")
AudioDub(Video,Audio) # 把test.avi和test.wav合并

② GetLeftChannel 和 GetRightChannel
获取声道:把立体声的左右声道单独返回,适用于左右声道不同语种的WAV。
例:stereo=WavSource("test.wav")
return GetLeftChannel(stereo)
返回test.wav的左声道

③DelayAudio
声音延迟:由于从VOB里分离的AC3通常有延迟,所以用Azid转码得到的WAV也有延迟,在用AudioDub合并时就需要加上这个延迟。
例: WavSource("test.wav").DelayAuido(0.5) # 把test.wav延迟半秒

  以上便是AviSynth的常用内置函数。

第四节 复习:IVTC/Deinterlace应对策略
  接下来的数节中,我们将讲解IVTC/Deinterlace。IVTC/Deinterlace无论如何都是一个值得大书特书的过程,DVDRip一半的质量都是取决于IVTC/Deinterlace的好坏。
  首先,我们先了解一些概念。
  24p:本章经常会遇到这个概念,意思就是,24fps无交错的胶片,经过胶卷过带,最终形成的30fps、每五张中有两张交错的片源。
  30i:意思是,30fps、张张都Interlace(交错)的片源。
  场匹配反交错:这个动作一般对象指得是24p的影片,通过对(前)中后三帧进行场匹配(具体原理下文会讲),还原原本没有交错的画面。注意,是还原!这样还原出来的帧和原来没有交错的帧理论上应该是一模一样的。场匹配反交错是在帧与帧之间进行的。
  Deinterlace:反交错,通过一定手段,让原本交错的帧显得不再交错。注意,是“显得不再交错”而不是“还原”,经过Deinterlace的画面与原本的画面是有很大差别的。Deinterlace只在本帧内进行,是对单幅画面的处理。注意,Deinterlace一定要和场匹配反交错这个概念区分开!否则读下文的时候会非常糊涂。

  接下来,我们先来复习一下各种类型片源的处理方案(大虾偷懒,引用Silky大人的文章)。

a)24p(也叫Film、3:2 pulldown型)
  有些影片,讯源是 24fps,拍摄的时候是用胶片以 24fps拍摄的,每一张都没有交错,例如大部分的电影。为了要能在 NTSC 的电视上播放,电影胶卷过带(telecine)的时候必须转成 30fps(即前面说过的3:2 pulldown)。
这种影片,其原始画面其实是 24fps无交错的,可以作IVTC,经过场匹配反交错、删除多余的画面,还原回原本的 24fps。
大部分的电影,无庸置疑,其讯源一定是 24fps无交错,可以作 IVTC。
  电影转成 PAL(25fps)的时候,用的是 2:2 pulldown,画面还是无交错的,只是加快播放速度,变成每秒播放 25 张。不过有些 PAL 的 DVD 会向前提一个场,造成画面每一张都交错。
  还有一些 PAL DVD 非常奇怪,25 张之中会有重复的一张画面,这时就必须删除重复的那一张画面还原回 24p,删除重复帧的步骤叫做Decimate,后文详述制作方法。

b)30i(也叫Video型)
  这种片源通常由摄像机拍摄得到,每一张都是交错的。大部分的 NTSC 电视节目(连续剧、综艺节目、新闻报导...)、交错式的 DV 都是这种讯源。对付这种讯源,通常会采用Deinterlace的处理方式,经过这种方式处理过后,画面可能会变得模糊一些。

c) 30fps progressive, 30p
  30fps 每一张都没有交错,例如计算机动画
  这种讯源,当然什么处理都不用作。你可以直接跳过IVTC/Deinterlace这个步骤。

d) Hybrid, Mixed 混合 24p/30p
  在动画 DVD 上面常见,例如片头是 30fps progressive,每一张都没有交错,本篇却是 24fps progressive,五张之中有两张交错;或者是 CG 的部分 30p,其它部分 24p。
  做成 AVI,AVI 只能用一种固定的 fps,所以可以分开做的话分开做,把 24p 和 30p 的部分分成两个 AVI,例如片头 30p 一个 AVI,本篇 24p 一个 AVI。如果不好分开,例如几乎都是 24p,只有中间 CG 的部分 30p,只好强制 24fps 做下去,这样 30p 的部分会顿,不过也没办法了。
如果做成 30fps,24p 的部分每四张要重复一张,也是会顿。
最好的做法是转成 120fps
  120 是 24 和 30 的最小公倍数,做成 120fps,可以兼顾 24p 和 30p,不会顿,又不用牺牲画面。至于120fps影片的制作方法,涉及到很多方面,因此不列入本文讨论范围,网上此类教程比较多,读者可以自行参考研究。
  或者干脆放弃 AVI,改用 .mkv 等可以支持 变动 frame rate(VFR) 的文件格式。

e) Hybrid clip, Mixed, 混合 24p/30i, 混合 24p/48i, 混合 xxx/xxx .....
例如部分 24fps progressive,五张之中有两张交错,部分 30fps interlaced,每一张都交错。这种片源通常使用Telecide和Decimate函数进行处理(下文有详述)。

f) Hybrid Frame或其它乱七八糟的型式
  一个 Frame 之中,部分交错,部分没交错。例如有些影片的字幕、工作人员名单是 telecine 之后才叠加上去的,造成背景画面没交错,前景字幕却是交错的。这种情况应做Deinterlace。
  还有错误的 DVD mastering,剪接的时候少掉一张,图场颠倒,enocder 的 IVTC 错误,造成 frame 画面无法补回无交错的状态.....等等。这些类型较难处理,可能需要更为精确的手动IVTC/Deinterlace处理,还可能涉及到120fps的 AVI的制作。所以在这里,笔者建议不熟练掌握技术的朋友放弃这两种类型,或者寻找更佳的片源。

第五节 讲解:用Decomb做IVTC/Deinterlace

  在复习完了各种片源类型之后,我们正式开始介绍Decomb。Decomb是Donald A. Graft开发的一套IVTC/Deinterlace滤镜包,是现在使用最广泛的反交错插件,功能强大,速度快(像是在做广告)。本文来介绍一下使用 Decomb中包含的Telecide、FieldDeinterlace、Decimate三个函数来完成IVTC或Deinterlace的任务。
  首先介绍Telecide函数。
  Telecide的作用是IVTC中的去交错。因为它只负责去交错,所以Telecide只完成了整个IVTC工作中的一半,另一半删除重复帧的任务,需要配合Decimate函数来完成。删除重复帧做法,我们在下文讲解。
  Telecide一般用于NTSC 3:2 pulldown(24p)、PAL 2:2 pulldown、24p/30i hybird这三种类型影片的反交错处理,如果片源不属于以上三种类型,请不要使用Telecide。
  首先介绍一下Telecide反交错的原理。Telecide在默认的情况下会通过一种叫做FieldMatch(场匹配)的技术来完成反交错的工作。我们以BottomField First为例,讲解FieldMatch的原理。
  当Telecide 函数收到一个AVS传来的请求的时候,它会读取当前帧(下文用C表示,即Current)与下一帧(下文用N表示,即Next),并将这两帧拆成由奇数扫描线组成的Top Field(下文用t表示)和由偶数扫描线组成的Bottom Field(下文用b表示)两个场(Top和Bottom其实就是基数场和偶数场,只是叫法不一样),如下图:

  此时,Telecide函数会用Cb场分别与Ct和Nt两个场进行组合(如果是Top Field First,Telecide就会以Ct为基准进行组合):
Ct
Cb(组合一)

Nt
Cb(组合二)
  然后,Telecide会对这两种组合方案进行比较,选择交错比较小的一种输出。注意!是选择交错小的一种输出,而不是选择无交错的一种输出。因为在一些情况下,经过FieldMatch仍然无法找到匹配的场,所以这种情况下,输出的结果仍然可能是交错的。

  下面以2:3 pulldown的片源为例,对这个过程进行实例说明。

  当Telecide收到对C帧进行反交错处理的请求之后,它会读取C帧和D帧,并将两帧拆分成2O、3E(C帧)和3O、4E(D帧):

  这时,Telecide会以3E为基础,将其与2O和3O两个场进行组合:
2O
3E(组合一)

3O
3E(组合二)Bingo!中奖~组合正确无交错~
  Telecide会对上面两种方案进行比较,然后输出交错较小的一种。
  按照上面的方法,一段2:3 pulldown的片源经过处理之后就变成了下面的样子:

  我们可以看到,经过场匹配处理之后每帧都无交错,但其中D、E两帧重复了!如果把这样的结果拿去播放的话,会发现画面一顿一顿的,所以去交错之后,还需要删除重复帧才能够正常播放。
  下面说明一下Telecide函数在应用过程中的注意事项:Telecide要求输入的片源水平分辨率必须是2的正整数倍,颜色区间必须是YUV2或者 YV12(关于颜色区间,请参阅第四章相关内容)。在Telecide之前,请不要进行任何Resize(变形)操作,因为分辨率的改变可能会导致 Telecide在场判断上出现误判,造成场匹配失败。在Telecide之前,不要进行任何颜色区间转换操作,因为颜色区间的转换很可能造成交错帧颜色错误,影响Telecide的场判断,造成场匹配失败。还有一点,片源中的噪声会影响Telecide的场判断,请尽量使用噪声小的片源。
  在了解了Telecide反交错的基本原理与注意事项之后,我们来详细介绍一下Telecide函数的参数。由于Telecide的参数太多了(惊人的14 个参数!),所以无法做到一一详细讲解。这里只介绍几个重要的参数,更多的进阶设定,请参考Decomb附带的《Decomb参考手册》。
Telecide函数基本语法:
Telecide()

Order参数:对于正确的还原原始影像,设定正确的场顺序非常重要,所以我们首先确定order参数。场顺序通过参数order来设定,本参数为必选参数。设定order=1为TopField First,设定order=0为BottomField First。因为确定正确的场顺序实在太重要了,所以强烈建议你按照下面的方法确认场顺序,而不是猜测场顺序。
  要确定场顺序,需要建立一个不对片源进行任何处理的AVS脚本。首先照下面建立一个AVS脚本来分离TopField:
#调用MPEG2解码器
LoadPlugin("E:\gk\AviSynthPlugins\DGDecode.dll")
#导入片源
mpeg2source("F:\dvdrip-temp\soultaker.d2v")
#进行场分离
AssumeTFF().SeparateFields()

  现在,用VirtualDubMod(简称VDM,下同)打开上面AVS脚本,然后找到一段包含运动物体的影片并步进向前(一帧一帧地向前),注意运动物体是一直朝它该去的方向运动,还是在运动过程中突然向回运动。比如,如果场顺序错了,本来应该一直朝右侧运动的物体在运动过程中突然向左跳一下,然后继续朝右运动;如果场顺序正确,那么它会平稳的一直向右运动。
  如果使用AssumeTFF().SeparateFields()的时候物体运动正常,则该段影片的场顺序是TopField先,需要设定order=1;如果运动不正常,则是偶数场先,需要设定order=0。如果你想进一步确认是否是偶数场先,使用AssumeBFF().SeparateFields ()。
  我们假设我们的片源是奇数场优先。到目前为止,我们的Telecide参数是下面的样子:
Telecide(order=1)

Guide参数:(范围0~3,默认0即关闭)
  Telecide 内置了一个功能叫做Pattern Guidance。这个功能用于对特定类型的影片的帧序和场序进行预测,以获得更快的处理速度和更好的处理效果。当Pattern Guidance开启的时候,它会对影片的场序进行预测,并有权推翻FieldMatch机能的场匹配方案,同时选用预测方案进行场匹配。由于 Pattern Guidance适用的范围有限,所以需要知道影片的确切类型才能开启Pattern Guidance。
  Pattern Guidance通过Guide参数控制。Guide参数有四个值,设定guide=0关闭pattern guidance;设置guide=1使用3:2 pulldown模式(片源是24fps->30fps的);设置guide=2使用2:2模式(适用于PAL制式);设置guide=3使用3: 2:3:2:2模式(片源为25fps->30fps,较少见)。
  首先确定你的片源是否是PAL制式。如果是,并且其内容为progressive,你可以直接设定guide=2来使用PAL模式。当然,如果片源不含 progressive,你就根本不应该用Telecide()。所以对于PAL,我们的Telecide参数是下面的样子:
Telecide(order=1,guide=2)
  如果我们的片源是NTSC 29.97fps或30fps,那么事情就要复杂一些。首先我们要确定片源是否为3:2 pulldown生成的。有很多测试方法可以使用。第一种,直接用VDM打开片源,并且不要进行任何处理。然后找到一处包含运动物体的片段,步进前进。如果你看到3帧非交错画面和2帧交错画面循环出现,那么就可以确定是3:2 pulldown了。大多数电影都是用的3:2 pulldown。
  像象上面讲的那样寻找3:2循环并不十分简单,比如一些动画包含重复的帧,很难清楚地发现3:2循环。
  所以我们还有第二种方法,你可以用下面的AVS脚本打开片源,然后看Telecide()怎样返回结果。(注意,一定要正确的设定场顺序。)
LoadPlugin("E:\gk\AviSynthPlugins\DGDecode.dll")
LoadPlugin("E:\gk\AviSynthPlugins\Decomb.dll")
mpeg2source("F:\dvdrip-temp\soultaker.d2v")
Telecide(order=1,guide=1,post=0,show=true)
  用VDM 打开这个AVS脚本,然后多抽取几段影片浏览。如果Telecide()报告"in-pattern"或"in-pattern*",那么这段影片就是 3:2 pulldown。如果报告"out-of-pattern"或" in-pattern "、"out-of-pattern"来回跳动,那么片源就不是纯3:2 pulldown。
  如果你确定片源中含有大量3:2内容,那么就应该设定guide=1。如果3:2占的比例不高或者不能确定片源种类,那就设置guide=0。我们假设我们的片源种3:2 pulldown含量很高,我们的Telecide参数是下面的样子:
Telecide(order=1,guide=1)

Post参数(范围0~5,默认2)、vthresh参数(0.0~255.0,默认50.0):
  我们将这两个有密切联系的参数放在一起讲解。
  在一些情况下,某些帧在场匹配的时候,不能找到合适的匹配,所以Telecide输出的结果仍然会有交错。这时候,Telecide就会启动Postprocessing(后处理)机能,对这种帧进行Deinterlace处理。
  Postprocessing 由参数post控制,设定Post=0关闭Postprocessing;设置Post=1计算metrics但不实际进行deinterlace;设置 post=2计算metrics并进行deinterlace;设置post=3计算metrics、进行deinterlace,并在经过 deinterlace处理的帧上显示deinterlacing动态图。Post=1和3主要是进行调试参数时使用。最后正式输出的时候应该用post =2。此外,还有两个更加高级的模式,参见《Decomb参考手册》。

  通过vthresh参数,我们设定交错和非交错帧被分别来开的“阈值”(这里穿插一点小知识:“阈值”说白了就是门槛的意思,也就是许多插件中的 threshold参数。注意哦~一些文章中将threshold解释为“阀值”,其实根本没有所谓的“阀值”,“阀值”是“阈值”的错误写法,两个字长得很像哦。),即一个帧交错到了什么程度会被Postprocessing拉过来做Deinterlace处理。
  我们采用一个比较程式化的过程来设定postprocessing。首先,照下面来建立AVS脚本(注意,其他参数都是按照以前确定的,你应当按照刚才确定的order和guide的参数来设定):
LoadPlugin("E:\gk\AviSynthPlugins\DGDecode.dll")
LoadPlugin("E:\gk\AviSynthPlugins\Decomb.dll")
mpeg2source("F:\dvdrip-temp\soultaker.d2v")
Telecide(order=1,guide=1,post=3,vthresh=25,show=true)
  用VDM 打开这个脚本然后播放影片,这时Decomb会在画面上显示vmetric值。该帧镇实际的vmetric值显示在方括号中的"chosen=",比如" [chosen=27]"。如果有vmetric值高于参数中指定的vthresh值,说明该帧被判断为交错,并交由Postorocessing处理。现在需要找出一个合适的vthresh值,能够从非交错帧里面辨别出交错帧。你能够很容易的辨别出被认为是交错的帧,因为a) vmetric 会大于 vthresh,) progressive/interlaced 指示器会显示interlaced,c)整个帧会有一个白色的反交错(deinterlacing)动态图覆盖在上面。你绝不会错过它们的。

  Vthresh 值的设定有一定难度,因此必须加倍小心谨慎。进行设定的原则是:宁愿捉到部分非交错帧都比放过交错帧好。不过虽说要尽量将交错帧尽量抓到,但一定要注意尺度,否则捕捉到过多的非交错帧,会造成画面模糊、显出杂色等等不良现象。如果抓到了过多的非交错帧,应当提高vthresh值;如果放过了部分交错帧,请减小vthresh值。这看起来很难,因为一部影片当中不同的部分动态、画面颜色等方面存在差别,所以一个vthresh值通常并不足够适应整部影片。好在Telecide支持更高端的Overriding Decomb Decisions模式,可以通过自行编写脚本来为影片的不同段落应用不同的参数设定。因为这个模式很少用到且难以实际操作,所以以这里不作详细讲解,如果需要,请参看《Decomb参考手册》。
  打开信息信息指示器(在参数中加入show=true),在VDM中多进行几段预览,确定得到较好的效果,不要留下漏网之鱼。
  我们假设我们将vthresh设置成30的时候恰好能将交错、非交错帧区分开,现在将post设置为2,我们的Telecide参数是下面的样子:
Telecide(order=1,guide=1,post=2,vthresh=30)
Blend参数:(范围:true/false,默认为false)

  blend,混合,在Deinterlace的时候,用奇偶平均的方法,混合奇偶两个图场,可以减少突兀的交错现象,是去交错的方法之一。副作用,一是画面变模糊,清晰度下降,二是两张不同的画面混合在一起,看起来像是两个影像重迭在一起,会有残影,或者叫“鬼影”的现象。对比请看下面两幅图:

  经由Blend得到的带鬼影的画面
  经由场匹配得到的画面
  当Blend为true时,Telecide就会像上面说的那样队两个厂进行混合后输出;如果为false,那么Telecide会保留一个场,然后使用内插补点补出另一个场。就速度来说,Blend比内插补点慢一些。
Back参数(范围:0~2,默认0)、bthresh参数(范围:0.0~255.0,默认50):
  Back 参数控制着Telecide的反向匹配功能。什么叫反向匹配呢?在前面讲解场匹配的时候我们提到过,Telecide会分别用本帧的一个场和下面一帧的场进行场匹配。在这里,如果开启了反向匹配功能,那么Telecide在进行场匹配的时候,不但会与下一帧匹配,还会与上一帧进行匹配。
以 3:2 pulldown 的片源为例
  第 3 个 Frame 经过 Decomb 重新组合,会变成

Bt
Cb

Bt
Cb

Ct
Cb <- 中奖,这个组合奇偶差异最小
输出差异最小的组合

  当设定Back=0时,反向匹配会被禁用。就是说,如果遇到了剪切不良的影片,Telecide找到合适的场进行匹配的几率会变小。没有成功匹配的帧会经过postprocessing的deinterlace处理,这样得到的效果就不如场匹配得到无交错帧的效果好。
  当设定Back=1的时候,如果一个帧经过场匹配之后,仍然存在交错,那么反向匹配就会启动,与前面一个帧的场进行匹配。Back=1需要与 postprocessing配合使用,因此为取得较好的效果,开启back=1的时候请不要关闭postprocessing。在这里,Bthresh 参数用来指定反向匹配的阈值,即在正向匹配中,候选的匹配方案存在交错,到什么程度后会启动反向搜寻。该参数可与vthresh参数灵活搭配使用,我们可以使用较高的vthresh来处理场匹配失败的帧,搭配较低的bthresh值来处理剪切不良的地方。
  当设定back=2的时候,反向搜寻会一直开启。但是对于back=2,请慎重使用,因为这可能会造成影片顿挫感(播放起来一顿一顿的,画面不流畅)。

  在讲解完Telecide函数之后,我们来讲解与之配合的Decimate函数。Decimate函数通常紧跟在Telecide函数后面,因为Telecide可以为紧跟在其后的Decimate函数传送信息,更有利于Decimate准确的判断并删除重复帧。
Decimate函数基本语法:
Decimate()
  通常情况下,用下面写法便可应付绝大多数情况,比如纯3:2 pulldown型:
Telecide(order=1,guide=1,post=2,vthresh=30). Decimate(cycle=5)
  有一点请注意,即25fps的PAL片源不要使用Decimate删除帧,因为这类片源根本没有重复帧。如果删了,就会造成画面播放的时候一顿一顿的。
为了应付更复杂的情况,我们来了解一下Decimate函数的常用参数。
Cycle参数:(范围:2~25,默认5)
  Cycle参数用来指定删除重复帧的“周期”,即每多少帧删除一帧。比如,在3:2 pulldown的片源下,我们需要每5帧删除1帧(原因见本节开头,Telecide原理讲解部分),那么cycle函数应当设置为5。

Mode参数:(范围:0~3,默认0)
  Mode参数用于指定Decimate函数的具体删帧策略。
  当设置mode=0时,Decimate函数将直接删除本周期内最相似的两个帧中的一个,影片帧率将会随之下降。
  当设置mode=1时,Decimate将会采用两种策略来应对:
  1. 用一个内插补点计算出来的帧,来替换原本应该删除的帧,保持帧率不变。这个用内插补点计算出来的新的帧,由当前帧和下一帧计算得出。比如,经过场匹配处理的12345五幅画面,3、4相同,本来应当删去4,但是这时候Decimate就会通过3和5计算出来一个中间帧,取代4的位置。这时,仍然有5幅画面,所以帧率保持不变。
  2. 保持该帧原有的样子不变,直接pass。比如,原有12345五幅画面,3、4相同,本应当删去4,但此时Decimate会保持4不变直接输出。

  到底使用哪种策略,又由两个方面决定:
  1. 片源是否为3:2 pulldown?(需要在Telecide函数中使用post=1参数声明帧序)
  2. 该帧与前一帧的区别?(通过本函数的threshold参数指定)

  设置mode=3能够较好的应付24p/30i hybird这片源。Decimate会应用以下两种应对策略:
  1. 当处理24p部分的时候,Decimate会按照正常的删帧方式,每5帧删1帧,帧率下降到24fps。比如经过场匹配处理的12345五幅画面,3、4相同,Decimate会删除4,此时帧率下降到24fps。
  2. 当处理30i部分的时候,因为五幅画面中没有任何两幅相同,不能直接删除,同时还要求将帧率下降到24fps,所以Decimate会将5帧中最相近的两帧混合成1帧输出,以减少帧率下降所造成的顿挫感(画面一顿一顿的感觉)。比如经过Deinterlace处理的12345五幅画面,没有相同的,但是 3、4两幅画面很相似,此时Decimate会将3、4混合成1帧输出,此时帧率下降到24fps。
  Decimate的重点便是mode的采用。在通常情况下,纯3:2 pulldown(即纯24p)的影片最适合采用mode=0,这样处理得到的画面是最完美的,由于删除了本来就不该有的多余帧,所以没有顿挫感。
  但是大多数情况是,没有纯3:2 pulldown的影片,很多影片为24p/30i混合的。mode=1和mode=3都是为了这种情况准备的。我们知道,24p部分每5张有一张重复,如果不删除这张重复的,画面播放的时候会一顿一顿的;30i部分没有重复画面,如果删了的话,画面会一顿一顿的。但是问题是,我们的片源里面既有24p也有30i,到底是删还是不删呢……这取决于24p和30i的含量。
  1. 当影片大部分为24p,少数为30i的时候,应当采用mode=3。这样,24p部分被完美还原,30i的部分进行混合输出处理,缓解了由删帧引起的顿挫感。
  2. 当影片大部分为30i,少数为24p的时候,应当采用mode=1。这样,30i部分因为没有删帧,没有顿挫感;24p部分由于采用了内插补帧的方式增加了一帧,缓解了不删帧引起的顿挫感。
  有一点请注意,用Telecide+Decomb处理24/30 hybird混合型片源,最多只能算作一种妥协方案。这样做出来的DVDRip,画面可能会出现模糊、顿挫感、色块(由内插补点或者Blend引起)等等不良现象。处理24/30 hybird混合型片源最佳的解决方案是制作120fps的AVI。
Decimate函数的重要参数到这里就基本讲完了。如果想了解更多Decimate的进阶参数,请参考《Decomb参考手册》。

  下面来讲解FieldDeinterlace函数。FieldDeinterlace与Telecide的Postprocessing机能非常类似,都是对出现交错的单个帧进行去交错。
FieldDeinterlace基本语法:
FieldDeinterlace()

Full参数:(范围:true/false,默认false)
  Full 参数用于指定是否全部帧都是交错。当设置为true时,函数会对全部帧进行Deinterlace处理。当片源全部为交错帧的时候(比如纯30i),可以将full设置为true。当设置为false时,函数会对每个帧进行侦测,如果判断为交错帧,那么进行Deinterlace处理;如果不是交错帧就直接pass。
Blend参数:与Telecide的Blend参数相同。

  到此为止,Decomb的一些函数的基本参数已经基本讲解完了。本节只是对一些重点、基本参数进行了讲解,如果想了解更多,笔者强烈建议您参阅Decomb的《Decomb参考手册》。在这个手册里面,您将找到一切您需要的答案。

第六节 实战!Decomb做IVTC/Deinterlace处理
  在上一节中,我们讲解了Decomb中三个场处理函数的使用方法与参数。在本节中,我们将针对具体例子来讲解这三个函数的组合应用。
  首先我们来看纯Interlace片源的Deinterlace处理:
范例脚本:
LoadPlugin("decomb.dll")#加载Decomb滤镜
AVISource("nonfilm.avi")#导入片源
FieldDeinterlace()#使用FieldDeinterlace进行Deinterlace处理,全部参数均为默认。

  然后,我们来看看针对3:2 pulldown片源只反交错,不删除重复帧的处理:
LoadPlugin("decomb.dll")
AVISource("film.avi")
Telecide(order=1)#使用Telecide函数进行场匹配反交错

  接下来,我们来看看IVTC(在场匹配反交错的同时删除重复帧)的做法:
LoadPlugin("decomb.dll")
AVISource("film.avi")
Telecide(order=1)
Decimate(cycle=5)#用Decimate每五帧删一帧

  禁用Postprocessing:
LoadPlugin("decomb.dll")
AVISource("mixed.avi")
Telecide(order=1,post=0)#post=0为禁用Postprocessing
Decimate(cycle=5)

  对3:2 pulldown含量很大的影片进行IVTC:
LoadPlugin("decomb.dll")
AVISource("mixed.avi")
Telecide(order=1,guide=1)#使用guide=1对3:2 pulldown的片源处理进行优化
Decimate(cycle=5)

  处理hybird片源:
LoadPlugin("decomb.dll")
AVISource("hybrid.avi")
Telecide(order=1,guide=1)
Decimate(mode=3,threshold=2.0)#使用Decimate的mode参数对hybird影片的处理进行优化,
  具体配制方法请见上一节。

  IVTC的理论与实践到这里已经讲完了。希望读者能够反复阅读本章,本章中涉及到众多的词语,第一次读起来可能会比较吃力,但是读的次数多了之后自然会明白不少的。
作者:dgwxx 来源:ogg.cn
查看全文及评论...

2007/05/05

不能再随意的随笔

嗯... 我想, 书确实是人类的好朋友... 为什么突然这么说... 嗯... 我也很难回答吧...
因为遇到打折的关系, 原本"每逛一次书店只买一本"的规律, 想自己少许打破一下, 所以昨天在纪伊国屋伤脑筋, 如果这次可以买两本的话... 到底要选哪本呢?

也许, 我还是可以勉强算是爱书人. 毕竟... ACG和唱片收集了很多, 不过到目前也暂时没有出现[成灾]的状况, 不过书就完全不同了... 除了把预备的书架塞满之后, 也经历了[把各类书分别摆放] -> [喜欢的放在书架上, 普通的塞床底] -> [经常看的放在书架上就好了] 一直到 [啊算了算了, 桌子上也可以堆的] 最后变成 [书桌上也堆满了] 这样的状况... 唉, 好伤脑筋啊...

说起来, 书店还真是神奇的场所, 安静的整块大空间用书架分开, 上面整齐摆放着琳琅满目却又分类明确的书本, 散发着新书的气味(神奇的味道), 平和的音乐静静流淌, 手指从一本本书的书脊上滑过, 目光从一个个书名和作者上扫过, 实在让人不禁想象: 这本会诉说的是什么样的故事呢? 作者拼命地努力, 写了那么多文字, 到底是有什么事情和思考想和读者传达, 分享呢?
<爱在另一片天空>[村山由佳], <永远的出口>[森绘都], <在世界开始的早晨>[黑田晶], <在世界终点的杂货店>[嶽本野蔷薇], 等等等等不一而足, 要怎么挑选呢? 实在让人很伤脑筋.
啊, 对了, 我不知从什么时候开始, 对一些类型的日本文学开始有兴趣(可是最著名的推理小说系列却不太感冒), 其实大牌作家只有村上春树的还比较喜欢看, 其他都是追一些新人(比如市川拓司), 甚至还有作品不太好卖的作家(佐藤友哉), 总之是相当的个人化, 顺便最喜欢的书倒还都不是日本作家写的就是了...

经历过不少[神奇而重要的书](当然在别人眼里可能并没有什么价值)的我, 是很确信, 书是可以改变一个人的, 至少能作相当程度的影响. 所以, 也更加相信一本好书对人的重要性... 不过话虽这么说, 除了小说外的其他体裁我是不太爱的= =, 要说道理最好也能融进小说来说比较好接受(比如说乔斯坦贾德的<苏菲的世界>和<纸牌的秘密>, 还有<橙色女孩>, 或者贝尔纳韦尔贝尔的<蚂蚁三部曲>), 嗯... 不过书这东西, 不翻开好好看的话, 光从介绍之类, 完全没法领会真正的内容, 感受也会完全不同, 可是想看书, 花费的时间和金钱以现在的情况来说, 又是一个不小的数目... 所以没办法还是要细心挑选, 可是挑选在这种情况下, 其实也就是效率程度都很低下的事... 嗯... 没办法...

那么... 随意的随笔... 不可以随意地结束吗? 如果确实不太好, 那也只好说: 请原谅了...
查看全文及评论...

2007/04/23

【转】今非昔比:一千年前世界与中国差距有多大?

一千多年前的夜晚,全世界的城市都是一片漆黑,只有中国的城市灯火辉煌、光明灿烂。一千多年前的夜晚,全世界的城市都是一片安静,只有中国的城市人流拥动、欢歌笑语。一千年前世界与中国差距有多大?

一千多年前全世界只有中国有超过百万以上的超大城市。11世纪,欧洲最大的城市英国的伦敦,法国的巴黎,意大利的威尼斯、佛罗伦萨等城市的规模都不过万人。而中国的首都有一百五十万人。一千年前中国的城市规模的超过二十万人口的有六个,十万人以上的城市有四十六个。一千年前的中国城市就已经有施药局、慈幼局、养济院、漏泽园等福利设施,这是城市高级现代化的特征。一千多年前欧洲很乱很穷很落后,美洲未开发、非洲很原始。一千年前世界与中国差距有多大?一千年前世界与中国差距不是一点半点,不是一倍而是十几倍。一千年前中国遥遥领先于世界。

13世纪世界除中国以外最大最繁华的城市是巴格达,城市规模在三十至五十万之间。西方最大最繁华的城市是威尼斯只有十万人口。欧洲14世纪的伦敦也只有四万人,巴黎有六万人。而中国13世纪杭州、苏州、成都都是超过百万以上的大城市。一千年前世界与中国差距有多大?13世纪欧洲最富裕地方的意大利威尼斯人有幸来到泉州,不禁感慨中国城市是光明之城。13世纪西方最富裕地方的意大利威尼斯人有幸见到杭州,不禁感慨中国城市是天上的城市,认为杭州是世界上最优美最高贵的城市。一千年前世界与中国差距不是一点半点,不是一倍而是十几倍。一千年前中国遥遥领先于世界。

一千多年前的中国正朝着成为海上强国的方向发展。一千多年前西方最富裕地方的意大利威尼斯人见着中国的商船不仅感慨:“中国的商船也是人们能够想象出的最大的船只,有的有6层桅杆,4层甲板,12张大帆,可以装载1000多人。这些船不仅拥有精确得近乎奇迹般的航线图,而且,它们还拥有几何学家以及那些懂得星象的人,还有那些熟练运用天然磁石的人,通过它,他们可以找到通往陆上世界尽头的路,对于他们的天赋,愿上帝受到赞美。”一千多年前意大利人见着中国的面条后,于是他们发明了今天的意大利面条。一千多年前意大利人见着中国的冰激凌后,于是今天他们认为自己发明了冰激凌。一千多年前的中国如果有中国人环游了世界,今天有谁知道呢?

一千多年前中国华北的钢铁业年产就达一百二十五万吨,这是个什么感念?公元1788年欧洲工业革命开始英国钢铁业年年产才有七万六千吨。一千年前世界与中国差距不是一点半点,不是几倍而是十几倍。一千年前中国遥遥领先于世界。

中国11世纪开始使用纸币,而欧洲17世纪后才开始使用纸币。公元1661年,瑞典才发行纸币,成为欧洲最早使用纸币的国家。一千多年前中国的货币比今天的美元、欧元要坚挺吃香,中国的钱币物超所值。一千年前世界与中国差距有多大?

一千多年前中国人是最会做买卖的,宋朝人用泥土(把泥土烧成瓷器)就轻易换来大批金银珠宝。一千多年前中国人用高科技换取原材料、资源,一千多年后的中国人靠出卖廉价的劳动力与资源生存。一千多年前的中国人都很值钱,中国的工匠是世界各国急需的人才,是世界的宝。一千多年前中国人用高科技挣钱,一千年后的中国靠低廉的劳动力挣钱。

一千年前中国人会自豪的说:“我幸福,因为我是人,而不是动物;是男人,而不是女人;是中国人,而不是蛮族人;我幸福,因为我生活在全世界最美好的城市洛阳。”一千年后的中国人没有这样的自信。

一千年前的中国的教科书这样写:“天下者,天下之天下,非一人(皇帝)之私有也”,一千年后的中国的教科书这样写:“没有一党,就没有新中国”。一千年前的中国的老师告诉学生们:“天下者,天下之天下,非一人(皇帝)之私有也”,一千年后的中国的教师却告诉学生们: “没有一党,就没有新中国”。一千年前的中国的学生沐浴着民主的熏陶,一千年后的中国的学生灌输着奴化的教育。

一千年前世界与中国差距有多大?我幸福,因为我生活在全世界最美好

一千年前的中国有人敢对最高统治者说:“天下者,中国之天下,祖宗之天下,群臣、万姓、三军之天下,非陛下之天下” ,一千年后的中国却没有人敢说“天下者,中国之天下,祖宗之天下,精英、百姓、三军之天下,非一党之天下” ,一千年后的中国没有人敢说“天下者,天下之天下,非一党之私有也”……

一千年前全世界都是封建的愚昧的只有中国出现了民主的曙光,一千年后全世界都是民主的自由的只有中国是专制的落后的。一千年后的中国人却无耻的认为一千年前的中国落后,一千年后的中国人却的无知嘲笑一千年前的中国封建……

一千年前的中国已经摆脱前代沉迷于异族的宗教,以外国宗教为自己国教的状态。一千年前的中国自产的宗教儒教、道教大放光芒,远远压过外国盛行的佛教、伊斯兰教、基督教。这是国家文化强大民族自信的表现,一千年前的中国人自信得一塌糊涂。

一千年后的中国以西方被淘汰不入流的学说为自己的宗教,一千年后的中国抨击、狂骂着一千年前中国自产的辉煌学说。一千年后的中国人不自信得一塌糊涂。

一千年前的中国农业、商业、制造业、手工业、娱乐业都是世界最发达的,一千年前的中国的第一产业、第二产业、第三产业都是世界第一。一千年前的中国各方面都遥遥领先于世界,一千年前的中国是世界的中心,当之无愧叫中国。一千年前的中国经济、政治、科技、工艺、文化、娱乐、学术、数学等等都是世界第一,即使是军事也是数一数二。一千年后的中国什么是世界第一?人口?一千年后的中国各方面都落后于世界,一千年后的中国早已不是世界的中心,还无愧的叫着中国。

一千年前的中国不幸生在世界野蛮的时期,一千年后的中国幸运的处在世界文明的时代。一千年后的中国人无知的认为一千年前的中国丢了他们的脸,一千年后的中国人不知道自己的祖先的伟大,不知道谁是自己的祖先。一千年后的中国人歌颂着野蛮、歌颂着掠夺、歌颂着杀害自己祖先的人……

一千年后的西方人说:“一千年的中国经济总量最高时候占当时世界的百分之八十。”一千年后的中国人震惊的说:“这怎么可能?”一千年前世界与中国差距有多大?一千年后的中国人怎么能知道?……

一千年前的中国人不是一千年后的中国人,一千年前的中国不是一千年后的中国……


注: 一千年前的中国代指宋朝时的中国.


===============不纯转==================

责任在谁, 不用我说, 有脑子的自己想一想就明白了
我泱泱中华数千载光辉历史, 如今竟出了此群无耻匪类, 且任其纵横数十载, 食人无数, 当真是一大大让人齿冷之事, 可谓是苍天已死, 黄天当立

国破城亦破, 草枯风亦过
知者何人, 那曾经的风姿绝代

有生之年, 定要见那班跳梁小丑自食苦果的丑态
查看全文及评论...

2007/04/06

[唉]镜家事件终结, 佐藤友哉退出文坛!

所以说我好像是真的有这种特质: 被我看上的商品也好, 作者也好什么也好, 总之很容易被市场淘汰的样子... IT产品有3DFX, DIAMOND, 小时候喜欢吃的着味面, 后来澳洲这里蓝色的DORITOS, 老干妈的鸡辣椒(这个连累了很多人, 不好意思), 然后就是: 这次的佐藤友哉.

身为年岁相仿的新锐作家(姑且这么称呼), 身兼ACG爱好者的推理小说著者, 虽然<镜家事件>并不算是很正统的推理小说, 但是也有其独特的魅力和闪光点, 多线式的推进和扑朔迷离的谜团也很对我胃口... 虽然第三本沉默的钢琴只看过开头这样...

前阵在纪伊国屋看到他的新书: <圣诞节的恐怖分子 invisible + inventor>, 虽然是薄薄一本, 而且包着塑料膜, 还是很高兴地买了下来, 放在枕头边睡前看一看.
刚开始还满高兴的, 因为书中出现的冬子在镜家事件中也有登场, 虽然一开始就陷入谜团, 并且作者自己还时不时乱入加进解说, 比如"故事到这里就有趣了", "密室会在这一章中出现"之类, 还是算看得满高兴的, 不久后在<电影般的风格>里活跃的浩之和<搪瓷灵魂的比重>里的关键人物唯香也作为转折角色登场也让我欣喜不已, 就像之前就认识的熟人一样... 然后...
看过佐藤友哉的书都知道, 书再怎么厚, 伏线再怎么埋, 都会在最后几页里抽起关键性的一条, 大部分的谜就都可以解释了, 但也会留出很多琢磨不透的东西给看完书的读者伤脑筋, 所以当凭空消失的角色越来越多, 而冬子却把包含着可能最深秘密的笔记本电脑摔成两半, 喊道:"活该, 去死吧! 谁要看你的故事!" 我也并没有放在心上, 信手往下翻到最后一章...

"故事真的结束了, 但是我还是有话要说. 放在故事后面说的话叫做什么呢? 还用问吗? 当然就是[后记]了. 不过接下来的内容并不能算是纯粹的[后记], 而且跟故事本文的关联性页比一般所谓的[后记]要来的密切, 所以我决定要使用[终章](作品得一部分)这个符号."
"我想, 最聪明的你, 应该已经猜到了吧, 这本<圣诞节的恐怖分子>, 是佐藤友哉为短暂的写作生涯所画下的句点."

啊? 这是什么状况? 翻回前一章的末尾, 赫然写着"于是世界继续运转, 笨蛋们还是妄下定论, 继续自以为是." 嗯... 这个... 汗, 完全是只能做出orz这样的表情啊= =

回想一下, 原来作者是借着里面角色的口表达自己的不满和失望... 可是... 说实话... 这种小说还真是第一次看到啊... 写到一半突然就说告别写作生涯了... 所以... 佐藤友哉... 也要说再见了吗? 不会再看见你的作品了吗?
...虽然你被取了"再版处男"这样的外号, 虽然熊谷尚人说自己的作品大约只有6000名读者, 不过我还是很喜欢你的小说的...

嗯... 以后不写小说了, 也要加油啊...

贴一下佐藤友哉作品的封面, 一边是留作纪念, 一边是向朋友道别

查看全文及评论...

2006/10/24

Firefox 2!

亲爱的同学们, 记住今天吧, 这是优秀免费的开源浏览器 Firefox2.0正式发布的日子!
在Micro$oft肆意横行的时代, 感谢Mozilla和Google致力于把互连网还给我们, 发扬伟大的互连网精神: 免费, 和共享.
还在犹豫什么? 还不赶紧从微软手中, 夺回我们的互连网?


Firefox 2

Firefox 2

查看全文及评论...

2006/10/05

压片手记-AVS: Crop和Resize

关于AVS脚本编写, 其实大到开个站也可以... 不过小起来, 写一篇BLOG大概也就可以记录下一些心得了...AVS脚本的作用是把滤镜和信号事先处理好, 然后直接交给编码器压制... 大致需要经过几个步骤实现以下一些功能: 剪裁/调整比例和大小/去拉丝/降噪/锐化, 顺序不是那么严格的, 不过也应该有些忌讳.

最早做的应该是剪裁... 原则是这样: 拿到后先左右一共截掉16个pixel, 然后再进行后续工作, 因为有可能过几步后要继续裁. 截掉16个pixel的道理很简单: 所有的DVD机都是这么做的, 而且这也是在MPEG2规范中规定的(原因从略), 所以如果想后续步骤做对, 实现精确还原, 就要先这么做. 在这个意义上说, 所有的DVD播放软件的Resize这一步都是错的.
剪裁和调整比例通常是连在一起的, 那么一起说掉(但不严格要求剪裁16 pixel后立刻调整, 毕竟最后调整可以保留更多细节)... 分为PAL和NTSC.

PAL:
比例上有两种情况: 4比3, 16比9. 原始分辨率是720X576, 切完后704X576

4比3的情况, 很简单, 704/11X10=640, 另一边则是根据640/4X3=480. 这是最规范的分辨率640X480. 不管是官方还是民间白皮书上, 这都是最符合条件的. 当然硬要从704/4X3给出704X528, 也不是不可以, 不过比较不容易控制容量, 但这样确实可以保留更多细节(但其实很有可能是假细节), 毕竟信号源有这么大, 做起来比较爽. 另外注意这是唯一一种可以做出704X528的情况. 也就是PAL 4比3. 另外如果不是要求很高, 可以再降低一级变成512X384.

16比9的话, 要分成Letter Box和Squeeze. Squeeze的情况下, 纵向挤压了33%的信号, 因此在横向pixel数不变的情况下再下降33%, 或者直接套公式算, 640/16X9=360, 704/16X9=396, 甚至512/16X9=288. 但是, 显示卡要启动Overlay需要的是横向分辨率mod32, 纵向分辨率mod16, 360和396都不是16的倍数, 因此要进一步裁或补黑边, 360时如果没黑边了, 可以上下各补4个变成368, 如果有, 可以看情况裁成352. 396时建议补到400, 如果黑边较大, 也可以裁到384. 288则刚好不用裁.

Letter Box更简单, 按4比3调整完, 直接裁上下黑边到Squeeze的368/374或400/384. 总之最后怎么裁怎么凑mod16随便, 但换算过程不能含糊. 另外不建议先调整纵向然后在横向补黑边, 一方面没有这种算法规范, 另一方面屏幕两边没填满很难看.

NTSC的话, 也是分成4比3, 16比9, 16比9中有Letter Box和Squeeze, 道理基本一样. 不过因为NTSC原始分辨率是720X480, 因此4比3的情况下, 704级的那套不能用(软倍线? 以后再说吧=v=)

因此, NTSC总结如下:
4比3: 720X480 -> 704X480 -> 640X480/512X384, Finish.
16比9: 720X480 -> 704X480 -> 704X396/640X360/512X288 -> 704X400(384)/640X368(352)/512X288, Finish.
Letter Box的话按4比3的弄, 之后直接裁到16比9的最终分辨率.

一些特例如Ghibli的片子, 上下左右都有黑边, 这时可以先套704那组公式计算, 调整完, 然后手动裁到640那组... 或者672这种特殊分辨率, 记得原则就好.

那么关于剪裁和调整比例, 暂时就是这个样子. 其他的情况除了去拉丝必须在调整比例前做之外, 顺序没有严格要求, 按DOOM9里某前辈的话说, "No conception errors."^^
... 以上.
贴两张图, 上面是原始DVD, 下面是处理后, 注意周围黑边已经没有了. 关于其他处理, 下篇再说吧= =

查看全文及评论...