『漫游』酷论坛>『影音数码技术学习交流』>[整理]“交错的产生与 ..
[整理]“交错的产生与解除、TMPGEnc的手动、AVS的思考、aviutl使用”之DVDrip制作半程分析
dizyh@2005-08-07 13:40
第一部分——交错(拉丝)(Interlace)的产生
引用了相当多网友的分析与结论,恕我不能依次注明。分析主要来自“[SilkyBible] 视频知识系列”,就主要概念的主要影响因素进行了一点分析。如果有错误,还请多多帮忙指出,让偶顺便修正修正自己的想法。
======概念部分======
1、什么是电影胶片(胶卷)(Film)?
这里做个描述:在拍电影时,摄象机会象拍照片一样以每秒24张的速度拍在连续的底片上(胶卷),如下图所示。播放时则象播放幻灯片一样,每秒播放24张。常去电影院播放室的应该很熟悉。通常电影屏幕可以达到4000线(水平上4000个点),而DVD才720线,电影的魅力可窥一斑了。当然这4000线的图象与720线的图象是一样的。只不过4000线更精细些罢了。因此通常认为胶片与电影等价也马马乎乎啦。大家明白它们关系源远流长即可。
2、什么是帧(Frame)?
这里再简单说下,如上边的每一张幻灯片,一张幻灯片就是一帧。通常每秒播放17张以上,根据“视觉惰性”,即视觉暂留现象(人眼亮度感觉不会随着物体亮度的消失而立即消失),人眼就认为是连续的。因此,目前常见的PAL制式与NTSC制式的电视分别达到了25张与30张,对大多数人,画面已经是连续的了。即所谓的24FPS(帧速率:Frame Per Second)
3、什么是场(Field)?
因为CRT电视是不能一下子显示一个完整的帧,必须把帧拆成很多行(比如480行),再一行一行的显示出来。因此,实际的效果是不能满足人眼的视觉连续要求的,所以,继续提高帧速率就可以解决。但会导致显示设备的成本增加与技术难度。因此,把帧拆成两半,由奇数扫描线组成的半帧称为奇数场(Odd Field),由偶数扫描线组成的半帧称为偶数场(Even Field)。这样,就提高成了48FPS(场速率:Field Per Second)。要知道,虽然是奇数线组成的半帧,它也是可以完整看到一副图象的哦。只不过可能有些不够精细罢了。但电视为这个做了特别的优化。
4、什么是交错(Interlace)?
关于这个问题分NTSC制式与PAL制式(其实从电视技术上,还有其他的制式,而且PAL制式是NTSC制式的改进,不过实际问题更乱七八糟,大家想了解请自行跑新华书店,参考书籍是广播电视技术类^0^):把胶卷转成母带时(即压制DVD所用的母本),需要进行胶卷过带(Telecine)。NTSC制式采用3:2 Pulldown方式进行胶卷过带,把24FPS转成30FPS(帧速率);PAL制式则采用2:2 Pulldown方式进行胶卷过带。什么是3:2 Pulldown等,请先看下面的图片分析再看下文。至于为什么会有NTSC、PAL之分,这个简单来说是因为交流电对电视信号的干扰的解决所产生的。不再详细进行解说。
NTSC制式进行胶卷过带(Telecine):常见到的一个词 3:2 Pulldown (注:Pulldown是“折叠的”意思,什么是3:2 Pulldown胶卷过带?请先看下图分析后再来这里看概念)的过程就如下面所示。这个词用于30FPS的NTSC制式的电视(其实NTSC制式的电视是每秒播放60场)。
PAL制式进行胶卷过带(Telecine):PAL制式的电视则是 2:2 Pulldown ,因此很简单,是张张无交错的。(注意,这里是分析,实际中可能会有少量的莫名其妙的大致可以归为人为的交错,不再分析它,必要性不大)。PAL制式实际上是将24FPS(帧速率)加快4%进行播放,成为了25FPS(帧速率),也就是把48FPS(场速率)提高4%播放(也就是PAL制式的电视是每秒播放50场)。
注意,从母带到压制DVD也要进行变换。=====开始文字拷贝=====
DVD 压缩的时候,母带是胶卷过带(Telecine)后的 30FPS,但是原本的影片是 24FPS 的,这 30FPS 其实是从 24FPS 转出来的,中间有不必要重复的 Field。这些重复的 Field 会造成交错,使得每 5 个 Frame 中就有 2 个 Frame 交错(见图片:每五张烂两张),这些交错的画面要压缩的话不但浪费空间,而且交错画面又极难压缩,会使得压缩的效果很差。
所以先进的 DVD 压缩制程,在压缩时都会使用 IVTC(Inverse Telecine,反胶卷过带),将 30 FPS 转回 24 FPS,这样压缩的画面张数由 30 FPS 减少为 24 FPS,少了 20%,而且画面无交错容易压缩,所以压出来的画质会好很多。
但是 IVTC 检出不一定能做到 100%,遇到无法检出、判断的部分,Encoder 还是会以原本的 30fps 来压缩。所以我们会看到有些 DVD,是 Film(24 FPS)和 NTSC(30 FPS)混合的 DVD,又叫做 Hybird(混合)的 DVD,这个意思就是说,这张 DVD 内的画面,是 24 FPS 无交错 和 30 FPS 有交错两种型态互相混合的。
通常 RC1 八大电影公司出的 DVD IVTC 率都很高,几乎都高达 99% 以上,但是其它的公司出的 DVD 就不一定有这么高的比例。IVTC 100% 的 DVD 代表这张 DVD 内完全以 24 FPS 压缩,那么在 30 FPS /60 field/s NTSC 制的电视机上要播放时,要怎么播放呢?这些 DVD 在压缩的时候,Encoder 会写入一个 Flag(旗标)的信息,叫做 Repeat First Field,简写为 RFF。根据这个 RFF,DVD 机播放的时候,就会知道哪些 Field 要重复输出,利用重复输出这些 Field,DVD 机就会再播放的时候,做上面提过的 3:2 pulldown 的动作,在播放的同时,将 24 FPS 转为 30 FPS 输出,这样就能在电视上正常收看了。
PAL 制则不一样,胶卷过带时是采用 2:2 pulldown,也就是仍然输出原本无交错的 Frame,但始将播放速度加快 4%,声音也一起加快 4%,提升为 25fps,所以理论上来说,PAL 很好处理,因为画面根本无交错,所以直接压缩即可。不过我在这里看到有朋友提到,PAL 的 DVD 还是有些是交错的,这点我就不明白是为什么了,可能是制作过程上有问题吧。(譬如说用 DV 去拍的影片,DV 大部分是交错式拍摄,张张都交错,是补不回来的)=====结束文字拷贝=====
综上,去交错的原则只有两个:
1、如果原来是胶片(FILM),也就是经过了Telecine(胶卷过带)而形成了交错的话,去除交错的办法就是IVTC(反胶卷过带),以还原得到原始无交错的帧。
例如在A1A2、A1B2、B1C2、C1C2、D1D2这个序列中,如果A1B2由于某种原因没有了,我们可以手工拷贝B1C2作为A1B2,以还原24FPS序列。如果多了个B1C2,我们可以手工删除这个重复的C2以还原24FPS序列。所谓的手工IVTC,就是通过种种操作得到正确的原本序列。总之,片源DVD中的FILM的含量越高,我们做手工IVTC的地方越小。例如,EVA的D9版本的FILM的含量达到了99%,我们所要做的只是根据旗标RFF来做IVTC而已,简单到在DVD2AVI这个软件中只需要选择“Forced Film”这个选项即可。另外,通常来说,PAL本身是无交错的,因此也不需要用IVTC。
2、如果原来就是张张交错,比如说用 DV 去拍的影片,DV 大部分是交错式拍摄(我的猜想是按场拍摄,结果就成了场场不同,也就成了张张交错,懒的查资料了,仅供参考),张张都交错,是补不回来的。去除交错的办法就是Deinterlace(De-interlace,反交错),而使用IVTC是错误的。
Deinterlace的情况是最复杂的,所有不能使用IVTC的地方都是它的天下。使用了IVTC后仍有交错的更是它的地盘。例如TV版EVA第9集中有段背景是24FPS、前景是30FPS的字幕,这里就是典型的IVTC后背景正常而前景字幕仍有交错。所以要再进行Deinterlace,或者一开始就使用“偶数场自适应”、“奇数场自适应”、 “帧率加倍自适应” 或者把单场补成帧作成60P等等办法来进行Deinterlace。也因此从原理上决定了Deinterlace只能尽可能无限接近完美。
第二部分——常见的7种交错与解决办法(摘录)
——NTSC制式——
1、Film型
这种Film型的影片绝大多数出现在一区的电影里面。其特征就是每三帧没有交错的画面和两帧有交错的画面交替出现,DVD中包含完善的RFF或者TFF旗标。这种影片的处理非常简单,只要在DVD2AVI里面选择Forced Film即可输出完美的24p图像。日本动画也有少部分是Film的,比如《GUNDAM X DVDBOX》。标准的IVTC。
2、30p型(注:P指的是逐行(Progressive))
这种类型多出现在日本动画OVA中。特征是30fps,没有任何交错。这种影片更好处理,所需要的就是——什么都不需要处理。这种类型的代表有《超时空要塞ZERO》、《幻想传说 The Animation》、《红莲忍者》(H)等等。
3、30i型(注:I指的是交错(Interlace))
这种类型的影片,常出现在NTSC摄像机拍摄的影片中。比如演唱会、电视节目等等。只能做Deinterlace。
4、混合类型影片(30P+24P)
这种状况经常出现在动画中。通常是动画片头/片尾是30fps,每帧都没有交错;内容则是 3:2 Pulldown 类型的内容。更有些极端的片子,无论是片头片尾还是内容,全部是30P和24P无规律交叉出现。通常手绘部分为24P的3:2 Pulldown,电脑制作部分为30P。
对于30P+24P混合的影片,通常处理方法为制作120fps的AVI或者制作MKV格式(MKV支持VFR(可变帧速率)。制作120FPS的AVI的办法是分段处理。所以如果比较极端,就会比较麻烦,最好还是作成VFR的。
这种类型的代表做很多,听说最近播出的《AIR》就是,通常是动画片头/片尾是30fps,每帧都没有交错;内容则是3:2 Pulldown类型的内容。而比较极端的例子,就有《HELLSING》,整片24P和30P无规律交错出现,处理起来极为麻烦。
5、30P中间夹杂少数类交错现象
这种状况通常出现在纯电脑制作的OVA动画中,比如《幻想传说 The Animation》就是。整个片子总体来说是30P的。但是在片头部分出现场景渐变(渐变前场景为2D,渐变后的场景为电脑制作的3D)的时候,会出现某些类似于交错的状况。如果出现的比较集中,可以用trim截取分段处理,如果不太顾及效果,也可以整片Deinterlace。如果比较疯狂地追求效果,可以用TMPEGENC来一帧一帧地挑出来做。
6、Hybird Frame型
一个Frame之中,部分交错,部分没交错。例如有些影片的字幕、工作人员名单是telecine之后才overlay上去的,造成背景画面没交错,前景字幕却是交错的。或者是画面中有“画中画”,本片或“画中画”中一个交错一个不交错……出现这种状况的帧,需要做Deinterlace。
这种类型的代表做是《银河英雄传 外传》系列的片头。在该动画中,片头部分包含很多“画中画”,其中画中画中的图像是交错的,而前景却是非交错的,很令人头痛。国内的银河英雄传再制作委员会制作的DVDRIP版《银河英雄传 外传》便存在这个问题。
7、其他奇形怪状的乱七八糟类型
各种各样的片子,其混合格式实在不少,其中尤其以日本动画老片DVD为甚。不过最近几年的情况好了很多,很多新的动画DVD都是比较标准的3:2Pulldown,只是有时候旗标不是那么规范就是了。
老片有时候会出现24P+30I、24P+48I、xxx+xxx、DVDmastering,剪接的时候少掉一张,图场颠倒,enocder的IVTC错误,造成frame画面补不回无交错的状态等等等等……这些片子很难处理,建议放弃。如果你想磨练自己的技术,呵呵,祝你成功啦。
至于PAL制式,因为情况比较少,而且可以参考NTSC制式的分析,就不列出来了。
公布一个最强的,也是最变态的去除交错的办法,就是把有交错的地方输出成图片序列,然后对图片一张张手工修改,最后再合成视频片段。HOHO,偶是做不到这点啦~~~~~
最后,看了这么多交错的情况,很是需要一个强大的处理软件来帮忙的。这里有人使用AVS的滤镜来做,但通常来说,不够直观,也不够方便。因此我并不推荐。下文将讨论我们应该如何简单化去除交错这个问题。
第三部分——几种主要的交错情况的相关解决分析,具体操作见下面的TMPGEnc应用简介
看了上边的那么多的交错情况,似乎很头痛了吧?对于IVTC的方法来说,如果你看到这里应该很明白它的难度是比较低,而且应该差不多应该已经很了解如何使用了。而对于非IVTC交错解除方式的情况总是用个Deinterlace一步带过,呵呵,现在就来对Deinterlace交错解除方式做比较具体的使用分析。对了先看个奇偶场是什么东西吧。
这个是一个由奇偶线组成的图形,其中白色的偶数线是透明的。
这个是一张原始交错帧。
这个是遮住偶数线的图象。奇数场
这个是遮住奇数线的图象。偶数场
1、 DV式的交错拍摄造成的张张交错(例如30i,即帧速率为30,张张交错)。高质量的Deinterlace办法:
做成60P(就是做成60FPS帧速率的逐行(Progressive))。也就是把每一个场都做成一个帧,这样就成了60P,画质最好的办法是保留成高度为240行(因为原帧是480行,每场自然是240行了),把宽度缩小一半,这样的结果就是画面大小变成了原来的1/4,不过,对于电视播放反而不用进行插行与缩小,因为电视对这样的锯齿感有优化处理的;不想改变画面大小的话,则可用单场来做Deinterlace插行补足480行,也可用“帧率加倍自适应”的办法,通常来说“帧率加倍自适应”的画面会更精细些。至于反交错滤镜是如何插行,简单的来说是复制其上边一行。详细分析请自行看“[SilkyBible] 视频知识系列”。对比效果见下。
从分析来看,似乎所有的交错都可以用这种办法解决。而且对于那种24FPS与30FPS片段混合的也不用做什么分段处理了,再复杂都无所谓,直接60P就得了,120FPS也可以省了^0^。哈哈,话是这样说,但从画质上,120FPS的画面本质与60P的画面本质可是完全不同的哦。
而且,从实际例子来看,还会有这种情况,即一个场中也有两个似乎是交错的图象。这个其实不是交错,是动漫制作者为了在电视播放中提高动作的连贯性而特意混合的,其中按播放时间下一个图象是特意虚化的。看这个例子。
而且,从另外的角度来看,本来24FPS的做成了60FPS,一方面会文件大小有些变大,另外播放时也会增加播放的硬件要求。从画质上来看,也是不正确的处理。而且例如上边的那个好似交错的混合场,其实在计算机中也没必要保留。所以,只有实在没办法了,才需要做这种60P。
顺便说一句,因为是单场,画面从分析上应该会在播放时上下跳动,高度错一个象素嘛,不过,不用担心,基本上现在的滤镜做这种处理时会考虑到这一点而自动调整的。
2、在TMPGEnc中进行反交错时,当自动选择时无论如何都会出现有一个交错的帧会被选中、但明明这个交错帧前后都有完好的帧的情况。这里一般是TMPGEnc为了保持影音同步造成的。高质量的Deinterlace办法:
这里我们就可以用“拷贝帧”的办法把这帧前面或者后面的完好帧拷过来来代替它,以保持影音同步。另外,这里为了尽可能不出现暇龇,需要尽可能在一个场景动作中完成。例如下面这个例子,因为奇偶场都是这种不是交错的混合场,但是TMPGEnc为了保持影音同步非要选择这一帧,这样就无法完美的在计算机上进行播放,所以为了画面的纯净,就可以用“拷贝帧”来用前面好的一帧代替它。
“拷贝帧”:复制当前帧的前一帧(被设定为输出的)并替换掉当前帧的过程与结果就是拷贝帧。它有2种用武之地:第1个是用前后好帧代替坏帧以保证影音同步,并保持画质完美;第2个是例如TV版EVA第25集的那个长达1分钟的定格,用拷贝帧除了可以保证该画面唯丝不动外,还可以减小文件的大小(不过,个人认为,第2种用法性价比不高,不值得提倡)。
3、一个Frame之中,部分交错,部分没交错。例如有些影片的字幕、工作人员名单是telecine之后才overlay上去的,造成背景画面没交错,前景字幕却是交错的。或者是画面中有“画中画”,本片或“画中画”中一个交错一个不交错……出现这种状况的帧,做Deinterlace的办法是:
比如TV版EVA第9集IVTC后的画面字幕倒记时部分仍存在交错帧现象,把这些交错帧拿来做Deinterlace,可以用TMPEGENC手工挑出来这些帧,用“帧率加倍自适应”做自适应Deinterlace(用单场Deinterlace太可惜了,因为画面只有一部分是交错的,哈哈,但即使是“帧率加倍自适应”,画面质量仍会受到影响,建议只要做到不被观众轻易分辨出就行了)。下面详细说明下为什么IVTC后仍有这种交错的产生根源。
好了,以上3个是比较典型的处理,其他类型的都可以借鉴并混合运用解决交错问题。具体操作要点请接着看。注意,采用TMPEGENC而不用AVIUTL进行Deinterlace的原因是为了尽可能讲清楚为什么这样Deinterlace。
第四部分——TMPGEnc PLUS 2.58.44.152简体版的手动简介
忘了说一句:在下面的图中可以按“Ctrl+P”来打开算法对话框,选择“0101010010”等等算法,这也是更为强大的手动。
第五部分——AVS的反思
AVS是作为中间人的角色出现的。它本来的用意是通过它,让各个软件的处理结果可以通用。其后因为它的实用性导致更多插件的作者为其写了大量极其优异的插件。就目前来看,通过这些插件基本上可以完成我们所要求的一切。
============== 举个少少有点夸张的例子 =================
LoadPlugin("F:\Program Files\VideoTools\AviSynth 2.5\plugins\DGDecode.dll")
video = MPEG2Source("vol6_2.d2v")
audio = WavSource("vol6new.wav")
#audio = DelayAudio(audio, -0.67)
LoadPlugin("F:\Program Files\VideoTools\AviSynth 2.5\plugins\IT.dll")
video = IT(video, fps=24, ref="TOP", blend = true)
#校正颜色与亮度(线条)偏移
#如果要精确控制,需要对漏色段进行大体分割,对有漏色的才校正,然后合并
LoadPlugin("F:\Program Files\VideoTools\AviSynth 2.5\plugins\ChromaShift.dll")
video = ChromaShift(video,C = -2)
#LoadPlugin("F:\Program Files\VideoTools\AviSynth 2.5\plugins\De.dll")
#DeDot(20,20,15,5)
video = Crop(video, 8, 0, 702, 480)
video = Lanczos4Resize(video, 640, 480)
op = Trim(video, 0, 2157)
main = Trim(video, 2158, 29604)
ed = Trim(video, 29605, 0)
LoadPlugin("F:\Program Files\VideoTools\AviSynth 2.5\plugins\UnDot.dll")
LoadPlugin("F:\Program Files\VideoTools\AviSynth 2.5\plugins\Deen.dll")
LoadPlugin("F:\Program Files\VideoTools\AviSynth 2.5\plugins\eDeen.dll")
LoadPlugin("F:\Program Files\VideoTools\AviSynth 2.5\plugins\UnFilter.dll")
LoadPlugin("F:\Program Files\VideoTools\AviSynth 2.5\plugins\Convolution3dYV12.dll")
LoadPlugin("F:\Program Files\VideoTools\AviSynth 2.5\plugins\FluxSmooth.dll")
LoadPlugin("F:\Program Files\VideoTools\AviSynth 2.5\plugins\aWarpSharp.dll")
#处理OP部分,轻度柔化
op = deen(op,"a2d",1,10,12)
op = aWarpSharp(op, 10.0, 2, 0.3, 1)
#处理正片部分,柔滑+锐化
main = deen(main,"a2d",1,10,15)
main = aWarpSharp(main, 10.0, 2, 0.3, 1)
#处理片尾部分,中度柔化降噪
ed = Convolution3d(ed,preset="animeHQ")
ed = edeen(ed,5,10,15,2,3,true)
ed = aWarpSharp(ed, 10.0, 2, 0.3, 1)
video = op ++ main ++ ed
video = AudioDub(video, audio)
LoadPlugin("F:\Program Files\VideoTools\AviSynth 2.5\plugins\VSFilter.dll")
video = UnDot(video)
video = TextSub(video, "[FREEWIND][LOVE_HINA][DVDRIP][06].tc.ssa")
return video
======== 结束 ==================================
这个例子看起来够复杂、功能也够强大吧?然而真的需要这样做吗?我的看法是从学习上固然是一种值得学习的精神,但是从实践中与时间上以及AVS的本质作用来看,这是一种本末倒置。
AVS作为中间人,不应该承担这么多的处理任务。因为其中间人的本质性,以及它并不支持实时处理。因此,不应该再使用它来处理。我们只要借用它的中间人功能即可。我们需要的是它来搭桥。
看下面这个例子:
==== AviUtl.avs ======================
LoadVFAPIplugin("D:\aviutl99\aviutl.vfp","AviUtlSource")
AviUtlSource("op.aup")
FlipVertical()
==========================
只需要三行,就可以处理开头所举的那个有点吓人的例子的全部功能,例如反交错、Crop&Resize、颜色补偿、亮度调节、噪音去除。而在AviUtl做这些处理,只需要用鼠标点那么几下即可。效果则是实时显示出来。而且我们还可以把这个文件再丢给TMPGEnc进行其他的修正。详细使用请看最后的AviUtl使用简介。所以,一句话,只要你高小毕业通过,上边那个AVS或许头痛,但搞定AviUtl还是小意思地^0^
第六部分——AVIUTL的使用
以上介绍了AVIUTL的主要选项,接着就可以另存AVI文件了,在那个对话框中可以选择编码格式。忘了一点,这个动漫片段中间有段30FPS的字幕,大家用分段处理吧。瞧瞧AVIUTL的分段功能是如何的强大。不过,我的看法是那段5秒左右的版权字幕实在意义不大,可以统一到24FPS。关于AVIUTL就介绍到这里,它的强大与便捷还请大家继续自行摸索,另外AVIUTL也象AVS一样有太多的插件。功能自然也是五花八门。不过,就它本身的已经几乎满足大家的需要了。
结束语:恭喜你终于看完了全文,估计作个一般的DVDriper已经没什么问题了吧?小弟也就这水平,写下这个只是等着更多人参与到DVDriper的大家庭中来,偶就可以在某个旮旯看着更多精彩的动漫DVDrip偷笑了,啊哈哈哈哈……
appleapple@2005-08-07 14:52
晕!!。。。。。。。。。
终于看完了,又学到了些东西,
谢谢楼主的文章
Bopirit@2005-08-07 16:34
强,,强
Sephiroth0328@2005-08-07 18:19
晕~
太专业了,有点看不懂~
ramesh1027@2005-08-07 21:01
好专业啊,有的看了
yhnui@2005-08-07 21:17
是个好文章..........给您拍拍手
不过如果多写了aviutl手动IVTC的话
我相信会更好
gfm688@2008-10-24 14:22
30i型 也要IVTC吧?
绿叶之砚@2008-10-24 14:46
挖坟干啥……
ZhenGod@2008-10-24 16:51
好墳大家挖 =3=
idear@2008-10-24 16:53
==
我还以为我穿越了……
uc0083@2008-10-24 18:40
我还以为有谁在转贴
海波湛蓝@2008-10-24 19:30
……我也以为是有人挖坟……
kircheis@2008-10-24 19:34
谁能把坟图挖出来
alphaa@2008-10-24 20:33
哦,这个我以前保存了离线页面,作为很好的新手入门教程~
52wy@2008-10-24 21:05
是个很有价值的坟
«12»共2页
| TOP