view DOCS/Chinese/documentation.html @ 8314:d7ae896c5cde

- parsing the handler reference atom (hnlr), save handler fourccs - support for dumping raw or un-zlib-ed packets of generic tracks (verbose>=3) - fixed a sig11 caused by too small stsd of video track
author arpi
date Fri, 29 Nov 2002 20:25:32 +0000
parents c8d2c444d278
children 02aa7ceedb99
line wrap: on
line source

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>

<HEAD>
  <TITLE>文档 - MPlayer - Linux的电影播放器</TITLE>
  <LINK REL="stylesheet" TYPE="text/css" HREF="default.css">
  <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb_2312-80">
</HEAD>

<BODY>

<H1 ALIGN="center">MPlayer - Linux的电影播放器</H1>

<H2 ALIGN="center">&copy; 2000-2002 Arpad Gereoffy (A'rpi/ESP-team)<BR>
  <A HREF="http://www.mplayerhq.hu">http://www.mplayerhq.hu</A></H2>

<P ALIGN="center">[汉语]
  <A HREF="../documentation.html">[英语] </A>
  <A HREF="../Hungarian/documentation.html">[匈牙利语] </A>
  <A HREF="../German/documentation.html">[德语] </A>
  <A HREF="../French/documentation.html">[法语] </A>
  <A HREF="../Polish/documentation.html">[波兰语] </A>
  <A HREF="../Italian/documentation.html">[意大利语] </A><P>

<HR>

<H2>目录</H2>

<HR>

<UL>
  <LI><A HREF="#reading">0. 如何读取这种文件</A></LI>
  <LI><A HREF="#introduction">1. 介绍</A>
    <UL>
      <LI><A HREF="#history">1.1 历史</A></LI>
      <LI><A HREF="#installation">1.2 安装</A></LI>
      <LI><A HREF="#gui">1.3 GUI有吗?</A></LI>
      <LI><A HREF="#subtitles_osd">1.4 字幕和OSD </A>
        <UL>
          <LI><A HREF="#mpsub">1.4.1 MPlayer自己的字幕格式(MPsub)</A></LI>
          <LI><A HREF="#install_osd">1.4.2 安装OSD和字幕</A></LI>
	</UL>
      </LI>
      <LI><A HREF="#rtc">1.5 RTC</A></LI>
    </UL>
  </LI>
  <LI><A HREF="#features">2. 特色</A>
    <UL>
      <LI><A HREF="formats.html">2.1 支持的格式</A>
        <UL>
          <LI><A HREF="formats.html#video_formats">2.1.1 视频格式</A>
	    <UL>
              <LI><A HREF="formats.html#mpeg">2.1.1.1 MPEG文件</A></LI>
              <LI><A HREF="formats.html#avi">2.1.1.2 AVI文件</A></LI>
              <LI><A HREF="formats.html#asf">2.1.1.3 ASF与WMV文件</A></LI>
              <LI><A HREF="formats.html#mov">2.1.1.4 QuickTime与MOV文件</A></LI>
              <LI><A HREF="formats.html#vivo">2.1.1.5 VIVO文件</A></LI>
              <LI><A HREF="formats.html#fli">2.1.1.6 FLI文件</A></LI>
              <LI><A HREF="formats.html#real">2.1.1.7 RealMedia(RM)文件</A></LI>
              <LI><A HREF="formats.html#nuppelvideo">2.1.1.8 NuppelVideo文件</A></LI>
              <LI><A HREF="formats.html#yuv4mpeg">2.1.1.9 yuv4mpeg文件</A></LI>
              <LI><A HREF="formats.html#film">2.1.1.10 FILM文件</A></LI>
              <LI><A HREF="formats.html#roq">2.1.1.11 RoQ文件</A></LI>
              <LI><A HREF="formats.html#ogg">2.1.1.12 OGG文件</A></LI>
            </UL>
          </LI>
          <LI><A HREF="formats.html#audio_formats">2.1.2 音频格式</A>
	    <UL>
              <LI><A HREF="formats.html#mp3">2.1.2.1 MP3文件</A></LI>
              <LI><A HREF="formats.html#wav">2.1.2.2 WAV文件</A></LI>
              <LI><A HREF="formats.html#ogg_vorbis">2.1.2.3 OGG文件(Vorbis) </A></LI>
              <LI><A HREF="formats.html#wma">2.1.2.4 WMA与ASF文件</A></LI>
              <LI><A HREF="formats.html#mp4">2.1.2.5 MP4文件</A></LI>
            </UL>
          </LI>
        </UL>
      </LI>
      <LI><A HREF="codecs.html"">2.2 支持的编码格式</A>
        <UL>
          <LI><A HREF="codecs.html#video_codecs">2.2.1 视频编码格式</A>
	    <UL>
              <LI><A HREF="codecs.html#divx">2.2.1.1 DivX4与DivX5</A></LI>
              <LI><A HREF="codecs.html#libavcodec">2.2.1.2 FFmpeg DivX / libavcodec</A></LI>
              <LI><A HREF="codecs.html#xanim">2.2.1.3 XAnim codecs</A></LI>
              <LI><A HREF="codecs.html#vivo_video">2.2.1.4 VIVO视频</A></LI>
              <LI><A HREF="codecs.html#mpeg">2.2.1.5 MPEG 1/2种视频</A></LI>
              <LI><A HREF="codecs.html#ms_video1">2.2.1.6 MS Video1</A></LI>
              <LI><A HREF="codecs.html#cinepak">2.2.1.7 Cinepak CVID</A></LI>
              <LI><A HREF="codecs.html#realvideo">2.2.1.8 RealVideo</A></LI>
              <LI><A HREF="codecs.html#xvid">2.2.1.9 XViD </A></LI>
              <LI><A HREF="codecs.html#sorenson">2.2.1.10 Sorenson</A></LI>
            </UL>
          </LI>
          <LI><A HREF="codecs.html#audio_codecs">2.2.2音频编码格式</A>
	    <UL>
              <LI><A HREF="codecs.html#software_ac3">2.2.2.1软件AC3解码</A></LI>
              <LI><A HREF="codecs.html#hardware_ac3">2.2.2.2硬件AC3解码</A></LI>
              <LI><A HREF="codecs.html#libmad">2.2.2.3 libmad支持</A></LI>
              <LI><A HREF="codecs.html#vivo_audio">2.2.2.4 VIVO音频</A></LI>
              <LI><A HREF="codecs.html#realaudio">2.2.2.5 RealAudio</A></LI>
            </UL>
          </LI>
          <LI><A HREF="codecs.html#importing">2.2.3 Win32 codec导入HOWTO</A>
	    <UL>
              <LI><A HREF="codecs.html#importing_vfw">2.2.3.1 VFW codecs</A></LI>
              <LI><A HREF="codecs.html#importing_directshow">2.2.3.2 DirectShow codecs</A></LI>
            </UL>
          </LI>
        </UL>
      </LI>
      <LI><A HREF="#output">2.3 输出设备</A>
        <UL>
          <LI><A HREF="video.html">2.3.1 视频输出设备</A>
	    <UL>
              <LI><A HREF="video.html#mtrr">MTRR的2.3.1.1设置</A></LI>
              <LI><A HREF="video.html#xv">2.3.1.2 Xv </A>
	        <UL>
                  <LI><A HREF="video.html#xv_3dfx">2.3.1.2.1 3dfx卡</A></LI>
                  <LI><A HREF="video.html#xv_s3">2.3.1.2.2 S3卡</A></LI>
                  <LI><A HREF="video.html#xv_nvidia">2.3.1.2.3 nVidia卡</A></LI>
                  <LI><A HREF="video.html#xv_ati">2.3.1.2.4 ATI卡</A></LI>
                  <LI><A HREF="video.html#xv_neomagic">2.3.1.2.5 NeoMagic卡</A></LI>
                  <LI><A HREF="video.html#xv_trident">2.3.1.2.6 Trident卡</A></LI>
                </UL>
              </LI>
              <LI><A HREF="video.html#dga">2.3.1.3 DGA </A>
	        <UL>
                  <LI><A HREF="video.html#dga_summary">2.3.1.3.1总结</A></LI>
                  <LI><A HREF="video.html#dga_whatis">2.3.1.3.2 DGA是什么</A></LI>
                  <LI><A HREF="video.html#dga_installation">2.3.1.3.3 MPlayer的DGA支持的安装</A></LI>
                  <LI><A HREF="video.html#dga_resolution">2.3.1.3.4 切换分辨率</A></LI>
                  <LI><A HREF="video.html#dga_mplayer">2.3.1.3.5 DGA与MPlayer</A></LI>
                  <LI><A HREF="video.html#dga_features">2.3.1.3.6 DGA驱动模式的特性</A></LI>
                  <LI><A HREF="video.html#dga_speed">2.3.1.3.7 速度问题</A></LI>
                  <LI><A HREF="video.html#dga_bugs">2.3.1.3.8 已知的bug</A></LI>
                  <LI><A HREF="video.html#dga_future">2.3.1.3.9 未来工作</A></LI>
                  <LI><A HREF="video.html#dga_modelines">2.3.1.3.A 一些modelines</A></LI>
                  <LI><A HREF="video.html#dga_bug_reports">2.3.1.3.B 错误报告</A></LI>
                </UL>
              </LI>
              <LI><A HREF="video.html#sdl">2.3.1.4 SDL</A></LI>
              <LI><A HREF="video.html#svgalib">2.3.1.5 SVGAlib</A></LI>
              <LI><A HREF="video.html#fbdev">2.3.1.6 Framebuffer输出(FBdev)</A></LI>
              <LI><A HREF="video.html#mga_vid">2.3.1.7 Matrox framebuffer(mga-vid)</A></LI>
              <LI><A HREF="video.html#sis_vid">2.3.1.8 SiS 6326 framebuffer(sis-vid)</A></LI>
              <LI><A HREF="video.html#tdfxfb">2.3.1.9 3dfx YUV支持(tdfxfb)</A></LI>
              <LI><A HREF="video.html#opengl">2.3.1.10 OpenGL输出</A></LI>
              <LI><A HREF="video.html#aalib">2.3.1.11 AAlib -- 文本方式显示</A></LI>
              <LI><A HREF="video.html#vesa">2.3.1.12 VESA -- VESA BIOS的输出</A></LI>
              <LI><A HREF="video.html#x11">2.3.1.13 X11</A></LI>
              <LI><A HREF="video.html#vidix">2.3.1.14 VIDIX</A></LI>
              <LI><A HREF="video.html#zr">2.3.1.15 Zr</A></LI>
              <LI><A HREF="video.html#dvb">2.3.1.16 DVB</A></LI>
              <LI><A HREF="video.html#dxr3">2.3.1.17 DXR3</A></LI>
              <LI><A HREF="video.html#tv-out">2.3.1.A 电视支持</A>
	        <UL>
                  <LI><A HREF="video.html#tv-out_matrox">2.3.1.A.1 Matrox G400显卡</A></LI>
                  <LI><A HREF="video.html#tv-out_matrox_g450">2.3.1.A.2 Matrox G450/G550显卡</A></LI>
		  <LI><A HREF="video.html#tv-out_ati">2.3.1.A.3 ATI显卡</A></LI>
                  <LI><A HREF="video.html#tv-out_voodoo">2.3.1.A.4 Voodoo 3显卡</A></LI>
                </UL>
              </LI>
            </UL>
          <LI><A HREF="sound.html">2.3.2 音频输出设备</A>
	    <UL>
              <LI><A HREF="sound.html#experiences">2.3.2.1 声卡经验推荐</A></LI>
              <LI><A HREF="sound.html#plugins">2.3.2.2 音频插件 </A>
	        <UL>
                  <LI><A HREF="sound.html#resample">2.3.2.2.1 升/降采样率</A></LI>
                  <LI><A HREF="sound.html#surround_decoding">2.3.2.2.2 环绕音效解码</A></LI>
                  <LI><A HREF="sound.html#format">2.3.2.2.3 采样格式转换</A></LI>
                  <LI><A HREF="sound.html#delay">2.3.2.2.4 延迟</A></LI>
                  <LI><A HREF="sound.html#volume">2.3.2.2.5 软件音量控制</A></LI>
                  <LI><A HREF="sound.html#extrastereo">2.3.2.2.6 立体声加强</A></LI>
                  <LI><A HREF="sound.html#normalizer">2.3.2.2.7 音量正则话</A></LI>
                  <LI><A HREF="sound.html#surround">2.3.2.2.8 环绕</A></LI>
                </UL>
              </LI>
            </UL>
          </LI>
        </UL>
      </LI>
      <LI><A HREF="encoding.html">2.4 用MEncoder编码</A>
        <UL>
          <LI><A HREF="encoding.html#compilation">2.4.1 编译</A></LI>
          <LI><A HREF="encoding.html#features">2.4.2 MEncoder特性</A>
	    <UL>
              <LI><A HREF="encoding.html#2pass">2.4.2.1 编码2或者3-pass的DivX4</A></LI>
              <LI><A HREF="encoding.html#rescaling">2.4.2.2 重新缩放电影</A></LI>
              <LI><A HREF="encoding.html#copying">2.4.2.3 流复制</A></LI>
              <LI><A HREF="encoding.html#fixing">2.4.2.4 修复索引损坏的AVI文件 </A></LI>
              <LI><A HREF="encoding.html#libavcodec">2.4.2.5 用libavcodec codec编码器族编码</A></LI>
              <LI><A HREF="encoding.html#image_files">2.4.2.6 从多个图象文件(JPEG,PNG或TGA)的输入编码</A></LI>
              <LI><A HREF="encoding.html#vobsub">2.4.2.7 DVD字幕提取为Vobsub文件</A></LI>
            </UL>
          </LI>
          <LI><A HREF="encoding.html#options">2.4.3 可用的选项</A></LI>
        </UL>
      </LI>
      <LI><A HREF="#tv">2.5 电视输入</A>
        <UL>
          <LI><A HREF="#tv_compilation">2.5.1 编缉</A></LI>
          <LI><A HREF="#tv_options">2.5.2 可用的选项</A></LI>
          <LI><A HREF="#tv_keyboard">2.5.3 键盘控制</A></LI>
          <LI><A HREF="#tv_examples">2.5.4 例子</A></LI>
        </UL>
      </LI>
    </UL>
  </LI>
  <LI><A HREF="#usage">3. 用法</A>
    <UL>
      <LI><A HREF="#command_line">3.1 命令行</A></LI>
      <LI><A HREF="#control">3.2 控制</A>
        <UL>
          <LI><A HREF="#default_controls">3.2.1 缺省控制</A></LI>
          <LI><A HREF="#controls_configuration">3.2.2 控制配置</A>
	    <UL>
              <LI><A HREF="#key_names">3.2.2.1 键名</A></LI>
              <LI><A HREF="#commands">3.2.2.2 命令</A></LI>
            </UL>
          </LI>
          <LI><A HREF="#lirc">3.2.3 LIRC控制</A></LI>
          <LI><A HREF="#slave">3.2.4 Slave模式</A></LI>
        </UL>
      </LI>
      <LI><A HREF="#streaming">3.3 网络或管道的流媒体</A></LI>
    </UL>
  </LI>
  <LI><A HREF="cd-dvd.html">4. CD与DVD部分</A>
    <UL>
      <LI><A HREF="cd-dvd.html#drives">4.1 CD与DVD驱动器</A></LI>
      <LI><A HREF="cd-dvd.html#dvd">4.2 DVD回放</A></LI>
      <LI><A HREF="cd-dvd.html#vcd">4.3 VCD回放</A></LI>
    </UL>
  </LI>
  <LI><A HREF="faq.html">5. FAQ部分</A>
    <UL>
      <LI><A HREF="faq.html#compilation">5.1 编译</A></LI>
      <LI><A HREF="faq.html#general">5.2 一般问题</A></LI>
      <LI><A HREF="faq.html#playback">5.3 回放问题</A></LI>
      <LI><A HREF="faq.html#driver">5.4 视频与音频驱动问题(vo/ao)</A></LI>
      <LI><A HREF="faq.html#dvd">5.5 DVD回放</A></LI>
      <LI><A HREF="faq.html#features">5.6 特性要求</A></LI>
      <LI><A HREF="faq.html#encoding">5.7 编码</A></LI>
    </UL>
  </LI>
  <LI><A HREF="#ports">6. 移植</A>
    <UL>
      <LI><A HREF="#debian">6.1 Debian安装包的制作</A></LI>
      <LI><A HREF="#freebsd">6.2 FreeBSD</A></LI>
      <LI><A HREF="#solaris">6.3 Solaris</A></LI>
      <LI><A HREF="#strongarm">6.4 StrongARM</A></LI>
      <LI><A HREF="#sgi">6.5 Silicon Graphics/Irix</A></LI>
      <LI><A HREF="#qnx">6.6 QNX</A></LI>
      <LI><A HREF="#openbsd">6.7 OpenBSD</A></LI>
      <LI><A HREF="#cygwin">6.8 Cygwin</A></LI>
    </UL>
  </LI>
  <LI><A HREF="#mailing_lists">附录A -- 邮件列表</A></LI>
  <LI><A HREF="bugreports.html">附录B -- 如何报告bug</A>
    <UL>
      <LI><A HREF="../tech/patches.txt">附录B2 -- 如何发送补丁</A></LI>
    </UL>
  </LI>
  <LI><A HREF="#known_bugs">附录C -- 已知bug</A></LI>
  <LI><A HREF="skin-zh.html">附录D -- MPlayer skin的格式!</A></LI>
  <LI><A HREF="users_against_developers.html">附录E -- 开发者的痛楚</A>
    <UL>
      <LI><A HREF="users_against_developers.html#gcc">GCC 2.96 </A></LI>
      <LI><A HREF="users_against_developers.html#binary">二进制发行版</A></LI>
      <LI><A HREF="users_against_developers.html#nvidia">nVidia</A></LI>
      <LI><A HREF="users_against_developers.html#barr">Joe Barr </A></LI>
    </UL>
  </LI>
</UL>

<HR>



<H1><A NAME="reading">0. 如何阅读本文档</A></H1>

<P>如果你是首次安装:请一定要阅读从这里到安装部分末端的每件事,并且追踪你将遇到的链接。
如果你有任何其它问题,返回到目录并搜索主题,读取<A HREF="faq.html">FAQ</A>,或者试图grepping整个文件。</P>

<P>这个文件的主要原则:如果一个功能没有被编入文档,那么它<U>不存在</U>。如果我不说你能
用电视选台器音频编码,你一定不能。不过健康程度的综合能力还是受欢迎的。祝你好运。你将需要它的:),
让我引用<A HREF="http://mplayerhq.hu/pipermail/mplayer-users/">mplayer-users</A>邮件列表中
Chris Phillips的话作为另一个好的建议:</P>

