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);

}

采用这样的方式来进行语音的输入,如果线程断了就打印出错信息。

到现在为止已经可以实现分布聊天了,采用GSM语音压缩,不过测试的时候发现即使客户端和服务器在本地也有0.5分钟的延迟。

现在还没有缓冲处理,就是多人聊天的时候,如果说话方望速快,接受方速度慢,就可能会有问题。20040710  tcf

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值