Как настроить звук с помощью PulseAudio и Multiseat?

В духе полного раскрытия, я только что опубликовал этот вопрос на форумах Ubuntu, но я полагаю, что больше людей, работающих над этим, не повредит.

У меня есть установка на несколько мест, работающая довольно хорошо. Горячее подключение устройств ввода работает как положено и так далее. Единственная проблема, которую я до сих пор не могу решить, это получить аудио для каждого места.

Вот краткое изложение моих попыток заставить работать звук:

  1. Сделать ~ / .pulse / default.pa динамически настроенным на основе того, в каком $ DISPLAY пользователь входит в систему.

  2. Загрузка pulseaudio как общесистемного экземпляра.

    • Не удалось заставить это работать. Ни одно из аудиооборудования не было доступно пользователям.
  3. Используйте правила udev, чтобы отмечать места в ConsoleKit. Ниже приведены рекомендации udev: http://www.freedesktop.org/wiki/Software/systemd/multiseat

    • Я не думал, что это будет работать, хотя это было «гарантированно» работать кем-то в irc.freenode #pulseaudio

Ни одна из этих попыток не привела к успеху, поэтому сейчас я обращаюсь к сообществу за помощью. Вполне возможно, что предложенные методы работают, и я просто испортил некоторые аспекты, idk. Это последняя часть головоломки, которая необходима, прежде чем я смогу перейти и обновить страницу MultiseatX, чтобы включить инструкции для Ubuntu 12.04.

Мое понимание ситуации: доступ к pulseaudio ограничен активным сеансом, как отмечено в ConsoleKit (что-то вроде ACL). CK может пометить только один сеанс как активный за один раз. Этот простой маленький жизненный факт заставляет меня поверить, что решение должно включать в себя pulaudio, запускаемый как общесистемный экземпляр. Каждый пользователь должен подключаться к импульсному серверу и быть ограниченным подмножеством всего оборудования. Возможно, каждый пользователь подключается к импульсному серверу через localhost, idk. Я действительно знаю, что независимо от моих попыток и их неудачных результатов, я всегда мог использовать sudo aplay -D plughw:0,0 /usr/share/sounds/alsa/Front_Center.wav для воспроизведения чего-либо на любом из аппаратных средств.

1119 Я хватаюсь за соломинку и теперь до последних волосков, которые я могу вырвать из головы. Пожалуйста, помогите мне разобраться в этом, чтобы мы могли поделиться богатством. Любая дополнительная необходимая информация будет предоставлена ​​по вашему запросу.

12
задан 2 October 2012 в 16:30

3 ответа

Я провел много часов, исследуя онлайн, тестируя различные установки и говорящий с Pulseaudio devs. Нижняя строка всего этого - то, что выполнение pulseaudio в режиме обычного пользователя позволит только активной сессии, как отмечено ConsoleKit получать доступ к аудио аппаратным средствам. Так как текущий ConsoleKit только может отметить одну сессию как активную за один раз, это означает, что мы должны выполнить экземпляр в масштабе всей системы pulseaudio. Позитивный аспект: Каждое место может иметь отдельное аудио. Оборотная сторона: ВСЕ аудио аппаратные средства доступны любому пользователю и могут управляться ПО ЖЕЛАНИЮ. Это не идеальная ситуация для интернет-кафе или другой установки общественности, где безопасность является реальным беспокойством. Имейте это в виду при создании политики безопасности сайта. Могло бы быть благоразумно ограничить pavucontrol выполнение администраторами только.

Как всегда, сделайте резервное копирование всех Ваших файлов конфигурации по умолчанию. При переделывании конфигураций без резервного копирования можно получить pulseaudio пакет с Кв. - получают установку-d pulseaudio. Это загрузит пакет (на/var/cache/archives/apt) только, и можно извлечь содержание для получения конфигураций по умолчанию. Знайте, что client.conf не включен там.

Для выполнения pulseaudio как демон в масштабе всей системы мы должны отредактировать несколько файлов.

1.)/etc/default/pulseaudio

    PULSEAUDIO_SYSTEM_START=1

2.)/etc/pulse/daemon.conf - Видят импульс-daemon.conf человека для получения дополнительной информации.

    daemonize = yes
    local-server-type = system

3.)/etc/pulse/client.conf

    autospawn = no

Мы также должны добавить пользователей к группе импульсного доступа.

sudo usermod -a -G pulse-access <username>

Теперь, когда все пользователи могут получить доступ к аудио аппаратным средствам, мы должны выбрать аппаратные средства, которые будет использовать каждый пользователь. Это может быть сделано с помощью pavucontrol. Знайте, что настройки являются сохраненным ПОЛЬЗОВАТЕЛЕМ PER и не будут следовать за местом. Если пользователи переключат места, то Вам будут нужны к повторному выбору желаемые аудио аппаратные средства.

