NMM视频技术(旧)

 找回密码
 成为会员
搜索
查看: 7864|回复: 10

[原创]120fps DVDRIP制作细节 增订版Ver.1

[复制链接]
发表于 2005-6-18 15:29 | 显示全部楼层 |阅读模式
增订版V1修订说明:
1.在重要词语处加上标记,阅读更方便。
2.增加了AU输入tpr的方法。


最近问120fps制作的问题很多,所以在这里找个机会集中总结一些细节问题。
===============================================
随着vfr(可变帧率)的制作逐渐兴起,以及支援vfr的容器(Container)(比如老牌的MKV,以及新兴的MP4)的不断进步,120fps这种假vfr方法已如明日黄花,即将退出历史舞台。(天啊:o~我在写些什么……历史教科书吗?)
但是在不是所有人都掌握vfr制作之前,120fps仍然可以算作一个较好的折中方案。
之前曾经有文章介绍过TMPEG的手动IVTC的操作(就是sswroom大的《谈手动IVTC》啦~),文章结尾处简单提到过120fps的制作方法,但是并不怎么详细。在这里,我就将sswroom大没有在文章中详细讲解的120fps制作方法写出来,针对一些细节问题进行详细一些的说明。
===============================================
完成了 IVTC 後, 按檔案 > 儲存 TPR 檔

这个就不用多说了,在手动IVTC完成之后,回到TMPGEnc主界面下,在File菜单下选择Save Project,存储.tpr工程文件。这个工程文件非常重要,今后将有可能作为片源(为什么说“有可能”呢?下面就会讲到~),同时也会用来创建120fps制作时插入NULL帧的索引文件。
===============================================
然後丟給 Codec 進行壓縮

sswroom大一句话可以说省略了N多问题~到目前为止很多问题就是针对这句话产生出来的。
我们可以通过AVS作为“中转”,达到“将tpr工程文件丢给CODEC压缩”的目的。

AVS制作的方式一共可以有两种(或许更多,但是我只知道两种),请根据自己的实际情况来选择其中一种。
方法一
优点:可以充分利用TMPGEnc的功能(包括TMPGEnc的全部反交错方式等等的全部功能)
缺点:不能全程YV12制作(中间经过VFAPI,VFAPI内部使用RGB来传递讯息)、TMPGEnc必须完全Crack或使用经过授权的正版TMPGEnc:

  1. LoadVFAPIplugin("路径\TMPGEnc.vfp","TMPsource")
  2. TMPsource("1.tpr")
  3. ConverTtoYV12()
复制代码

其中关键是这个文件TMPGEnc.vfp,这个文件会出现在你安装TMPGEnc的目录下面,所以需要把上面范例中的“路径”改成你安装TMPGEnc的目录。
LoadVFAPIplugin的第二个参数TMPsource,是你指定这个VFAPI plugin的名称,可以自己改名字,但是必须要和TMPsource("1.tpr")里面的名称相对应。
tpr是你刚才转存的tpr工程文件的名字。为了方便起见,这个AVS脚本最好与tpr工程文件存放在同一个目录下。
注意事项:
  • 因为加载过来的片源是RGB格式的,而AviSynth 2.5x有一些插件不支持RGB颜色,所以如果你下面使用的插件不支持RGB颜色区间的话,还需要挂上ConverTtoYV12()讲颜色区间转换到YV12。
  • 用方法一写出来AVS脚本之后,画面可能是颠倒的。如果出现这种状况,还需要在AVS脚本中加上FlipHorizontal()或者FlipVertical()来反转画面。在我试验的过程中,出现了画面垂直反转的状况,所以加上FlipVertical()反转回来,但也不排除出现垂直反转,甚至水平和垂直全部反转的状况。如果你发现画面颠倒了,不妨试试上面两个语句。
  • 使用本方法,实际上就是在调用TMPGEnc,所以如果你使用的TMPGEnc版本破解不完全(据我所知绝大部分所谓的“破解版”TMPGEnc都是属于这种状况),那么在使用VDM等工具打开包含TMPGEnc.vfp的AVS脚本的时候,可能会出现软件过期的错误!所以,我们推荐使用获得合法使用权的软件。

总结一下,如果使用方法一,那么处理的流程是:VOB->DGIndex解码->TMPGEnc->AVS

方法二
优点:全程YV12、不经过TMPGEnc、没有画面反转的麻烦
缺点:不能利用TMPGEnc的全部功能(如自是适应反交错和其他TMPGEnc的功能)、功能不稳定
方法二让人有种“借鸡生蛋”的感觉。因为,我们需要借助一个叫“TPRIVTC”的AviSynth的Plug-in来读取.tpr工程文件中的IVTC和Deinterlace数据。所以,我们最终压制过程中完全不需要经过TMPGEnc,所以能保持全程YV12制作。

  1. LoadPlugin("E:\gk\DGMPGDec\DGDecode.dll")
  2. LoadPlugin("E:\gk\AviSynthPlugins\tprivtc.dll")

  3. Mpeg2source("F:\pv\EXILE - Choo Choo TRAIN.d2v", idct=0)
  4. DoubleWeave().TPRIVTC("F:\burn\pv\EXILE - Choo Choo TRAIN.tpr")
  5. crop(2,0,702,480)
  6. LanczosResize(640,480)
