国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于FMS4的P2P音視頻交互技術(shù)的教學(xué)應(yīng)用研究——以網(wǎng)絡(luò)遠(yuǎn)程教學(xué)輔導(dǎo)系統(tǒng)為例

2012-04-29 00:44:03胡世清周兵
電腦知識(shí)與技術(shù) 2012年1期

胡世清 周兵

摘要:近年來(lái),隨著信息技術(shù)的發(fā)展,網(wǎng)絡(luò)遠(yuǎn)程教學(xué)輔導(dǎo)已成為了教育輔導(dǎo)領(lǐng)域的熱門方向。而由于開(kāi)展遠(yuǎn)程教學(xué)輔導(dǎo)時(shí)實(shí)時(shí)視頻流的并發(fā)性大,導(dǎo)致了開(kāi)發(fā)網(wǎng)絡(luò)遠(yuǎn)程教學(xué)輔導(dǎo)系統(tǒng)的難度高。2010年9月Adobe公司發(fā)布了最新的FMS4流媒體服務(wù)器,帶來(lái)了實(shí)時(shí)視頻通信的P2P時(shí)代。使得在開(kāi)發(fā)遠(yuǎn)程教學(xué)輔導(dǎo)系統(tǒng)時(shí),可以引入了FMS4來(lái)實(shí)現(xiàn)P2P的遠(yuǎn)程實(shí)時(shí)視頻交互和文字交流功能。文章以此系統(tǒng)的開(kāi)發(fā)為基礎(chǔ),給出了基于FMS4的P2P文本交互功能的實(shí)現(xiàn),包括FMS4的P2P系統(tǒng)的開(kāi)發(fā)環(huán)境、實(shí)現(xiàn)原理、關(guān)鍵代碼和功能實(shí)現(xiàn)等。也給出了基于FMS4的P2P實(shí)時(shí)音視頻功能實(shí)現(xiàn)過(guò)程,包括RTMP與RTMFP協(xié)議優(yōu)劣對(duì)比、P2P的音視頻實(shí)現(xiàn)原理和功能實(shí)現(xiàn)。目前通過(guò)測(cè)試和試用,表明該技術(shù)條件下的網(wǎng)絡(luò)遠(yuǎn)程教學(xué)輔導(dǎo)系統(tǒng)的實(shí)時(shí)性和抗壓能力有了明顯的提高。

關(guān)鍵詞:FMS4;實(shí)時(shí)網(wǎng)絡(luò)教學(xué)輔導(dǎo);RTMFP;P2P

中圖分類號(hào):TP37文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):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

教學(xué)輔導(dǎo)作教學(xué)重要環(huán)節(jié),它對(duì)鞏固教學(xué)效果,幫助學(xué)困生進(jìn)步,推動(dòng)學(xué)優(yōu)生全面發(fā)展起到了重要作用[1]。隨著信息技術(shù)的發(fā)展,教學(xué)輔導(dǎo)的形式,呈現(xiàn)遠(yuǎn)程化、異地化、網(wǎng)絡(luò)化的趨勢(shì)。相對(duì)于傳統(tǒng)的面對(duì)面的教學(xué)輔導(dǎo),網(wǎng)絡(luò)遠(yuǎn)程教學(xué)輔導(dǎo)打破時(shí)間和地域限制,可以讓學(xué)生足不出戶得到教師的實(shí)時(shí)高效輔導(dǎo),并且憑借其真實(shí)、直觀、實(shí)惠、便捷、安全的優(yōu)勢(shì),快速發(fā)展成為了教育輔導(dǎo)市場(chǎng)的新方向。要開(kāi)展網(wǎng)絡(luò)遠(yuǎn)程教學(xué)輔導(dǎo),它所依托的遠(yuǎn)程教學(xué)輔導(dǎo)系統(tǒng),成為了影響教學(xué)輔導(dǎo)效果的重要因素。

網(wǎng)絡(luò)遠(yuǎn)程教學(xué)輔導(dǎo)系統(tǒng)的理想方式是通過(guò)網(wǎng)絡(luò)提供師生面對(duì)面的實(shí)時(shí)交流,因此,教師和學(xué)生之間的實(shí)時(shí)音視頻傳播和文字交流質(zhì)量是遠(yuǎn)程教學(xué)輔導(dǎo)的實(shí)現(xiàn)基礎(chǔ)和核心功能,一個(gè)優(yōu)秀的遠(yuǎn)程教學(xué)輔導(dǎo)系統(tǒng)必須要確保系統(tǒng)運(yùn)行時(shí)有流暢的實(shí)時(shí)性和豐富的交互性。

