summaryrefslogtreecommitdiffstats
path: root/DOCS/zh/codecs.html
blob: 6c444d526a1c6f1e990d754d9cffcd984f012cfd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
<!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=gbk">
</HEAD>

<BODY>


<H2><A NAME="codecs">2.2 支持的编解码器</A></H2>


<H3><A NAME="video_codecs">2.2.1 视频编解码器</A></H3>

<P>检查<A HREF="http://www.mplayerhq.hu/DOCS/codecs-status.html">codec status table</A>来获得完整的,每日更新的
列表。大部分的编解码器可以从我们的主页下载,在我们的<A
HREF="http://www.mplayerhq.hu/MPlayer/releases/codecs/">编解码器页</A>可以找到他们。</P>


<P>所有之中最重要的:</P>
<UL>
  <LI><B>MPEG1</B>(<B>VCD</B>)和<B>MPEG2</B>(<B>DVD</B>)视频</LI>
  <LI><B>DivX ;-)</B>, <B>OpenDivX</B>, <B>DivX4</B>, <B>
    DivX5</B>, <B>M$ MPEG4</B> v1, v2和其它MPEG4格式的变种的本地解码器。</LI>
  <LI><B>Windows Media Video 7/8</B>(<B>WMV1/WMV2</B>)的本地解码器,以
及<B>Windows Media Video 9</B>(<B>WMV3</B>)的Win32 DLL解码,.wmv文件使用这两种格式</LI>
  <LI>本地的<B>Sorenson 1 (SVQ1)</B>解码器r</LI>
  <LI>Win32/QT的<B>Sorenson 3 (SVQ3)</B>解码器</LI>
  <LI><B>3ivx</B> v1, v2解码器</LI>
  <LI>Cinepak和<B>Intel Indeo</B>编解码器(3.1, 3.2, 4.1, 5.0)</LI>
  <LI><B>MJPEG</B>, AVID, VCR2, ASV2和其它硬件格式</LI>
  <LI>VIVO 1.0, 2.0, I263和其它<B>h263</B>(+)格式的变种</LI>
  <LI>FLI/FLC</LI>
  <LI>Libavcodec的<B>RealVideo 1.0</B>解码器,和使用RealPlayer库的<B>RealVideo 2.0</B>, <B>3.0</B>和<B>4.0</B>解码器</LI>
  <LI>HuffYUV的本地的解码器</LI>
  <LI>各种各样的老的简单的类似RLE的格式</LI>
</UL>

<P>如果你有一个Win32解码器没有列出来而且目前没有被支持,请读取<A HREF="#importing">解码器导入HOWTO</A>并且帮助我们添加对它的支持。</P>


<H4><A NAME="divx">2.2.1.1 DivX4与DivX5</A></H4>

<P>这部分包含关于<A HREF="http://www.projectmayo.com">Mayo工程</A>的DivX4和DivX5编解码器的信息,他们的第一个可用的alpha版本是
OpenDivX 4.0 alpha 47和48。 对它们的支持以前包括在MPlayer中,并且是默认编译的。 我们也使用其后处理代码来有选择地提高MPEG1/2电影的视觉质量。
现在我们使用我们自己的,对于所有文件类型。</P>

<P>这个解码器的新一代产品称为DivX4,它甚至能解码以声名狼籍的DivX编解码器制作的电影! 此外,它比本地的Win32 DivX DLL快得多比但是比libavcodec慢。
因此,<B>不鼓励</B>把它当解码器用。 然而,它对编码有用。 这个编解码器的缺点之一是它目前不开放源代码。</P>

<P>DivX4Linux有两种工作方式:</P>

<DL>
  <DT><CODE>-vc odivx</CODE></DT>
  <DD>以OpenDivX方式使用解码器。在这种情况下,它在自己的缓冲中产生YV12图象,然后由MPlayer通过libvo做色彩空间转换。(<B>推荐,快!</B>)</DD>

  <DT><CODE>-vc divx4</CODE></DT>
  <DD>使用解码器的色彩空间转换。以这种方式你也能使用YUY2与UYVY。(<B>很慢</B>)</DD>
</DL>

