首页 > 范文大全 > 正文

基于FMS4的P2P音视频交互技术的教学应用研究――以网络远程教学辅导系统为例

开篇:润墨网以专业的文秘视角,为您筛选了一篇基于FMS4的P2P音视频交互技术的教学应用研究――以网络远程教学辅导系统为例范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘要:近年来,随着信息技术的发展,网络远程教学辅导已成为了教育辅导领域的热门方向。而由于开展远程教学辅导时实时视频流的并发性大,导致了开发网络远程教学辅导系统的难度高。2010年9月Adobe公司了最新的FMS4流媒体服务器,带来了实时视频通信的P2P时代。使得在开发远程教学辅导系统时,可以引入了FMS4来实现P2P的远程实时视频交互和文字交流功能。文章以此系统的开发为基础,给出了基于fms4p2p文本交互功能的实现,包括FMS4的P2P系统的开发环境、实现原理、关键代码和功能实现等。也给出了基于FMS4的P2P实时音视频功能实现过程,包括RTMP与RTMFP协议优劣对比、P2P的音视频实现原理和功能实现。目前通过测试和试用,表明该技术条件下的网络远程教学辅导系统的实时性和抗压能力有了明显的提高。

关键词:FMS4;实时网络教学辅导;RTMFP;P2P

中图分类号:TP37文献标识码:A文章编号:1009-3044(2012)01-0144-05

Research of Audio and Video Interaction Technology Teaching Application Based on P2P of FMS4―Base on Web-Based Remote Teaching Guidance System

HU Shi-qing, ZHOU Bing

(Department of Educational Technology, Normal College, Shenzhen University, Shenzhen 518060, China)

Abstract: In recent years, along with the development of information technology, web-based remote teaching guidance has become popular in the field of education guidance. But because Simultaneity of real-time video streaming is complicated and big, have led to the fact that it is difficult to develop the web-based remote teaching guidance system. Adobe Company release the latest FMS4 streaming media server in September of 2010, bring real-time video communication to P2P era. makes that FMS4 can be used to realize the P2P remote real-time video interactions and text communication function. Based on development of remote teaching guidance system, this paper analysis realization methods of P2P text Interaction function of FMS4, including the development environment, realization principle, key code and function etc. And analysis realization process of P2P real-time audio and video of FMS4, including the comparison RTMP with RTMFP agreement , principle and methods of realization based on P2P audio and video Interaction function of FMS4. through test and trial, Indicate that real-time and compressive capacity of the system have been obvious improved.

Key words: FMS4; Real-time Web-based Teaching Guidance; RTMFP; P2P

教学辅导作教学重要环节,它对巩固教学效果,帮助学困生进步,推动学优生全面发展起到了重要作用[1]。随着信息技术的发展,教学辅导的形式,呈现远程化、异地化、网络化的趋势。相对于传统的面对面的教学辅导,网络远程教学辅导打破时间和地域限制,可以让学生足不出户得到教师的实时高效辅导,并且凭借其真实、直观、实惠、便捷、安全的优势,快速发展成为了教育辅导市场的新方向。要开展网络远程教学辅导,它所依托的远程教学辅导系统,成为了影响教学辅导效果的重要因素。

网络远程教学辅导系统的理想方式是通过网络提供师生面对面的实时交流,因此,教师和学生之间的实时音视频传播和文字交流质量是远程教学辅导的实现基础和核心功能,一个优秀的远程教学辅导系统必须要确保系统运行时有流畅的实时性和丰富的交互性。

通过调查发现目前国内应用的网络远程教学辅导系统主要有泛智网、家教通、异地家教网、智龙网、24家教网等,这些远程教学辅导系统的实时视频应用,主要采用了两种服务器:一种是开源的Red5,另一种是FMS服务器。其中Red5是一款基于Java的开源流媒体服务器,它依托RTMP协议来传输流媒体,实现了实时视频播放、远程共享对象、实时录制等功能。由于开源的原因,目前成为了企业架设实时视频通信服务时的优先选择[2]。FMS是Adobe公司推出的流媒体服务器,它是当前实时视频通信市场的主流服务器,它几乎能满足网络实时视频通信的所有应用需求,是主流视频服务厂商的偏爱。但由于Red5和FMS4.0之前版本的服务器,均采用基于TCP的RTMP协议来通信,不能支持低延迟和大的并发流,所以需要部署大量的边缘服务器和增加服务器的带宽,来保证视频的流畅和通信质量,从而大大增加了企业开发成本。