<P><I>“我以前说过新手和白痴之间的区别在于:无论,你实际上对一个系统(Linux,汽车,女孩:D)
了解多少,你应该总能够退一步想想并且保持客观,否则,你是公认的白痴IMHO。跟我住在一起的女孩认定吸
尘器坏了因为它不吸进东西,而从不想更换袋子,因为她以前从来没有做过...那就是愚蠢,而不仅仅是不
知道做什么...仅仅因为不是那么熟悉你的环境不是你的a)懒惰和b)忽视的借口。如此多人们似乎看到“error”
就停止...极少数似乎真正上读取了在冒号的另一边的东西”。</I></P>


<H1><A NAME="introduction">1. 介绍</A></H1>

<P><B>MPlayer</B>是Linux 上的电影播放器(也能跑在许多其它Unices上,甚至<B>non-x86</B>CPU上,
参见<A HREF="#ports">移植部分</A>)。它能使用众多的本地的,XAnim,RealPlayer,和Win32 DLL codecs,
播放大多数MPEG,VOB,AVI,OGG,VIVO,ASF/WMV,QT/MOV,FLI,RM,NuppelVideo,yuv4mpeg,FILM,RoQ文件。
你还能观看<B>VideoCD</B>,<B>SVCD</B>,<B>DVD</B>,<B>3ivx</B>,<B>RealMedia</B>,和<B>DivX</B>格式
的电影(你根本不需要avifile库)。mplayer的另一个大的特色是广泛的输出设备支持。它可以在X11,Xv,DGA,
OpenGL,SVGAlib,fbdev,AAlib,DirectFB下工作,而且你也能使用GGI和SDL(由此可以使用他们支持的各种驱动模式)
和一些低级的硬件相关的驱动模式(比如Matrox,3Dfx和Radeon,Mach64,Permedia3)!他们大多数支持软件或者硬件缩放,
因此你能在全屏下享受电影。<B>MPlayer</B>还支持通过硬件MPEG解码卡显示,诸如<B><A HREF="video.html#dvb">DVB</A></B>
和<B><A HREF="video.html#dxr3">DXR3与Hollywood+</A></B>。可以使用european/ISO 8859-1,2(匈牙利语,英语,捷克语等等),
Cyrillic,朝鲜字体的清晰放大并且反锯齿的字幕(<B>支持10种格式</B>),和on screen display(OSD)你又觉得如何?</P>

<P><B>MPlayer</B>以GPL v2许可证发行。</P>

<P>这个播放器能够稳如泰山的播放被破坏的MPEG文件(对一些VCD有用),而它能播放著名的windows media player
都打不开的的坏的AVI文件。甚至,没有索引部分的AVI文件可播放,你能暂时由重建他们的索引<CODE>-idx</CODE>选择,
或者用<B>MEncoder</B>永久重建,使你能够seek!如你所见,稳定和质量是最重要的事情,而且他的速度是也惊人的。</P>


<H2><A NAME="history">1.1 历史</A></H2>

