浅谈 Gabest 和 Haali 的 MKV Splitter(分离器)的差别
【转贴】来源:蓝色琴键的八度空间MKV本来就是一种封装视频音频的容器格式,播放器需要MKV分离器(Matroska splitter)来解析MKV再调用对应的codec来解码。常见的splitter是Gabest Matroska Splitter和Haali Media Splitter两种,两者各有特色,完美解码、终极解码都附带这两种分离器并可通过设置来选定其一来解析MKV,下面简单介绍一下我总结的两种分离器的差别。本文讨论中涉及的播放器是以MPC(Homecinema版)为例,国产的××影音不详。
(1)直接查看MKV的附件
MKV文件允许添加图片、字体等文件,这类文件称为MKV的附件,可以看作是MKV的彩蛋。
MPC播放MKV时查看视频的属性时,如果使用了Gabest分离器,“详细信息”标签项详细列出文件的各轨道信息。“资源”标签项则可显示MKV的附件,并可通过单击“另存为…”提取出来。
Haali分离器则不会显示,而且当MKV包含多个音频、字幕轨时,查看MKV的“详细信息”Haali只显示当前使用的音频和字幕轨信息。
对比以上两种分离器下解析同一个MKV的属性,可以看到Gabest对MKV各轨道的信息比Haali更详尽。仔细观察发现Gabest对AAC格式音频的解析出现偏差。由于AAC的编码分HE和LC两种,HE AAC编码的码率一般是96kbps以下,上面截图中的AAC音频是HE AAC的编码,原本采样率为48000Hz,经Gabest解析后显示为24000Hz,也就是采样率缩到原来的一半,但我主观听觉上却与正常的48kHz差不多(有待求证)。对于LC AAC的音频,Gabest却可以正常显示采样率。而Haali分离器,不管是HE还是LC AAc,都一视同仁解析为正确的采样率。
关于内封字体:
ASS/SSA字幕常常会使用特殊的字体,而MKV格式的一个优点就在于可以内封字幕中调用的字体文件,即使某用户的系统中没有这种字体,在播放MKV时也可以显示,不致于丢失原字幕的设定,起到很好的兼容性。
Gabest的默认自动加载MKV内封的字体到内存。
Haali的可能会在打开MKV时出现一个对话框内容是:
The file contains embedded truetype fonts. Do you want to load the fonts?
To permanently enable or disable font loadiing you can set the option in splitter properties.
问你是否加载内封的字体,必须单击“是”才可继续播放。如需永久自动加载字幕,则需修改注册表:
在HKEY_CURRENT_USER\Software\Haali\Matroska Splitter主键下,新建一个"input.fonts"(不含双引号)的DWORD值,取值1。
这个现象仅出现在旧版本的Haali,从2007年11月18日起Haali已默认设为自动加载字幕,不会再出现这个烦人的提示。
另外,使用Haali万一意外退出时,内封的字体可能仍然残留在内存中,因为Haali调用了AddFontResource函数,而Gabest调用AddFontResourceEx则不会出现此问题。(引自SAPikachu的工作室:https://www.sapikachu.net/post/2008/10/06/cause-of-embedded-fonts-problem.aspx)
(2)MPC播放MKV时快速前进、后退
Gabest:√(支持)
Haali:×(不支持)
用过KMPlayer或mplayer的朋友一定会惊叹于拖动进度条时的灵敏反应。为什么这类播放器会如此迅速前进、后退?原因在于它们使用关键帧跳跃,而MPC在拖动进度条时使用精确时间跳跃,就需要一段时间来缓冲。MPC也可以用关键帧跳跃实现快速前进后退,默认的快捷键是Shift+→,Shift+←
MKV、AVI、MP4、MOV、RMVB等格式视频只要存在关键帧,MPC就可实现关键帧跳跃,对于MKV、AVI格式的视频,还有一个前提条件:必须使用Gabest分离器来解析。如果MKV的分离器设为Haali,MPC的Shift+→、Shift+←键就完全没反应,无法快速前进/后退。为什么会这样?大概是因为MPC的作者也是Gabest本人,所以他编写的MPC的快速跳跃快捷键理所当然只对Gabest MKV分离器有效。
(3)实时查看MKV的视频/音频码率
Gabest:×
Haali:√
当MKV的分离器是Haali时,每次播放MKV,任务栏托盘都会出现一个类似"Ω"符号的Haali Logo。双击之则出现视频/音频码率曲线图,每秒更新一次,查看该码率曲线有助于对码率的理解,为压片提供参考。这是Haali的一大特色。
(4)对可变比例的MKV的还原
Gabest:×
Haali:√
可变比例视频可能对多数人比较陌生。有些字幕组喜欢不通过resize而通过设置视频的SAR比例来压片,MPC播放时则按此SAR比例还原。比如一部宽屏的电影在DVD光盘里是按720×480的分辨率来储存,实际播放时按原设定的16:9还原为848×480,做DVDRIP压片时也按原分辨率720×480压缩并设置SAR比例。很遗憾,Gabest分离器解析时不能正确还原,即使在MPC的右键菜单里手动设置视频的比例也不能准确地还原。Gabest早已停止软件开发,该bug还没修复 :(
例1:周星驰的《百变星君》双语数码修复版,KiSS出品
Gabest分离器
错误的分辨率:712x472 (1.51:1)
例2:《音乐之声》数码修复版,KiSS出品
Gabest分离器
错误的分辨率:712x384 (1.854:1)
Haali的分离器则忠实还原:
例3:周星驰的《百变星君》
Haali分离器
正确的分辨率:856x464 (1.845:1)
例4:《音乐之声》
Haali分离器
正确的分辨率:864x384 (2.25:1)
(5)对VFR的MKV的支持
现在不少字幕组压制动画片时使用VFR(可变帧率)技术,分阶段以不同帧率播放。如果播放器的设置不当,可能会出现掉帧、不流畅现象。很多人都推荐使用Haali分离器。本人经测试,发现掉帧、不流畅的现象只有出现在以下的条件:
分离器:Gabest
H264解码器:CoreAVC(测试中是2.0版,算是比较新的了)
输出:VMR9(无渲染)
帧率:减半
以Galaxy字幕组压制的《聖闘士星矢》 之 极乐净土篇为例,该文件开始部分的一小段的帧率是29.97fps,后来转到23.976fps。当使用Gabest+CoreAVC+VMR9输出时,帧率十分不稳定,居然只有原帧率的一半,画面一顿一顿的,比在线的视频更迟钝。参见下面截图(―_―||| 囧rz)
当使用同一解码器(CoreAVC)和同样的VMR9输出方式,改用Haali分离器时,可变的帧率还原得很正常!
但以上测试并不代表Gabest不支持VFR的MKV。我重申一下,Gabest只针对CoreAVC解码器和VMR9输出模式情况下才对VFR产生异常,经再三测试,如果输出模式改为系统默认或覆盖合成器Overlay Mixer时,即使用CoreAVC解码,VFR的视频帧率也正常;解码器换作FFDShow或Cyberlink后也一切正常,而且使用显卡硬解也不出现问题。
由于Haali不断更新,很多方面还是Haali更胜一筹。
有补充的朋友欢迎拍砖。
来源:http://www.360doc.com/content/10/0615/13/1402654_33208595.shtml
页:
[1]