雷文禮,任新成,張棟,高瑛
(延安大學(xué)物理與電子信息學(xué)院,陜西延安716000)
基于DirectShow的網(wǎng)絡(luò)視頻點(diǎn)播系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
雷文禮,任新成,張棟,高瑛
(延安大學(xué)物理與電子信息學(xué)院,陜西延安716000)
隨著計(jì)算機(jī)技術(shù)和Internet日新月異的的發(fā)展,寬帶VOD視頻點(diǎn)播技術(shù)因其良好的人機(jī)交互性和流媒體傳輸技術(shù)倍受教育、娛樂等行業(yè)的青睞。設(shè)計(jì)了一種基于DirectShow技術(shù)的視頻點(diǎn)播系統(tǒng),該系統(tǒng)采用VC編程語言實(shí)現(xiàn),基于C/S架構(gòu)搭建通信網(wǎng)絡(luò),通過套接字實(shí)現(xiàn)多臺(tái)客戶機(jī)與服務(wù)器間的通信。測試結(jié)果表明,系統(tǒng)能夠正常運(yùn)行,視頻播放流暢,可以滿足網(wǎng)絡(luò)視頻點(diǎn)播的需求。
視頻點(diǎn)播;Direct Show;C/S架構(gòu);套接字
在人們平時(shí)的生活中,經(jīng)常希望能夠隨時(shí)收看到錯(cuò)過的視頻節(jié)目,隨著視頻點(diǎn)播系統(tǒng)的問世,使這種想法慢慢變?yōu)楝F(xiàn)實(shí)。視頻點(diǎn)播系統(tǒng)是集通信網(wǎng)絡(luò)技術(shù)、多媒體技術(shù)、計(jì)算機(jī)和數(shù)據(jù)庫技術(shù)于一體的嶄新的視頻服務(wù)系統(tǒng)。此系統(tǒng)還運(yùn)用了智能視頻流技術(shù),針對(duì)不同的網(wǎng)絡(luò)帶寬和傳輸速度采取不同的傳輸方式。視頻點(diǎn)播是近年來新興的傳媒方式,它是在原有的文字、圖片等靜態(tài)信息瀏覽的基礎(chǔ)上,增加了視頻和音頻的動(dòng)態(tài)瀏覽等多媒體點(diǎn)播服務(wù)[1?2]。這樣,用戶就可以隨時(shí)隨地瀏覽視頻,極大地豐富了人們的網(wǎng)絡(luò)生活內(nèi)容[3]。
DirectShow[4]是一個(gè)基于Windows平臺(tái)上的流媒體框架,提供了高質(zhì)量的多媒體流采集和回放功能。它支持多種多樣的媒體文件格式,包括MPEG、AVI、MP3和WAV文件,同時(shí)也支持使用WDM驅(qū)動(dòng)或早期的VFW驅(qū)動(dòng)來進(jìn)行多媒體流的采集。DirectShow還整合了其他的DirectX技術(shù),不僅可以自動(dòng)偵測并使用可利用的音視頻硬件加速,還支持沒有硬件加速的系統(tǒng)。Direct?Show使用了一種叫Filter Graph的模型來管理整個(gè)數(shù)據(jù)流的處理過程,參與數(shù)據(jù)處理的各個(gè)功能模塊叫作過濾器(Filter),各個(gè)模塊的Filter在Filter Graph中按一定的順序連接成一條“流水線”式的工作模式來協(xié)同工作。
本文設(shè)計(jì)的基于DirectShow的網(wǎng)絡(luò)視頻點(diǎn)播服務(wù)系統(tǒng),實(shí)現(xiàn)的主要功能包括視頻文件的播放、網(wǎng)絡(luò)接收及客戶端與服務(wù)器的連接等。具體來講,它包括服務(wù)器框架的搭建與實(shí)現(xiàn),視頻信息的顯示、播放,視頻管理中的添加、修改、刪除等。系統(tǒng)授權(quán)的用戶可以在線點(diǎn)播視頻文件,部分用戶還可以向服務(wù)器上傳視頻,編輯視頻信息,刪除自己以前上傳的視頻[5?6]。
網(wǎng)絡(luò)視頻點(diǎn)播服務(wù)系統(tǒng)主要分為服務(wù)器框架的設(shè)計(jì)與實(shí)現(xiàn)、客戶端的設(shè)計(jì)與實(shí)現(xiàn)、服務(wù)器與客戶端的網(wǎng)絡(luò)連接與網(wǎng)絡(luò)數(shù)據(jù)的接收[7?8]。
2.1 服務(wù)器框架的設(shè)計(jì)與實(shí)現(xiàn)
服務(wù)器一般要求具有較高的處理速度和大的存儲(chǔ)容量,用于存放媒體文件和管理整個(gè)網(wǎng)絡(luò)。服務(wù)器程序負(fù)責(zé)管理本地的文件資源,獲取文件的描述信息,維護(hù)節(jié)目列表,并在客戶機(jī)發(fā)出訪問請(qǐng)求時(shí),及時(shí)準(zhǔn)確地響應(yīng)客戶機(jī)的請(qǐng)求,提供節(jié)目列表給客戶機(jī)查看或者點(diǎn)播。
圖1為服務(wù)器的VC工作區(qū)結(jié)構(gòu)。
圖1 服務(wù)器的VC工作區(qū)結(jié)構(gòu)
2.2 客戶端的設(shè)計(jì)與實(shí)現(xiàn)
客戶端程序與服務(wù)器建立連接、向服務(wù)器發(fā)送指令、接收來自服務(wù)器的媒體數(shù)據(jù)。為了使客戶機(jī)接收到的媒體數(shù)據(jù)同步播放,這里使用DirectShow來實(shí)現(xiàn)。Direct?Show中采用開發(fā)Source Filter的方式接收網(wǎng)絡(luò)數(shù)據(jù),并將數(shù)據(jù)引入到Filter Graph中。
圖2為客戶端的VC工作區(qū)結(jié)構(gòu)。
圖2 客戶端的VC工作區(qū)結(jié)構(gòu)
2.3 基于Socket的C/S交互模型
通信開始前,對(duì)于客戶機(jī)與服務(wù)器分別創(chuàng)建一個(gè)基于CSocket類的新類CClientSocket和CServerSocket,然后分別構(gòu)造一個(gè)客戶機(jī)套接字和服務(wù)器套接字進(jìn)行通信。圖3為TCP流程的基于Socket的C/S交互模型。
2.4 網(wǎng)絡(luò)數(shù)據(jù)接收
在網(wǎng)絡(luò)數(shù)據(jù)接收時(shí),DirectX定義了一系列類處理數(shù)據(jù)的來源,當(dāng)需要讀取數(shù)據(jù)到緩存時(shí),通過這些類將需要的數(shù)據(jù)傳送出去,這種方式即拉模式。在拉模式下,為了將Source Filter內(nèi)的數(shù)據(jù)讀出,需要在Source Filter上創(chuàng)建一個(gè)接口,以便播放網(wǎng)絡(luò)接收來的文件。
圖3 基于Socket的C/S交互模型
圖4為網(wǎng)絡(luò)接收的VC工作區(qū)結(jié)構(gòu)。
圖4 網(wǎng)絡(luò)接收的VC工作區(qū)結(jié)構(gòu)
3.1 服務(wù)器程序
服務(wù)器端的程序運(yùn)行后如圖5所示。
圖5 服務(wù)器的程序界面
各部分表示如下:
①顯示服務(wù)器端可以提供給客戶機(jī)的節(jié)目列表。服務(wù)器負(fù)責(zé)整個(gè)網(wǎng)絡(luò)中文件信息的管理,并將可點(diǎn)播的節(jié)目列表提供給客戶機(jī),其中包含的信息如文件名及路徑、文件類型(MPEG1、MPEG2、MP3、AVI等)、文件的大小、該文件的數(shù)字代號(hào)(Program ID,PID)。
②節(jié)目列表文件增加按鈕。點(diǎn)擊按鈕后,用戶可以根據(jù)文件瀏覽對(duì)話框通過路徑找到需要添加的文件,并加入到節(jié)目列表中。當(dāng)用戶確定選擇添加某個(gè)文件后,系統(tǒng)會(huì)彈出如圖6所示的對(duì)話框,用戶可給該文件指定一個(gè)PID操作。
③節(jié)目列表文件刪除按鈕。當(dāng)用戶需要從文件列表中刪除某一文件時(shí),選中文件后,用戶首先要單擊本按鈕即可將節(jié)目列表中的文件刪除。
④節(jié)目項(xiàng)的編輯按鈕。當(dāng)用戶需要改變文件列表中的某一文件時(shí),首先選擇要編輯的文件,然后單擊本按鈕即可在彈出的對(duì)話框中對(duì)文件的屬性如PID等進(jìn)行編輯了。
⑤服務(wù)器程序的狀態(tài)信息欄。顯示服務(wù)器的主機(jī)名、IP地址、命令控制端口等信息。
添加、編輯按鈕觸發(fā)后的程序界面,如圖6所示。
圖6 添加、編輯按鈕觸發(fā)后的程序圖
各部分表示如下:
①文件的完整路徑(用戶指定)。
②文件大?。ㄗ詣?dòng)檢測)。
③文件類型(自動(dòng)檢測)。
④該文件的惟一數(shù)字代號(hào)(用戶指定)。
⑤確定將所選文件加入到節(jié)目列表中。
⑥取消將所選文件加入到節(jié)目列表中。
3.2 客戶端程序
服務(wù)器端的程序運(yùn)行后如圖7所示,各部分說明如下:
①客戶機(jī)從服務(wù)器查詢到的可供點(diǎn)播的節(jié)目列表。當(dāng)客戶機(jī)與服務(wù)器成功建立網(wǎng)絡(luò)連接之后,客戶機(jī)通過訪問服務(wù)器,可以獲得服務(wù)器端的點(diǎn)播文件節(jié)目列表。
②連接按鈕。當(dāng)客戶端需要連接服務(wù)器時(shí),用戶單擊本按鈕可以指定需要連接的服務(wù)器的IP地址,然后嘗試與指定的服務(wù)器IP地址建立連接,彈出的對(duì)話框,如圖9所示。
③刷新節(jié)目列表按鈕。當(dāng)服務(wù)器端的節(jié)目列表變動(dòng)后,客戶端可以通過點(diǎn)擊本按鈕,刷新服務(wù)器上的節(jié)目列表。
④節(jié)目播放按鈕。當(dāng)用戶從節(jié)目列表中選定好需要播放的文件后,單擊本按鈕就可以對(duì)需要播放的文件進(jìn)行播放。
⑤暫停播放按鈕??梢詫?duì)正在播放的文件進(jìn)行暫停播放。
⑥停止播放按鈕。可以對(duì)正在播放的文件進(jìn)行停止播放操作。
⑦信息欄。在客戶端信息檔,可以用于顯示客戶機(jī)的主機(jī)名、IP地址等信息。
⑧狀態(tài)欄??梢杂糜陲@示客戶機(jī)與服務(wù)器端是否建立連接,是否有文件播放等狀態(tài)信息。
圖7 客戶端的程序界面
客戶機(jī)與服務(wù)器連接時(shí)IP地址對(duì)話框,如圖8所示。
圖8 IP地址對(duì)話框
3.3 視頻播放
圖9為視頻播放界面,當(dāng)點(diǎn)擊客戶端文件列表中的視頻,會(huì)進(jìn)行相應(yīng)的視頻文件播放,測試中使用的視頻格式為AVI格式文件。
圖9 視頻播放畫面
網(wǎng)絡(luò)視頻點(diǎn)播是伴隨著音頻、視頻處理技術(shù)及網(wǎng)絡(luò)通信的快速發(fā)展而日益受到人們歡迎的技術(shù),也是多媒體應(yīng)用技術(shù)中的熱門方向,它涉及到的知識(shí)面很廣泛,技術(shù)含量比較高。本文從系統(tǒng)設(shè)計(jì),分模塊設(shè)計(jì),到編碼測試,最終實(shí)現(xiàn)了視頻點(diǎn)播功能,為校園多媒體教室點(diǎn)播系統(tǒng)等提供了技術(shù)參考。
[1]楊鍵.VOD互動(dòng)業(yè)務(wù)建設(shè)的若干問題研究[J].科技傳播,2012,6(12):199?200.
[2][荷]柳伯斯P,[美]阿伯斯B,[美]薩利姆F.HTML5程序設(shè)計(jì)[M].2版.北京:人民郵電出版社,2012.
[3]張海藩.軟件工程導(dǎo)論[M].北京:清華大學(xué)出版社,2004.
[4]陸琪明.DirectShow實(shí)務(wù)精選[M].北京:科學(xué)出版社,2004.
[5]譚浩強(qiáng).C程序設(shè)計(jì)[M].北京:清華大學(xué)出版社,2005.
[6]鄭莉,董淵.C++語言程序設(shè)計(jì)[M].北京:清華大學(xué)出版社,2001.
[7][美]WILLIAMS Mickey.Visual C#.NET技術(shù)內(nèi)幕[M].北京:清華大學(xué)出版社,2004.
[8]BAIN Tony,GOSNELL Denise.VB.NET和SQL Server 2000高級(jí)編程?創(chuàng)建高效數(shù)據(jù)層[M].北京:清華大學(xué)出版社,2002.
Design and realization of network video on demand service system based on DirectShow
LEI Wen?li,REN Xin?cheng,ZHANG Dong,GAO Ying
(College of Physic and Electronic Information,Yan’an University,Yan’an 716000,China)
With the rapid development of computer technology and Internet,the broadband VOD(video on demand)tech?nology is popular with education and entertainment fields because of its good human?computer interaction and streaming media transmission technology.A VOD system based on DirectShow technology is designed in this paper,in which the VC program?ming language is adopted.Its communication network is built on the basis of C/S architecture.The communication between multi?client and server is realized through socket.The test results show that the system can run normally and video playing is fluent. Therefore,it can meet the requirements of network video on demand.
video on demand;DirectShow;C/S architecture;socket
TN915.4?34
A
1004?373X(2015)07?0031?03
雷文禮(1982—),男,講師。主要研究方向?yàn)闊o線通信技術(shù)、通信系統(tǒng)與終端設(shè)計(jì)。
2014?11?19
延安市科學(xué)技術(shù)研究發(fā)展計(jì)劃項(xiàng)目(2014KG?04);陜西省教育廳科研計(jì)劃項(xiàng)目資助(14JK1829);陜西省科學(xué)技術(shù)研究發(fā)展計(jì)劃項(xiàng)目(工業(yè)攻關(guān))(2014K05?61);國家自然科學(xué)基金(61379026)