<P>这一年以前开始的...
我(A'rpi)已尝试Linux下的许多播放器(mtv,xmps,dvdview,livid/oms,videolan,xine,xanim,avifile,xmmp),
但是他们全都有一些问题。多半与特殊的文件或音频与视频的同步有关。他们中大多数不能同时播放MPEG1,MPEG2和AVI(DivX)文件。
许多播放器也有图象质量或者速度的问题。因此,我已决定自己写/修改一个...</P>

<UL>
<LI><B>mpg12play v0.1-v0.3:</B>2000年9月22-25日<BR>
    第一次尝试,总共只用了半小时来hack!到版本0.3我都使用www.heroinewarrior.com的libmpeg3,但是它有图象质量和速度的问题。</LI>
<LI><B>mpg12play v0.5-v0.87:</B>2000年9月28日 - 10月20日<BR>
    用Dirk Farin的DVDview替换了原来的Mpeg codec,它是一个很不错的东东,但是它很慢并且使用写成C++(我讨厌C++!!!)</LI>
<LI><B>mpg12play v0.9-v0.95pre5:</B>2000年十月21日 - 11月2日<BR>
    Mpeg codec改用Aaron Holtzman与的Michel Lespinasse的libmpeg2(mpeg2dec)。它十分出色,优化过的十分快速的C代码和完美的图象质量以及100%的MPEG标准的一致性。</LI>
<LI><B>MPlayer v0.3-v0.9:</B>2000年11月18日 - 12月4日<BR>
    它包含两个程序: mpg12play v0.95pre6和我的新的简单的基于avifile的Win32 DLL Loader的AVI播放器'avip'。</LI>
<LI><B>MPlayer v0.10:</B>2001年1月1日<BR>
    MPEG和AVI播放器做成了一个二进制文件!</LI>
<LI><B>MPlayer v0.11pre系列:</B><BR>
    一些新的开发者加入了,从0.11开始mplayer项目成为一个team-work!增加了.ASF文件支持,和OpenDivX(见www.projectmayo.com)编/解码。</LI>
<LI><B>MPlayer v0.17a“IdegCounter”</B>2001年4月27日<BR>
    在艰苦发展了4个月的0.11pre之后的正式版本!试试看,然后等着被震撼!成千上万的新的特性添加...当然同时旧的代码也被改进,移去了一些bug</LI>
<LI><B>MPlayer 0.18“BugCounter”</B>2001年7月9日<BR>
    自从0.17以来的2个月后的新的正式版。完全的ASF支持,更多字幕格式,引入libao(类似于libvo但是针对音频),比以往任何时候更加稳定,如此等等。这肯定是个必需品!</LI>
<LI><B>MPlayer 0.50“Faszom(C)ounter”</B>2001年10月8日<BR>
    Hmm。又一次新版本。众多新的特性,Beta版的GUI,bug修正,新的vo和ao驱动模式,许多系统的移植,包括opensource DivX codecs和更多得多的改进。尝试一下!</LI>
<LI><B>MPlayer 0.60“RTFMCounter”</B>2002年1月3日<BR>
    支持MOV/VIVO/RM/FLI/NUV文件格式,本地的CRAM,Cinepak,ADPCM codecs,支持XAnim的二进制的codecs;DVD字幕支持,首此发布MEncoder,电视截取,cache,liba52,无数的修正。</LI>
<LI><B>MPlayer 0.90“?”</B>8月??日,2002<BR>
    </LI>
</UL>

<H2><A NAME="installation">1.2 安装</A></H2>

<P>在这章中我将试图指引你通过编译和配置<B>MPlayer</B>的过程,它不大容易的,不过也见得一定很难的。
如果你遇到不同于我所解释的现象,请的通过搜索这篇文件来查找你的回答。如果你遇到链接,请跟踪他们并且细心读取他们包含的内容。
它将花费一些时间,但是它确实是值得的。</P>

<P>你需要一个相当新的系统。在Linux上,推荐2.4.x的内核。</P>

<H4>软件要求:</H4>

<UL>
  <LI><B>binutils </B>-- 建议版本<B>2.11.x</B>。这个程序这样十分重要,负责产生MMX/3DNow!/etc指令。</LI>
  <LI><B>gcc </B>-- 建议版本是:<B>2.95.3</B>,<B>2.95.4</B>和<B>3.1</B>。<B>永远不要</B>使用2.96或者3.0.x!
他们产生错误的MPlayer的代码。如果你决定更换2.96的gcc,那么不要只是因为新而决定采用3.0.x!3.0.x的早期版本甚至比2.96更buggy。
因此不如降级到2.95.x(也使libstdc++降级,其它程序可能需要它)或者根本(但这种情况下请对运行时的问题作好准备)不升/降级。
如果你一定要使用3.x.x请使用最新的版本,早先的发行版本有各种各样的错误,确信你使用的至少是3.1,它通过测试且工作正常。
关于gcc 2.96的bug的(仍然没有修正,他们在<B>MPlayer</B>中不断出现!)详细信息能在<A HREF="users_against_developers.html">
这里</A>和<A HREF="faq.html">FAQ</A>中找到。</LI>
  <LI><B>XFree86 </B>-- 建议<B>总使用最新版本(4.2.0)</B>。正常来说,每个人会这样做,因为XFree86从4.0.2开始,
它包含了用来使其能够在它支持的卡片上使用硬件YUV加速(快速的图象显示)的<A HREF="video.html#xv">XVideo</A>扩展(在某些地方被称作<B>Xv</B>)。<BR>
确保也安装了<B>开发包</B>,否则它将不工作。<BR>
对于一些视频卡你不需要XFree86。参见下面的列表。</LI>
  <LI><B>make </B>-- 建议<B>总使用最新版本</B>(至少3.79.x)。这通常不太重要。</LI>
  <LI><B>SDL </B>-- 它不是强制要求的,但是在某些情况下(坏的音频,在xv驱动模式下奇怪地延迟的视频卡)能帮助。总使用最新(从1.2.x开始支持)的。</LI>
  <LI><B>libjpeg </B>-- 可选的JPEG译码器,用于-mf参数和一些QT MOV文件。如果你计划做jpeg文件的工作<B>MPlayer</B>和<B>MEncoder</B>都需要它。</LI>
  <LI><B>libpng </B>-- 推荐也是缺省( M)PNG译码器。GUI需要。对<B>MPlayer</B>和<B>MEncoder</B>也有用。</LI>
  <LI><B>lame </B>-- 推荐,MEncoder需要用它把音频做MP3编码,建议<B>总使用最新版本</B>(至少3.90)。</LI>
  <LI><B>libogg </B>-- 可选,播放OGG文件格式需要。</LI>
  <LI><B>libvorbis </B>-- 可选,播放OGG Vorbis音频需要。</LI>
</UL>

<H4>解码器:</H4>

<UL>
  <LI><B>libavcodec</B>:这个解码器包可以在多重平台上对H263/MJPEG/RV10/DivX3/DivX4/DivX5/MP41/MP42/WMV1编码格式的视频流进行解码。
详细情况请看<A HREF="codecs.html#libavcodec">这里</A>。特色<BR>:
    <UL>
      <LI>在non-x86机器上的对上述的各种编码格式解码。</LI>
      <LI>以上述大多数编码格式编码。</LI>
      <LI>这是<B>可用的最快的</B>DivX/3/4/5和其它MPEG4类型的解码器,因此高度推荐。</LI>
    </UL>
  </LI>
  <LI><B>Win32 codecs:</B>如果你计划在x86构架的机器上使用<B>MPlayer</B>,你将有可能需要他们。在开始<B>MPlayer</B>的编译<B>之前</B>
下载并用unzip解压缩w32codecs.zip到/usr/lib/win32,否则将不会编译Win32支持代码!<BR>
注: avifile项目有类似的codecs包,但是它不同于我们的,如此如果你想要使用所有支持的codecs,那么使用我们的包! 然而,
你能在avifile中使用我们的codecs包。特色:<BR>
    <UL>
      <LI>如果你想要播放或者编码例如以各种各样的硬件压缩器记录的电影,像调音器卡,数码相机(例如:DV,ATI VCR,MJPEG),你将需要它</LI>
      <LI>如果你想要播放<B>WMV8格式的电影</B>那就需要它。播放老的以MP41或者MP42视频的ASF(尽管这些文件的音频常常是VoxWare -- 它是通过Win32 codec解码的),或者WMV7是不需要它的。</LI>
    </UL>
  </LI>

  <LI><B>DivX4与DivX5:</B>关于这编码格式的信息可从<A HREF="codecs.html#divx">DivX4与DivX5</A>节得到。如果你不想用它来编码,
你有可能不会想要这个解码器,因为<B>libavcodec</B>(见上面)比它快得多。<BR>
  特色:
    <UL>
      <LI>用<A HREF="encoding.html">MEncoder</A>进行1 pass或2 pass编码。</LI>
      <LI>播放老的<B>DivX3</B>格式的电影比Win32 DLL快得多但是比<B>libavcodec</B>慢!</LI>
      <LI>它封闭源码的,而且仅仅有一个x86平台的版本。</LI>
    </UL>
  </LI>

  <LI><B>XviD:</B>开源的Divx4Linux的编码替代品<BR>
  特色:
    <UL>
      <LI>用<A HREF="encoding.html">MEncoder</A>进行1 pass或2 pass编码。</LI>
      <LI>这是开源的,如此不仅只有x86一种版本可用。</LI>
      <LI>它的编码速度比divx4快2倍-- 在几乎相同的质量的情况下</LI>
    </UL>
  </LI>

  <LI><A HREF="codecs.html#xanim">XAnim codecs</A>对解码<B>3ivx</B>和Indeo 3/4/5格式,和一些旧的格式的电影效果是最好
(全屏幕,硬件YUV缩放)。同时,他们是多平台的,因此这是在非x86平台上播放Indeo的唯一的方法(当然,除了直接使用XAnim之外:)。
但是例如Cinepak电影<B>MPlayer</B>自己的Cinepak解码器播放才有最好的效果!</LI>

  <LI>对于<B>Ogg Vorbis</B>音频解码你需要正确地安装<CODE>libvorbis</CODE>。如果可能的话尽量使用deb/rpm包装,
或者用<A HREF="http://ogg.org/ogg/vorbis/download/vorbis_nightly_cvs.tgz">源代码</A>编译(这是Vorbis CVS的每天最新的tarball)。</LI>

  <LI><B>MPlayer</B>能使用RealPlayer 8或RealONE的库来播放包括<B>RealVideo 2.0和3.0</B>格式的视频和Sipro/Cook格式的音频的文件。
安装方法以及关于它的更多信息参见<A HREF="formats.html#real">RealMedia文件格式</A>节!</LI>

</UL>

<H4>显卡</H4>

<P>一般地显卡可分为两种。一种(较新的显卡)支持<B>硬件缩放和YUV加速</B>,另一种卡没有。</P>

<H4>YUV显卡</H4>

<P>他们能在他们显存可以的范围中用任何分辨率显示和缩放(zoom)图像,只有<B>很小CPU使用量</B>(缩放不会使它增加!),所以你能得到清晰快速的全屏播放。</P>

<UL>
  <LI><B>Matrox G200与G400与G450与G550卡片:</B>虽然提供了一个<A HREF="video.html#vidix">VIDIX模式的驱动</A>,
但还是推荐使用旧的mga-vid内核模块,因为它工作起来好得多。关于其安装和用法请参见<A HREF="video.html#mga_vid">mga-vid</A>部分。
在编译<B>MPlayer</B><I>之前</I>进行这些步骤这一点很重要,否则不会编译mga-vid的支持代码。同时也请查看<A HREF="video.html#tv-out_matrox">Matrox电视输出</A>部分。
<U><B>如果你是非Linux用户</B></U>,你的唯一的选择是Vidix驱动器: 请看<A HREF="video.html#vidix">VIDIX</A>的相关文件!</LI>

  <LI><B>3Dfx Voodoo3与Banshee卡片:</B>请参见<A HREF="video.html#tdfxfb">tdfxfb</A>部分以了解如何获得大的速度提升。
在编译<B>MPlayer</B><B>之前</B>进行这些步骤这一点很重要,否则不会编译3Dfx的支持代码。也请参考<A HREF="video.html#tv-out_voodoo">3dfx电视输出</A>部分。
如果你使用X,至少使用4.2.0版本,因为4.1.0和更早释放的版本的3dfx Xv驱动是坏的!</LI>

  <LI><B>ATI卡片:</B>下列的显卡提供了<A HREF="video.html#vidix">VIDIX驱动</A>:<B>Radeon</B>,<B>Rage128</B>,
<B>Mach64</B>(Rage XL/Mobility,Xpert98)。也请参考电视输出文档中的<A HREF="video.html#tv-out_ati">ATI电视输出</A>部分,
看看Linux与MPlayer是否支持你的显卡的电视输出。</LI>

  <LI><B>S3卡片:</B>Savage和Virge/DX芯片有硬件加速功能。尽可能使用最新的XFree86版本,老的的驱动很buggy。
Savage的芯片的YV12显示有问题,具体细节请看<A HREF="video.html#xv_s3">S3 Xv</A>部分。更老的,Trio显卡没有,或只有很慢的硬件加速功能。</LI>

  <LI><B>nVidia卡片:</B>对视频播放来说是十分糟糕的选择(nVidia<A HREF="users_against_developers.html#nvidia">不这么认为</A>!)。
nVidia的显卡使用十分低廉和质量低劣的芯片。此外,<B>XFree86自带的nVidia驱动器对所有nVidia显卡都不支持硬件YUV加速!</B>
你将不得不从nVidia.com下载nVidia的封闭源码的驱动。细节参见<A HREF="video.html#xv_nvidia">nVidia Xv驱动器</A>部分。</LI>

<LI><B>3DLabs GLINT R3和Permedia3</B>:提供VIDIX驱动(pm3-vid)。细节参见<A HREF="video.html#vidix">VIDIX</A>部分。</LI>

<LI><B>其它卡片:</B>不是上述的任何一个?
  <UL>
    <LI>试试XFree86的驱动(和你的显卡)是否支持硬件加速。细节参见<A HREF="video.html#xv">Xv</A>部分。</LI>
    <LI>如果不是,那么你的操作系统不支持你显卡的视频特性:(,<BR>
如果它在Windows下能够使用硬件缩放,那并不不意味着在Linux或者其它OS下做同样的事情,它依赖于驱动!
大多数制造厂不做Linux驱动也不公布芯片标准 -- 所以,使用他们的显卡你很不走运。看‘非YUV显卡’:
    </LI>
  </UL>
</LI>

</UL>

<H4>非YUV卡片</H4>

<P>播放Fullscreen能被任一个可以使用<B>软件缩放</B>(使用<CODE>-zoom</CODE>或者<CODE>-vop scale</CODE>参数,但是我先警告你:
这会非常非常慢!),或者切换成较小的的分辨率,例如352x288。如果你没有YUV加速,我们推荐使用后一种方法。在<B>MPlayer</B>中,
这种方法通过<CODE>-vm</CODE>参数打开,它能用于下列驱动:</P>

<UL>
  <LI><B>使用</B>XFree86:细节参见<A HREF="video.html#x11"">X11驱动</A>和<A HREF="video.html#dga">DGA驱动</A>部分。推荐使用DGA!
也可以尝试通过SDL使用DGA,有时这种办法更好。</LI>
  <LI><B>不使用</B>XFree86:按下列顺序尝试驱动模式:<A HREF="video.html#vesa">vesa</A>,<A HREF="video.html#fbdev">fbdev</A>,
<A HREF="video.html#svgalib">svgalib</A>,<A HREF="video.html#aalib">aalib</A>。</LI>
</UL>

<H4>某些显卡:</H4>

<UL>
  <LI><B>Cirrus Logic显卡</B>:
    <UL>
      <LI>GD 7548: 板载显卡并用Compaq Armada 41xx系列的笔记本测试。
        <UL>
          <LI>XFree86 3:能使用8/16bpp模式。然而,这个驱动在800x600@16bpp下狂慢而且buggy<B>推荐: 640x480@16bpp</B></LI>
          <LI>XFree86 4: 如果不仅用加速Xserver会在启动后不久失去响应,但这样之后就比XFree86 3慢了。没有XVideo</LI>
          <LI>FBdev: 这个显卡只兼容VBE 1.2,所以VESA帧缓冲用不了,当尝试用UniVBE来绕过时, 帧缓冲显示的全是碎片根本用不了。</LI>
          <LI>VESA: 这个显卡只兼容VBE 1.2,所以VESA输出用不了。无法用UniVBE绕过</LI>
          <LI>SVGAlib: 检测成更老的Cirrus芯片. 用<CODE>-bpp 8</CODE>可以使用但很慢</LI>
        </UL>
      </LI>
    </UL>
  </LI>
</UL>

<H4>声卡</H4>

<UL>
  <LI><B>Soundblaster Live!:</B>通过这种声卡你能使用4或者6(<B>5.1</B>)声道AC3解码而不只是2声道。请看<A HREF="codecs.html#software_ac3">
软件AC3解码</A>一节。对于硬件AC3中转你必须使用ALSA 0.9的oss仿真!</LI>

  <LI><B>C-Media的SP/DIF输出:这些声卡可以使用</B>硬件AC3中转,参见<A HREF="codecs.html#hardware_ac3">硬件AC3解码</A>一节。</LI>

  <LI><B>其它声卡</B>的特性<B>MPlayer</B>是不支持的。
  <U>强烈建议阅读<A HREF="sound.html">声卡</A>部分!</U>
</UL>

<H4>特性</H4>

<UL>
  <LI>考虑一下你是否需要GUI。如果需要,在进行编译之前,请看<A HREF="#gui">GUI</A>部分。</LI>

  <LI>如果你想要安装<B>MEncoder</B>(我们的强大的全功能编码器),请看<A HREF="encoding.html">MEncoder</A>一节。</LI>


  <LI>如果你有一张V4L兼容的<B>电视选台器</B>卡,而希望用<B>MPlayer</B>观看/截取并且录制电影,请看<A HREF="#tv">电视输入</A>一节。</LI>
</UL>

<P>接着编译<B>MPlayer</B>:</P>

<PRE>
    ./configure
    make
    make install
</PRE>

<P>到此为止,<B>MPlayer</B>就可以使用了。<CODE>$PREFIX/share/mplayer</CODE>目录下包含了<CODE>codecs.conf</CODE>文件,
程序通过它来了解所拥有的codecs和他们的能解的码。该文件应该与主程序一起更新!<BR>
检查在你的home目录(~/.mplayer/codecs.conf)中是否有旧的MPlayer版本留下的codecs.conf,如果有就删掉它!</P>

<P><B>Debian的用户</B>能自己制作.deb安装包,这十分简单。直接在<B>MPlayer</B>的根目录执行<CODE>fakeroot debian/rules binary</CODE>。
详尽的步骤请看<A HREF="documentation.html#debian">这里</A>。</P>

<P><CODE>./configure</CODE><B>的输出请务必一定阅读</B>,还有<CODE>configure.log</CODE>文件,其中的信息会告诉你将什么将被编译,什么不编译。
你也可能需要查看<CODE>config.h</CODE>和<CODE>config.mak</CODE>文件。<BR>
如果你已经安装一些库文件,却没有被<CODE>./configure</CODE>发现,那么检查你是否也安装了正确的头文件(通常在-dev包中)以及他们的版本符合要求。
<CODE>configure.log </CODE>通常会告诉你缺了什么。</P>

<P>尽管并非必需,你确实应该安装字体以使用OSD和字幕功能。下载<CODE>mp-arial-iso-8859-*.zip</CODE>和/或者可选(如果存在的话)的其他语言的更新。
阅读<A HREF="#subtitles_osd">字幕和OSD</A>一节来了解其细节。</P>

<PRE>
    mkdir ~/.mplayer/font
    cd ~/.mplayer/font
    unzip mp-arial-iso-8859-1.zip
    ln -s ~/.mplayer/font/arial-24 font
</PRE>

<H2><A NAME="gui">1.3 GUI有吗?</A></H2>

<P>GUI需要GTK(它不是GTK写成的,但是面板是的)。skin被保存为PNG格式,因此你需要安装gtk,libpng(和他们的devel包)。
你必须在运行<CODE>./configure</CODE>时使用<CODE>--enable-gui</CODE>来编译它的代码。然后,你可以用下列方法之一打开GUI方式</P>
<UL>
  <LI>使用<CODE>-gui</CODE>选项</LI>
  <LI>在你的config文件中添加<CODE>gui=yes</CODE></LI>
  <LI><CODE>ln -s $PREFIX/bin/mplayer $PREFIX/bin/gmplayer</CODE>,然后运行<CODE>gmplayer</CODE>。
</UL>

<P>由于技术原因,目前你不能在命令行下使用<CODE>-gui</CODE>选项。</P>

<BLOCKQUOTE>
  <B>提示</B><Br>
  使用鼠标的中间键(2键鼠标则同时按下左右两键),会弹出一个有DVD播放选项的GTK菜单!
</BLOCKQUOTE> 
  
<P>因为<B>MPlayer</B>不自带skin,所以如果你想要使用GUI,你必须自己下载他们。参见<A HREF="http://www.mplayerhq.hu/homepage/dload.html">下载页</A>。
他们应该被解压到系统通用的目录(<CODE>$PREFIX/share/mplayer/Skin</CODE>),或者解压到<CODE>$HOME/.mplayer/Skin</CODE>。
<B>MPlayer</B>在默认情况下会在这些的目录里寻找一个叫<I>default</I>的目录,
但是你能使用<CODE>-skin newskin</CODE>选项或在config文件中添加<CODE>skin=newskin</CODE>来强制使用<CODE>*/Skin/newskin</CODE>下的skin。</P>

<H2><A NAME="subtitles_osd">1.4 字幕和OSD</A></H2>

<P>
  <B>MPlayer</B>能在播放电影的同时显示字幕。目前支持下列格式:</P>
<UL>
  <LI>VobSub</LI>
  <LI>Microdvd</LI>
  <LI>SubRip</LI>
  <LI>SubViewer</LI>
  <LI>Sami</LI>
  <LI>VPlayer</LI>
  <LI>RT</LI>
  <LI>SSA</LI>
  <LI>MPsub</LI>
  <LI>AQTitle</LI>
</UL>

使用不同格式的命令行选项稍有不同:

<H4>VobSub字幕</H4>
<P>VobSub字幕包括一个大的(几兆).sub文件,和可选的.idx和/或者.ifo文件。<BR>
用法: 如果你有类似<CODE>sample.sub</CODE>,<CODE>sample.ifo</CODE>,<CODE>sample.idx</CODE>之类的文件
 -- 你必需使用<CODE>-vobsub sample -vobsubid &lt;id&gt;</CODE>的参数(当然必要时加上路径)。
 <CODE>-vobsubid </CODE>选择类似于播放DVD时的<CODE>-sid</CODE>,用它你可以选择不同的字幕轨道(语言)。</P>

<H4>其它字幕</H4>
<P>其它格式由一个单一的包含时间,位置和正文信息的文本文件组成。<BR>
用法: 如果你有类似<CODE>sample.txt</CODE>之类的文件,你必须使用<CODE>-sub sample.txt</CODE>
(当然必要时加上路径)。</P>

<H4>调整字幕的时间和位置</H4>

<DL>
  <DT><CODE>-subdelay&lt;sec&gt;</CODE></DT>
  <DD>延迟字幕&lt; sec &gt;秒。可以是负数。</DD>
  
  <DT><CODE>-subfps&lt;rate&gt;</CODE></DT>
  <DD>规定字幕文件按每秒多少帧速度显示(浮点数)</DD>
  
  <DT><CODE>-subpos&lt;0-100&gt;</CODE></DT>
  <DD>规定字幕显示的位置。</DD>
</DL>

<P>如果你使用MicroDVD字幕文件时遇到电影和字幕之间的延迟不断增加的问题,很有可能你的电影文件和字幕文件的帧速度不同。<BR>
请注意,MicroDVD字幕格式用绝对帧数来计时,因此<CODE>-subfps</CODE>选项不能用于这种格式。因为<B>MPlayer</B>没法猜测
字幕文件的帧速度,你必须手工修改它。在MPlayer的FTP站点的<CODE>contrib</CODE>目录中有一个小的perl脚本可以替你做这种转化。</P>

<P>关于DVD字幕,请看<A HREF="cd-dvd.html#dvd">DVD</A>一节。</P>

<H3><A NAME="mpsub">1.4.1 MPlayer自己的字幕格式(MPsub)</A></H3>

<P><B>MPlayer</B>引入一种称为<B>MPsub</B>的新的字幕格式。它是我(Gabucino)设计。基本上,其主要的特性是基于<I>动态</I>时间
(虽然它有基于帧的模式)。例如(引自<A HREF="http://www.mplayerhq.hu/DOCS/tech/mpsub.sub">DOCS/tech/mpsub.sub</A>):</P>

<P><CODE><I># first number  : wait this much after previous subtitle disappeared<BR>
  # second number : display the current subtitle for this many seconds<BR>
  <BR>
  15 3<BR>
  A long long, time ago...<BR>
  <BR>
  0 3<BR>
  in a galaxy far away...<BR>
  <BR>
  0 3<BR>
  Naboo was under an attack.<BR>
  </I></CODE></P>

<P>因此如你所见,主要的目标是<B>使字幕的编辑/计时/合并/分割变得容易</B>。同时,如果你 -- 比方说 -- 有一个SSA字幕但是它
与你的电影却有严重的时间/延迟问题,你只要简单运行<CODE>mplayer dummy.avi -sub source.ssa -dumpmpsub</CODE>。
在当前目录中将生成一个<CODE>dump.mpsub</CODE>文件,它包含源字幕的正文,但是使用<B>MPsub</B>格式。
然后,你就能字幕中自由地添加或减去任意秒。</P>

<P>字幕的显示使用一种称为<B>'OSD', On Screen Display</B>的技术。OSD被用来显示当前的时间,音量条,进度条等等。</P>

<H3><A NAME="install_osd">1.4.2 安装OSD和字幕</A></H3>

<P>你需要一个<B>MPlayer</B>字体包来使用OSD和字幕功能。有许多方法获得它:</P>

<UL>

  <LI>从<B>MPlayer</B>站点下载准备好的字体包。
注:当前可用的字体限仅限于iso 8859-1/2的支持,但在FTP占的contrib/font部分有其它一些(包括朝鲜语,俄语,8859-8等等)用户制作的字体。

字体应该有正确的font.desc文件用来unicode格式的字符位置映射到字幕文件实际使用的内码页。另一种解决方法是把字幕用utf8格式编码
然后使用-utf8选项或者将字幕文件命名为&lt;video_name&gt;.utf放在与视频文件相同的目录中。将不同的内码转换到utf8编码可以通过使用
konwert(Debian)或者iconv(Red Hat)程序完成。<BR>
一些URL:
    <UL>
      <LI><A HREF="ftp://ftp.mplayerhq.hu/MPlayer/releases/">ftp://ftp.mplayerhq.hu/MPlayer/releases/</A> -- ISO字体</LI>
      <LI><A HREF="ftp://ftp.mplayerhq.hu/MPlayer/contrib/fonts/">ftp://ftp.mplayerhq.hu/MPlayer/contrib/fonts/</A> -- 用户制作的各种各样的字体</LI>
      <LI><A HREF="http://realtime.ssu.ac.kr/~lethean/mplayer">http://realtime.ssu.ac.kr/~lethean/mplayer</A> -- 朝鲜字体与RAW的插件</LI>
    </UL>
  </LI>

  <LI>使用TOOLS/subfont-c下的字体制作工具,它是一个能将TTF/Type1等字体转换到mplayer字体pkg的一个完整的工具。
(详细情况请看TOOLS/subfont-c/README)</LI>

  <LI>使用TOOLS/subfont-GIMP下的GIMP字体生成插件(注:你同时也必须有HSI RAW插件,见下面的URL)</LI>
</UL>

<P>下载字体之后,把你下载的文件UNZIP到<CODE>~/.mplayer</CODE>或者<CODE>$PREFIX/share/mplayer</CODE>。
然后将其中之一改名或者符合链接为<CODE>font</CODE>(例如:<CODE>ln -s ~/.mplayer/arial-24 ~/.mplayer/font</CODE>)。
你现在应该在电影的左上角看见一个计时器(用"o"键可以关上它)。</P>

<P>OSD有3种状态:(用'o'键切换)</P>
<UL>
  <LI>计时器+音量条+进度条+字幕(默认)</LI>
  <LI>音量条+进度条+字幕</LI>
  <LI>只有字幕</LI>
</UL>

<P>你能通过在config文件中设置变量<CODE>osdlevel=</CODE>来改变默认行为。</P>


<H2><A NAME="rtc">1.5 RTC</A></H2>

在<B>MPlayer</B>中有三种计时方法。
<UL>
  <LI><B>使用老方法</B>,你不必做任何事情。它使用<CODE>usleep()</CODE>调节A/V同步,达到+/-10ms的准确性。
 虽然有时同步应该调整的更好。</LI>
  <LI><B>新的定时器</B>代码使用PC的RTC(实时钟)完成这个任务,因为它有精确到1ms的计时器。当可用时它将自动起动,
但要求root权限,或<I>setuid root</I>的<B>MPlayer</B>或者一个适当配置的内核。
      <BR>
      如果你使用2.4.19pre8或者其后的内核你能通过<CODE>/proc</CODE>文件系统为普通用户调整最大RTC频率。使用下列命令来允许普通用户使用RTC:
      <P>
        <CODE>echo 1024 > /proc/sys/dev/rtc/max-user-freq</CODE>
      </P>
      如果你没有这么新的内核,你也可以修改<CODE>drivers/char/rtc.c</CODE>中的一行并且重新编译你的内核。找到下面这一段
      <PRE>
	 * We don't really want Joe User enabling more
	 * than 64Hz of interrupts on a multi-user machine.
	 */
	if ((rtc_freq > 64) && (!capable(CAP_SYS_RESOURCE)))
      </PRE>
      把64改成1024。当然你应该确实明白你做了什么。
      <BR>
      你能在状态栏上看到新的计时器的效果。
      <BR>
      一些使用speedstep功能CPU的笔记本的BIOS的电源管理不能很好的与RTC协同工作。音频和视频可能会不同步。在给你的笔记本加电之前将外部电源接上似乎会有帮助。
你总能用<CODE>-nortc</CODE>选项关闭RTC支持。一些硬件连接器(在ALi1541主板上使用非DMA的DVD光驱上可以证明)RTC定时器的使用会造成跳跃的playback。
在这些情况下,推荐使用下列的方法。</LI>
    <LI><B>第三个定时器代码</B>可以用<CODE>-softsleep</CODE>选项打开。它有RTC的效果,但是它不使用RTC。另一方面,它要使用更多的CPU。</LI>
  </UL>
</LI>
</UL>

注意:<B>永远不要将setuid root的MPlayer安装在多用户系统上!</B>这显然会让任何人得到root权限。


<H1><A NAME="features">2. 特性</A></H1>


<H2><A NAME="formats">2.1</A> <A HREF="formats.html">支持格式</A></H2>


<H2><A NAME="codecs">2.2</A> <A HREF="codecs.html">支持的codecs</A></H2>


<H2><A NAME="output">2.3</A > <A HREF="video.html">视频</A>与<A HREF="sound.html">音频</A>输出模式</H2>


<H2><A NAME="encoding">2.4</A> <A HREF="encoding.html">MEncoder -- 全功能编码器</A></H2>


<H2><A NAME="tv"><B>2.5 电视输入</B></A></H2>


<P>这段将要如何能够<B>使用V4L兼容的电视选台器观看与截取</B>。</P>

<P><B>这些代码目前没有继续开发!不要指望它不经过修改或实验就能正常工作!</B></P>


<H3><A NAME="tv_compilation">2.5.1 编译</A></H3>

<OL>
  <LI>首先,你必须重新编译。<CODE>./configure</CODE>将自动检测v4l的内核头文件和<CODE>/dev/video*</CODE>
  输入的存在。如果他们存在,电视支持将被编译(查看<CODE>./configure</CODE>的输出)。</LI>
  <LI>用另一个Linux中的电视软件确保你的调音器工作,例如xawtv。</LI>
</OL>

<BLOCKQUOTE>
  <B>提示</B><BR>
  颜色是混乱的吗?那么,你的选台器不能在YV12颜色格式中显示。尝试一下I420(<CODE>-vc rawi420</CODE>)或者YUY2,
UYVY,RGB32 (<CODE>-vo sdl</CODE>)颜色格式。你可以用<CODE>outfmt=YV12</CODE>选项来指定它,参见下面。</P>
</BLOCKQUOTE>


<H3><A NAME="tv_options">2.5.2 可用的选项</A></H3>

<DL>
  <DT><CODE>on</CODE></DT>
  <DD>使用电视输入。</DD>

  <DT><CODE>noaudio</CODE></DT>
  <DD>没有声音,谢谢。</DD>

  <DT><CODE>driver</CODE></DT>
  <DD><B>dummy</B> -- 空电视输入:)仅仅用于测试,产生伪输入。<BR>
    <B>v4l</B> -- 用标准的V4L接口(缺省为<CODE>/dev/video0</CODE>)捕捉图象。</DD>
  
  <DT><CODE>device</CODE></DT>
  <DD>指定缺省的<CODE>/dev/video0</CODE>之外的设备。</DD>

  <DT><CODE>input</CODE></DT>
  <DD>指定电视选台器输入中你希望截取的输入(比如<B>电视</B>,<B>s-video</B>,<B>composite</B>,...)<BR>
    在初始化时会显示可用的选项。</DD>

  <DT><CODE>freq</CODE></DT>
  <DD>把选台器设置到指定的频率(例如<B>511.250</B>)。</DD>

  <DT><CODE>outfmt</CODE></DT>
  <DD>规定选台器把图象传送到我们时应该使用的输出格式(<B>rgb32</B>,<B>rgb24</B>,<B>yv12</B>,<B>uyvy</B>,
<B>i420</B>(对于i420你必须使用<CODE>-vc rawi420</CODE>参数,否则会有fourcc冲突))。</DD>
  
  <DT><CODE>width</CODE></DT>
  <DD>输出窗口的宽度,以象素为单位</DD>

  <DT><CODE>height</CODE></DT>
  <DD>输出窗口的高度,以象素为单位的</DD>

  <DT><CODE>norm</CODE></DT>
  <DD>可用选项:PAL,SECAM,NTSC</DD>

  <DT><CODE>channel</CODE></DT>
  <DD>把选台器设置到指定的频道。</DD>

  <DT><CODE>chanlist</CODE></DT>
  <DD>可用选项:<CODE>us-bcast, us-cable, europe-west, europe-east, 等等</CODE></DD>
</DL>

<H3><A NAME="tv_keyboard">2.5.3 键盘控制</A></H3>

<TABLE BORDER=0>
  <TR><TD>&nbsp;&nbsp;</TD><TD>h/k</TD><TD>&nbsp;&nbsp;</TD><TD>选择前一个/下一个频道</TD></TR>
  <TR><TD></TD><TD>n</TD><TD></TD><TD>切换制式</TD></TR>
  <TR><TD></TD><TD>b</TD><TD></TD><TD>切换chanlist</TD></TR>
</TABLE>

<H3><A NAME="tv_examples"><B>2.5.4 例子</B></A></H3>

<P>伪输出,到AAlib:)<BR>
  <CODE>&nbsp;&nbsp;&nbsp;&nbsp;mplayer -tv on:driver=dummy:width=640:height=480 -vo aa</CODE><BR>
  <BR>
  从标准的V4L输入<BR>
  <CODE>&nbsp;&nbsp;&nbsp;&nbsp;mplayer -tv on:driver=v4l:width=640:height=480:outfmt=i420 -vc rawi420 -vo xv</CODE><BR></P>

