大家好:
我现在是一名研一的学生,帮着导师打打下手 ,导师让我用VC实现一个多路语音的实时传输,显示功能 最近我只是用SOCKET和互斥变量实现了多线程的传输而已,实时性达不到, 想向各位前辈请教一下,希望您能指点一下,不知道您能不能为我提供一下好的建议或是源代码。
希望能得到您的帮助 ,谢谢!!!
我现在是一名研一的学生,帮着导师打打下手 ,导师让我用VC实现一个多路语音的实时传输,显示功能 最近我只是用SOCKET和互斥变量实现了多线程的传输而已,实时性达不到, 想向各位前辈请教一下,希望您能指点一下,不知道您能不能为我提供一下好的建议或是源代码。
希望能得到您的帮助 ,谢谢!!!
普通的IM工具,比如QQ,就有实时的语音通话功能啊。所以,你找一个有开源的IM客户端,可能就可以看到怎么实现。
- 千里孤行
为什么要互斥???
实时性不够,可以采用udp广播看看。
我们导师要求 用tcp传输,保持可靠性 怎么办呢?
一般语音用UDP传。迫不得已没办法使用UDP才会TCP传的,因为有些网络环境用户只能有TCP连接。
TCP虽然说可靠,不过重传的语音包基本可能都已经无效了,错过播放的时机。
- 千里孤行
当时我也是用的一个缓冲区,然后调用的waveInOpen那些API,当时缓冲区填满以后用TCP发送出去。测试的时候发现声音的断断续续的,后来才找到原因。你要用双缓冲,甚至3缓冲,具体要看你缓冲区大小而定。就是当数据填满以后立刻切换下一个缓冲区,然后再将数据发送出去。因为发送需要一定时间,如果单缓冲,声音就会断断续续的。
语音传输的可靠性要求相对较低,推荐UDP。另外编解码算法推荐speex,开源的,压缩率高,有线传输时效果较好。其间需要注意的主要问题是传输与播放的同步问题,也就是流控,这个相对困难一些。