基于RTMP协议的视频会议系统综述.docx
- 文档编号:12579752
- 上传时间:2023-06-06
- 格式:DOCX
- 页数:19
- 大小:285.79KB
基于RTMP协议的视频会议系统综述.docx
《基于RTMP协议的视频会议系统综述.docx》由会员分享,可在线阅读,更多相关《基于RTMP协议的视频会议系统综述.docx(19页珍藏版)》请在冰点文库上搜索。
基于RTMP协议的视频会议系统综述
内部资料
注意保存
理工大学指挥自动化学院本科毕业设计论文
基于RTMP协议的视频会议系统
姓名:
张佳
队别:
05407队
专业:
指挥自动化工程(合训)
指导教员:
王勇
职称:
讲师
理工大学指挥自动化学院训练部制表
二〇〇九年六月
基于RTMP的视频会议系统
摘要:
在如今的经济时代,人们都在寻求利用更少的资源来完成更多任务的策略。
由于视频会议允许用户在可视的情况下交换信息,因而它几乎能够应用于任何情况下,提高通信的质量和效率。
随着计算机硬件技术和网络技术的发展,一方面基于IP网络的视频会议系统有了速度更快、运行更稳定的系统及网络平台,现在用户可以选择网络的带宽从原来的64K发展到10M甚至更高;另一方面从设备购置、系统运行等方面,用户的负担已经大幅度降低,使得视频通信逐渐走下神坛,其用途将会越来越多。
本系统采用FMS开发网络视频会议系统。
目前支持多人同时在线,具有视频交互、语音通信、文本聊天、电子白板等功能。
关键词:
FMS,RTMP,视频会议,IIS,电子白板,视频聊天
一、绪论
(一)课题背景
网络的应用已渗透到社会的各个角落,提高办公效率,异地办公,网络化办公已不是新名词。
网络视频会议,成为现代化办公会议的一个重要组成部分,即语音视频功能,借助互联网即可实现异地交流。
但网络视频会议的应用也面临开发成本高、运行环境高、部署实施困难、耗资大等一系列的问题。
视频会议系统按实现方式可以分为硬件视频和软件视频。
硬件视频借助专门的硬件设备,利用专线网络传输。
这种架构能有效保证质量,但其投人是非常昂贵的,非一般的公司和单位所能承担。
软件视频,可以不使用专线网络,使用互联网传输,此类系统利用了企业现有的PC资源和各类互联网络接人,为企业构建具有视频、音频、白板、文档协作、程序共享等功能的及时沟通平台,其建设和维护费用仅为硬件视频系统的1/10。
但传统的软件视频系统的开发涉及到数据编码,通讯技术,服务端客户端环境构建等诸多因素,给系统开发带来巨大工作量,形成居高不下的开发和实施成本。
传统的C/S模式的视频会议系统在使用对机器客户端/服务端要求较高。
而通过B/S设计的基于UDP或是TCP的视频传输上效率较低。
新兴的RTMP协议,作为一个专门为高效传输视频、音频和数据而设计的协议。
对于视频传输这一块又有了新的功能与优点。
通过Adobe公司推出的开发流媒体的服务器软件FlashMediaServer服务器建立的B/S模式的视频传输系统能够更加高效的完成视频传输任务。
(二)课题意义
本系统搭建了一个虚拟的交互平台。
此平台支持参加会议人员之间视频、音频通信。
与会人员之间可以进行文字、音频对话,以及使用电子白板进行通话,系统还提供私聊功能。
主持人也可以控制参加会议的人员的行为。
视频会议是一种非常有前途的应用。
已广泛应用到企业的决策,远程教学,远程医疗等各个领域。
目前随着技术的成熟和带宽资源的丰富,需求和应用猛增。
(三)课题相关工具与技术
随着网络传输速度的加快,以及视音频压缩技术的不断发展,现在人们更倾向于用软件方式构筑视音频交流环境,这样可以极大地降低开发使用成本,并且系统也易于维护。
1.Flash技术应用
Flash最初是作为一款矢量图动画设计开发软件发布的。
现在已经普及于网络。
但它的应用已经脱离了纯粹的动画设计,广泛应用到了网站动画,互动多媒体,游戏设计,企业级程序应用,移动设备程序应用。
这些应用都可以概括到RIA(RichInternetApplication)应用,在RIA应用上,通过Flash相关技术架构,可以充分把Flash处理多媒体的丰富功能跟数据库结合起来,提供良好的客户端操作环境,具备跨平台,实时响应等特点。
而这些应用仅要求客户端具备浏览器搭配FlashPlayer。
已经有相当多的网站采用Flash丰富的多媒体功能,做行销演示。
FlashMty,情景动画更是深人人心。
事实上FlashPlayer:
已经普及到了绝大多数互联网终端,并且越来越多的移动设备开始支持Flash。
2.FlashMediaServer
本系统开发采用Macromedia公司(现为Adobe公司)的FlashMediaServer(以下简称FMS)技术为主要的技术工具,在此技术平台上搭建视频会议系统。
下面就FMS技术作以下简单的介绍。
FMS是Macromedia公司(现为Adobe公司)开发的一个全新的流媒体服务平台,综合了语音、视频和数据流的网络多媒体,是提供存储语音、视频流和数据共享的系统。
FMS支持在多个客户端中实现同步分布式数据的即时共享,从而可以和FMS建立客户端/服务器(C/S)架构,支持对视频和音频等流媒体交互。
FMS平台由两部分构成,提供流媒体服务的服务器和客户端的Flash播放器,即服务器端和客户端两部分。
服务器端的应用程序在FMS上有自己独立的目录,存放服务端脚本文件和其他资源。
Flash客户端通过RTMP协议与FMS建立连接,这样就在Flash的客户端与服务器端形成稳定的数据流(如图1.1)。
其他的客户端用户能通过同一个服务器接收信息、数据的更新和语音视频流。
RTMP(Real-TimeMessageProtocol)协议是建立在TCP协议上的,提供永久的Socket连接的网络传输协议,用双向通信的方法连接服务端和客户端。
它不同于HypertextTransferProtocol(HTTP)用来连接WorldWideWeb上的服务器。
通常,客户端主要是使用FLASH播放器建立与FMS的连接。
图1.1FMS服务器数据流示意图
FMS技术主要有以下几点优势:
(1)提供专门的服务器平台FMS。
实现对数据流的实时处理,并提供安全可靠的流媒体传输服务;
(2)提供专门的FLV视频压缩格式。
该压缩格式压缩比较高,且画面质量也较高,这极大的缓和了目前网络带宽下流媒体的传输压力,可在现有网络环境下提供较高质量的流媒体服务;
(3)客户端配置简单。
在客户端安装FLASH播放器就可以使用该系统。
而FLASH播放器目前是上网用户浏览网页的必备工具,其普及率达到95%,就像加载FLASH动画短片一样加载系统客户端,而不用安装任何客户端软件。
3.RTMP协议简介
RTMP全称:
RealTimeMessagingProtocol(实时消息传送协议协议)是AdobeSystems公司为Flash播放器和服务器之间音频、视频和数据传输开发的私有协议。
RTMP协议是被Flash用于对象,视频,音频的传输。
该协议建立在TCP协议或者轮询HTTP协议之上。
RTMP协议就像一个用来装数据包的容器,这些数据可以是AMF格式的数据,也可以是FLV中的视/音频数据。
一个单一的连接可以通过不同的通道传输多路网络流.这些通道中的包都是按照固定大小的包传输的。
RTMP协议作为客户端和服务器端的传输协议,这是一个专门为高效传输视频、音频和数据而设计的协议。
在网络带宽不足和拥挤的情况下,虽然传送媒体数据流不如UDP那样流畅,但在目前一般网络条件下表现很好。
RTMP比传统媒体服务器流出的媒介协议支持更多。
它支持可能包含声音,影像和脚本数据从服务器到客户和从客户到服务器多条线路的动态传输。
RTMP对声音、影像和脚本数据分别处理。
声音和视频数据被分开地缓冲在服务器中。
如果声音数据在声音缓冲期中达到某一极限,所有在缓冲器中的数据将被丢掉,并且最近到达的数据被允许开始收集在缓冲中并被送到各个客户。
视频数据被以相似的方式处理不同是当新的关键帧到达时,缓冲器中数据才被清除。
在丢掉旧的帧数据时,如果发现客户端的数据有误,则将新旧两个不同的帧进行拟合。
RTMP对数据给予不同的优先级别。
在实时交谈中,声音是最重要的,影像给予低优先级,而脚本数据被给予的优先权介于声音和影像中间。
在网络链接中,利用RTMP可以创建多个数据流。
二、视频会议系统设计
(一)系统分析
视频会议系统的建设主要通过Internet网络为数据传输介质将各与会人员的视频及音频进行传输交换,为达到要求,整个设计需具备以下要求:
(1)客户端电脑需要配置摄像头及麦克风;
(2)可以随时召集视频会议;
(3)视频会议系统需要整合简单的视频监控功能;
(4)视频会议系要有白板功能让主持人能够进行一些绘画演示;
(5)要有连接指示,一旦断开客户端主持人要知道,同时要通知其他与会人员。
(二)系统平台设计
FMS实现对各客户端文本、视频、音频等信号的接受和广播。
比如A客户端发布信号到FMS,FMS服务器接受来自A的信号,然后将该信号广播给同一个域作用空间内的所有客户端用户,这样实现信息的共享广播。
仅使用FMS技术完全可以实现远程视频通信,客户端就相当于一个SWF文件了,但是不推荐在这样使用。
一方面是因为FMS无法很好的管理系统数据。
不能在WEB上正常地发布系统,因为单纯的通过对SWF文件的访问,对于服务器端来说是不安全的,并且在客户端易出现下载超时或无法下载的情况,使用IIS通过网页发布系统就很好的缓解了这一点,所以本系统采用IIS发布系统。
图2.1展示了B/S平台架构。
FMS
图2.1服务器B/S三层结构图
鉴于以上的分析系统的发布要配置两个服务器环境:
IIS和FMS。
IIS主要任务是:
发布系统。
因为客户端程序是SWF文件也就是Flash播放文件,因此可以将系统嵌入到网页中发布,客户端可以像浏览网页一样轻松的加载系统客户端。
FMS则是视频会议系统的主要实现平台。
当用户通过身份验证后,根据用户信息将用户定向到指定的作用域下,此作用域就是一个虚拟的会议室。
同一个域内的用户可以共享信息。
FMS端程序接受客户端连接请求,建立客户端与虚拟教室之间的连接,用户可以发布视频、音频和文本信息至服务器端。
服务器端则将用户发布过来的信息放在共享信息对象中,客户端则通过同步事件实现对服务器端共享信息的主动订阅,这样就实现了多客户端间信息的共享。
(三)系统结构
通过对视频会议系统的分析,结合FMS技术解决方案,得到了系统结构模型,图2.2展示了系统的结构图。
图2.2视频会议系统结构图
各模块功能介绍如下:
连接指示:
设计一个”变色小灯”,当成功连接服务器之后,灯显示绿色,连接失败,灯显示红色;无连接状态显示为灰色。
登陆模块:
分两种角色,管理员和用户。
管理员可以添加会议名称、会议时间和会议备注。
其他用户需要用户名以及密码才能进入。
电子白板:
通过在白板上绘画需要的图形,使所有的用户都能显示图形。
文字输入:
与会人员进行文字交流的地方。
同时当有新的用户加入或离开时,显示相应信息。
视频通话:
与会人员进行视频以及语音交流的地方。
用户列表:
显示在位用户的ID。
当用户离开时自动删除相应的用户。
用户私聊:
通过在用户列表中点击相应的用户可以与当前的用户进行私聊。
三、视频会议系统实现
(一)开发环境概述
FlashMediaServer作为一个技术框架提供了C/S两部分的API,即客户端API和服务器端API,可以使用ActionScript语言调用API函数或者直接使用组件的方式构建应用程序。
客户端API提供了下面几个对象:
Camera(摄影机)、Microphone(麦克风)、NetConnection(联机)、NetStream(串流)、SharedObject(共享对象)和Video(视频);服务器端API提供了下面这些对象:
Application(应用程序)、Client(客户端)、NetConnection(联机)、SharedObject(共享对象)和Stream(串流)。
下面就这些对象的作用作简要的解释:
服务器端对象Application主要是让程序决定是否接收用户的联机或者关闭用户的联机,以及清除应用程序特定的流及服务器端的共享对象。
Client对象则存储包含每个联机用户的信息,例如客户端的IP地址等。
NetConnection对象可以在应用程序实体和服务器端,或者同一台服务器的另外一个应用程序之间创建一种双向的连接;Remoteshared对象:
维护客户端常见的远程对象,并且它可以实时地在客户端的多个应用程序之间共享和存储数据;客户端Camera对象从摄影机捕捉视频信号,并将其压缩为FLV格式;Microphone对象采集话筒声音信号,并进行实时压缩;NetConnection对象允许Flash客户端通过TCPsocket与FMS建立连接,并且使用RTMP(Real-TimeMessagingProtocol,实时信息通讯协议)交互数据;NetStream对象在使用Netconnect对象所建立的联机对象上,进行数据、声音和视频信息的传输,就如同NetConnect的通道一样。
可以使用NetStream.publish方法来发布数据流;Localshared对象记录用户的资料,或者把讯息实时传递给所有联机用户;Video对象用于显示通过NetStream.play方法或Camera.get方法捕捉到的视频流。
并通过Video.attachVideo方法把该视频对象放置到flash的舞台。
所有客户端和服务器端对象可以通过AS脚本语言来调用它们的方法和属性,从而在FMS技术框架基础上构建应用程序。
由于该技术是基于客户端/服务器端模式,所以在开发应用程序时要分别部署客户端和服务器端程序。
客户端程序的开发是在FLASH软件中使用AS脚本语言调用客户端API实现。
客户端首先要建立与服务器端的联机,然后靠共享对象或数据流对象实现与服务器端的数据通信。
服务器端则只需要配置一个main.asc文件,处理客户端的联机和操作响应,主要是维护一个虚拟的空间,让联机的用户实现信息的共享。
(二)系统整体开发
当用户通过验证后就可以登录FMS服务器,建立RTMP网络连接,开始订阅或者发送数据到FMS,实现信息交换。
图3.1为开发文件的文件结构和执行关系。
在FMS目录下,main.asc是FMS服务器下的主执行文件,其中包含了对客户端连接FMS服务器端请求的所有响应控制信息,是整个会议系统的核心;sharedobjects文件夹为初始化FMS程序时系统自动建立的共享数据域,其中记录了视频会议系统共享对象信息,所有连接到会议系统的客户端都可以借此共享信息。
客户端是一VideoConference.swf播放文件,是嵌入在网页中发布的,其中包含了客户端程序。
图3.1系统文件执行关系
主要的设计思路是由检验用户密码是否正确,如果正确则返回到FMS执行main.asc。
FMS则接受该客户端请求,并将客户端与指定共享数据域建立连接。
图3.1所示,当服务器第一次执行时就生成一个名sharedobjects的目录,该目录就是共享数据域。
它存放着各个客户端发布过来共享数据信息,客户端通过客户端共享对象的同步事件建立与FMSsharedobjects共享域的连接,从而实现数据的共享。
图3.2展示了系统基本的操作界面。
图3.2用户操作界面
(三)系统功能实现
为了加快开发步骤和提高效率,在系统开发时就在FMS组件基础上进行必要的功能扩展。
FMS组件设计的思想是先实现所有功能,然后根据请求参数的不同,设定不同的权限模式。
这样做的好处就是可以实现代码极大地重用,也符合现代软件设计的思想。
那么下面就介绍系统功能的具体实现方法。
1.连接指示
系统连接之后,加载FCConnectionLightClass组件的过程中调用connect函数,使“指示灯”变绿。
当断开时调用close函数,使“指示灯”变灰色。
FCConnectionLightClass.prototype.connect=function(nc){
this.nc=nc;
if(this.nc.FCConnectionLight==null){
this.nc.FCConnectionLight={}}
this.nc.FCConnectionLight[this.name]=this;
this.nc.call(this.prefix+"connect",null,this.interval*1000);
if(this.nc.isConnected)
this.showGreen();
this.checkInterval=setInterval(this,"onCheckInterval",500);
};
FCConnectionLightClass.prototype.close=function(){
clearInterval(this.checkInterval);
varfullName="FCConnectionLight."+this.name;
this.nc.call(this.prefix+"close",null);
this.nc.FCConnectionLight[this.name]=null;
this.nc=null;
this.showGrey();
this.details_mc.latency_txt.text=this.details_mc.bwup_txt.text=this.details_mc.bwdown_txt.text="--";
};
2.登陆模块
登陆模块设置两种角色,普通用户与主持人,主持人可以设置会议的名称,会议时间以及会议备注。
图3.3用户操作界面
3.白板展示
白板展示,是通过客户端请求服务器端建立SharedObject对象实现的。
服务器端接受客户端请求,在服务器端建立SharedObject对象。
所有客户端都连接到同一个共享对象中,实现数据的共享。
在一个会话中,当A客户端通过白板的面板画了一条线时,则该客户端程序将A客户端操作转化成可识别的“划线指令”传递到SharedObject中,服务器端收到客户端的数据信息,并将客户端发送过来的信息保存在SharedObject对象中。
其他客户端则通过自身SharedObject对象的同步事件,取得A客户端发送到服务器端的指令,并在客户端完成重绘,这样就实现了白板演示功能。
图3.4白板展示窗口
4.文本聊天
文本聊天功能主要用于会议过程中的文本通信,是视频会议系统的辅助功能,主要使用服务器端和客户端建立SharedObject共享对象,然后调用客户端SharedObject对象的写记录方法,实现文本通信。
另外它还可以显示刚刚上线或下线的用户,实现代码如下:
client_so.newUser=function(who){
this.ref.chat.history_txt.text+="*****"+who+"进入了会议室*****\n"
this.ref.chat.history_txt.scroll+=1
}
client_so.onDisconnect=function(who,app){
if(app==_global.username||app==true){
for(iinthis.ref.inRoom){
if(this.ref.inRoom[i]==who){
this.ref.inRoom.splice(i,1)
this.ref["newRoom_"+who].gotoAndStop("Disconnect")
}
}
}
if(app==true){
this.ref.chat.history_txt.text+="*****"+who+"离开了会议室*****\n"
this.ref.chat.history_txt.scroll+=1
}
}
图3.5文本聊天窗口
5.用户列表
用户列表功能也是使用建立客户端和服务器端SharedObject对象连接实现,客户端的同步事件以一定的频率扫描FMS端SharedObject对象,如果SharedObject对象发生变化,比如有新用户加入或者退出系统,则客户端SharedObject调用相应的方法比如显示或者删除用户在线信息得到同步。
图3.6文本聊天窗口
6.视频语音聊天
视音频信号的发布和接受是通过FMS的NetStream对象实现的。
它主要在客户端和FMS端建立基于TCP面向连接的连接,一个链路可以包含多个RTMP数据流板通道。
一个客户端使用一个数据流通道来发布自己的视音频流,同时通过多个流通道订阅他人视音频流。
FMS端,对于视音频流是自动转播的,基本上不用写代码。
FMS在收到流连接请求后就将客户端请求定向到指定的作用域空间。
7.私聊功能
通过在用户列表中点击想要进行私聊的用户可以实现与对应的用户进行私聊,私聊的过程包括视频以及文本聊天。
图3.7私聊窗口
四、系统测试
(一)系统运行环境部署
由于本系统成功发布需要配置两个服务器环境,IIS和FMS。
在系统环境配置中要协调好两个服务器之间的关系以及相关的参数。
下面简要介绍系统环境配置的有关问题。
首先要分别安装两个服务器支撑软件。
IIS可以通过操作系统盘可选组件选项提示下进行安装。
FMS可以到ADOBE公司网站上购买,也可以使用试用版用作测试或者开发使用。
一般情况下,要将文件主目录设置在FMS服务器根目录下,具体是在Applicaition下建立一个以特定字符串命名的文件夹。
FMS服务器端执行文件为main.asc。
这样FMS环境就配之好了。
接下来就进入IIS服务器管理器,新建虚拟目录,将网站目录指向刚才新建的文件夹下面,这样就完成了系统的发布。
客户端可以使用浏览器访问系统。
(二)单机功能测试
在配置好服务器运行环境后,首先在单机上进行功能测试。
测试的目的是检测系统各个功能是否正常。
测试时可以运行两个SWF文件或者启动两个浏览器,分别连接到服务器上。
然后按照角色排列顺序,按照不同的角色分别进入系统,对系统的各个功能进行测试。
测试发现两个连接进程可以正常使用系统功能,可以正常实现多人的语音视频、私聊、文字视频交流、电子白板等功能。
(三)网络联机性能测试
系统在单机下运行正常,但也不能依此作为结论。
因为本系统最终将在网络环境下使用,而网络有不定性因素限制着系统的正常使用,基于这样一种考虑,为系统搭建了网络环境,在网络环境中进行了性能测试。
在局域网环境中,使用网内IP地址,设置了服务器连接IP地址。
从局域网其他终端进行登录访问,按不同角色登录,结果系统运行正常,功能可以实现。
当然系统测试远远不止这些,由于条件制约,尚未对系统进行大网络环境下的测试。
在正常交付使用时,还要重点测试在大网络环境多人在线情况下系统负荷、以及系统性能是否稳定等因素,还需要进一步的考证。
五、不足
本系统虽然实现了基本的功能,但是有很多的地方还是需要改进。
主要有以下几个方面:
(1)系统使用的是FMS2.0的服务器,然而现在FMS已经有了3.0的版本,与2.0相比,3.0在功能以及程序的书写上更加的全面。
(2)系统的电子白板功能较为简单,在图形的绘制上比较单调,虽然已经想好了实现的方法但是由于时间问题,只好使用网上寻找的一个组件。
由于版本的问题,所找的组件在修改过程中总是出错,推荐重新写一遍。
(3)用户权限的设置上较为简单,没有进行严格的规划,不能保证主持人的权限。
(4)还有就是王教员提出的多路问题,能不
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 RTMP 协议 视频会议系统 综述
![提示](https://static.bingdoc.com/images/bang_tan.gif)