SDB:Pulseaudio

跳转到:导航搜索
PulseAudio 是一个网络声音服务器,允许软件混合音频。请参阅 PulseAudio 网站 以获取更多详细信息。

在 openSUSE 上测试

推荐文章

Icon-manual.png

相关文章

通用

PulseAudio 提供

  • 对多个音频流进行软件混合,绕过硬件的任何限制。
  • 网络透明性,允许应用程序在与运行它的机器不同的机器上播放或录制音频。
  • 声音 API 抽象,减轻了应用程序处理现有各种声音系统的需要。
  • 通用的硬件抽象,可以实现例如每个应用程序的单独音量等功能。

PulseAudio 带有许多插件模块。所有来自/到客户端和音频接口的音频都通过模块进行。PulseAudio 客户端可以将音频发送到“接收器 (sinks)”并从“源 (sources)”接收音频。客户端可以是 GStreamer、xinelib、MPlayer 或任何其他音频应用程序。只有设备驱动程序/音频接口才能是源或接收器 (它们通常是硬件输入和输出)。


配置

PulseAudio 在 openSUSE 安装中默认启用。当应用程序尝试使用 pulseaudio 时,守护进程会自动启动。例如,登录到 KDE 或 Gnome 桌面环境会触发其启动。

如果您在使用 PulseAudio 时遇到问题,在向我们的 Bugzilla 报告问题之前,请务必阅读 完美的 PulseAudio 设置。其中包含有关使所有可用的声音系统使用 PulseAudio 进行实际声音播放的信息。另一方面,如果您希望完全禁用 pulseaudio 并回退到 ALSA 以用于所有基于 GNOME 的应用程序,请阅读下面的完全禁用 pulseaudio (ALSA 回退) 部分。

软件包

GNOME 安装默认包含所有必要的工具和软件包。在其他环境中,pulseaudio 通常由于依赖关系而被拖入,但没有控制它的工具。因此,可能需要手动安装以下软件包才能控制 pulseaudio 守护进程

  • pavucontrol - PulseAudio 音量控制
  • paprefs - PulseAudio 首选项
  • pulseaudio-utils - PulseAudio 工具
  • padevchooser - PulseAudio 设备选择器
  • paman - PulseAudio 管理器
  • alsa-plugins-pulse (-32位) - ALSA 库的 Pulseaudio 插件

默认将 Pulseaudio 作为 alsa 后端使用

要使所有支持 alsa 但不支持 pulseaudio 的应用程序通过 pulseaudio 播放声音,您需要安装 alsa-plugins-pulse (以及如果您使用的是 64 位则安装 32 位软件包),并运行以下命令使其成为默认设置

sudo setup-pulseaudio --enable

另一方面,如果您希望完全禁用 pulseaudio 并回退到 ALSA 以用于所有基于 GNOME 的应用程序,请阅读下面的完全禁用 pulseaudio (ALSA 回退) 部分。

禁用 OSS 模块

使用 OSS 音频输出的某些应用程序,如果未正确配置,可能会中断 pulseaudio,导致 pulseaudio 无法连接到输出硬件设备。可以通过运行以下命令禁用它

rmmod snd-pcm-oss

然后将 blacklist snd-pcm-oss 附加到文件 /etc/modprobe.d/50-blacklist.conf 。(摘自 ArchLinux wiki.)

禁用 Pulseaudio 自动启动

由于依赖关系,通常无法完全卸载 pulseaudio。为了防止使用 pulseaudio,可以通过在 /etc/pulse/client.conf 中设置 autospawn = no 来防止自动启动守护进程

可以使用以下命令禁用 Pulseaudio

sudo setup-pulseaudio --disable

这将停止相关的 pulseaudio 组件,包括“pulseaudio”守护进程,并抑制自动启动。


问题

安装后无声音

