新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 深入研究嵌入式web服務器視頻監(jiān)控的應用

深入研究嵌入式web服務器視頻監(jiān)控的應用

作者: 時間:2012-11-21 來源:網絡 收藏

1.引言

本文引用地址:http://www.2s4d.com/article/148238.htm

后PC機時代的到來引發(fā)了信息產品的產生,而Internet與信息產品的結合是當今發(fā)展的一個趨勢,Internet技術的產生正好迎合了這個趨勢。據分析,Internet系統(tǒng)在Internet電話、游戲裝置和手持式通信裝置的推動下將會有突飛猛進的發(fā)展。由于Internet技術的滲透,系統(tǒng)正變得越來越智能化并具有越來越多的網絡友好特性;又由于Web技術的飛速發(fā)展,給嵌入式系統(tǒng)帶入Internet提供了絕佳的途徑。

嵌入式技術是系統(tǒng)設計最廣泛的技術之一。本文根據監(jiān)控系統(tǒng)對敖據吞吐量和安全可靠性等各方面的實際要求,結合相關的新進展,討論了在監(jiān)控系統(tǒng)設計中的技巧,并詳細做了實現(xiàn)上的闡述。對所有基于嵌入式技術的監(jiān)控系統(tǒng)的設計具有非常實際的指導作用。

把圖像采集、視頻壓縮和WEB功能集中到一個體積很小的設備內,可以直接連入局域網和Internet,達到即插即用,省掉多種復雜的電纜,安裝方便,用戶也無須安裝任何硬件設備即可觀看,這使得由嵌入式網絡組成的監(jiān)控網絡組網和擴展都極為靈活方便。

2.WEB所在系統(tǒng)工作原理

如圖1所示,系統(tǒng)有兩種網絡接入方式:通過PPPOE自動撥號,動態(tài)獲取IP聯(lián)入Internet;自定義靜態(tài)IP連入局域網。

之后,系統(tǒng)的整個工作流程包括兩條主線:

1.通過HTTP/TCP/IP方式,解析來自監(jiān)控端的網頁請求,包括:攝像機控制(云臺上下左右、鏡頭光圈、縮放等等),數據庫讀寫(視頻參數如分辨率、亮色度、碼流,畫質),視頻調度與傳輸(多個用戶之間視頻數據的發(fā)送停止及其相互協(xié)調,系統(tǒng)參數也放在這里)。

2.通過RTP/UDP/IP方式,為監(jiān)控端提供所需的實時視頻信息。RTP/UDP/IP的方式兼顧了視頻傳輸的實時性與QoS保證。

3.WEB服務器的選擇

根據工作原理的描述,WEB服務器處于整個系統(tǒng)核心的位置,需要解決的幾個難點包括:

1.安全性。只有授權登陸用戶才能進行系統(tǒng)配置(網絡參數、視頻特性等等)。普通用戶只能簡單監(jiān)控。

2.流量控制。視頻數據連續(xù)且大量,服務器應該具備一定的協(xié)調各路監(jiān)控數據的能力。

3.實時性。對于監(jiān)控端的web請求指令響應速度,特別是在高負荷的情況下。

4.性能。在多路監(jiān)控請求同時存在的情況下,系統(tǒng)的響應速度。

5.支持串口命令。云臺控制指令需要串口支持。

6.數據庫交互。包括用戶數據庫,系統(tǒng)配置參數等等,都需要實現(xiàn)脫機保存。

綜上所述,Thttpd在安全性、性能、流量控制等方面有效的滿足系統(tǒng)需要,當然,實時性也得到很好的保證。下面,結合源碼,首先實現(xiàn)Thttpd的基本功能,然后將視頻數據轉發(fā)、安全性、支持串口命令、數據庫交互的實現(xiàn)完善起來。

4.Thttpd基本功能的實現(xiàn)

首先,確保在編譯uCLinux內核的makemenuconfig這一步,選中busybox中的Thttpd。

然后,根據需要,修改源碼/user/thttpd下的config.h:

#defineDEFAULT_PORT80

//服務器監(jiān)聽端口

#defineDEFAULT_DIR/home/httpd

//設定服務器根目錄

#defineINDEX_NAMEindex.html

//設定訪問服務器時的默認主頁

#defineAUTH_FILEpasswd

//授權用戶數據庫文件

#defineCGI_PATTERN/cgi-bin/*.cgi

//CGI的文件名格式

#defineCGI_PATH/home/httpd/cgi-bin

//CGI的所在目錄

接下來,建立服務器根目錄和文件目錄:

由于uCLinux的根文件系統(tǒng)為ROMFS,只讀,因此要在生成文件系統(tǒng)映像之前建立好其中的目錄和文件。首先是Web服務器根目錄,再是根目錄下的子目錄:文件根目錄和CGI程序目錄。修改/vendor/Samsung/4510B/makefile文件,在ROMFS_DIRS列出的目錄中增加home/httpd(服務器根目錄和文件根目錄),home/httpd/cgi-bin(CGI程序目錄)。

最后,將監(jiān)控系統(tǒng)相關的網頁和CGI程序分別放在/vendor/Generic/httpd和/vendor/Generic/httpd/cgi-bin中,就可以隨內核編譯過程時自動復制到image的相關目錄下。在/vendor/Samsung/4510B/rc中添加thttpd實現(xiàn)上電自動執(zhí)行。

5.HTTP基本驗證(RFC2617)的實現(xiàn)

首先必須生成存放用戶及其密碼的數據庫文件:

由于Thttpd在http驗證的實現(xiàn)上基于b64_decode_table解密,因此需要提供相對應b64加密而成的數據庫文件。然后,編譯/user/htpasswd.c,切換到相應目錄下,

執(zhí)行。/htpasswd-cpasswdroot

Addingpasswordforroot.

Newpassword:

Re-typenewpassword:

其中,-c表示創(chuàng)建一個名字為passwd的新的用戶數據加密文件,同時第一個用戶名為root。

之后,將passwd文件復制到/vendor/Generic/httpd下面,并且注意在thttpd/config.h中define的AUTH_FILE與passwd同名。至此,thttpd的http驗證功能就順利添加完成。

6.視頻調度與傳輸

在本系統(tǒng)中,模擬視頻數據經過AD,采樣等預處理進入支持MPEG4編碼的ASIC芯片壓縮后,打包發(fā)送的任務由Thttpd完成。

在多個監(jiān)控端請求同時存在的情況下,指令響應本身Thttpd已經完成,所以我們只需要實現(xiàn)數據傳輸。

在main函數里Mainloop開始之前依次執(zhí)行get_device,driver_init,device_init和alloc_resource,interrupt_enable,device_start,視頻流的編碼壓縮就開始了。添加定時器響應函數,(void)tmr_create((structtimeval*)0,transfer_bitstream,(ClientData)mpeg4_fd,0,1);

其中mpeg4_fd,是編碼芯片的設備描述符,transfer_bitstream為響應函數(內容略)。

然后,根據Thttpd連接請求的變化,在handle_read與handle_send中添加簡單相應連接有效性判斷的代碼即可完成數據調度與傳輸的功能。

7.串口命令支持

云臺控制指令的發(fā)送需要RS485的支持。

linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

上一頁 1 2 下一頁

評論


相關推薦

技術專區(qū)

關閉