IP电话实时通信的实现课程设计.docx
- 文档编号:9140127
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:20
- 大小:771.10KB
IP电话实时通信的实现课程设计.docx
《IP电话实时通信的实现课程设计.docx》由会员分享,可在线阅读,更多相关《IP电话实时通信的实现课程设计.docx(20页珍藏版)》请在冰豆网上搜索。
IP电话实时通信的实现课程设计
《网络通信程序设计》
--课程设计报告
题目:
IP电话网络通信的设计实现
专业:
计算机科学与技术
班级:
0312404姓名:
孙慧华高志杰
学号:
031240420031240306
指导老师:
贺刚
2017年6月6日
目录
第一章引言3
1.1课题背景及意义3
1.2课题研究现状3
1.3研究内容4
1.4论文组织方式5
第二章需求分析6
2.1功能需求6
2.2性能要求7
第三章概要设计8
3.1体系结构设计8
3.2数据结构设计10
第四章详细设计11
4.1系统功能模块设计11
4.1.1音频输入输出的实现14
4.1.2数据的压缩与排序16
4.1.3传送和接收17
4.2用户界面设计18
第五章测试及实现结果分析19
总结及展望20
第一章引言
1.1课题背景及意义
IP(InternetProtocol)电话是一种数字电话,是技术创新的一种通信服务业务。
它把语音、压缩编码、打包分组、分配路由、存储交换、解包解压等交换处理在IP网或互联网上实现语音通信。
它促进了网络资源利用,降低语音业务成本。
因此在全球范围内得到了迅速的发展,。
IP电话的产生Internet商业化以后,在全世界,特别是发达国家迅速发展起来。
在一些国家(如美国)本地电话Internet接入采用包月制,不限时限量,因此Internet是近乎免费的(Free)的,人们都希望能通过这近乎免费的网络进行传统的电话和传真服务。
1995年2月以色列VocalTec公司研制出可以通过Internet网打长途电话的软件产品"InternetPhone"。
用户只要在多媒体PC机上安装该软件,就可以通过Internet网和任何地方安装同样软件的联机用户进行通话。
这项技术上的突破引起全世界的瞩目,其背后的无限商机也使许多公司进行此项技术的研究,从而使IP电话技术得到迅速发展,人们把这种在Internet上实现电话业务称为Internet电话,应该说是IP电话的雏形。
经过五年的发展,IP电话成为信息技术进步带来的一项新型电话业务在全世界开展,并对传统电话业务形成越来越大的威胁。
IP电话从当初的PC到PC发展到今天的PC到PC、PC电话、电话到电话等多种业务形式,但不论是现在还是将来,IP电话可以说是当今世界上发展最快、普及最快的一门应用服务技术之一,也是计算机网络界关注的热点之一。
1.2课题研究现状
H.323是IP电话所遵循的标准,而H.323标准首选语音编码器是ITU-TG.729.A。
ITU-TG.729.A标准采用一种称为"共轭结构代数码本激励线性预测"(ConjugateStructureAlgebraic-Code-ExcitedLinear-Prediction,CS-ACELP)算法来对语音信号进行编码。
在开始编码之前,先要对输入的模拟信号进行电话带滤波,然后以8kHz频率对其进行采样,再将其转换为16位线性PCM码,作为编码器的输入。
编码器处理语音的单位是帧,1帧为10毫秒语音,包括80个声音样本(采样频率为8kHz)。
编码器对每一帧语音信号进行分析,抽取出其中的CPLD模型的参数(线性预测滤器参数),自适应和固定码本索引和增益),对这些参数进行编码和传送。
但是该编码器算法复杂,一帧语音处理延迟较大,很大程度上影响了IP电话网关处理密度。
1.3研究内容
20世纪90年代以来,以Internet为代表的计算机网络技术发展突飞猛进,促进了计算机网络在社会各个领域的广泛应用,而针对G.729的研究和优化一直从未停息。
例如:
为了提高IP电话网关的处理密度,在实现ITU-TG.729.A语音编解码器时,采用了目前性能最好的DSP,即TMS320C6201;针对TMS320C6201并行性和流水等特点,归纳出了一系列减少编解码器处理延迟的优化方法
本文是基于G.729.A协议,采用C++语言实现实时通信,并未针对G.729.A协议进行有话改进,因为本人技术,只是领域达不到那么高的层次,在结果中会对本人基于G.729.A实现的实时通信和从网络上找到的基于TMS
1.4论文组织方式
首先,本论文从目前IP电话的产生开始,详细研究了本课题的背景以及意义,由于目前我国的通信分别掌控的移动,联通,电信三大巨头手中,而通信费用一直是国人所普遍关注的话题,虽然目前位置,通信费用有所改善,但依旧是一个令人无奈的地方,所以本人想就这个现状,深入了解IP电话的实现原理,实现机制,能够在未来开发属于自己的网络电话,做到真正的零费用。
其次,在对本论文的背景有所了解的情况下,对本课题所必须的ITU-TG.729.A编解码器实现的关键技术进行了介绍,主要是G.729.A协议编解码算法介绍,G.729.A编解码器的实现。
最后,在对所必须得基础知识有所了解的情况下,按照各模块的功能,分别详细介绍了各个功能的实现过程。
第二章需求分析
2.1功能需求
随着个人计算机和互联网的普及,越来越多的人开始使用网络这个媒介来发送,接收信息,计算机网络给人们生产和生活带来了巨大的便利,网络语音通信IP电话应运而生,主要分为三种:
电话到电话,PC到电话,PC到PC,本功能选取PC到电话为实现方案,即:
实现PC到电话的网络语音通信。
系统用例图:
能够实现公用交换电话网络(PSIN)中的普通电话相互通话(需要网络环境配合)或与其他的兼容IP电话或应用程序通信。
2.2性能要求
(1)拨打电话:
要求用话机拨打电话,用下列任意一种方式呼叫
●提起话筒或按免提键,拨号盘上直接呼出
●按电话簿键选择号码呼出
●按Redial键选择呼出最近一次已拨打号码呼出
(2)接听电话
●响铃,显示号码或者IP地址
●提起话筒或者免提键接听
●可以拒绝接听
(3)静音或者保留
●通话过程中按相应键
第三章概要设计
3.1体系结构设计
一个成功IP电话的实现是个复杂的过程,我只针对G.729实现通信,其主要的体系结构如下图:
其中用了一个tcp连接,表示双方连通没有,用udp发送语音数据,发送端表明了发送顺序,接收端重排了顺序。
3.2数据结构设计
1.TCP包结构
TCP协议是网络中应用最为广泛的协议,许多的应用层协议都是在建立在TCP协议之上的。
TCP首部的各字段如图4.2所示[4]。
图4.2TCP数据在IP数据报中的封装
TCP协议头部信息如下:
(1)源端口:
发送端TCP端口号;
(2)目的端口:
接收端TCP端口号;
(3)序号:
指出段中数据在发送端数据流中的位置;
(4)确认号:
指出本机希望下一个接收的字节的序号;
(5)头标长度:
以32bit为单位的段头标长度,是针对变长的“选项”域设计的;
(6)码位:
指出段的目的与内容,不同的各码位置位有不同的含义;
(7)窗口:
用于通告接收端接收缓冲区的大小;
(8)校验和:
这是可选域,置0表示未选,全1表示校验和为伍;
(9)紧急指针:
当码位的URG置位时,指出紧急指针的序号。
2.UDP包结构
UDP协议是英文UserDatagramProtocol的缩写,即用户数据报协议,主要用来支持那些需要在计算机之间传输数据的网络应用。
包括网络视频会议系统在内的众多的客户/服务器模式的网络应用都需要使用UDP协议。
UDP协议从问世至今已经被使用了很多年,虽然其最初的光彩已经被一些类似协议所掩盖,但是即使是在今天,UDP仍然不失为一项非常实用和可行的网络传输层协议。
UDP数据报各域的意义与TCP段中相应的域相同。
只有校验和有些不同,除UDP数据报本身外,它还覆盖一个附加的“伪头标”。
这个伪头标来自于IP报头,包括:
源IP地址、信宿IP地址、协议类型、UDP长度及填充域。
UDP首部的各字段图4.3所示。
图4.3UDP首部
UDP协议头部信息如下:
(1)源端口:
发送端UDP端口号;
(2)目的端口:
接收端UDP端口号;
(3)头标校验和:
用于保证头标数据的完整性。
第四章详细设计
4.1系统功能模块设计
通过前面的叙述可以知道,这款软件唯一的功能就是基于网络实现语音通信。
本系统包括三个基本模块,音频的输入输出,接收与发送,数据压缩与排序
而这三个模块整合起来就是网关。
网关是通过IP网络提供PC-to-Phone、Phone-to-PC、Phone-to-Phone语音通信的关键设备,是IP网络和 PSTN/ISDN/PBX网络之间的接口设备,应具有下列功能:
a 具有IP网络接口和与PSTN/ISDN/PBX交换机互联的接口;
b 完成实时语音压缩,将64kbit/s的语音信号压缩成低码率语音信号;
c 完成寻址和呼叫控制。
下面我给出借口的部分代码:
连接和启动的借口:
4.1.1音频输入输出的实现
下面给出其主要过程:
音频的输入
[描述]
封装waveinapi
只使用了pcm方式
只使用函数回调方式
所有的设置属性的函数只应在录音前使用,否者会在下次录音时才生效
应该重载virtualvoidGetData(char*pBuffer,intiLen);
[注意]
对于StartRecord中的PerPareBuffer()OpenRecord()是乎应该同时调用,
要么就都不调用,其原因好象是waveInAddBuffer之后必须使用saveInStart
否则好象不能关闭设备
SIZE_AUDIO_FRAME是160倍数
SIZE_AUDIO_PACKED是对应的输出为SIZE_AUDIO_FRAME/160*10
关闭的时候注意,在closerecord后有可能线程中还有数据到来,导致关闭不正确,所以关闭的时候sleep(1000),详细原因我也不太清楚
[依赖性]Winmm.lib
主要代码中的方法:
如线程创建
音频的输出:
[描述]
封装waveoutapi
只使用了pcm方式
[注意]
PLAY_DELAY10//播放时候的延迟,大于它,说明有PLAY_DELAY个包没有播放完成,后面的包不应再播放
[依赖性]Winmm.lib
主要代码中的方法:
如线程创建
4.1.2数据的压缩与排序
依据流程图我们可知,在数据压缩之后会有发送,经过一系列转化后另一方接收,最后是排序。
这里我把压缩和排序放在一起
音频压缩:
部分代码
排序数据:
部分代码
4.1.3传送和接收
1.音频的传送
在压缩之后进入发送接收
发送的客服端:
部分代码
4.2用户界面设计
用户界面第一行为对方IP地址,发送按钮
第二行连接按钮,断开按钮,接收按钮
第三行为信息提示,如图所示:
第五章测试及实现结果分析
采用二种测试工具对G.729.A编解码器的处理延迟作了测试。
第一种测试工具是C6XSimulator(TMS320C6201的仿真软件),测试条件是假设所有代码装在TMS320C6201片同的程序存储器中;因此,称之为Noncache测试模式。
另外一种测试方式是采用TI公司的C6X的EVM卡(评估卡),测试条件是将TMS320C6201片内64KBRAM作为Cache使用;因此称之为cache模式。
二种测试模式的测试结果如下所示。
测试项目
C6仿真器(非缓冲模式)
C6评估板(非缓冲模式)
编码(每帧)
86720cycles
91650cycles
解码(每帧)
34120cycles
37310cycles
从表可以看出,如果TMS320C6201工作在频率为200MHz,即每Cycles的周期为0.5毫秒,可以算出G.729.A编码一帧(30毫秒)的延迟时间是0.43~0.46毫秒。
因此说,单片TMS320C6201可以同时处理大约20路G.729.A编码(当前国际最高水平是22路);而且,编解码的结果都严格地通过了G.729.A提供的测试矢量的测试,实际播放音质也很好。
ITU-TG.729.A语音信号压缩编解码技术集成了众多低速率语音编解码的优点,大大提高了低速率编解码的语音质量,但算法较复杂。
而TMS320C6201DSP是目前最快的定点数字信号处理器,如果在编写程序时,能充分利用上述关键技术,就可以充分发挥TMS320C6201的功能,大大减少G.729.A编解码的处理延迟,并能保持良好的语音品质。
将该编解码应用在该IP电话网关中,在很大程度上提高了IP电话网关处理密度,改善了IP电话网关的性能。
因此说,本文实现的G.729.A编解码器有很大的应用价值。
总结及展望
IP电话的实现最为重要的音频的发送和接收处理,这其中包括音频的编解码,音频质量优化等等,对于G.729.A协议的研究从未停止过,许多的人为了改进算法奋斗终生,但是G.729.A的算法本身就很复杂,优化改进的事情我无从下手,所以我还是基于在原本的G.729.A协议上进行实时通信的开发,但算法依然不是我设计的,算法的知识和代码都是参考网络。
总之在这次编程的过程中,本人查阅了大量的书籍资料,也包括网络上的实例代码等。
由于时间和技术等多方面因素,代码不是优化的但收获颇多。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- IP 电话 实时 通信 实现 课程设计