PulseAudio (简体中文)

From ArchWiki
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
翻译状态:本文是 PulseAudio翻译。上次翻译日期:2017-01-26。如果英文版本有所更改,则您可以帮助同步翻译。

PulseAudio 是在GNOMEKDE等桌面环境中广泛使用的音频服务。它在内核音频组件(比如ALSAOSS)和应用程序之间充当代理的角色。由于Arch Linux默认包含ALSA,PulseAudio经常和ALSA协同使用。

安装

安装 pulseaudio

有的 PulseAudio 模块已经从主软件包中 分离 了。如果需要的话请分别安装:

注意: 用户可能在 ALSA 和 PulseAudio 之间产生混淆。ALSA 包括有着声卡驱动的Linux内核组件和用户空间组件两部分,libalsa.[1] PulseAudio 只依赖于内核组件,但是也通过 pulseaudio-alsalibalsa 实现了兼容。[2]

前端

有多种前端工具可以用以控制 PulseAudio 守护进程:

控制台

  • ncpamixer — 受 pavucontrol 启发的用于 PulseAudio 的 Ncurses 混合器。
https://github.com/fulhax/ncpamixer || ncpamixerAUR
  • pacmixer — PulseAudio 的 Alsamixer 近似。
https://github.com/KenjiTakahashi/pacmixer || pacmixerAUR
  • PAmix — 与 pavucontrol 相似的Ncurses PulseAudio 混合器。
https://github.com/patroclos/PAmix || pamix-gitAUR
  • pamixer — PulseAudio CLI 混合器。
https://github.com/cdemoulins/pamixer || pamixer
  • pavolume — 带有 libnotify 消息的 PulseAudio 的简单 CLI 音量控制。
https://github.com/sseemayer/pavolume || pavolume-gitAUR
  • Ponymix — PulseAudio 的 CLI 混合器。
https://github.com/falconindy/ponymix || ponymixAUR
  • pulseaudio-ctl — 用 shell 或快捷键控制 PulseAudio。
https://github.com/graysky2/pulseaudio-ctl || pulseaudio-ctlAUR
  • pulsemixer — PulseAudio 的 CLI 和 curses 混合器。
https://github.com/GeorgeFilipkin/pulsemixer || pulsemixer

图形界面

  • KMixKDE 音量控制应用程序支持多个平台,包括 PulseAudio、可配置的系统托盘小程序。
https://apps.kde.org/kmix/ || kmix
  • MicTray — 轻量级系统托盘应用程序,可让您使用 PulseAudio 控制麦克风状态和音量。
https://github.com/Junker/MicTray || mictrayAUR
  • pa-applet — 带有音量条的 PulseAudio 系统托盘小程序。
https://github.com/fernandotcl/pa-applet || pa-applet-gitAUR
  • pasystray — PulseAudio 的系统托盘小程序。
https://github.com/christophgysin/pasystray || pasystray
  • plasma-paKDE 使用 PulseAudio 进行音量管理的 Plasma 小程序
https://invent.kde.org/plasma/plasma-pa || plasma-pa
  • PulseAudio Equalizer — 基于 LADSPA 的 PulseAudio 多频段均衡器。
https://github.com/pulseaudio-equalizer-ladspa/equalizer || pulseaudio-equalizer-ladspa
  • PulseAudio Graph Control — PulseAudio 图形化控制器
https://github.com/futpib/pagraphcontrol#readme || pagraphcontrol-gitAUR
  • PulseAudio Manager — PulseAudio 的简单 GTK 前端。 停止开发。
http://0pointer.de/lennart/projects/paman/ || pamanAUR
  • PulseAudio Preferences — 简单的 PulseAudio GTK 配置对话框。
https://freedesktop.org/software/pulseaudio/paprefs/ || paprefs
  • PulseAudio Volume Control — 简单的 PulseAudio GTK 音量控制工具(“混音器”)。
https://freedesktop.org/software/pulseaudio/pavucontrol/ || pavucontrol
  • PulseAudio Volume Control (Qt) — PulseAudio 混音器(pavucontrol 的 Qt 端口)。
https://github.com/lxqt/pavucontrol-qt || pavucontrol-qt
  • PulseAudio Volume Control (Sandsmark) — LXQt 的 pavucontrol 轻量级分支,实现了 pavucontrol 的缺失功能,错误修复并删除非必要依赖。
https://github.com/sandsmark/pavucontrol-qt || pavucontrol-qt-sandsmark-gitAUR
  • PulseAudio Volume Meter — 简单的 PulseAudio GTK 音量计。 停止开发。
http://0pointer.de/lennart/projects/pavumeter/ || pavumeterAUR
  • PulseEffects — PulseAudio的音频效果。
https://github.com/wwmm/easyeffects/tree/pulseaudio-legacy || pulseeffects-legacyAUR
  • Volctl — PulseAudio 的每个应用程序系统托盘小程序音量控制。