2010年9月Adobe系统公司了最新版本的FMS4,它基于RTMFP协议实现了P2P技术,代表了当前主流的网络实时视频交互技术。基于以上原因,我们在设计新版的远程教学辅导系统中,采用了最新版的FMS4,实现了基于FMS4的P2P实时音视频交互功能,将FMS4的P2P技术引入网络远程教学辅导领域,并对它进行有益尝试和研究。

1 FMS和P2P技术概述

FMS(Adobe Flash Media Server)是Adobe公司推出的流媒体服务器,它能够提供优秀的流媒体播放和实时通信功能,同时FMS还提供了强大的可定制脚本的服务器流媒体引擎[3]。通过这个引擎,允许建构面向互联网任何用户群体的交互媒体应用,以及基于FLV的传统视频点播服务(VOD),还能够建构如视频博客、视频共享、视频直播、在线游戏、视音频聊天等交互性的双向及多向应用[4]。由于Adobe公司在网络多媒体应用上的雄厚实力,以及Flash Player在网络上广泛应用,FMS已成为多媒体应用服务器端的主要系统平台,如优酷、土豆等大型视频网站就采用了这项技术。

P2P又称对等互联网络技术,它不会将所有网络负载聚集在较少的几台服务器上,而依赖网络中参与者的计算能力和带宽。在P2P应用环境中实现了客户端的之间直接联系,让客户端在网络环境下利用P2P直接交互。在P2P环境中真正地消除中间商,使得网络共享和交互变得更容易、更直接,因此,加入节点越多、整个系统的容量也越大[5]。这与传统的客户/服务器架构刚好相斥,在那种架构中每增加一个客户端,意味着分享一份系统资源,系统的整体性能将下降[6]。P2P架构的这种分布特性,在大流量的实时远程教学辅导系统中,对解决视频带宽紧张,提高视频传播的速度和质量有明显优势。

目前,在刚的FMS 4中,增加了最值得期待的新功能,对p2p的支持,提供了安全、可扩展的P2P直播和点播功能。

2基于FMS4的P2P文本交互功能的实现研究

2.1基于FMS4的系统开发环境

在FMS4之前的FMS流媒体服务器都没有提供P2P功能,直到2009年Adobe才提拱了在Stratus2的流媒体服务器中使用P2P功能[7]。但要架构Stratus2的P2P服务,首先要向Adobe公司申请开发密钥,然后联结Stratus服务器,如果成功将得到“NetConnection. Connect.Success”事件,并被分配一个独特的256位peer ID,其它Flash Player客户端必须通过个peer ID才能通信[8]。如果要进行第二次开发,就会感到局限,因为不能自己部署服务器进行局域网内的开发运营。令人高兴的是,在最新的fms4中,p2p功能已经集成进来了,使得利用FMS开发多媒体服务发生了质的飞跃,但要开发FMS4的P2P服务系统,开发环境要达到如下要求:(1)开发使用的Flex SDK要达到Flex SDK4.1以上版本,可以从Adobe官网下载,或者可以安装目前最新版的Flash Builder4,它默认的Flex SDK是Flex SDK4.1。(2)FMS流媒体服务器,必须是FMS4以上版本,可以从Adobe官网上获得。(3)Flash Player要达到Flash Player10.1以上版本,如果是开发,最好使用debug版的Flash Player。

2.2基于FMS4的P2P文本交互功能的实现原理

在FMS4.0之前,如果我们要做一个多人实时在线交互的应用,比如多人文本聊天功能时,我们需要通FMS服务器把所有在线用户链接起来,如果网中的某个人需要向所有人发送信息,那所有信息都必须经过FMS服务器发送,这样才能实现共享数据服务。这种模式在众多用户的远程教学辅导系统中会使服务器的压力增大,实时交流的服务质量下降,影响学生学习的满意度[9]。假如教师A一个数据想给同网段的其他100个学生,那么这100个学生都需要通过服务器来与教师A通信,这无疑加重了服务器和教师A的负担,影响了整个系统的服务质量。而在FMS4.0中引入了NetGroup“群组”的概念,利用p2p的功能很好地解决了这个问题。当教师A数据想让同一个组中的其他100个学生接收时,那么当教师A将数据发送到学生B时,学生B获得所有数据后也可以将数据加入“群组”内,同时出去,这样学生B也成了数据的者,那么其他学生就可以不从教师A处获取数据,从而可以减轻教师A的实时通信压力。同时由于采用了P2P通信,教师与学生之间的数据交换不需要经过服务器中转,从而也大幅度降低了服务器负荷,保证了服务质量。这就是新的基于FMS4.0的P2P模式,每个用户都可以作为数据的接收者和发出者,参与的用户越多,数据的副本就越多,服务的速度也就越快。

