实时语音通信的实现
2010-08-15 20:47:46 来源:WEB开发网核心提示:引言本人虽已学习VC++一年半载,仍觉捉襟见肘,实时语音通信的实现,好在有VCKBASE的帮忙,确实学 到了不少东西,例子程序运行画面:下面且看我细细道来:(一)首先定义了一个声音数据“块”struct CAudioData{PBYTE lpdata; //指向语音数据,注意这里内存区域是动态申
引言
本人虽已学习VC++一年半载,仍觉捉襟见肘,好在有VCKBASE的帮忙,确实学 到了不少东西,www.vckbase.com也成了我每次上民网必到之处(阁下有所不知, 鄙人接受最为严格的管理,上民网是要申请的)。近日在做一个通信 方面的程序 ,实时的语音和视频通信当然是大家所喜欢的。本文将向您展示局域网环境下实 时语音通信的的一个解决方案(视频这一块正在做,估计很快就能出炉),Winxp环 境下测试效果良好,并且具有网络 拥塞处理机制,您不妨一看。
本文以第26期 栾义明 先生的《基于API的录音机程序》为基础的,在此深表 感谢。雷同之处将不再赘述,主要做了以下发展:
(1) 利用多线程机制,实现录音、网络传输、放音同时进行。
(2) 网 络壅塞处理,保证数据不丢失。
例子程序运行画面:
下面且看我细细道来:
(一)首先定义了一个声音数据“块”
struct CAudioData
接下来申明两个循环队列和相关指针。
{
PBYTE lpdata; //指向语音数据,注意这里内存区域是动态申请释放的
DWORD dwLength;//语音数据长度
}
//InBlocks,OutBlocks非别为两个常数
// 对于录音和放音都 存在和网络的同步问题,主要靠这些指针进行协调
CAudioData m_AudioDataIn[InBlocks],m_AudioDataOut[OutBlocks];
int nAudioIn, nSend, //录入、发送指针
nAudioOut, nReceive;//接收、播放指针
更多精彩
赞助商链接