毕业设计(论文)JMF语音视频聊天软件的实现.doc
《毕业设计(论文)JMF语音视频聊天软件的实现.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)JMF语音视频聊天软件的实现.doc(55页珍藏版)》请在三一办公上搜索。
1、摘 要随着网络的不断发展,在网络上的语音视频通信成为研究和应用的热点之一。要在网络上进行语音视频通信,便要解决音、视频信号的采集、回放、编解码以及数据的传输的问题。本文将用Java的JMF解决这些问题。JMF是Java的一种可选用的应用编程接口(API)软件包,它为音频和视频等媒体内容的采集、回放、传输和编码转换等提供了一个统一的架构。JMF用RTP协议传输实时媒体信号。RTP是针对Internet上多媒体数据流的一个传输协议。RTP能在一对一或一对多的传输情况下工作,其目的是提供时间信息和实现流同步。RTP建立在UDP上。RTP只保证实时数据的传输,并不提供可靠的传送机制,也不提供流量控制或
2、拥塞控制,它依靠RTCP提供这些服务。RTP的一对多的传输,由IP组播实现。IP组播是主机之间“一对一组”的通讯模式。加入了同一个组的主机可以接收到此组内的所有数据,网络中的交换机和路由器只向有需求者复制并转发其所需数据。IP组播能有效地节省网络和主机的资源,并且它允许在广域网上传输。由于NAT的存在,令许多P2P应用无法应用于NAT背后的主机,语音视频通信也不例外。根据NAT的原理,能用UDP打孔技术进行NAT的穿透。本文使用JMF完成语音视频聊天软件的实现。该软件既能进行点对点的语音视频通信,也能进行多人语音视频通信,并用UDP打孔技术完成了对NAT的穿透,使该软件能在广域网上使用。关键字
3、:语音视频通信,JMF,RTP,组播,穿透NAT,UDP打孔技术ABSTRACTAlong with the constant development of the network, the voice and video communications on Internet is one of hot topic of research and application. In order to communication with voice and video on the network, it needs to solve sound and video signals collect
4、ion, playback, codecs and data transmission problems. This paper uses the Javas JMF to solve these problems. JMF is an available Application Programming Interface (API) package of Java. It provides a unified framework for audio and video media content collection, playback, data conversion and transm
5、ission. JMF uses RTP to transmit real-time media signal. RTP is a special transmission protocol for Internet multimedia data streams. RTP can in point-to-point or point-to-multi-point transmission mode, the aim is to provide time information and to achieve flow synchronization. RTP bases on UDP. RTP
6、 only guaranteed real-time datas transmission. It does not provide reliable delivery mechanisms, flow control or congestion control. It relies on RTCP to provide these services. Point-to-multi-point transmission mode of RTP uses IP Multicast technology. IP Multicast is communication mode of hosts on
7、e-to-one group. Computers join in a group can receive all the data from this group. Switches and routers only replicate and transmit the data to the computers who need the data. It can effectively to save networks and computers resources, and it is allowed to transmit on the wide-area network. Due t
8、o the existence of NAT, many P2P applications can not be used to the computers behind NAT. Audio and video communication is no exception. According to the theory of NAT, we can use UDP hole punching technology to complete NAT penetration. This paper uses JMF to complete voice and video chatting soft
9、ware. The software not only can be used to do point-to-point voice and video communications, but also can be used to do many-to-many communications. The software uses UDP hole punching technology to complete NAT penetration so that it can be successfully applied on WAN.Keywords: voice and video comm
10、unication, JMF, RTP, multicast, NAT penetration, UDP hole punching目 录第一章 概述11.1语音通信系统的模型11.2语音聊天软件的设计2第二章 JMF基础42.1 关于JMF技术42.2 JMF模型42.3 JMF常用类52.4 事件模型11第三章 RTP、RTCP163.1 流媒体163.2 实时传输协议RTP173.3 实时传输控制协议RTCP20第四章 组播技术234.1 概述234.2 单播/组播/广播 通讯协议的特点及应用对比23第五章 穿透NAT285.1 NAT的作用285.2 NAT的分类及工作原理295.3
11、NAT产生的问题335.4 穿透NATUDP打孔技术33第六章 基于JMF的语音聊天软件的实现366.1 编程和运行环境366.2 主要功能模块的设计与实现366.3 运行结果476.4 总结50参考文献51致谢53第一章 概述1.1语音通信系统的模型语音通信系统可分为以下几个模块,如图1-1所示。图1-1 语音通信系统模型1.1.1 音频信号的采集以及回放在进行音频信号的采集中,我们必须考虑到采样率的问题,声音信号的采样率有8KHz、16KHz、32KHz、44KHz等,每种数据采样率产生的数据量都不一样,越高的采样率产生的数据量越大,所以我们要选择合适的采样率以适应网络的带宽1。1.1.2
12、 音频数字信号的编码与解码如果直接把采集到的音频信号数据流在网络上进行传输,它所占有的带宽也是十分大的,以8KHz的采样率采集14位的音频数据,那么就有以下这样的一个式子:14 bit 8000Hz = 112,000 bits/second or 112 kbps从中我们可以看出以这样的方式传输音频数据,每秒需要向网络中发送112kb的数据。从节省带宽的角度考虑,我们很有必要对这样的数据进行压缩。对多媒体信号的压缩我们有许多可以选择的格式,如mp2、mp3、GSM等等。所以,我们这里也存在一个对压缩格式进行选择的问题,考虑到音频数据传输的及时性,对传输的音频数据质量的要求,以及各种压缩格式的
13、压缩比率以及进行压缩和解压缩所要耗费的系统资源等方面问题,选择合适的压缩格式就显得尤为重要。1.1.3双方之间的数据传输网络上传输数据,有TCP和UDP。TCP较可靠,所以应用在不允许数据丢失的应用上。而UDP则较多应用于处理速度要求较快、数据传输可靠性要求不是很高的应用上,如数据广播。通信协议的选择取决于我们所要做的应用的类型。怎样建立网络连接,稳定的接收和发送音频信号的数据流是关键。1.2语音聊天软件的设计要实现在网络上进行语音通信,便要解决音频信号的采集、回放、编解码以及数据的传输的问题。Java的JMF是一种应用编程接口(API)软件包,它为音频和视频等媒体内容的捕获、回放、传输和编码
14、转换等提供了一个统一的架构。本文将使用JMF完成对语音通信软件的设计。本文在第二章介绍了JMF的有关知识,第三章介绍RTP、RTCP原理,在第六章给出实现的方法。鉴于语音聊天软件的发展,多人语音聊天已成为语音聊天软件必不可少的一个功能,所以本软件也加入了这一功能。当前的网络中有三种通讯模式:单播、广播、组播。我们能够用这三模式中的其中一个完成多人语音聊天这一功能。单播为一对一的信息传送,如果10个客户机需要相同的数据,则服务器需要逐一传送,重复10次相同的工作,浪费网络和服务器的资源。发送广播,子网内所有主机均可收到数据报,通信量巨大,智能低,并且不允许跨越网段。组播为主机之间“一对一组”的通
15、讯模式,加入了同一个组的主机可以接收到此组内的所有数据,网络中的交换机和路由器只向有需求者复制并转发其所需数据。由以上三种模式的比较,本文运用组播技术实现多人语音聊天这一功能。本文第四章介绍组播的基础知识,在第六章给出实现的方法。在广域网,P2P软件可能失灵,主要是由于NAT设备的存在。NAT是在IP地址日益缺乏的背景下产生的,它解决了地址不够用的问题。但它也导致了内外网无法直接通信或受到某些限制的问题。要使语音通信软件能在广域网上无误地运行,该软件便要穿透NAT。本文在第五章介绍了NAT的基本原理及NAT的穿透方法,在第六章给出实现的方法。第二章 JMF基础2.1 关于JMF技术JMF(Ja
16、va Media Framework),Java媒体架构,是对应Java 2平台标准版(J2SE)的一种可选用的应用编程接口(API)软件包,它为音频和视频等媒体内容的捕获、回放、传输和编码转换等提供了一个统一的架构。JMF技术提供了先进的媒体处理能力,从而扩展了Java平台的功能。这些功能包括:媒体捕获、压缩、流转、回放,以及对各种主要媒体形式和编码的支持,如M-JPEG、H.263、MP3、RTP/RTSP (实时传送协议和实时流转协议)、Macromedias Flash、IBM的HotMedia和Beatniks的Rich Media Format (RMF)等。JMF 2.1.1还支
17、持广受欢迎的媒体类型,如Quicktime、Microsofts AVI和MPEG-1等。此外,JMF软件中包括了一个开放的媒体架构,可使开发人员灵活采用各种媒体回放、捕获组件,或采用他们自己的定制的内插组件。2.2 JMF模型在开发JMF应用程序之前要理解JMF的体系架构、接口和类。就拿我们的家用摄像机系统作个例子。如图2-1所示,首先用摄像机拍摄内容,拍摄下来的内容录制在DV带中。DV带可以放在播放器里播放,播放器提供视频信号给电视机,提供音频信号给音箱,这样我们就可以在电视机上看到画面,从音箱那里听到声音。JMF API提供的也是同样的模型,从采集设备(Capture Device)里得
18、到信号,放在数据源(DataSource)里,然后交给播放器(Player)播放,Player根据信号的格式,分别将它们送给不同的目的地(Destination)2。图2-1 JMF模型2.3 JMF常用类JMF的常用类包括以下几个: 数据源(DataSource) 媒体定位器(MediaLocator) 播放器(Player) 处理器(Processor) 数据池(DataSink) 数据格式(Format) 管理器(Manager) RTP管理器(RTPManager)2.3.1 数据源就像DV带中保存了视频和音频信号一样,数据源(DataSource)中包含了媒体数据流。在JMF中,Da
19、taSource对象就是数据源,它可以是从采集设备获得的数据,也可以是一个多媒体文件,也可以是从互联网上下载的数据流。对于DataSource对象,一旦你确定了它的位置和类型,对象中就包含了多媒体的位置信息和能够播放该多媒体的软件信息。当创建了 DataSource对象后,可以将它送入Player对象中,而Player对象不需要关心DataSource中的多媒体是如何获得的,以及格式是什么3。2.3.2 媒体定位器DataSource通常用两种方式来定义,媒体定位器(MediaLocator)或URL(Universal Resource Locator)。MediaLocator类似于URL
20、,并且可以由URL来构造,即使在没有安装相应的协议处理机制的情况下,也能构造MediaLocator(在Java,只有在系统上安装了URL协议的处理机制的情况下,才能构造一个URL)。MediaLocator用来定位采集设备、本机的媒体文件、网络上的媒体文件以及网络RTP流。2.3.3 播放器如图2-2所示,播放器(Player)对象将音频、视频数据流作为输入,然后将数据流输出到音箱或屏幕上,就像播放器读取DV带中的数据,然后将音频信号送到音箱上,视频数据送到屏幕上一样。图2-2 JMF播放器(Player)模型Player对象有多种状态,JMF中定义了Player有六种状态,如图2-3所示。
21、在正常情况下Player对象需要经历每个状态,然后才能播放多媒体。下面是对这些状态的说明。图2-3播放器的状态转换图 Unrealized:在这种状态下,Player对象已经被实例化,但是并不知道它需要播放的多媒体的任何信息。 Realizing:当调用realize( )方法时,Player对象的状态从Unrealized转变为Realizing。在这种状态下,Player对象正在确定它需要占用哪些资源。 Realized:在这种状态下Player对象已经确定了它需要哪些资源,并且也知道需要播放的多媒体的类型。 Prefetching:当调用prefetch( )方法时,Player对象的状
22、态从Realized变为Prefetching。在该状态下的Player对象正在为播放多媒体做一些准备工作,其中包括加载多媒体数据,获得需要独占的资源等。这个过程被称为预取(Prefetch)。 Prefetched:当Player对象完成了预取操作后就到达了该状态。 Started:当调用start( )方法后,Player对象就进入了该状态并播放多媒体。当一个播放器从一个状态转换到另一个状态时,它将产生TransitionEvent事件(详细请看2.3 事件模型)。通过ControllerListener接口,你的程序可以确定播放器在什么状态并作出相应的反应。使用这种事件报告机制,你可以在
23、调用播放器的方法前确定播放器是否在其适当的状态。为了避免混乱情况,在一个播放器所有状态下,不是所有的方法都能被调用的。如果你在一个播放器对象的当前状态下,调用了一个非法的方法,播放器对象将抛出异常或错误。2.3.4 处理器处理器(Processor)对应的接口是Processor。在JMF API中Processor接口继承了Player接口。Processor同样可以用来播放媒体数据。它是一种特殊的播放器,它可以对输入媒体流进行过程控制。处理器支持所有播放器拥有的播放控制功能。如图2-4所示,除了将媒体数据传送至播放终端外,处理器可以将媒体数据输出至一个数据源(DataSource),使用P
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 毕业设计 论文 JMF 语音 视频 聊天 软件 实现

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