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