通過(guò)調(diào)查發(fā)現(xiàn)目前國(guó)內(nèi)應(yīng)用的網(wǎng)絡(luò)遠(yuǎn)程教學(xué)輔導(dǎo)系統(tǒng)主要有泛智網(wǎng)、家教通、異地家教網(wǎng)、智龍網(wǎng)、24家教網(wǎng)等,這些遠(yuǎn)程教學(xué)輔導(dǎo)系統(tǒng)的實(shí)時(shí)視頻應(yīng)用,主要采用了兩種服務(wù)器:一種是開(kāi)源的Red5,另一種是FMS服務(wù)器。其中Red5是一款基于Java的開(kāi)源流媒體服務(wù)器,它依托RTMP協(xié)議來(lái)傳輸流媒體,實(shí)現(xiàn)了實(shí)時(shí)視頻播放、遠(yuǎn)程共享對(duì)象、實(shí)時(shí)錄制等功能。由于開(kāi)源的原因,目前成為了企業(yè)架設(shè)實(shí)時(shí)視頻通信服務(wù)時(shí)的優(yōu)先選擇[2]。FMS是Adobe公司推出的流媒體服務(wù)器,它是當(dāng)前實(shí)時(shí)視頻通信市場(chǎng)的主流服務(wù)器,它幾乎能滿足網(wǎng)絡(luò)實(shí)時(shí)視頻通信的所有應(yīng)用需求,是主流視頻服務(wù)廠商的偏愛(ài)。但由于Red5和FMS4.0之前版本的服務(wù)器,均采用基于TCP的RTMP協(xié)議來(lái)通信,不能支持低延遲和大的并發(fā)流,所以需要部署大量的邊緣服務(wù)器和增加服務(wù)器的帶寬,來(lái)保證視頻的流暢和通信質(zhì)量,從而大大增加了企業(yè)開(kāi)發(fā)成本。

2010年9月Adobe系統(tǒng)公司發(fā)布了最新版本的FMS4,它基于RTMFP協(xié)議實(shí)現(xiàn)了P2P技術(shù),代表了當(dāng)前主流的網(wǎng)絡(luò)實(shí)時(shí)視頻交互技術(shù)?;谝陨显?,我們?cè)谠O(shè)計(jì)新版的遠(yuǎn)程教學(xué)輔導(dǎo)系統(tǒng)中,采用了最新版的FMS4,實(shí)現(xiàn)了基于FMS4的P2P實(shí)時(shí)音視頻交互功能,將FMS4的P2P技術(shù)引入網(wǎng)絡(luò)遠(yuǎn)程教學(xué)輔導(dǎo)領(lǐng)域,并對(duì)它進(jìn)行有益嘗試和研究。

1 FMS和P2P技術(shù)概述

FMS(Adobe Flash Media Server)是Adobe公司推出的流媒體服務(wù)器,它能夠提供優(yōu)秀的流媒體播放和實(shí)時(shí)通信功能,同時(shí)FMS還提供了強(qiáng)大的可定制腳本的服務(wù)器流媒體引擎[3]。通過(guò)這個(gè)引擎,允許建構(gòu)面向互聯(lián)網(wǎng)任何用戶群體的交互媒體應(yīng)用,以及基于FLV的傳統(tǒng)視頻點(diǎn)播服務(wù)(VOD),還能夠建構(gòu)如視頻博客、視頻共享、視頻直播、在線游戲、視音頻聊天等交互性的雙向及多向應(yīng)用[4]。由于Adobe公司在網(wǎng)絡(luò)多媒體應(yīng)用上的雄厚實(shí)力,以及Flash Player在網(wǎng)絡(luò)上廣泛應(yīng)用,F(xiàn)MS已成為多媒體應(yīng)用服務(wù)器端的主要系統(tǒng)平臺(tái),如優(yōu)酷、土豆等大型視頻網(wǎng)站就采用了這項(xiàng)技術(shù)。

P2P又稱對(duì)等互聯(lián)網(wǎng)絡(luò)技術(shù),它不會(huì)將所有網(wǎng)絡(luò)負(fù)載聚集在較少的幾臺(tái)服務(wù)器上,而依賴網(wǎng)絡(luò)中參與者的計(jì)算能力和帶寬。在P2P應(yīng)用環(huán)境中實(shí)現(xiàn)了客戶端的之間直接聯(lián)系,讓客戶端在網(wǎng)絡(luò)環(huán)境下利用P2P直接交互。在P2P環(huán)境中真正地消除中間商,使得網(wǎng)絡(luò)共享和交互變得更容易、更直接,因此,加入節(jié)點(diǎn)越多、整個(gè)系統(tǒng)的容量也越大[5]。這與傳統(tǒng)的客戶/服務(wù)器架構(gòu)剛好相斥,在那種架構(gòu)中每增加一個(gè)客戶端,意味著分享一份系統(tǒng)資源,系統(tǒng)的整體性能將下降[6]。P2P架構(gòu)的這種分布特性,在大流量的實(shí)時(shí)遠(yuǎn)程教學(xué)輔導(dǎo)系統(tǒng)中,對(duì)解決視頻帶寬緊張,提高視頻傳播的速度和質(zhì)量有明顯優(yōu)勢(shì)。

