pulseaudio音频控制
2019年06月12日

概述

PulseAudio是在GNOME或KDE等桌面环境中广泛使用的音频服务。它在内核音频组件(比如ALSA 和 OSS)和应用程序之间充当代理的角色,PulseAudio经常和ALSA协同使用。

安装

# 为系统增加pulseaudio支持
vim /etc/portage/make.conf
USE="pulseaudio"
 
# 更新系统
emerge -avuDN world

# 音频控制程序
emerge pavucontrol

其他问题

pulseaudio是一个音频控制的中间层,目的在于简化音频输出的开发,但是存在一些问题
pulseaudio在程序需要启用它的时候才会启动.这本来没有什么问题,但是有个别应用出现了问题.

这里要说的就是mpd,mpd本身是一个音乐播放程序,但是它采用了cs的做法,功能在服务端实现,客户端负责控制.
而mpd启动的时候,就要指定使用的用户权限.默认使用mpd,但是作为系统使用,肯定是别的用户.
pulseaudio又无法使用多个用户同时使用pulseaudio,而又不建议在系统启动时,运行pulseaudio(参考链接)
这就造成了,在mpd先调用pulseaudio以后,会出现独占现象.同理,其他桌面应用先调用pulseaudio,桌面应用间不会独占,但是mpd就无法调用pulseaudio了.(毕竟pulseaudio是在普通用户登录前以mpd身份加载的)

这个矛盾说完以后,解决办法就出来了:

  1. mpd运行改用与登录相同的用户,由于登录用户权限问题,相关配置文件的位置需要修改,这也造成了 备份系统/迁移系统后需要注意的地方.
  2. 使用systemd系统级别运行pulseaudio,pulseaudio作者不建议这样做,上面的链接有提到,同时mpd也不建议使用root权限,又是一个麻烦的事情.

之所以使用pulseaudio,原因还是在于firefox禁用了alsa支持,据说原因出在沙箱支持和多进程安全性方面.但是firefox效仿的是chrome,chrome就不存在这些限制.

其他技巧

mpd 增加 pulseaudio支持

# 启用pulseaudio音频输出
vim /etc/mpd.conf
audio_output {
	type		"pulse"
	name		"My Pulse Output"
}

#注释掉alsa输出的部分
#audio_output {
#	type		"alsa"
#	name		"My ALSA Device"
#	device		"hw:0,0"	# optional
#}

smplayer

在首选项中启用pulseaudio输出

相关链接

Pulseaudio for multiple users, without system-mode daemon
http://billauer.co.il/blog/2014/01/pa-multiple-users/