NMM视频技术(旧)

 找回密码
 成为会员
搜索
查看: 4893|回复: 1

制作VFR的MKV

[复制链接]
发表于 2009-8-2 12:44 | 显示全部楼层 |阅读模式
本帖最后由 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封装即可.

在翻译方面可能还有个别的出错...还请多多指教...
发表于 2009-8-2 13:09 | 显示全部楼层
自动判断有时候不是特别准确,我有时间的情况下一般都是手动分段、手写时间轴。
此外建议楼主把“编码VFR的MKV”改成“制作VFR的MKV”,因为MKV不是编码,是封装。
您需要登录后才可以回帖 登录 | 成为会员

本版积分规则

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

GMT+8, 2019-2-19 13:03 , Processed in 0.042024 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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