语音群聊怎么实现?问题二

满衣兄 2009-08-18 10:02:14
http://topic.csdn.net/u/20090814/16/3413e349-5525-47fe-b381-22c68e539f8c.html?seed=1427730892&r=59147202#r_59147202


谢谢熊猫贩子的解答.这个帖子是接上面的连接的.熊猫贩子接分.


直接相加我试过,效果很不好啊,不知道你那里效果怎么样?
假设有四个数据源(A,B,C,D),那么这四个数据源需要四个线程接收吗?
如果是一个线程接受的,时间上好象无法同步啊,先接收到A的数据,然后要等待接收到B的数据,然后要等待接收C,D的数据...四个数据接收完毕然后混音?是这样吗?这样应该会有断续啊...
...全文
181 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
homesos 2009-08-18
  • 打赏
  • 举报
回复
采用P2P+服务器中转呢?
先使用P2P,如果P2P发现不通,再请求服务器来进行转发?
满衣兄 2009-08-18
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 homesos 的回复:]
因为我是与硬件进行交互,所以必须要进行混音处理。
如果是PC到PC端,可以不需要进行混音的吧,直接转发给客户端,在客户端可以进行混音播放,也可以不进行混音,使用多个线程进行播放也行的吧?
这只是我的猜测,没有具体试过。
[/Quote]
你猜测的是对的,我现在采用的就是P2P方式,在客户端使用DirectSound播放的,不需要混音.但是P2P方式有的NAT穿透不了
homesos 2009-08-18
  • 打赏
  • 举报
回复
因为我是与硬件进行交互,所以必须要进行混音处理。
如果是PC到PC端,可以不需要进行混音的吧,直接转发给客户端,在客户端可以进行混音播放,也可以不进行混音,使用多个线程进行播放也行的吧?
这只是我的猜测,没有具体试过。
homesos 2009-08-18
  • 打赏
  • 举报
回复
我是这样做的:
如果有四个客户端:
1.分别用四个线程接收并放到四个数据队列中(实际上就是数组,可以看作是环形队列,这样也避免了使用锁)
2.再使用一个多媒体计时器启动混音,分别从四个数据队列中取值,取值条件是:要有3个以上的数据包在队列中,如果不符合就不处理,此次混音该客户端的数据不参与。
3.比较重要的是要保证混音线程的执行频率,否则要么声音会有断续,要么时间长了延迟会比较大,所以要使用多媒体计时器,我用的频率是60毫秒一次,精确度1毫秒

但如何保证四个客户端同步这个问题,我的确没有解决。
1.项目代码功能经验证ok,确保稳定可靠运行。欢迎下载使用! 2.主要针对各个计算机相关专业,包括计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网等领域的在校学生、专业教师或企业员工使用。 3.项目具有丰富的拓展空间,不仅可作为入门进阶,也可直接作为毕设、课程设计、大作业、初期项目立项演示等用途。 4.当然也鼓励大家基于此进行次开发。在使用过程中,如有问题或建议,请及时私信沟通。 5.期待你能在项目中找到乐趣和灵感,也欢迎你的分享和反馈! 【资源说明】 基于Nodejs与Electron实现仿TIM界面简单聊天软件源码(含添加好友、群聊语音视频通话等功能)+使用说明.zip 是基于`electron(vue2)`和`nodejs`实现的简单聊天软件,其中用`websocket`和`http`进行通讯传递,数据库使用了`mysql`数据库,该项目功能简单,界面简洁,适合正在练习`websocket`和`vue`的小白查看代码,代码量极少且逻辑清晰,每个功能都会添加相应的逻辑供大家观看学习(大佬勿喷) 基于Nodejs与Electron实现仿TIM界面简单聊天软件源码(含添加好友、私聊、群聊语音视频通话等功能)+使用说明.zip基于Nodejs与Electron实现仿TIM界面简单聊天软件源码(含添加好友、私聊、群聊语音视频通话等功能)+使用说明.zip基于Nodejs与Electron实现仿TIM界面简单聊天软件源码(含添加好友、私聊、群聊语音视频通话等功能)+使用说明.zip 基于Nodejs与Electron实现仿TIM界面简单聊天软件源码(含添加好友、私聊、群聊语音视频通话等功能)+使用说明.zip

2,543

社区成员

发帖
与我相关
我的任务
社区描述
专题开发/技术/项目 多媒体/流媒体开发
社区管理员
  • 多媒体/流媒体开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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