一個(gè)嵌入式視頻監(jiān)控系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
引言
傳統(tǒng)的數(shù)字視頻監(jiān)控多采用數(shù)字芯片集成或采用純PC監(jiān)控,由于數(shù)字芯片無智能化的操作系統(tǒng)而PC機(jī)處理多路視頻信號(hào)的速度較低,導(dǎo)致系統(tǒng)穩(wěn)定性不夠好。隨著嵌入式系統(tǒng)和視頻壓縮技術(shù)的日漸成熟,以及高網(wǎng)絡(luò)帶寬的普及,通過嵌入式平臺(tái),將視頻信號(hào)數(shù)字化并壓縮,并通過內(nèi)置的Web服務(wù)提供給訪問者已成為可能。用戶可在現(xiàn)有網(wǎng)絡(luò)環(huán)境中,通過瀏覽器直接觀看實(shí)時(shí)的監(jiān)控圖像,實(shí)現(xiàn)高效、簡潔的監(jiān)控操作。以嵌入式系統(tǒng)為基礎(chǔ)的數(shù)字視頻監(jiān)控具有:便于計(jì)算機(jī)處理,適合遠(yuǎn)距離傳輸,可靠性高、安裝方便、使用靈活和體積輕巧等優(yōu)點(diǎn)[1- 3]。
1 系統(tǒng)組成方案
我們?cè)O(shè)計(jì)的嵌入式視頻監(jiān)控系統(tǒng)由視頻服務(wù)器、控制中心、和客戶端組成,這是因?yàn)楫?dāng)監(jiān)控點(diǎn)和控制臺(tái)到達(dá)一定數(shù)目之后,監(jiān)控點(diǎn)對(duì)于用戶的開銷也越來越大,因此增加控制中心輔助進(jìn)行管理。系統(tǒng)結(jié)構(gòu)如圖1所示。
1) 嵌入式視頻服務(wù)器
嵌入式的視頻服務(wù)器由硬件模塊和軟件模塊組成。視頻服務(wù)器硬件模塊主要完成視頻信號(hào)采集、壓縮、網(wǎng)絡(luò)傳輸和用戶設(shè)置,每個(gè)視頻服務(wù)器出廠時(shí)被分配了一個(gè)唯一的序列號(hào)作為用戶訪問的唯一標(biāo)識(shí)。嵌入式軟件模塊的主要功能有是控制硬件和向用戶傳輸經(jīng)過壓縮的視音頻數(shù)據(jù)。
2) 控制中心
控制中心主要處理從客戶端發(fā)送過來的視頻監(jiān)控信息,然后將許可的請(qǐng)求通知視頻服務(wù)器,使它們之間建立有效連接以傳輸監(jiān)控視頻數(shù)據(jù);另外,控制中心負(fù)責(zé)視頻服務(wù)器的登記注冊(cè),設(shè)定用戶權(quán)限和視頻服務(wù)器的參數(shù)??刂浦行能浖\(yùn)行在PC服務(wù)器上,由管理員操作維護(hù)。
3) 客戶端
客戶端是提供給用戶使用的基于PC的操作界面,可根據(jù)不同用戶權(quán)限設(shè)定其操作功能??蛻舳送瓿煽刂浦行牡墓芾砭S護(hù)、圖像觀看、云臺(tái)調(diào)整、圖像參數(shù)調(diào)整、錄像、告警等功能。
2 視頻終端硬件設(shè)計(jì)
視頻終端硬件完成視頻信號(hào)采集、MPEG-4壓縮和網(wǎng)絡(luò)傳輸。由于高精度實(shí)時(shí)視頻信息量巨大,在傳輸時(shí)需丟棄大量數(shù)據(jù)幀,因此必須壓縮[4]。我們采用專用芯片按即定格式高速壓縮視頻,實(shí)時(shí)性好,可靠性高。系統(tǒng)視頻服務(wù)器硬件的結(jié)構(gòu)如圖2所示。
[!--empirenews.page--]
(1) 視頻解碼器模塊:采用SAA7114H視頻解碼芯片,主要功能是將1路模擬視頻量化后形成YUV數(shù)據(jù)格式通過并行輸出端口傳輸?shù)絀ME6410視頻MPEG-4壓縮處理單元。
(2) 音頻編解碼器模塊:主要是完成模擬音頻到數(shù)字音頻的解碼工作,采樣速率32K bps。
(3) MPEG-4壓縮處理器模塊:數(shù)字視頻數(shù)據(jù)編碼壓縮工作由INTIME公司設(shè)計(jì)的IME6410視/音頻壓縮處理器完成。微控制器通過主機(jī)接口對(duì)IME6410配置和接收壓縮得到的視頻碼流。
(4) SDRAM模塊:IME6410和網(wǎng)絡(luò)處理器S3C2500B各需要一片SDRAM,為DSP和網(wǎng)絡(luò)處理器中程序運(yùn)行提供外部存儲(chǔ)器。
(5) FLASH模塊:用來存儲(chǔ)DSP和網(wǎng)絡(luò)處理器中運(yùn)行的程序。
(6) 網(wǎng)絡(luò)處理器模塊:選用SAMSUNG的ARM940T內(nèi)核的S3C2500B網(wǎng)絡(luò)處理器,S3C2500B將編碼后的視頻/音頻數(shù)據(jù)流打包形成標(biāo)準(zhǔn)的網(wǎng)絡(luò)數(shù)據(jù)流并傳輸?shù)揭蛱鼐W(wǎng)中。用戶可通過互聯(lián)網(wǎng)發(fā)送命令,對(duì)IP編碼器進(jìn)行參數(shù)調(diào)整,例如編碼的幀率、編碼效率、圖像質(zhì)量、IP地址設(shè)定等。
(7) 異步串口:支持RS-232、RS-422/485等多種協(xié)議,用于和PC通訊和控制攝像頭。用戶可根據(jù)需要設(shè)置系統(tǒng)的工作參數(shù),例如網(wǎng)絡(luò)的IP地址,編碼的幀率、編碼效率、圖像質(zhì)量等。
(8) I/O模塊:通用I/O接口可以滿足用戶的控制目的,例如攝像機(jī)的鏡頭焦距控制等。
(9) PHY層網(wǎng)絡(luò)接口:完成調(diào)制、解調(diào)功能。
3 嵌入式視頻服務(wù)器軟件的設(shè)計(jì)與實(shí)現(xiàn)
uCLinux具有精巧、高效的內(nèi)核,完整的網(wǎng)絡(luò)功能和良好的可裁剪性,它內(nèi)置的TCP/IP協(xié)議找、良好的開放性和可擴(kuò)展性以及高效的任務(wù)管理,能夠滿足數(shù)字視頻服務(wù)器的要求[5]。
本視頻服務(wù)器采用了uCLinux作為嵌入式操作系統(tǒng),移植BLOB作為系統(tǒng)引導(dǎo)模塊,移植ez-ipupdate實(shí)現(xiàn)動(dòng)態(tài)域名解析,使用在系統(tǒng)內(nèi)核態(tài)下編寫的driver實(shí)現(xiàn)視頻數(shù)據(jù)的獲取,使用在系統(tǒng)用戶態(tài)下編寫的應(yīng)用服務(wù)程序iplay實(shí)現(xiàn)組幀、發(fā)送以及與用戶交互等功能。
3.1 系統(tǒng)引導(dǎo)模塊
系統(tǒng)引導(dǎo)模塊LOADER移植自BLOB(Boot Loader OBject)項(xiàng)目,它是LART項(xiàng)目的系統(tǒng)引導(dǎo)模塊。移植的BLOB的發(fā)行版是BLOB-2.0.5-pre2,編譯器使用arm-linux- toolchain。由于視頻服務(wù)器上的硬件環(huán)境與處理器SAMAUNG的S3C2500B的軟件開發(fā)包SMDK2500中的配置有所不同,因此對(duì) BLOB中的源代碼在移植過程中作出了修改。以下是對(duì)BLOB程序做出的具體修改。
(1) 串口參數(shù)代碼修改
由于視頻服務(wù)器上的串口時(shí)鐘源和SMDK2500不一樣,因此對(duì)文件“/src/lib/serial-s3c2500.c”做出修改。
(2) 修改BLOB程序中各塊在內(nèi)存中的分布。
因?yàn)锽LOB中的各部分內(nèi)存分配和SMDK2500不一樣,因此需要修改內(nèi)存分配的預(yù)定義。修改文件是“include/BLOB/arch/smdk2500.h”。
(3) 增加對(duì)網(wǎng)卡支持
由于BLOB只支持一個(gè)網(wǎng)口,且只能在編譯前指定使用使用WAN還是LAN,故首先在編譯配置時(shí)添加:enable-network,這個(gè)指定修改在文件“/src/BLOB/smdk2500.c”中。為了在網(wǎng)絡(luò)中避免地址沖突,需要為本機(jī)網(wǎng)卡設(shè)置唯一的MAC地址。這個(gè)修改在文件“src /lib/ether.c”中。
(4) 修改啟動(dòng)延時(shí)
針對(duì)本系統(tǒng)的啟動(dòng)延時(shí),修改文件“src/BLOB/main.c”中的原設(shè)置時(shí)間。
3.2 系統(tǒng)內(nèi)核的移植
系統(tǒng)內(nèi)核Kernel是基于uClinux-dist-20040408的uClinux的分發(fā)版,下面是移植的修改部分。
(1) 修改時(shí)鐘頻率的設(shè)置
修改的原因是目標(biāo)版與評(píng)估版采用的時(shí)鐘源不一樣。需要修改的文件為“uClinux-dist/linux-2.4.x/arch/armnommu/mach-SMDK2500/config.c”。
(2) 添加支持從flash中獲取MAC地址
為了防止網(wǎng)絡(luò)上出現(xiàn)MAC地址重復(fù)的情況,采用了從flash中直接讀取BLOB中設(shè)定的MAC地址。在此需修改在文件“uClinux- dist/linux-2.4.x/arch/armnommu/mach-SMDK2500/readf.c”中相關(guān)的調(diào)用函數(shù)實(shí)現(xiàn)調(diào)用自己的函數(shù)。添加的自定義函數(shù)用來從flash的BLOB區(qū)域中指定的位置來獲取MAC參數(shù),然后向系統(tǒng)內(nèi)核kernel提供獲取的MAC參數(shù)內(nèi)容。
(3) 添加kernel中對(duì)GPIO口通用操作的支持
為了在系統(tǒng)內(nèi)核kernel中調(diào)試和使用GPIO提供統(tǒng)一的調(diào)用接口,需要修改文件為“uClinux-dist/linux-2.4.x/arch/armnommu/mach-SMDK2500/lmhgpio.c” 。
(4) 修改有關(guān)內(nèi)存分配的內(nèi)容
為了使系統(tǒng)支持內(nèi)存GFP_DMA方式的內(nèi)存分配,需要修改文件“uClinux-dist/linux-2.4.x/mmnommu/page_alloc2.c”。
[!--empirenews.page--]
3.3 動(dòng)態(tài)域名解析
ez-ipupdate程序用于實(shí)現(xiàn)動(dòng)態(tài)域名解析(DDNS)的功能,移植自u(píng)Clinux-dist中的ez-ipupdate包。使用此模塊的 DDNS功能,系統(tǒng)開機(jī)運(yùn)行即自動(dòng)登記已注冊(cè)的動(dòng)態(tài)域名。ez-ipupdate基本實(shí)現(xiàn)了DDNS的規(guī)范流程,但它直接讀取端口的IP地址,這對(duì)于直接使用公網(wǎng)IP的用戶是可以的。而有些計(jì)算機(jī)可能并不是直接連接公網(wǎng),直接獲取端口IP不合適,需要適當(dāng)修改程序。
本動(dòng)態(tài)域名解析模塊的功能是通過www.3322.org實(shí)現(xiàn)的,獲取本機(jī)IP的過程是通過本機(jī)向www.3322.org服務(wù)器發(fā)出一個(gè) getip的HTTP請(qǐng)求包,www.3322.org的服務(wù)器收到該請(qǐng)求包,就會(huì)按一定格式返回一個(gè)包含本機(jī)IP的包,這樣無論是直接使用公網(wǎng)IP,還是通過代理上網(wǎng),最后獲得的都是公網(wǎng)IP。獲得IP的方法是通過監(jiān)視服務(wù)商windows下的注冊(cè)程序的網(wǎng)絡(luò)通信得到的。
3.4 應(yīng)用服務(wù)模塊
應(yīng)用服務(wù)模塊iplay是運(yùn)行在嵌入式系統(tǒng)上用來控制系統(tǒng)硬件,同時(shí)完成與客戶端軟件交互過程的程序。系統(tǒng)啟動(dòng)時(shí)會(huì)自動(dòng)運(yùn)行這個(gè)程序,視頻音頻壓縮處理芯片IME6410只有通過這個(gè)程序才能正常工作。其工作模式是一個(gè)多線程的工作組合模式。主控程序首先對(duì)系統(tǒng)初始化,在完成了必要的初始化過程以后創(chuàng)建與其他模塊對(duì)應(yīng)的工作線程,如RTP協(xié)議處理線程、包接收控制線程、包發(fā)送控制線程、系統(tǒng)監(jiān)控線程和CDMA通訊處理線程
4 結(jié)束語
本文介紹了一種視頻監(jiān)控系統(tǒng)的設(shè)計(jì)方案,該系統(tǒng)由一個(gè)基于嵌入式平臺(tái)的視頻服務(wù)器、控制中心、客戶端三大部分組成。依據(jù)系統(tǒng)的總體架構(gòu)和設(shè)計(jì)思想,主要給出了嵌入式視頻服務(wù)器軟硬件的設(shè)計(jì)與實(shí)現(xiàn)。系統(tǒng)已開發(fā)完成,基本達(dá)到了預(yù)期的各項(xiàng)目標(biāo)。
本文作者創(chuàng)新點(diǎn): 系統(tǒng)采用嵌入式系統(tǒng)uCLinux設(shè)計(jì)和實(shí)現(xiàn)視頻監(jiān)控,和一般系統(tǒng)比,具有體積輕巧,安裝方便和使用靈活的優(yōu)點(diǎn)。
項(xiàng)目產(chǎn)生的經(jīng)濟(jì)效益: 系統(tǒng)可用于安全監(jiān)控、視頻會(huì)議、遠(yuǎn)程同步教學(xué)和VOD(視頻點(diǎn)播)等領(lǐng)域,應(yīng)用范圍十分廣泛。
參考文獻(xiàn)
[1] 許東. 網(wǎng)絡(luò)化的全數(shù)字圖像監(jiān)控系統(tǒng). 有線電視技術(shù), 2002, 2(9): 31-32
[2] 劉富強(qiáng). 數(shù)字視頻監(jiān)控系統(tǒng)開發(fā)及應(yīng)用. 北京: 機(jī)械工業(yè)出版社, 2003, 3:15-17
[3] 解天霞, 李春葆. 一種適合數(shù)字遠(yuǎn)程監(jiān)控系統(tǒng)的網(wǎng)絡(luò)體系設(shè)計(jì). 計(jì)算機(jī)工程與應(yīng)用, 2003(23): 154-156
[4] 張崢, 張?jiān)? 基于DirectShow的無線視頻監(jiān)控系統(tǒng). 微計(jì)算機(jī)信息, 2006, 11-1: 136-139
[5] 黃賢英, 肖朝輝, 陳媛. 嵌入式軟件開發(fā)方法研究及應(yīng)用. 自動(dòng)化技術(shù)與應(yīng)用, 2004, 3(23): 56-58