视频压制技巧点滴 (不断更新) 

唉看到了FC2那篇所谓的教你如何翻墙文章,真是淡淡的忧伤啊……orz
那么为了表示支持,还是继续发博文罢。

这几天由于在压樱花祭的视频,所以又重新开始研究压制相关的一些东西。我发现有些东西虽然当时看过了很简单,但是如果不常见练习很快就忘,即使将相关网页加成书签,以后找起来也挺麻烦;不如专门建立一个像这样的「剪贴簿」,把一些技巧收集起来。

需要声明的是这帖子完全是小白向,所以其中不免会有一些错误、不合理的想法和做法,如果有人阅读后能帮忙指正或者提出改进意见,那实在是感激不过。

1 处理视频前是否一定需要做demux?

我原来其实只压过DVD,所以一切步骤都是按照MeWiki上那篇简易dvdrip教程来的。里面提到了要用DG creator先把音轨demux出来,同时再用那个d2v/dga的索引文件制作AVS(提示:如果看一些比较老的教程里可能不是叫DG Creator,因为原来有两个DGIndex和DGindexNV或DGAVCIndex是分开的,现在新版megui都合并到一起了)。

但是我们现在在AVS里面Source可以选成DSS(DirectShowSource),那么是否还一定要有这一步呢?我只能说不知道。但是理论上来说,还是应该先demux音频←其实这不是关键,关键是那个索引文件,对视频接下来的读取和压制都会有引导作用。

但是有些时候,会发现有的视频用DG Creator搞不定,表现为Process开始后根本干读秒不干活(我这次压制的这一批MTS有1/3会出现这种现象,而且更诡异的是我在网上搜有人说DG Creator根本不支持MTS呢= = 可能又是新版GJ了?),那就只能在AVS里用DSSource了,效果么也没看出什么区别(吐舌头),不过如果要挂滤镜比如反交错可能会有问题,参见下节。另外如果这种情况下你需要自己手动分离音频出来(因为这音频本身就只是256kbps aac 我就抠出来直接封装了没有重压。如果需要重压,那么估计不用抠出来直接用megui读取那个mts当input大概就行),工具么megui自带的eac3to(在Tools里叫HD Streams Extractor)就OK。

最后两道思考题,主要是我也没搞懂的部分。

1.1 d2v和dga的区别?
我个人觉得可能一个是mpeg2,一个是avc?……

1.2 我在分离我这批DV录下来的视频时,发现DG Cretor分离出来的音频自动帮我加上了-80ms的delay(写在文件名上,之后不管是封装还是重编码megui都会自动读取代进去的)。那么问题来了:我用DDS压制的视频,和音频合并时,是否需要手动加上这-80ms delay(因为这是我手动分离出来的音频)?首先提示下这个音频和DG Creator分离出来的是完全一样的我算过Hash;但是问题在于如果用DSSource,说不定视频那边已经包含了+80ms?幸亏只是80ms这么微小的差别,我最后还是决定手加了,如果大了我就纠结了……

2 如何反交错

反交错不是什么难题,应该说是压制视频必备的技术。我之前倒是一直没压过隔行视频,以为只要靠megui的analyze就OK了。结果实际操作起来不是那么回事。我一开始是用的DDSource,analyze也很正常也帮我选了几个参数我就开压了,结果出来就是各种残影(残影和拉丝,是反交错失败两种经典表现……)。换了AVCSource后直接分析失败OTL。既然这样那么还是自己手选吧…隔行,Field Order随便选了反正没啥区别我就用了默认的-1(Various Field),但是看到那一坨滤镜我又傻眼了。虽说对于新手随便选个好用的就随便了,但是完美主义作怪我又纠结了…去找了个CHD压制组的问他们一般用什么,答曰FFDshow里的ffmpeg Deinterlacing。于是我就用之…结果发现一个问题,AVS如果是DDSource,就可以调用到FFDshow,但是如果是AVCSource就不行。汗…那么还是从AVS级入手吧,随便挑了几个发现肉眼眯着看(喂)区别不大,就选了传说最快的Yadif了。唔效果上倒也没什么大问题…只是我想吐槽这算快的么,压起来也只有14fps…………(x264配置:unrestricted 1pass cqf 22)

3 压制Acfun用视频

这部分没什么技术含量,都是应用上的活。

我本来想随便传个让sina二丫去,结果发现1是质量实在太惨;2是acfun在投稿出恐吓我说被2压的视频很有可能通不过审核blabla,我赶紧删了返工去了。去某avfun技术blog本来以为现在还是vp6的天下,才知道现在新浪已经修复了那个bug,现在必须用其他的bug(喂,新浪你好惨..),比如封装h.263文件头,比如黑屏补丁拉低平均码率啥的。不过喜讯是最近开始新浪不会再无条件二压h.264视频了,只要码率合乎规范(<524kbps)长度没超过6-7min就行了,既然我也不追求什么超高画质,那么就自己压个500出头的传上去就OK了。

如果你也用MediaCoder,那么直接参照这文章即可。不过我是megui的干活,就不那么傻瓜了。先写avs,sina的分辨率是512x384,宽屏的话需要加黑边补够,否则让性浪给你加?那是二丫没商量。加黑边的语法是
Lanczos4Resize(512,288) # Lanczos4 (Sharp)
Addborders(0,48,0,48)
第二位=第四位=(384-你的视频实际高)/2。

x264 profile选2pass的,比如自带的HQ balanced啥的都行,码率选440kbps吧,音频还要留至少64吧…
音频选Nero AAC LC或HE 64kbps。
全部压好了之后封装成mp4,然后发现megui似乎无法封装flv?难道为了封装专门下个MC?太累了吧。查了下MC也是用ffmpeg封装的,那么你只需要自己下个ffmpeg(提示:megui的tools就有),然后命令行(可以写成bat以后好用)
ffmpeg -vcodec copy -acodec copy -i 1.mp4 -f flv 1.flv
就可以将同目录下的1.mp4封成flv了,很快只需要几秒。

OK接下来就可以传渣狼了——测试Ok。