摘要:視頻點播VOD(Video On Demand)系統改變了過去收看節目的被動方式,實現了節目的按需收看和任意播放,為教學提供實時、交互、按需點播服務。文章提出一種可以通過對有線電視網進行雙向改造,并配以機頂盒的方式來實現VOD視頻點播服務的方案。
關鍵詞:VOD;視頻服務器;多線程
中圖分類號:G484 文獻標識碼:B 文章編號:1673-8454(2011)06-0080-03
一、我校對校園點播系統的功能要求
利用VOD系統的雙向視頻傳輸特性和網絡特性,應能提供以下功能:
1 視頻點播教學
系統能夠將各科優秀教師的多媒體課件、電視教材、直播課程、現場實驗示范等采編存入VOD系統,教師可在終端機上通過統一的點播界面,由遙控器或鼠標自由點播這些視頻資源進行教學。此外,該VOD系統應支持多用戶點播而互不影響,不同地點的用戶可以同時點播相同教學內容來進行教學,并分別對播放線程進行控制。
2 自主學習
為培養學生自主發現問題、分析問題、尋求問題解決方案的創新能力,我們的點播系統應能提供一個個性化教學服務平臺,以增強學生學習的自主性,達到較好的學習效果。

3 視頻報告會
VOD系統應具有較好的視頻傳輸特性。學校、教師可以通過該系統進行現場直播或實況轉播。在觀看過程中,VOD系統能提供提問、留言和發表評論等交互功能。該系統也可應用于視頻會議中,以節約資源,提高效率。
4 影視欣賞
該系統應能將影視資料存入到VOD服務器中,并平滑流暢地播放,同時可對視頻進行自由控制,也可以將錯過的電視節目錄制下來,供學生點播。一方面,各班級可省下購買DVD的費用:另一方面,學校統一管理影視資料,可使學生免受不良影視的影響。
5 校園資訊
學校可以將各類會議精神、通知和相關的新規章制度、獎懲公告等信息通過該系統進行傳達。教師和學生均可隨意選擇想看的通知內容,不受時間和地點的限制。這種新穎的交互傳達方式能給師生交流和學校管理帶來極大的方便。現代化的教學手段和科學的管理方式將對學校社會形象的提升起到顯著作用。
6 軟件在線升級
系統的軟件要隨時升級。軟件在線升級可看成是數據廣播的應用之一。數據廣播服務器按DVB數據廣播標準將升級軟件廣播下來,系統應能識別該軟件的版本號,在版本不同時接收該軟件,并對保存在存儲器中的軟件進行更新,實現系統的良好擴展性。
二、基于雙向網絡的構建方案
隨著信息技術發展的日新月異,學校信息化建設也日益加快,如何更好地利用現有網絡來滿足學校視頻點播需求,同時為日后系統的拓展與建設做好全面的考慮,成為了學校信息化建設的重要課題。我校基于校園網構建的視頻點播系統結構如圖1所示。各教室、教師辦公室、教研室、行政辦公室、會議室、圖書館、部分學生寢室等都裝有計算機終端或帶有機頂盒的電視終端,教師、學生等都可以利用就近的終端,通過統一的界面,自主點播所需的多媒體信息和多媒體教學資源,這些信息和資源既可以是本校內的,也可以是其它學校或Internet、教育衛星上的信息和資源。
系統可分為以下三個部分:
1 用戶終端
為了利用學校現有的硬件資源,我們既可使用PC機做點播終端,也可在現有的電視終端上配以機頂盒做點播終端。機頂盒通稱Set Top Box,是一種智慧型的數字式信號轉換器,用戶通過此設備即能夠實現視頻點播、Internet訪問、遠程教學、視頻會議、電子商務等多媒體信息服務。機頂盒通常與電視機配合使用,當用戶進行點播時,將電視機切換至AV模式后,可使用機頂盒的遙控鍵盤對VOD系統所提供的視頻節目進行點播,操作簡單方便。
2 視頻點播軟件
視頻點播軟件界面如圖2所示,為了能和Internet無縫結合,軟件也保留了以太網的接口。這樣,不僅現在可以利用CATV網的優勢使教師和學生可點播校內視頻資源,另外也可隨時訪問In,ternet上豐富的多媒體教學資源。
3 視頻點播服務器
視頻點播服務器是VOD系統的核心,主要負責視頻信息的儲存和播放,其工作能力極大地影響著視頻點播系統的服務能力。由于目前市場上的專業視頻服務器價格昂貴,可以采用基本結構如圖3、圖4所示的工控機加視頻解壓卡的方案,這樣構建的VOD系統有很大的價格優勢。
縱觀目前市場上的視頻解壓卡,Sigma公司生產的EM847x芯片的板卡,內嵌了MPEGI、MPEG2、MPEG4算法,可以播放VCD、DVD以及目前流行的MPEG4視頻文件,性能穩定,且價格低廉。故在本系統中就選用了EM847x芯片。
由于EM847x系列視頻卡本身沒有多卡的接口,所以要進行多卡控制必須通過其他途徑。解決方法是通過共享內存方式來控制多進程,而每個線程則控制一塊視頻卡,以此來實現多卡控制。實現流程如圖5所示。多卡線程要先檢測是否有上次殘留的單卡進程,查看是否有上次異常退出時殘留下的單卡控制進程。若有,則清除這些殘留進程,然后開辟一個共享內存區,啟動多線程。每次啟動一個單卡線程時檢查視頻卡是否正常,若不正常將會停止這個線程,發出錯誤信息,停止當前視頻卡的使用;如果正常就將結構體指針指向開辟的共享內存空間,然后再啟動下一個單卡控制線程,直到N個單卡控制線程啟動完畢,最后發出啟動結束信息。
啟動多個單卡控制線程,每個單卡控制程序都定義和Vod Channel同樣的結構體,啟動時打開名稱為Vod_Memo的共享內存區域,然后將單卡定義的Vod Channel結構體的指針指向這個共享內存地址空間,之后將自己的句柄信息寫入結構體里的句柄變量。這樣,每啟動一個線程就在共享內存中開辟了一個vod Channel結構體數組。結構體數組Vod_Channel[1]就代表單卡線程1,Vod_Channel[1],handle里面就是線程1的句柄信息。由于線程1的句柄信息此時是放在共享內存中的,因此就可以通過SendMessage函數給線程發送消息,線程收到消息就可以進行相應的處理,這樣就通過多線程實現了多卡的控制。
多卡控制是在一臺服務器上實現的,由于受板卡資源以及CPU處理能力的限制,一般來說,一臺服務器最多能同時輸出16路音視頻流,這對于稍大規模地應用就顯得不夠,因此如何實現視頻流輸出的無縫擴展,也是能否使用此項技術的關鍵。為此,就要將視頻服務器中的播放和播控功能分開,將所有播控功能集中于一臺播控服務器中,播控服務器通過前端調制器與客戶端(機頂盒)進行交互,通過TCP/IP協議與播放服務器進行交互,這樣就可以在局域網中布置多臺視頻播放服務器,實現視頻播放服務器的分布式應用。