目前,在剛發(fā)布的FMS 4中,增加了最值得期待的新功能,對(duì)p2p的支持,提供了安全、可擴(kuò)展的P2P直播和點(diǎn)播功能。

2基于FMS4的P2P文本交互功能的實(shí)現(xiàn)研究

2.1基于FMS4的系統(tǒng)開(kāi)發(fā)環(huán)境

在FMS4之前的FMS流媒體服務(wù)器都沒(méi)有提供P2P功能,直到2009年Adobe才提拱了在Stratus2的流媒體服務(wù)器中使用P2P功能[7]。但要架構(gòu)Stratus2的P2P服務(wù),首先要向Adobe公司申請(qǐng)開(kāi)發(fā)密鑰,然后聯(lián)結(jié)Stratus服務(wù)器,如果成功將得到“NetConnection. Connect.Success”事件,并被分配一個(gè)獨(dú)特的256位peer ID,其它Flash Player客戶端必須通過(guò)個(gè)peer ID才能通信[8]。如果要進(jìn)行第二次開(kāi)發(fā),就會(huì)感到局限,因?yàn)椴荒茏约翰渴鸱?wù)器進(jìn)行局域網(wǎng)內(nèi)的開(kāi)發(fā)運(yùn)營(yíng)。令人高興的是,在最新發(fā)布的fms4中,p2p功能已經(jīng)集成進(jìn)來(lái)了,使得利用FMS開(kāi)發(fā)多媒體服務(wù)發(fā)生了質(zhì)的飛躍,但要開(kāi)發(fā)FMS4的P2P服務(wù)系統(tǒng),開(kāi)發(fā)環(huán)境要達(dá)到如下要求:(1)開(kāi)發(fā)使用的Flex SDK要達(dá)到Flex SDK4.1以上版本,可以從Adobe官網(wǎng)下載,或者可以安裝目前最新版的Flash Builder4,它默認(rèn)的Flex SDK是Flex SDK4.1。(2)FMS流媒體服務(wù)器,必須是FMS4以上版本,可以從Adobe官網(wǎng)上獲得。(3)Flash Player要達(dá)到Flash Player10.1以上版本,如果是開(kāi)發(fā),最好使用debug版的Flash Player。

2.2基于FMS4的P2P文本交互功能的實(shí)現(xiàn)原理

在FMS4.0之前,如果我們要做一個(gè)多人實(shí)時(shí)在線交互的應(yīng)用,比如多人文本聊天功能時(shí),我們需要通FMS服務(wù)器把所有在線用戶鏈接起來(lái),如果網(wǎng)中的某個(gè)人需要向所有人發(fā)送信息,那所有信息都必須經(jīng)過(guò)FMS服務(wù)器發(fā)送,這樣才能實(shí)現(xiàn)共享數(shù)據(jù)服務(wù)。這種模式在眾多用戶的遠(yuǎn)程教學(xué)輔導(dǎo)系統(tǒng)中會(huì)使服務(wù)器的壓力增大,實(shí)時(shí)交流的服務(wù)質(zhì)量下降,影響學(xué)生學(xué)習(xí)的滿意度[9]。假如教師A發(fā)布一個(gè)數(shù)據(jù)想給同網(wǎng)段的其他100個(gè)學(xué)生,那么這100個(gè)學(xué)生都需要通過(guò)服務(wù)器來(lái)與教師A通信,這無(wú)疑加重了服務(wù)器和教師A的負(fù)擔(dān),影響了整個(gè)系統(tǒng)的服務(wù)質(zhì)量。而在FMS4.0中引入了NetGroup“群組”的概念,利用p2p的功能很好地解決了這個(gè)問(wèn)題。當(dāng)教師A發(fā)布數(shù)據(jù)想讓同一個(gè)組中的其他100個(gè)學(xué)生接收時(shí),那么當(dāng)教師A將數(shù)據(jù)發(fā)送到學(xué)生B時(shí),學(xué)生B獲得所有數(shù)據(jù)后也可以將數(shù)據(jù)加入“群組”內(nèi),同時(shí)發(fā)布出去,這樣學(xué)生B也成了數(shù)據(jù)的發(fā)布者,那么其他學(xué)生就可以不從教師A處獲取數(shù)據(jù),從而可以減輕教師A的實(shí)時(shí)通信壓力。同時(shí)由于采用了P2P通信,教師與學(xué)生之間的數(shù)據(jù)交換不需要經(jīng)過(guò)服務(wù)器中轉(zhuǎn),從而也大幅度降低了服務(wù)器負(fù)荷,保證了服務(wù)質(zhì)量。這就是新的基于FMS4.0的P2P模式,每個(gè)用戶都可以作為數(shù)據(jù)的接收者和發(fā)出者,參與的用戶越多,數(shù)據(jù)的副本就越多,服務(wù)的速度也就越快。

