65.9K
CodeProject 正在变化。 阅读更多。
Home

一个通过网络/互联网进行语音通信的简单原型演示

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.35/5 (23投票s)

2000年6月14日

viewsIcon

208287

downloadIcon

8460

语音通信

引言

这是最简单的原型,用于演示如何在PC平台上通过互联网/网络实现基本的语音通信。此演示中的技术可用于开发PC互联网语音通信软件,例如网络电话。

为了节省开发时间,我借鉴了Microsoft MSDN示例"GlabolChat"中的客户端/服务器设计理念。

该示例已在由NT4.0服务器/工作站组成的内网和由Win2000 Professional组成的局域网中进行了测试。测试PC中的CPU至少是Intel P2 266或更快,并且必须配备声卡、麦克风和扬声器。

在测试中,它可以在双向语音通话中流畅工作,并具有可接受的音质。

基本系统设计

此示例包含两个模块,TalkserverTalkclient

基本系统图如下

System diagram

服务器模块

服务器模块有两种类型的套接字:服务器套接字和客户端套接字。一个服务器套接字支持某种网络协议并侦听使用该协议的传入连接。当客户端连接请求到达时,服务器套接字创建一个客户端套接字以建立与客户端的链接。客户端套接字负责接收来自其客户端的消息,并将消息传递到对等客户端套接字,然后对等客户端套接字将消息发送到目标客户端。客户端套接字还从对等套接字获取消息并将这些消息发送到其客户端。

客户端模块

用户可以使用客户端模块进行语音通信。客户端中的套接字被实现为向/从服务器发送/接收消息。

在客户端模块中捕获和传输声音数据的方法是构建和运行一个波形输入设备。当该波形输入设备录制的数据量足够达到其波形头结构中的数据缓冲区大小时,它会通知客户端实例。当客户端收到波形输入设备消息时,客户端检索波形输入设备缓冲区中的声音数据,然后将声音数据编码为语音通信消息并发送到对等(或目标)客户端。

播放语音消息类似。客户端有一个波形输出设备。客户端收到来自其他客户端的语音消息后,它从消息中解码声音数据,将声音数据放入波形输出设备并驱动它播放声音。

更改音质

通过更改 vtDef.h 中定义的波形设备缓冲区和波形格式类型,您可以在一定程度上更改音质。

历史

  • 2000年6月14日:发布日期

许可证

本文未附加明确的许可证,但可能在文章文本或下载文件本身中包含使用条款。如有疑问,请通过下面的讨论区联系作者。

作者可能使用的许可证列表可以在此处找到。

© . All rights reserved.