Как я могу использовать виртуальные аудиопотоки PulseAudio для воспроизведения музыки через Skype?

20

Я пытаюсь прослушать аудиовыход определенного процесса (A) и другого процесса (B), перенаправляя аудиовыход A на аудиовход B. Это было бы равносильно воспроизведению музыки в Skype, когда вы слушаете музыку и вашего друга, и ваш друг сможет вас услышать.

Я пытался следовать этому руководству на openSUSE (Google «Ищу (возможно) аудио микшер для использования с Pulse Audio») и даже смотрел видео несколько раз. Ранее я пробовал JACK только для того, чтобы узнать, что он не распознает мою гарнитуру, Logitech G35.

Я могу играть музыку, у меня есть и мой друг, и я слышу ее, но я не могу послать свой голос одновременно. Это либо мой голос, либо музыка, которую слышит мой друг. Как я могу также отправить свой голос?

Некоторые фотографии моей установки (с использованием одного нулевого выхода):

Вкладка воспроизведения: введите описание изображения здесь

Вкладка записи: введите описание изображения здесь

Джейк Томпсон
источник

Ответы:

23

После многих часов работы я наконец достиг этого!

Я создал два нулевых выхода и создал две петли для первой и одну петлю для второй.

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 регулятор громкости (pavucontrol)

Это мои настройки. Я набрал их в порядке их появления. Числа идут сверху вниз.

  • Вкладка записи:

    • Приложения:
      • Все приложения должны вводиться с вашей гарнитуры / микрофона.
      • За исключением приложений, в которые вы хотите отправить аудио, должно быть установлено одно из следующих. Если вы ТОЛЬКО хотите отправить аудио: Монитор нулевого выхода 1. Это будет первый «нулевой выход» в списке. Если вы хотите отправить как аудио, так и ваш голос: Монитор нулевого выхода 2. Это будет второй «нулевой выход» в списке.
    • Виртуальные потоки:
      • Цикл возврата к нулевому выходу (1): гарнитура / микрофон
      • Возврат к вашей гарнитуре / микрофону: нулевой выход 1. Это будет первый «нулевой выход» в списке.
      • Возврат в нулевой выход: нулевой выход 1. Это будет первый «нулевой выход» в списке.
  • Вкладка воспроизведения:

    • Приложения:
      • Все приложения должны выводиться на вашу гарнитуру / динамик.
      • За исключением приложений, которые вы хотите записать / отправить через Skype / поток, должно быть установлено значение Null Output 1. Это будет первый «Null Output» в списке.
    • Виртуальные потоки:
      • Обратная связь вашей гарнитуры: нулевой выход 2. Это будет второй «нулевой выход» в списке.
      • Обратная петля монитора нулевого выхода (1): Ваша гарнитура.
      • Обратная петля монитора нулевого выхода (2): нулевой выход 2. Это будет второй «нулевой выход» в списке.
Джейк Томпсон
источник
11

просто, чтобы не перепутать с «нулевым выводом», просто укажите такие имена:

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
источник
1

Можно пойти еще дальше, чем улучшение, предложенное @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-репо .

Я не уверен, достаточно ли это ясно, чтобы быть полезным для кого-то, кроме меня, но мне хотелось бы, чтобы я нашел такую ​​документацию, когда проводил собственное исследование, поэтому я бы порекомендовал всем, кто пытается сделать то же самое, чтобы взглянуть.

toadjaune
источник