如圖1所示,基于FMS4的P2P文本交互功能的具體流程是:發(fā)送端和接收端分別向FMS4.0服務(wù)器發(fā)出聯(lián)接請(qǐng)求,如果FMS4服務(wù)器接收連接,發(fā)送端和接收端將分別收到連接成功的信息"NetConnection.Connect.Success",此時(shí)發(fā)送端和接收端通過(guò)方法“new NetGroup(netConnec? tion, roupSpecifier.groupspecWithAuthorizations())”加入到同名的群組中。如果加入“群組”成功,發(fā)送端和接收端將收到“NetGroup.Connect.Success”狀態(tài),這時(shí)發(fā)送端可以通過(guò)“netGroup.addHaveObjects(0, _dataLength -1)”將要發(fā)的數(shù)據(jù)加入群組的待發(fā)數(shù)據(jù)列表中。接收端收到“NetGroup.Connect.Success”狀態(tài)后,就可調(diào)用addWantObjects方法向發(fā)送端提出發(fā)送數(shù)據(jù)請(qǐng)求,此時(shí)發(fā)送端收到"Net Group.Replication.Request"狀態(tài)提示,發(fā)送端就可以響應(yīng)接收端的請(qǐng)求,通過(guò)調(diào)用“netGroup.writeRequestedOb ject(e.info.requestID, _data[e.info.index])”方法,以UDP協(xié)議的方式將需要的數(shù)據(jù)塊發(fā)送過(guò)去,然后“接收方”會(huì)收到"NetGroup.Replication.Fetch.SendNotify"的數(shù)據(jù)到達(dá)通知,如果成功接收,接收端將進(jìn)入“NetGroup.Replication.Fetch.Result”狀態(tài),數(shù)據(jù)全部接收完成后,接收端可將收到的數(shù)據(jù)重新合并呈現(xiàn)在接收端的視圖上,同時(shí)還可調(diào)用addWantObjects方法將數(shù)據(jù)添加到群組待發(fā)的數(shù)據(jù)列表中,接收端此時(shí)變成了新的發(fā)送端[10]。

部分關(guān)鍵代碼如下:

// "接收方"有數(shù)據(jù)到達(dá)時(shí)將觸發(fā)此處理,但目前尚未接收數(shù)據(jù)

case "NetGroup.Replication.Fetch.SendNotify":

output(e.info.index);//教師信息即將接收

break;

case "NetGroup.Replication.Fetch.Failed":

case "NetGroup.Replication.Fetch.Result":

output(e.info.index + " " + e.info.object);//教師信息已接收

//接收完成以后,將數(shù)據(jù)添加到待發(fā)送對(duì)象列表,此時(shí)接收方又轉(zhuǎn)變成了發(fā)送方

netGroup.addHaveObjects(e.info.index, e.info.index);

//新建群組,設(shè)置相關(guān)參數(shù),并加入群組

private function OnConnect():void{

var groupSpecifier:GroupSpecifier; //創(chuàng)建一個(gè)GroupSpecifier對(duì)象并設(shè)置相關(guān)參數(shù)據(jù)

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(NetStatusEvent.NET_STATUS, NetStatusHandler);

}//將教師的聊天內(nèi)容加入“群組”的待發(fā)送列表,并顯示在界面

private function massageDisplay():void{

var _message:Object = new Object;

_message.user = userNameText.text;

_message.text = chatText.text;

_message.sequence = sequenceNumber++;

_message.sender = netConnection.nearID;

for (var i:int = 0; i < _dataLength; i++){_data

[i] =message ;}this.netGroup.addHaveOb? jects(0, _dataLength - 1);

}

2.3基于FMS4的P2P文本交互功能的實(shí)現(xiàn)驗(yàn)證

