Chinaunix首页 | 论坛 | 博客
  • 博客访问: 103617276
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: LINUX

2008-03-21 08:50:29

来源:赛迪网技术社区    作者:skid

1. 下载到必要的软件包

* MPlayer 的源代码,我用的是 MPlayer-1.0pre7.tar.bz2。

* Patch的名字是 mplayer-1.0_pre7-gcc4-fix.patch,顾名思义,mplayer 在 gcc-4.0 的环境中编译,也就是 fc4t2 升级后的 fc3 中,使用了 gcc-4.0 的时候,必须要打这个 patch 才能编译成功。

* 必要的解码器,也就是 essential-codecs, 或者也可以下载 all-codecs。

* 一些解码器是可选的,比如 LIVE.COM 还有 lzo, libmad 等等。

* 准备一个中文的 ttf 字体。 不过这个大家都有,不用去别处找。

2. 环境介绍

也就是说,我们要在什么样的环境里使用 MPlayer。

* 没有图形界面,机器上没有 gtk-1.2 所以就不用图形界面了。

* 默认 locale 为 UTF-8 编码。

3. 编译步骤

1). 准备 codecs

本来我以为不需要 /usr/local/lib/codecs,但是后来发现会找不到 xanim codecs,所以还是需要它。 链接到 /usr/lib/win32 是因为可以与 xine-lib 共享这些解码器。

[root@geeks ~]# tar jxf all-20050412.tar.bz2
[root@geeks ~]# mv all-20050412 /usr/local/lib/codecs
[root@geeks ~]# ln -s /usr/local/lib/codecs /usr/lib/win32

2). 解压

[root@geeks ~]# tar jxf MPlayer-1.0pre7.tar.bz2
[root@geeks ~]# cd MPlayer-1.0pre7

3). 打补丁

当然,只有 gcc-4.0 的时候才需要打补丁,并且这个补丁只适合这次的情况,也就是说,只对这个 MPlayer-1.0pre7.tar.bz2 有效果。注意啊,我们现在在源代码目录了。下面是执行结果,好多文件被打上了补丁

[root@geeks MPlayer-1.0pre7]# patch -p1 < ../mplayer-1.0_pre7-gcc4-fix.patch

patching file configure patching file liba52/imdct.c patching file 

libavcodec/avcodec.h patching file libavcodec/common.h patching file

libavcodec/libpostproc/postprocess_template.c patching file libmpdemux/frequencies.h

patching file libvo/aclib_template.c patching file mmx.h patching file

postproc/swscale_template.c

4). 配置

根据我们上面提到的环境,没有 gtk-1.2 所以不用 --enable-gui 之类的参数。但是我们需要中文的提示,并且是在 locale 为 UTF-8 的情况下使用,所以要这样配置。--charset=utf8 是在 pre7 里面新增的。下面是命令和输出结果。编译时的输出很重要,从这个输出中我们可以看到 XAnim 和 RealPlayer 的解码器是从 /usr/local/lib/codecs 自动探测到的。没有加入 menu 和 xmms 的支持,也没有 gui,但是这正是我需要的,因为我的系统中没有 xmms 这些过时的 gtk-1.2 程序。

[root@geeks MPlayer-1.0pre7]# ./configure --language=zh_CN --charset=utf8

Detected operating system: Linux Detected host architecture: i386 
Checking for cc version ... 4.0.0, ok ...... Checking for XAnim DLL ... yes 
(using /usr/local/lib/codecs) Checking for RealPlayer DLL ... yes 
(using /usr/local/lib/codecs) Checking for LIVE.COM Streaming Media libraries ... 
no ...... Checking for OSD menu ... no Checking for QTX codecs ... yes Checking for 
Subtitles sorting ... yes Checking for XMMS inputplugin support ... no Checking for 
inet6 ... yes Checking for gethostbyname2 ... yes Checking for GUI ... no ...... Config 
files successfully generated by ./configure ! Install prefix: /usr/local Data 
directory: /usr/local/share/mplayer Config direct.: /usr/local/etc/mplayer Byte order: 
little-endian Optimizing for: pentium4 mmx mmx2 sse sse2 mtrr Languages: Messages/GUI: 
zh_CN Manual pages: en Enabled optional drivers: Input: ftp network edl tv matroska 
mpdvdkit2 vcd smb Codecs: qtx xvid libavcodec real xanim dshow/dmo win32 faad2(internal) 
libmpeg2 liba52 mp3lib tremor(internal) gif Audio output: alsa esd oss sdl mpegpes(file) 
Video output: xvidix cvidix sdl vesa gif89a md5sum pnm jpeg png mpegpes(file) fbdev 
opengl dga xv x11 xover tga Audio filters: Disabled optional drivers: Input: vstream tv-
v4l2 tv-v4l tv-bsdbt848 live.com cdda dvdread dvb Codecs: opendivx x264 libdv amr_wb 
amr_nb libdts libtheora toolame libmad liblzo Audio output: sgi sun jack polyp arts dxr2 
nas dsound win32 macosx Video output: winvidix bl zr zr2 dxr3 dxr2 directx svga caca aa 
ggi xmga mga xvmc directfb tdfx_vid tdfxfb 3dfx quartz Audio filters: 
ladspa

