大家好:
      我现在是一名研一的学生,帮着导师打打下手 ,导师让我用VC实现一个多路语音的实时传输,显示功能 最近我只是用SOCKET和互斥变量实现了多线程的传输而已,实时性达不到, 想向各位前辈请教一下,希望您能指点一下,不知道您能不能为我提供一下好的建议或是源代码。 
      希望能得到您的帮助 ,谢谢!!!

解决方案 »

  1.   


    普通的IM工具,比如QQ,就有实时的语音通话功能啊。所以,你找一个有开源的IM客户端,可能就可以看到怎么实现。
    千里孤行
      

  2.   

    SOCKET和互斥变量实现了多线程的传输而已,实时性达不到。
    为什么要互斥???
    实时性不够,可以采用udp广播看看。
      

  3.   

       lijianli9  你好
        我们导师要求 用tcp传输,保持可靠性 怎么办呢? 
      

  4.   

    是的 UDP在广播上有优势 但是在可靠性上不如TCP啊 
      

  5.   


    一般语音用UDP传。迫不得已没办法使用UDP才会TCP传的,因为有些网络环境用户只能有TCP连接。
    TCP虽然说可靠,不过重传的语音包基本可能都已经无效了,错过播放的时机。
    千里孤行
      

  6.   

       是的 在网络上语音视频一般是UDP传输。但我们现在做的东西是专线传输的,导师指明要求TCP。 还有就是显示语音传输的波形,这个我到现在还不知道怎么办 愁人啊  ,求教一个各位前辈了
      

  7.   

    你参考这个吧,有VC++ Demo程序源代码的,不过是一个商业的产品:http://www.anychat.cn/faq/
      

  8.   

    其实很简单的,我以前也做过类似程序,发送方法这些都不是问题,主要有个技巧就是要用双缓冲。
    当时我也是用的一个缓冲区,然后调用的waveInOpen那些API,当时缓冲区填满以后用TCP发送出去。测试的时候发现声音的断断续续的,后来才找到原因。你要用双缓冲,甚至3缓冲,具体要看你缓冲区大小而定。就是当数据填满以后立刻切换下一个缓冲区,然后再将数据发送出去。因为发送需要一定时间,如果单缓冲,声音就会断断续续的。
      

  9.   

    试一试 RTP ,实时传输协议。
      

  10.   

    逻辑上的数据指针环型队列,设置足够的长度(存储指针,所以长度虽长但占不了内存),存取同时进行,互不干扰,也不用锁,存的存,取的取,发的发网络复杂时(简单的无线局域网也存在这种情况),传输不太好,UDP会丢包不可靠,TCP可靠但又不如UDP吞吐量大,可以用UDP+TCP确认机制,但你导师指定用TCP,就用TCP吧,给导师干活差不多就行了
      

  11.   

    是的,要显示波形,肯定得用到FFT算法的。
      

  12.   


    语音传输的可靠性要求相对较低,推荐UDP。另外编解码算法推荐speex,开源的,压缩率高,有线传输时效果较好。其间需要注意的主要问题是传输与播放的同步问题,也就是流控,这个相对困难一些。
      

  13.   

    你可以模拟TCP的机制,采用回应机制,发送一个包没有收到回应就重发,
      

  14.   

    模拟TCP,还不如直接就使用TCP呢。
      

  15.   

    用directsound 就可以解决多路语音的问题。
      

  16.   

    TCP 的实时性不好。你可以用开源的UDT 。。
      

  17.   

    我第一次发帖  不知道怎么结贴  怎么给分   [问题点数:100分,无满意答案结帖,结帖人:VisualEleven 这个我也不知道怎么回事 对不起了