國內外市場上主要推出的是數字控制的模擬視頻監控和數字視頻監控兩類產品。前者的技術發展已經非常成熟,產品性能穩定, 在實際工程中得到了廣泛應用。
后者是新近崛起的以計算機技術及圖像視頻壓縮技術為核心的新型視頻監控系統, 該系統在解決模擬視頻監控系統的部分弊端的基礎上迅速崛起。在互聯網的普遍推廣和網絡帶寬逐漸提高的背景下,視頻監控技術飛速發展, 出現了集多媒體技術、網絡通信技術、嵌入式技術于一體的嵌入式網絡視頻監控系統。
目前國內嵌入式視頻監控系統的研究有了很大的發展, 但是國內對嵌入式無線視頻監控系統的研究還比較少。本文介紹了自主開發的基于ARM 的嵌入式無線視頻采集系統設計方案。該方案采用S3C2410 嵌入式處理器和ARMLinux 操作系統, 利用通過自行開發的視頻服務器軟件,通過3G 無線上網卡完成客戶端與視頻服務器的通信。介紹了系統的硬件結構、服務器端軟件的總體結構、驅動程序的構建、圖像的采集和壓縮以及傳輸模塊的設計,并進行了測試。實驗結果表明, 系統采用H.264 編碼技術在保證視頻傳輸質量的同時具有良好的帶寬適應能力。
1 系統總體結構
本系統由監控現場攝像頭、嵌入式視頻服務器、客戶端三部分組成。監控現場的攝像頭實現圖像的采集,并把采集的圖像信息通過內部總線傳送給嵌入式視頻服務器。嵌入式遠程視頻監控系統是一個基于S3C2410處理器、H.264 壓縮、Web 服務器和Linux 操作系統的嵌入式系統, 它的主要功能是對攝像頭采集到的圖像進行H.264 壓縮編碼, 并對編碼后的圖像通過3G 無線網絡進行傳輸。客戶端主要完成圖像的接收和解壓縮, 用戶可以通過Web 瀏覽器訪問嵌入式視頻服務器來觀看攝像頭采集到的圖像,從而實現遠程視頻監控。嵌入式遠程視頻監控系統總體結構如圖1 所示。
圖1 嵌入式遠程視頻監控系統總體結構
2 系統硬件結構
系統硬件由圖像傳感器MI360 、3G 無線模塊MC8630 、圖像壓縮芯片ZC0301 、微處理器芯片S3C2410 、以太網控制芯片、SDRAM 等芯片組成。S3C2410 具有低功耗、精簡而出色的全靜態設計等特點,具備MMU 存儲器管理功能, 擁有獨立的16 KB 指令和16 KB 數據緩存,在高性能和低功耗特性方面提供了可靠的性能。無線模塊選用中興3G 模塊MC8630, 數據速率為前向:3.1 Mb/smax,反向:1.8 Mb/s max 。
為了降低成本, 簡化設計, 本方案選用中星微的ZC0301 作為視頻壓縮編碼芯片,Vimicro ZC0301 主要由系統控制、圖像信號處理、次取樣和水平掃描、JPEG 編碼器和USB 設備控制五大功能模塊組成。CMOS 圖像傳感器選擇美光的MI360 , 它采用VGA 標準(30 萬像素) ,感光面積為1/4 英寸, 有效像素649H ×489H, 采用低噪聲技術,噪聲等級達到CCD 標準。MI360 和ZC0301 壓縮編碼芯片完成視頻數據的采集、壓縮和編碼。系統硬件結構如圖2 所示。
圖2 嵌入式監控系統硬件結構
3 系統軟件結構
本嵌入式遠程視頻監控系統軟件由攝像頭驅動模塊、圖像采集模塊、H.264 圖像壓縮模塊、嵌入式Web 服務器組成。攝像頭驅動模塊實現攝像頭在Linux 操作系統下的正常工作, 并為應用程序提供接口。圖像采集程序獲取攝像頭傳送過來的圖像信息并進行暫存。H.264壓縮模塊完成對原始圖像的編碼處理。嵌入式Web 服務器實現圖像數據處理與網絡傳輸。嵌入式Web 服務器一般由5 個主要模塊組成: 嵌入式HTTP 引擎、安全模塊、應用程序接口、文件系統和配置模塊[ 2]。由于開發平臺采用的嵌入式操作系統為ARMLinux , 具有成熟的文件系統, 提供文件訪問的接口, 可以直接使用文件系統提供的讀寫接口訪問嵌入式Web 資源文件, 不需要另外設計文件系統。嵌入式視頻監控系統軟件體系結構如圖3 所示。
圖3 嵌入式視頻監控系統軟件體系結構
3.1 攝像頭驅動程序設計
圖像的采集工作由圖像傳感器MI360 和視頻壓縮芯片ZC0301 完成,ZC0301 通過USB 接口和S3C2410 相連,因此驅動程序主要是對Linux 下USB 驅動程序的開發,ZC0301 的驅動獨立開發難度較大, 主要是既要考慮圖像采集芯片的驅動, 還要考慮USB 的驅動, 且Vimicro 沒有公布ZC0301 的詳細技術資料。Linux 下ZC0301 的驅動程序有開源代碼, 根據本系統的開發平臺進行修改、移植、重新編譯內核等操作可以完成ZC0301 的驅動程序。
3.2 圖像采集模塊設計
Video4linux(V4L) 是Linux 的影像串流系統與嵌入式影像系統的基礎,是Linux Kernel 中支持影像設備的一組APIs , 配合適當的視頻采集卡與視頻采集卡驅動程序,可以實現影像采集、AM/FM 無線廣播、影像CODEC、視頻切換等功能。Video4linux 為二層式架構, 上層為Video4linux 驅動程序本身, 下層架構則是影像設備的驅動程序。這里用到的是Video4linux 的上層驅動程序, 即Video4linux 本身所提供給程序開發人員的APIs 。
Video4linux 視頻圖像采集流程如圖4 所示。
圖4 Video4linux 視頻圖像采集流程圖
3.3 H.264 圖像壓縮模塊設計
H.264 是ITU-T 視頻編碼專家組(VCEG) 和ISO/IEC活動圖像編碼專家組(MPEG) 的聯合視頻組(JVT) 開發的一個新的數字視頻編碼標準。在技術上,H.264 標準有很多優勢,如統一的VLC 符號編碼,高精度、多模式的位移估計,基于4×4 塊的整數變換、分層的編碼語法等。這些措施使得H.264 算法具有很高的編碼效率, 在相同的重建圖像質量下能夠比H.263 降低50%左右的碼率。
H.264 的碼流結構網絡適應性強, 增加了差錯恢復能力, 能夠很好地適應IP 和無線網絡。H.264 能以較低的數據速率傳送基于IP 的視頻流, 在視頻質量、壓縮效率和數據包恢復丟失等方面,超越了現有的MPEG-2、MPEG-4 和H.26x 視頻通信標準, 更適合窄帶傳輸,是目前監控系統最為理想的信源壓縮編碼標準。
相對于有線網絡而言,無線網絡狀況更不穩定,除去網絡流量所造成的傳輸速率的波動外, 設備的移動速度和所在位置也會嚴重地影響到傳輸速率。其次, 無線信道的環境也要比有線信道惡劣得多,數據的誤碼率也要高許多,而高壓縮的碼流對傳輸錯誤非常敏感, 還會造成錯誤向后面的圖像擴散, 因此無線流媒體在信源和信道編碼上需要很好的容錯技術。錯誤恢復的工具隨著視頻壓縮編碼技術的提高在不斷改進。舊的標準(H.261、H.263、MPEG-2 的第二部分)中,使用片和宏塊組的劃分、幀內編碼宏塊、幀內編碼片和幀內編碼圖像來防止錯誤的擴散。之后改進的標準(H.263+,MPEG-4)中,使用多幀參考和數據分割技術來恢復錯誤。H.264 標準在以前的基礎上提出了三種關鍵技術來進行錯誤的恢復, 分別是參數集合、靈活的宏塊次序(FMO)和冗余片(RS)。FMO 是H.264 的一大特色,可以是一幀中的宏塊順序分割,使分割后的片的尺寸小于無線網絡的MTU 尺寸,避免在網絡層再進行一次數據分割,降低了數據傳輸的額外開銷。
3.4 嵌入式Web 服務器設計
本系統選用適合嵌入式系統的Boa 服務器, 它是單任務HTTP 服務器, 占用空間小, 另外支持動態Web 技術的CGI 技術, 源代碼開放, 性能高。嵌入式Boa 服務器移植到Linux 系統中的網上相關資料很多, 不再贅述。
下面重點介紹應用程序接口CGI 程序設計。
公共網關接口CGI 是HTTP 服務器與其他機器上的程序進行“ 交談” 的一種工具, 其程序須運行在網絡服務器上。CGI 是一個用于Web 服務器與外部程序之間通信方式的標準, 使得外部程序能生成HTML、圖像或其他內容,而服務器處理的方式與那些非外部程序生成的HTML、圖像或其他內容的處理方式是相同的。使用CGI的原因在于它是一個定義良好并被廣泛支持的標準, 沒有CGI 就不可能實現動態的Web 頁面, 除非使用一些服務器中提供的特殊方法。
CGI 程序入口為main () 函數, 函數首先執行初始化用到的變量, 然后根據提供的環境變量Environmentv 獲取當前訪問用戶的用戶名, 判斷用戶的訪問權限, 然后根據REQUESM 得到用戶的請求方法。如果是POST, 則根據Contentl 獲取用戶請求內容并分析;如果是GET, 則根據Querys 獲取信息并分析請求內容, 最后根據用戶權限做出相應的處理;如果是其他的請求方法, 則返回錯誤, 不支持該請求方法。流程圖如圖5 所示。
圖5 CGI 程序處理流程
S3C2410 憑借其高性價比、豐富的接口以及對網絡的強大支持, 使其非常適合做網絡視頻監控系統的Web視頻服務器的處理器。H.264 算法具有很高的編碼效率, 在相同的重建圖像質量下, 能夠比H.263 降低50%左右的碼率。H.264 的碼流結構網絡適應性強, 增加了差錯恢復能力,能夠很好地適應IP 和無線網絡。本系統支持動態IP, 可以直接連入以太網, 能夠即插即看。通過局域網(100 Mb/s 以太網) 內部測試, 可以達到25 幀/秒CIF 圖像(320×240) 要求, 傳輸延遲0.6 s 以內, 編碼后的碼率150 Kbit/s , 由客戶端軟件解碼恢復后的視頻圖像清晰、流暢、沒有抖動現象, 能獲得較好的視頻質量。