Chinaunix首页 | 论坛 | 博客
  • 博客访问: 5381994
  • 博文数量: 671
  • 博客积分: 10010
  • 博客等级: 上将
  • 技术积分: 7310
  • 用 户 组: 普通用户
  • 注册时间: 2006-07-14 09:56
文章分类

全部博文(671)

文章存档

2011年(1)

2010年(2)

2009年(24)

2008年(271)

2007年(319)

2006年(54)

我的朋友

分类:

2008-01-14 17:03:57

2005-11-25 17:18:31

作者:心情花园
 
1、本文遵循GPL/LGPL协议,欢迎自由转载,但请注明作者出处。

2、本文首发赢政。由于在那里被问到了几个MPlayer的问题,上网查了一下,发现关于Windows版MPlayer的文章较少,即使是官方中文文档(http://www.mplayerhq.hu/DOCS/HTML/zh/documentation.html),也侧重于Linux平台的安装使用。于是结合自己的使用经验写了一篇Windows平台下使用源代码编译MPlayer的帖子,在文章末尾简略的提了一下MPlayer命令行及GUI的使用。见笑了。

3、Mplayer一段时间以来一直称得上Linux平台媒体播放软件的王者,其Windows移植版同样出色。但是最近Mplayer的日子过得挺尴尬。先是在Linux(KDE)平台上被媒体播放器的新贵Kaffeine 一通穷追猛打,然后又和自己的子项目FFmpeg一起惹上了莫名其妙的版权官司。()虽然目前Mplayer 开发工作仍在正常进行,但前途依然是个未知数。作为一个Mplayer 的忠实拥护者,我只能默默地祈祷它一路走好!

4、本文主要参考文档:
5、我的机器是NorthWood的赛扬2.0,winxp sp2 ,从编译过程来讲,A贩们的U和其他windows操作系统应该大同小异。

6、时间仓促,错漏难免,敬请批评指正,谢谢!
 
一、一般在Windows平台使用MPlayer的人大都会选择 KK编译版,相当出色和好用的版本,那么为什么还要费时费力地从源代码编译安装MPlayer?嘿嘿,我想有几个理由吧:

1、命令行下执行MPlayer.exe你会发现,Mplayer的windows发行版默认都只是针对MMX和MMX2指令集进行的编译(如图),而它的源代码还支持SSE,SSE2,3DNOW!和3dnow-dsp!指令集,如果你有一颗比较新的CPU,通过编译源代码加入对以上几个指令集的支持,以达到更好的效果和更低的资源占用,是一件比较爽的事情。
 
 
2、自己编译的MPlayer可以自定义一些性能选项。比如说,默认的MPlayer并不支持2GB以上的单个文件,这就是为什么有人使用MPlayer播放HDTV影片其效果相当糟糕的原因。 你可以通过自己编译加上对它的支持。

3、MPlayer每天都会根据前一天的工作发布一个CVS的完整源代码包,只要你喜欢,每天你都可以编译一个最新的版本——你可以品尝到MPlayer最新的性能——当然,也可能包括最新的bug

4、通过编译安装,除了打造完全适合自己机器的软件外,还能多学一点电脑知识。

5、好玩。

如果以上五个理由没有打动你,那你就不要编译安装了,老老实实的下载上面提到的KK版,也是相当好用的。
 
二、安装前的准备工作

1、别看我们说是在windows下编译安装MPlayer,但是win自身并不提供相关工具。我们还需要安装两个软件,去 下载MinGW-3.2.0-rc-3.exe和MSYS-1.0.10.exe ,首先双击安装MinGW-3.2.0-rc-3.exe,这个和普通的win程序安装没什么区别,一路next就可以搞定;然后双击安装MSYS- 1.0.10.exe,这个在安装结束的时候会弹出对话框:"Do you wish to continue with the post install? [yn ]"选y后,又会弹出一个"Do you have MinGW installed? [yn ]" 也是选y,然后让你给出MinGW的安装路径,如果是默认的话应当填C:/mingw(注意用“/”而不是“\”)安装结束后会在桌面生成一个MSYS的图标,双击即可执行。

MinGW 和MSYS究竟是干什么用的?呵呵,我一直都把它们理解为Linux部分工具软件和库+shell命令行的Windows移植版。为了写这篇文章专门搜了一下,原来MinGW是指只用自由软件来生成纯粹的Win32可执行文件的编译环境,它是Minimalist GNU on Windows的略称。——反正就你能看见的部分来说,它就是一个类Unix/Linux的命令行式的软件编译环境。

2、下载dx7的头文件()
解压后把里面的全部文件复制到(c:\mingw\include)

附件是我自己弄的最新的DX9 headers,效果没什么大的区别,喜欢尝鲜的可以试一下——但是不能保证质量。使用方法和上面的dx7的头文件相同。(两者只能选其一)

附加文件
附加文件   ( 351.5k )
 
三、开始下载安装一些MPlayer编译所依赖的软件和lib等东东

1、freetype(OSD字幕用)

软件主页:

需要文件:libiconv-1.9.1.tar.gz

这个文件和下面提到的文件在windows下都可以使用WinRAR解压。解压后把libiconv-1.9.1目录放在,比如说C盘下面,然后双击打开MSYS,输入

cd C:\ libiconv-1.9.1

注:打开libiconv-1.9.1目录,也可以按需要指定其他目录(下同)。回车,然后输入:

./configure --prefix=c:/mingw --disable-shared

注:配置代码命令,其中--prefix=c:/mingw为指定目录命令, --disable-shared为取消共享。回车,等待执行完毕后,输入:

make

注:编译命令。回车,等待执行完毕后,输入:

make install

注:编译安装命令。

等待执行完毕后,如果一切顺利,没有报错。那么到此就算完成了一个软件的安装。与下面的各个步骤大同小异,下面我就写的简单一些了。
 
2、freetype2
软件主页:
需要文件:freetype-2.1.9.tar.bz2
同上一样,解压,然后
cd freetype-2.1.9
make 注:这个软件不需要./configure
make install

3、zlib
软件主页:
需要文件:zlib-1.2.2.tar.bz2
解压
cd zlib-1.2.1
make
make install

4、libpng
软件主页:
所需文件:libpng-1.2.8-config.tar.gz
解压
cd libpng-1.2.8-config
./configure --prefix=c:/mingw --disable-shared
make
make install

5、libjpeg
软件主页:
所需文件:jpegsrc.v6b.tar.gz
解压
cd jpeg-6b
./configure --prefix=/mingw/ --enable-static
make
cp .libs/libjpeg.a c:/mingw/lib/
cp jpeglib.h jconfig.h jmorecfg.h c:/mingw/include/

6、libregif
软件主页:
所需文件:libregif 4.1.6
解压
cd libregif-4.1.5
./configure --prefix=c:/mingw
make
make install

7、nasm
软件主页:
所需文件:nasm-0.98.39.tar.bz2
解压
cd nasm-0.98.38
./configure --prefix=c:/mingw
make
mkdir c:/mingw/man/man1
make install

8、lame
软件主页:
所需文件:lame3.96.1.tar.gz
解压
cd lame-3.96.1
./configure --prefix=c:/mingw --disable-shared --disable-decoder
make
make install

9、xvid
软件主页:
所需文件:xvidcore-1.0.3.tar.bz2 ()
这个软件最新的1.1beta版从我的机子上跑的情况来看,似乎对原来版本的兼容性有点问题,大家还是用旧的1.0.3版本的吧。
解压
cd xvidcore-1.0.3/build/generic
./configure --prefix=c:/mingw --disable-shared
make
make install
mv c:/mingw/lib/xvidcore.a c:/mingw/lib/libxvidcore.a

10、x264
软件主页:
所需文件:svn-win32-1.1.4.zip
解压后将 \bin 文件夹内的所有文件复制到C:\mingw\bin文件夹内。

11、live
下载地址:
所需文件:live-latest.tar.gz
解压
cd live
genMakefiles mingw
make

12、RealCodecs

下载附件中的文件(已分卷),将其解压到某个路径备用。

至此,依赖软件和库文件的配置安装结束。

附加文件   ( 351.56k )
附加文件   ( 350.26k )
 
四、编译安装MPlayer

1、下载源代码包

首先去 下载MPlayer的源代码包,依据你的个人喜好,你可以下载正式发行的源码版本,比如MPlayer v1.0pre6a source,也可以下载每天更新的CVS版本。

然后去 下载那个名叫Windows all的解码器包。

2、两个包全部解压

3、用cd命令进入MPlayer源码的目录

4、./configure --help

注:执行这一步可以得到该软件支持的./configure的附加条件,可以根据自己的机器情况选用。

其中有些条件是默认支持的,比如说,sse2,3dnow!等指令集的自动检测/支持,real及win32媒体文件的支持,流媒体的支持等等,你可以在附加条件中忽略它们。(有的时候,某些条件未必能够监测得出来。你可以注意一下下一步的 ./configure 后的执行输出,里面包含了所有的条件执行信息,如果有没有认出的,你可以手动指定。)

5、下面就是./configure步骤了,这是我的配置,你可以根据自己的情况更改

./configure --prefix=D:/MPlayer --enable-win32 --enable-real --enable-live --enable-directx --enable-dshow --with-codecsdir=D:/MPlayer/codecs --with-win32libdir=D:/MPlayer/codecs --with-reallibdir=D:/MPlayer/realcodec --with-livelibdir=D:/MPlayer/codecs --enable-static --enable-largefiles --disable-mencoder
其中:
--prefix=D:/MPlayerr 为自定义Mplayer的安装路径。
--with-codecsdir=D:/MPlayer/codecs 我把下载的那个/windows-all-20050115 的解码包解压到D:/MPlayer/codecs,这个命令是指定它的路径。(下面的win32也指向这个路径就行)
--with-reallibdir=D:/MPlayer/realcodec 记得上面第12步中我们解压备用的那个RealCodecs吗?在这里指定它的路径。
--with-livelibdir=D:/MPlayer/live 上面第11步中我们编译的那个live文件的路径。
--enable-largefiles 支持2GB以上的单个文件——这恐怕对于HDTV爱好者来说是至关重要的。
--enable-directx 和 --enable-dshow 这两项实际上是“自动监测”的,但是有一次在我的机器上没有认出来,还是写一下吧。
--enable-static 是必须的,请注意一下。
--disable-mencoder mencoder这东东我用不到,disable了。
注意:如果你想将编译好的MPlayer.exe能够运行在不同的机器上,可以加上 --enable-runtime-cpudetection 选项;如果只是用在自己的机器和系统上,那就不要加这个。

请注意一下 ./configure 以后的输出结果,在其中可能就能找到下次需要改进的地方。

6、make

如果你是1.0G以下的CPU,你大可以去午睡一会儿了。需要比较长的时间。

7、make install

好了,大功告成。去D:\MPlayer下看看,在bin文件夹下就可以找到Mplayer.exe了。

五、MPlayer的使用

1、命令行方式

上述我们编译好的Mplayer.exe是一个命令行的应用程序——事实上官方的windows realse也是命令行版本的。这个在Windows的命令提示符里面可以运行,好在Windows的命令提示符支持拖动,我们也就不用费力的一个字符一个字符的输入了。

如图,是Mplayer播放文件的正确命令,注意mplayer.exe和媒体文件路径之间有空格键。具体使用及控制键请参阅上面提到的官方文档。
 
 
2、图形界面方式。
世界各地的软件编写者们为MPlayer编写了大量的GUI,其中windows平台的也为数不少。你可以在这里查到它们的列表:

其中,比较优秀的有:

(1)WinMPLauncher ()

我一直用这个,使用简单,功能强劲,而且资源占用几乎可以忽略不计。缺点是没有进度条和播控按钮。如图。使用方法:解压后双击 WinMPLauncher.exe,选择我们的MPlayer.exe所在路径,确定后即可使用它作为前端来调用MPlayer.exe播放文件了。

(2)mplgui
()

这个图形界面的优点是功能全, 它支持皮肤、拖动、进度条、一些基本图形控制按钮,列表播放等。但是我只找到了一种方法打开文件——拖动,而且没有打开URL的控制项。使用方法和上面的那个大同小异。不再赘述。

(3)MPlayerWIN()

有不少性能选项,也还可以。

(4)MPlayer interface()

总体上介绍的第1、3、4基本上是同类的——单纯的GUI,但是综合性能上来讲还是第一个比较强。

(5)MPUI()

最好的一定要留在最后说。 这个图形界面功能是最全的,但同时也是占用资源最高的。下载后只将里面的MPUI.exe和autorun.inf两个文件解压到你的MPlayer目录,双击MPUI.exe即可使用。

还有很多,就不一一列出了,大家可以自己尝试,选出自己喜欢的。

如图是自己编译好的MPlayer,使用WinMPLauncher 界面播放mms流媒体时的截屏。但是mplayer播放的图像抓不下来哪位大虾知道怎么抓告诉一声,谢了!
 
我编译的这个版本的资源占用情况:

1094kbps的xvid影片(外挂sub字幕)连上GUI三个进程(在9~21%之间):
 
 
一路风风雨雨,MPlayer依然是我的最爱。曾经的开源项目典范,今天依然辉放着灿烂的光彩。还是那句心声:愿Mplayer一路走好!

全文完
 
补记:MPlayer自身的libavcodec只支持RealVideo 1.0 的解码,对于RealVideo 2.0,3.0,4.0的解码需要调用RealPlayer的lib们——这也就是编译Mplayer的重要意义——实际上在Linux下我也是这么做的,但是官方文档并没有提到MinGW环境下的问题,只是提到了Cygwin,MinGW我已经弄成功了,就是文中的那个RealCodec

(不过Mplayer那可爱的子项目FFmpeg已经支持realvideo2.0了 ——这个更多的是专利问题而不是技术问题——谁叫Mplayer是欧洲人搞得呢?)回头试一下。︿_︿
阅读(873) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~