為了真實(shí)再現(xiàn)FMS4.0的P2P實(shí)現(xiàn)過(guò)程,我們?cè)诨趐2p的文本交互功能模塊中,將教師端的每條發(fā)送數(shù)據(jù)通過(guò)for循環(huán)向發(fā)送列表重復(fù)加了二十條,點(diǎn)擊發(fā)送將數(shù)據(jù)發(fā)送出去,然后重開(kāi)了二個(gè)學(xué)生端依次點(diǎn)“接收信息”。發(fā)現(xiàn)當(dāng)?shù)谝粋€(gè)學(xué)生端接收完20條教師端的信息后,它自己開(kāi)始接收第二個(gè)學(xué)生端的請(qǐng)求,此時(shí)第一個(gè)學(xué)生端變成了教師信息的發(fā)送端,其它學(xué)生端可以從第一個(gè)學(xué)生那里獲得教師信息。通過(guò)開(kāi)多個(gè)窗口測(cè)試發(fā)現(xiàn),加入學(xué)生群組的人越多速度會(huì)越快。基于FMS4.0的P2P文本交互功能演示如圖2。

3基于FMS4的P2P實(shí)時(shí)音視頻功能實(shí)現(xiàn)研究

Flash Player已經(jīng)在web視頻領(lǐng)域占有了重要的市場(chǎng)份額,這得益于FMS流媒體服務(wù)器卓越的性能和Flash Player的98%的普及程度。利用FMS流媒體服務(wù)器可以開(kāi)發(fā)視頻點(diǎn)播或者實(shí)時(shí)視頻的應(yīng)用程序。視頻點(diǎn)播應(yīng)用程序是從服務(wù)器向客戶端提供已編碼處理的視頻流,這些音視頻流可以是歌曲、電影、電視劇等音頻或視頻文件,目前主流的優(yōu)酷、土豆等視頻網(wǎng)站就是采用的這種技術(shù)。實(shí)時(shí)視頻應(yīng)用程序是客戶端通過(guò)視頻采集設(shè)備如攝像頭等,將采集的實(shí)時(shí)視頻或音頻數(shù)據(jù),通過(guò)FMS服務(wù)器發(fā)送給其它的客戶端或者是發(fā)送給FMS服務(wù)器保存處理。實(shí)況視頻的典型應(yīng)用包括視頻會(huì)議、遠(yuǎn)程教學(xué)輔導(dǎo)等。

3.1 RTMP與RTMFP

FMS4.0之前版本在提供視頻服務(wù)時(shí),使用了Real-Time Messaging Protocol (RTMP)協(xié)議。RTMP是流媒體、共享對(duì)象、遠(yuǎn)程連接的優(yōu)秀選擇,它能滿足實(shí)時(shí)性要求不高的交互式音頻和視頻通信,當(dāng)同時(shí)在線的用戶數(shù)量大時(shí),網(wǎng)絡(luò)通信的并發(fā)量就會(huì)倍增,對(duì)服務(wù)器就會(huì)產(chǎn)生巨大的壓力。在FMS4.0中采用了一種新的通信協(xié)議RTMFP(實(shí)時(shí)流媒體協(xié)議),RTMFP是Adobe公司開(kāi)發(fā)的新的通信協(xié)議,它可以使終端用戶在基于Adobe AIR架構(gòu)的多個(gè)Adobe Flash播放器和應(yīng)用程序之間進(jìn)行直接通信[11]。RTMFP協(xié)議為應(yīng)用程序(如遠(yuǎn)程教學(xué)輔導(dǎo)系統(tǒng))提供了高質(zhì)量的實(shí)時(shí)通信解決方案,同時(shí),RTMFP協(xié)議也實(shí)現(xiàn)了視頻點(diǎn)播、實(shí)時(shí)直播等功能,客戶端用戶通過(guò)麥克風(fēng)和攝像頭就能實(shí)現(xiàn)高質(zhì)量的直接音頻或視頻通信交流。

通過(guò)表1,RTMFP與RTMP的比較,RTMFP在多個(gè)功能點(diǎn)上進(jìn)行了優(yōu)化,表現(xiàn)出強(qiáng)勁的性能和卓越的品質(zhì)。

