視頻監(jiān)控系統(tǒng)是安全防范系統(tǒng)的重要組成部分,, 它具有直觀, 方便,, 信息內(nèi)容豐富而被廣泛應(yīng)用于許多場合,。傳統(tǒng)的數(shù)字視頻監(jiān)控一般采用基于PC機(jī)平臺+ 視頻采集卡的形式, 該方案有系統(tǒng)體積大,、成本高,、穩(wěn)定性不夠好等缺點(diǎn)。隨著嵌入式系統(tǒng)監(jiān)控和視頻壓縮技術(shù)的日漸成熟,, 以及高網(wǎng)絡(luò)帶寬的普及,, 通過嵌入式平臺, 實現(xiàn)視頻信號采集,、壓縮,, 通過網(wǎng)絡(luò)傳輸, 進(jìn)行視頻監(jiān)控已成為可能,。 該設(shè)計采用的是韓國三星公司的一款基于ARM920T 內(nèi)核的嵌入式處理器,, 并將國際上流行的MPEG4 壓縮編碼技術(shù)和流媒體傳輸技術(shù)相結(jié)合,開發(fā)出可靠性高,、成本低,、體積小、功耗低的遠(yuǎn)程視頻監(jiān)控系統(tǒng)終端,。
1 系統(tǒng)開發(fā)硬件平臺
系統(tǒng)硬件平臺如圖1 所示,。該設(shè)計采用的是韓國三星公司的S3C2410 ARM 嵌入式處理器, 主頻可以達(dá)到203 MHz. 內(nèi)置有豐富的外設(shè)資源,, 包括存儲器,、串口、網(wǎng)口和USB 等接口控制設(shè)備,,主要面向手持設(shè)備以及高性價比,、低功耗的應(yīng)用。 S3C2410 作為系統(tǒng)控制單元,其出色的性能,、豐富的片內(nèi)外資源,、對視頻處理功能的優(yōu)化、低功耗等特點(diǎn)成為系統(tǒng)的首選,。該核心板內(nèi)置了64 MK9F1208 的NAND Flash, 2MSST39VF1601 的Nor Flash, 以及以太網(wǎng)控制芯片國三星公司的S3C2410 ARM 嵌入式處理器,, 主頻可以達(dá)到203 MHz. 內(nèi)置有豐富的外設(shè)資源, 包括存儲器,、串口,、網(wǎng)口和USB 等接口控制設(shè)備, 主要面向手持設(shè)備以及高性價比,、低功耗的應(yīng)用,。 S3C2410 作為系統(tǒng)控制單元,其出色的性能,、豐富的片內(nèi)外資源,、對視頻處理功能的優(yōu)化、低功耗等特點(diǎn)成為系統(tǒng)的首選,。該核心板內(nèi)置了64 MK9F1208 的NAND Flash, 2MSST39VF1601 的Nor Flash, 以及以太網(wǎng)控制芯片CS8900Q3. 兩路UART 串行口支持RS232 協(xié)議,,用于和PC 通訊和控制攝像頭, 波特率高達(dá)115 200 bps. 外接USB 攝像頭采用的是基于中星微Z301 芯片的極速攝像頭,。 像素達(dá)到130 萬,, 色彩位數(shù)24 位, 最大幀數(shù)可以達(dá)到30 幀,, 畫面流暢,、清晰, 支持: S3C2410,、QQ2440v3 mini2440 等ARM9 開發(fā)板,, 即插即用, 對嵌入式系統(tǒng)開發(fā)是個不錯的選擇,。
圖1 系統(tǒng)硬件平臺
該系統(tǒng)通過USB 攝像頭采集視頻原始數(shù)據(jù),,S3C2410 作為核心的中央控制和數(shù)據(jù)處理中心,主要完成視頻采集終端控制和視頻圖像壓縮,, 并將壓縮后的視頻數(shù)據(jù)打包形成標(biāo)準(zhǔn)的網(wǎng)絡(luò)數(shù)據(jù)流傳輸?shù)揭蛱鼐W(wǎng)中,。
2 系統(tǒng)的軟件設(shè)計
系統(tǒng)的軟件設(shè)計主要包括如下幾個方面: 交叉編譯環(huán)境的搭建、USB 視頻采集,、視頻編碼壓縮,, 以及視頻流的網(wǎng)絡(luò)傳輸。 系統(tǒng)軟件架構(gòu)如圖2 所示,。
圖2 系統(tǒng)軟件架構(gòu)
2. 1 交叉編譯環(huán)境的搭建
由于嵌入式開發(fā)板的資源有限, 不能直接在開發(fā)板上進(jìn)行開發(fā)和調(diào)試, 需要以交叉編譯調(diào)試的方式進(jìn)行開發(fā)和調(diào)試,,鑒于嵌入式Linux 強(qiáng)大的網(wǎng)絡(luò)支持功能,, 源代碼完全開放、可移植性強(qiáng),、網(wǎng)絡(luò)功能強(qiáng)大等特點(diǎn),, 選用它作為系統(tǒng)軟件平臺。在系統(tǒng)開發(fā)前需安裝Linux 操作系統(tǒng),, 然后在宿主機(jī)即PC 機(jī)上建立交叉編譯環(huán)境,。安裝對應(yīng)ARM 開發(fā)板的交叉編譯器cross- 3. 3. 2. tar. bz2. 這樣, 一個嵌入式ARM- LINU X 下的交叉編譯環(huán)境就搭建成功了,。
2. 2 視頻采集系統(tǒng)的實現(xiàn)
視頻采集是通過嵌入式Linux 操作系統(tǒng)調(diào)用V4L( video4linux ) 和影像驅(qū)動程序來完成的,。
V ideo4linux 是linux 的影像流系統(tǒng)與嵌入式影像系統(tǒng)的基礎(chǔ)。它是linux kernel 里支持影像設(shè)備的一組API( 應(yīng)用接口程序) , 若配合適當(dāng)?shù)囊曨l采集卡與驅(qū)動程序,, video4linux 就可以實現(xiàn)影像采集,、AM/FM 無線廣播、影像CODEC,、頻道切換等功能,。 目前, V4L 主要應(yīng)用在影像串流系統(tǒng)與嵌入式影像系統(tǒng)里,, 如: 遠(yuǎn)程教學(xué),、遠(yuǎn)程醫(yī)療、視頻會議,、視頻監(jiān)控,、可視電話等。它分為2 層式構(gòu)架,, 上層為video4linux驅(qū)動程序本身,,下層為影像設(shè)備的驅(qū)動程序, 如該設(shè)計中的中星微攝像頭Z301 芯片的驅(qū)動程序,。 在Linux 操作系統(tǒng)中,, 外部設(shè)備都作為設(shè)備文件來管理, 因此,, 對外部設(shè)備的操作就轉(zhuǎn)變成對設(shè)備文件的操作,。 采集程序調(diào)用V4L API 對設(shè)備文件進(jìn)行讀操作,即可實現(xiàn)視頻數(shù)據(jù)采集,。
由于開發(fā)板自帶的Linux 內(nèi)核并不支持中星微的攝像頭,,所以要在網(wǎng)上下載Z301 驅(qū)動芯片的補(bǔ)丁, 對應(yīng)ARM- Linux 版本號,。 利用patch 命令打在內(nèi)核上,。 在編譯內(nèi)核的時候,,會在usb- > support 出現(xiàn)SPCCA5XX 選項,以模塊的形式加載,, 開機(jī)的時候順序加載Video4linux 和Spca5x x 模塊,, 加載成功后, 會在設(shè)備文件里看到/ dev/ video0 文件,, 說明USB 攝像頭驅(qū)動加載成功,, 就可以在終端對攝像頭操作進(jìn)行集視頻采集了。
2. 3 視頻編碼壓縮
視頻監(jiān)控系統(tǒng)的要求是要做到實時性,, 由于直接通過攝像頭采集到的原始圖像數(shù)據(jù)量大,, 而網(wǎng)絡(luò)帶寬有限,所以一定要經(jīng)過視頻編碼壓縮處理后才能進(jìn)行網(wǎng)絡(luò)傳輸,, 視頻壓縮也是該設(shè)計的核心內(nèi)容,。
目前, 在眾多視頻編碼算法中,, 影響最大并被廣泛應(yīng)用的國際標(biāo)準(zhǔn)是H26X 系列和MPEG 系列,。 MPEG系列的MPEG- 4 被ISO/ IEC 批準(zhǔn)為正式標(biāo)準(zhǔn),編號為ISO/ IEC14496, 它不僅針對一定比特率下的視頻,、音頻編碼,, 更加注重多媒體系統(tǒng)的交互性和靈活性。這個標(biāo)準(zhǔn)主要應(yīng)用于視頻電話,, 視頻電子郵件等,, 對傳輸速率要求較低, 在4 800~ *00 bit / s 之間,, 它能利用很窄的帶寬,, 通過幀重建技術(shù), 數(shù)據(jù)壓縮,, 用最少的數(shù)據(jù)獲得最佳的圖像質(zhì)量,。與MPEG1和MPEG2 相比, MPEG4 的特點(diǎn)是更適用于交互AV 服務(wù)以及遠(yuǎn)程監(jiān)控,。 MPEG- 4 是第一個使你由被動變?yōu)橹鲃樱?不再只是觀看,, 允許你加入其中, 即有交互性) 的動態(tài)圖像標(biāo)準(zhǔn),。
目前,, 基于MPEG- 4 標(biāo)準(zhǔn)的視頻編解碼器較多,比較常用的有微軟開發(fā)的msmpegv3, 以及開放源代碼的xvid 和ffmpeg . ffmpeg 是一套完整的錄制,、轉(zhuǎn)換,、流化音視頻的解決方案, 它的兼容性很好,,包含了業(yè)界領(lǐng)先的音視頻編解碼庫,,對嵌入式視頻監(jiān)控系統(tǒng)來說是個非常好的選擇,。 系統(tǒng)采用了FFMPEG 進(jìn)行視頻編碼、壓縮,。 編碼過程中主要使用FFMPEG 的libavformat 和libavcodec 這兩個函數(shù)庫,, 許多視頻文件格式一般只是定義如何將視頻流編碼進(jìn)一個獨(dú)立的文件, 而不明確指出其使用的編碼工具,, libavformat 庫的功能主要是分析視頻文件的語法格式, 并將它從流中分理出原始的視頻流,,libavcodec 庫的功能則是按照流格式處理原始的視頻流編碼,。 視頻編碼的流程如下, 首先打開文件if( av_open_input_file ( & pFormatCtx, f ilename,NU LL, 0, NU LL) ! = 0),。
然后讀取流文件的信息選擇對應(yīng)的編解碼器,,并打開對應(yīng)的編碼器, 在編碼端需要使用libavformat 庫函數(shù)來讀取數(shù)據(jù)包,, 濾除掉不需要的非視頻流數(shù)據(jù),, 然后循環(huán)調(diào)用libavcodec 庫函數(shù)GetNestFrame. 來處理每幀數(shù)據(jù)進(jìn)行編碼。 通過試驗一段40s 的視頻原文件,, 分辨率為800×600, 幀率為30, 大小為246 M, 壓縮到FLV 格式后,, 幀率為25, 分辨率為320×240, 碼率為500 K/ s, 壓縮后的大小不到2M, 壓縮比率為120: 1. 得到的視頻文件很清晰、流暢,, 分辨率,、幀率、時間碼率,、視頻格式都可以更改,,非常方便,可以達(dá)到實時視頻監(jiān)控的要求,。
2. 4 視頻數(shù)據(jù)流的網(wǎng)絡(luò)傳輸
利用攝像頭設(shè)備采集的視頻圖像經(jīng)ffmpeg 壓縮為MPEG- 4 視頻流以后,, 需經(jīng)過網(wǎng)絡(luò)傳輸。 視頻監(jiān)控系統(tǒng)的實時性要求較低的時延和較小的丟包率,, 由于TCP 的重發(fā)機(jī)制帶來較大的時延,, UDP 本身又不提供任何Qos 保證, 因此需要通過實時傳輸協(xié)議( RTP) 和實時控制協(xié)議( RTCP) 配合使用,, 提供數(shù)據(jù)實時傳輸和Qos 服務(wù)來滿足網(wǎng)絡(luò)視頻數(shù)據(jù)實時傳輸?shù)囊蟆?RTP 數(shù)據(jù)協(xié)議負(fù)責(zé)對流媒體數(shù)據(jù)進(jìn)行封裝及完成媒體流的實時傳輸,, 本身并不能為按序傳輸數(shù)據(jù)包提供可靠的保證, 也不提供流量控制和擁塞控制,??煽啃詡鬏斒怯膳c它配合使用的實時傳輸控制協(xié)議RTCP 來負(fù)責(zé)完成的。 RTP 是目前解決流媒體實時傳輸問題的最好辦法,, 系統(tǒng)中的視頻傳輸模塊采用了RTP 和RT CP 傳輸協(xié)議,。
RTP 協(xié)議為傳輸層協(xié)議,, RFC 在對RTP 的定義過程中并沒有對其底層協(xié)議進(jìn)行定制。 RT P 不提供網(wǎng)絡(luò)連接,, 在使用中通常需要與U DP 等其他協(xié)議配合,。 RTP 協(xié)議使用U DP 的端*并將RT P 執(zhí)行程序?qū)懺赨 DP 的上層, 它可以看成是傳輸層的上層子層,。 RTP 信息包中封裝了編碼后的視頻數(shù)據(jù),, 每個RTP 信息包被封裝在UDP 信息段中, 然后再封裝在IP 數(shù)據(jù)包中以備網(wǎng)絡(luò)傳輸,。 圖3 給出了RTP/RTCP 在協(xié)議棧中的位置,。
圖3 RT P/ RPTCP 在協(xié)議棧中的位置
在實際開發(fā)過程中, RTP 執(zhí)行程序被看做是應(yīng)用程序的一部分,,被集成到應(yīng)用程序當(dāng)中,。 在發(fā)送端, 首先創(chuàng)建RT P 會話,, 在創(chuàng)建RTP 信息包的應(yīng)用程序中寫入執(zhí)行RTP 協(xié)議的程序,, 然后應(yīng)用程序?qū)TP 信息包發(fā)送到UDP 的套接接口。 同樣,, 在接收端,,RTP 信息包通過UDP 套接接口輸入到應(yīng)用程序, 并將執(zhí)行RT P 協(xié)議的程序?qū)懭氲綇腞TP 信息包中抽出媒體數(shù)據(jù)的應(yīng)用程序,。
3 結(jié)論
文中設(shè)計了一種基于ARM9 架構(gòu)S3C2410 的嵌入式的視頻監(jiān)控系統(tǒng),。完成了視頻圖像的采集、編碼壓縮,、傳輸?shù)裙δ堋?它不僅具有抗干擾能力強(qiáng),, 適合遠(yuǎn)距離傳輸, 能夠加密,, 充分利用現(xiàn)有網(wǎng)絡(luò)資源等諸多優(yōu)點(diǎn),, 而且可移植性強(qiáng)、低功耗,、成本低,、易于安裝、使用方便和便于維護(hù)等優(yōu)點(diǎn),,并且采用軟件實現(xiàn)其主要功能,, 有利于系統(tǒng)的二次開發(fā)及升級, 其應(yīng)用范圍和前景將非常廣闊,。