【问题标题】:Enabling two apps to use a single sound device让两个应用程序使用一个声音设备
【发布时间】:2017-11-01 21:43:08
【问题描述】:

我有:

  • USB 声音也是“设备”或“hw:1,0”
  • Asterisk 控制台配置为使用“plughw:1,0”

这很有效,让我可以使用 USB 声音通过 Asterisk 拨打和接听语音电话。

我还想在通话期间使用 multimon 解码 DTMF 音调。如果我停止 Asterisk,我可以运行“aoss multimon -T DTMF”来成功解码音调,但为了做到这一点,我必须像这样创建一个 /etc/asoundrc 文件:

pcm.dsp0 { type plug slave.pcm "hw:1,0" }

启动 Asterisk,它会抓取“plughw:1,0”,这意味着我在尝试运行 multimon 时遇到错误。我相信这是因为任何时候只有一个应用可以访问 alsa 设备。

我想我需要将 hw:1,0 拆分为两个新的 alsa 设备,我一直在尝试使用 alsa 插件 (dmix/multi) 来做,但我担心我无法理解如何配置这些!

附言我想使用 multimon,因为我还有其他用例可以在同一设置上使用它来解码其他音调,而不仅仅是 DTMF。

【问题讨论】:

  • 这可以通过dmix 插件来完成,只要您不重新定义它,default 会自动使用该插件。

标签: asterisk alsa


【解决方案1】:

正如@CL 所指出的,您可以使用 dsnoop 来分析通过 multimon 的音频。以下摘录摘自Basic Virtual PCM Devices for Playback/Capture, ALSA | nairobi-embedded

dmix[:$CARD...] 和 dsnoop[:$CARD...] 虚拟 PCM 设备

hw[:$CARD...] 和 plughw[$CARD...] 虚拟 PCM 设备(在没有硬件混合的系统上)的一个限制是一次只有一个应用程序可以访问音频流。 dmix[:$CARD...](播放)和 dsnoop[:$CARD...](捕获)虚拟 PCM 设备允许在多个应用程序之间分别混合或共享单个流,而无需声音服务器的干预,即这些设备使用基于原生 ALSA 库的机制。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-06
    • 2017-07-01
    • 1970-01-01
    • 2015-03-05
    • 2019-10-04
    • 1970-01-01
    相关资源
    最近更新 更多