Я пытаюсь прослушать аудиовыход определенного процесса (A) и другого процесса (B), перенаправляя аудиовыход A на аудиовход B. Это было бы равносильно воспроизведению музыки в Skype, когда вы слушаете музыку и вашего друга, и ваш друг сможет вас услышать.
Я пытался следовать этому уроку на openSUSE (Google «Ищу (может быть)) аудио микшер для использования с Pulse Audio») и даже несколько раз смотрел видео. Ранее я пробовал JACK только для того, чтобы узнать, что он не распознает мою гарнитуру, Logitech G35.
Я могу играть музыку, у меня есть и мой друг, и я ее слышу, но я не могу отправить свой голос одновременно. Это либо мой голос, либо музыка, которую слышит мой друг. Как я также могу отправить свой голос?
Некоторые изображения моей настройки (с использованием одного нулевого выхода):
Вкладка воспроизведения:
Вкладка записи:
После многих часов работы я наконец-то достиг этого!
Я создал два нулевых выхода и создал две петли для первой и одну петлю для второго.
pactl load-module module-null-sink sink_name=Virtual1
pactl load-module module-null-sink sink_name=Virtual2
pactl load-module module-loopback sink=Virtual1
pactl load-module module-loopback sink=Virtual1
pactl load-module module-loopback sink=Virtual2
Далее я открыл PulseAudio Volume Control (pavucontrol)
Это мои настройки. Я набрал их в порядке их появления. Числа идут сверху вниз.
Вкладка записи:
Воспроизведение вкладка:
Просто, чтобы не перепутать с «нулевым выводом», просто укажите такие имена:
pactl load-module module-null-sink sink_name=Virtual1 sink_properties=device.description="NAME HERE (mic+music)"
pactl load-module module-null-sink sink_name=Virtual2 sink_properties=device.description="NAME HERE (only music)"
pactl load-module module-loopback sink=Virtual1
pactl load-module module-loopback sink=Virtual1
pactl load-module module-loopback sink=Virtual2
Можно пойти еще дальше, чем улучшение, предложенное @MikWind, и настроить источники устройств обратной связи во время создания.
Я наконец-то получил скрипт bash для настройки всего, что постоянно:
#!/bin/bash
MICROPHONE="alsa_input.pci-0000_00_1b.0.analog-stereo"
SPEAKERS="alsa_output.pci-0000_00_1b.0.analog-stereo"
# Create the null sinks
# virtual1 gets your audio source (mplayer ...) only
# virtual2 gets virtual1 + micro
pactl load-module module-null-sink sink_name=virtual1 sink_properties=device.description="virtual1"
pactl load-module module-null-sink sink_name=virtual2 sink_properties=device.description="virtual2"
# Now create the loopback devices, all arguments are optional and can be configured with pavucontrol
pactl load-module module-loopback source=virtual1.monitor sink=$SPEAKERS
pactl load-module module-loopback source=virtual1.monitor sink=virtual2
pactl load-module module-loopback source=$MICROPHONE sink=virtual2
Поработав несколько часов, прежде чем понять, что достаточно, чтобы заставить его работать, я скомпилировал свой результат исследования (скрипт, ссылки на документацию, пояснения ) в git-репо .
Я не уверен, достаточно ли это понятно, чтобы быть полезным для кого-то, кроме меня, но мне хотелось бы, чтобы я нашел такую документацию, когда проводил собственное исследование, поэтому я бы порекомендовал всем, кто пытался это сделать. такие же вещи, чтобы посмотреть.