2.3.2 音频输出设备

MPlayer的音频接口称为libao2。它目前包含这些驱动:

一般:

   oss  OSS(ioctl)驱动(支持硬件AC3中转)
sdlSDL驱动(支持升/降采样率,ESDARTS等等)
nasNAS(Network Audio System)驱动
alsa5本地的ALSA 0.5驱动
alsa9本地的ALSA 0.9驱动(支持硬件AC3中转)
sunBSD和Solaris8用户的SUN音频驱动(/dev/audio)
arts本地的ARTS驱动(主要针对KDE用户)

事实上,Linux声卡驱动有兼容问题。可能需要一定时间找到你最理想的设置。

Solaris和FreeBSD系统上,用-ao sun选项使用SUN的音频驱动,否则视频音频都无法工作。

2.3.2.1 声卡体验,推荐

VIA板载芯片(via82cxxx)只能48kHz
驱动:sourceforge.net
Aureal Vortex 2
    OSS:没有驱动
OSS/Pro:OK
ALSA:没有驱动
Max kHz:48
驱动:aureal.sourceforge.net
驱动2:Pontscho的主页
(缓冲大小增加到32k)
GUS PnP
OSS:没有驱动
OSS/Pro:OK
ALSA:OK
Max kHz:48
SB Live!
OSS:模拟方式很好,SP与DIF不能工作
ALSA:两个都很好
Max kHz:192
SB AWE 64
OSS:max 44kHz
ALSA:48kHz听起来很糟
Max kHz:48
Gravis UltraSound ACE
OSS:不是很好
ALSA:OK
Max kHz:44
Gravis UltraSound MAX
OSS:OK
ALSA:OK(?)
Max kHz:48
ESS 688
OSS:OK
ALSA:OK(?)
Max kHz:48
C-Media声卡(那种?)
OSS:不是很好(有嘶嘶声) (?)
ALSA:OK(?)
Max kHz:
Yamaha声卡(*ymf*)
OSS:不是很好(?)(-ao sdl)
ALSA:仅在使用ALSA 0.5的OSS仿真-ao sdl(!)(?)时很好
Max kHz:
使用envy24芯片(Terratec EWS88MT之类)的声卡
OSS:
OSS/Pro:OK
ALSA:
Max kHz:
PC Speaker或者DAC
OSS:OK(使用SDL驱动:-ao sdl)
ALSA:没有驱动
Max kHz:驱动模拟44.1,也许更高。
驱动:ftp://ftp.infradead.org/pub/pcsp

在Linux上,高度推荐2.4.x的内核。2.2的内核没有经过测试。

如果从CD-ROM播放时声音跳跃,开启IRQ unmasking,例如。hdparm -u1 /dev/cdrom(man hdparm)。 这在大多数情况下有好处,更详细的描述在CD-ROM部分

与另一个像XMMS一样的程序共享你的声卡是强烈不推荐的!如果其它音频程序使用ESD,用-vo sdl:esd选项 启动MPlayer可以把两个音频流混合起来。事实上,选项-vo sdl:esd甚至在单独播放Mplayer时也可以对ESD使用。

对这个文件的反馈是受欢迎的。请告诉我们你的声卡是如何与MPlayer共同工作的。

2.3.2.2 音频插件

MPlayer支持音频插件。音频插件s用于在声音到达声卡之前改变音频数据的属性。他们用-aop开关加上 list=插件1,插件2,...参数打开。必须有list参数用来确定应该使用哪些插件,以及他们执行的顺序。例如:

  mplayer media.avi -aop list=resample,format

将让声音先通过重新采样插件然后再经过格式化插件。

插件也有改变他们行为的开关。这些开关在下面将详细地解释。如果开关被省略,插件将按照默认设置运行。 这是一个关于如何组合使用指定参数的插件的例子:

  mplayer media.avi -aop list=resample,format:fout=44100:format=0x8

这将会将重新采样插件的输出频率设为44100Hz格式化插件的输出格式设置为AFMT-U8。

目前音频插件不能用于MEncoder

2.3.2.2.1 升/降采样率

MPlayer完全支持对声音升/降采样率。如果你使用固定采样率的声卡或者如果你被只兼容 最大44.1kHz的老声卡郁闷时可以使用这个插件。你硬件的限制是不能自动检测的,因此你必须明确地规定采样频率。 这个插件有一个参数:fout用于设置期望的输出的采样率。默认是48kHz,单位是<Hz>。

用法:
  mplayer media.avi -aop list=resample:fout=<required frequency in Hz, like 44100>

注意输出频率不能从默认值升高。因为升高会导致音频和视频流播放缓慢而且音频也会扭曲。

2.3.2.2.2 环绕音效解码

MPlayer有一个能解码矩阵编码的环绕音效的音频插件。杜比环绕是矩阵编码格式的一个例子。 大多数2通道音频的文件实际上包含了矩阵编码的环绕音效。为使用这个特性你需要至少支持4个声道的声卡。

用法:
  mplayer media.avi -aop list=surround

2.3.2.2.3 采样格式转换

如果你的声卡驱动不支持带符号的16位int数据类型,这个插件能被用来把它转换为一个你的 声卡能理解的格式。它有一个参数,format,可以设置为你在libao2/afmt.h中找到的数字。 这个插件几乎很少会用到而且是面向高级用户的。记住这个插件仅仅改变采样格式而不改变采样频率或者声道数。

用法:
  mplayer media.avi -aop list=format:format=<required output format>

2.3.2.2.4 延迟

这个插件将声音延迟,被计划当做如何开发新的插件的例子。它不能用于任何以用户观点来说有用的东西, 在这里被提到只是为了完整的缘故。不要使用这个插件除非你是开发者。

2.3.2.2.5 软件音量控制

这个插件是音量控制功能的软件替代,用于哪些使用蹩脚的混音设备的机器。如果你想要改变MPlayer 的输出音量而不改变混音器中PCM音量的设置也可以使用这个插件。它有一个volume参数初始的音量水平。 初始音量水平能取0到255之间的值,默认值是101相当于放大0分贝。谨慎使用这个插件因为它会降低声音的信噪比。 在大多数情况下最好是把PCM音量设为最大是,放弃这个插件并且通过混音器的主音量控制来控制你的扬声器输出水平。 如果有连接到计算机的外部功放(这几乎是普遍情况),噪音水平能通过调整在主音量级别和功放上的旋钮而最大限度的减少, 直到去除嘶嘶的背景噪音。

Usage:
  mplayer media.avi -aop list=volume:volume=<0-255>

这插件也有压缩器或称为“软控制”的功能。 压缩用于声音的动态范围十分高或者如果扬声器的动态范围十分低的的情况。注意这个特性将造成扭曲并且应该 是最后一种被考虑的手段。

Usage:
  mplayer media.avi -aop list=volume:softclip

2.3.2.2.6 加强立体声

这个插件(线性地)增加左右声道的差别(像XMMS的extrastereo插件一样)使回放产生某种“现场”效果。

Usage:
  mplayer media.avi -aop list=extrastereo
  mplayer media.avi -aop list=extrastereo:mul=3.45

默认参数(mul)是默认值为2.5的浮点数。如果你把它设置到0.0,你将获得单声道(两个声道的平均值)。 如果你把它设置到1.0,声音不变,如果你把它设置为-1.0,左右声道将被交换。

2.3.2.2.7 音量正则化

这个插件能没有变形的最大化音量。

用法:
  mplayer media.avi -aop list=volnorm

2.3.2.2.8 环绕

谁应该在什么时候写点什么。