Compartilhe um fluxo de reprodução de áudio por meio de uma conversa de áudio ao vivo (vídeo) como o Skype

4

Em conversas que usam o Skype, muitas vezes desejo compartilhar a saída de som (por exemplo, de um vídeo do YouTube) com outras pessoas com quem estou falando.

Então eu estou procurando uma maneira de direcionar a saída para a entrada de gravação (para que os outros membros ouçam a saída de som), mas eu ainda posso ouvir a saída por mim mesmo . Além disso, ainda quero poder falar com eles enquanto compartilho a saída de som com eles.

Como eu faria isso? Eu ficaria muito grato!

Parte da minha pergunta foi respondida aqui: Como passar / gravar saída de áudio como um dispositivo de entrada? (mas só permite configurar o fluxo de saída como entrada, sem sobrepor o microfone real)

    
por GEO 14.02.2014 / 23:03

1 resposta

4
  1. Verifique os id's

    $ pactl list short sources
    0   alsa_output.pci-0000_01_00.1.hdmi-stereo.monitor    module-alsa-card.c  s16le 2ch 44100Hz   SUSPENDED
    1   alsa_output.pci-0000_00_1b.0.analog-stereo.monitor  module-alsa-card.c  s16le 2ch 44100Hz   IDLE
    2   alsa_input.pci-0000_00_1b.0.analog-stereo   module-alsa-card.c  s16le 2ch 44100Hz   SUSPENDED
    3   combined.monitor    module-combine-sink.c   s16le 2ch 44100Hz   SUSPENDED
    
    $ pactl list short sinks
    0   alsa_output.pci-0000_01_00.1.hdmi-stereo    module-alsa-card.c  s16le 2ch 44100Hz   RUNNING
    1   alsa_output.pci-0000_00_1b.0.analog-stereo  module-alsa-card.c  s16le 2ch 48000Hz   RUNNING
    2   combined    module-combine-sink.c   s16le 2ch 44100Hz   IDLE
    
  2. Crie dois coletores virtuais, ( Virtual1 mic + music, Virtual2 music)

    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
    
  3. Microfone de loopback para Virtual1

    pactl load-module module-loopback latency_msec=1 sink=Virtual1
    
  4. Loopback Virtual2.monitor a Virtual1

    pactl load-module module-loopback latency_msec=1 sink=Virtual1 source=Virtual2.monitor
    
  5. Loopback Virtual2.monitor para estéreo analógico (no meu caso)

    pactl load-module module-loopback latency_msec=1 sink=1 source=Virtual2.monitor
    
  6. Em seguida, abra pavucontrol :

    • Dispositivo de entrada: defina o fallback como Virtual1.monitor ou usando o CLI:

      pactl set-default-source Virtual1.monitor
      
    • Dispositivos de saída: defina o padrão como Estéreo analógico (no meu caso) ou usando o CLI:

      pactl set-default-sink 1
      
    • Gravação: confirme o Skype a partir de Virtual1.monitor ou usando o CLI (removo algumas linhas dos resultados, avconv como exemplo):

      $ pactl list short clients
      23  protocol-native.c   chromium-browser
      24  protocol-native.c   chromium-browser
      45  protocol-native.c   pavucontrol
      237 protocol-native.c   avconv
      239 protocol-native.c   pactl
      
      $ pactl list short source-outputs
      35  0   45  protocol-native.c   float32le 1ch 25Hz
      36  1   45  protocol-native.c   float32le 1ch 25Hz
      37  2   45  protocol-native.c   float32le 1ch 25Hz
      38  3   45  protocol-native.c   float32le 1ch 25Hz
      39  4   45  protocol-native.c   float32le 1ch 25Hz
      41  0   45  protocol-native.c   float32le 1ch 25Hz
      42  1   45  protocol-native.c   float32le 1ch 25Hz
      52  1   45  protocol-native.c   float32le 1ch 25Hz
      54  1   237 protocol-native.c   s16le 2ch 48000Hz
      
      $ pactl move-source-output 54 Virtual1.monitor
      
    • Reprodução: defina o reprodutor de música como Virtual2 (2º dispositivo nulo) e confirme o Skype em estéreo analógico. ou através da CLI ( chromium como exemplo, veja o anterior pactl list short clients ):

      $ pactl list short sink-inputs
      17  3   24  protocol-native.c   s16le 2ch 44100Hz
      58  0   -   module-combine-sink.c   s16le 2ch 44009Hz
      59  1   -   module-combine-sink.c   s16le 2ch 44100Hz
      
      $ pactl move-sink-input 17 Virtual2       
      

Diagrama simples ( / , \ loopbacks da esquerda para a direita):

            Microphone      ---
                               \                   
            Virtual1.mon    ------  Virtual1    >   Skype
                               /  
    VLC   > Virtual2.mon    ------  Virtual2
                               \
    Skype > AnalogSt.mon    ------  AnalogSt    >   Headset

Para voltar (uso normal), veja Pulseaudio loopback descarrega dispositivos de saída de áudio

  • Verifique o ID do módulo:

    pactl list short modules
    
  • Descarregar um único módulo (ou um por um)

    pactl unload-module id
    
  • Ou (recarregue com os módulos padrão):

    pulseaudio -k
    

Notas:

  • Eu uso sink id (ex .: 1) mas se você quiser fazer um script é melhor usar nomes. (Eu evitei isso aqui porque eles são longos).

  • Como faço para alternar para outro coletor de saída de áudio no XFCE? contém um bom script para obter o fluxo id do nome a ser usado com move-sink-input e move-source-output .

  • Eu usei latency_msec=1 , o que pode levar a um alto uso da CPU. Em conversas de áudio, você pode não se importar com o atraso entre a música e o microfone. Você pode removê-lo ou aumentá-lo. Mas para gravar mix, você pode procurar por um atraso muito pequeno entre a música & amp; microfone.

    Como testei, o atraso é de quase meio a um segundo.

  • Acho que algumas vezes é difícil descobrir o que está acontecendo com as ferramentas do Jack. Ficará claro com o mapa gráfico:

    
por user.dz 15.02.2014 / 01:44

Tags