<P><CODE>-vc odivx</CODE>方式通常更快,因为它以YV12(planar YUV 4:2:0)格式传输图象数据,这样占用少的多的总线带宽。对于packed YUV方式
(YUY2,UYVY)使用<CODE>-vc divx4</CODE>方式。对于RGB模式两者速度是相同的,差别最多是你当前的色彩深度。</P>

<P><B>注意:</B>如果你的<CODE>-vo</CODE>驱动支持直接渲染,那么<CODE>-vc divx4</CODE>可以是很快甚至最快的解决方案。</P>

<P>Divx4/5的二进制编解码器库可以从<A HREF="http://avifile.sourceforge.net">avifile</A>或者<A
HREF="http://www.divx.com">divx.com</A>下载,解压之后,以root权限运行<CODE>./install.sh</CODE>,
另外别忘了把<CODE>/usr/local/lib</CODE>添加到你的<CODE>/etc/ld.so.conf</CODE>中然后运行<CODE>ldconfig</CODE>。</P>

<P>想得到老的OpenDivx的核心库的CVS版本可以这样做:</P>

<OL>
  <LI><CODE>cvs -d:pserver:anonymous@cvs.projectmayo.com:/cvsroot login</CODE></LI>
  <LI><CODE>cvs -d:pserver:anonymous@cvs.projectmayo.com:/cvsroot co divxcore</CODE></LI>
  <LI>核心库分为解码库和编码库必须分别编译。对于解码库,直接输入:
    <PRE>
    cd divxcore/decore/build/linux
    make
    cp libdivxdecore.so /usr/local/lib
    ln -s libdivxdecore.so /usr/local/lib/libdivxdecore.so.0
    cp ../../src/decore.h /usr/local/include
    </PRE>
    </LI>
  <LI>唉,对于编码库没有可用的Linux的Makefile,而且MMX优化代码只能用于Windows但你仍然可以用这个<A
HREF="ftp://ftp.mplayerhq.hu/MPlayer/contrib/divx-mf/Makefile">Makefile</A>来编译它
    <PRE>
    cd ../../../encore/build
    mkdir linux
    cd linux
    cp path/Makefile .
    make
    cp libdivxencore.so /usr/local/lib
    ln -s libdivxencore.so /usr/local/lib/libdivxencore.so.0
    cp ../../src/encore.h /usr/local/include
    </PRE>
    </LI>
</OL>

<P>如果正常安装了DivX4/DivX5,MPlayer会自动检测到它,只要正常编译就可以。如果没有检测到,你肯定没有正确安装或者配置它。</P>
<H4><A NAME="libavcodec">2.2.1.2 FFmpeg DivX/libavcodec</A></H4>

<P><A HREF="http://ffmpeg.sourceforge.net">FFmpeg</A>包括一组<B>开放源码的</B>解码器包,能够以兼容方式解码以
H263/MJPEG/RV10/DivX3/DivX4/DivX5/MP41/MP42/WMV1/WMV2/HuffYUV编码格式编码的视频流。它不仅能对其中一些进行编码,
同时提供比Win32解码器或DivX.com的DivX4/5库更高的速度!</P>

<P>它包含很多不错的解码器,尤其重要的是MPEG4的几个变种:DivX 3,DivX 4,DivX 5,Windows Media Video 7(WMV1)。另外一个有趣的东西是WMA解码器。</P>

<P>如果你使用MPlayer发行版,在你的源码包里就有libavcodec,正常编译即可。如果你使用CVS的MPlayer
那么你必须从FFmpeg的CVS树中提取libavcodec因为FFmpeg 0.4.5<B>不能</B>用于MPlayer。你应该这样来完成:</P>

<OL>
  <LI><CODE>cvs -d:pserver:anonymous@cvs.ffmpeg.sourceforge.net:/cvsroot/ffmpeg login</CODE></LI>
  <LI><CODE>cvs -d:pserver:anonymous@cvs.ffmpeg.sourceforge.net:/cvsroot/ffmpeg co ffmpeg</CODE></LI>
  <LI>把<CODE>libavcodec</CODE>目录从FFmpeg的源代码里移到MPlayer的CVS树的根目录下。看起来应该象这样:
    <P>&nbsp;&nbsp;&nbsp;&nbsp;<CODE>main/libavcodec</CODE></P>
    符号链接是<B>不</B>够的,你必须复制或移动它!</LI>
  <LI>编译。Configure应该在编译之前发现可能的问题。</LI>