如图1所示,基于FMS4的P2P文本交互功能的具体流程是:发送端和接收端分别向FMS4.0服务器发出联接请求,如果FMS4服务器接收连接,发送端和接收端将分别收到连接成功的信息"NetConnection.Connect.Success",此时发送端和接收端通过方法“new NetGroup(netConnec? tion, roupSpecifier.groupspecWithAuthorizations())”加入到同名的群组中。如果加入“群组”成功,发送端和接收端将收到“NetGroup.Connect.Success”状态,这时发送端可以通过“netGroup.addHaveObjects(0, _dataLength -1)”将要发的数据加入群组的待发数据列表中。接收端收到“NetGroup.Connect.Success”状态后,就可调用addWantObjects方法向发送端提出发送数据请求,此时发送端收到"Net Group.Replication.Request"状态提示,发送端就可以响应接收端的请求,通过调用“netGroup.省略.省略.index])”方法,以UDP协议的方式将需要的数据块发送过去,然后“接收方”会收到"NetGroup.Replication.Fetch.SendNotify"的数据到达通 知,如果成功接收,接收端将进入“NetGroup.Replication.Fetch.Result”状态,数据全部接收完成后,接收端可将收到的数据重新合并呈现在接收端的视图上,同时还可调用addWantObjects方法将数据添加到群组待发的数据列表中,接收端此时变成了新的发送端[10]。

部分关键代码如下:

// "接收方"有数据到达时将触发此处理,但目前尚未接收数据

case "NetGroup.Replication.Fetch.省略.index);//教师信息即将接收

break;

case "NetGroup.Replication.Fetch.Failed":

case "NetGroup.Replication.Fetch.省略.省略.object);//教师信息已接收

//接收完成以后,将数据添加到待发送对象列表,此时接收方又转变成了发送方

netGroup.省略.省略.index);

//新建群组,设置相关参数,并加入群组

private function OnConnect():void{

var groupSpecifier:GroupSpecifier; //创建一个GroupSpecifier对象并设置相关参数据

groupSpecifier = new GroupSpecifier( groupNameText.text);

groupSpecifier.postingEnabled = true;

groupSpecifier.serverChannelEnabled = true;

groupSpecifier.objectReplicationEnabled = true;

groupSpecifier.ipMulticastMemberUpdatesEnabled=true;

netGroup = new NetGroup(netConnection, groupSpecifier.groupspecWithAuthorizations());

netGroup.addEventListener(_STATUS, NetStatusHandler);

}//将教师的聊天内容加入“群组”的待发送列表,并显示在界面

private function massageDisplay():void{

var _message:Object = new Object;

_message.user = userNameText.text;

_message.text = chatText.text;

_message.sequence = sequenceNumber++;

_message.sender = netConnection.省略Group.addHaveOb? jects(0, _dataLength - 1);

}

2.3基于FMS4的P2P文本交互功能的实现验证

为了真实再现FMS4.0的P2P实现过程,我们在基于p2p的文本交互功能模块中,将教师端的每条发送数据通过for循环向发送列表重复加了二十条,点击发送将数据发送出去,然后重开了二个学生端依次点“接收信息”。发现当第一个学生端接收完20条教师端的信息后,它自己开始接收第二个学生端的请求,此时第一个学生端变成了教师信息的发送端,其它学生端可以从第一个学生那里获得教师信息。通过开多个窗口测试发现,加入学生群组的人越多速度会越快。基于FMS4.0的P2P文本交互功能演示如图2。

3基于FMS4的P2P实时音视频功能实现研究

Flash Player已经在web视频领域占有了重要的市场份额,这得益于FMS流媒体服务器卓越的性能和Flash Player的98%的普及程度。利用FMS流媒体服务器可以开发视频点播或者实时视频的应用程序。视频点播应用程序是从服务器向客户端提供已编码处理的视频流,这些音视频流可以是歌曲、电影、电视剧等音频或视频文件,目前主流的优酷、土豆等视频网站就是采用的这种技术。实时视频应用程序是客户端通过视频采集设备如摄像头等,将采集的实时视频或音频数据,通过FMS服务器发送给其它的客户端或者是发送给FMS服务器保存处理。实况视频的典型应用包括视频会议、远程教学辅导等。

3.1 RTMP与RTMFP