<P><B>注:</B><BR>
  如果你的电视卡有一个有外部音频设备而只出现黑屏,但xawtv或类似的东西对输入的信号却工作正常,那么试试<CODE>-noaudio</CODE>选项。对于上述的例子命令是:<BR>

<P><B><A NAME="usage">3. 用法</A></B></P>

<P><B><A NAME="command_line">3.1 命令行</A></B></P>

<P><B>MPlayer</B>使用一个复杂playtree格式。它包括写在最前面作为全局设置的选项(例如<CODE>mplayer -vfm 5</CODE>),和写在文件名之后,
仅仅作用于给定的文件名或URL或whatever的选项(例如<CODE>mplayer -vfm 5 movie1.avi movie2.avi -vfm 4</CODE>)。<BR>
你能使用{和}给文件名与URL分组。它对-loop选项很有用:<CODE>mplayer { 1.avi -loop 2 2.avi } -loop 3</CODE>命令将按以下顺序播放文件:
1 1 2 1 1 2 1 1 2<BR>
</P>

<TABLE BORDER=0>
<TR><TD>&nbsp;&nbsp;</TD><TD>单一文件</TD><TD>&nbsp;&nbsp;</TD><TD><CODE>mplayer [options] [path/]filename</CODE></TD></TR>
  <TR><TD></TD><TD>多个文件</TD><TD></TD><TD><CODE>mplayer [default options] [path/]filename1 [options for filename1] filename2 [options for filename2] ...</CODE></TD></TR>
  <TR><TD></TD><TD>VCD</TD><TD></TD><TD><CODE>mplayer [options] -vcd trackno [-cdrom-device /dev/cdrom]</CODE></TD></TR>
  <TR><TD></TD><TD>DVD</TD><TD></TD><TD><CODE>mplayer [options] -dvd titleno [-dvd-device /dev/dvd]</CODE></TD></TR>
  <TR><TD></TD><TD>网址</TD><TD></TD><TD><CODE>mplayer [options] http://site.com/file.asf (也可以使用playlist)</CODE></TD></TR>
