PulseAudio (简体中文)
PulseAudio 是在GNOME 或 KDE等桌面环境中广泛使用的音频服务。它在内核音频组件(比如ALSA 和 OSS)和应用程序之间充当代理的角色。由于Arch Linux默认包含ALSA,PulseAudio经常和ALSA协同使用。
安装
安装 pulseaudio 。
有的 PulseAudio 模块已经从主软件包中 分离 了。如果需要的话请分别安装:
- pulseaudio-alsa 为 pulseaudio 提供 ALSA 支持, 查看 #ALSA
- pulseaudio-bluetooth 添加 bluetooth(Bluez) 支持, 查看 bluetooth headset
- pulseaudio-equalizer 均衡器 接收器 (qpaeq)
- pulseaudio-jack JACK 接收器, 源和jackdbus检测
- pulseaudio-lirc 红外 (LIRC) 音量控制
- pulseaudio-zeroconf Zeroconf (Avahi/DNS-SD) 支持
libalsa
.[1] PulseAudio 只依赖于内核组件,但是也通过 pulseaudio-alsa 和 libalsa
实现了兼容。[2]
前端
有多种前端工具可以用以控制 PulseAudio 守护进程:
- GTK GUI:paprefs 和 pavucontrol
- 按键音量控制: pulseaudio-ctlAUR,pavolume-gitAUR
- 控制台 (CLI)混合器:ponymixAUR和pamixer
- 控制台 (curses) 混合器:pulsemixer
- 网页音量控制:PaWebControl
- 系统托盘图标:pasystray,pasystray-gitAUR
- KF5 plasma 程序:kmix和plasma-pa
控制台
- ncpamixer — 受 pavucontrol 启发的用于 PulseAudio 的 Ncurses 混合器。
- pacmixer — PulseAudio 的 Alsamixer 近似。
- PAmix — 与 pavucontrol 相似的Ncurses PulseAudio 混合器。
- pamixer — PulseAudio CLI 混合器。
- pavolume — 带有 libnotify 消息的 PulseAudio 的简单 CLI 音量控制。
- Ponymix — PulseAudio 的 CLI 混合器。
- pulseaudio-ctl — 用 shell 或快捷键控制 PulseAudio。
- pulsemixer — PulseAudio 的 CLI 和 curses 混合器。
图形界面
- KMix — KDE 音量控制应用程序支持多个平台,包括 PulseAudio、可配置的系统托盘小程序。
- MicTray — 轻量级系统托盘应用程序,可让您使用 PulseAudio 控制麦克风状态和音量。
- pa-applet — 带有音量条的 PulseAudio 系统托盘小程序。
- pasystray — PulseAudio 的系统托盘小程序。
- plasma-pa — KDE 使用 PulseAudio 进行音量管理的 Plasma 小程序
- PulseAudio Equalizer — 基于 LADSPA 的 PulseAudio 多频段均衡器。
- PulseAudio Graph Control — PulseAudio 图形化控制器
- PulseAudio Manager — PulseAudio 的简单 GTK 前端。 停止开发。
- PulseAudio Preferences — 简单的 PulseAudio GTK 配置对话框。
- PulseAudio Volume Control — 简单的 PulseAudio GTK 音量控制工具(“混音器”)。
- PulseAudio Volume Control (Qt) — PulseAudio 混音器(pavucontrol 的 Qt 端口)。
- PulseAudio Volume Control (Sandsmark) — LXQt 的 pavucontrol 轻量级分支,实现了 pavucontrol 的缺失功能,错误修复并删除非必要依赖。
- PulseAudio Volume Meter — 简单的 PulseAudio GTK 音量计。 停止开发。
- PulseEffects — PulseAudio的音频效果。
- Volctl — PulseAudio 的每个应用程序系统托盘小程序音量控制。
- Xfce PulseAudio Panel Plugin — Xfce4 面板的 PulseAudio 插件。
配置
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可能由于配置文件错误而拒绝启动。少数情况下PulseAudio在启动X11时没有自动启动,可运行下面的命令启动:
$ pulseaudio --start
运行下面的命令可以终止PulseAudio:
$ pulseaudio --kill
在不支持的桌面环境中自动启动Pulse
/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-libpulse和lib32-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
- Optional: 如果你使用 kdemultimedia-kmix[损坏的链接:package not found] 你可能希望控制ALSA音量而不是PulseAudio音量:
$ 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内置了10段均衡器系统,按下列步骤操作以启用均衡器:
加载均衡器通道和dbus协议模块
$ pactl load-module module-equalizer-sink $ pactl load-module module-dbus-protocol
安装并运行图形前端
安装python-pyqt4AUR并执行:
$ qpaeq
每次启动时加载均衡器和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
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混音器中是默认支持的。更多信息请查阅Arch Linux 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。
相关阅读
- http://www.alsa-project.org/main/index.php/Asoundrc - ALSA wiki on .asoundrc
- http://www.pulseaudio.org/ - PulseAudio official site
- http://www.pulseaudio.org/wiki/FAQ - PulseAudio FAQ