</OL>

<P>用FFmpeg和我的Matrox G400,我甚至能在我的K6/2 500上无掉帧的观看最高分辨率的DivX电影。</P>


<H4><A NAME="xanim">2.2.1.3 XAnim解码器</A></H4>

<H4>前言</H4>
<P>
XAnim的二进制的解码器包里面有一份关于合法捆绑软件许可的声明,除其它限制之外,禁止用户用除XAnim外的任何程序使用其解码器。然而,
XAnim的作者到目前为止没有就解码器有关的问题对着任何人采取法律行动。
</P>

<H4>安装和使用</H4>

<P>MPlayer可以使用XAnim的解码器解码。按照下列指令来开启它:</P>

<OL>
  <LI>从<A HREF="http://xanim.va.pubnix.com">XAnim的站点</A>下载你想要的解码器。<B>3ivx</B>的解码器不在那里,而是在<A
  HREF="http://www.3ivx.com">3ivx的站点</A>。</LI>
  <LI><B>或者</B>从我们的<A
  HREF="http://www.mplayerhq.hu/MPlayer/releases/codecs/">编解码器页</A>下载编解码器包。
    </LI>
  <LI>使用<CODE>--with-xanimlibdir</CODE>选项来告诉configure在何处可以找到XAnim的解码器。缺省的话,它在
<CODE>/usr/local/lib/xanim/mods, /usr/lib/xanim/mods and /usr/lib/xanim</CODE>里寻找。或者你可以把<I>XANIM_MOD_DIR</I>环境变量
设置为XAnim解码器所在的目录。</LI>
  <LI>给文件改名/做符号链接,去掉代表平台构架之类的东西,让他们看起来像这样:<CODE>vid_cvid.xa, vid_h263.xa, vid_iv50.xa</CODE>。</LI>
</OL>

<P>XAnim属于视频编解码器族<CODE>xanim</CODE>,所以你可能需要使用<CODE>-vfm xanim</CODE>。</P>

<P>测试过的解码器包括:<B>Indeo 3.2</B>,<B>4.1</B>,<B>5.0</B>,<B>CVID</B>,<B>3ivX</B>,<B>h263</B>。</P>


<H4><A NAME="vivo_video">2.2.1.4 VIVO视频</A></H4>

<P>MPlayer能播放Vivo(1.0和2.0)视频。对于1.0的文件最适合的解码器是FFmpeg的H263解码器,你可以用<CODE>-vc ffh263</CODE>选项来
使用它。对于2.0个文件,使用<CODE>-vc vivo</CODE>命令来调用Win32 DLL。如果你没有添加命令行选项MPlayer将自动选择最好的解码器。</P>


<H4><A NAME="mpeg">2.2.1.5 MPEG 1/2视频</A></H4>

<P>MPEG1和MPEG2用本地的多平台的<B>libmpeg2</B>库解码,其源代码被包括在MPlayer中。对于buggy的MPEG 1/2视频文件我们
通过截获<CODE>Signal 11 (Segmentation fault)</CODE>,然后迅速再次初始化解码器,从失败的地方继续的方法来处理。这种
恢复技术会带来无法估量的速度损失。</P>


<H4><A NAME="ms_video1">2.2.1.6 MS Video1</A></H4>

<P>这是微软的又老又差的编码格式。过去它用<CODE>msvidc32.dll</CODE>的Win32解码器解码,现在我们有我们自己的开放源码的实现(由<A
HREF="mailto:melanson@pcisys.net">Mike Melanson</A>提供)。</P>


<H4><A NAME="cinepak">2.2.1.7 Cinepak CVID</A></H4>

<P>MPlayer默认将使用自己的开源的,多平台的Cinepak解码器(由<A
 HREF="mailto:timf@csse.monash.edu.au">Dr. Tim Ferguson</A>提供)。它支持YUV输出,所以只要硬件驱动允许它将使用硬件缩放。</P>


