Я работаю на двух компьютерах с одной USB-гарнитурой. Я хочу слушать оба, перенаправив выход не-Linux-компьютеров в линейный вход Linux-компьютера (синий аудиоразъем) и микшируя сигнал в выход гарнитуры Linux-компьютера с помощью PulseAudio.
pavucontrol показывает устройство ввода "Встроенный аудио аналоговый стерео", которое позволяет мне выбирать порты, такие как "Линейный вход" (выбрано), "Передний микрофон", "Задний микрофон". Я вижу, как индикатор громкости устройства реагирует на воспроизведение звука на машине без Linux.
Как заставить PulseAudio воспроизводить этот аудиосигнал на выбранном мной устройстве вывода?
решение1
1. Загрузите модуль обратной связи
pacmd load-module module-loopback latency_msec=5
создает устройство воспроизведения и записи.
2. Настройте устройства в pavucontrol
В павуконтроле, вЗаписьна вкладке "Loopback" установите устройствоотвходное устройство к устройству, которое принимает линейный входной сигнал.
вВоспроизведениена вкладке "Loopback" установите устройствонавыходное устройство к устройству, через которое вы хотите слышать линейный входной сигнал.
3. Устранение неполадок
Если аудиосигнал имеет проблемы, удалите модуль pacmd unload-module module-loopback
и повторите попытку с более высоким latency_msec=
значением.
Дополнительные замечания
Ваш современный компьютер среднего класса может легко справиться с меньшей задержкой с помощью latency_msec=1
следующей опции:
pacmd load-module module-loopback latency_msec=1
Этот ответ стал возможным благодаряэтот пост на форуме. Спасибо!
решение2
Как указано впредпочтительный ответ
pacmd load-module module-loopback latency_msec=5
Который должен создать устройство воспроизведения и записи, похоже, не работает во всех случаях. В этом случае вы можете попробовать
pactl load-module module-loopback latency_msec=5
Обратите внимание на схожие аргументы с использованием pactl
У меня это не сработало с pacmd, а с pactl сработало.
Примечание: обе эти опции предназначены только для Pulse Audio, а не для Pipewire.
решение3
У меня очень похожая ситуация! 2 ПК, один Linux-компьютер (мой основной) и один Windows-компьютер. Я настроил что-то хорошее для автоматизации ДВУСТОРОННЕГО аудиоподключения, используя гарнитуру с Linux-компьютером и Pulseaudio, я слышу и Windows-компьютер, и могу говорить в микрофон, через Linux, обратно в микрофон Windows-компьютера.
Очевидно, что для этого потребуется не 1, а 2 кабеля AUX для подключения машин. Но работает как по волшебству с тех пор, как я однажды понял это. Чтобы облегчить задачу тем, кто хочет сделать то же самое, я поделюсь своим скриптом здесь. Все, что вам нужно сделать, чтобы это заработало, это найти два конкретных имени аудиоприемника для вашей машины и поместить их в переменные скрипта для них, если они отличаются от моих.
#!/usr/bin/env bash
# 2-way audio connection - Slaves 2nd device audio through this device:
# - Directs AUX in to default speakers (connect 2nd device -> AUX).
# - Directs Mic to AUX out (connect AUX out -> 2nd device AUX in).
#
# Then sleeps forever. Stops audio redirection when killed.
#
# Requires:
# sudo apt-get install pactl
#
# Manual Process:
# 1) pavucontrol > Configuration > Built-in Audio > Analog Stereo Duplex
# 2) Find - look for "analog-stereo" (no frills) in both commands:
# pacmd list-sources | grep name:
# pacmd list-sinks | grep name:
# 3) Select - enter found name or ID in this command:
# pactl load-module module-loopback source=$auxinsource source_dont_move=1 sink=$defaultsink
# 4) pavucontrol > Input > Built-in Analog Stereo > Line in (plugged in)
# 5) pavucontrol > Playback > Loopback from Built-in Analog Stereo > SELECT_SPEAKERS
# 6) pavucontrol > Output > Built-in Analog Stereo > Line Out (plugged in)
# 7) pavucontrol > Recording > Loopback to Built-in Analog Stereo > SELECT_HEADSET_MIC
#
# BREAKPOINT:
# read -n 1 -s -r -p 'BREAKPOINT'
auxinsource='alsa_input.pci-0000_00_1f.3.analog-stereo' # Get name of AUX in (Replace these with yours!)
micsink='alsa_output.pci-0000_00_1f.3.analog-stereo' # Get name of AUX out (Replace these with yours!)
set -e
printf '\n 1) Connect Audio IN (Win->)...'
defaultsink=$(pactl get-default-sink) # Get name of currently selected speakers
modulein=$(pactl load-module module-loopback source=$auxinsource source_dont_move=1 sink=$defaultsink) # Locked from manual selection in GUI, will not jump around
#modulein=$(pactl load-module module-loopback source=$auxinsource sink=$defaultsink) # Unlocked for manual selection in GUI, but may jump around
#echo ' ' $defaultsink ' connected!' # Debug output
echo ' connected!'
printf '\n 2) Connect Audio OUT (<-Mic)...'
modulemic=$(pactl load-module module-loopback latency_msec=10 source_dont_move=1 sink=$micsink) # Locked from manual selection in GUI, will not jump around
#modulemic=$(pactl load-module module-loopback latency_msec=10 sink=$micsink) # Unlocked for manual selection in GUI, but may jump around
#echo ' ' $micsink ' connected!' # Debug output
echo ' connected!'
printf '\n CTRL+C to stop' # Flavor text.
function cleanup
{
pactl unload-module $modulemic
if [ ! -z ${modulein+x} ]; then
pactl unload-module $modulein
else
echo
fi
}
trap cleanup EXIT
sleep infinity
А для пошагового руководства по устранению неполадок этой настройки (необязательно)
#!/usr/bin/env bash
# Troubleshooting steps for audioconnect
#
# Requires:
# sudo apt-get install pactl
#
# BREAKPOINT:
# read -n 1 -s -r -p 'BREAKPOINT'
printf ' 1) pavucontrol > Configuration > Built-in Audio > Analog Stereo Duplex'
read -n 1 -s -r -p ''
echo ': OK'
printf ' 2) pavucontrol > Input > Built-in Analog Stereo > Line in (plugged in)'
read -n 1 -s -r -p ''
echo ': OK'
printf ' 3) pavucontrol > Playback > Loopback from Built-in Analog Stereo > SELECT_SPEAKERS'
read -n 1 -s -r -p ''
echo ': OK'
printf ' 4) pavucontrol > Output > Built-in Analog Stereo > Line Out (plugged in)'
read -n 1 -s -r -p ''
echo ': OK'
printf ' 5) pavucontrol > Recording > Loopback to Built-in Analog Stereo > SELECT_MIC'
read -n 1 -s -r -p ''
echo ': OK'