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