dou_bi_ 2014-11-21 07:34 采纳率: 100%
浏览 7236
已采纳

c#将客户端发来的数据流实时转发给另一个客户端 服务器数据缓冲区的建立问题

我想要实现两部安卓客户端的实时语音通讯,安卓客户端都在内网,因此需要一外网pc做数据的中转服务器,安卓语音发送端通过audiotrack录制PCM音频数据并实时发送到服务器,服务器接收数据并不断读入一个缓冲区,开启另一个线程循环读取缓冲区的数据同时将数据发送到另一个安卓客户端,问题就在于服务器的缓冲区要怎么做?怎么保证缓冲区的数据同时被两个线程操作时的有序稳定 求大神指教,假设网络良好,不考虑网络波动带来的数据处理问题。

  • 写回答

10条回答 默认 最新

  • aaa45612342008 2014-11-21 08:53
    关注

    关键是语音流. 对队列也比较赞同. 不过考虑并发多线程问题. 缓冲区 内部划分应该分: 发送区, 资源区, 接受区. 对消息进行编号. 例如2s一个语音段, 发送成功就成功, 不然丢弃. 编号之后, 可以同时并发发送. 发送区进行资源锁定, 进入server 资源区后解锁. 接受区也是一样的, 维护一个顺序索引. 按顺序发送资源区给接收端. 如果丢包你, 怎么处理. 就是语音丢失闹 . 后面再有也不要你. 锁定之后就好. 其实生产--消费者思路. 至于实现, 如何并发, 并发 ,对外封装调用.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(9条)

报告相同问题?

悬赏问题

  • ¥50 python课程管理系统
  • ¥15 python+selenium,在新增时弹出了一个输入框
  • ¥15 苹果验机结果的api接口哪里有??单次调用1毛钱及以下。
  • ¥20 学生成绩管理系统设计
  • ¥15 来一个cc穿盾脚本开发者
  • ¥15 CST2023安装报错
  • ¥15 使用diffusionbert生成文字 结果是PAD和UNK怎么办
  • ¥15 有人懂怎么做大模型的客服系统吗?卡住了卡住了
  • ¥20 firefly-rk3399上启动卡住了
  • ¥15 如何删除这个虚拟音频