</TABLE>

<P>
  最新版本的MPlayer也可以象Xine一样接受URL风格的VCD和DVD轨道,就做: <CODE>mplayer dvd://1</CODE>或者<CODE>mplayer vcd://1</CODE></P>

<PRE>
  mplayer -vo x11 /mnt/Films/Contact/contact2.mpg
  mplayer -vcd 2
  mplayer -afm 3 /mnt/DVDtrailers/alien4.vob
  mplayer -dvd 1 -dvd-device /dev/hdc
  mplayer -abs 65536 -delay -0.4 -nobps ~/movies/test.avi
</PRE>

<H2><A NAME="control">3.2 控制</A></H2>

<P><B>MPlayer</B>有一个完全可配置的,命令驱动的控制层使你可以键盘,鼠标,游戏杆或遥控器(使用LIRC)控制<B>MPlayer</B>。</P>

<H3><A NAME="default_controls">3.2.1 默认控制方法</A></H3>

<H4>从终端的键盘控制</H4>

<TABLE BORDER=0>
  <TR><TD>&nbsp;&nbsp;</TD><TD>&lt;-  or  -&gt;</TD><TD>&nbsp;&nbsp;</TD><TD>快进/后退10秒</TD></TR>
  <TR><TD></TD><TD>up or down</TD><TD></TD><TD>快进/后退1分钟</TD></TR>
  <TR><TD></TD><TD>pgup/pgdown</TD><TD></TD><TD>快进/后退10分钟</TD></TR>
  <TR><TD></TD><TD>&lt; or &gt;</TD><TD></TD><TD>在播放列表中选下一个/上一个</TD></TR>
  <TR><TD></TD><TD>p or SPACE</TD><TD></TD><TD>暂停(按任意键)</TD></TR>
  <TR><TD></TD><TD>q or ESC</TD><TD></TD><TD>停止播放并退出</TD></TR>
  <TR><TD></TD><TD>+ or -</TD><TD></TD><TD>调整音频延迟+/-0.1秒</TD></TR>
  <TR><TD></TD><TD>/ or *</TD><TD></TD><TD>减少/增加音量</TD></TR>
  <TR><TD></TD><TD>f</TD><TD></TD><TD>切换全屏</TD></TR>
  <TR><TD></TD><TD>o</TD><TD></TD><TD>切换OSD: none/seek/seek+timer</TD></TR>
  <TR><TD></TD><TD>z or x</TD><TD></TD><TD>调整字幕延迟+/-0.1秒</TD></TR>
  <TR><TD></TD><TD>r or t</TD><TD></TD><TD>调整字幕位置</TD></TR>
  <TR><TD></TD><TD>HOME or END</TD><TD></TD><TD>选择上一级列表中的下一个/上一个playtree命令</TD></TR>
  <TR><TD></TD><TD>INSERT or DELETE</TD><TD></TD><TD>下一个/上一个替代source(只用于asx播放列表)</TD></TR>
  <TR><TD COLSPAN=4><P><I>(下列的控制键只有当使用<CODE>-vo xv</CODE>时是有效的)</I></P></TD></TR>
  <TR><TD></TD><TD>1 or 2</TD><TD></TD><TD>调整对比</TD></TR>
  <TR><TD></TD><TD>3 or 4</TD><TD></TD><TD>调整亮度</TD></TR>
  <TR><TD></TD><TD>5 or 6</TD><TD></TD><TD>调整hue</TD></TR>
  <TR><TD></TD><TD>7 or 8</TD><TD></TD><TD>调整饱和</TD></TR>
