網絡視頻服務器采用TCP/IP協議,將音、視頻數據由內嵌服務器經局域網或Internet送到客戶端,用戶可使用IE瀏覽器或客戶端軟件對網絡視頻設備進行訪問,觀看實時圖像。
故以SAMSUNG公司S3C2410為核心電路開發板上擴展外圍接口,結合Java和WEB技術實現嵌入式視頻監控設備。
1 系統的硬件結構
系統以S3C2410為中心,外接存儲設備包括2片32M的SDRAM、64M的NAND Flash和2M的NOR Flash。外圍接口包括串行口、JTAG調試接口和USB接口,其中USB接口連接攝像頭負責視頻數據的采集,視頻采集設備硬件結構如圖1。
2 網絡視頻服務器的架構與實現
基于WEB技術的流媒體系統主要包括:提供流媒體服務的服務器端和采用瀏覽器進行監控的客戶端。服務器和客戶瀏覽器通過HTTP協議進行通信,如圖2。其中流媒體服務器主要由3層結構組成:WEB服務器、網絡服務接口和驅動模塊。
2.1 底層驅動的實現
USB攝像頭驅動程序介于視頻采集應用程序與Linux內核中USB核心間的中間層。其一,USB攝像頭驅動向USB核心注冊本身的信息,并調用USB核心提供的API函數來為上層服務;其二,應用程序通過調用USB攝像頭驅動的一套接口函數來進行視頻采集和調整攝像頭參數等操作。圖3是以USB驅動程序的關鍵數據結構usb_driver為入口的驅動程序主要數據結構和函數。
2.2 流媒體服務進程的實現
該進程用于開放某個服務器端口,并不斷監聽端口,如有連接請求則建立連接,建立后流媒體服務進程將不斷向端口提供采集到的圖像數據流同時也接收客戶端發送過來的圖像調節命令參數。其主程序流程如圖4。其中關鍵的實現包括:
(1)初始化VdIn結構
VdIn中描述攝像頭設備的完整信息,包括V4L標準中定義所有函數接口和數據結構,同時也附加一些用于圖像采集參數。初始化VdIn函數如下:
init_videoIn(& videoIn,videodevice,width,height,format,grabmethod)
該函數將videodevice,width,height,format,grabmethod等傳遞給VdIn結構videoIn中。
(2)創建圖像采集線程
圖像采集采用單獨的線程實現,在主線程中創建采集線程的方法如下:
pthread_create(&w1,NULL,(void*)grab,NULL);
其中由pthread_create創建的grab線程則是圖像采集的實現部分。
(3)socket連接初始化
在進行socket通信前必須對socket初始化:
serv_sock=open_sock(serverport);
在open_sock函數中包括:創建socket、綁定socket和端口號、開始監聽端口等步驟。其實現過程和面向連接的socket通信相同。
(4)創建socket服務線程
當監聽產生后服務主進程負責不斷循環的監聽接收到的請求并建立新的客戶連接socket,創建針對此socket的通信進程。
new_sock=accept
(serv_sock,(struct sockaddr*)&their_addr,&sin_size));
pthread_create(&server_th,NULL,(void*)service,&new_sock);
(5)創建網絡通信線程
在網絡通信線程中包括:圖像數據發送和客戶端圖像調節參數的接受2部分。客戶端發送的圖像調節參數包括圖像亮度和對比度,為此規定通信數據格式,用1個字節的不同位表示亮度和對比度,對應位為0或1表示減少或增加亮度或對比度的值。通過socket的read函數來接收客戶端發送的調節參數,并保存在message中:
ret=read(sock,(unsigned char*)&message,sizeof(stmct client_t));
通過socket的write函數向客戶端寫圖像數據幀,下面headerframe是待發送的圖像幀:
ret=write_sock(sock,(unsigned char*)headerframe,sizeof(struct frame_t));
2.3 Java Applet的應用
本系統Java Applet實現3個功能:圖像通過socket傳送到客戶端顯示;將客戶端調節圖像參數發送到服務器;將客戶端點擊的運動控制參數發送到服務器。圖5描繪基本多線程socket通信框架。其中init和start函數在Applet開始執行時調用,通過start創建2個線程:①用于socket通信;②提供用戶界面顯示圖像和相應用戶操作。用戶界面設計用到Sun的SwingWorker類庫。
在客戶端的瀏覽器窗口輸入移動監控設備的IP地址并連接,如果是第1次連接移動監控設備中的Web服務器將會出現1個下載Java Applet,并且會提示該Applet的有關授權文件安全性的問題。
3 結語
基于Web瀏覽器和Java Applet技術的客戶控制界面,無需專用監控軟件,使用方便。系統通過ARM9 CPU直接進行視頻處理和傳輸,簡化了電路設計和成本開支。基于Java Applet的網絡視頻服務器的解決方案,結合實際應用再進行功能擴展,可應用到眾多的有線或無線視頻監控領域。