复制代码

在这个例子中,我们可以看到,片源的导入依然使用我们常用的MPEG2Source,只是平常放置IVTC/Deinterlace语句的地方,被DoubleWeave().TPRIVTC("F:\burn\pv\EXILE - Choo Choo TRAIN.tpr")所取代。
这个里面的TPRIVTC的作用就是读取.tpr工程文件中的IVTC和Deinterlace设置的。
需要强调的是,TPRIVTC的Deinterlace功能只对应单取奇或单取偶,以及奇偶混合(就是TMPGEnc中的Double)的方法,没有办法做到TMPGEnc里面的“自适应去交错(Adaptive deinterlace)”,所以遇到有需要单张去交错的画面时,这个 filter 就不是那么好用了(本段winsen语)。
出去上述缺点,TPRIVTC在某些情况下可能会出现工作不稳定的情况,可能导致花屏、VDM异常退出、IVTC(或Deinterlace)无效等等问题。影响的因素可能有颜色区间、AviSynth和TMPGEnc的版本等等。但是,到目前为止我使用这个插件一直很正常,并没有出现什么错误:D。
总结,方法二的处理流程是:VOB->DGIndex解码->AVS。跟我们平常制作的流程一样:P

~~~~~~~~~~增订Ver.1 开始~~~~~~~~~~

事实上,除了使用AVS以外,我们同样可以使用AviUtl(简称AU)来进行压制。
首先要确定你注册了TMPGENC的VFAPI。在AU的ファイル菜单->環境設定->入力プラグイン優先度の設定中,看看列表中有没有TMPGEnc Project File Reader x.xxx的字样。
如果没有,就关掉AU,将TMPGEnc目录下的TMPGEnc.vfp放到AU目录下。之后再打开AU,这时,应该就能正确开启.tpr文件了。
开启.tpr文件之后,一切都跟平常的处理一样了,最终可以通过AU输出.avi的文件。
~~~~~~~~~~增订Ver.1 结束~~~~~~~~~~


好了,到这里最难的部分已经说完了。又是长篇大论呢~本段中所举出的范例AVS脚本只能算是基本中的基本,之后还要视情况添加降噪等滤镜。
写好AVS之后,我们就将这个AVS送给CODEC去压缩,压缩过程跟一般片子一模一样,这里不再赘述。
只不过,这样压缩出来的AVI只有一种帧率。播放一下看看,会发现播放时间不对。所以,这个AVI现在只是半成品,好需要下面进一步的加工。顺便提一下,在这个步骤中,我们可以先将音频merge进这个半成品AVI,但是如果播放的话,你会发现音频/视频不同步,这是肯定的。不要着急,等我们插入完NULL帧就好了。
===============================================
用 TPRRead 開啟 TPR 檔, 並按下 Export AVI Script File 儲存 Script 檔(建議使用 *.txt).

TPRRead是sswroom大写的超伟大的程序,它可以读取.tpr中的IVTC信息,并创建一个脚本,这个脚本将来需要提供给AVIRead,给我们的半成品AVI插入NULL帧将其变成120fps的AVI。
sswroom大说建议使用.txt文件,其实我倒觉得用.asc还是.txt没什么太大的关系^^||
具体操作sswroom大已经写得很明白了,所以不再赘述。
===============================================
用 AVIRead 開啟剛壓好的 AVI 檔,Edit > Insert Drop Frame using script file (120fps), 然後 File > Save As... 便可完成了

启动AVIRead之后,点击Window菜单,选择Open File,打开刚才我们的半成品AVI。之后打开Edit菜单,选择Insert Drop Frame using script file (120fps),程序会弹出对话框,先点浏览Browse)按钮,选择刚才我们用TPRRead生成的脚本文件。
下面的Frame Delay项应该是选择插入的NULL帧的类型吧~(个人无责任猜测,猜错了请不要用西红柿pia我)保持默认的BF就可以了。
之后点OK按钮,经过一番运算,AVIRead确定在那里插入NULL帧。点File菜单,选Save As,就能够输出120FPS的AVI了。

*本文写完之后,没经过校对,但是写了一个半小时,眼睛实在太难受了~以后有时间再校对吧~所以……错别字肯定很多,但是应该在可以接受的范围内吧~HOHO(读者:这家伙已经攒了N多文章没校对过了﹃_﹃〣给我拿西红柿pia他…)
发表于 2005-6-29 04:03 | 显示全部楼层
Originally posted by dgwxx at 2005-6-18 15:29:
  Quote:
用 AVIRead 開啟剛壓好的 AVI 檔,Edit > Insert Drop Frame using script file (120fps), 然後 File > Save As... 便可完成了