1)RTMP是基于TCP協(xié)議,而RTMFP是建立在UDP協(xié)議和性能更優(yōu)的FlashPlayer10以上版本。TCP提供了可靠的數(shù)據(jù)傳輸,比較適合于文件傳輸和電子郵件等用途,但它沒(méi)有提供任何端到端延遲保證。這種提供可靠數(shù)據(jù)傳輸?shù)腡CP實(shí)現(xiàn)了重新傳輸丟失數(shù)據(jù)的功能,但增加了延遲。而實(shí)時(shí)通信中最重要的目標(biāo)是確保最小的端到端延遲,因此TCP協(xié)議并不適合這一用途。為了確保傳輸過(guò)程中的錯(cuò)誤恢復(fù),在Flash Player 10中采用了先進(jìn)的音頻和視頻壓縮技術(shù),如Speex音頻和H.264視頻編解碼器,保證實(shí)時(shí)通信的正確性。同時(shí)RTMFP還提供了可靠和不可靠的兩種服務(wù),當(dāng)在Flash Player實(shí)例之間,使用NetStream.send()發(fā)送數(shù)據(jù)時(shí),提供可靠的數(shù)據(jù)傳輸;而當(dāng)使用Speex發(fā)送音頻時(shí),不可靠的交互方式被使用,以提供最小的延遲。

2)支持點(diǎn)對(duì)點(diǎn)通信。在利用RTMP通信時(shí),如果客戶端之間要進(jìn)行數(shù)據(jù)傳輸,必須先將數(shù)據(jù)發(fā)送到FMS服務(wù)器端,然后經(jīng)過(guò)服務(wù)器轉(zhuǎn)發(fā)到其它用戶,而利用RTMFP通信時(shí),它無(wú)需經(jīng)過(guò)服務(wù)器的中轉(zhuǎn),就可以將一個(gè)客戶端的數(shù)據(jù)直接發(fā)送到另一個(gè)客戶端。此時(shí)的FMS服務(wù)器只起到橋梁作用,為客戶端之間創(chuàng)建通信會(huì)話,傳遞其它客戶端的相關(guān)信息。這種優(yōu)勢(shì)在遠(yuǎn)程教學(xué)輔導(dǎo)應(yīng)用中,可大大減輕網(wǎng)絡(luò)帶寬的消耗和服務(wù)器的負(fù)擔(dān)。

3)支持?jǐn)?shù)據(jù)傳輸?shù)膬?yōu)先次序。在實(shí)時(shí)通信中如果帶寬有限時(shí)我們希望能優(yōu)先確保聲音的暢通,再保證視頻和非實(shí)時(shí)的數(shù)據(jù)通信。RTMFP支持這種數(shù)據(jù)傳輸?shù)膬?yōu)先次序,大大提高了用戶體驗(yàn)。

4)支持連接錯(cuò)誤恢復(fù)能力。RTMFP協(xié)議提供了兩種重要特性,有助于解決一些連接錯(cuò)誤導(dǎo)致的問(wèn)題:1、快速連接修復(fù):連接在短暫掉線的情況下將會(huì)快速恢復(fù)。例如,當(dāng)一個(gè)無(wú)線網(wǎng)絡(luò)連接掉線了,那么會(huì)馬上重建連接。一旦重新連接,它將迅速擁有所有的傳送能力。2、IP動(dòng)態(tài)化:即使一個(gè)客戶轉(zhuǎn)換到新的IP地址,原先處于活動(dòng)狀態(tài)的網(wǎng)絡(luò)peer會(huì)話仍然會(huì)保持。例如,一臺(tái)無(wú)線網(wǎng)絡(luò)連接的筆記本接入到有線網(wǎng)絡(luò)后,會(huì)獲得一個(gè)新IP地址,但它仍然可以繼續(xù)之前的通信。

3.2基于FMS4的P2P的音視頻功能的實(shí)現(xiàn)原理

要架構(gòu)基于FMS4.0的P2P實(shí)時(shí)音視頻共享教學(xué)應(yīng)用,需要分別配置FMS4服務(wù)器、發(fā)送端和接收端。具體發(fā)送端、接收端和服務(wù)器的交互流程如圖3如示。

