如何在Raspberry Pi 3上使用Alsa lib正确混合声音?

问题描述

我正在使用Raspberry Pi 3和PJSIP库创建VoIP应用程序,执行通话时无法播放录制的wav声音。 (例如,我的录音可能是“通话已启动”或“通话已结束”)。我需要同时听到远程端点。

目前,我可以正确地听到来自远程端点传到Raspberry Speaker的声音。

我还使用Alsa aplay命令成功播放了多个.wav文件。为此,我遵循了alsa documentation

中混合软件的文档

阻塞点是在听远程扬声器的声音的同时播放录音。当我在一次通话中使用aplay手动播放wav声音时,它表明我的设备正忙:

pi@raspberrypi:~/Laboratory $ aplay test.wav 
ALSA lib pcm_dmix.c:1052:(snd_pcm_dmix_open) unable to open slave
aplay: main:828: error opening audio: Device or resource busy

这是我的〜/ .asoundrc文件,用于使用alsa软件混合:

pcm.!default {
        type plug
        slave.pcm "dmixer"
}

pcm.dmixer  {
        type dmix
        ipc_key 1024
        slave {
                pcm "hw:0,0"
                period_time 0
                period_size 1024
                buffer_size 4096
                rate 44100
        }
        bindings {
                0 0
                1 1
        }
}

ctl.dmixer {
        type hw
        card 0
}

我对以下几点进行了调查:

  1. 我想知道我的PJSIP应用程序是否正确使用了我的alsa“ dmixer”插件。如果没有,如何强制使用此插件?
  2. 我不确定asoundrc文件中定义的44100 Hz采样率。它会与通话采样率冲突吗?
  3. 我也不喜欢“ period time”,“ period_size”,“ buffer_size”这样的主题。它们可能是错误的值吗?
  4. 我的wav文件是否与Pjsip库不兼容? (只是个主意)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...