<H4><A NAME="realvideo">2.2.1.8 RealVideo</A></H4>

MPlayer支持所有版本的RealVideo的解码:

<UL>
  <LI>RealVideo 1.0 (fourcc RV10) -- 编/解码由<B>libavcodec</B>支持</LI>
  <LI>RealVideo 2.0,3.0,4.0(fourcc RV20,RV30,RV40) -- 解码由<B>RealPlayer库</B>支持</LI>
</UL>

<P>推荐下载并安装RealPlayer8或者RealONE,因为MPlayer能使用他们的库来解码RealVideo 2.0或者RealVideo 3.0的视频文件。
MPlayer的配置脚本应该会在一个完全安装的RealPlayer的标准位置找到它的库。如果它没找到,用<CODE>--with-reallibdir</CODE>
选项告诉configure到哪里去找。</P>

<P><B>注意:</B>RealPlayer库目前<B>只能用于x86平台上的Linux,FreeBSD,NetBSD和Cygwin,和Alpha以
及PowerPC(经过Linux/Alpha和Linux/PowerPC测试)平台。</B></P>

<H4><A NAME="xvid">2.2.1.9 XviD</A></H4>

<P><A HREF="http://www.xvid.org/"><B>XviD</B></A>OpenDivX编解码器的开发分支。故事发生在Mayo工程把OpenDivX变成封闭
源码的DivX4的时候,那些从事于OpenDivX的非Mayo工程的人们感到愤怒,于是开始了XviD。所以两个项目有相同的起源。</P>

<H4>优点</H4>

<UL>
  <LI>开放源码</LI>
  <LI>它的API与DivX4相同,所以加入对它的支持很容易</LI>
  <LI>支持2-pass编码</LI>
  <LI>不错的编码质量,DivX4更快的速度(编译时你能针对你的机器优化它)</LI>
</UL>

<H4>缺点</H4>

<UL>
  <LI>目前还不能正确的<B>解码</B>所有的DivX与DivX4文件(这不成问题因为<A
   HREF="#libavcodec">libavcodec</A>能播放他们)</LI>
  <LI>编译时你必须选择支持DivX4<B>或者</B>支持XviD</LI>
  <LI>还在开发中</LI>
</UL>

<H4>安装XVID CVS</H4>

<P>XViD目前只能从CVS中得到。这是下载和安装的指令(你至少需要autoconf 2.50, automake和libtool):</P>

<OL>
  <LI><CODE>cvs -z3 -d:pserver:anonymous@cvs.xvid.org:/xvid login</CODE></LI>
  <LI><CODE>cvs -z3 -d:pserver:anonymous@cvs.xvid.org:/xvid co xvidcore</CODE></LI>
  <LI><CODE>cd xvidcore/build/generic</CODE></LI>
  <LI><CODE>./bootstrap.sh</CODE></LI>
  <LI><CODE>./configure</CODE><BR>
    你可以加上一些选项(查看<CODE>./configure --help</CODE>的输出).</LI>
  <LI><CODE>make &amp;&amp; make install</CODE></LI>
  <LI>如果你设置了<CODE>--enable-divxcompat</CODE>,把<CODE>xvidcore/src/</CODE>里面
的<CODE>divx4.h</CODE>头文件复制到<CODE>/usr/local/include/</CODE>。</LI>
  <LI>加上<CODE>--with-xvidcore=/path/to/libcore.a</CODE>选项重新编译MPlayer。</LI>
</OL>


<H4><A NAME="sorenson">2.2.1.10 Sorenson </A></H4>

<P><B>Sorenson</B>是Sorenson Media开发的一个视频编解码器族,授权给苹果公司在它们的QuickTime播放器中使用。
我们目前可以使用下列解码器解码所有的Sorenson视频文件:</P>

<UL>
  <LI>Sorenson 1(fourcc <I>SVQ1</I>) - 由<B>本地编解码器</B>解码。<BR>
    实际上有两个SVQ1的(几乎等价的)解码器:一个在MPlayer中,还有一个在libavcodec。你可以通过<CODE>-vc svq1</CODE>
