2014/04/25 meeteasy
1、引言
网络IP电话是一种数字电话,是一种技术创新的通信服务业务。它把语音、压缩编码、打包分组、分配路由、存储交换、解包解压等交换处理在IP网或互联网上实现语音通信。它促进了网络资源利用。降低语音业务成本,因此在全球范围内得到了迅速的发展,可以说是当今世界上发展最快、普及最快的应用服务技术之一,也是计算机网络界关注的热点之一。
2、技术背景
2.1 G.729音频编码标准
G.729是电话带宽的语音信号编码的标准.对输入 的模拟信号用8KHz采样.16bit线性PCM量化圈。G.729 是基于码激励线性预测的编码模式.每8O个样点为一个语音帧.对语音信号分析并提取各种参数.把这些参 数编码发送
G.729At在不影响录音质量的情况下能够在一定的存储空间内储存更多的语音信息而且在音质上有更优秀的表现由于G.729A编译码器能够实现很高的语音质量和很低的算法延时(15ms),被广泛地应用于数据通信的各个领域。
2.2 H.263视频编码标准
H.263是国际电联ITU—T的一个标准草案,是为低码流通信而设计的阁。但实际上这个标准可用在很宽的码流范围.而非只用于低码流应用。H.263的特点有: (1).263的运动补偿使用半像素精度;(2)数据流层次 结构的某些部分在H.263中是可选的.使得编解码可 以配置成更低的数据率或更好的纠错能力:(3)H.263 包含四个可协商的选项以改善性能:(4)H.263采用无限制的运动向量以及基于语法的算术编码:(5)采用事先预测和与MPEG中的P—B帧一样的帧预测方法:(6) H.263支持5种分辨率,支持QCIF、CIF、SQCIF、4CIF 和16CIF,SQCIF相当于QCIF一半的分辨率,而4CIF 和16CIF分别为CIF的4倍和16倍
后来IUT—T又推出了H.263+.它是H.263的第2 版.提供了12个新的可协商模式和其他特征.进一步 提高了压缩编码性能 例如H.263只有5种视频源格 式.H.263+允许使用更多的源格式.图像时钟频率也有 多种选择.拓宽应用范围:另一重要的改进是可扩展 性,它允许多显示率、多速率及多分辨率,增强了视频 信息在易误码、易丢包异构网络环境下的传输。另外. H.263+对H.263中的不受限运动矢量模式进行了改 进.加上12个新增的可选模式,不仅提高了编码性能, 而且增强了应用的灵活性
2.3 UDP协议
用户数据报协议(UDP)是OSI参考模型中一种无连接的传输层协议.提供面向事务的简单不可靠信息传送服务 UDP协议基本上是IP协议与上层协议的接口UDP协议适用端口分别运行在同一台设备上的 多个应用程序在不需要TCP可靠机制的情形下适用.例如.当高层协议或应用程序提供错误和流控制功能的时候。UDP是传输层协议,服务于很多知名应用层协议,包括网络文件系统(NFS)、简单网络管理协议(SN-MP)、域名系统(DNS)以及简单文件传输系统(TFTP)。
UDP协议使用IP层提供的服务把从应用层得到的数据从一台主机的某个应用程序传给网络上另一台主机上的某一个应用程序。
UDP协议有如下的特点:
①UDP传送数据前并不与对方建立连接,即UDP是无连接的.在传输数据前,发送方和接收方相互交换信息使双方同步。
②UDP不对收到的数据进行排序,在UDP报文的 首部中并没有关于数据顺序的信息(例如TCP所采用的序号),而且报文不一定按顺序到达的,所以接收端无从排序
③uDP对接收到的数据报不发送确认信号,发送端不知道数据是否被正确接收。也不会重发数据。
④uDP传送数据较TCP快速,系统开销也少。从以上特点可知.UDP提供的是无连接的、不可靠的数据传送方式,是一种尽力而为的数据交付服务。
3、lP网络电话设计与实现
基于实验和研究的目的,本文实现了一个从PC到PC的IP电话NETPhone 软件的开发环境为Windows NT平台,开发工具采用Visual C++6.0n。支持环境为Windows9x/ME/2000/XP。
3.1 总体设计
软件的核心功能是传输语音和图像.所以整个软 件围绕着语音和图像传输来设计首先分析语音图像的传输过程:数据发送时发送方首先由声卡和摄像头分别采集语音和图像,然后将它们分别转换为PCM音 频数据包和DIB视频帧存入内存中,再通过CPU将音 频数据用G.729音频编解码算法运算,视频帧用 H.263+视频压缩算法运算.对数据进行压缩。最后通过网卡把音频和视频同步压缩数据包发送出去:数据接收时接收方通过网卡接收到音视频数据.然后由CPU 采用解压缩算法将数据进行解压缩,再通过声卡和显示设备分别将数据转换为语音和图像信号,通过耳机或扬声器和显示设备播放 。
用户之间的互相连接通常采用两种方法第一种方法是设置一个服务器,所有的客户机都连接到服务器上,通过服务器互相连接。这种方法的好处是软件控制比较简单,用户的连接也比较方便,用户只需要知道服务器的IP地址就行了但缺点也很明显,它较适合 于公司的商业性质的软件.普通人员没有资金去专门购买和设置一个服务器,也没有时间和精力去管理和维护服务器第二种方法是不要服务器,每两个用户之间都可以互相连接.只要知道对方的IP地址就可以去连接对方,即每台计算机都既是服务器,又是客户机。采用这种方法的优缺点与第一种方法可以说是正好相反。
本文采用的是第二种方式进行计算机之间的连接.这样虽然增加了软件的复杂度.但符合实际情况。
软件的用户交互界面用来响应用户的操作.提示用户重要的信息.显示文本,播放语音视频等。实现软件与用户的交互。用户可以通过键盘来输入文本,通过麦克风来输入语音通过摄像头来输入图像。
3.2 各模块功能
本软件分网络传输部分、音频输入、音频输出、视频输入、视频输出、音频视频压缩、音频波形显示、界面。共创建四个线程。音频输入线程、音频输出线程(这两个由WINAPI隐式创建)、音频视频压缩传送线程和主线程,因为音频的采样率比视频采样率高得多.这里 的音频的采样率为8000Hz而视频仅为20左右.所以从宏观来看,音频是连续的.而视频是非连续的,这也就是无须为视频输入输出创建独立线程的原因。
①网络传输:基于UDP协议,有两组SOCKET,一组用于指令发送和接收(要求保证可靠性),另一组负责音频视频数据的传送和接收(不要求保证可靠性)。
②音频输入:通过waveln函数族完成连续的录音。
③音频输出:通过waveOut函数族完成连续的放音。
④视频输入:通过cap函数族对视频进行捕获。
⑤视频输出:通过Cap函数族实现视频输出。
⑥音频视频压缩:音频压缩采用G.729标准(8:1,lkbps),视频压缩采用H.263标准。
⑦音频波形显示:将PCM音频数据以波形动态地显示出来。
3.3 程序的流程设计
①软件一般自动运行(当操作系统启动时运行), 与服务器通信.向服务器传送登录信息(注:目前并没有服务器介入.而直接是客户与客户的通信):
②进入监听状态,等候呼叫;
③呼叫,可以从地址簿呼叫,也可直接打人IP地址呼叫:
④与被叫方取得联系后,等待发送方回应,当超过一定时间或由用户终止时,取消呼叫:
⑤被叫方接受呼叫请求时,开始实时视频通信,直到任意一方中断对话或非人为中断
3.4 性能参数
以音频帧为基准.每帧音频数据有240个采样点,时间为240×100018000=30ms.8000为音频的采样率。
数据接收端队列缓冲延迟:30~3=90ms
数据发送端录音延迟:30ms
数据压缩解压耗时:<40ms
网络延迟: 总延迟:<260ms 根据VolP标准.总延迟<300ms是人可以接受的, 以上计算是保守的.实际情况可能会更好。 视频格式:176xl44,24bit 带宽需求如下: 数据类型带宽需求(byte/sec)带宽总需求(Kbyte/sec) 音频 1000~9.2x2(视频质量一般的情况下) 视频 ~8000(会随图象质量的变化而有较大变化) 帧头 ~200 3.5 验证与测试 经过在本单位局域网内测试.本软件在实际运行中稳定可靠.在局域网上音频和视频的质量和延迟都能达到电话的效果NETPhoBe软件在TCP/IP网络中.可根据IP地址实现任意两个电脑用户之间的通信尤其在局域网环境中,电话的效果可与传统电话媲美。 4、结语 本文在UDP协议的基础上设计和实现了一个PC到PC的网络IP电话.实验证明NETPhone是高性能的可视电话软件,而且是操作方便快捷的全图形界面。
40088 411661033743080@qq.com
中国广东省深圳市南山区西丽九祥岭工业区10栋3楼