ALSA:将音频发送到两个音频设备

ALSA:将音频发送到两个音频设备

在我的笔记本电脑上,我有一个板载声卡,还有一个连接的蓝牙耳机。我已在以下位置配置了蓝牙设备/etc/asound.conf

# cat /etc/asound.conf

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

ctl.bluetooth {
    type bluetooth
}

现在我可以通过指定新的音频设备来向耳机播放音频,例如:

mplayer -ao alsa:device=bluetooth file.mp3

如果我想在默认设备上播放,我只需忽略该设备即可:

mplayer file.mp3

但是,我需要配置 ALSA,以便默认情况下所有声音都会发送到两个设备,而无需为每个应用程序显式设置此设置。

IE:

mplayer file.mp3

应该在笔记本电脑声卡和蓝牙耳机上播放。

我怎样才能做到这一点 ?

答案1

这是一种方法〜/.asoundrc;示例显示了在默认 PCM 下联合使用的板载和 Soundblaster Live 卡。

# 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"
}

来源

答案2

您想使用multi- 插件。

存在几个有据可查的使用示例:

来自阿尔萨人:https://alsa.opensrc.org/TwoCardsAsOne

来自有类似问题的人:https://unix.stackexchange.com/a/194631/127903

答案3

如果pulseaudio也是一个选项,那么有一个优雅的解决方案可以创建一个多输出设备,将输出复制到所有其他输出。

简而言之:

  • 安装并运行帕普夫斯或者
  • pactl 加载模块模块组合接收器

https://askubuntu.com/questions/78174/play-sound-through-two-or-more-outputs-devices

相关内容