和<CODE>-vc ffsvq1</CODE>选项调用它们中的任意一个。有些文件可能只能在其中一个上工作,而另一个就行,所以
两个解码器都试试。这个解码器是由<A HREF="http://www.xinehq.de">xine</A>的作者编写(完成反向工程)的。</LI></LI>
  <LI>Sorenson 3(fourcc <I>SVQ3</I>) - 由<B>Win32的QuickTime库</B>解码。</LI>
</UL>

<H4>编译支持QUICKTIME库的SUPPORT</H4>

<P><B>注意:</B>目前只支持32位的Intel平台。</P>

<OL>
  <LI>下载MPlayer CVS</LI>
  <LI>用下面参数编译MPlayer:<BR>
    <CODE>$ ./configure --enable-qtx-codecs</CODE></LI>
  <LI>在这里下载QuickTime DLL包<A HREF="http://www.mplayerhq.hu/MPlayer/releases/codecs/">http://www.mplayerhq.hu/MPlayer/releases/codecs/</A></LI>
  <LI>把QuickTime DLL包解压到你的Win32编解码器目录(默认:<CODE>/usr/lib/codecs</CODE>)</LI>
</OL>

<H3><A NAME="audio_codecs">2.2.2 音频编解码器 </A></H3>

<P>所有音频编码中最重要的是:<BR></P>

<UL>
  <LI>MPEG layer 2(MP2), 和layer 3(MP3)(<B>本地</B>代码,经过MMX/SSE/3DNow!优化)</LI>
  <LI>MPEG layer 1音频(<B>本地</B>代码,使用libavcodec)</LI>
  <LI>Windows Media Audio v1, v2 (<B>本地</B>代码,使用libavcodec)</LI>
  <LI>Windows Media Audio 9(WMAv3)(使用DMO DLL)</LI>
  <LI>AC3杜比音频(<B>本地</B>代码,经过MMX/SSE/3DNow!优化)</LI>
  <LI>AC3声卡硬件处理</LI>
  <LI>Ogg Vorbis音频编解码器(<B>本地</B>库)</LI>
  <LI>RealAudio: DNET(低比特率的AC3), Cook, Sipro和ATRAC3</LI>
  <LI>QuickTime: Qualcomm和QDesign音频编解码器</LI>
  <LI>Voxware音频(使用DirectShow DLL)</LI>
  <LI>VIVO音频(g723,Vivo Siren)</LI>
  <LI>alaw和ulaw,各种gsm,adpcm和pcm格式还有别的简单老的编解码器</LI>
</UL>


<H4><A NAME="software_ac3">2.2.2.1 软件AC3解码</A></H4>

<P>这是含有AC3音频的文件的默认解码器。</P>

<P>AC3解码器能为了2,4或者6个扬声器创建音频混合输出。当配置为6个扬声器时,这个解码器向声卡驱动提供所有AC3通道的单独的输出,
允许彻底的“环绕音效”感受而不需要使用需要hwac3解码器的外部AC3解码器。</P>

<P>使用<CODE>-channels</CODE>选项可以选择输出的通道数。使用<CODE>-channels 2</CODE>获得立体声的降混频。
对于4通道的降混频(左前,右前,左环绕和右环绕),使用<CODE>-channels 4</CODE>。在这种情况下,中心通道的任何输出将与前通道均匀混合。
<CODE>-channels 6</CODE>将按照编码时的形式输出所有AC3通道-- 依次为左,右,左环绕,右环绕,中间和低频效果。</P>

<P>默认的输出通道数是2。</P>

<P>为使用超过2个通道的输出,你需要使用OSS,和一块能通过SNDCTL_DSP_CHANNELS ioctl支持适当输出通道数的声卡。合适的驱动的一个例子是
2001年8月的或者更新的emu10k1(用于Soundblaster Live!卡)(ALSA的CVS应该也能工作)。</P>


<H4><A NAME="hardware_ac3">2.2.2.2 硬件AC3解码</A></H4>

<P>你需要一个AC3兼容声卡,加上数字输出(SP/DIF)。声卡的驱动必须正确地支持AFMT_AC3格式(C-Media就支持)。把你的AC3解码器连接到SP/DIF输出,
然后使用<CODE>-ac hwac3</CODE>选项。这还在试验阶段但已经知道能用于C-Media声卡,使用ALSA驱动(但不能是OSS)的Soundblaster Live!
还有DXR3/Hollywood+ MPEG译码卡。</P>