有些情况下,默认情况下声音被静音,并且 KDE 混音器中未显示此信息。要解决此问题,请运行 padevchooser (您可能需要先安装它),单击托盘图标,然后选择“音量控制”。检查所有内容是否未静音,包括在通过应用程序启动声音后 (应用程序应显示在“播放”选项卡中)。

如果声音仍然无法工作,或者 pulseaudio 工具无法工作,请尝试将您的用户添加到“pulse”和“pulse-access”组 (Yast > 用户和组管理 > [选择用户] > 编辑 > 详细信息 > 附加组)。您需要注销并重新登录才能使此更改生效。

5.1 声道

在开箱即用状态下获得 5.1 声道声音存在问题,请参阅 bug 381686 以获取更多信息。许多人拥有环绕声卡,但只有两个通道的扬声器,因此 PulseAudio 无法默认设置为环绕声设置。要启用所有通道,请编辑 /etc/pulse/daemon.conf:取消注释 default-sample-channels 行 (即删除行开头的分号),如果您的设置是 5.1,则将值设置为 6,如果您的设置是 7.1,则将值设置为 8 等。或者更简单地说,您可以使用 paprefs 通过 paprefs GUI 设置扬声器设置。

paprefs-speaker-setup.png

音频播放中的卡顿

编辑 /etc/pulse/daemon.conf:取消注释 default-fragments 和 default-fragment-size-msec,并将值从默认的 4 和 25 更改为 16 和 21。

请在 bug 381686 中反馈此方法是否有效。

返回 esound

删除所有 pulseaudio* 软件包并安装 esound。

使用 OpenAL (游戏) 时出现爆音

强制应用程序使用 pulseaudio 的 alsa 插件通常会导致使用 OpenAL 进行声音输出的游戏音质较低。到包括 openSUSE 11.1 为止,openal-soft 并不原生支持 puseaudio。要修复游戏中的声音,请删除 pulseaudio 或安装一个 来自 Factory 的补丁

启动某些应用程序会静音其他应用程序

某些应用程序 (例如 TeamSpeak) 在启动时会静音其他应用程序。可以通过删除或注释掉以下内容来修复此问题load-module module-role-cork/etc/pulse/default.pa.

完全禁用 pulseaudio (ALSA 回退)

在 openSUSE 11.2 下,pulseaudio 是所有基于 GNOME 的应用程序的首选音频子系统。这可能会导致各种共存问题,尤其是在与 phonon (KDE 的声音子系统,使用 ALSA) 相关的问题。一个常见的症状是 ALSA 音频无法获取实时 (或更准确地说,接近实时) 调度,从而导致延迟和/或失真的声音。许多人发现完全禁用 pulseaudio,从而强制所有基于 GNOME 的应用程序使用 ALSA,对他们来说效果更好。要实现此目的,请执行以下操作

  • 禁用 pulseaudio
sudo setup-pulseaudio --disable
  • 删除所有 pulseaudio 软件包,但 libpulse-mainloop-glib0 和 libpulse0 除外,因为这些软件包是所有基于 GNOME 的应用程序所必需的 (因为它们默认情况下使用 pulseaudio 编译)。
  • 隐藏 libpulse-mainloop-glib0 和 libpulse0 软件包提供的库,以强制 GNOME 应用程序回退到 ALSA。为此,请以 root 身份将它们移开,并发出以下命令 (假设 openSUSE 11.2 x86_x64)
cd /usr/lib64
sudo md HIDDEN
mv *pulse* HIDDEN
ldconfig

请注意,如果$HOME/.pulse您拥有正确设置的配置文件 (例如,在启用 pulseaudio 时),则上述隐藏 pulseaudio 库的步骤可能不需要。但是,如果您意外地 (或故意地) 删除$HOME/.pulse,GNOME 基于的应用程序将再次失去音频。无论/etc/asound.conf的内容如何,将库移开是保证回退到 ALSA 的唯一方法。

  • 使用兼容 ALSA 的混音器 (例如 KDE 中的 kmix 或终端中的 alsamixer),并确保您感兴趣的所有通道未静音。

