PulseAudio (简体中文)

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

翻译状态:本文是 PulseAudio翻译。上次翻译日期:2017-01-26。如果英文版本有所更改,则您可以帮助同步翻译。

安装

安装 pulseaudio

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

前端

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

  • GTK GUI: 和
  • 按键音量控制: pulseaudio-ctlAUR
  • 控制台 (CLI)混合器:和
  • 控制台 (curses) 混合器:pulsemixer
  • 网页音量控制:PaWebControl
  • 系统托盘图标:,
  • KF5 plasma 程序:和

控制台

  • PAmix 与 pavucontrol 相似的Ncurses PulseAudio 混合器。
https://github.com/patroclos/PAmix || pamix-gitAUR

图形界面

  • MicTray 轻量级系统托盘应用程序,可让您使用 PulseAudio 控制麦克风状态和音量。
https://github.com/Junker/MicTray || mictrayAUR
  • PulseAudio Graph Control PulseAudio 图形化控制器
https://github.com/futpib/pagraphcontrol#readme || pagraphcontrol-gitAUR
  • PulseAudio Volume Meter 简单的 PulseAudio GTK 音量计。 停止开发。
http://0pointer.de/lennart/projects/pavumeter/ || pavumeterAUR

配置

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就可以正确地录音了。

故障排查

详见 PulseAudio/Troubleshooting

相关阅读

This article is issued from Archlinux. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.