|
本帖最后由 wai5888 于 2009-8-2 16:31 编辑
原文:
http://avisynth.org/mediawiki/VFR#encoding_to_vfr_.28mkv.29
译文:
编码VFR的MKV
首先下载mkvtoolnix.我们将用它来封装视频和一个叫timecodes的调整文件.要确认你的版本要在1.6.0以后,因为之前的版本在读取timecodes时会出错.
有几个AviSynth的插件可以让我们得到VFR的视频和timecodes文件.下面的例子就是使用Decomb521VFR插件来完成的.另外一个就是TITVC里面的TDecimate这个插件.请看他们各自的说明文档,了解更多的调试.
DeDup这个插件可以去除重复帧但不改变帧速率(如果不先去除重复帧,将会出现jerky),因此重复帧不能被留下.DeDup还可以使用上面两种方法得到的timecodes.
Decomb521VFR:
添加以下到你的脚本:
Decomb521VFR_Telecide(order=1, guide=0)
Decomb521VFR_Decimate(mode=4, threshold=1.0, progress=true, \
timecodess="timecodess.txt", vfrstats="stats.txt")
用VDM打开你的脚本,将会生成一个timecodes和stats的文件,然后将会进行编码.开始时会有停滞的现象,这是因为它首先会检查所有的帧.
TIVTC:
这是一个2Pass的模式,
添加以下到你的脚本:
TFM(mode=1, output="tfm.txt")
TDecimate(mode=4, output="stats.txt")
用VDM打开脚本,播放预览完它.然后关闭脚本,删除掉上面的脚本(或者重新写一个脚本),加上
TFM(mode=1)
TDecimate(mode=5, hybrid=2, dupthresh=1.0, input="stats.txt", \
tfmin="tfm.txt", mkvout="timecodes.txt")
然后进行编码.
帧速率:
如果你是以特定大小而是用bitrate calculator计算后来编码的,VFR时可能会造成码率错误.需要在编码前在加一下脚本:
在抽取前:
oldcount = framecount # this line must be before decimation
oldfps = framerate
脚本结束之后加上:
averagefps = (float(framecount)*float(oldfps))/float(oldcount)
AssumeFPS(averagefps)
封装:
把编码出来的MKV和timecodes丢进mkvtoolnix封装即可.
在翻译方面可能还有个别的出错...还请多多指教... |
|