<H4><A NAME="libmad">2.2.2.3 libmad支持</A></H4>

<P><A HREF="http://mad.sourceforge.net">libmad</A>是多平台的MPEG音频解码库。它不能很好的处理损坏的文件,而且有时候搜索也有问题。</P>

<P>为了支持它,加上<CODE>--enable-mad</CODE>配置选项编译。</P>


<H4><A NAME="vivo_audio">2.2.2.4 VIVO音频</A></H4>

<P>VIVO文件的使用的音频编码取决于它是VIVO/1.0还是VIVO/2.0。VIVO/1.0文件使用<B>g.723</B>音频,而VIVO/2.0文件使用<B>Vivo Siren</B>音频。
这两种音频现在都支持。</P>


<H4><A NAME="realaudio">2.2.2.5 RealAudio</A></H4>

MPlayer支持解码几乎所有版本的RealAudio:

<UL>
  <LI>RealAudio DNET -- 解码由<B>liba52</B>支持</LI>
  <LI>RealAudioCook/Sipro -- 解码由<B>RealPlayer库</B>支持</LI>
  <LI>RealAudio atrc -- 解码尚未支持</LI>
</UL>

<P>至于如何安装RealPlayer库,参见<A HREF="formats.html#real">RealMedia文件格式</A>部分。</P>

<H4><A NAME="qdesign">2.2.2.6 QDesign编解码器</A></H4>

<P>QDesign音频流(fourcc: <I>QDMC</I>, <I>QDM2</I>)出现在MOV/QT文件中。两个版本的编码格式都可以用QuickTime的库解码。
安装步骤参见<A HREF="#sorenson">Sorenson视频编解码器</A>部分。</P>


<H4><A NAME="qclp">2.2.2.7 Qualcomm编解码器</A></H4>

<P>Qualcomm音频流(fourcc: <I>Qclp</I>)出现在MOV/QT文件中。它可以用QuickTime库解码。
安装步骤参见<A HREF="#sorenson">Sorenson视频编解码器</A>部分。</P>

<H4><A NAME="aac">2.2.2.8 AAC编解码器</A></H4>

<P>AAC(Advanced Audio Coding)是MOV和MP4文件有时使用的编码格式,<A
HREF="http://www.audiocoding.com/">AudioCoding.com</A>有一个叫FAAD的开放源代码的解码器提供下载,你可以
在他们的<A HREF="http://www.audiocoding.com/download.php">下载页</A>找到第二代解码器FAAD2,不幸的
是FAAD2 1.1在Linux下面无法编译,所以你必须使用CVS版本,这样做:</P>

<OL>
  <LI>cvs -d:pserver:anonymous@cvs.audiocoding.com:/cvsroot/faac login</LI>
  <LI>cvs -z3 -d:pserver:anonymous@cvs.audiocoding.com:/cvsroot/faac co faad2</LI>
  <LI>cd faad2/</LI>
  <LI>chmod +x bootstrap</LI>
  <LI>./bootstrap</LI>
  <LI>./configure</LI>
  <LI>make</LI>
  <LI>make install</LI>
</OL>

<P>audiocoding.com不提供二进制版本,但你可以用apt-get从<A
HREF="http://marillat.free.fr/">Christian Marillat的主页</A>下载Debian的安装包或者从<A
HREF="http://plf.zarb.org/">P.L.F</A>下载Mandrake的RPM。</P>



<H3><A NAME="importing">2.2.3 Win32解码器导入HOWTO</A></H3>


<H4><A NAME="importing_vfw">2.2.3.1 VFW编解码器</A></H4>

<P>VFW(Video for Windows)是Windows的老的视频API。它的解码器以.DLL或者(很少的).DRV为扩展名。
如果MPlayer无法播放你的AVI并显示这种信息:</P>

<P>&nbsp;&nbsp;&nbsp;&nbsp;<CODE>UNKNOWN video codec: HFYU (0x55594648)</CODE></P>