1)發(fā)送端的開(kāi)發(fā)思路是:首先獲得FMS4.0服務(wù)器的URL和將要進(jìn)入的“群組名”,然后創(chuàng)建一個(gè)NetConnec? tion對(duì)象,調(diào)用netConnection.addEventListener(NetSta? tusEvent.NET_STATUS, netStatusHandler)進(jìn)行監(jiān)聽(tīng),通過(guò)命令netConnection.connect(“url”)連接服務(wù)器,這里URL與以往版本的FMS連接不同,F(xiàn)MS4.0采用的是RTMFP協(xié)議,所以URL應(yīng)當(dāng)改成“rtmfp://localhost/…”的形式;如果服務(wù)器接受請(qǐng)求,發(fā)送端將收到“NetConnection.Connect.Success”的狀態(tài),此時(shí)發(fā)送端可以創(chuàng)建NetGroup對(duì)象,設(shè)置相關(guān)“群組”的配置并連接該“群組”;如果連接成功,發(fā)送端進(jìn)入“NetGroup.Connect.Success”狀態(tài),這時(shí)可繼續(xù)創(chuàng)建一個(gè)發(fā)送流NetStream對(duì)象并向服務(wù)器發(fā)送連接,如成功會(huì)收到“NetStream.Connect.Success”信息;當(dāng)收到發(fā)送流連接成功后,可以檢測(cè)麥克風(fēng)和攝像頭并配置它們的相關(guān)參數(shù),分別使用netStream.attachAudio(mic);和netStream.attachCamera(camera)命令,將音頻和視頻信息添加到發(fā)送流上;同時(shí)還要?jiǎng)?chuàng)建一個(gè)VideoDisplay視頻播放組件,將攝像頭采集到的視頻信息在發(fā)送端顯示出來(lái),讓發(fā)送者自己了解當(dāng)前的視頻狀態(tài);最后,發(fā)送端可以使用發(fā)送流的publish命令netStream.publish("教師名")將這個(gè)流發(fā)布出去,此時(shí)接收端就能收到這個(gè)音視頻流的信息了。當(dāng)然此處也可以這樣設(shè)計(jì),將發(fā)布流名改成為發(fā)送端的用戶名,當(dāng)用戶將自己本地?cái)z像頭捕捉到的畫面publish到fms4服務(wù)器時(shí),fms4服務(wù)器將存放它在userList這個(gè)集合對(duì)象中,集合中存放的是每個(gè)用戶名也就是他們發(fā)布視頻的名字。每當(dāng)新用戶加入或者退出會(huì)議的時(shí)候,fms4服務(wù)器就把這個(gè)userList廣播給每個(gè)還在線的用戶。接收端的用戶取得userList后,只需播放其它用戶名的視頻即可[12]。

2)接收端的開(kāi)發(fā)思路是:前面步驟與發(fā)送端相同,也是先與服務(wù)器建立連接,然后創(chuàng)建“群組”,如果以上都成功,就要?jiǎng)?chuàng)建一個(gè)接收流來(lái)接收發(fā)送端發(fā)布的音視頻信息,這里不需要再去獲取麥克風(fēng)和攝像頭的信息了,只需再創(chuàng)建一個(gè)Video視頻播放組件,將接收流的信息通過(guò)attachNetStream(inNetStream)命令加入Video組件,并調(diào)用netStream.play("教師名"),就可開(kāi)始播放發(fā)送端的音視頻信息了。這里的play()方法的參數(shù)必須與發(fā)送端的publish()方法的參數(shù)名相同。當(dāng)然大多數(shù)據(jù)情況下,一個(gè)客戶端既是發(fā)布者也是訂閱者,那么它必須創(chuàng)建兩個(gè)流,一個(gè)發(fā)布流,一個(gè)接受流。

3)服務(wù)器的開(kāi)發(fā)思路,如果要在FMS4服務(wù)器上注冊(cè)一個(gè)應(yīng)用程序,需要在FMS4的安裝目錄下的/applications文件夾中新建一個(gè)以應(yīng)用程序名命名的文件夾,然后在此文件夾下新建一個(gè)名為main.asc文件存放服務(wù)器端代碼。在main.asc文件中可以使用兩個(gè)對(duì)象:Client對(duì)象和application對(duì)象。當(dāng)一個(gè)客戶端連接到一個(gè)FMS4上的應(yīng)用程序時(shí),F(xiàn)MS4服務(wù)器可以通過(guò)創(chuàng)建Client類的實(shí)例來(lái)代表一個(gè)客戶端,有了這項(xiàng)客戶端實(shí)例,就可以用它來(lái)完成這個(gè)客戶端發(fā)送和接收數(shù)據(jù)。服務(wù)器端的application對(duì)象代表這個(gè)應(yīng)用程序,它是Application類的實(shí)例,通過(guò)它服務(wù)器端可以接受客戶端的連接請(qǐng)求,也可完成客戶端的連接斷開(kāi)和關(guān)閉應(yīng)用程序等功能。當(dāng)一個(gè)客戶端連接FMS4服務(wù)器時(shí),服務(wù)器端將接受一個(gè)application.onConnect事件,如果接受此客戶端連接請(qǐng)求,則調(diào)用appli? cation.acceptConnection(currentClient)方法。如果此客戶端不符合連接要求,則調(diào)用application.rejectConnection(currentClient)方法來(lái)拒絕此客戶端請(qǐng)求。相反,當(dāng)一個(gè)客戶端斷開(kāi)FMS4.0服務(wù)器時(shí),服務(wù)器端接受到一個(gè)application.onDisconnect事件,此時(shí)可以通過(guò)application.clients命令來(lái)向所有在線客戶端發(fā)送信息,通知其它用戶此用戶已下線[13]。

