基于Hadoop和Red5的視頻點播系統(tǒng)及方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及視頻處理領(lǐng)域,具體涉及一種基于Hadoop和Red5的視頻點播系統(tǒng)及方法。
【背景技術(shù)】
[0002]隨著視頻編碼技術(shù)和網(wǎng)絡(luò)技術(shù)的快速發(fā)展,視頻監(jiān)控已經(jīng)成為生產(chǎn)、生活中的重要組成部分。當(dāng)前我國的視頻監(jiān)視系統(tǒng)經(jīng)過第一代以VCR(Video Cassette Recorders)為代表的傳統(tǒng)CCTV(Closed Circuit Televis1n)監(jiān)控系統(tǒng),到第二代以DVR(Digital VideoRecorder)為代表的數(shù)?;旌舷到y(tǒng),并進(jìn)一步發(fā)展為以NVR為核心的第三代網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng),現(xiàn)在第四代視頻監(jiān)控系統(tǒng)(智能高清視頻監(jiān)控系統(tǒng))也迅速發(fā)展起來。
[0003]然而,當(dāng)前的視頻監(jiān)控系統(tǒng)存儲存在以下幾個方面的問題:第一個問題是NVR端存儲容量有限,無法應(yīng)對大量高清視頻的長期存儲。第二個問題是視頻數(shù)據(jù)是以明文的方式進(jìn)行傳輸?shù)?,在開放網(wǎng)絡(luò)環(huán)境中很容易遭受人為的攻擊,比如數(shù)據(jù)攔截、信息竊取、數(shù)據(jù)篡改和數(shù)據(jù)刪除等。針對上述兩個問題,在解決存儲容量有限方面,基于Hadoop平臺的視頻存儲機(jī)制解決了海量視頻數(shù)據(jù)的存儲問題,該方案具有良好的擴(kuò)展性、穩(wěn)定性。對于第二問題,在存儲、傳輸?shù)倪^程中均采用密文視頻的方式,可以有效的防止視頻內(nèi)容被竊取、被篡改。
[0004]Hadoop是一個開源分布式計算平臺,實現(xiàn)了一個分布式文件系統(tǒng),即Hadoop分布式文件系統(tǒng)HDFS。HDFS具有高容量、高容錯、高伸縮的優(yōu)點,因此非常適合大量視頻文件的存儲。HDFS的體系結(jié)構(gòu)如圖1所示。從圖中可以看出,HDFS主要采用了主從架構(gòu),由NameNode節(jié)點和DataNode節(jié)點組成。其中,NameNode節(jié)點負(fù)責(zé)管理文件系統(tǒng)命名空間和控制客戶端對文件的訪問。DataNode的主要功能是負(fù)責(zé)相應(yīng)來自Hadoop客戶端的讀寫請求。
[0005]Red 5是基于Java EE平臺的開源流媒體服務(wù)器框架,主要通信協(xié)議有RTMP、HTTP等。主要功能包括:視頻流媒體分發(fā)、音頻流媒體分發(fā)、實時流媒體發(fā)布、以及錄制客戶端流媒體文件等。Red5流媒體服務(wù)器以Jetty servlet引擎為基礎(chǔ),采用SpringFramework 作為主要的產(chǎn)品框架,同時以 MINA (Multipurpose Infrastructure forNetworkApplicat1ns)作為支撐網(wǎng)絡(luò)通訊模塊框架。
[0006]由于Red5流媒體服務(wù)器只能推送本地文件系統(tǒng)的視頻文件,無法推送Hadoop中的視頻文件,因此需要解決Red5與Hadoop分布式文件系統(tǒng)的無縫對接問題。
【發(fā)明內(nèi)容】
[0007]針對現(xiàn)有技術(shù)中的缺陷,本發(fā)明提供一種基于Hadoop和Red5的視頻點播系統(tǒng)及方法,能夠?qū)崿F(xiàn)Red5正常推送HDFS中存儲的視頻文件的功能。
[0008]為解決上述技術(shù)問題,本發(fā)明提供以下技術(shù)方案:
[0009]第一方面,本發(fā)明提供了一種基于Hadoop和Red5的視頻點播系統(tǒng),包括:Hadoop分布式文件系統(tǒng)和Red5流媒體服務(wù)器;
[0010]所述Hadoop分布式文件系統(tǒng)包括第一交互模塊;
[0011]所述Red5流媒體服務(wù)器包括第二交互模塊和客戶請求處理模塊;
[0012]所述客戶請求處理模塊,用于對客戶端的視頻點播請求進(jìn)行處理分析,得到客戶端點播的視頻文件名,并判斷該視頻文件在Red5流媒體服務(wù)器的本地文件目錄下是否存在,若不存在,則向所述第二交互模塊發(fā)送第一請求消息,所述第一請求消息中包括所述客戶端點播的視頻文件名;
[0013]所述第二交互模塊,用于在接收到所述第一請求消息之后,將所述第一請求消息轉(zhuǎn)發(fā)給所述第一交互模塊;
[0014]所述第一交互模塊,用于在接收到所述第二交互模塊發(fā)送的第一請求消息之后,根據(jù)所述第一請求消息判斷所述Hadoop分布式文件系統(tǒng)中是否存在客戶端點播的視頻文件;若存在,則向所述第二交互模塊發(fā)送包含該視頻文件的長度和視頻文件的第一應(yīng)答消息;
[0015]所述第二交互模塊,還用于在接收到所述第一交互模塊發(fā)送的第一應(yīng)答消息之后,獲取第一應(yīng)答消息中的視頻文件的長度和視頻文件信息,并將獲取的信息發(fā)送給所述客戶請求處理模塊;
[0016]所述客戶請求處理模塊,還用于在接收到所述第二交互模塊發(fā)送的視頻文件的長度和視頻文件信息之后,將所述視頻文件的長度和視頻文件信息推送給客戶端播放器。
[0017]進(jìn)一步地,所述Hadoop分布式文件系統(tǒng)還包括FLV視頻關(guān)鍵幀信息分析模塊;所述FLV視頻關(guān)鍵幀信息分析模塊用于調(diào)用預(yù)先存儲的FLV文件分析程序,生成meta文件;
[0018]所述第一交互模塊還用于在確定所述Hadoop分布式文件系統(tǒng)中存在客戶端點播的視頻文件之后,判斷該視頻基于關(guān)鍵幀信息的meta文件是否存在,若不存在,則調(diào)用所述FLV視頻關(guān)鍵幀信息分析模塊生成該視頻文件的meta文件,并向所述第二交互模塊發(fā)送包含該視頻文件的長度、meta文件和視頻文件的第二應(yīng)答消息。
[0019]進(jìn)一步地,所述第一交互模塊還用于在確定所述Hadoop分布式文件系統(tǒng)中不存在客戶端點播的視頻文件之后,向所述第二交互模塊發(fā)送該視頻文件不存在的第三應(yīng)答消息;
[0020]所述第二交互模塊,還用于在接收到所述第一交互模塊發(fā)送的第三應(yīng)答消息之后,向所述客戶請求處理模塊發(fā)送該視頻不存在的消息;
[0021]所述客戶請求處理模塊在收到所述第二交互模塊發(fā)送的該視頻不存在的消息之后,將該視頻不存在的消息推送給客戶端播放器。
[0022]進(jìn)一步地,所述客戶請求處理模塊,還用于在確定所述Red5流媒體服務(wù)器的本地文件目錄下存在所述客戶端點播的視頻文件時,將該視頻文件推送給客戶端播放器。
[0023]進(jìn)一步地,所述第一交互模塊采用多線程方式工作。
[0024]第二方面,本發(fā)明還提供了一種基于Hadoop和Red5的視頻點播方法,包括:
[0025]Red5流媒體服務(wù)器對客戶端的視頻點播請求進(jìn)行處理分析,得到客戶端點播的視頻文件名,并判斷該視頻文件在Red5流媒體服務(wù)器的本地文件目錄下是否存在,若不存在,貝lJ向Hadoop分布式文件系統(tǒng)發(fā)送第一請求消息,所述第一請求消息中包括所述客戶端點播的視頻文件名;
[0026]所述Hadoop分布式文件系統(tǒng)在接收到所述第一請求消息之后,根據(jù)所述第一請求消息判斷所述Hadoop分布式文件系統(tǒng)中是否存在客戶端點播的視頻文件,若存在,則向所述Red5流媒體服務(wù)器發(fā)送包含該視頻文件的長度和視頻文件的第一應(yīng)答消息;
[0027]所述Red5流媒體服務(wù)器在接收到所述第一應(yīng)答消息之后,獲取第一應(yīng)答消息中的視頻文件的長度和視頻文件信息,并將所述視頻文件的長度和視頻文件信息推送給客戶端播放器。
[0028]進(jìn)一步地,所述基于Hadoop和Red5的視頻點播方法還包括:
[0029]所述Hadoop分布式文件系統(tǒng)在確定Hadoop分布式文件系統(tǒng)中存在客戶端點播的視頻文件之后,判斷所述Hadoop分布式文件系統(tǒng)中該視頻基于關(guān)鍵幀信息的meta文件是否存在,若