<P>它意味着你的AVI在编码时使用了HFYU fourcc(HFYU = HuffYUV codec,DIV3 = DivX Low Motion,等等...)
的编码格式。现在你知道了,你必须查明Windows为了播放这个文件装载了哪一个DLL。在我们的情况下,
<CODE>system.ini</CODE>在这样的一行上包含这个信息:</P>

<P>&nbsp;&nbsp;&nbsp;&nbsp;<CODE>VIDC.HFYU=huffyuv.dll</CODE></P>

<P>因此,你需要<CODE>huffyuv.dll</CODE>文件。注意,音频解码器通过MSACM前缀指定:</P>

<P>&nbsp;&nbsp;&nbsp;&nbsp;<CODE>msacm.l3acm=L3codeca.acm</CODE></P>


<P>这是MP3编码格式。现在你有了所有必要的信息(fourcc,解码器文件,AVI样本),把你的解码器支持要求通过邮件提交,
并把相关文件上载到我们的FTP站点:</P>

<P>&nbsp;&nbsp;&nbsp;&nbsp;<CODE>ftp://ftp.mplayerhq.hu/MPlayer/incoming/[codecname]/</CODE></P>


<H4><A NAME="importing_directshow">2.2.3.2 DirectShow codecs</A></H4>

<P>DirectShow是较新的视频API,比它的前辈更恶劣。对于DirectShow事情变的困难了,</P>

<UL>
  <LI><CODE>system.ini</CODE>不再包含需要的信息,它们被储存在注册表里,此外。</LI>
  <LI>我们需要解码器的的GUID。</LI>
</UL>

<P><B>新方法:</B>使用微软的GraphEdit(快速)</P>
<OL>
  <LI>从DirecX SDK或者<A HREF="http://doom9.org">Doom9</A>中取得GraphEdit。</LI>
  <LI>运行<CODE>graphedit.exe</CODE>。</LI>
  <LI>从菜单中选择Graph -&gt; Insert Filters。</LI>
  <LI>展开<CODE>DirectShow Filters</CODE>项目。</LI>
  <LI>选择正确的解码器名称然后展开项目。/LI>
  <LI>在<CODE>DisplayName</CODE>一项中看反斜杠后面花括号里面的文字并把它记下来(小短横分隔开的五块,就是GUID)。</LI>
  <LI>解码器的二进制文件是<CODE>Filename</CODE>项里指定的文件。</LI>
</OL>

<P><B>注意:</B>如果没有<CODE>Filename</CODE>项而<CODE>DisplayName</CODE>中包含类似<CODE>device:dmo</CODE>的东西,
那么这是一个DMO-Codec。</P>
<P><B>老方法:</B>做个深呼吸然后开始搜索注册表...</P>

<OL>
  <LI>运行<CODE>regedit</CODE>。</LI>
  <LI>按<CODE>Ctrl-f</CODE>,禁用头两个复选框,填写解码器的fourcc(例如TM20)。</LI>
  <LI>你应该看见一个包含路径和文件名的域(例如<CODE>C:\WINDOWS\SYSTEM\TM20DEC.AX</CODE>)。</LI>
  <LI>现在你找到了文件,我们需要GUID。尝试再次搜索,但现在搜索解码器的名称,fourcc。用媒体播放器播放文件时,
察看File -&gt; Properties  -&gt; Advanced可以获得解码器名。如果没有,你真不走运。猜猜看吧(例如搜索TrueMotion)。</LI>
  <LI>如果找到GUID你将看见FriendlyName和CLSID域。写出16字节CLSID,这就是我们需要的GUID。</LI>
</OL>

<P><B>注意:</B>如果搜索失败,试试选上所有的复选框。你可能找到错误的内容,不过说不定你会走运...</P>

<P>现在你有所有必要的信息(fourcc,GUID,解码器文件,AVI样本),把你的解码器支持要求通过邮件提交,并把相关文件上载到我们的FTP站点</P>

<P>&nbsp;&nbsp;&nbsp;&nbsp;<CODE>ftp://ftp.mplayerhq.hu/MPlayer/incoming/[codecname]/</CODE></P>

</BODY>
</HTML>