于劍鋒(東莞職業(yè)技術(shù)學(xué)院,廣東 東莞 523808)
?
基于ARM的視頻記錄系統(tǒng)的設(shè)計(jì)
于劍鋒
(東莞職業(yè)技術(shù)學(xué)院,廣東東莞523808)
摘要:本文提出了一種基于ARM9和嵌入式Linux的視頻記錄系統(tǒng)的設(shè)計(jì)方案,文中對(duì)視頻循環(huán)記錄系統(tǒng)的設(shè)計(jì)進(jìn)行了說明,視頻記錄系統(tǒng)可以有效的完成自動(dòng)的循環(huán)記錄,不存在丟幀情況,可實(shí)現(xiàn)全天候的對(duì)監(jiān)控現(xiàn)場(chǎng)進(jìn)行無縫監(jiān)控。
關(guān)鍵詞:ARM;視頻記錄;系統(tǒng)設(shè)計(jì)
基于嵌入式的視頻記錄系統(tǒng)相比傳統(tǒng)的模擬視頻記錄系統(tǒng),具有體積小、成本低、穩(wěn)定性高、實(shí)時(shí)性好、安裝簡(jiǎn)便、低功耗等優(yōu)點(diǎn)。而如今我國(guó)公共設(shè)施建設(shè)如火如荼,視頻監(jiān)控的市場(chǎng)很大。嵌入式技術(shù)的迅速發(fā)展使得視頻記錄功能在嵌入式產(chǎn)品中的實(shí)現(xiàn)變得可能,不管是公共安防還是各種生產(chǎn)制造環(huán)節(jié)的安全監(jiān)控,或是交通監(jiān)控。具有廣闊的發(fā)展前景。
1.1視頻記錄系統(tǒng)硬件結(jié)構(gòu)
基于ARM的視頻記錄系統(tǒng),相對(duì)其他實(shí)現(xiàn)方式,具有不少的優(yōu)點(diǎn),硬件方面構(gòu)建簡(jiǎn)單、成本低廉,功耗不大,在成本和功耗有求的場(chǎng)合下更加實(shí)用。本系統(tǒng)的在硬件方面主要以嵌入式主控芯片為核心,在其外圍增加了視頻記錄系統(tǒng)所必不可少的視頻采集單元和存儲(chǔ)單元,構(gòu)成了基于ARM的視頻記錄系統(tǒng)主要結(jié)構(gòu)。本系統(tǒng)開發(fā)平臺(tái)選用了天嵌科技的開發(fā)板TQ2410,該開發(fā)板中的主控制芯片采用的是三星公司的ARM9 S3C2410,板上有留有充分的外接口符合本視頻記錄系統(tǒng)的要求,可以外接USB攝像頭作為視頻采集單元,使用方便, 本系統(tǒng)采用16G Kingston SD Class9的 SD卡存儲(chǔ)器及其接口電路作為視頻記錄系統(tǒng)的存儲(chǔ)單元。
1.2視頻記錄系統(tǒng)軟件平臺(tái)
嵌入式系統(tǒng)的軟件開發(fā)采用交叉編譯調(diào)試的方式,一般過程就是,先在宿主機(jī)上建立嵌入式系統(tǒng)開發(fā)環(huán)境,采用交叉編譯器把Bootloader編譯完成,燒寫編譯后的映像文件到嵌入式設(shè)備;然后在依據(jù)嵌入式控制系統(tǒng)的控制需求,宿主機(jī)上進(jìn)行嵌入式Linux內(nèi)核的編譯和剪裁,成功之后,將完成編譯修剪的內(nèi)核映像文件燒寫到開發(fā)板的存儲(chǔ)器當(dāng)中;最后對(duì)根文件系統(tǒng)進(jìn)行編譯,再一次燒寫編譯后根文件系統(tǒng)映像文件到開發(fā)板。本系統(tǒng)的嵌入式Linux操作系統(tǒng)通過在外儲(chǔ)單元SD卡中燒寫superboot,之后把引導(dǎo)程序Uboot移植到Nand Flash中,然后移植版本內(nèi)核,本系統(tǒng)采用的是Linux 2.6.38。Linux內(nèi)核移植的過程并不復(fù)雜,最主要的目的就是針對(duì)嵌入式平臺(tái)上的的特定的硬件和實(shí)際的應(yīng)用需求,合理地修改linux內(nèi)核。如視頻系統(tǒng)的視頻采集是采用的USB攝像頭,以及視頻存儲(chǔ)是采用SD 存儲(chǔ)卡,要用到串口、網(wǎng)絡(luò)應(yīng)用調(diào)試程序,所以在移植內(nèi)核時(shí)需要對(duì)USB設(shè)備、SD卡等設(shè)備驅(qū)動(dòng)進(jìn)行配置修改。根文件系統(tǒng)里存放了嵌入式操作系統(tǒng)所必需的多種文件、腳本、工具軟件。其移植內(nèi)容包括;根文件系統(tǒng)目錄的建立、各個(gè)子目錄下文件的添加、文件系統(tǒng)映像的制作。
本系統(tǒng)的循環(huán)視頻記錄功能是通過多文件存儲(chǔ)的方式實(shí)現(xiàn)的,也就是先預(yù)定存儲(chǔ)視頻文件的大小,然后每記錄一幀視頻后就對(duì)視頻文件大小檢測(cè)一次,如果視頻文件大小等于預(yù)定文件大小時(shí),就重新建立另一個(gè)視頻文件,就這樣視頻信息通過多個(gè)視頻文件持續(xù)記錄下來。一直到所有的視頻文件即將存滿SD時(shí),就開始查詢記錄時(shí)間最早的視頻文件,找到后,覆蓋處理該視頻文件,以新的視頻文件名稱來命名,視頻的循環(huán)記錄就是這樣實(shí)現(xiàn)的。
循環(huán)視頻記錄系統(tǒng)的軟件設(shè)計(jì),大致分三個(gè)部分。
(1)視頻采集。通過攝像頭對(duì)視頻進(jìn)行采集,才能獲得視頻文件。采集視頻前,要先配置嵌入式Linux內(nèi)核,要在內(nèi)核中編譯USB設(shè)備驅(qū)動(dòng)和V4L2驅(qū)動(dòng)。包括以下步驟:
1)開啟USB攝像頭;2)設(shè)置攝像頭屬性(音頻或視頻輸入和視頻制式設(shè)置等);3)設(shè)置視頻數(shù)據(jù)格式;4)實(shí)現(xiàn)視頻輸入及輸出;5)循環(huán)錄制視頻;6)關(guān)閉USB攝像頭。
視頻采集流程如圖1所示。
(2)視頻封裝。首先建立一個(gè)后綴名.AVI的文件,為方便視頻文件的查詢和檢索,將視頻文件命名為“年/月/-時(shí)間.avi”。其次設(shè)置“年/月/-時(shí)間. AVI ”文件的信息,設(shè)置信息內(nèi)容包括視頻圖像寬、高、視頻壓縮方式、視頻幀率等信息。然后將采集到的視頻流數(shù)據(jù)寫入到“年/月/-時(shí)間. AVI ”文件中,每次寫一幀。最后不斷刷新文件信息,每寫完一幀,更新文件信息,包括文件長(zhǎng)度、位置等信息,完成AVI視頻文件的封裝。
(3)循環(huán)記錄。本系統(tǒng)的循環(huán)視頻記錄功能是通過多文件存儲(chǔ)的方式實(shí)現(xiàn)的,也就是先預(yù)定存儲(chǔ)視頻文件的大小,然后每記錄一幀視頻后就對(duì)視頻文件大小檢測(cè)一次,如果視頻文件大小超過預(yù)定文件大小時(shí),就重新建立另一個(gè)視頻文件,就這樣視頻信息通過多個(gè)視頻文件持續(xù)記錄下來。循環(huán)記錄程序流程如圖2所示。
本系統(tǒng)實(shí)現(xiàn)的循環(huán)視頻記錄系統(tǒng)可用于各行各業(yè)無人值守的場(chǎng)合,且能夠?qū)崿F(xiàn)循環(huán)記錄視頻,減少人為干預(yù)。系統(tǒng)的設(shè)計(jì)從實(shí)際出發(fā),以實(shí)現(xiàn)循環(huán)視頻記錄為目的,主要實(shí)現(xiàn)視頻的采集、視頻封裝、視頻的循環(huán)記錄功能,該監(jiān)控系統(tǒng)具有較高的穩(wěn)定性和可靠性,節(jié)省人力同時(shí)又能確保安全,因此具有很廣闊的應(yīng)用前景。
參考文獻(xiàn):
[1]林北洪.基于ARM的循環(huán)視頻記錄器設(shè)計(jì)[D].電子科技大學(xué),2013(05). [2]于劍鋒.嵌入式系統(tǒng)軟件開發(fā)環(huán)境的建立[J].機(jī)電產(chǎn)品開發(fā)與創(chuàng)新,2010(11).
DOI:10.16640/j.cnki.37-1222/t.2016.11.236