mplayer 在 mingw 上的交叉编译

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

make install

搞定!

注意:

这里最关键的是--target参数,没有这个,你把--cc、--ar等全部写完了也没有用。之前没有仔细看./configure --help,没有注意到target,费了好多劲。

【补充说明】

最新版本 MPlayer-1.1 通过这种方式编译在h.264解码上有问题,需要换到较低版本MPlayer-1.0rc4版本,能解决这个问题。

具体细节我在另一篇文章中有说明:MPlayer Win32版本的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,就没问题了

你可能感兴趣的:(linux,windows,ubuntu,平台,跨平台)