Как я могу форсировать повторное обнаружение виртуальных звуковых устройств PulseAudio?
Я использую функцию PulseAudio сетевых звуковых устройств (не Multicast/RTP) для воспроизведения звука с моего нетбука на аудиооборудовании, подключенном к HTPC, когда дома. Это создает виртуальное звуковое устройство, которое я затем могу использовать вместо физического встроенного. Большую часть времени это работает просто отлично. Однако иногда виртуальное звуковое устройство просто не появляется. Отключение от сети и повторное подключение к ней иногда помогают, но не всегда, и это раздражает и потенциально вредно для существующих соединений TCP.
Итак, мой вопрос в основном таков: есть ли способ сказать PulseAudio: "Эй, просто посмотрите еще раз, если вы действительно не можете найти сетевое звуковое устройство".?
Редактировать: выгрузка и перезагрузка module-zeroconf-discover
с pacmd
тоже не помогает и, похоже, это не проблема авахи как таковая avahi-browse -t --all | grep PulseAudio
показывает много правильных вещей, даже если устройства не перечислены в pavucontrol или pacmd list-sinks
,
Изменить 2: Я использую Ubuntu 12.04 на обоих полях для всех различий, которые это может иметь.
4 ответа
Просто sudo service avahi-daemon restart
делает трюк, хотя avahi-browse
видит устройства до перезагрузки avahi. Спасибо Таккату за то, что он указал мне правильное направление.
- На компьютере "Sink" (на котором вы хотите воспроизводить звук) откройте командную оболочку PulseAudio, войдя в терминал и выполнив следующую команду.
$ pacmd
Вы увидите Python-подобную оболочку со следующим приветственным сообщением.Welcome to PulseAudio! Use "help" for usage information. >>>
- Перечислите устройства, которые могут воспроизводить звук на ПК, по команде в оболочке PulseAudio.
>>> list-sinks
Теперь вы увидите подробный список всех звуковых поглотителей. - Просто запишите полное название раковины на ваш выбор. Это появилось бы как атрибут звуковой карты. Например, в моем случае это:
1 sink(s) available. index: 0 name: <alsa_output.pci-0000_00_1b.0.analog-stereo>
...
Интересующая меня строка - просто "alsa_output.pci-0000_00_1b.0.analog-стерео"
- Теперь перейдите на исходный компьютер (т. Е. Источник аудиопотоков мультимедиа), откройте терминал и выполните следующую команду
$ pactl load-module module-tunnel-sink "server=192.168.1.105 sink=alsa_output.pci-0000_00_1b.0.analog-stereo sink_name=home_theater"
Здесь 192.168.1.105 - это IP-адрес компьютера-получателя, "alsa_output.pci-0000_00_1b.0.analog-стерео" - это строка, которую вы только что скопировали с терминала приемника, а "home_theater" - просто причудливое имя для вызова этого виртуального выхода звука устройство на вашем компьютере. - Наконец, выберите это виртуальное звуковое устройство:
$ pacmd set-default-sink home_theater
Уолла!!
Этот ответ не проверен, поэтому он может не сработать, но может привести вас в правильном направлении.
Я могу подтвердить нерешенные проблемы с сервисом Avahi, который иногда не может подключиться к серверу PulseAudio. Мы можем успешно восстановить соединение, либо перезапустив сеть, либо сервер pulseaudio, но, увы, это не всегда работает.
Чтобы преодолеть эту проблему, мы можем попытаться установить сетевой аудиопоток, используя собственный протокол TCP для потоковой передачи непосредственно на IP, а не с помощью разрешения имен Avahi.
Для этого мы можем туннелировать удаленный приемник, загрузив модуль-туннель-приемник на стороне приемника. На отправителе мы должны включить собственный протокол TCP, загрузив module-native-protocol-tcp.
Смотрите также этот вопрос для терминологии и как определить PULSE_SERVER
переменная:
Это довольно старый вопрос для Ubuntu 9.04, но с моей точки зрения терминология и процедуры не сильно изменились с тех пор.
Пожалуйста, также следуйте PulseAudio Wiki по сетевым подключениям.
Вы могли бы попробовать pulseaudio -k
, который убивает службу pulseaudio (кажется, снова запускается автоматически). Это вернуло мне вещи раньше.
Другая вещь, которая иногда помогает, снимает галочки, а затем снова ставит галочки в Pulseaudio Preferences
(ака paprefs
). Флажки есть Make discoverable PulseAudio network sound devices available locally
в Network Access
, а также Enable network access to local sound devices
в Network Server
, Очевидно, это работает только для того, что вы используете.