</TABLE>

<H4>GUI键盘控制</H4>

<TABLE BORDER=0>
  <TR><TD>&nbsp;&nbsp;</TD><TD>, and .</TD><TD>&nbsp;&nbsp;</TD><TD>上一个/下一个文件</TD></TR>
  <TR><TD></TD><TD>gray - or +</TD><TD></TD><TD>减少/增加音量</TD></TR>
  <TR><TD></TD><TD>enter</TD><TD></TD><TD>开始播放</TD></TR>
  <TR><TD></TD><TD>space</TD><TD></TD><TD>暂停</TD></TR>
  <TR><TD></TD><TD>s</TD><TD></TD><TD>停止</TD></TR>
  <TR><TD></TD><TD>a</TD><TD></TD><TD>about</TD></TR>
  <TR><TD></TD><TD>l</TD><TD></TD><TD>打开文件</TD></TR>
  <TR><TD></TD><TD>b</TD><TD></TD><TD>skin browser</TD></TR>
  <TR><TD></TD><TD>e</TD><TD></TD><TD>equalizer对话框</TD></TR>
  <TR><TD></TD><TD>p</TD><TD></TD><TD>playlist对话框</TD></TR>
  <TR><TD></TD><TD>f</TD><TD></TD><TD>切换全屏</TD></TR>
  <TR><TD></TD><TD>m</TD><TD></TD><TD>切换静音</TD>
</TABLE>

<H4>TV输入的键盘控制</H4>

<TABLE BORDER=0>
  <TR><TD>&nbsp;&nbsp;</TD><TD>h  or  l</TD><TD>&nbsp;&nbsp;</TD><TD>选择上一个/下一个频道</TD></TR>
  <TR><TD></TD><TD>n</TD><TD></TD><TD>切换制式</TD></TR>
  <TR><TD></TD><TD>b</TD><TD></TD><TD>切换频道列表</TD></TR>
</TABLE>

<H3><A NAME="controls_configuration">3.2.2 配置控制方法</A></H3>

<P><B>MPlayer</B>允许你使用一个简单的config文件把任何键或按钮绑定为任何一个<B>MPlayer</B>控制命令。
句法是键名后加命令。缺省config文件是<CODE>$HOME/.mplayer/input.conf</CODE>但是<CODE>-input</CODE> conf
选项可以重新指定(相对路径是相对于<CODE>$HOME/.mplayer</CODE>的)。

<P>例子:</P>

<PRE>
##
## MPlayer input control file
##

RIGHT seek +10
LEFT seek -10
- audio_delay 0.100
+ audio_delay -0.100
q quit
&gt; pt_step 1
&lt; pt_step -1
ENTER pt_step 1 1
</PRE>

<H4><A NAME="key_names">3.2.2.1 键名</A></H4>

<P>运行<CODE>mplayer -input keylist</CODE>你将得到一个完整的列表</P>

<H4>键盘:</H4>

<UL>
  <LI>Any printable character</LI>
  <LI>SPACE</LI>
  <LI>ENTER</LI>
  <LI>TAB</LI>
  <LI>CTRL</LI>
  <LI>BS</LI>
  <LI>DEL</LI>
  <LI>INS</LI>
  <LI>HOME</LI>
  <LI>END</LI>
  <LI>PGUP</LI>
  <LI>PGDWN</LI>
  <LI>ESC</LI>
  <LI>RIGHT</LI>
  <LI>LEFT</LI>
  <LI>UP</LI>
  <LI>DOWN</LI>
</UL>

<H4>鼠标(只在X下支持):</H4>

<UL>
  <LI>MOUSE_BTN0 (左键)</LI>
  <LI>MOUSE_BTN1 (右键)</LI>
  <LI>MOUSE_BTN2 (中键)</LI>
  <LI>MOUSE_BTN3 (滚轮)</LI>
  <LI>MOUSE_BTN4 (滚轮)</LI>
  <LI>...</LI>
  <LI>MOUSE_BTN9</LI>
</UL>

<H4>游戏杆(编译时必须打开对游戏杆的支持)</H4>

<UL>
  <LI>JOY_RIGHT or JOY_AXIS0_PLUS</LI>
  <LI>JOY_LEFT or JOY_AXIS0_MINUS</LI>
  <LI>JOY_UP or JOY_AXIS1_MINUS</LI>
  <LI>JOY_DOWN or JOY_AXIS1_PLUS</LI>
  <LI>JOY_AXIS2_PLUS</LI>
  <LI>JOY_AXIS2_MINUS</LI>
  <LI>....</LI>
  <LI>JOY_AXIS9_PLUS</LI>
  <LI>JOY_AXIS9_MINUS</LI>
</UL>


<H4><A NAME="commands">3.2.2.2 控制命令</A></H4>

