我要去桂林-田春峰

田春峰的IT网志

java语音聊天室原形的实现

        原本以为从 麦克风 上获得音频输入很复杂,原来javaSound已经封装的很简单了。
        可以使用AudioCapture来完成。

        聊天室音频的回放一般用流来完成:AudioPlayStream 类负责。
        聊天室比较复杂的地方还是关于音频流和多线程的结合使用。
        1 需要为每个聊天的人建立一个Session,就是一个客户端一个连接。
         2 需要建立一个和Session对应的线程来发送音频流。
         3 建立一个接收音频流的线程,收到后,播放。
      技术难点:
        1、看下面的代码:
   while ((!Thread.currentThread().interrupted())) {
      try {
          nBR = pbIS.read(data);
          if (nBR == -1) {
              c = true;
              break;
          }
             pbL.write(data, 0, nBRead);
         } catch (IOException e) {
              System.exit(1);
         }
  }

         上面就是在:   while ((!Thread.currentThread().interrupted()))
         这一句,到底是在什么情况下使用呢?
         这里的System.exit(1) 是不是退出当前的线程?

       2、
      while ((!Thread.currentThread().interrupted())) {
           b = mIS.read(cV, 0, bS);
           sS.write(cV, 0, b);
       }
       采用这样的方式来进行语音的输入,如果线程断了就打印出错信息。

http://www-106.ibm.com/developerworks/websphere/zones/voice/

到现在为止已经可以实现分布聊天了,采用GSM语音压缩,不过测试的时候发现即使客户端和服务器在本地也有0.5分钟的延迟。
     现在还没有缓冲处理,就是多人聊天的时候,如果说话方望速快,接受方速度慢,就可能会有问题。20040710  tcf

SourceForge.net7月最佳推荐项目:Audacity

 

基于TCP的局域网多用户通信、文件传送程序详解

http://www.vckbase.com/document/viewdoc/?id=349

日本人写的:
http://www.asahi-net.or.jp/~VZ4H-SRUZ/ipmsg-eng.html

 

现在发现上面的这些思路实际上和语音email的思路很接近:

 

阅读更多
版权声明:本文为博主原创文章,在不删除、修改文章内容的情况下,可以自由转载。 https://blog.csdn.net/accesine960/article/details/37192
个人分类: java
想对作者说点什么? 我来说一句

Java语音聊天

2011年11月28日 4KB 下载

java语音聊天

2015年01月14日 52KB 下载

Java点对点语音实时聊天

2009年02月19日 13KB 下载

java实现语音聊天

2010年07月06日 360KB 下载

没有更多推荐了,返回首页

不良信息举报

java语音聊天室原形的实现

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