王剛 肖娟 劉華艷
摘 要 基于GX-ARM9-2410EP開發板完整地建立了一個嵌入式Linux網絡視頻監控系統。介紹了該嵌入式系統的軟硬件設計思想和體系架構,詳述了嵌入式Linux下USB接口攝像頭驅動的實現、利用Video4Linux API函數實現視頻采集以及網絡通信的具體實現過程和方法。
【關鍵詞】Linux Video4Linux S3C2410 嵌入式系統 網絡視頻監控
1 引言
隨著計算機多媒體應用技術及網絡技術的發展,在政府、教育、銀行、醫療、商場監控、城市交通管理等方面,視頻監控系統的市場需求量大幅度的上升。嵌入式網絡視頻監控系統具有監控設備體積小巧、性能穩定、通訊便利、利用網絡進行傳輸等顯著優點。設計一種簡便、廉價、新型的基于嵌入式系統的網絡視頻監控系統具有很大的工程實際意義。
本文針對網絡視頻監控設備的實際應用需求,結合圖像采集、壓縮編碼、嵌入式系統和網絡技術等幾方面的技術,設計了一套嵌入式網絡視頻監控系統。該系統基于S3C2410的ARM920T芯片和嵌入式Linux操作系統,采用USB攝像頭捕捉視頻,系統直接與網絡相連,用戶使用標準的網絡瀏覽器即可查看遠程視頻圖像。
2 系統硬件設計
在本系統的設計中,硬件結構包括圖像采集模塊和視頻服務器模塊。視頻采集部分主要完成數據的采集,系統通過前端USB攝像頭采集圖像,然后進行壓縮,并把壓縮的圖像進行存儲。視頻服務器部分主要完成服務器的功能,通過嵌入式 ARM 和物理層芯片來實現。硬件結構框圖如圖 1所示。
圖像采集過程通過 USB 接口完成。其處理流程如下: COMS 傳感器攝像頭采集數字圖像數據,通過 USB 接口將圖像數據傳送到微處理器,操作系統通過應用程序對圖像數據進行 JPEG 壓縮。
在網絡服務模塊的設計中,以基于 ARM9 內核的微處理器 S3C2410 芯片為系統的控制核心。通過 USB 接口從圖像采集模塊中接受圖像信號并進行壓縮為 JPEG 圖像后從網絡接口中傳出。
3 系統軟件設計
軟件設計部分主要有:嵌入式Linux操作系統的裁剪與移植、視頻圖像采集模塊、圖像數據JPEG編碼壓縮模塊、網絡數據傳輸模塊四部分。
本設計使用移植的嵌入式Linux 2.4作為操作系統。Linux操作系統內核穩定,兼容多種硬件平臺,且其源代碼完全開放,內核可根據用戶的不同需求進行剪裁,操作方便,內核本身就包含 TCP/IP 網絡協議。Linux 具有豐富的內核配置功能,可以進行剪裁shell 和嵌入式 C 庫,能夠將開發的應用代碼嵌入到存儲器中。針對嵌入式系統的設備,其驅動程序可以實現靜態或動態模塊加載,調試、操作簡便。Linux相關的剪裁與移植技術,本文不再作詳細的介紹。以下主要介紹USB接口攝像設備驅動程序、基于Video4Linux設計的視頻圖像采集模塊、視頻圖像采集流程和基于B/S模式的網絡數據傳輸模塊的設計。
3.1 USB接口攝像設備驅動程序的設計
Linux中的設備驅動程序是外圍設備與Linux底層核心之間的接口。上層的應用程序不需要去了解底層的硬件是如何工作的,只需要通過設備驅動程序這個接口來操作外圍設備,如同操作普通的文件一樣。驅動程序是通過調用標準的系統接口函數來實現對外圍硬件設備的使用,包括對外圍設備相關的開啟、結束、讀寫和I/O控制等操作。 Video4Linux (V4L) 是 Linux 中關于視頻捕捉卡、TV卡和USB攝像頭等視頻設備的內核驅動,是Linux下用于獲取視頻和音頻數據的API接口函數。 USB 接口攝像設備的驅動程序中需要提供基本的輸入/輸出操作接口函數的實現,包括打開(open)、讀操作(read)、寫操作(write)、關閉(close)四個函數。Linux底層核心通過file_operations數據結構訪問設備驅動程序提供的輸入/輸出接口函數來實現頂層應用程序對外圍設備的調用操作。
本設計使用的是Zc301p芯片USB接口攝像頭。該設備的驅動程序是開源的,可以網站上自由下載使用。但是需要針對具體使用的嵌入式設備平臺,重新設置包括設備處理器的型號、交叉編譯的環境等,然后再重新編譯生成后綴為.o的驅動模塊文件。再在需要啟動USB攝像設備時,使用加載命令insmode動態加載驅動模塊。加載成功后,Linux系統就會在系統目錄下成功注冊USB視頻設備/dev/video0。這樣USB接口的視頻攝像頭就可以正常使用了。
3.2 基于V4L設計的視頻采集模塊
在Linux系統中,外圍設備是被標識成特有的設備文件。系統底層的內核與上層的應用程序之間的接口是系統調用,而系統底層的內核與外圍設備間的接口則是設備驅動程序。當上層的應用程序操作外圍設備時,不需要直接去設置設備的初始化、釋放、中斷處理等操作,因為這些操作都由設備驅動程序完成。應用程序可以如同操作普通文件一樣的操作外圍設備。
在Linux系統里,上層的視頻應用程序與系統內核的接口是Video4Linux(V4L),V4L為視頻應用程序提供了諸多的接口函數,并在Linux系統中注冊視頻設備文件。視頻應用程序通過系統調用來操作各種視頻設備,即通過對視頻設備文件的操作來實現對外部視頻設備的控制。
3.2.1 V4L_device數據結構:
視頻圖像采集程序通過視頻設備進行圖像采集時,需要諸多的視頻圖像數據信息。V4L中的數據結構V4L_device為此提供了各種視頻圖像的相關數據信息。這個數據結構中主要包含了以下信息:
其中: video_window包含關于捕獲視頻圖像區域的信息,在視窗中橫向和縱向的坐標位置、捕獲圖像的寬度、高度等;video_capability包含視頻設備的主要信息,有是否能捕獲、分辨率可以達到的范圍、有設備名稱、有多少個信號來源等; video_picture包含設備捕獲到圖像的亮度、色度、色調、顏色、對比度、白平衡等屬性; video_channel包含關于信號源的編號、制式、類型等屬性; video_mbuf 包含使用mmap進行映射到存儲緩沖區里的幀的屬性,有每幀大小、最多支持的幀數、每幀相對基址的偏移等。endprint
3.2.2 視頻采集流程
根據V4L的數據結構特點,可以得出視頻圖像采集的流程,如圖2所示。首先啟動視頻捕獲設備,然后獲取視頻捕獲設備和圖像視頻的屬性信息,接下來完成色彩、幀頻狀態、視窗大小等初步設置,最后啟動視頻圖像的捕獲采集。
圖中主要包括兩部分內容,一部分是視頻采集的過程,另一部分是圖像數據處理包括視頻壓縮和網絡傳輸部分。
3.2.3 視頻采集主要函數
截取視頻圖像主要有兩種方法:一種是較為簡單的read()直接讀取方法,即通過系統調用read()直接獲取內核緩沖區中的視頻圖像數據。另一種是快速的mmap()內存映射方式,將設備文件映射到進程地址空間,對設備文件的操作是如同指針訪問內存一樣,繞過了對磁盤的輸入輸出訪問,雖然占用較多資源,但能讀寫操作更快速。本文設計中采用的是mmap()方式。
3.3 圖像數據的壓縮編碼模塊
3.4 基于B/S模式網絡數據傳輸模塊
本文采用B/S模式來實現遠程網終視頻監控。其中采用Boa來構建嵌入式Web服務器。Boa是上世紀九十年代由飛利浦公司開發的并廣泛應用于GUN/Linux操作系統中單任務Web服務器。支持CGI公共網關接口技術實現動態Web,提供更加安全、有效的Web服務,CGI接口適用于各種不同平臺,是用戶應用程序與Web服務器之間的最常用的標準通信接口。
瀏覽器端只需安裝有JAVA虛擬機的普通Windows系統的IE瀏覽器即可。
4 遠程視頻監控的實現
服務器端的網絡視頻采集硬件設備采用GX-ARM9-2410EP開發板,操作系統為移植的嵌入式Linux 2.4操作系統,配接USB接口的攝像頭進行工作。在Linux操作系統下編譯內核源代碼和文件系統,進行相關的配置,編寫開發板的啟動腳本,并把BOA和視頻采集程序的啟動命令加入到自啟動腳本中,重新生成文件系統并將生成的文件系統拷貝到tftpboot目錄下。在MiniCom下完成嵌入式Linux和文件系統的下載與燒寫。完畢后重新啟動開發板。
監控端(瀏覽器端)通過WWW服務連接到嵌入式BOA服務器上。CGI響應瀏覽器端發送過來的視頻圖像采集請求,開始視頻圖像捕獲采集,獲取的圖像通過socket傳送到網頁代碼中。用戶只需在瀏覽器的地址欄輸入作為服務器端的嵌入式Linux平臺的IP地址,通過網絡訪問嵌入式平臺中制作的主頁,即可進入WebServer系統的監控界面接收圖像數據進行顯示。
5 結語
本系統是基于GX-ARM9-2410EP開發板建立的一個嵌入式Linux網絡視頻遠程監控系統。結合Linux系統中的V4L接口函數開發了視頻圖像采集程序,使用JPEG編碼壓縮捕獲的圖像文件,采用Boa來構建嵌入式Web服務器,通過Java Applet進行網絡傳輸,實現了互聯網遠程實時監控。整個系統開發簡潔高效,穩定性強,成本低、性價比高,監控距離不受地域的限制。在遠程教育、遠程醫療、智能交通控制系統、字化城管系統等諸多領域均有廣闊的應用前景。
參考文獻
[1] 章派南.S3C2410網絡視頻監控系統的設計與實現[J].微計算機信息,2008,24(12-2):174-175.
[2] 彭鐵鋼,劉國繁.基于ARM的嵌入式視頻監控系統設計[J].計算機工程與設計,2010.31(6):1191-1194.
[3] 師娟娟.基于ARM9的嵌入式Linux移植[J].武漢理工大學學報,2008,30(2):205-208.
[4] 張航,李乃祥,秦培龍.基于S3C210A的嵌入式視頻監控系統服務器的設計實現[J].天津農學院學報,2009.6(16-2):27-30.
[5] 楊大千,梅大成,張巖等.基于ARM9和Linux的嵌入式動態Web技術設計與實現[J].工業控制計算機,2006.19(8):45-47.
作者單位
湘南學院計算機科學系 湖南省郴州市 423000endprint
3.2.2 視頻采集流程
根據V4L的數據結構特點,可以得出視頻圖像采集的流程,如圖2所示。首先啟動視頻捕獲設備,然后獲取視頻捕獲設備和圖像視頻的屬性信息,接下來完成色彩、幀頻狀態、視窗大小等初步設置,最后啟動視頻圖像的捕獲采集。
圖中主要包括兩部分內容,一部分是視頻采集的過程,另一部分是圖像數據處理包括視頻壓縮和網絡傳輸部分。
3.2.3 視頻采集主要函數
截取視頻圖像主要有兩種方法:一種是較為簡單的read()直接讀取方法,即通過系統調用read()直接獲取內核緩沖區中的視頻圖像數據。另一種是快速的mmap()內存映射方式,將設備文件映射到進程地址空間,對設備文件的操作是如同指針訪問內存一樣,繞過了對磁盤的輸入輸出訪問,雖然占用較多資源,但能讀寫操作更快速。本文設計中采用的是mmap()方式。
3.3 圖像數據的壓縮編碼模塊
3.4 基于B/S模式網絡數據傳輸模塊
本文采用B/S模式來實現遠程網終視頻監控。其中采用Boa來構建嵌入式Web服務器。Boa是上世紀九十年代由飛利浦公司開發的并廣泛應用于GUN/Linux操作系統中單任務Web服務器。支持CGI公共網關接口技術實現動態Web,提供更加安全、有效的Web服務,CGI接口適用于各種不同平臺,是用戶應用程序與Web服務器之間的最常用的標準通信接口。
瀏覽器端只需安裝有JAVA虛擬機的普通Windows系統的IE瀏覽器即可。
4 遠程視頻監控的實現
服務器端的網絡視頻采集硬件設備采用GX-ARM9-2410EP開發板,操作系統為移植的嵌入式Linux 2.4操作系統,配接USB接口的攝像頭進行工作。在Linux操作系統下編譯內核源代碼和文件系統,進行相關的配置,編寫開發板的啟動腳本,并把BOA和視頻采集程序的啟動命令加入到自啟動腳本中,重新生成文件系統并將生成的文件系統拷貝到tftpboot目錄下。在MiniCom下完成嵌入式Linux和文件系統的下載與燒寫。完畢后重新啟動開發板。
監控端(瀏覽器端)通過WWW服務連接到嵌入式BOA服務器上。CGI響應瀏覽器端發送過來的視頻圖像采集請求,開始視頻圖像捕獲采集,獲取的圖像通過socket傳送到網頁代碼中。用戶只需在瀏覽器的地址欄輸入作為服務器端的嵌入式Linux平臺的IP地址,通過網絡訪問嵌入式平臺中制作的主頁,即可進入WebServer系統的監控界面接收圖像數據進行顯示。
5 結語
本系統是基于GX-ARM9-2410EP開發板建立的一個嵌入式Linux網絡視頻遠程監控系統。結合Linux系統中的V4L接口函數開發了視頻圖像采集程序,使用JPEG編碼壓縮捕獲的圖像文件,采用Boa來構建嵌入式Web服務器,通過Java Applet進行網絡傳輸,實現了互聯網遠程實時監控。整個系統開發簡潔高效,穩定性強,成本低、性價比高,監控距離不受地域的限制。在遠程教育、遠程醫療、智能交通控制系統、字化城管系統等諸多領域均有廣闊的應用前景。
參考文獻
[1] 章派南.S3C2410網絡視頻監控系統的設計與實現[J].微計算機信息,2008,24(12-2):174-175.
[2] 彭鐵鋼,劉國繁.基于ARM的嵌入式視頻監控系統設計[J].計算機工程與設計,2010.31(6):1191-1194.
[3] 師娟娟.基于ARM9的嵌入式Linux移植[J].武漢理工大學學報,2008,30(2):205-208.
[4] 張航,李乃祥,秦培龍.基于S3C210A的嵌入式視頻監控系統服務器的設計實現[J].天津農學院學報,2009.6(16-2):27-30.
[5] 楊大千,梅大成,張巖等.基于ARM9和Linux的嵌入式動態Web技術設計與實現[J].工業控制計算機,2006.19(8):45-47.
作者單位
湘南學院計算機科學系 湖南省郴州市 423000endprint
3.2.2 視頻采集流程
根據V4L的數據結構特點,可以得出視頻圖像采集的流程,如圖2所示。首先啟動視頻捕獲設備,然后獲取視頻捕獲設備和圖像視頻的屬性信息,接下來完成色彩、幀頻狀態、視窗大小等初步設置,最后啟動視頻圖像的捕獲采集。
圖中主要包括兩部分內容,一部分是視頻采集的過程,另一部分是圖像數據處理包括視頻壓縮和網絡傳輸部分。
3.2.3 視頻采集主要函數
截取視頻圖像主要有兩種方法:一種是較為簡單的read()直接讀取方法,即通過系統調用read()直接獲取內核緩沖區中的視頻圖像數據。另一種是快速的mmap()內存映射方式,將設備文件映射到進程地址空間,對設備文件的操作是如同指針訪問內存一樣,繞過了對磁盤的輸入輸出訪問,雖然占用較多資源,但能讀寫操作更快速。本文設計中采用的是mmap()方式。
3.3 圖像數據的壓縮編碼模塊
3.4 基于B/S模式網絡數據傳輸模塊
本文采用B/S模式來實現遠程網終視頻監控。其中采用Boa來構建嵌入式Web服務器。Boa是上世紀九十年代由飛利浦公司開發的并廣泛應用于GUN/Linux操作系統中單任務Web服務器。支持CGI公共網關接口技術實現動態Web,提供更加安全、有效的Web服務,CGI接口適用于各種不同平臺,是用戶應用程序與Web服務器之間的最常用的標準通信接口。
瀏覽器端只需安裝有JAVA虛擬機的普通Windows系統的IE瀏覽器即可。
4 遠程視頻監控的實現
服務器端的網絡視頻采集硬件設備采用GX-ARM9-2410EP開發板,操作系統為移植的嵌入式Linux 2.4操作系統,配接USB接口的攝像頭進行工作。在Linux操作系統下編譯內核源代碼和文件系統,進行相關的配置,編寫開發板的啟動腳本,并把BOA和視頻采集程序的啟動命令加入到自啟動腳本中,重新生成文件系統并將生成的文件系統拷貝到tftpboot目錄下。在MiniCom下完成嵌入式Linux和文件系統的下載與燒寫。完畢后重新啟動開發板。
監控端(瀏覽器端)通過WWW服務連接到嵌入式BOA服務器上。CGI響應瀏覽器端發送過來的視頻圖像采集請求,開始視頻圖像捕獲采集,獲取的圖像通過socket傳送到網頁代碼中。用戶只需在瀏覽器的地址欄輸入作為服務器端的嵌入式Linux平臺的IP地址,通過網絡訪問嵌入式平臺中制作的主頁,即可進入WebServer系統的監控界面接收圖像數據進行顯示。
5 結語
本系統是基于GX-ARM9-2410EP開發板建立的一個嵌入式Linux網絡視頻遠程監控系統。結合Linux系統中的V4L接口函數開發了視頻圖像采集程序,使用JPEG編碼壓縮捕獲的圖像文件,采用Boa來構建嵌入式Web服務器,通過Java Applet進行網絡傳輸,實現了互聯網遠程實時監控。整個系統開發簡潔高效,穩定性強,成本低、性價比高,監控距離不受地域的限制。在遠程教育、遠程醫療、智能交通控制系統、字化城管系統等諸多領域均有廣闊的應用前景。
參考文獻
[1] 章派南.S3C2410網絡視頻監控系統的設計與實現[J].微計算機信息,2008,24(12-2):174-175.
[2] 彭鐵鋼,劉國繁.基于ARM的嵌入式視頻監控系統設計[J].計算機工程與設計,2010.31(6):1191-1194.
[3] 師娟娟.基于ARM9的嵌入式Linux移植[J].武漢理工大學學報,2008,30(2):205-208.
[4] 張航,李乃祥,秦培龍.基于S3C210A的嵌入式視頻監控系統服務器的設計實現[J].天津農學院學報,2009.6(16-2):27-30.
[5] 楊大千,梅大成,張巖等.基于ARM9和Linux的嵌入式動態Web技術設計與實現[J].工業控制計算機,2006.19(8):45-47.
作者單位
湘南學院計算機科學系 湖南省郴州市 423000endprint