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