李彬
摘 要:為了解決傳統(tǒng)視頻監(jiān)控系統(tǒng)存在的諸多問題,提出了一種基于嵌入式Linux遠(yuǎn)程視頻監(jiān)控系統(tǒng)。系統(tǒng)以嵌入式Linux和控制器S3C2410為核心平臺(tái),通過嵌入式平臺(tái)建立Web服務(wù)器和視頻服務(wù)器,利用基于TCP/IP的socket編程實(shí)現(xiàn)網(wǎng)絡(luò)通信,將USB攝像頭采集的圖像數(shù)據(jù)進(jìn)行壓縮并通過網(wǎng)絡(luò)傳輸傳送到視頻服務(wù)器客戶端??蛻舳丝山邮者B續(xù)幀圖像并完成顯示,用戶可通過瀏覽器、手機(jī)端實(shí)現(xiàn)遠(yuǎn)程監(jiān)控。
關(guān)鍵詞:視頻監(jiān)控系統(tǒng);S3C2410;網(wǎng)絡(luò)通信;Linux
1系統(tǒng)總體設(shè)計(jì)
針對(duì)網(wǎng)絡(luò)視頻監(jiān)控設(shè)備的實(shí)際應(yīng)用需求,結(jié)合圖像采集壓縮編碼、嵌入式系統(tǒng)和網(wǎng)絡(luò)技術(shù)等幾方面的新技術(shù),設(shè)計(jì)了一套嵌入式網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng),用以實(shí)現(xiàn)視頻數(shù)據(jù)的采集、壓縮與網(wǎng)絡(luò)傳輸。該系統(tǒng)基于S3C2410的ARM920T芯片和嵌入式Linux操作系統(tǒng),采用USB攝像頭捕捉視頻,經(jīng)MPG-440芯片壓縮編碼,系統(tǒng)直接與網(wǎng)絡(luò)相連,用戶使用標(biāo)準(zhǔn)的網(wǎng)絡(luò)瀏覽器和流媒體播放程序即可查看遠(yuǎn)程視頻影像。系統(tǒng)總體設(shè)計(jì)包括硬件設(shè)計(jì)和軟件設(shè)計(jì)兩部分,硬件設(shè)計(jì)模塊主要包括微控制器模塊、壓縮編碼模塊、網(wǎng)絡(luò)接口模塊3部分,微控制器模塊主要由主控芯片、DataFlash和SDRAM(1)組成,其中,主控芯片是整個(gè)控制系統(tǒng)的核心,它負(fù)責(zé)整個(gè)系統(tǒng)的調(diào)度工作。DataFlash里固化了嵌入式Linux內(nèi)核、及其文件系統(tǒng)、應(yīng)用軟件和系統(tǒng)配置文件。SDRAM(1)作為內(nèi)存供系統(tǒng)運(yùn)行使用。壓縮編碼模塊由視頻數(shù)據(jù)采集芯片、MPEG-4壓縮編碼芯片、SDRAM(2)組成,負(fù)責(zé)將視頻流轉(zhuǎn)化為MPEG-4碼流。網(wǎng)絡(luò)接口模塊主要是配合主控芯片傳送MPEG-4碼流。當(dāng)系統(tǒng)啟動(dòng)時(shí),微控制器將Linux內(nèi)核轉(zhuǎn)入SDRAM(1)中,系統(tǒng)從SDRAM(1)中啟動(dòng)。系統(tǒng)啟動(dòng)后,微控制器控制MPEG-4編碼模塊。
2軟件系統(tǒng)設(shè)計(jì)
Linux具有內(nèi)核小,效率高,源代碼開放,內(nèi)核直接提供網(wǎng)絡(luò)支持等優(yōu)點(diǎn)。但嵌入式系統(tǒng)的硬件資源畢竟有限,因此不能直接把Linux作為操作系統(tǒng),要針對(duì)具體的應(yīng)用通過配置內(nèi)核、裁減shell和嵌入式C庫對(duì)系統(tǒng)進(jìn)行定制,使整個(gè)系統(tǒng)能夠存放到容量較小的Flash中。Linux的動(dòng)態(tài)模塊加載,使Linux的裁減極為方便,高度模塊化的部件使添加非常容易。嵌入式Linux系統(tǒng)主要由4個(gè)部分組成:引導(dǎo)內(nèi)核啟動(dòng)的文件(bootloader)、Linux內(nèi)核文件(kernel)、虛擬磁盤文件(ramdisk)、用戶空間文件(user)。它們分別被放在DataFlash內(nèi)的4個(gè)分區(qū)模塊中。
Linux移植技術(shù)已經(jīng)成熟,不作詳細(xì)的闡述。下文主要介紹USB攝像頭驅(qū)動(dòng)、基于V4L設(shè)計(jì)的視頻采集模塊和視頻壓縮編碼模塊的設(shè)計(jì)。
2.1USB攝像頭驅(qū)動(dòng)
搭建好嵌入式Linux的開發(fā)環(huán)境后,第一步工作就是USB攝像頭的安裝與驅(qū)動(dòng)。在Linux下,設(shè)備驅(qū)動(dòng)程序可以看成Linux內(nèi)核與外部設(shè)備之間的接口。設(shè)備驅(qū)動(dòng)程序向應(yīng)用程序屏蔽了硬件實(shí)現(xiàn)的細(xì)節(jié),使得應(yīng)用程序可以像操作普通文件一樣來操作外部設(shè)備,可以使用和操作文件中相同的、標(biāo)準(zhǔn)的系統(tǒng)調(diào)用接口函數(shù)來完成對(duì)硬件設(shè)備的打開、關(guān)閉、讀寫和I/O控制操作,而驅(qū)動(dòng)程序的主要任務(wù)也就是要實(shí)現(xiàn)這些系統(tǒng)調(diào)用函數(shù)。
Video4Linux(V4L)是Linux中關(guān)于視頻設(shè)備的內(nèi)核驅(qū)動(dòng),它為針對(duì)視頻設(shè)備的應(yīng)用程序編程提供一系列接口函數(shù)。對(duì)于USB口攝像頭,其驅(qū)動(dòng)程序中需要提供基本的I/O操作接口函數(shù)open,read,write,close的實(shí)現(xiàn)。當(dāng)應(yīng)用程序?qū)υO(shè)備文件進(jìn)行系統(tǒng)調(diào)用操作時(shí),Linux內(nèi)核將通過file-operations結(jié)構(gòu)訪問驅(qū)動(dòng)程序提供的函數(shù)。在系統(tǒng)平臺(tái)上對(duì)USB口數(shù)碼攝像頭進(jìn)行驅(qū)動(dòng),首先把USB控制器驅(qū)動(dòng)模塊靜態(tài)編譯進(jìn)內(nèi)核,使平臺(tái)中支持USB接口,再在需要使用攝像頭采集時(shí),使用insmode動(dòng)態(tài)加載其驅(qū)動(dòng)模塊,這樣攝像頭就可正常工作了。確定USB攝像頭被正常驅(qū)動(dòng)后,下一步就是使用Video4Linux提供的API函數(shù)集來編寫視頻采集程序。
2.2基于V4L設(shè)計(jì)的視頻采集模塊
在Linux下,所有外設(shè)都被看成是一種特殊的文件,稱為設(shè)備文件。系統(tǒng)調(diào)用是內(nèi)核和應(yīng)用程序之間的接口,而設(shè)備驅(qū)動(dòng)程序則是內(nèi)核和外設(shè)之間的接口。他完成設(shè)備的初始化和釋放、對(duì)設(shè)備文件的各種操作和中斷處理等功能,為應(yīng)用程序屏蔽了外設(shè)硬件的細(xì)節(jié),使得應(yīng)用程序可以像普通文件一樣對(duì)外設(shè)進(jìn)行操作。
Linux系統(tǒng)中的視頻子系統(tǒng)Video4Linux為視頻應(yīng)用程序提供了一套統(tǒng)一的API,視頻應(yīng)用程序通過標(biāo)準(zhǔn)的系統(tǒng)調(diào)用即可操作各種不同的視頻捕獲設(shè)備。Video4Linux向虛擬文件系統(tǒng)注冊(cè)視頻設(shè)備文件,應(yīng)用程序通過操作視頻設(shè)備文件實(shí)現(xiàn)對(duì)視頻設(shè)備的訪問。
2.3視頻壓縮編碼模塊
獲取圖像數(shù)據(jù)后,可以直接輸出到FrameBuffer進(jìn)行顯示,由于本系統(tǒng)要將采集到的視頻影響通過網(wǎng)絡(luò)傳輸出去,所以在傳輸之前要對(duì)原始的圖像數(shù)據(jù)進(jìn)行壓縮編碼,在此選用映佳公司的MPG440芯片來實(shí)現(xiàn)MPEG-4視頻編解碼方案。和其他標(biāo)準(zhǔn)相比,MPEG-4壓縮比更高,節(jié)省存儲(chǔ)空間,圖像質(zhì)量更好,特別適合在低帶寬條件下傳輸視頻,并能保持圖像的質(zhì)量。對(duì)視頻流進(jìn)行壓縮編碼以后,接下來就要實(shí)現(xiàn)網(wǎng)絡(luò)傳輸部分的功能。
流媒體指的是在網(wǎng)絡(luò)中使用流技術(shù)傳輸?shù)倪B續(xù)時(shí)基媒體,RTP是目前解決流媒體實(shí)時(shí)傳輸問題的最好辦法,JRTPLIB是一個(gè)面向?qū)ο蟮腞TP庫,他完全遵循RFC1889設(shè)計(jì),下面講述如何在Linux平臺(tái)上運(yùn)用RTP協(xié)議進(jìn)行實(shí)時(shí)流媒體編程。
3結(jié)語
本系統(tǒng)基于S3C2410平臺(tái)和Linux操作系統(tǒng),利用Video4Linux設(shè)計(jì)采集程序,使用MPEG-4壓縮編碼,通過實(shí)時(shí)流媒體傳輸技術(shù)實(shí)現(xiàn)了網(wǎng)絡(luò)傳輸,整個(gè)系統(tǒng)具有穩(wěn)定可靠、安裝簡便、成本低廉等特點(diǎn),監(jiān)控距離隨網(wǎng)絡(luò)延伸而不斷加長,具有良好的發(fā)展應(yīng)用前景??蓴U(kuò)展應(yīng)用在工業(yè)控制、視頻會(huì)議系統(tǒng)、可視電話、遠(yuǎn)程監(jiān)控系統(tǒng)等諸多領(lǐng)域。
參考文獻(xiàn):
[1]田澤.嵌入式系統(tǒng)開發(fā)與應(yīng)用[M].北京航空航天出版社,2005.
[2]宋良濤.基于Web技術(shù)的嵌入式網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)研究[J].信息通信,2015(7):92-93.