FMS4.0之前版本在提供视频服务时,使用了Real-Time Messaging Protocol (RTMP)协议。RTMP是流媒体、共享对象、远程连接的优秀选择,它能满足实时性要求不高的交互式音频和视频通信,当同时在线的用户数量大时,网络通信的并发量就会倍增,对服务器就会产生巨大的压力。在FMS4.0中采用了一种新的通信协议RTMFP(实时流媒体协议),RTMFP是Adobe公司开发的新的通信协议,它可以使终端用户在基于Adobe AIR架构的多个Adobe Flash播放器和应用程序之间进行直接通信[11]。RTMFP协议为应用程序(如远程教学辅导系统)提供了高质量的实时通信解决方案,同时,RTMFP协议也实现了视频点播、实时直播等功能,客户端用 户通过麦克风和摄像头就能实现高质量的直接音频或视频通信交流。

通过表1,RTMFP与RTMP的比较,RTMFP在多个功能点上进行了优化,表现出强劲的性能和卓越的品质。

1)RTMP是基于TCP协议,而RTMFP是建立在UDP协议和性能更优的FlashPlayer10以上版本。TCP提供了可靠的数据传输,比较适合于文件传输和电子邮件等用途,但它没有提供任何端到端延迟保证。这种提供可靠数据传输的TCP实现了重新传输丢失数据的功能,但增加了延迟。而实时通信中最重要的目标是确保最小的端到端延迟,因此TCP协议并不适合这一用途。为了确保传输过程中的错误恢复,在Flash Player 10中采用了先进的音频和视频压缩技术,如Speex音频和H.264视频编解码器,保证实时通信的正确性。同时RTMFP还提供了可靠和不可靠的两种服务,当在Flash Player实例之间,使用NetStream.send()发送数据时,提供可靠的数据传输;而当使用Speex发送音频时,不可靠的交互方式被使用,以提供最小的延迟。

2)支持点对点通信。在利用RTMP通信时,如果客户端之间要进行数据传输,必须先将数据发送到FMS服务器端,然后经过服务器转发到其它用户,而利用RTMFP通信时,它无需经过服务器的中转,就可以将一个客户端的数据直接发送到另一个客户端。此时的FMS服务器只起到桥梁作用,为客户端之间创建通信会话,传递其它客户端的相关信息。这种优势在远程教学辅导应用中,可大大减轻网络带宽的消耗和服务器的负担。

3)支持数据传输的优先次序。在实时通信中如果带宽有限时我们希望能优先确保声音的畅通,再保证视频和非实时的数据通信。RTMFP支持这种数据传输的优先次序,大大提高了用户体验。

4)支持连接错误恢复能力。RTMFP协议提供了两种重要特性,有助于解决一些连接错误导致的问题:1、快速连接修复:连接在短暂掉线的情况下将会快速恢复。例如,当一个无线网络连接掉线了,那么会马上重建连接。一旦重新连接,它将迅速拥有所有的传送能力。2、IP动态化:即使一个客户转换到新的IP地址,原先处于活动状态的网络peer会话仍然会保持。例如,一台无线网络连接的笔记本接入到有线网络后,会获得一个新IP地址,但它仍然可以继续之前的通信。

3.2基于FMS4的P2P的音视频功能的实现原理

要架构基于FMS4.0的P2P实时音视频共享教学应用,需要分别配置FMS4服务器、发送端和接收端。具体发送端、接收端和服务器的交互流程如图3如示。

1)发送端的开发思路是:首先获得FMS4.0服务器的URL和将要进入的“群组名”,然后创建一个NetConnec? tion对象,调用netConnection.addEventListener(NetSta? _STATUS, netStatusHandler)进行监听,通过命令netConnection.connect(“url”)连接服务器,这里URL与以往版本的FMS连接不同,FMS4.0采用的是RTMFP协议,所以URL应当改成“rtmfp://localhost/…”的形式;如果服务器接受请求,发送端将收到“NetConnection.Connect.Success”的状态,此时发送端可以创建NetGroup对象,设置相关“群组”的配置并连接该“群组”;如果连接成功,发送端进入“NetGroup.Connect.Success”状态,这时可继续创建一个发送流NetStream对象并向服务器发送连接,如成功会收到“NetStream.Connect.Success”信息;当收到发送流连接成功后,可以检测麦克风和摄像头并配置它们的相关参数,分别使用netStream.attachAudio(mic);和netStream.attachCamera(camera)命令,将音频和视频信息添加到发送流上;同时还要创建一个VideoDisplay视频播放组件,将摄像头采集到的视频信息在发送端显示出来,让发送者自己了解当前的视频状态;最后,发送端可以使用发送流的publish命令netStream.publish("教师名")将这个流出去,此时接收端就能收到这个音视频流的信息了。当然此处也可以这样设计,将流名改成为发送端的用户名,当用户将自己本地摄像头捕捉到的画面publish到fms4服务器时,fms4服务器将存放它在userList这个集合对象中,集合中存放的是每个用户名也就是他们视频的名字。每当新用户加入或者退出会议的时候,fms4服务器就把这个userList广播给每个还在线的用户。接收端的用户取得userList后,只需播放其它用户名的视频即可[12]。

