Я использую функцию PulseAudio сетевых звуковых устройств (не Multicast / RTP) для воспроизведения звука с моего нетбука на аудиооборудовании, подключенном к HTPC, когда дома. Это создает виртуальное звуковое устройство, которое я затем могу использовать вместо физического встроенного. Большую часть времени это работает просто отлично. Однако иногда виртуальное звуковое устройство просто не появляется. Отключение от сети и повторное подключение к ней иногда помогают, но не всегда, и это раздражает и потенциально вредно для существующих TCP-подключений.
Таким образом, мой вопрос в основном таков: есть ли способ сказать PulseAudio: «Эй, просто посмотрите еще раз, если вы действительно не можете найти сетевое звуковое устройство». ] Редактировать: Выгрузка и перезагрузка module-zeroconf-discover
с помощью pacmd
тоже не помогает, и не выглядит как проблема авахи как таковая, поскольку avahi-browse -t --all | grep PulseAudio
показывает много правильные вещи, даже если устройства не перечислены в pavucontrol или pacmd list-sinks
.
Редактировать 2: Я использую Ubuntu 12.04 на обоих полях для всех различий, которые он может иметь.
$ pacmd
Welcome to PulseAudio! Use "help" for usage information. >>>
>>> 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-stereo"
$ 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"
$ pacmd set-default-sink home_theater
Простой sudo service avahi-daemon restart
добивается цели, даже если avahi-browse
видит устройства до перезапуска avahi. Спасибо Таккату за то, что он направил меня в правильном направлении.
Этот ответ не проверен, поэтому он может не сработать, но может привести вас в правильном направлении.
Я могу подтвердить нерешенные проблемы со службой Avahi , которая иногда не может подключиться к серверу PulseAudio. Мы можем успешно восстановить соединение, либо перезапустив сеть, либо сервер pulseaudio, но, увы, это не всегда работает.
Чтобы преодолеть эту проблему, мы можем попытаться установить сетевой аудиопоток, используя собственный протокол TCP для потоковой передачи непосредственно на IP, а не с помощью разрешения имен Avahi.
Для этого мы можем туннелировать удаленный приемник, загрузив модуль модульный туннель-приемник на стороне приемника. На отправителе мы должны включить собственный протокол TCP, загрузив module-native-protocol-tcp .
См. Также этот вопрос для терминологии и определения переменной PULSE_SERVER
:
Также следуйте PulseAudio Wiki по сетевым подключениям .
Вы можете попробовать pulseaudio -k
, который убивает службу pulseaudio (кажется, он запускается снова автоматически). Это вернуло мне вещи назад.
Другая вещь, которая иногда помогает, снимает флажки и затем повторно ставит галочки в Pulseaudio Preferences
(a.k.a. paprefs
). Флажки Make discoverable PulseAudio network sound devices available locally
в Network Access
и Enable network access to local sound devices
в Network Server
. Очевидно, это работает только для того, что вы используете.