启动AVIRead之后,点击Window菜单,选择Open File,打开刚才我们的半成品AVI。之后打开Edit菜单,选择Insert Drop Frame using script file (120fps),程序会弹出对话框,先点浏览(Browse)按钮,选择刚才我们用TPRRead生成的脚本文件。
下面的Frame Delay项应该是选择插入的NULL帧的类型吧~(个人无责任猜测,猜错了请不要用西红柿pia我)保持默认的BF就可以了。
之后点OK按钮,经过一番运算,AVIRead确定在那里插入NULL帧。点File菜单,选Save As,就能够输出120FPS的AVI了。

下面的Frame Delay是指影片第一格畫面的重複次數, VirtualDub會自動替影片作出修正, 所以應該設成 0。

附件容量不足, 不能上傳AVIRead 0.927.....
現上傳TPRRead 0.56

TPRR056.rar

19.28 KB, 下载次数: 1993

 楼主| 发表于 2005-6-29 09:04 | 显示全部楼层
哇……sswroom大本人都来了~欢迎一个
改了一下ss大的用户组,现在你可以上传2M的附件了
发表于 2005-8-20 12:27 | 显示全部楼层
问一下,手动itvc会不会造成非常明显的jerk?
我的源是ntsc interlace的dvd,日本的,一段影片介绍,从4a开始我选的是 1010101010

为了还原到23.976,我把8a放弃了,也就是1010101000接后面的10xxxxx,3个0会不会造成jerk?

还有一个问题,就是我选出来得也不是完全没有扫描线,是不是应该在选好patten,check没问题以后,给所有的选出来的帧进行deinterlace?
也就是在所有选出来的第一帧,deinterlace since this frame is specified里面选相应的deinterlace的方法?
 楼主| 发表于 2005-8-20 20:50 | 显示全部楼层
如果是比较规则的片子,可以在每个场景的第一帧处右键单击上访的浏览栏,选择Enable automatic setting after this frame,Deinterlae可以选None。每一个场景每一个场景这么新换下去,比自己一点一点找pattern要快速不少,而且准确率比完全靠自动设定来的高。
每个场景从第一帧处开始auto,之后只要浏览本场景,看看有没有interlace的地方,如果有,就在这帧临近的位置看看能不能找到一帧补回来(就是说,不要输出Interlace的帧,而选择他旁边的Progressive的帧来代替),大原则是帧总数不变,如果变了,就可能出现影音不同步。如果找不到合适的Progressive帧,那就手动选择Deinterlace。
选Deinterlace的时候,deinterlace since this frame is specified里面是在后面所有的帧都应用你选择的Deinterlace方式。如果想只Deinterlace你选择的这帧的话,就要选择比deinterlace since this frame is specified更靠下的deinterlace菜单里面的选项。

以上讲的是规则的片子,如果遇到不规则的片子,比如我再DRL提问过的《魔术师奥菲》,就要看个人功力了……各显神通吧~尤其是老片子难对付

我一般是这么做的,不知道是否有更好的方法。我这种是手动+自动的偷懒方法,在学会sswroom大大那种神乎其技的手动技巧之前,先用这个偷懒- -||
发表于 2005-8-20 21:53 | 显示全部楼层
场景是指什么?
发表于 2005-8-20 21:55 | 显示全部楼层
还有,30i的片子用fielddeinterlace,直接做成30fps?
发表于 2005-8-20 23:22 | 显示全部楼层
Originally posted by dgwxx at 2005-8-20 20:50:
如果是比较规则的片子,可以在每个场景的第一帧处右键单击上访的浏览栏,选择Enable automatic setting after this frame,Deinterlae可以选None。每一个场景每一个场景这么新换下去,比自己一点一点找pattern要快速不少,而且准确...

每個場景作一次自動設定, 使用時間比手動設定慢, 而且在淡入淡出的地方會出錯。「帧总数不变」是在24fps或30fps制作時用, 120fps制作時可以不用理會。

手動設定也是每一個場景設定一次, 每個場景約用 2秒 來設定, 其他時間是用來檢查設定有否錯誤。
 楼主| 发表于 2005-8-20 23:48 | 显示全部楼层
因为sonw提到了要“还原23.976”,所以应该是在IVTC吧,就强调了一下“总帧数不变”。至于场景渐变或者fade,我一般会直接无视自动判断的结果来手动处理,保证不出错。至于其他地方就偷懒靠自动了。一集24分钟的动画我用自动+手动一般两小时完成,我第一次尝试完全手动用了4小时还不完。所以我觉得具体操作方法应该根据个人习惯和熟练度来掌握。

场景指一个cut,就是前后画面完全不同。
30i除了Deinterlace之外,还可以用补场的方法加速成60fps。
发表于 2009-1-21 16:02 | 显示全部楼层
即将出历史舞台

退出
 楼主| 发表于 2009-1-22 12:27 | 显示全部楼层
10# tendyang
感谢指正:)
您需要登录后才可以回帖 登录 | 成为会员

本版积分规则

小黑屋|手机版|NMM视频技术

GMT+8, 2019-6-27 20:32 , Processed in 0.128750 second(s), 17 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表