趙 建,張秋晨,李 寧
(太原科技大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,太原030024)
視頻監(jiān)視系統(tǒng)是現(xiàn)代生活中不可缺少的安全保障系統(tǒng)。工廠、學(xué)校、住宅小區(qū)、銀行等眾多組織機(jī)構(gòu)和場所都可以用到視頻監(jiān)視系統(tǒng),來保證正常的生產(chǎn)生活秩序。視頻監(jiān)視系統(tǒng)的優(yōu)點(diǎn)眾多,因此其被廣泛使用。
目前的視頻監(jiān)視系統(tǒng),主要為模擬視頻監(jiān)視、模擬數(shù)字混合視頻監(jiān)視兩種。模擬視頻監(jiān)視系統(tǒng)使用的是基于模擬信號(hào)的錄像設(shè)備、監(jiān)視器及記錄設(shè)備。模擬數(shù)字混合視頻監(jiān)視系統(tǒng)在前者的基礎(chǔ)上做了改進(jìn),將視頻儲(chǔ)存介質(zhì)升級(jí),使用光盤或者硬盤保存視頻數(shù)據(jù)。但是以上兩種視頻監(jiān)控系統(tǒng)都存在著一個(gè)很大的不足,就是在搭建系統(tǒng)的時(shí)候必須重新部署專用的視頻線路,而本套視頻監(jiān)控系統(tǒng)為網(wǎng)絡(luò)數(shù)字視頻監(jiān)控系統(tǒng),可以利用已經(jīng)存在的網(wǎng)線將采集來的視頻數(shù)據(jù)經(jīng)由遠(yuǎn)程網(wǎng)絡(luò)服務(wù)器,經(jīng)過視頻編碼器的處理,使終端用戶可以直接看到攝像頭拍攝的圖像。可以免去重新部署專用線路的人工和材料成本,并且提高了視頻監(jiān)控系統(tǒng)的可維護(hù)性和可靠性,還可以在此基礎(chǔ)上實(shí)現(xiàn)分布式存儲(chǔ),提高了監(jiān)控視頻的靈活性和可靠性[1]。
設(shè)計(jì)方案的系統(tǒng)架構(gòu)如圖1所示。包含視頻收集端,視頻編碼處理模塊,搭建于嵌入式系統(tǒng)的網(wǎng)絡(luò)服務(wù)器,以及接收數(shù)據(jù)的客戶端。采集設(shè)備接收來的視頻數(shù)據(jù)要經(jīng)過編碼器進(jìn)行編碼優(yōu)化。流媒體服務(wù)器用來建立與客戶端的會(huì)話,向請求的客戶端發(fā)送收集到的數(shù)據(jù)等。客戶端可以是一般的PC機(jī)。

圖1 系統(tǒng)架構(gòu)Fig.1 System architecture
工作流程大致如下。服務(wù)器啟動(dòng)以后,監(jiān)聽開始,此時(shí)等待客戶端進(jìn)行連接;當(dāng)客戶端創(chuàng)建后,向服務(wù)器發(fā)送請求;服務(wù)器端接受請求,啟動(dòng)視頻收集端,并向客戶端返回信息;然后客戶端通過RTSP協(xié)議向媒體地址發(fā)送本地接收端口、傳輸方式、傳輸協(xié)議等信息,請求初始化視頻;建立連接后,服務(wù)器將開啟一個(gè)新線程為用戶建立新的視頻流;收到響應(yīng)后,客戶端便可觀看到視頻收集端收集并編碼處理后的實(shí)時(shí)視頻;客戶端發(fā)出請求結(jié)束會(huì)話,釋放會(huì)話中的視頻資源;服務(wù)器接收到請求后,結(jié)束會(huì)話,服務(wù)器釋放本地客戶端資源。
對于傳輸協(xié)議的選擇,RTSP協(xié)議在傳輸視頻方面改善了視頻穩(wěn)定性。和基于HTTP協(xié)議的視頻傳輸相比較,其出現(xiàn)畫面不穩(wěn)定晃動(dòng)與花屏的概率明顯下降。兩種協(xié)議在花屏次數(shù)上的比較如表1所示。明顯可以看出,本設(shè)計(jì)選用的RTSP協(xié)議要優(yōu)于HTTP協(xié)議。

表1 質(zhì)量比較Tab.1 Quality comparison
RTSP是流傳輸控制協(xié)議,基于RTP協(xié)議,它定義了如何有效地通過IP網(wǎng)絡(luò)傳輸媒體數(shù)據(jù),是一種客戶端到服務(wù)器端的多媒體描述協(xié)議。它是一種應(yīng)用層協(xié)議,具有很高的靈活性。RTSP協(xié)議具有很多優(yōu)點(diǎn),如可擴(kuò)展性強(qiáng),易于解析,多服務(wù)器支持,傳輸協(xié)調(diào)等,而且提供了對流媒體的控制功能。RTSP協(xié)議的請求報(bào)文格式如圖2所示。

