ALSA: envia áudio para dois dispositivos de áudio

3

No meu laptop, tenho uma placa de som onboard e também um fone de ouvido bluetooth conectado. Eu configurei o dispositivo bluetooth em /etc/asound.conf :

# cat /etc/asound.conf

pcm.bluetooth {
    type bluetooth
    device 12:34:56:78:9a:bc
    profile "auto"
}

ctl.bluetooth {
    type bluetooth
}

Agora posso reproduzir áudio no meu fone de ouvido especificando o novo dispositivo de áudio, como:

mplayer -ao alsa:device=bluetooth file.mp3

Se eu quiser jogar no meu dispositivo padrão, simplesmente omito o dispositivo:

mplayer file.mp3

No entanto, preciso configurar o ALSA, para que todo o som seja enviado aos dois dispositivos por padrão, sem ter que definir isso explicitamente por aplicativo.

ou seja:

mplayer file.mp3

deve ser reproduzido na placa de som do laptop, bem como no fone de ouvido bluetooth.

Como posso fazer isso?

    
por Martin Vegter 02.07.2016 / 13:15

2 respostas

3

Você deseja usar o multi -plugin.

Existem vários exemplos bem documentados de seu uso:

Das pessoas alsa: link

De alguém com uma pergunta semelhante aqui: link

    
por 04.07.2016 / 14:14
3

Aqui está uma maneira de fazer isso a partir de ~ / .asoundrc ; exemplo mostra uma placa ativa onblid e soundblaster unida sob o PCM padrão.

# duplicate audio to both devices
pcm.!default plug:both

ctl.!default {
  type hw
  card SB
}

pcm.both {
  type route;
  slave.pcm {
      type multi;
      slaves.a.pcm "sblive";
      slaves.b.pcm "onboard";
      slaves.a.channels 2;
      slaves.b.channels 4;
      bindings.0.slave a;
      bindings.0.channel 0;
      bindings.1.slave a;
      bindings.1.channel 1;

      bindings.2.slave b;
      bindings.2.channel 0;
      bindings.3.slave b;
      bindings.3.channel 1;
      bindings.4.slave b;
      bindings.4.channel 2;
      bindings.5.slave b;
      bindings.5.channel 3;
  }

  ttable.0.0 1;
  ttable.1.1 1;

  ttable.0.2 1; # front left
  ttable.1.3 1; # front right
  ttable.0.4 1; # copy front left to rear left
  ttable.1.5 1; # copy front right to rear right
}

ctl.both {
  type hw;
  card Live;
}

pcm.onboard {
   type dmix
   ipc_key 1024
   slave {
       pcm "hw:0,1"
       period_time 0
       period_size 2048
       buffer_size 65536
       buffer_time 0
       periods 128
       rate 48000
       channels 4
    }
    bindings {
       0 0
       1 1
       2 2
       3 3
    }
}

pcm.sblive {
   type dmix
   ipc_key 2048
   slave {
       pcm "hw:1,0"
       period_time 0
       period_size 2048
       buffer_size 65536
       buffer_time 0
       periods 128
       rate 48000
       channels 2
    }
    bindings {
       0 0
       1 1
    }
}

ctl.onboard {
   type hw
   card "SB"
}

ctl.sblive {
   type hw
   card "Live"
}

( Source )

    
por 11.07.2016 / 03:50