Come posso utilizzare i flussi audio virtuali PulseAudio per riprodurre musica su Skype?


20

Sto provando ad ascoltare l'uscita audio di un processo specifico (A) e un altro processo (B) mentre reindirizzo l'uscita audio di A all'ingresso audio di B. Questo equivarrebbe a riprodurre musica su Skype mentre ascolti sia la musica che il tuo amico e fai in modo che il tuo amico sia in grado di ascoltarti.

Ho provato a seguire il tutorial su openSUSE (Google "Cercando (forse) un mixer audio da usare con Pulse Audio") e ho persino guardato il video più volte. In precedenza ho provato JACK solo per scoprire che non riconoscerà il mio auricolare, Logitech G35.

Sono in grado di riprodurre la musica, avere sia il mio amico che l'ascolto ma non riesco a inviare la mia voce allo stesso tempo. È la mia voce o la musica che il mio amico sente. Come posso anche inviare la mia voce?

Alcune immagini della mia configurazione (usando un'uscita Null):

Scheda riproduzione: inserisci qui la descrizione dell'immagine

Scheda di registrazione: inserisci qui la descrizione dell'immagine

Risposte:


23

Dopo molte ore di armeggiamento l'ho finalmente raggiunto!

Ho creato due uscite Null e due loopback per il primo e uno per il secondo.

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

Successivamente ho aperto PulseAudio Volume Control (pavucontrol)

Queste sono le mie impostazioni. Li ho digitati nell'ordine in cui appaiono. I numeri vanno dall'alto verso il basso.

  • Scheda di registrazione:

    • applicazioni:
      • Tutte le applicazioni devono essere immesse dalle cuffie / dal microfono.
      • Ad eccezione delle applicazioni a cui si desidera inviare l'audio, è necessario impostare una delle seguenti opzioni. Se si desidera inviare SOLO l'audio: Monitor dell'uscita nulla 1. Sarà il primo "Uscita nulla" nell'elenco. Se si desidera inviare sia l'audio che la voce: Monitor dell'uscita nulla 2. Sarà la seconda "uscita nulla" nell'elenco.
    • Stream virtuali:
      • Uscita da loopback a null (1): l'auricolare / il microfono
      • Loopback per l'auricolare / microfono: Uscita Null 1. Sarà la prima "Uscita Null" nell'elenco.
      • Uscita da loopback a null: output nullo 1. Sarà il primo "output nullo" nell'elenco.
  • Scheda riproduzione:

    • applicazioni:
      • Tutte le applicazioni dovrebbero essere trasmesse all'auricolare / altoparlante.
      • Tranne che le applicazioni che si desidera registrare / inviare tramite Skype / stream devono essere impostate su Null Output 1. Sarà il primo "Null Output" nell'elenco.
    • Flussi virtuali:
      • Loopback delle tue cuffie: Uscita Null 2. Sarà la seconda "Uscita Null" nell'elenco.
      • Loopback del monitor dell'uscita nulla (1): l'auricolare.
      • Loopback di Monitor of Null Output (2): Null Output 2. Sarà il secondo "Null Output" nell'elenco.

11

solo per non confondersi con l '"output null", basta specificare i nomi in questo modo:

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

1

È possibile andare anche oltre il miglioramento proposto da @MikWind e configurare le origini dei dispositivi di loopback al momento della creazione.

Finalmente ho ottenuto uno script bash per configurare tutto ciò che è costante:

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

Dopo aver lottato parecchie ore prima di capire abbastanza per farlo funzionare, ho compilato il mio risultato di ricerca (sceneggiatura, collegamenti alla documentazione, spiegazioni) in un repository git .

Non sono sicuro che sia abbastanza chiaro per essere utile a chiunque altro che a me, ma vorrei aver trovato questo tipo di documentazione quando ho fatto le mie ricerche, quindi consiglierei a chiunque cerchi di fare lo stesso tipo di cose per dare un'occhiata.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.