专栏首页字根中文校对软件java语音聊天室原形的实现

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的思路很接近:

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • java 线程阻塞的问题

    中断线程最好的,最受推荐的方式是,使用共享变量(shared variable)发出信号,告诉线程必须停止正在运行的任务。线程必须周期性的核查这一变量(尤其在冗...

    田春峰-JCJC错别字检测
  • 缩略图调优---各种格式的缩略图大小比较

            我们生成缩略图的时候,有很多种格式可以选择,下图是一个生成缩略图效果的对比。         原图 比尔 盖茨 家客厅的图片:

    田春峰-JCJC错别字检测
  • 网页切片算法的若干问题

    这是我研究网页切片算法的一个汇总想法。     之前我写过:一种面向搜索引擎的网页分块、切片的原理,实现和演示 ,随着工作的深入,逐渐碰到以下问题: ...

    田春峰-JCJC错别字检测
  • 深入volatile关键字

    在Java多线程中,有一个特殊的关键字volatile,这个通常成为一个“轻量级锁”,下面我们就来深入的了解这个关键的作用和原理。

    付威
  • Tomcat实战-调优方案

    Tomcat的默认配置,性能并不是最优的,我们可以通过优化tomcat以此来提高网站的并发能力。提高Tomcat的性能可以分为两个方向。

    lyb-geek
  • 游戏服务器之逻辑服务器的资源分布图

    线程类型分成三大类:主线程、网络线程、业务线程。 一、主线程 1、程序主线程(线程1) 读取服务器配置,读取逻辑数据配置,启动账号管理器、日志管理器,启动逻辑...

    李海彬
  • Java并发编程的艺术(五)——中断

    什么是中断? 在Java中没有办法立即停止一条线程,然而停止线程却显得尤为重要,如取消一个耗时操作。因此,Java提供了一种用于停止线程的机制——中断。 中断...

    大闲人柴毛毛
  • Tomcat架构解析之3 Connector NIOAcceptorPollerWorkerNioSelectorPool

    JavaEdge
  • Seq2seq强化学习实战 (Pytorch, Tensorflow, Theano)

    【导读】本文是Kirti Bakshi在1月14日写的关于其强化学习课程的一个介绍,作者首先简单介绍了机器学习的缺点,以及为什么使用深度学习。然后讲述了其开设的...

    WZEARW
  • C++经典算法题-得分排行

    假设有一教师依学生座号输入考试分数,现希望在输入完毕后自动显示学生分数的排行,当然学生的分数可能相同。

    cwl_java

扫码关注云+社区

领取腾讯云代金券