2)接收端的开发思路是:前面步骤与发送端相同,也是先与服务器建立连接,然后创建“群组”,如果以上都成功,就要创建一个接收流来接收发送端的音视频信息,这里不需要再去获取麦克风和摄像头的信息了,只需再创建一个Video视频播放组件,将接收流的信息通过attachNetStream(inNetStream)命令加入Video组件,并调用netStream.play("教师名"),就可开始播放发送端的音视频信息了。这里的play()方法的参数必须与发送端的publish()方法的参数名相同。当然大多数据情况下,一个客户端既是者也是订阅者,那么它必须创建两个流,一个流,一个接受流。

3)服务器的开发思路,如果要在FMS4服务器上注册一个应用程序,需要在FMS4的安装目录下的/applications文件夹中新建一个以应用程序名命名的文件夹,然后在此文件夹下新建一个名为main.asc文件存放服务器端代码。在main.asc文件中可以使用两个对象:Client对象和application对象。当一个客户端连接到一个FMS4上的应用程序时,FMS4服务器可以通过创建Client类的实例来代表一个客户端,有了这项客户端实例,就可以用它来完成这个客户端发送和接收数据。服务器端的application对象代表这个应用程序,它是Application类的实例,通过它服务器端可以接受客户端的连接请求,也可完成客户端的连接断开和关闭应用程序等功能。当一个客户端连接FMS4服务器时,服务器端将接受一个application.onConnect事件,如果接受此客户端连接请求,则调用appli? cation.acceptConnection(currentClient)方法。如果此客户端不符合连接要求,则调用application.rejectConnection(currentClient)方法来拒绝此客户端请求。相反,当一个客户端断开FMS4.0服务器时,服务器端接受到一个application.onDisconnect事件,此时可以通过application.clients命令来向所有在线客户端发送信息,通知其它用户此用户已下线[13]。

3.3基于FMS的P2P的音视频功能的实现验证

在最新的远程教学辅导系统上采用FMS4作为流媒体服务器后,实现现了文本和音视频的实时交互功能。经测试发现依托FMS4的P2P技术,在课堂人越多时,视频越流畅,语音越清晰。其系统演示如图4所示。

4结束语

通过对FMS4的应用研究发现它对比以往版本的确实有了新的改进,特别是它基于RTMFP协议的P2P音视频技术的新功能,给我们远程教学辅导系统的系统稳定性和抗压性带来了许多实惠,相信不久将有更多的视频应用系统采用FMS4,希望通过将FMS4引入远程教学辅导领域,能对将来远程教学辅导系统的设计开发人员有所借鉴。

参考文献:

[1]赵才欣.对改进教学辅导的若干认识[J].现代教学.2009.8.

[2]孙超.流媒体服务器Red5的扩展设计、测试与优化[d].上海交通大学硕士学位论文.2009.1.

[3]鲁志刚.基于Flash Media Server(FMS)的网络教学系统设计与实现[D].东北师范大学硕士学位论文. 200906:29-45.

[4]尤亮.基于流媒体技术的在线视频教学系统的设计与实现[D].厦门大学硕士学位论文. 200811:54-60.

[5]方玉田.浅谈P2P拓扑结构及算法[J].远程教育杂志.74-75.

[6]佚名. P2P网络的优势[DB/OL].省略/Tutorial/CSharp/fms%20p2p/fms%20p2p.aspx.

[7]佚名.stratus[DB/OL]..

[9]菩提树下的杨过. flash player10.1 + FMS4中的p2p功能[DB/OL].省略.

[10] Adobe?Flex?4.1语言参考.

[11]徐洪华,底晓强,郭乃珠.基于RTMP协议的视频广播系统结构设计.长春理工大学学报,2007,12.

[12] William B. Sanders. Learning Flash Media Server 3[M]. O’Reilly.2008:98-108.

[13]高鹏.基于流媒体技术的在线辅助教学系统设计与研究[D].北京交通大学硕士学位论文. 200906:17-21.