Como posso usar os streams de áudio virtual PulseAudio para reproduzir música pelo Skype?

19

Estou tentando ouvir a saída de áudio de um processo específico (A) e outro processo (B) ao redirecionar a saída de áudio de A para a entrada de áudio de B. Isso seria o equivalente a tocar música no Skype enquanto ouve a música e o seu amigo e o seu amigo poderá ouvi-lo.

Eu tentei seguir o tutorial sobre o openSUSE (Google "Looking (talvez) para mixer de áudio para uso com Pulse Audio") sobre isso e até assisti o vídeo várias vezes. Eu já tentei JACK apenas para descobrir que não vai reconhecer o meu fone de ouvido, o Logitech G35.

Eu sou capaz de tocar a música, tenho meu amigo e eu ouço, mas não consigo enviar minha voz ao mesmo tempo. É minha voz ou a música que meu amigo ouve. Como eu também posso enviar minha voz?

Algumas fotos da minha configuração (usando uma saída nula):

Guia Reprodução:

Guia Gravação:

    
por Jake Thompson 19.02.2013 / 01:39

3 respostas

22

Depois de muitas horas de ajustes, finalmente consegui!

Eu criei duas saídas nulas e criei dois loopbacks para o primeiro e um loopback para o 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

Em seguida, abri o Controle de Volume do PulseAudio (pavucontrol)

Estas são as minhas configurações. Eu digitei na ordem em que aparecem. Os números vão de cima para baixo.

  • guia Gravação:

    • Aplicativos:
      • Todos os aplicativos devem ser inseridos no fone de ouvido / microfone.
      • Exceto que o (s) aplicativo (s) para o qual deseja enviar o áudio deve ser definido como um dos seguintes. Se você deseja enviar apenas o áudio: Monitor de Saída Nula 1. Será a primeira "Saída Nula" na lista. Se você quiser enviar o áudio e a sua voz: Monitor de Saída Nula 2. Será a segunda "Saída Nula" na lista.
    • Transmissões virtuais:
      • Loopback para saída nula (1): seu fone de ouvido / microfone
      • Loopback para o fone de ouvido / microfone: Saída nula 1. Será a primeira "Saída nula" na lista.
      • Loopback para saída nula: saída nula 1. Será a primeira "saída nula" na lista.
  • guia Reprodução:

    • Aplicativos:
      • Todos os aplicativos devem ser enviados para o fone de ouvido / alto-falante.
      • Exceto o (s) aplicativo (s) que você deseja gravar / enviar através do Skype / stream deve ser definido como Saída nula 1. Será a primeira "Saída nula" na lista.
    • Fluxos virtuais:
      • Loopback do seu fone de ouvido: Saída nula 2. Será a segunda "Saída nula" na lista.
      • Loopback do monitor de saída nula (1): seu fone de ouvido.
      • Loopback do Monitor de Saída Nula (2): Saída Nula 2. Será a segunda "Saída Nula" na lista.
por Jake Thompson 19.02.2013 / 20:31
11

apenas para não ficar confuso com a "saída nula", basta especificar os nomes 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
    
por MikWind 23.08.2013 / 01:16
0

É possível ir ainda além da melhoria proposta pelo @MikWind e configurar as origens dos dispositivos de loopback no momento da criação.

Eu finalmente consegui um script bash para configurar tudo o que é 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
Tendo eu mesmo lutado várias horas antes de entender o suficiente para fazê-lo funcionar, eu compilei o resultado da minha pesquisa (script, links de documentação, explicações) em um git repo .

Eu não tenho certeza se é claro o suficiente para ser útil para qualquer outra pessoa além de mim, mas eu gostaria de encontrar este tipo de documentação quando eu fiz minha própria pesquisa, então eu recomendo que alguém tente fazer o mesmo tipo de coisas para dar uma olhada.

    
por toadjaune 14.05.2017 / 14:01