https://buzz.github.io/volctl/ || volctlAUR
  • Xfce PulseAudio Panel PluginXfce4 面板的 PulseAudio 插件。
https://goodies.xfce.org/projects/panel-plugins/xfce4-pulseaudio-plugin || xfce4-pulseaudio-plugin

配置

Pulseaudio 支持通过多种模块扩展其功能。在这里可以找到PulseAudio可用的模块的详细信息: Pulseaudio Loadable Modules。增加 load-module <module-name-from-list> 到文件 /etc/pulse/default.pa就可以启用对应的模块。

启动

警告: 如果你给每个用户拷贝了配置文件(例如client.conf, daemon.conf 或者 default.pa)到~/.config/pulse/ 或者 ~/.pulse/目录下,确定这些文件的修改与/etc/pulse/下的文件修改同步,否则PulseAudio可能由于配置文件错误而拒绝启动。
注意: 大多数X11环境会在启动X11会话时自动启动PulseAudio。

少数情况下PulseAudio在启动X11时没有自动启动,可运行下面的命令启动:

$ pulseaudio --start

运行下面的命令可以终止PulseAudio:

$ pulseaudio --kill

在不支持的桌面环境中自动启动Pulse

注意: 正如之前所说, 如果用户安装了桌面环境,PulseAudio很可能通过 /etc/X11/xinit/xinitrc.d/pulseaudio文件或者 /etc/xdg/autostart/目录下的文件自动启动

查看PulseAudio是否正在运行:

$ pgrep -af pulseaudio
369 /usr/bin/pulseaudio

如果PulseAudio未运行而且用户正在使用X11,运行下面的命令可以在启动PulseAudio的同时加载需要的X11插件:

$ start-pulseaudio-x11

如果你没有运行GNOME, KDE或者Xfce,并且你的~/.xinitrc文件并未引用/etc/X11/xinit/xinitrc.d目录下的文件内容,为了让PulseAudio自动启动,你可以这样做:

~/.xinitrc
/usr/bin/start-pulseaudio-x11

后端设置

ALSA

official repositories安装pulseaudio-alsa,这个软件包包含了配置ALSA与PulseAudio共同工作必须的文件/etc/asound.conf

如果你需要在x86_64系统上运行32位程序(比如Wine,Skype和Steam),也需要安装lib32-libpulselib32-alsa-plugins

为了防止应用程序使用ALSA的OSS模拟功能而忽略PulseAudio(从而导致其他应用程序无法播放声音),确定snd_pcm_oss模块没有在系统启动时自动加载。如果该模块已经被加载(lsmod | grep oss),运行下面命令以卸载该模块:

# rmmod snd_pcm_oss

在不独占硬件设备的情况下使用ALSA/dmix

注意: 本段描述了备选的设置方案,一般不推荐这么做

你可能希望在大多数程序里直接使用ALSA,并且同时能正常运行依赖于PulseAudio的程序。以下步骤允许PulseAudio以dmix为后端,而不是独占ALSA硬件设备:

  • 移除pulseaudio-alsa软件包,该软件包提供了ALSA程序和PulseAudio之间的兼容层。移除后ALSA程序将直接使用ALSA而不是被Pulse接管。
  • 编辑 /etc/pulse/default.pa.
找到并取消与加载后端驱动相关的行的注释符号。按照下面的范例增加"device"参数。然后注释掉与加载自动检测模块相关的行。
load-module module-alsa-sink device=dmix
load-module module-alsa-source device=dsnoop
# load-module module-udev-detect
# load-module module-detect
$ echo export KMIX_PULSEAUDIO_DISABLE=1 > ~/.kde4/env/kmix_disable_pulse.sh
$ chmod +x ~/.kde4/env/kmix_disable_pulse.sh
  • 现在,重启系统,试试同时运行ALSA应用程序和PulseAudio应用程序。两者应该能同时发声了。
你可以使用 pavucontrol 控制 PulseAudio 音量。

OSS

有多种方法可以使只支持OSS的程序通过PulseAudio输出音频:

ossp

安装ossp 并启动 osspd.service服务。

padsp wrapper

使用OSS的程序可以通过padsp(包含在PulseAudio中)启动,从而与PulseAudio兼容:

$ padsp OSSprogram

一些例子:

$ padsp aumix
$ padsp sox foo.wav -t ossdsp /dev/dsp

你可以像下面这样编写一个程序启动脚本:

/usr/local/bin/OSSProgram
#!/bin/sh
exec padsp /usr/bin/OSSprogram "$@"

确定PATH环境变量中/usr/local/bin/usr/bin之前。

GStreamer

安装 gst-plugins-good。如果程序使用的是旧版本的Gstreamer,安装gstreamer0.10-good-pluginsAUR

OpenAL

OpenAL程序默认就应该使用PulseAudio了,但是可以明确指定其使用PulseAudio:

/etc/openal/alsoft.conf
drivers=pulse,alsa