5). 编译和安装

在配置之后,通常的步骤是编译和安装,也就是 make && make install。但是这个版本的源代码缺少我们需要的一个文件,必须加上它。这个文件的作用是指明原始消息的编码。在 help 目录有很多消息文件,每种语言的消息文件都有一个对应的文件来表示编码,这也是 pre7 新加进来的。

[root@geeks MPlayer-1.0pre7]# echo 'GB2312' > help/help_mp-zh_CN.h.charset

6). Make && Make Install

这一步可能会出现编译刚开始就立即失败的情况。这时不妨运行一下 make distclean,将所有临时文件都清空。清空临时文件,也就意味着我们的第三步 "配置" 的结果全部清除掉了,也就是说我们需要重新运行第三步。当然,参数是完全一样的。第四步就不必重新运行了,因为文件只需要建立一次。最后,重新运行 make && make install

7). 运行 Mplayer 查看输出的效果

[root@geeks MPlayer-1.0pre7]# mplayer

MPlayer 1.0pre7-4.0.0 (C) 2000-2005 MPlayer Team CPU: Intel Pentium 4/Xeon/Celeron Foster (Family: 8, Stepping: 9) Detected cache-line size is 64 bytes CPUflags: MMX: 1 MMX2: 1 3DNow: 0 3DNow2: 0 SSE: 1 SSE2: 1 针对有扩展指令集x86 CPU编译: MMX MMX2 SSE SSE2 用法: mplayer [options] [url|path/]filename 基本选项: (包括所有选项的详细列表参见manpage!) -vo 选择视频输出模式和设备(用'-vo help'查看列表) -ao 选择音频输出模式和设备(用'-ao help'查看列表) vcd:// 从设备而不是普通文件上播放VCD(video cd)track dvd:// 从设备而不是普通文件上播放DVD title/track -alang/-slang 选择DVD音轨/字幕的语言(使用两位的国家代码) -ss 寻找指定的(多少秒或hh:mm:ss)位置 -nosound 不播放声音 -fs -vm -zoom 全屏播放选项(fullscr,vidmode chg,softw.scale) -x -y 设置播放的分辨率(用于改变vidmode或软件缩放) -sub 指定使用的字幕文件(参见-subfps, -subdelay) -playlist 指定使用播放列表文件 -vid x -aid y 选择用于播放的视频(x)和音频(y)流 -fps x -srate y 改变视频(x fps)和音频(y Hz)率 -pp 使用后期处理滤镜(详细 -pp 使用后期处理滤镜(详细内容参见manpage/docs) -framedrop 使用 frame-dropping (用于慢机器) 基本控制键: (完整的列表参见manpage, 同时也要检查一下 input.conf) <- or -> 向后/向前搜索10秒 up or down 向后/向前搜索1分钟 pgup or pgdown 向后/向前搜索10分钟 < or > 跳到播放列表中的前一首/下一首 p or SPACE 暂停播放(按任意键继续) q or ESC 停止播放并推出 + or - 调整音频延迟+/-0.1秒 o 循环OSD模式: none/seekbar/seekbar+timer * or / 增加或减少pcm音量 z or x 调整字幕延迟+/-0.1秒 r or t 上/下调整字幕位置, 参见-vf expand!

8). 手册页

另外还有手册页也就是 man mplayer,尽管中文版的这个文件可能有点过时了。下面的命令可以临时地看看手册页的内容

[root@geeks MPlayer-1.0pre7]# man DOCS/man/zh/mplayer.1

9).中文字体

哪儿去找中文字体?记得我们刚才提到的那个字体文件吗?


[root@geeks MPlayer-1.0pre7]# cd

[root@geeks ~]# mkdir .mplayer

[root@geeks ~]# ln -s /usr/share/fonts/zh_CN/TrueType/yzdwsj6.ttf .mplayer/subfont.ttf

就是这样

update:

安装 LIVE.COM 的步骤

1. 先把机器上原有的 live.com 卸载掉,然后解压最新版的压缩包,会得到一个 live 目录。进入这个目录,编译,退出这个目录,将这个目录整个复制为系统中的 /usr/lib/live 就可以了,这样 编译 mplayer 时候,configure 会自动找到的。

[root@geeks ~]# rm -rf /usr/lib/live
[root@geeks ~]# tar zxf live.2005.04.23.tar.gz
[root@geeks ~]# cd live
[root@geeks live]# ./genMakefiles linux
[root@geeks live]# make
[root@geeks live]# cd ..
[root@geeks ~]# mv live /usr/lib/live

2. 在安装 mplayer 前安装 live,在编译 mplayer 时会自动找到的,所以编译 mplayer 的步骤不需要变化。 如果已经按照上面的步骤安装了 mplayer,那么需要先卸载掉已有的,然后重新安装。这时候有两种情况

2.1 如果上一次编译的那份 pre7 源代码已经删掉了,那么只能从头来过,包括打补丁等等。codecs 文件就不用再动了

2.2 如果还保留着上次的 pre7 源代码,那么可以执行 make uninstall && make distclean 也就是说,卸载。

阅读(494) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~