SMPlayer.app on OSX, again
我是一个updater。在用Arch Linux的时候,我坚持每隔几天sudo pacman -Syu;在Mac下则一直sudo port -v sync ; sudo port -v upgrade outdated来更新MacPorts并且用AppFresh.app来更新App。
在我之前写的”SMPlayer.app on Leopard“(中文版)一文中提过如何在OSX下编译SMPlayer。当然作为一个updater,还会去更新它。因为没人在OSX下维护SMPlayer.app,所以一切还得自己动手。(如果有人维护的话,请告诉我:))
这里只提一些简单tips。
1. 首先需要一个命令行的mplayer,来给SMPlayer调用。可以用MacPorts编译,或者从SVN下载源码编译。[1]
2. 需要Qt4-mac。
同样可以用MacPorts编译,也可以从Qt的官网Nokia下载 (Qt: Framework Only)。我没有试过Qt4-X11, 不知道SMPlayer.app能否在X11下融合mplayer的播放窗口。当然在Qt4-mac下是不行的。
3. 当然还需要smplayer的源代码比如smplayer-0.6.8.tar.bz2 。[2]
4. 编译。首先要确认一下安装的Qt4-mac的qmake, 如果是qmake-mac的话,那么修改smplayer的Makefile:
QMAKE=qmake-mac LRELEASE=lrelease-mac
从某个版本的smplayer开始,已经不需要修改src/core.cpp里面的”disable_screensaver”部分。
但是还是要修改src/core.cpp的关于aspect参数部分:
找到
proc->addArgument("-nokeepaspect");
然后把它注释掉。等会解释这么做的意图。
修改好代码,直接make。编译会花上几分钟,如果一切顺利[3],结束之后会在src/ 下生成可执行文件smplayer以及一个Mac的bundle: smplayer.app。现在可以直接在Term里执行./smplayer, 或者在Finder里双击(or CMD+DownArrow)smplayer.app。一切顺利的话,会看到smplayer的窗口。
5. 配置。不配置smplayer/mplayer 是没法直接用的。首先需要在~/.mplayer 下建一个config文件内容如下:
monitoraspect=16:10 [4]
这就是前面在smplayer的src/core.cpp里面注释掉那行代码的原因。
然后是配置smplayer.app了。以前的smplayer的配置都保存在~/.smplayer下,而某个版本之后的smplayer配置都保存在~/.config/smplayer/ 下。当然并不需要关心它的位置,直接在当前打开的smplayer.app窗口下按CMD+,(这应该归功于Qt4-mac)进入配置窗口,也可以点击OSX的menubar中的菜单。
在General选项卡下,首先要给它指定”MPlayer executable”的位置,根据mplayer的安装位置填写(有多个mplayer的话,填写偏好的那个),比如/usr/local/bin/mplayer。然后是在Video和Audio子选项卡中分别指定Video和Audio的”Output driver”, 请选择”corevideo”, “coreaudio”。如果没有的话,选择user defined,然后手动指定。主要是根据mplayer支持的driver参数来填写,参考编译mplayer时候的configure输出。至于是否在Audio下勾选”AC3/DTS pass-through S/PDIF” 要根据视频文件具体选择。
然后是Subtitles和Font的问题。到Subtitles选项卡下,选择适合的Subtitle encoding。比如我会手动转换所有的.srt类字幕文件到UTF-8编码,那么我就会默认选择UTF-8编码。在”Font and colors”子选项卡下,按照喜好设置。中文字体可以Hei体或者Monaco之类的。
在Advanced选项卡下,勾选”Run MPlayer in its own window”,否则smplayer会根据视频大小重绘自己的窗口。好了,可以试着用它来播放视频文件。
6. 美化。是的,默认的bundle的ICON相当的简陋。在源代码的根目录下面有个icons目录,可以用里面的smplayer_icon64.png生成一个icns文件[5],然后复制到bundle里面的Contents/Resources/ ,并修改Contents/Info.plist 指定该icns文件为默认的ICON。[6]
现在可以把它复制到程序目录,比如/Applications/
SMPlayer.app之后
现在来谈谈一点其他的东西。
当前Mac OS X下的免费视频播放器已经比较丰富了,有Movist.app,Plex.app,VLC.app,MPlayer OSX Extended.app 等等。
Plex.app是目前暴力解(软解)效率最高的,比如eMule上拖下来的”The Sky Crawlers”(1080p) [7] 只有Plex.app才能流畅的播放,其他播放器都会有不同程度的“音画不同步”、“卡壳”等现象。当然Plex.app暴力解的代价就是风扇的疯狂运行。Plex.app的“缺点”就是界面不友好,不支持UTF-8编码的字幕;配置麻烦……
其他三个用下来效率都差不多,比较偏好Movist.app一点,MPlayer OSX Extended.app似乎也不错,不过第一次运行会用fontconfig生成字体cache好像,比较耗时。VLC.app曾经的配置是最麻烦的,新版似乎好点了。
关于OSX下视频解码,可以看看jjgod的博文《Mac OS X 视频解码技术之现状》。
那么SMPlayer.app的意义何在?
其实没什么意义,折腾呗。它只是MPlayer的一个frontend,封装好一堆参数[8],方便调用。不过要是视频播放遇到问题,需要不断的调试、配置参数,折腾的够呛。易用性真是糟糕。当然在一两年之前,VLC.app的配置非常折磨人,Plex.app和MPlayer OSX Extended.app还没出现,Movist.app刚刚崭露头角,那个时候折腾一下SMPlayer.app,用来播放非高清视频还是具有现实意义的。而现在,我自己都快没有兴趣去折腾SMPlayer.app了。
鉴于此,也就不难理解为什么没人在Mac OS X下维护SMPlayer.app了:显然它或许真能成为Linux、BSD下最好的MPlayer的GUI Frontend;但是在OS X下非native的GUI App(除非没有竞争对手)基本上是没有前途的。
__________________________________________________________________________________
[1] svn checkout svn://svn.mplayerhq.hu/mplayer/trunk mplayer
[2] 请自行跟随smplayer的latest release
[3] 没记错的话,某个SVN版本的smplayer在make过程中会出错,还需手动改src/Makefile。也许是我记错了……
[4] 根据Mac的屏幕定制合适的长宽比
[5] 转ICNS的软件推荐img2icns.app,用它生成普通的icns文件是免费的
[6] 或者自行定制其他的ICON。kde-look之类的网站有很多素材
[7] The.Sky.Crawlers.001.mkv The.Sky.Crawlers.002.mkv
[8] 想看看SMPlayer调用MPlayer时用了哪些参数?Term下执行ps -ef | grep mplayer就能看到了