3.3基于FMS的P2P的音視頻功能的實(shí)現(xiàn)驗(yàn)證

在最新的遠(yuǎn)程教學(xué)輔導(dǎo)系統(tǒng)上采用FMS4作為流媒體服務(wù)器后,實(shí)現(xiàn)現(xiàn)了文本和音視頻的實(shí)時(shí)交互功能。經(jīng)測(cè)試發(fā)現(xiàn)依托FMS4的P2P技術(shù),在課堂人越多時(shí),視頻越流暢,語(yǔ)音越清晰。其系統(tǒng)演示如圖4所示。

4結(jié)束語(yǔ)

通過(guò)對(duì)FMS4的應(yīng)用研究發(fā)現(xiàn)它對(duì)比以往版本的確實(shí)有了新的改進(jìn),特別是它基于RTMFP協(xié)議的P2P音視頻技術(shù)的新功能,給我們遠(yuǎn)程教學(xué)輔導(dǎo)系統(tǒng)的系統(tǒng)穩(wěn)定性和抗壓性帶來(lái)了許多實(shí)惠,相信不久將有更多的視頻應(yīng)用系統(tǒng)采用FMS4,希望通過(guò)將FMS4引入遠(yuǎn)程教學(xué)輔導(dǎo)領(lǐng)域,能對(duì)將來(lái)遠(yuǎn)程教學(xué)輔導(dǎo)系統(tǒng)的設(shè)計(jì)開(kāi)發(fā)人員有所借鑒。

參考文獻(xiàn):

[1]趙才欣.對(duì)改進(jìn)教學(xué)輔導(dǎo)的若干認(rèn)識(shí)[J].現(xiàn)代教學(xué).2009.8.

[2]孫超.流媒體服務(wù)器Red5的擴(kuò)展設(shè)計(jì)、測(cè)試與優(yōu)化[d].上海交通大學(xué)碩士學(xué)位論文.2009.1.

[3]魯志剛.基于Flash Media Server(FMS)的網(wǎng)絡(luò)教學(xué)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[D].東北師范大學(xué)碩士學(xué)位論文. 200906:29-45.

[4]尤亮.基于流媒體技術(shù)的在線視頻教學(xué)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].廈門大學(xué)碩士學(xué)位論文. 200811:54-60.

[5]方玉田.淺談P2P拓?fù)浣Y(jié)構(gòu)及算法[J].遠(yuǎn)程教育雜志.74-75.

[6]佚名. P2P網(wǎng)絡(luò)的優(yōu)勢(shì)[DB/OL]. http://dy-wizard.com/Tutorial/CSharp/fms%20p2p/fms%20p2p.aspx.

[7]佚名.stratus[DB/OL].http://labs.adobe.com/technologies/stratus/.

[8]Jozsef Vass.Stratus service for developing end-to-end applications using RTMFP in Flash Player 10[DB/OL].http://www.adobe.com/ devnet/flashplayer/articles/rtmfp_stratus_app.html.

[9]菩提樹(shù)下的楊過(guò). flash player10.1 + FMS4中的p2p功能[DB/OL]. http://yjmyzz.cnblogs.com.

[10] Adobe?Flex?4.1語(yǔ)言參考.

[11]徐洪華,底曉強(qiáng),郭乃珠.基于RTMP協(xié)議的視頻廣播系統(tǒng)結(jié)構(gòu)設(shè)計(jì).長(zhǎng)春理工大學(xué)學(xué)報(bào),2007,12.

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

[13]高鵬.基于流媒體技術(shù)的在線輔助教學(xué)系統(tǒng)設(shè)計(jì)與研究[D].北京交通大學(xué)碩士學(xué)位論文. 200906:17-21.

岱山县| 余庆县| 龙胜| 陵水| 六枝特区| 潍坊市| 临漳县| 清原| 淄博市| 富裕县| 浦县| 哈密市| 青阳县| 柳江县| 彝良县| 托克逊县| 上蔡县| 九龙县| 青铜峡市| 满城县| 鄂托克前旗| 乌鲁木齐县| 神木县| 岳池县| 麻城市| 宜都市| 蒙城县| 宁河县| 阿坝县| 栾川县| 昌吉市| 许昌市| 兰西县| 甘谷县| 民县| 疏附县| 高淳县| 阳谷县| 五莲县| 万州区| 韶关市|