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检测
- 红外 (LIRC) 音量控制
- pulseaudio-zeroconf Zeroconf (Avahi/DNS-SD) 支持
前端
有多种前端工具可以用以控制 PulseAudio 守护进程:
- GTK GUI: 和
- 按键音量控制: pulseaudio-ctlAUR,
- 控制台 (CLI)混合器:和
- 控制台 (curses) 混合器:pulsemixer
- 网页音量控制:PaWebControl
- 系统托盘图标:,
- KF5 plasma 程序:和
控制台
- PAmix — 与 pavucontrol 相似的Ncurses PulseAudio 混合器。
图形界面
- MicTray — 轻量级系统托盘应用程序,可让您使用 PulseAudio 控制麦克风状态和音量。
- PulseAudio Graph Control — PulseAudio 图形化控制器
- PulseAudio Volume Meter — 简单的 PulseAudio GTK 音量计。 停止开发。
配置
Pulseaudio 支持通过多种模块扩展其功能。在这里可以找到PulseAudio可用的模块的详细信息: Pulseaudio Loadable Modules。增加 到文件 /etc/pulse/default.pa就可以启用对应的模块。
启动
少数情况下PulseAudio在启动X11时没有自动启动,可运行下面的命令启动:
$ pulseaudio --start
运行下面的命令可以终止PulseAudio:
$ pulseaudio --kill
在不支持的桌面环境中自动启动Pulse
查看PulseAudio是否正在运行:
如果PulseAudio未运行而且用户正在使用X11,运行下面的命令可以在启动PulseAudio的同时加载需要的X11插件:
$ start-pulseaudio-x11
如果你没有运行GNOME, KDE或者Xfce,并且你的文件并未引用/etc/X11/xinit/xinitrc.d目录下的文件内容,为了让PulseAudio自动启动,你可以这样做:
后端设置
ALSA
从official repositories安装pulseaudio-alsa,这个软件包包含了配置ALSA与PulseAudio共同工作必须的文件。
如果你需要在x86_64系统上运行32位程序(比如Wine,Skype和Steam),也需要安装和
为了防止应用程序使用ALSA的OSS模拟功能而忽略PulseAudio(从而导致其他应用程序无法播放声音),确定模块没有在系统启动时自动加载。如果该模块已经被加载(),运行下面命令以卸载该模块:
# 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 你可能希望控制ALSA音量而不是PulseAudio音量:
$ echo export KMIX_PULSEAUDIO_DISABLE=1 > ~/.kde4/env/kmix_disable_pulse.sh $ chmod +x ~/.kde4/env/kmix_disable_pulse.sh
- 现在,重启系统,试试同时运行ALSA应用程序和PulseAudio应用程序。两者应该能同时发声了。
- 你可以使用 控制 PulseAudio 音量。
OSS
有多种方法可以使只支持OSS的程序通过PulseAudio输出音频:
ossp
安装 并启动 服务。
padsp wrapper
使用OSS的程序可以通过padsp(包含在PulseAudio中)启动,从而与PulseAudio兼容:
$ padsp OSSprogram
一些例子:
$ padsp aumix $ padsp sox foo.wav -t ossdsp /dev/dsp
你可以像下面这样编写一个程序启动脚本:
确定PATH环境变量中/usr/local/bin 在 之前。
GStreamer
安装 。如果程序使用的是旧版本的Gstreamer,安装。
OpenAL
OpenAL程序默认就应该使用PulseAudio了,但是可以明确指定其使用PulseAudio:
libao
编辑libao配置文件:
/etc/libao.conf
default_driver=pulse
一定要移除alsa驱动的选项,或者编辑该选项指定一个Pulse 通道名称或者编号。
均衡器
PulseAudio内置了10段均衡器系统,按下列步骤操作以启用均衡器:
加载均衡器通道和dbus协议模块
$ pactl load-module module-equalizer-sink $ pactl load-module module-dbus-protocol
安装并运行图形前端
安装并执行:
$ 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可通过环境变量配置音频
运行下面的命令可查看更多与pulseaudio有关的选项:
$ qemu-system-x86_64 -audio-help | grep '_PA_'
运行下面的命令可查看QEMU支持的音频模拟驱动
$ qemu-system-x86_64 -soundhw help
例如,在QEMU中使用 命令可以在虚拟机中使用驱动。
{{Note|
- 在 命令中, XXX 代表虚拟机的硬件架构。 运行 可以查看可用的硬件架构。
- 虚拟机的虚拟显卡驱动也可能造成音频质量问题。逐个尝试以便解决问题。运行
qemu-system-x86_64 -h | grep vga以查看可用的虚拟显卡选项。
AlsaMixer.app
Make AlsaMixer.appAUR dockapp for the 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 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
KDE Plasma Workspaces 和 Qt4
KDE/Qt4程序会自动使用PulseAudio。PulseAudio在KDE混音器中是默认支持的。更多信息请查阅Arch Linux Wiki KDE。这个页面提到一个窍门,就是把这一行添加到/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 可通过 选项支持PulseAudio输出。也可以设置mplayer默认使用pulseaudio输出。编辑更改当前用户的设置,或者编辑更改整个系统的设置:
guvcview
当使用网络摄像头的PulseAudio输入时,音频输入可能挂起,导致没有声音被录下来。你可以运行下面命令来检查:
$ pactl list sources
如果音频源显示为"suspended"(挂起),那么编辑/etc/pulse/default.pa,把下面这行
load-module module-suspend-on-idle
修改为
#load-module module-suspend-on-idle
然后不论你重启PulseAudio还是重启电脑,输入源都只会处于空闲状态而不是挂起。这样的话guvcview就可以正确地录音了。
故障排查
相关阅读
- 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