语音聊天程序实现(INDY, ACM, DELPHI)
2005-01-20 11:25
507 查看
聊天程序的设计、实现和介绍
周宝峰
西安交通大学软件学院 MSE 2002
2005.01
索 引
1. 程序设计... 3
2. 程序使用... 4
2.1 服务器的使用... 5
2.2 客户端的使用... 5
3. 参考文献... 6
1. 程序设计
程序设计环境:采用Borland 公司 Delphi 7 企业版在Windows 2000 专业版上开发。
其他设计细节:
TCP 服务器:
采用TIdTCPServer 实现.用于文本的交互.
对于每一个客户端的TCP连接,启动一个线程处理。结构图如下:
主线程 |
监听线程 Accept Client 1 Accept Client 1 Accept Client 1 … |
Client1.Thread |
Client2.Thread |
Client3.Thread |
UDP 服务器:
采用 INDY 中的TIdUDPServer 实现。当收到UDP包时,触发UDPRead 事件,在此进行声音数据的播放。
UDP客户端:
采用INDY 中的TIDUDPClient实现。当收集的声音数据超过缓冲区
大小(2048个字节)后,调用其SendBuffer方法将数据发出。
声音的提取:
采用TACMIN 控件收集声音,ACMIN控件主要也是调用Windows API waveInOpen 函数。函数声明:
function waveInOpen; external mmsyst name 'waveInOpen';
(MMSystem.pas)
声音编码:
默认采用GSM6.10 编码,详细编码支持情况:
GSM 6.10 8kHz, Mono – 默认
11.025kHz, Mono
22.050kHz, Mono
44.100 kHz, Mono
Micorsoft G.723.1 8 kHz Mono, 6400 bit/s
8 kHz Mono, 5333 bit/s
PCM 8/11/12/16/22/24/32/44/48 kHz, 8/16/Bit, Mono
MPET Layer –3
56/40/48/32/20/24/12/16/8 kBit/s, 24,000/22,000/16,000/8,000 Hz, Stereo
…..
声音输出:
当UDP服务器收到数据,使用ACMOut 播放。
AData.Read(AudioArray,AData.Size);
if not audioOut.Active then begin
with m_PlayAudioFormat.Format do begin
wFormatTag := 1;
nChannels := 1;
nSamplesPerSec := 22050;
nAvgBytesPerSec:= 22050;
nBlockAlign:=1;
wbitspersample := 8;
cbSize := SizeOf(TACMWaveFormat);
End;
//adioOut.Open(audioConvertor.FormatIn);
audioOut.Open(m_PlayAudioFormat);
end;
audioOut.Play(AudioArray, AData.Size);
2. 程序使用
注意:服务器程序和客户端程序不可运行在同一机器上(避免声音播放和收集冲突),一台机器只能同时运行一个服务器程序或者一个客户端程序。服务器端的日志文件:CharSvr.log
客户端的日志文件:ClientError.log
2.1 服务器的使用
2.2 客户端的使用
选择在线的用户后方可发言。3. 参考文献
[1] Indy in Depth Atozed Software相关文章推荐
- Delphi XE7 android 实现的在线更新APP的一个程序
- linux网络编程:用C语言实现的聊天程序(异步通信)
- c#基于udp实现的p2p语音聊天工具
- java网络编程实现一个聊天程序
- linux网络编程:用C语言实现的聊天程序(同步通信)
- Delphi实现程序只运行一次并激活已打开的程序
- 关于用Delphi中的Indy控件实现收发邮件的几点学习记录
- 继人员列表,聊天的实现,包括图片,语音,位置,表情
- 用Delphi实现开机自动启动程序
- [原创] 用Delphi实现控制IE窗体的大小——IESizer程序原理分析 (2003-12)
- Delphi程序与Chm帮助关联的简单实现
- linux网络编程:用C语言实现的聊天程序(异步通信)
- 黑马程序员--基础加强--第五篇--UDP实现聊天程序
- 在Delphi 中用程序实现自定义窗体的创建和显示顺序(2)
- websocket实现简单聊天程序
- Golang实现的聊天程序服务端和客户端代码分享
- Java聊天程序的实现
- delphi 用Indy实现FTP客户端
- python实现聊天小程序
- delphi 程序嵌入桌面效果的实现