libao

编辑libao配置文件:

/etc/libao.conf
default_driver=pulse

一定要移除alsa驱动的dev=default选项,或者编辑该选项指定一个Pulse 通道名称或者编号。

注意: 如果你已经安装pulseaudio-alsa,你也许可以保留libao默认使用alsa输出不变,因为支持alsa的程序已经默认通过PulseAudio输出了。

均衡器

PulseAudio内置了10段均衡器系统,按下列步骤操作以启用均衡器:

加载均衡器通道和dbus协议模块

$ pactl load-module module-equalizer-sink
$ pactl load-module module-dbus-protocol

安装并运行图形前端

安装python-pyqt4AUR并执行:

$ qpaeq
注意: 如果运行qpaeq无效,安装pavucontrol ,运行媒体播放器时把 "ALSA Playback on" 改为 "FFT based equalizer on ..."。

每次启动时加载均衡器和dbus模块

编辑 /etc/pulse/default.pa 并加入下面几行:

### Load the integrated PulseAudio equalizer and D-Bus module
load-module module-equalizer-sink
load-module module-dbus-protocol

应用程序

QEMU

运行下面命令以确定QEMU是否支持pulseaudio

$ qemu-system-x86_64 -audio-help | grep 'Name: pa'

QEMU可通过环境变量配置音频

export QEMU_AUDIO_DRV=pa
export QEMU_PA_SINK=alsa_output.pci-0000_04_01.0.analog-stereo.monitor
export QEMU_PA_SOURCE=input

运行下面的命令可查看更多与pulseaudio有关的选项:

$ qemu-system-x86_64 -audio-help | grep '_PA_'

运行下面的命令可查看QEMU支持的音频模拟驱动

$ qemu-system-x86_64 -soundhw help

例如,在QEMU中使用-soundhw ac97 命令可以在虚拟机中使用ac97驱动。

{{Note|

  • qemu-system-XXX命令中, XXX 代表虚拟机的硬件架构。 运行 ls /usr/bin/qemu-system-* -1可以查看可用的硬件架构。
  • 虚拟机的虚拟显卡驱动也可能造成音频质量问题。逐个尝试以便解决问题。运行 qemu-system-x86_64 -h | grep vga以查看可用的虚拟显卡选项。

AlsaMixer.app

Make AlsaMixer.appAUR dockapp for the windowmakerAUR use pulseaudio, e.g.

$ AlsaMixer.app --device pulse

Here is a two examples where the first one is for ALSA and the other one is for pulseaudio. You can run multiple instances of it. Use the -w option to choose which of the control buttons to bind to the mouse wheel.

# AlsaMixer.app -3 Mic -1 Master -2 PCM --card 0 -w 1
# AlsaMixer.app --device pulse -1 Capture -2 Master -w 2
注意: It can use only those output sinks that set as default.

XMMS2

将程序切换到pulseaudio输出:

$ nyxmms2 server config output.plugin pulse

以及alsa:

$ nyxmms2 server config output.plugin alsa

让xmms2使用不同的通道输出:

 $ nyxmms2 server config pulse.sink alsa_output.pci-0000_04_01.0.analog-stereo.monitor

另可查阅官方指南 [3].

KDE Plasma Workspaces 和 Qt4

KDE/Qt4程序会自动使用PulseAudio。PulseAudio在KDE混音器中是默认支持的。更多信息请查阅Archlinux Wiki KDE。这个页面提到一个窍门,就是把load-module module-device-manager这一行添加到/etc/pulse/default.pa文件中。 如果Phonon使用phonon-gstreamer为后端,Gstreamer应该按照#GStreamer这一节进行设置。

Audacious

Audacious 默认支持PulseAudio。把 Audacious Preferences -> Audio -> Current output plugin 设置为 'PulseAudio Output Plugin'即可。

Music Player Daemon (MPD)

配置 MPD 使其使用 PulseAudio。另请参阅 Music Player Daemon/Tips and tricks#PulseAudio.

MPlayer

MPlayer 可通过 -ao pulse 选项支持PulseAudio输出。也可以设置mplayer默认使用pulseaudio输出。编辑~/.mplayer/config更改当前用户的设置,或者编辑/etc/mplayer/mplayer.conf更改整个系统的设置:

/etc/mplayer/mplayer.conf
ao=pulse

guvcview

guvcview使用网络摄像头的PulseAudio输入时,音频输入可能挂起,导致没有声音被录下来。你可以运行下面命令来检查:

$ pactl list sources

如果音频源显示为"suspended"(挂起),那么编辑/etc/pulse/default.pa,把下面这行

load-module module-suspend-on-idle

修改为

#load-module module-suspend-on-idle

然后不论你重启PulseAudio还是重启电脑,输入源都只会处于空闲状态而不是挂起。这样的话guvcview就可以正确地录音了。

故障排查

详见 PulseAudio/Troubleshooting

相关阅读