如何在 Linux 中正确配置声卡以用于软电话。它们与 ALSA、OSS 和 ESD 有何区别或关联。哪一个控制什么?
我尝试配置各种软件电话但没有成功,而且我无法正确控制音频......
非常感谢您的建议!
答案1
在继续之前,您使用的是哪个 Linux 发行版?
首先,一些定义:
这是最古老的声音驱动程序架构。它已过时,但大多数内核仍保留它,因为非常老的声卡会使用 OSS 驱动程序。
这是 OSS 的替代品。它稍微新一点,支持较新的卡。如果您在工作站本地播放声音,并且不使用 ESD 或 PulseAudio,那么它可能是通过 ALSA 直接连接到卡的。
这是一种软件混音器,称为埃斯温德。ESD 背后的理念是声音不再直接与硬件绑定,而是与网络传输绑定,网络传输可能在本地播放,也可能不在本地播放。声音被混合,然后发送到适当的目的地进行播放,在那里它被“放入”OSS 或 ALSA 驱动程序进行播放。ESD 存在一些缺点,正在逐渐被淘汰。
这是一个独立的项目,最终将取代 ESD。它为网络声音传输提供了单一接口,同时向后兼容 OSS、ALSA 和 ESD。它将声音输入(称为“源”,即麦克风或其他网络流)与输出(称为“接收器”,通常是其他客户端或硬件声卡)分开。Ubuntu 已开始使用它,虽然它还存在一些缺陷,但每个版本处理声音的效果都会好一些,而且这个版本(我认为)很快就要接近 1.0 了。
PulseAudio 的主要优势在于它不仅与需要 ALSA 或 OSS 的旧软件具有向后兼容功能,而且还提供了保持一致的声音 API,同时为瘦客户端或其他远程会话提供网络传输。存在一些已知缺陷,尤其是在负载过重的系统或需要实时优先的声音处理中。这些问题正在积极解决。
对于配置,如果您运行的是 Red Hat 变体(Red Hat Linux、CentOS、Fedora),则可以使用命令sndconfig
来设置声音,尽管我认为这种方法有点过时,最终会被取代。您需要以 root 身份运行此命令,或者使用 sudo,因为它将进行系统范围的更改。
对于 Ubuntu 安装,声音通常在安装时自动配置。从 8.04 开始,默认声音通过 PulseAudio 驱动。
对于 Debian 安装,您需要将适当的人员添加到适当的组中,以便为他们激活声音。没错,使用声音是 Debian 系统上的特权(以防止多用户系统上其他用户的恶作剧),并且您需要成为某个组的成员(我相信是“声音”,有一段时间不必这样做了),才能使声音正常工作。
其他发行版会有单独的声音设置说明。
答案2
这本来应该是对 Avery Payne 的回答的评论,但我显然还太新,无法发表评论。
OSS 本身绝对不会被弃用。它曾一度闭源,并且不再在 Linux 内核中更新,但对于许多其他 *nix 来说,它仍然是首选。至于 Linux 支持,它也仍然存在,您只需自行安装即可。
至于 Linux 上声音系统的总体状况,你可以阅读 Insane Coder 最精彩的文章,网址为http://insanecoding.blogspot.com/2009/06/state-of-sound-in-linux-not-so-sorry.html。