<P>通过运行"mplayer -input cmdlist"你可以得到一个完整的已知命令的列表</P>
<UL>
  <LI><B>seek</B> (int) val [(int) type=0]
    <P>搜索电影中的某处<BR>
    Type 0 是以+/-val秒搜索。<BR>
    Type 1 是以电影的val%搜索</P></LI>
  <LI><B>audio_delay</B> (float) val
    <P>音频延迟val秒</P></LI>
  <LI><B>quit</B>
    <P>退出<B>MPlayer</B></P></LI>
  <LI><B>pause</B>
    <P>暂停/继续playback</P></LI>
  <LI><B>grap_frames</B>
    <P>有人知道?</P></LI>
  <LI><B>pt_step</B> (int) val [(int) force=0]
    <P>选择playtree中的下一个/上一个输入。Val的符号决定方向.<BR>
    如果在要求的方向上没有其他可用entry,除非force非0,否则不会做任何动作。</P></LI>
  <LI><B>pt_up_step</B> (int) val [(int) force=0]
    <P>类似pt_step但它跳转到上一级列表的下一个/上一个。用来跳出playtree的内部循环。</P></LI>
  <LI><B>alt_src_step</B> (int) val
    <P>当一种以上的source可用时选择下一个/上一个(只有asx播放列表支持).</P></LI>
  <LI><B>sub_delay</B> (float) val [(int) abs=0]
    <P>字幕延迟+/-val秒或当abs非0时跳到val秒。</P></LI>
  <LI><B>osd</B> [(int) level=-1]
    <P>切换osd模式或当level>0时把它设为level。</P></LI>
  <LI><B>volume</B> (int) dir
    <P>增加/减少音量</P></LI>
  <LI><B>contrast</B> (int) val [(int) abs=0]</LI>
  <LI><B>brightness</B> (int) val [(int) abs=0]</LI>
  <LI><B>hue</B> (int) val [(int) abs=0]</LI>
  <LI><B>saturation</B> (int) val [(int) abs=0]
    <P>设置/调整视频参数。Val范围从-100到100。</P></LI>
  <LI><B>frame_drop</B> [(int) type=-1]
    <P>切换/设置frame dropping模式。</P></LI>
  <LI><B>sub_pos</B> (int) val
    <P>调整字幕位置。</P></LI>
  <LI><B>vo_fullscreen</B>
    <P>切换到全屏</P></LI>
  <LI><B>tv_step_channel</B> (int) dir
    <P>选择下一个/上一个tv频道。</P></LI>
  <LI><B>tv_step_norm</B>
    <P>切换TV制式。</P></LI>
  <LI><B>tv_step_chanlist</B>
    <P>切换频道列表。</P></LI>
  <LI><B>gui_loadfile</B></LI>
  <LI><B>gui_loadsubtitle</B></LI>
  <LI><B>gui_about</B></LI>
  <LI><B>gui_play</B></LI>
  <LI><B>gui_stop</B></LI>
  <LI><B>gui_playlist</B></LI>
  <LI><B>gui_preferences</B></LI>
  <LI><B>gui_skinbrowser</B>
    <P>GUI的功能</P></LI>
</UL>

<H3><A NAME="lirc">3.2.3 用LIRC控制</A></H3>

<P>Linux红外遥控 -- 使用一个容易制作的home-brewn红外线接收器,(几乎)任意一个的遥控器然后就可以用它来控制你的Linux box了!
更多内容见<A HREF="http://www.lirc.org">www.lirc.org</A>。</P>

<P>如果你已安装了lirc-package,configure将自动检测到它。如果一切顺利,<B>MPlayer</B>在启动时将显示
"Setting up lirc support..."之类的信息。如果发生错误它将会显示。如果它不显示关于LIRC的任何信息则对LIRC的支持没有编译。就是这样:-)</P>

<P><B>MPlayer</B>的程序名是 -- 嗯,让我想想看 -- 'mplayer'。你能使用任何mplayer命令甚至传递超过一种命令只要用\n分开他们。
不要忘记当有意义的时候(搜索,音量等等),在.lircrc中开启repeat标记。这是我的.lircrc的摘录:</P>

<PRE>
begin
     button = VOLUME_PLUS
     prog = mplayer
     config = volume 1
     repeat = 1
end

begin
    button = VOLUME_MINUS
    prog = mplayer
    config = volume -1
    repeat = 1
end

begin
    button = CD_PLAY
    prog = mplayer
    config = pause
end

begin
    button = CD_STOP
    prog = mplayer
    config = seek 0 1\npause
end
</PRE>

<P>如果你不喜欢lirc-config文件的标准位置(~/.lircrc)使用-lircconf &lt;filename&gt;选项指定别的文件。</P>


<H3><A NAME="slave">3.2.4 Slave方式</A></H3>

<P>Slave方式把允许你为<B>MPlayer</B>建立简单的frontend。当它开启(用<CODE>-slave</CODE>选项)时<B>MPlayer</B>
将从stdin读取用new line(\n)分开的命令。</P>


<H3><A NAME="streaming">3.3 网络或管道的流媒体</A></H3>

<P><B>MPlayer</B>支持通过HTTP或者MMS协议播放网络上的文件。</P>

<P>只要直接把URL地址加到命令行中就可以进行播放。<B>MPlayer</B>也支持http_proxy环境变量,
并且在可能的情况下使用代理。也可以强行指定使用代理:</P>

<P><CODE>mplayer http_proxy://proxy.micorsops.com:3128/http://micorsops.com:80/stream.asf</CODE></P>

<P><B>MPlayer</B>能从stdin(不称为管道)输入。例如这样能从FTP上播放:</P>
<P><CODE>&nbsp;&nbsp;wget ftp://micorsops.com/something.avi -O - | mplayer -</CODE></P>

<P>注:当使用网络播放功能时推荐打开cache功能:</P>

<P><CODE>&nbsp;&nbsp;wget ftp://micorsops.com/something.avi -O - | mplayer -cache 8192 -</CODE></P>


<H1><A NAME="faq"></A>4. <A HREF="faq.html">FAQ部分</A></H1>


<H1><A NAME="cd/dvd"></A>5. <A HREF="cd-dvd.html">CD与DVD部分</A></H1>


<H1><A NAME="ports">6. 移植</A></H1>


<H2><A NAME="debian">6.1 Debian安装包的制作</A></H2>

<P>为了制作安装包,下载cvs版本,或者.tgz和并把它解压缩,然后进入程序的目录:</P>

<PRE>
    cd main
    fakeroot debian/rules binary
</PRE>

<P>(... mplayer检测软硬件, 编译自己然后.. )
  dpkg-deb: building package 'mplayer' in '../mplayer_0.90-1_i386.deb'.</P>

<P>现在,成为root,然后:</P>

<PRE>
    dpkg -i ../mplayer_0.90-1_i386.deb as root.
</PRE>

<P>你将会看到下面这样的信息:</P>

<PRE>
	eyck@incubus:/src/main$ sudo dpkg -i ../mplayer_0.90-1_i386.deb
	Password:
	(Reading database ... 26946 files and directories currently installed.)
	Preparing to replace mplayer 0.50-1 (using ../mplayer_0.90-1_i386.deb)
	Unpacking replacement mplayer ...
	Setting up mplayer (0.90-1) ...
</PRE>


<H2><A NAME="freebsd">6.2 FreeBSD </A></H2>

<P>为编译它你需要GNU make(gmake,/usr/ports/devel/gmake),本地的BSD make不能正常工作。</P>

<P>为了运行<B>MPlayer</B>你将需要打开"options USER_LDT"重新编译内核(除非你使用-CURRENT,这一项在其中是默认的)。
如果你有支持SSE的CPU也用"options CPU_ENABLE_SSE"选项来使用它(需要FreeBSD-STABLE,或者使用内核补丁)。</P>

<P>如果<B>MPlayer</B>报告"CD-ROM Device '/dev/cdrom' not found!",那么请做一个符号链接:
<CODE>ln -s /dev/(your_cdrom_device) /dev/cdrom</CODE></P>

<P>目前对FreeBSD没有DVD支持。</P>

<H2><A NAME="solaris">6.3 Solaris</A></H2>

<P>MPlayer在Solaris 2.6或者更新的系统上应该能够正常运行。</P>

<P>AVI文件的回放在Solaris x86上的效果最好,因为在x86平台上你可以选择使用win32 codecs,或者使用MMX/MMX2/3DNow等指令集
来播放MP3/DivX/DVD或者其他什么。在Solaris SPARC上,你将发现许多AVI文件的视频和/或者音频playback无法正常播放,
因为它们的视频与音频codecs使用Win32 DLL的不可用的。然而,<B>DivX/OpenDivX</B>电影应该可以使用libavcodec播放。</P>

<P>在<B>UltraSPARC</B>上,<B>MPlayer</B>利用他们的<B>VIS</B>扩展(相当于MMX)的优势,目前只应用于<I>libmpeg2</I>,
<I>libvo</I>以及<I>libavcodec </I>,但mp3lib没有。你能在400MHz CPU上观看VOB文件。你需要安装<A
HREF="http://www.sun.com/sparc/vis/mediaLib.html">mLib</A>。</P>

<P>为编译它你需要GNU make(gmake,/opt/sfw/gmake),native的Solaris make不能正常工作。你用Solaris的make代替GNU make时的典型的错误信息为:</P>

<PRE>
   % /usr/ccs/bin/make
   make: Fatal error in reader: Makefile, line 25: Unexpected end of line seen
</PRE>

<P>在Solaris SPARC上,你需要GNU C/C++编译器;GNU C/C++编译器是否设置使用GNU汇编程序没有什么关系。</P>

<P>在Solaris x86上,你需要GNU汇编程序和GNU C/C++编译器,设置使用GNU的汇编程序!在x86平台上的mplayer代码大量使用MMX,SSE和3DNOW!
指令集,使用Sun的汇编程序<CODE>/usr/ccs/bin/as</CODE>不能编译通过。</P>

<P>configure脚本将试图查找你的"gcc"命令使用的汇编程序(如果自动检测失败,使用"--as=/whereever/you/have/installed/gnu-as"
选项告诉configure脚本你的系统的GNU的"as"在哪里)。</P>

<P>在Solaris x86系统上使用没有GNU汇编程序的GCC时configure的出错信息为:</P>

<PRE>
   % configure
   ...
   Checking assembler (/usr/ccs/bin/as) ... , failed
   Please upgrade(downgrade) binutils to 2.10.1...
</PRE>

<P>(解决方法:安装并且使用配置了"--with-as=gas"的gcc)</P>

<P>当不使用GNU as的GNU C编译程序时的典型出错信息是:</P>

<PRE>
   % gmake
   ...
   gcc -c -Iloader -Ilibvo -O4 -march=i686 -mcpu=i686 -pipe -ffast-math
	-fomit-frame-pointer  -I/usr/local/include   -o mplayer.o mplayer.c
   Assembler: mplayer.c
   "(stdin)", line 3567 : Illegal mnemonic
   "(stdin)", line 3567 : Syntax error
   ... more "Illegal mnemonic" and "Syntax error" errors ...
</PRE>

<P>关于DVD支持你必须安装打过补丁的libcss。补丁在:
<A HREF="http://www.tools.de/solaris/mplayer/">http://www.tools.de/solaris/mplayer/</A>。</P>

<P>因为Solaris8 x86的两个bug,不能可靠地播放容量>4GB的DVD:</P>