圖2 RTSP請求報(bào)文格式Fig.2 RTSP request message format
整個(gè)協(xié)議的工作分模塊進(jìn)行,主要有RTSP管理模塊,RTSP會(huì)話模塊,RTP模塊,輔助模塊和應(yīng)用程序接口模塊。RTSP管理模塊負(fù)責(zé)遠(yuǎn)程控制管理和會(huì)話管理,一直處于監(jiān)聽狀態(tài),可及時(shí)響應(yīng)下層網(wǎng)絡(luò)的數(shù)據(jù)包,將命令解析分發(fā),讓上層網(wǎng)絡(luò)對不同的命令分別相應(yīng);RTSP會(huì)話模塊中嵌套了SDP協(xié)議,通過套接字SOCKET發(fā)送和接收相應(yīng)的請求和應(yīng)答信息,管理媒體信息,同時(shí)完成處理命令解析控制,建立會(huì)話,維護(hù)會(huì)話狀態(tài)和用戶信息,結(jié)束會(huì)話等功能;RTP模塊負(fù)責(zé)將收集端傳輸?shù)膶?shí)時(shí)流數(shù)據(jù)按協(xié)議格式交由底層網(wǎng)絡(luò)接口模塊發(fā)送,此模塊維護(hù)著與RTP數(shù)據(jù)包有關(guān)的信息,并隨著傳輸過程一直更新這些信息,作為上層模塊的參考;輔助模塊是作為其他模塊的輔助,提供它們工作時(shí)需要的信息。輔助模塊的工作有字符管理,目的地址管理,管理目的地址IP與端口號(hào)等;應(yīng)用程序接口模塊,是RTP/RTSP協(xié)議與應(yīng)用程序的接口,協(xié)議的功能通過此接口提供給用戶應(yīng)用程序,它允許應(yīng)用程序設(shè)置協(xié)議運(yùn)行過程中的各種參數(shù),發(fā)送和接受RTP包和RTSP 命令等[2]。
本系統(tǒng)使用的硬件平臺(tái)功能框圖如圖3所示。硬件平臺(tái)采用三星公司推出的16/32位RISC微處理器S3C2440A,主頻400 MHz,最高可達(dá)533 MHz.它采用ARM920t的內(nèi)核,0.13 um的CMOS標(biāo)準(zhǔn)宏單元和存儲(chǔ)器單元。ARM920T實(shí)現(xiàn)了MMU,AMBA BUS和Harvard高速緩沖體系結(jié)構(gòu)。這一結(jié)構(gòu)具有獨(dú)立的16 KB指令Cache和16 KB數(shù)據(jù)Cache,每個(gè)都是由具有8字長的行組成。通過提供一套完整的通用系統(tǒng)外設(shè),S3C2440A減少整體系統(tǒng)成本和無需配置額外的組件。它支持MPEG4/H.264編碼解碼,支持實(shí)時(shí)視頻會(huì)議和NTSC、PAL制式的輸出。同時(shí)硬件平臺(tái)上還配備了64 M的頻率高達(dá)100 MHz的SDRAM,32 bit的數(shù)據(jù)總線,1個(gè)100 M的RJ-45接口,2個(gè)USB接口,3個(gè)串行口,完全滿足本設(shè)計(jì)的需要[3]。

圖3 硬件平臺(tái)Fig.3 Hardware platform
本設(shè)計(jì)使用的視頻服務(wù)器名字為MJPG-streamer,它是一個(gè)開源的視頻服務(wù)器軟件。它使用的是V4L2接口[4],該接口從攝像頭中把數(shù)據(jù)取出來,將數(shù)據(jù)封裝一個(gè)結(jié)構(gòu)體,用來描述攝像頭的一些信息,比如采集圖片的寬高,圖片的格式等等。其接口代碼如下:

