Java语音一对一聊天程序

Java 写的语音一对一聊天程序,最大的特点是用得起、跑得快、改得动。音频用的是比较经典的Java Sound API,Socket 通信配合多线程,响应也快。别看是 Java,搞语音对话其实也蛮顺的。你只要搞清楚音频输入输出、网络传输,再加上基本的 UI 界面,基本就能跑起来了。

音频输入输出的,主要靠TargetDataLineSourceDataLine,录音播放全靠它们撑场子。像 JMF 虽然功能多,但现在大多都用 Java Sound 了,简单点,Bug 也少。

Socket 通信就没啥好说的了,客户端连接服务器,音频流一边录一边传。一般会开两个线程,一个负责发,一个负责收,互不干扰,实时性也不错。加上BufferedInputStreamBufferedOutputStream,效率还能再提一提。

音频编码方面,如果你不想传一堆原始数据拖慢速度,可以加个压缩,比如 PCM 编码后再用 Gzip 压一下,带宽省了不少。要跨公网的,你记得把127.0.0.1换成公网 IP,防止连不上服务器。

界面这块虽然原代码没写太多 UI,但你可以随手加个 Swing 小窗,放两个按钮“开始”“停止”,录音状态一目了然。对了,最好加上声音设备检测,别等连上了才发现没麦克风。

异常也不能省,一断线一崩溃体验就差了。用try-catch把 Socket 和音频流包住,打点 log,问题好排查。

如果你想练手音频和 Socket 的结合,这个项目真的挺合适,代码量不大,逻辑还清晰,调试也方便。

rar
Voice.rar 预估大小:13个文件
folder
Voice 文件夹
folder
bin 文件夹
folder
com 文件夹
folder
honey 文件夹
folder
jackity 文件夹
file
Client$1.class 718B
file
Server$1.class 718B
file
Server.class 4KB
file
Playback.class 3KB
file
Capture.class 2KB
file
Client.class 4KB
folder
.settings 文件夹
file
org.eclipse.jdt.core.prefs 598B
folder
src 文件夹
folder
com 文件夹
folder
honey 文件夹
folder
jackity 文件夹
file
Server.java 3KB
file
Playback.java 2KB
file
Capture.java 2KB
file
Client.java 3KB
file
.project 381B
file
.classpath 301B
rar 文件大小:13.54KB