昨天碰巧翻到一个叫 [CoreAVC for Linux](http://code.google.com/p/coreavc-for-linux) 的项目,其实应该之前很早就听说过,因为这个项目在去年五月份的时候曾经被 Google Code 停止提供服务,因为“[DMCA complaint](http://en.wikipedia.org/wiki/CoreAVC#The_CoreAVC-For-Linux_DMCA_complaint)”,但现在又恢复了,不过可能 patch 更新得不够及时,不一定能够用在 svn HEAD 的 mplayer 上。
CoreAVC for Linux 到底是个怎么样的项目呢?众所周知的是,CoreAVC 是目前公认软解 H.264 效率最高的解码器,在 Windows 平台有提供,价格是 $15 (不过大部分 Windows 用户都用破解版本的)。开发这个解码器的公司还把它移植到了 Palm, Symbian, Windows CE 等平台上,是移动平台中最有名的一个通用播放器,叫 CorePlayer。
从去年二月开始,CorePlayer 被移植到了 Windows 和 Mac OS X 平台上,但官方没有提供给 Mac OS X 平台的 CoreAVC (假如有的话,应该是 Perian, Flip4Mac 那样作为 QuickTime 插件的形式,但不知道这个公司出于什么考虑,并没有像 Windows 平台那样提供)。而 Linux 平台下也没有提供公开销售的版本。所以 CoreAVC for Linux 就是为了能在 Linux 平台下使用这个解码器而产生的。
虽然细节比较复杂,我现在也不大了然,但原理也不难理解,修改 mplayer 的 DirectShow 支持代码,类似调用 RealMedia 的 DirectShow 插件那样来调用 CoreAVC 的 DirectShow 插件。开发者说有[两种修改方法](http://code.google.com/p/coreavc-for-linux/wiki/MplayerInstallation):
1. 使用一个外部程序 dshowserver 来提供服务,修改 mplayer 使之能够支持 dshowserver,这种方法能够适用于 x86_64 和 ia32
2. 直接修改 mplayer 的 Win32 dshow 代码使之支持 CoreAVC,只适用于 ia32
作者说第一种是推荐的方法,但不能用于 Windows 和 Mac。而第二种完全没有提到具体步骤,也没见到具体的 patch。
正巧看到 [CorePlayer Pro for OS X](http://www.mobihand.com/product.asp?id=16794),虽然没提供试用版本,但好在也不算贵 ($17),就买了一个试试。下面是一点结论:
1. 最大的问题是音频解码支持很弱,不支持 AC3 解码,不支持 DTS 解码,而且发布之后一年内始终没得到解决,开发者很有点言而无信,一开始在去年二月说“数周内”能解决,到 12 月还没提供,又改说我们可能要依赖平台提供的功能实现 (Windows 下用 DirectShow, Mac 下用 Core Audio),这也没问题,可这都二月了,还没解决。感觉相比移动平台,这个公司并不怎么注重桌面平台的支持。
2. 界面很土,非要做跨平台的界面,结果用起来非常不方便,更不用说完全不 Mac 化了。
3. 解码 H.264 的效率确实比其他任何 Mac 平台的解码器都要好,手头一个 1080p 的 Fight Club 的 BDRe, 用 Plex 时的 CPU 占用率在 120% ~ 150% 左右,用 CorePlayer 时占用率在 75% ~ 80% 左右。
4. 不支持外挂字幕,而且短期内不打算支持。
总的说来,我觉得他们最大的决策错误就是不提供单独的 CoreAVC,非要自己做播放器,结果给自己带来了过重的开发负担,比如界面、音频编码器这些,如果只提供一个 QuickTime 插件,就压根不需要他们操心了。H.264 的解码效率是好,但也没有好到超过一个数量级的程度,在 Snow Leopard 和新一代 Mac 提供了显卡硬解码支持的背景下,就更难让人看好这个产品的前景了。