接著是把這個(gè)結(jié)構(gòu)體寫入驅(qū)動(dòng)中,用來初始化攝像頭。
MJPG-streamer啟動(dòng)后,先進(jìn)行初始化,包括硬件初始化、輸入初始化、輸出初始化。然后調(diào)用輸入模塊進(jìn)行數(shù)據(jù)采集。客戶端請求數(shù)據(jù)時(shí),調(diào)用輸出模塊進(jìn)行流媒體輸出。當(dāng)關(guān)閉服務(wù)器時(shí),自動(dòng)進(jìn)行清理工作[5]。
由于開發(fā)板搭載的LINUX系統(tǒng)未集成攝像頭驅(qū)動(dòng),因此先要將攝像頭驅(qū)動(dòng)移植到開發(fā)板系統(tǒng)中,使攝像頭可以正常啟動(dòng)工作。解壓內(nèi)核配置文件后復(fù)制內(nèi)核配置文件到根目錄下,用ls命令確認(rèn)根目錄下存在名為相應(yīng)的內(nèi)核配置文件。執(zhí)行#cp config_mini2440_w35.config來創(chuàng)建內(nèi)核配置文件副本,然后執(zhí)行#cp config_mini2440_w35.config開始配置內(nèi)核,在Device Drivers菜單里面,選擇 Multimedia devices,然后進(jìn)入 Video capture adapters將攝像頭驅(qū)動(dòng)配置為GSPCA,保存退出,執(zhí)行編譯命令make zImage進(jìn)行編譯,然后將編譯后的內(nèi)核傳入開發(fā)板當(dāng)中,啟動(dòng)開發(fā)板后插入攝像頭,系統(tǒng)提示發(fā)現(xiàn)USB設(shè)備,說明驅(qū)動(dòng)程序移植成功[6]。
嵌入式系統(tǒng)中使用的服務(wù)器軟件名為MJPG-streamer,需要很少的CPU和內(nèi)存資源就可以工作,非常適合嵌入式系統(tǒng)。在使用MJPG-streamer之前,需要根據(jù)所使用的設(shè)備對MJPG-streamer進(jìn)行相應(yīng)的配置,修改mjpg-streamer/plugin/input_uvc/input_uvc.c文件中input_init()函數(shù)下的 width和height分別為320,240,退出編譯,將start.sh 中的密碼配置注釋掉,復(fù)制 mjpg-streamer*.so start.sh www到開發(fā)板的同一目錄下,運(yùn)行start.sh,命令行出現(xiàn)參數(shù)提示,說明移植成功。
測試在Windows 7操作系統(tǒng)下使用Opera瀏覽器進(jìn)行。在地址欄輸入 http://192.168.1.230:8080/stream_simple.html進(jìn)入監(jiān)視界面,實(shí)際運(yùn)行效果如圖5所示。

圖5 實(shí)際效果Fig.5 The actual effect
MJPG-streamer使用MJPEG數(shù)據(jù)流來形成視頻圖像。在運(yùn)行過程中,獲取了視頻流的相關(guān)數(shù)據(jù)。為了解其編碼性能,將它同相同分辨率的MPEG-4視頻數(shù)據(jù)進(jìn)行比較,結(jié)果如表2所示。

表2 兩種格式的比較Table.2 Comparison of the two formats
從表2可以看出,相同分辨率下,MPEG-4的帶寬占用最小,壓縮率也最高。但是在圖像質(zhì)量上,MJPEG一直保持優(yōu)秀,而MPEG-4的圖像質(zhì)量極不穩(wěn)定。由于采用幀間壓縮技術(shù),當(dāng)物體呈現(xiàn)運(yùn)動(dòng)狀態(tài)時(shí),MPEG-4格式不會(huì)立即反應(yīng)傳輸,從而會(huì)產(chǎn)生較大的延時(shí)現(xiàn)象,而 MJPEG則不會(huì)。現(xiàn)階段MPEG-4應(yīng)用于網(wǎng)絡(luò)視頻監(jiān)控有“編碼/譯碼的運(yùn)算速度”和“影像失真”兩大問題。要達(dá)到實(shí)時(shí)監(jiān)視效果,使用MPEG-4技術(shù)可能反會(huì)因?yàn)槠鋲嚎s率高導(dǎo)致的編碼時(shí)間長而成為瓶頸。
本設(shè)計(jì)是一個(gè)根據(jù)流媒體技術(shù)及網(wǎng)絡(luò)服務(wù)器技術(shù),基于嵌入式開發(fā)板LINUX系統(tǒng),使用MJPG-streamer流媒體服務(wù)器傳輸視頻數(shù)據(jù)的視頻監(jiān)視系統(tǒng)。本文對目前的監(jiān)控領(lǐng)域情況進(jìn)行了介紹,分析了監(jiān)視系統(tǒng)的基本原理,設(shè)計(jì)了系統(tǒng)總體工作流程,最后將系統(tǒng)實(shí)現(xiàn),并和同分辨率下的其他視頻編碼格式進(jìn)行了比較。下一步可研究將無線技術(shù)融合進(jìn)系統(tǒng),使監(jiān)視的靈活性大大提升。
[1]羅世偉,左濤,鄒開耀,等.視頻監(jiān)視系統(tǒng)原理及維護(hù)[M].北京:電子工業(yè)出版社,2007.
[2]COLIN PERKINS.RTP:Audio and Video for the Internet[M].Boston:Addison-Wesley Professional,2003.
[3]趙謙.嵌入式系統(tǒng)Web服務(wù)器的圖像采集終端的設(shè)計(jì)與研究[J].煤炭技術(shù),2010,29(3):198-202.
[4]張豪,楊春燕,汪筱陽.S3C2440A芯片及應(yīng)用[J].電子設(shè)計(jì)工程,2011,19(24):26-29.
[5]陳書益,黃永慧.開源視頻服務(wù)器軟件MJPG-streamer的研究和應(yīng)用[J].電子設(shè)計(jì)工程,2012,20(5):172-176.
[6]宋寶華.Linux設(shè)備驅(qū)動(dòng)開發(fā)詳解[M].2版.北京:人民郵電出版社,2010.