<UL>
  <LI>The sd(7D) driver on Solaris 8 x86 driver has bug when accessing a
    disk block >4GB on a device using a logical blocksize != DEV_BSIZE
    (i.e. CD-ROM and DVD media).  Due to a 32bit int overflow, a disk
    address modulo 4GB is accessed.
    (<A HREF="http://groups.yahoo.com/group/solarisonintel/message/22516">http://groups.yahoo.com/group/solarisonintel/message/22516</A>)
  </LI>
  <LI>The similar bug is present in the hsfs(7FS) filesystem code (aka
    ISO9660), hsfs currently does not support partitions/disks >4GB,
    all data is accessed modulo 4GB
    (<A HREF="http://groups.yahoo.com/group/solarisonintel/message/22592">http://groups.yahoo.com/group/solarisonintel/message/22592</A>)
  </LI>
</UL>

<P>在使用UltraSPARC CPU的Solaris上,对有些耗时的操作使用CPU的VIS指令能获得额外的速度提升。
在MPlayer中通过Sun的<A HREF="http://www.sun.com/sparc/vis/mediaLib.html">mediaLib</A>中的函数使用VIS加速功能。</P>

<P>mediaLib的VIS加速功能用于mpeg2视频解码和视频输出驱动的颜色转换。</P>


<H2><A NAME="strongarm">6.4 StrongARM</A></H2>

<P>据报告<B>MPlayer</B>可以在StrongARM上编译。使用下列命令:</P>

<PRE>
  ./configure --target=arm-linux --disable-css --with-x11libdir=/usr/arm/lib
	      --with-x11incdir=/usr/arm/lib --disable-gcc-checking
</PRE>


<H2><A NAME="sgi">6.5 Silicon Graphics / IRIX</A></H2>

<P>据称可以工作正常。你可能必须使用<I>SGI</I>ao驱动。谁有较确切的信息?</P>


<H2><A NAME="qnx">6.6 QNX</A></H2>

<P>能工作。你需要下载SDL for QNX并安装它。然后使用<CODE>-vo sdl:photon</CODE>和<CODE>-ao sdl:nto</CODE>
选项运行<B>MPlayer</B>,速度应该很快。</P>

<P><CODE>-vo x11</CODE>输出将比Linux更加缓慢,因为QNX只有一个十分缓慢的的X<I>仿真</I>。使用SDL。</P>


<H2><A NAME="openbsd">6.7 OpenBSD</A></H2>

<P>为编译它你需要GNU make(gmake,/usr/port/devel/gmake),native的BSD make不能正常工作,还要一个最近的binutils(包括objcopy)。</P>

<P>因为gas的版本不同(relocation vs mmx)的限制,你需要分两步编译: 首先确保non-native的汇编程序当前在PATH中并运行<CODE>gmake -k</CODE>,
然后在确保使用native版本情况下运行<CODE>gmake</CODE>。</P>

<P>要想<B>MPlayer</B>使用Win32 DLL你要用"<CODE>option USER_LDT</CODE>"重新编译内核。</P>

<P>如果<B>MPlayer</B>报告找不到'/dev/cdrom'或'/dev/dvd',请做一个符号链接,例如<CODE>ln -s /dev/rcd0c /dev/dvd</CODE></P>

<P>我们中不那么hardcore的黑客可以想要使用移植版本(/usr/port/x11/mplayer)。</P>

<H2><A NAME="cygwin"></A>6.8 Cygwin<H2>

<P>你必须到<B>MPlayer</B>的目录下,拷贝或者symlink<CODE>etc/cygwin-inttypes.h</CODE>到<CODE>/usr/include/inttypes.h</CODE>来使
<B>MPlayer</B>顺利编译。否则,它将报告找不到<CODE>intypes.h</CODE>。</P>


<H1><A NAME="mailing_lists">附录A -- 邮件列表</A></H1>

<P>有一些关于<B>MPlayer</B>的公开的邮件列表。用户能在下列的地址完成订阅:</P>

<UL>
  <LI>MPlayer开发者列表:
    <A HREF="http://mplayerhq.hu/mailman/listinfo/mplayer-dev-eng">http://mplayerhq.hu/mailman/listinfo/mplayer-dev-eng</A><BR>
<P>这个列表是关于mplayer开发的! 谈论接口与API的变化,新的库,代码优化,configure修改,另外补丁也应发送到这里。不要在这里发送bug报告,
用户问题,特性要求,吵架!这张列表应该保持低交通流量。</P></LI>
  <LI>MPlayer用户列表:
    <A HREF="http://mplayerhq.hu/mailman/listinfo/mplayer-users">http://mplayerhq.hu/mailman/listinfo/mplayer-users</A>
    <UL>
      <LI>在这里发送bug报告,(在阅读了<A HREF="#known_bugs">已知bug</A>一节和<A HREF="bugreports.html">报告bug部分</A>之后)</LI>
      <LI>在这里发送特性要求(在阅读整个文件之后)</LI>
      <LI>在这里发送用户问题(在阅读整个文件之后)</LI>
    </UL>
  </LI>
  <LI>MPlayer匈牙利用户列表:
    <A HREF="http://mplayerhq.hu/mailman/listinfo/mplayer-felhasznalok">http://mplayerhq.hu/mailman/listinfo/mplayer-felhasznalok</A>
    <UL>
      <LI>匈牙利语的列表</LI>
      <LI>主题?让我们看看...迄今为止主要是吵架和RTFM问题:(</LI>
    </UL>
  </LI>
  <LI>MPlayer &amp; Matrox G200/G400/G450/G550用户:<BR>
    <A HREF="http://mplayerhq.hu/mailman/listinfo/mplayer-matrox">http://mplayerhq.hu/mailman/listinfo/mplayer-matrox</A>
    在这里发送Matrox相关的问题
    <UL>
      <LI>关于mga-vid的事情</LI>
      <LI>Matrox的官方的beta版驱动(对于X 4.x.x )</LI>
      <LI>还有关于matroxfb-TVout的东东。</LI>
    </UL>
  </LI>
  <LI>MPlayer &amp; DVB卡用户:
    <A HREF="http://mplayerhq.hu/mailman/listinfo/mplayer-dvb">http://mplayerhq.hu/mailman/listinfo/mplayer-dvb</A><BR>
    与被称为DVB的硬件译码器卡有关的事情。(不是DXR3!)</P>
  </LI>
  <LI>MPlayer CVS-log:
    <A HREF="http://mplayerhq.hu/mailman/listinfo/mplayer-cvslog">http://mplayerhq.hu/mailman/listinfo/mplayer-cvslog</A><BR>
    <P>在这里只能询问CVS的变化。(如果你不理解为什么要做这样的改动或者你有更好的修正或者你注意到在已经提交的补丁中可能存在的bug或问题)确定你要找的开发者阅读这张列表!</P>
  </LI>
  <LI>MPlayer Cygwin-porting list:
    <A HREF="http://mplayerhq.hu/mailman/listinfo/mplayer-cygwin">http://mplayerhq.hu/mailman/listinfo/mplayer-cygwin</A><BR>
    讨论MPlayer的Cygwin移植的邮件列表。
  </LI>
</UL>

<P><B>注意:</B>在列表上的语言必须是<B>英语</B>,除非另有明确说明。请不要使用其它语言发送信息!</P>

<P><B>注意:</B><A HREF="http://www.mplayerhq.hu/cgi-bin/htsearch">http://www.mplayerhq.hu/cgi-bin/htsearch</A>有可供检索的邮件列表文档。


<H1><A NAME="bug_reports">附录B</A> -- <A HREF="bugreports.html">如何报告bug</A></H1>

<H1><A NAME="known_bugs">附录C -- 已知bug</A></H1>

<P>特殊的系统或CPU相关的bug或问题:</P>
<UL>

<LI>P3上使用2.2.x内核出现SIGILL(signal 4):<BR>
  问题:2.2.x内核没有适当的(能正常工作的)SSE支持<BR>
  解决:把内核升级到2.4.x<BR>
  绕过方法:<CODE>./configure --disable-sse</CODE></LI>

<LI>一般的SIGILL(signal 4):<BR>
  问题:你在不同的机器中编译和运行mplayer(例如在P3上编译在Celeron上跑)<BR>
  解决:在你将使用的的机器上编译MPlayer!<BR>
  绕过方法:<CODE>./configure --disable-sse</CODE>等等选项</LI>

<LI>运行MEncoder时出现"Internal buffer inconsistency":<BR>
  问题:当用gcc 2.96或者3.x编译lame &lt; 3.90时的已知问题。<BR>
  解决:使用lame &gt; =3.90。<BR>
  绕过方法:以gcc 2.95.x编译lame并且卸载任何已经安装的lame包,他们可能是用gcc 2.96编译的。</LI>

<LI>在PPC上MP2/MP3的声音混乱:<BR>
  问题:PPC平台上的已知的GCC误编译的bug,目前没有修正。<BR>
  绕过方法:使用FFmpeg的(较慢的)MP1/MP2/MP3译码器(<CODE>-ac ffmpeg</CODE>)</LI>

<LI>当缩放+编码时,libmpeg2的sig11:<BR>
  问题: 已知的GCC 2.95.2的MMXbug,升级到2.95.3。</LI>
</UL>

<P>各种各样A-V同步和其它音频问题:</P>

一般的音频延迟或者急跳声音(对所有或者大部分文件存在):
<UL>
  <LI>最普遍的: buggy的音频驱动! -- 试试使用不同的驱动,用-ao oss试试ALSA 0.9的OSS仿真,也试试-ao sdl,有时它有帮助。
如果你的文件用-nosound播放正常,你就能确定这是声卡(驱动)的问题。</LI>
  <LI>音频缓冲的问题(缓冲大小检测错误)<BR>
  绕过方法:mplayer -abs选项</LI>
  <LI>采样率的问题-- 也许你的声卡不支持你的文件使用的采样率 -- 试试 resampling插件(- aop)</LI>
  <LI>机器太慢(CPU或VGA)<BR>
  用-vo null试试看,如果它播放正常,那么你的VGA显卡/驱动太慢了<BR>
  绕过方法:买一块更快的显卡或阅读这篇文档关于如何加速的内容<BR>
  也试试-framedrop</LI>
</UL>

特定的某一个或一些文件的音频延迟/不同步:
<UL>
  <LI>损坏的文件<BR>
    绕过方法:
    <UL>
      <LI>-ni或-nobps选项(对于非交错的或坏的文件)<BR>
      以及/或者</LI>
      <LI>-mc 0(对带有糟糕的交错的VBR音频的文件是需要的)<BR>
      以及/或者</LI>
      <LI>-delay选项或者+/-键在播放时调整延迟时间</LI>
    </UL>
    如果没有一个方法有效,请upload这些文件,我们将检查(和修正)。
  </LI>
  <LI>你的声卡不支持48kHz playback<BR>
    绕过方法:买个更好的声卡...或者尝试减少10%的fps(对30fps的电影使用-fps 27)或者使用resampler插件</LI>
  <LI>机器太慢<BR>
    (如果A-V不是在0附近,状态行的最后一个数字不断增加)<BR>
    绕过方法:-framedrop</LI>
</UL>

完全没有声音:
<UL>
  <LI>你的文件使用不支持的音频codec<BR>
    绕过方法:读取文档并帮助我们添加对它的支持</LI>
</UL>

完全没有图画(全灰/全绿窗口):
<UL>
  <LI>你的文件使用不支持的视频codec<BR>
    绕过方法:读取文档并帮助我们添加对它的支持</LI>
  <LI>自动选择的codec不能解码文件,试试用-vc或-vfm选项使用其他译码器</LI>
  <LI>你试图用OpenDivX或XviD(-vc odivx)译码器播放DivX 3.x格式的文件 -- 安装Divx4Linux并且重新编译播放器</LI>
</UL>

<P>视频输出问题:</P>

<P>首先注意: -fs -vm和-zoom选项只是推荐,(目前)不是所有驱动器都支持。因此,如果它不起作用那不是bug。
只有少数驱动支持缩放,对x11或dga不要指望这个。</P>

<P>OSD与字幕闪烁:<BR>
-- x11驱动器: 抱歉,它现在不能被修正<BR>
-- xv驱动器: 使用-double选项</P>

<P>使用mga_vid时的绿色图象(-vo mga/-vo xmga):<BR>
-- mga-vid没有正确检测你的显卡的显存大小,使用mga_ram_size选项重新载入</P>


<H1><A NAME="skin">附录D</A> - <A HREF="skin-zh.html">MPlayer skin的格式</A></H1>



<H1><A NAME="flame_wars">附录E</A> - <A HREF="users_against_developers.html">开发者的痛楚</A></H1>

</BODY>
</HTML>