胡登濤+趙振紅
(山東省寧陽縣東疏鎮(zhèn)第一小學)
摘 要:農(nóng)村中小學現(xiàn)代遠程教育工程旨在縮小城鄉(xiāng)教育差別,促進教育均衡發(fā)展,最終實現(xiàn)“同在藍天下,共享優(yōu)質(zhì)教育”的目標。在工程的實施過程中,對工程建設模式進行了調(diào)整與改進,采用了一種全新的模式——集中接收模式:即在教育城域網(wǎng)中心機房安裝一套衛(wèi)星接收設備用以接收衛(wèi)星信號,各中小學通過教育城域網(wǎng)收看由中心機房轉(zhuǎn)發(fā)到流媒體服務器的中國教育電視臺三套節(jié)目。在考察了市場上幾款流媒體系統(tǒng)后,本著“節(jié)約成本,方便拓展”的原則,決定利用FMS(Flash Media Server)技術(shù)自己開發(fā)實現(xiàn)視頻直播系統(tǒng)。
關(guān)鍵詞:遠程教育;直播系統(tǒng);現(xiàn)代科技;視頻
一、遠程教育節(jié)目直播系統(tǒng)的設計
為方便使用,本系統(tǒng)被設計為在線系統(tǒng),從功能上分為發(fā)布端和接收端兩部分,功能設計如下:
(1)發(fā)布端可以捕獲到中國教育電視臺三套節(jié)目信號,并把捕獲到的節(jié)目信號轉(zhuǎn)換成流發(fā)布到遠端FMS服務器上;接收端可以從遠端FMS服務器接收到中國教育電視臺的三套節(jié)目信號,并把接收到的節(jié)目信號轉(zhuǎn)換成視頻與音頻呈現(xiàn)給教師和學生。
(2)為滿足復雜網(wǎng)絡環(huán)境及大規(guī)模并發(fā)播放的需求,發(fā)布端和接收端支持使用邊緣服務器的集群環(huán)境。
二、遠程教育節(jié)目直播系統(tǒng)的實現(xiàn)
本著由淺入深的認知過程,下面以一路流的發(fā)布和接收為例,談一談發(fā)布端和接收端的實現(xiàn)思路,并給出關(guān)鍵代碼。
1.發(fā)布端的實現(xiàn)
發(fā)布端在啟動時,首先檢測視頻音頻設備。設備檢測完畢后,用戶單擊“連接按鈕”開始連接服務器,服務器連接成功后,發(fā)布端開始向服務器發(fā)布視頻和音頻。
(1)視頻音頻設備的檢測
在Flash中,檢測機器上是否有可用的視頻音頻設備很簡單,只要取一下Camera.names和Microphone.names的值即可:
var camArray:Array =Camera.names;
var micArray:Array=Microphone.names。
(2)視頻和音頻的發(fā)布
在發(fā)布視頻和音頻前,需要創(chuàng)建一個NetStream對象,并將該對象附加于上面創(chuàng)建的NetConnection對象myNC:
myNS=new NetStream(myNC);
同樣,為了能接收到從服務器返回的相關(guān)信息,也需要為該對象添加一個NetStatusEvent.NET_STATUS偵聽事件,并用函數(shù)streamStatus來分析相關(guān)信息:
myNS.addEventListener(NetStatusEvent.NET_STATUS,stream
Status);
然后在該對象上加載視頻對象和音頻對象:
myNS.attachCamera(myCam);
myNS.attachAudio(myMic)。
其中的視頻對象和音頻對象可以通過以下方式獲得:
myCam=Camera.getCamera(camNO);
myMic=Microphone.getMicrophone(micNO)。
最后用該對象的publish方法將視頻和音頻以流的形式發(fā)布到FMS服務器:
myNS.publish(streamName,“l(fā)ive”)。
2.接收端的實現(xiàn)
接收端的工作過程跟發(fā)布端的工作過程基本一致,因為接收端播放的是發(fā)布端發(fā)布到FMS服務器上的流。因此,接收端不需要檢測視頻音頻設備。
(1)視頻和音頻的播放
接收端連接FMS服務器的過程與發(fā)布端相同,接收端連接FMS服務器成功后,同樣會觸發(fā)NetStatusEvent事件并返回info.code為“NetConnection.Connect.Success”的信息,接收端偵聽到該信息即可播放視頻和音頻。
(2)視頻的顯示
利用上述代碼播放流時,可以聽到聲音,但無法看到視頻,與發(fā)布端顯示本地視頻的方法不同的是:Video對象附加的是上面定義的NetStream對象myNS:
localVideoMC.liveVideo.attachNetStream(myNS);
這樣就既能聽到聲音,也能看到視頻了。
3.集群的實現(xiàn)
教育城域網(wǎng)內(nèi)學校眾多,只用一臺服務器負擔幾千用戶的并發(fā)播放請求,不僅對服務器的處理能力是個考驗,對服務器的帶寬也是個考驗,在這種情況下,使用邊緣服務器是個很不錯的選擇:在各個學校的服務器上安裝FMS,并將其配置為邊緣服務器,各學校用戶利用負載均衡算法連接到自己學校的邊緣服務器而不是教育城域網(wǎng)中心機房的源服務器上,這樣,不但可以大大緩解源服務器的壓力,而且整套直播系統(tǒng)可承載的用戶量會大大提升。
隨著農(nóng)村中小學現(xiàn)代遠程教育工程的深入實施,教師和學生對高清視頻直播、點播的需求會越來越多,要求會越來越高,F(xiàn)MS技術(shù)在解決這種供需矛盾中一定會起到越來越重要的作用。
編輯 李建軍