毕业设计论文基于linux的实时语音通信软件设计与开发.doc
《毕业设计论文基于linux的实时语音通信软件设计与开发.doc》由会员分享,可在线阅读,更多相关《毕业设计论文基于linux的实时语音通信软件设计与开发.doc(58页珍藏版)》请在三一办公上搜索。
1、本科毕业设计(论文)题 目基于linux的实时语音通信软件的设计与开发学 院计算机软件学院专 业计算机科学与技术(软件工程方向)姓 名班 级学 号指导教师二五年六月杭 州 电 子 科 技 大 学毕业设计(论文)任务书学 院计算机学院专 业计算机科学与技术(软件工程方向)班 级011011学生姓名指导教师学 号一、题目基于Linux的实时语音通信软件的设计与开发二、内容和要求需要达到的技术指标:本系统的主要功能是实现局域网内的端到端的实时语音通信,下面是功能的详细描述:1. 能实现端到端的语音通信(即输入主机名,能够与对方连接上;这边说话,另一边能听到声音;同样另一边说话,这边也能听到声音)2.
2、 语音通信时,确保传输可靠,声音不要失真;3. 能将说话声以WAV格式录音下来;可以发送录制的或者其它音乐的WAV文件给对方;4. 在这边“请求聊天”时,若对方在一定的时间过后还没有回复“同意”或者“拒绝就会提示电话留言;对方回来时可以按动“电话留言”键,播放内容;5. 有多个电话留言时,能正确存储、播放;6. 根据功能,做出相应的图形界面。阅读文献:1. 李卓桓,瞿华等编著.Linux网络编程机械工业出版社2. 宋国伟编著.GTK2.0 编程范例,清华大学出版社3. OSS-跨平台的音频接口简介4. 肖文鹏 .Linux音频编程指南 EB/OL5. 郭永冲,冯泽森,吾守尔斯拉木. 基于Lin
3、ux平台的语音传输工具的设计与实现.Computer Engineering第29卷第6期Vol.29 No.6.6. Linux声音设备编程实例http:/www.china-7. 王永福,殷毅,周峰.Internet 语音传输的设计与实现.三、起止日期及进度安排起止日期:2005年1月23日 至2005年06月10日进度安排:序号时间内容11月23日到3月1日熟悉开发环境,开发工具;23月1日到3月20日学习linux下网络编程;学习声卡功能的调用函数;33月20日到4月15日软件能实现“录音”,“聊天”功能;44月15日到5月1日所设想的软件功能,在终端模式下能够实现;55月1日到5月1
4、0日学习GTK图形编程;65月10日到5月20日实现图形界面;75月20日到6月10日完成毕业论文指导教师(签名)年月日四、教研室审查意见:教研室主任(签名)年月日学院批准人(签名)年月日 基于linux的实时语音通信软件的设计与开发【摘要】 现在语音通信的软件很多,不过大部分软件,虽然功能完善,但是相对独立,不利于集成到自己开发的软件里。而有时我们需要把语音通信这个功能集成到自己开发的软件里,为此,设计和开发了这个基于Linux的实时语音通信软件。本软件基于Linux的实时语音通信软件,能实现局域网里端到端的语音通信和文本聊天两大功能。设计和开发此软件主要涉及到音频编程,网络编程,多线程编程
5、以及QT Designer界面开发等知识。语音通信部分的设计思想:先实现声音的录音和播放功能,接着完成文本的网络传输;然后将文本信息替换成语音信息,实现单工模式的实时语音通信;能实现单工模式后,再利用多线程编程,实现双工模式的实时语音通信;最后是界面的设计和实现。文本聊天部分的设计思想:先完成一个客户端应用程序和一个服务器端应用程序。然后把服务器端核心代码嵌入到客户端程序里,完成文本聊天程序。实现单工模式语音通信后,如何把它整合成双工模式的实时语音通信是实现整个语音软件通信软件最难解决的问题。本论文所要研究阐述的是如何在Linux开发平台上,利用现有的音频编程和网络编程知识,设计和开发局域网里
6、基于Linux的实时语音通信软件。【关键词】 实时 语音通信 QT LinuxDesign And Implementation of Real time Audio Communication Software Based on Linux【Abstract】 There are many audio communicatinon softwares now, but these softwares are relatively perfect and relatively independent , as a result , it is not easy to integrate the
7、se softwares into ourself developed software. Its the reason for designing and developing this real time audio communication software .This software real time audio communication software based on Linux ,can realize audio communication and text chatting two functions in LAN. Design and implementatio
8、n of this real time audio communication software ranges over audio programming,network programming ,multithreading programming and QT Designer etc .The whole idea of designing audio communication is as follows: First finish recording audio and playing audio; After this ,try to transport text informa
9、tion over network;Then achieve audio communication in simplex mode by replacing text information with audio information ;Then accomplish audio communication in duplex mode by bringing in multithreading programming ; Finally add an interface for this software .The whole idea of designing text chattin
10、g is as follows: First finish a client application and a server application ;Then embed the core code of server application into client application ,and finish this text chatting function .After realizing audio communication in simplex mode , how to realize audio communication in duplex mode is the
11、most difficult problem .This paper is written about how to design and develop this real time audio communication software base on Linux by making use of audio programming and network programming knowledge in Linux environment .【Keywords】 realtime audio communicate QT Linux目 录引 言1第一章 绪论21.1 语音传输现状21.
12、2 Linux操作系统概述31.2.1 什么是Linux31.2.2 Linux的发展历史31.2.3 Linux下软件的安装和卸载4第二章 Linux音频编程52.1 数字音频52.2 编程接口62.2.1 open和close系统调用62.2.2 read和write系统调用62.2.3 ioctl系统调用72.3 音频设备文件72.3.1 设备文件 /dev/sndstat72.3.2 设备文件 /dev/dsp和/dev/audio72.3.3 设备文件 /dev/mixer82.4 音频编程框架9第三章 Linux下基于Socket的网络编程103.1 网络编程基础知识103.1.1
13、 端口和套接口103.1.2 套接字和套接口地址结构103.1.3 基本转换函数113.2 套接口操作函数123.2.1 socket()和bind()函数123.2.2 sendto()和recvfrom()函数123.2.3 listen()和accept()函数13第四章 语音通信的设计和实现144.1 语音通信功能简介144.2 整体设计方案144.3 设计方案的具体实现144.3.1 声音的录制和播放144.3.2 文本的网络传输164.3.3 单工模式的实时语音通信184.3.4 双工模式的实时语音通信194.4 用QT Designer实现界面214.4.1 Qt对象模型214.
14、4.2 Qt信号和槽214.4.3 终端模式存在的不足及改进224.4.4 Linux下多线程编程224.4.5 界面的具体实现23第五章 文本聊天265.1 文本聊天功能简介265.2 整体设计方案275.3 服务器端275.3.1 SimpleServer类275.3.2 ClientSocket类285.3.3 ServerInfo类295.4 客户端295.4.1 连接服务器295.4.2 发送文字305.5 文本聊天的实现30第六章 软件的运行效果及需改进的地方326.1 实时语音通信软件的运行效果326.2 实时语音通信软件需改进的地方33结 论34致 谢35参考文献36附录37引
15、 言随着计算机网络的日益普及,人们通过网络进行交流显得越来越重要。于是出现了一系列的通信软件。网络通讯软件,最早的是ICQ(国外)。随后中国腾讯公司制作出了自己的即时聊天软件OICQ,简称QQ。继而很多公司都看出了即时聊天软件中所蕴涵的巨大商机,于是其他各大门户网站相距推出了自己的软件,象SoHu的SQ,MSN的Msn,YaHoo的雅虎通等. 这些通信软件,虽然功能完善,但是相对独立,不利于集成到自己开发的软件里。而有时我们需要把语音通信这个功能集成到自己开发的软件里,为此,设计和开发了这个基于Linux的实时语音通信软件。本文所要研究阐述的是如何在Linux开发平台上,利用现有的音频编程和网
16、络编程知识,设计和开发局域网里基于Linux的实时语音通信软件。全文的思路如下:第一章将介绍语音传输现状以及该课题的开发平台,第二章介绍Linux音频编程,第三章介绍基于socket的网络编程,第四章给出实时语音通信软件中语音通信功能的设计方案以及实现过程,第五章讲实时语音通信软件中文本聊天功能的设计方案以及实现过程,第六章是描述软件的运行效果,指出需改进的地方。第一章 绪论1.1 语音传输现状当前随着计算机网络在性能和规模上的快速发展,网络服务及应用更加广泛、多样。除传统的数据业务以外,多媒体业务迅速增加,特别是在分组网上的语音传输技术迅速发展并广泛应用于实际生活,比如:VoIP得到了广泛应
17、用,使它在产生巨大的经济价值同时也对传统的电话产生了巨大的冲击。语音传输的关键技术:1. 实时传输协议当前多媒体传输软件多采用在UDP之上以RTP(Real-time Transport Protocol)协议为辅助协议的方式进行传输,RTP是IETF在1996年提出的适合实时数据传输的新型协议。它提供端到端的数据传输服务,包括负载标识、数据序列、时戳等。RTP提供具有实时特征的、端到端的数据传输业务,可以用来传送声音和视频。国际电信联盟在多媒体通信标准H.323中采用了RTP,它还可以被实时流协议(RTSP)所使用。由于RTP并不保证实时服务的QoS,因此RTP有一个姊妹协议:RTCP(Re
18、al-time Transport Control Protocol) 协议。该协议使接收方和发送方交换控制信息去实现流控、QoS等要求。2. 多媒体同步在分组网上传输多媒体信息时,由于信源的分组从其产生、传输、到达处理要受到各种因素的影响,因而可能对分组的原有时间约束关系造成破坏,从而影响多媒体数据的播放。其中分组主要是由于网络传输而产生的延时及延时抖动, 比如不同的数据报的传输路径有可能不同、网络传输条件的变化。另外信源和信宿时钟偏差和现有的通用型操作系统不能够对实时应用提供充分的支持也都是影响同步很重要的因素。一个很常用的流内同步的办法是在接收端设立一个缓冲区,把延时抖动给滤除掉。在每一
19、个有声期的开始根据网络的延时情况进行缓冲调整。3. 丢包修复因为丢包严重地影响了语音质量,所以采取丢包修复方法是很有必要的。现在的实时传输中采用的丢包修复方法大体可以分为基于发送端和接收端结合的方法和单纯基于接收端的方法。前一类主要有以下几种方法:(1)重发法,它是用于修复TCP丢包的常用方法。虽然它不太符合实时要求,但在满足实时要求的条件下也可以作为实时传输的包修复方法。(2)交叠法(interleaving),它对分组实施一些处理从而降 低或分散了丢包的影响。它不增加额外的带宽要求,但却增加了延时。(3)冗余法,它把当前分组之前的某个分组采用 更低带宽要求的编码方式进行编码并由当前分组捎带
20、发送。 这种方法具有大致的修复能力,但它需要额外的带宽要求。 (4)异或法,它在发送端对连续多个数据包作异或运算求出 纠错包,而当发生丢包时丢失包由收到的数据包与纠错包作 异或运算而再生出来。它能够精确修复丢包,但却带来了延 时和额外的带宽要求。单纯基于接收端的错误消除法也有很 多种,比如用背景噪声、相邻分组替代丢失分组,也可以用 再生的方法进行修复。 4. 速率自适应由于网络的传输情况是时变的,我们设计的软件必须能够随着网络的变化而调整传输速率。这样做既是为减少拥塞,也是为了公平对待基于TCP的软件,因为基于TCP的 软件与基于UDP的多媒体软件共享带宽而且其具有拥塞控制 功能,假设我们设计
21、的软件没有拥塞控制功能,那么在网络 发生拥塞时,基于TCP的软件自动降低速率而我们的软件则 保持原来的速率,这样我们的多媒体软件则相当于从基于 TCP的软件那里偷取了带宽而且也加重了网络拥塞。1.2 Linux操作系统概述1.2.1 什么是Linux准确的说,是指Linux的kernel(系统的核心程序),其内核版权属于Linus Torvalds,在GPL(GNU General Public License)版权协议下发行, 任何人都可以自由的复制(copy), 修改(change), 套装分发(distribute),销售,但是不可以在分发时加入任何限制, 而且所有原码必须是公开的,所以
22、任何人都可以无偿取得所有执行文件和源代码。对于Linux用户和系统管理员来说,Linux是指包含Linux kernel、utilities (系统工具程序)以及application (应用软件)的一个完整的操作系统。Linux的应用软件是由自由软件基金会(FSF)开发的,全世界许多热心的程序员为Linux开发或移植了很多应用程序,包括X-Windows、Emacs、TCP/IP网络(包括SLIP/PPP/ISDN)等等,现在Linux(包括内核和大量的应用程序)光是执行程序就已经达到200M,完全安装后的规模将更大(大约500M左右)。 从本质上讲,Linux是Unix的”克隆”或Unix
23、风格的操作系统,在源代码级上兼容绝大部分的Unix标准(如IEEE POSIX),它遵从 POSIX规范,例如对于System V来说,把其上程序源代码拿到 Linux下重新编译后就可以运行。 Linux的标志是可爱的企鹅,至于为什么选用企鹅,Linus是这样说的:别的都被他人用了,企鹅,不是也非常可爱吗?!由Linux作者发布的仅仅是一个内核而己,有一些公司或组织把内核、原代码及相关的应用程序组织在一起发行, 于是就产生了不同的Linux发行(distributor)版本, 比较著名的发行版本有RedHat、SlackWare 、S.u.S.e、Debian 等。1.2.2 Linux的发展
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 毕业设计 论文 基于 linux 实时 语音 通信 软件设计 开发

链接地址:https://www.31ppt.com/p-4865424.html