语音聊天程序实现(INDY, ACM, DELPHI)
来源:互联网 发布:js图片自动轮播代码 编辑:程序博客网 时间:2024/05/05 22:40
聊天程序的设计、实现和介绍
周宝峰
西安交通大学软件学院 MSE 2002
2005.01
索 引
1. 程序设计
程序设计环境:
采用Borland 公司 Delphi 7 企业版在Windows 2000 专业版上开发。
其他设计细节:
TCP 服务器:
采用TIdTCPServer
对于每一个客户端的TCP连接,启动一个线程处理。结构图如下:
主线程 监听线程 Accept Client 1 Accept Client 1 Accept Client 1 … Client1.Thread Client2.Thread Client3.Thread
线程管理用TIdThreadMgrDefault
UDP 服务器:
采用 INDY 中的 TIdUDPServer
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
- 语音聊天程序实现(INDY, ACM, DELPHI)
- 语音聊天实现(Delphi)
- delphi Indy 实现天气预报功能
- java语音聊天程序
- 实现语音聊天
- C++实现语音聊天
- IOS语音聊天实现
- 用Indy实现FTP客户端(delphi)
- Delphi简单TCP聊天程序
- 在delphi中用indy实现FTP上传 下载的例子
- delphi中利用Indy的TIdFtp控件实现FTP协议
- delphi中利用Indy的TIdFtp控件实现FTP协议
- 在Delphi中使用Indy控件实现邮件群发
- delphi indy控件实现网络验证与asp通信
- 在Delphi中使用Indy控件实现邮件群发
- Delphi Indy控件实现网络验证与asp通信
- Delphi Indy控件实现网络验证与asp通信
- 在Delphi中使用Indy控件实现邮件群发
- SQL查询语句的使用
- Linux学习笔记之后台进程(cron和crontab)
- 2005年在IT领域创业干点啥?
- Windows下JSP开发环境的配置
- 解读《普通大学应届毕业生如何成功应聘微软》
- 语音聊天程序实现(INDY, ACM, DELPHI)
- MFC rtti 学习笔记
- 走向卓越——浅谈企业的二次创业
- 项目维护中的总结之tomcat死掉的原因
- Arm-elf编译工具链的编译及Minigui
- 心语
- 英雄不问出处--十大名企用人理念
- 梦
- 多数人学习的一个过程