请注意,这是一个解决方法,而不是一个明确的解决方案:如果 libpulse-mainloop-glib0 和/或 libpulse0 软件包更新,您需要重新发出上述命令,将 pulseaudio 库移开。


提示和技巧

重新安装后 PulseAudio 守护进程无法启动

您可能会看到

E: [pulseaudio] main.c: Daemon startup failed.

~/.config/pulse 移动到 ~/.config/pulseold 并尝试再次启动 pulse。第二次尝试应该可以启动。


动态范围压缩 (夜间模式)

Pulseaudio 支持 LADSPA 插件,通过此插件可以使用压缩器插件来实现通常称为“夜间模式”的功能,目标是降低电影和其他媒体中动作场面的音量 (爆炸等),同时不降低安静对话的音量。

Steve Harris 的 LADSPA 插件在 openSUSE 中可用,包括许多压缩器 (我们将在此示例中使用“SC1”压缩器),该软件包称为 ladspa-swh-plugins,请安装它,并安装一个高级 Pulseaudio 音量和输出控制面板,例如 pavucontrol

zypper install ladspa-swh-plugins pavucontrol

然后以 root 身份打开文本编辑器并编辑文件 /etc/pulse/default.pa,在文件末尾添加以下内容

.ifexists module-ladspa-sink.so
.nofail
load-module module-ladspa-sink sink_name=compressor plugin=sc1_1425 label=sc1 control=5,100,-25,8,2.5,0
.fail
.endif

然后保存并关闭文件。现在打开终端并重新启动 Pulseaudio

pulseaudio -k
pulseaudio --start

现在打开 pavucontrol,SC1 LADSPA 插件应作为可选择的输出设备。

调整 SC1 压缩器

后面的六个值代表,按顺序

control=Attack time (ms), Release time (ms), Threshold level (dB), Ratio (1:n), Knee radius (dB), Makeup gain (dB)

在前面的示例中使用的设置在许多情况下都能产生良好的效果,但您有时可能需要调整的一个设置是阈值。示例中将其设置为 -25,但如果压缩器似乎经常对对话进行处理(这不是我们想要的 - 我们希望它对响亮的动作场景等进行处理),请尝试 -20,或者如果音轨的总体音量特别低,以至于压缩器不会对对话进行处理,但动作仍然太响亮,将阈值更改为 -30 可以改善结果。请参阅文档以获取更多详细信息。

多个声音设备

上面的示例将 SC1 LADSPA 插件作为输出设备路由到您的默认声音设备。如果您有多个声音设备并希望为所有设备选择夜间模式,请首先安装 pulseaudio-utils(如果尚未安装),并通过在终端中运行以下命令获取相关的设备标识符:

pacmd list-sinks | grep name:

您将获得类似以下内容的输出:

name: <alsa_output.pci-0000_00_01.1.hdmi-stereo>
name: <alsa_output.pci-0000_00_14.2.analog-stereo>

将前面示例中添加到 /etc/pulse/default.pa 末尾的内容替换为以下内容:

.ifexists module-ladspa-sink.so
.nofail
load-module module-ladspa-sink sink_name=compressor master=alsa_output.pci-0000_00_01.1.hdmi-stereo plugin=sc1_1425 label=sc1 control=5,100,-25,8,2.5,0
load-module module-ladspa-sink sink_name=compressor master=alsa_output.pci-0000_00_14.2.analog-stereo plugin=sc1_1425 label=sc1 control=5,100,-25,8,2.5,0
.fail
.endif

您可以看到,与前面的示例相比,此示例包含 master= 参数,这些参数设置为之前检索到的 pacmd 输出中显示的设备标识符 (因此不要随意复制粘贴上面的示例,您必须修改它以使用您的设备标识符)。然后,如前所述重新启动 Pulseaudio,您应该为每个声音设备获得 SC1 LADSPA 插件输出设备。


参见


外部链接