Как создать новое виртуальное устройство Pipewire, которое объединит реальные входные и выходные данные в новый вход?
Моя проблема заключается в следующем: я разговариваю с друзьями через голосовой чат и в какой-то момент мне также хотелось бы добавить к этому немного музыки. Итак, моя текущая настройка такова:
Microphone (Input device) -> Voice software
Music player -> Headphones (Output device)
Я хотел бы иметь это:
Music player -> Headphones
Music player -\
-> ? -> Voice software
Microphone -/
Я немного просмотрел вики Pipewire , и особенно часть овиртуальных устройствах показалась мне очень актуальной, но после того, как я поигрался с большим количествомpw-loopback
В конце концов я сдался.
В конце концов, я думаю, мне понадобится виртуальное устройство ввода, чтобы его можно было выбирать даже в моих приложениях для записи.
Это вообще правильный подход?
2 ответа
Если вы хотите совместить голосовой ввод (микрофон) и вывод музыкального проигрывателя, то настройка будет такой:
Music player -\
-> Combined Sink/Source -> Virtual Microphone -> Voice software
Microphone -/
Вот прохождение:
1. Создайте интерфейс комбинированного приемника
pactl load-module module-null-sink media.class=Audio/Sink sink_name=my-combined-sink channel_map=stereo
2. Создайте виртуальный микрофон.
pactl load-module module-null-sink media.class=Audio/Source/Virtual sink_name=my-virtualmic channel_map=front-left,front-right
3. Подключите микрофон и выход музыкального плеера к объединенной раковине.
Примечание. Имя интерфейса микрофона и имя выходного интерфейса музыкального проигрывателя могут отличаться. Бегатьpw-link -o
чтобы показать список выходов.
pw-link spotify:output_FL my-combined-sink:playback_FL
pw-link spotify:output_FR my-combined-sink:playback_FR
pw-link alsa_input.pci-0000_00_1f.3.analog-stereo:capture_FL my-combined-sink:playback_FL
pw-link alsa_input.pci-0000_00_1f.3.analog-stereo:capture_FR my-combined-sink:playback_FR
4. Подключите комбинированную раковину к виртуальному микрофону.
pw-link my-combined-sink:monitor_FL my-virtualmic:input_FL
pw-link my-combined-sink:monitor_FR my-virtualmic:input_FR
Теперь вы можете указать голосовому программному обеспечению использовать этот виртуальный микрофон или установить виртуальный микрофон в качестве голосового ввода по умолчанию.
Вот заскриптованная версия ответа от Пуджианто. Это создаст объединенный виртуальный микрофон с другим приложением (которое, как предполагается, воспроизводит стерео, имеет уникальное имя и доступно для поиска).
напримерcombine_audio.sh spotify
Сценарий также удалит все активные нулевые приемники, так что будьте осторожны, но я думаю, что это не так часто встречается при обычном использовании? Я использую это со Skype и OBS, чтобы я мог общаться с людьми и транслировать звук приложений/игр, а также мой микрофон, не зацикливая их звук. Возможно, вам придется перезапустить все, чтобы микрофон появился, но как только он появится, вы можете приложения с горячей заменой без каких-либо проблем.
Вам также необходимо проверить имя вашего микрофона, например, сценарий ниже использует мою веб-камеру.
#!/bin/bash
SINK_NAME=combined-app-sink
VIRTUAL_MIC_NAME=my-virtualmic
MIC_SOURCE=alsa_input.usb-046d_Logitech_StreamCam_901DCE45-02.analog-stereo
results=$(pw-link -o | grep ${1})
IFS=$'\n' read -ra ADDR -d $'\0' <<< "$results"
# Unload if exists
pactl unload-module module-null-sink
# Make new sinks
pactl load-module module-null-sink media.class=Audio/Sink sink_name=$SINK_NAME channel_map=stereo >> /dev/null
pactl load-module module-null-sink media.class=Audio/Source/Virtual sink_name=$VIRTUAL_MIC_NAME channel_map=front-left,front-right >> /dev/null
# Extract app name
IFS=':'
read -a APP_STR <<< ${ADDR[0]}
echo "Linking app ${APP_STR} to ${SINK_NAME}"
pw-link "${APP_STR}":output_FL $SINK_NAME:playback_FL
pw-link "${APP_STR}":output_FR $SINK_NAME:playback_FR
echo "Linking $MIC_SOURCE to ${SINK_NAME}"
pw-link $MIC_SOURCE:capture_FL $SINK_NAME:playback_FL
pw-link $MIC_SOURCE:capture_FR $SINK_NAME:playback_FR
echo "Creating virtual mic: $VIRTUAL_MIC_NAME"
pw-link $SINK_NAME:monitor_FL $VIRTUAL_MIC_NAME:input_FL
pw-link $SINK_NAME:monitor_FR $VIRTUAL_MIC_NAME:input_FR
Можно объединить с https://askubuntu.com/questions/355082/pulseaudio-loopback-unload-audio-output-devices , чтобы сделать выгрузку более интеллектуальной.