¿Cómo puedo usar las transmisiones de audio virtual PulseAudio para reproducir música a través de Skype?

20

Estoy tratando de escuchar la salida de audio de un proceso específico (A) y otro proceso (B) mientras redirijo la salida de audio de A a la entrada de audio de B. Esto sería el equivalente a reproducir música en Skype mientras escucha tanto la música como a su amigo y hacer que su amigo pueda escucharlo.

He intentado seguir el tutorial en openSUSE (Google "Buscando (quizás) un mezclador de audio para usar con Pulse Audio") e incluso he visto el video varias veces. Anteriormente probé JACK solo para descubrir que no reconocería mis auriculares, el Logitech G35.

Puedo reproducir la música, tanto mi amigo como yo la escuchamos, pero no puedo enviar mi voz al mismo tiempo. Es mi voz o la música que escucha mi amigo. ¿Cómo puedo también enviar mi voz?

Algunas fotos de mi configuración (usando una salida nula):

Pestaña de reproducción: ingrese la descripción de la imagen aquí

Pestaña de grabación: ingrese la descripción de la imagen aquí

Jake Thompson
fuente

Respuestas:

23

¡Después de muchas horas de retoques, finalmente lo logré!

Creé dos salidas nulas y creé dos loopbacks para el primero y un loopback para el segundo.

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

A continuación, abrí PulseAudio Volume Control (pavucontrol)

Estas son mis configuraciones. Los escribí en el orden en que aparecen. Los números van de arriba a abajo.

  • Pestaña de grabación:

    • Aplicaciones:
      • Todas las aplicaciones deben ingresar desde su auricular / micrófono.
      • Excepto que las aplicaciones a las que desea enviar el audio se deben configurar en una de las siguientes opciones. Si SOLO desea enviar el audio: Monitor de salida nula 1. Será la primera "salida nula" de la lista. Si desea enviar tanto el audio como su voz: Monitor de salida nula 2. Será la segunda "salida nula" de la lista.
    • Streams virtuales:
      • Loopback a salida nula (1): su auricular / micrófono
      • Bucle de retorno a su auricular / micrófono: Salida nula 1. Será la primera "Salida nula" en la lista.
      • Loopback a salida nula: salida nula 1. Será la primera "salida nula" de la lista.
  • Pestaña de reproducción:

    • Aplicaciones:
      • Todas las aplicaciones deben salir a su auricular / altavoz.
      • Excepto que la (s) aplicación (es) que desea grabar / enviar a través de Skype / stream deben configurarse como Salida nula 1. Será la primera "Salida nula" de la lista.
    • Transmisiones virtuales:
      • Bucle invertido de su auricular: Salida nula 2. Será la segunda "Salida nula" en la lista.
      • Bucle invertido del monitor de salida nula (1): su auricular.
      • Bucle invertido del monitor de salida nula (2): salida nula 2. Será la segunda "salida nula" de la lista.
Jake Thompson
fuente
11

solo para no confundirse con la "Salida nula", solo especifique los nombres como este:

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
fuente
1

Es posible ir más allá de la mejora propuesta por @MikWind y configurar las fuentes de los dispositivos de bucle invertido en el momento de la creación.

Finalmente obtuve un script bash para configurar todo lo que es constante:

#!/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

Después de haber luchado varias horas antes de comprender lo suficiente como para que funcione, compilé el resultado de mi investigación (guión, enlaces de documentación, explicaciones) en un repositorio git .

No estoy seguro si es lo suficientemente claro como para ser útil para alguien más que yo, pero desearía encontrar este tipo de documentación cuando hice mi propia investigación, por lo que recomendaría a cualquiera que intente hacer el mismo tipo de cosas para echar un vistazo.

toadjaune
fuente