首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我如何配置声音与PulseAudio和多座位?

我如何配置声音与PulseAudio和多座位?
EN

Ask Ubuntu用户
提问于 2012-09-24 17:22:45
回答 2查看 14K关注 0票数 12

本着完全公开的精神,我刚刚在ubuntu论坛上发布了这个问题,但我认为更多的人在做这方面的工作不会有什么影响。

我有一个多座位的设置工作得很好。热插拔输入设备按预期工作。唯一的问题,我仍然无法解决,是获得每个座位的音频。

以下是我尝试让音频工作的一个总结:

  1. 根据用户登录的$DISPLAY动态配置Make ~/.脉冲/default.pa。
    • 有关详细信息,请参阅此巴斯丁

  2. 将脉冲音频加载为系统范围的实例。
    • 不能让这件事起作用。用户无法访问任何音频硬件。

  3. 使用udev规则标记ConsoleKit中的座位。以下udev指南如下:http://www.freedesktop.org/wiki/Software/systemd/multiseat
    • 我不认为这会起作用,虽然irc.freenode #脉冲音频的人“保证”工作。

这些尝试都没有成功,所以我现在向社会求助。建议的方法很有可能起作用,我只是把它的某些方面搞砸了,idk。这是拼图的最后一部分,我需要它才能更新MultiseatX页面,以包含Ubuntu12.04的说明。

我对这种情况的理解:对脉冲音频的访问仅限于以ConsoleKit (关于ACL的一些内容)标记的活动会话。CK一次只能将一个会话标记为活动。生活中这个简单的事实让我相信,解决方案应该包括将脉冲音频作为一个系统范围的实例运行。每个用户都应该连接到脉冲服务器,并被限制在所有硬件的子集上。也许每个用户通过本地主机idk连接到脉冲服务器。我知道,无论我的尝试和失败的结果,我总是能够使用sudo aplay -D plughw:0,0 /usr/share/sounds/alsa/Front_Center.wav来播放任何硬件。

我在抓吸管,现在我可以从头上拔出最后几根头发了。求你了,帮我弄清楚,这样我们才能分享财富。所需的任何其他信息将应您的要求提供。

EN

回答 2

Ask Ubuntu用户

回答已采纳

发布于 2012-10-02 15:39:02

我花了很多时间在网上进行研究,测试各种设置,并与脉冲音频开发人员交谈。这一切的底线是,在正常用户模式下运行脉冲音频将只允许ConsoleKit标记的活动会话访问音频硬件。由于当前的ConsoleKit一次只能将一个会话标记为活动,这意味着我们必须运行一个系统范围的脉冲音频实例。好处是:每个座位都可以有单独的音频。缺点:所有音频硬件都可供任何用户使用,并且可以随意操作。对于网吧或其他公共场合来说,这不是一个理想的情况,因为安全是一个真正的问题。在创建站点安全策略时,请记住这一点。可能是谨慎的做法是,仅限于管理员执行pavucontrol。

与往常一样,对所有默认配置文件进行备份。如果您在没有备份的情况下修改了您的信任,您可以使用apt-get -d安装脉冲音频检索脉冲音频包。这将只下载包(到/var/cache/ configs /apt),您可以提取内容来检索默认的信任。请注意,client.conf不包括在其中。

要将脉冲音频作为一个系统范围的守护进程运行,我们需要编辑几个文件。

(1) /etc/默认/脉冲音频

代码语言:javascript
复制
    PULSEAUDIO_SYSTEM_START=1

2. /etc/脉冲/daemon.conf -参见man脉冲-daemon.conf以获取更多信息。

代码语言:javascript
复制
    daemonize = yes
    local-server-type = system

3.) /etc/脉冲/客户

代码语言:javascript
复制
    autospawn = no

我们还需要将用户添加到脉冲访问组中。

代码语言:javascript
复制
sudo usermod -a -G pulse-access <username>

现在所有用户都可以访问音频硬件,我们需要选择每个用户将使用的硬件。这可以使用pavucontrol来完成。请注意,设置是存储在每个用户,将不会跟随座位。如果用户切换座位,您将需要重新选择所需的音频硬件。

关于脉冲音频

的补充评论

我曾希望有一个更优雅的解决方案,使每个座位的音频工作。在多个座位上使用全系统的脉冲音频有许多缺点,并且在重新启动之间不完全稳定。我试图启动一个系统范围的实例,并让用户实例通过本地主机作为服务器连接到它。这似乎不起作用,因为当脉冲音频-启动运行时,它来源于daemon.conf。

关于ConsolKit

当运行普通的每个用户的脉冲音频时,我们看到的问题是,一个座位可以访问硬件,而其他所有的座位都有虚拟输出。这是因为ConsoleKit没有完全注意到座位。CK认为我们所有的座位都是seat1的会话,只能将一个会话标记为活动。运行getfacl /dev/snd/*可以看出这一事实。我突然想到,我们可能能够编辑特定用户使用的适当/dev/snd/文件的acl。这是我没有探讨过的一种选择。请考虑通过探索这一假设并与您的发现一起编辑这份文件,为多座位的事业做出贡献。

ConsoleKitGDM-2.3GDM-3.x的多座位分支确实存在,可以提供自动多座位功能。

附加备注

1.)最好也不允许用户加载模块DISALLOW_MODULE_LOADING=1。

2.)就像我的示例文件中所看到的,autospawn = no并不是完全必要的。它不会引起任何问题。

票数 7
EN

Ask Ubuntu用户

发布于 2019-08-29 06:37:11

最近,我正试图用PulseAudio和Multiseat解决这个问题。考虑到没有优雅的解决方案,我的解决办法是使用网络。

这个解决方案适合我的情况,因为我是用户,最经常在机器和我的座位是最经常登录。我的座位是左撇子配置的,没有其他人用过。

在我的~/.config/pulse/default.pa中,我复制了/etc/pulse/default.pa的系统配置,并添加了以下行:

代码语言:javascript
复制
load-module module-native-protocol-tcp auth-anonymous=1 auth-ip-acl=127.0.0.1

在其他用户的脉冲音频设置中,添加一个隧道--或者几个隧道,如果这是您需要的--附带一些内容:

代码语言:javascript
复制
load-module module-tunnel-sink server=127.0.0.1 sink=alsa_output.pci-0000_00_XX.X.iec958-stereo

更改接收器名以与计算机中的接收器名称匹配。您可以决定配置一个更友好的名称--这意味着您应该在您的脉冲音频设置文件中配置它--但是我只是使用pacmd list-sinks来查看它。

这不是一个优雅的解决方案,我可能会尝试使用@Anthony在我的下一个平台中建议的系统范围的配置,但是如果您有很多卡片并且只想共享一个或几个接收器/源,这是一个更“外科”的解决方案。

票数 0
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/192522

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档