Дополнительные комментарии к Pulseaudio

Я надеялся, что будет более изящное решение для получения аудио работы на рабочее место. Используя Pulseaudio в масштабе всей системы на мультиместе имеет много недостатков и не совсем стабилен между перезагрузками. Я попытался запустить экземпляр в масштабе всей системы и иметь пользовательское подключение экземпляров к нему как сервер через localhost. Это, кажется, не работает с тех пор, когда pulseaudio - запуск выполняется это источники daemon.conf.

Оценка ConsolKit

Проблема, которую мы видим при выполнении нормального pulseaudio в расчете на пользователя, - то, что одно место имеет доступ к аппаратным средствам, и у всех других есть Фиктивный Вывод. Это происходит из-за ConsoleKit, не являющегося, полностью фиксируются знающий. CK рассматривает все наши места как сессии seat1 и может только отметить одну сессию как активную. Этот факт виден путем выполнения getfacl/dev/snd /*. Мысль произошла со мной, что мы смогли редактировать acl соответствующих/dev/snd/файлов, на основе которого $DISPLAY конкретный пользователь использует. Это - опция, которую я не исследовал. Рассмотрите содействие в причину мультиместа путем исследования этой гипотезы и редактирования документа с результатами.

Ответвления мультиместа для ConsoleKit, GDM-2.3 и GDM-3.x действительно существуют, который должен предусмотреть автоматическую функциональность мультиместа.

Дополнительные примечания

1.) Было бы мудро также запретить пользователям от загружающихся модулей DISALLOW_MODULE_LOADING=1.

2.) автомечите икру =, не не совсем необходимо, как замечено в моем файле в качестве примера. Это не вызывает проблем.

7
ответ дан 2 October 2012 в 16:30

Мое понимание ситуации: доступ к pulseaudio ограничен активным сеансом, как отмечено в ConsoleKit (что-то вроде ACL). CK может пометить только один сеанс как активный за один раз.

В ConsoleKit имеется патч для добавления поддержки нескольких мест; это позволит ему сообщать обо всех активных местах как активных. Возможно, это решит вашу проблему. Требуется сотрудничество с диспетчером отображения, и есть патч для старых версий GDM , который добавляет эту поддержку.

Я получил многозадачность, работая в Natty (11.04), используя модифицированные пакеты ConsoleKit и GDM из PPA . Я еще не обновил Natty - мне потребовалось много времени, чтобы понять, как заставить его работать, и я беспокоюсь, что LightDM не будет работать с пропатченным ConsoleKit.

РЕДАКТИРОВАТЬ: я должен отметить, что Fedora 17 имеет несколько впечатляющих функций мультисайтов, некоторые из которых будут в Quantal. У них есть вики-страница, описывающая их подход . Ubuntu не может просто скопировать подход Fedora, потому что это потребует значительных изменений; Fedora использует systemd и GDM, а Ubuntu использует upstart и LightDM.

0
ответ дан 2 October 2012 в 16:30

Я недавно пытался решить проблему с PulseAudio и Мультиместом. Видя, что не было никакого изящного решения, мое обходное решение должно было использовать сеть.

Это решение удовлетворяет моему сценарию, потому что я - пользователь, который чаще всего находится в машине, и мое место чаще всего зарегистрировано. И мое место предназначено для левой руки настроенный, и никто больше не использует его.

В моем ~/.config/pulse/default.pa я скопировал конфигурацию системы /etc/pulse/default.pa и добавил следующую строку:

load-module module-native-protocol-tcp auth-anonymous=1 auth-ip-acl=127.0.0.1

В pulseaudio настройках других пользователей, добавьте туннель - или несколько, если это - то, в чем Вы нуждаетесь - с чем-то вперед:

load-module module-tunnel-sink server=127.0.0.1 sink=alsa_output.pci-0000_00_XX.X.iec958-stereo

Меняют имя приемника для соответствия тому в машине. Можно решить настроить более дружественное имя - что означает, что необходимо настроить это в pulseaudio файле настроек - но я просто использовал имя путем взгляда его с pacmd list-sinks.

Это не изящное решение, я, вероятно, попытаюсь использовать конфигурацию в масштабе всей системы, как предложено @Anthony в моей следующей буровой установке, но если Вы имеете много карт и просто хотите совместно использовать один, или немногие снижаются/получают, это - более "хирургическое" решение.

0
ответ дан 17 October 2019 в 16:03

Другие вопросы по тегам:

Похожие вопросы: