Wie kann ich virtuelle Audio-Streams von PulseAudio verwenden, um Musik über Skype abzuspielen?

20

Ich versuche, die Audioausgabe eines bestimmten Prozesses (A) und eines anderen Prozesses (B) anzuhören, während ich die Audioausgabe von A auf die Audioeingabe von B umleitung. Dies ist das Äquivalent zum Abspielen von Musik in Skype, während Sie die Musik und Ihren Freund anhören und Ihr Freund Sie hören kann.

Ich habe versucht, dem Tutorial auf openSUSE (Google "Suche (vielleicht) nach einem Audio-Mixer zur Verwendung mit Pulse Audio") zu folgen, und habe mir das Video sogar mehrmals angesehen. Ich habe JACK zuvor nur versucht, um herauszufinden, dass mein Headset, das Logitech G35, nicht erkannt wird.

Ich kann die Musik spielen, habe meinen Freund und ich höre sie, aber ich kann nicht gleichzeitig meine Stimme senden. Es ist entweder meine Stimme oder die Musik, die mein Freund hört. Wie kann ich auch meine Stimme senden?

Einige Bilder von meinem Setup (mit einem Null Output):

Registerkarte "Wiedergabe": Bildbeschreibung hier eingeben

Registerkarte Aufnahme: Bildbeschreibung hier eingeben

Jake Thompson
quelle

Antworten:

23

Nach vielen Stunden des Bastelns habe ich es endlich geschafft!

Ich habe zwei Null-Ausgänge erstellt und zwei Loopbacks für den ersten und einen Loopback für den zweiten.

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

Als nächstes öffnete ich PulseAudio Volume Control (pavucontrol)

Das sind meine Einstellungen. Ich habe sie in der angegebenen Reihenfolge eingegeben. Die Zahlen gehen von oben nach unten.

  • Registerkarte Aufnahme:

    • Anwendungen:
      • Alle Anwendungen sollten über Ihr Headset / Mikrofon eingegeben werden.
      • Mit Ausnahme der Anwendung (en), an die Sie das Audio senden möchten, sollten Sie eine der folgenden Einstellungen vornehmen. Wenn Sie NUR Audio senden möchten: Monitor für Null-Ausgabe 1. Dies ist die erste "Null-Ausgabe" in der Liste. Wenn Sie sowohl Audio als auch Ihre Stimme senden möchten: Monitor von Null Output 2. Dies ist der zweite "Null Output" in der Liste.
    • Virtuelle Streams:
      • Loopback auf Null-Ausgang (1): Ihr Headset / Mikrofon
      • Loopback zu Ihrem Headset / Mikrofon: Null-Ausgang 1. Dies ist der erste "Null-Ausgang" in der Liste.
      • Loopback auf Null-Ausgang: Null-Ausgang 1. Dies ist der erste "Null-Ausgang" in der Liste.
  • Registerkarte "Wiedergabe":

    • Anwendungen:
      • Alle Anwendungen sollten auf Ihrem Headset / Lautsprecher ausgegeben werden.
      • Ausgenommen, die Anwendung (en), die Sie über Skype / Stream aufnehmen / senden möchten, sollten auf Null-Ausgabe 1 eingestellt sein. Dies ist die erste "Null-Ausgabe" in der Liste.
    • Virtuelle Streams:
      • Loopback Ihres Headsets: Null-Ausgang 2. Dies ist der zweite "Null-Ausgang" in der Liste.
      • Loopback des Monitors der Null-Ausgabe (1): Ihr Headset.
      • Loopback des Monitors der Null-Ausgabe (2): Null-Ausgabe 2. Dies ist die zweite "Null-Ausgabe" in der Liste.
Jake Thompson
quelle
11

Um nicht mit der "Null-Ausgabe" verwechselt zu werden, geben Sie einfach die folgenden Namen an:

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

Es ist möglich, die von @MikWind vorgeschlagene Verbesserung noch zu übertreffen und die Quellen der Loopback-Geräte zum Zeitpunkt der Erstellung zu konfigurieren.

Ich habe endlich ein Bash-Skript bekommen, mit dem ich alles einrichten kann, was konstant ist:

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

Nachdem ich mich einige Stunden gekämpft hatte, bevor ich genug verstanden hatte, um es zum Laufen zu bringen, stellte ich mein Forschungsergebnis (Skript, Dokumentationslinks, Erklärungen) in einem Git-Repo zusammen .

Ich bin mir nicht sicher, ob es klar genug ist, dass es jemand anderem als mir von Nutzen ist, aber ich wünschte, ich hätte diese Art von Dokumentation gefunden, als ich meine eigenen Nachforschungen anstellte Guck mal.

toadjaune
quelle