mplayer是比较成熟的开源播放器框架了,但是开发文档却是稀少的很,这一点与微软的directshow没办法比。当然mplayer是同时支持linux、windows、macos的;相反directshow根本就不能跨平台。
不过我们这里只说移植,至于开发可以看看我的另一篇文章播放器插件实现系列――mplayer
各位可以先看看mplayer的跨平台移植说明:
http://www.mplayerhq.hu/DOCS/HTML/en/windows.html
在mplayer主页》document》English》Ports下
这里是关于mingw上的编译步骤
http://www.mplayerhq.hu/MPlayer/contrib/win32/MPlayer-MinGW-Howto.txt
看样子是要在windows机器上编译,一路下来有十几个步骤
这是官方建议的方式,我这里要介绍的是在linux平台交叉编译mplayer的win32版本。在linux平台我们有很多方便的工具可用,安装mingw只是一个命令的事情,比如在我的ubuntu上:
sudo apt-get install mingw32
然后:
./configure\ --target=i586-mingw32msvc\ --prefix=`pwd`/install\ --cc=i586-mingw32msvc-gcc\ --windres=i586-mingw32msvc-windres\ --ar=i586-mingw32msvc-ar\ --nm=i586-mingw32msvc-nm\ --ranlib=i586-mingw32msvc-ranlib\ --ar=i586-mingw32msvc-ar\ --as=i586-mingw32msvc-as\ --enable-static make makeinstall
搞定!
注意:
这里最关键的是--target参数,没有这个,你把--cc、--ar等全部写完了也没有用。之前没有仔细看./configure--help,没有注意到target,费了好多劲。
【补充说明】
最新版本MPlayer-1.1通过这种方式编译在h.264解码上有问题,需要换到较低版本MPlayer-1.0rc4版本,能解决这个问题。
具体细节我在另一篇文章中有说明:MPlayerWin32版本的H.264解码问题
【补充2013-08-09】
最近又重新用mingw编译了一下mplayer,发现有一个问题之前忘了记录,以致重新编译又折腾了半天时间。
首先,会出现下面的错误
./codec-cfg.exe etc/codecs.conf > codecs.conf.h run-detectors: unable to find an interpreter for ./codec-cfg.exe
如果你尝试忽略该错误,继续make,那么将会出现另一个错误
codec-cfg.c: In function 'parse_codec_cfg': codec-cfg.c:549: error: 'builtin_video_codecs' undeclared (first use in this function) codec-cfg.c:549: error: (Each undeclared identifier is reported only once codec-cfg.c:549: error: for each function it appears in.) codec-cfg.c:550: error: 'builtin_audio_codecs' undeclared (first use in this function) codec-cfg.c:582: error: 'CODEC_CFG_MIN' undeclared (first use in this function)
mplayer编译过程中通过先生成一个小工具codec-cfg,通过它生成codecs.conf.h,但是在交叉编译环境下,这个工具不能执行,所以需要将本地编译生成的codec-cfg覆盖codec-cfg.exe,比如执行下面的命令
cp ../MPlayer-1.0rc4-linux/codec-cfg codec-cfg.exe
然后继续make,就没问题了