视频切割过程中,偶尔会遇到定位不准的问题,特别是起始帧。这种问题在运动场景较多的电影中不常见,而在静态场景(比如新闻)中,切割视频的定位往往会出现较大偏差,最多可以到10秒以上。那么,为什么明明定位了却不准,这种现象又应该如何解决呢?
1.原因:
产生的原因是原始视频编码过程中,为了压缩视频大小而进行了帧间预测,几个相邻的画面(每秒25帧,变化其实不大)可以通过算法表示成一帧和一些变化。特别是诸如新闻之类的画面基本静止的场景,帧间预测长度可以达到10秒。然而,这也给我们的视频切割带来了问题。因为大部分视频切割软件都是从关键帧开始切割的,所以定位自然就不准了。
2.解决方法:
1)更换软件:杀鸡用牛刀。用诸如会声会影之类的专业软件。好处是通用,而且不用额外的转码。坏处是体积大,而且使用时系统资源占用率高。没办法,杀鸡用牛刀,自然只能牺牲效率和便捷性了。
2)先进行一次转码。从前面的描述可以看到,想要定位准确,需要关键帧间距小。这里推荐格式工厂(http://dl.pconline.com.cn/download/51244.html),这是一款免费的转码软件。
格式工厂如下设置:在选项中,Xvid一项(如果想转成Divx,H264等相似),将“关键帧的最大间隔”设置为一个比较小的值(一般每秒25帧,如果需要完全准确定位的话建议设为0或1),最大B帧数目设为0,运动搜索算法设为“限制性搜索”。在进行转码时(视频编码方式应该选择刚才修改的那项),不要使用默认的码率,那样会产生马赛克(因为已经修改了关键帧间距了,而默认码率是在关键帧间距较大的情况下计算得到的),设置一个比较高的码率(比如480*360的视频设置5000kbps,高清的设置15000-30000kbps等),这样转换出来的视频就基本清晰了(如果不清晰,则采用更高的码率重新转换一次)。
缺点是需要产生一个比较大的临时文件(相比原始AVI应该大了10倍以上)。不过,为了视频定位准确,这点小问题应该不算什么吧~
3)自己写一个视频切割软件。如果能做到这点,那么什么问题都没有了。上面的话当我白说了……