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