Posso canalizar entrada de uma placa de som do Linux em dois aplicativos diferentes?

2

Eu tenho um sistema Ubuntu 16.04.3 LTS com

  • uma placa de som ASUS Xonar DGX e
  • uma placa de som genérica USB.

Na nossa igreja, queremos poder transmitir um serviço e gravá-lo como um arquivo WAV. Para conseguir isso, eu tenho o cabo de saída de áudio de 3,5 mm da placa de som conectado a um divisor, de modo que há dois cabos para conectar o conector "Line In" em cada placa de som.

Depois, uso "arecord" para gravar o áudio em um cartão e "darkice" para criar um fluxo de MP3 no outro.

Idealmente, gostaria de ter uma placa de som para lidar com a gravação e o streaming simultaneamente. É possível uma coisa dessas? Ou eu estou preso usando duas placas de som com dois aplicativos?

    
por David White 08.09.2017 / 03:54

2 respostas

1

Sim, é facilmente possível. Você está realmente executando apenas o ALSA ou está executando o Pulseaudio (o padrão em basicamente todas as distros há muitos anos)?

Com o Pulseaudio, ele deve funcionar fora da caixa.

Com o ALSA, verifique se você está usando o nome do dispositivo plughw (que internamente adiciona um dsnoop pluging) em vez do nome do dispositivo hw . O plug-in dsnoop dividirá o fluxo de entrada em vários fluxos para diferentes aplicativos. / p>

Editar

Como eu disse, em vez de -D hw:0 etc. (modificar para seu endereço de hardware), use apenas -D plughw:0 para arecord e similar para o nome do dispositivo em darkice .

Uma condição é que nenhum outro programa use hw:0 diretamente. Todos eles devem usar plughw:0 .

Você realmente não precisa saber detalhes sobre dsnoop , a ALSA faz isso automaticamente para você. (Mas você pode ler os detalhes na página do plug-in que eu vinculei).

Você não precisa configurar seu próprio ~/.asoundrc , você não precisa modificar nenhum arquivo de configuração.

    
por 08.09.2017 / 09:00
0

Aceitei a resposta de dirkt, que me pegou na maior parte do caminho. Acontece que eu precisava criar uma interface dsnoop :

/etc/asound.conf

pcm.custom_snoop_card {
    type dsnoop
    ipc_key 420042
    ipc_key_add_uid 1
    slave {
        pcm "hw:0,0"   # the actual device
        format S16_LE
        channels 2
        rate 44100
    }
}

Agora posso especificar device = custom_snoop_card no meu darkice config e, simultaneamente, fazer uma gravação WAV com arecord -D custom_snoop_card -f S16_LE -c2 -r 44100 -vv myfile.wav

    
por 15.09.2017 / 23:43