基于OSS做音频对讲时遇到问题

toongyu_zty 2017-09-26 04:02:43
程序比较简单,大致思路就是开2个线程用于收发音频数据:
接收线程已只写模式打开/dev/dsp,接收到对方发送过来的PCM数据后直接写入dsp进行播放;
发送线程已只读模式打开/dev/dsp(2个线程各有1个声卡文件描述符),循环从dsp读取固定字节的PCM数据后发送给对方。
程序运行在ARM上,双方通过UDP通信。
现在遇到的问题是听到对方的声音时还能听到自己的声音,这是不正确的,我在录音线程里并没有这么写。实在找不出原因所在,有谁可以指点一下吗?不胜感激。
...全文
209 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
toongyu_zty 2017-09-26
  • 打赏
  • 举报
回复
刚才测试了一下: A正常接收放音和录音发送,B正常接收放音,但录音发送线程只录音不发送,结果是A听不到任何声音,B听得到A的声音而不会听到自己的声音。 A正常接收放音和录音发送,B正常录音发送,但接收放音线程只接收不播放,结果是A听得到B的声音且不会听到自己的声音,B听不到任何声音。 想了一下,之前测试时听到的自己的声音可能是对方发送过来的(在测试时确实发现自己的声音延迟比较大),难道是发送线程在录音read(fd_dsp, buf, buf_len)时把声卡缓冲区里接收到的对方的数据也给读出来了么?这方面基本不懂,希望有人可以指点指点。

23,117

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