電梯監(jiān)控系統(tǒng)中的視頻編解碼關(guān)鍵技術(shù)
作者/ 茅劍1,2 劉晉明1,2 張杰敏1 1.集美大學(xué) 計(jì)算機(jī)工程學(xué)院(福建 廈門 361021) 2.國防科學(xué)技術(shù)大學(xué) 電子科學(xué)與工程學(xué)院(湖南 長沙 410073)
本文引用地址:http://cafeforensic.com/article/201611/340853.htm摘要:本文針對(duì)電梯運(yùn)行環(huán)境,設(shè)計(jì)了視頻監(jiān)控和廣告播放一體化嵌入式系統(tǒng),實(shí)現(xiàn)了電梯監(jiān)控、視頻播放、網(wǎng)絡(luò)傳輸?shù)裙δ?。為降低產(chǎn)品化后的硬件成本和體積,系統(tǒng)基于S5PV210嵌入式芯片開發(fā)以單CPU結(jié)構(gòu)實(shí)現(xiàn)所有應(yīng)用功能。為保證系統(tǒng)的運(yùn)行效率,針對(duì)視頻的采集、傳輸和播放,設(shè)計(jì)實(shí)現(xiàn)了硬件編解碼技術(shù)。實(shí)驗(yàn)證明,利用該視頻編解碼技術(shù),可使系統(tǒng)各功能模塊高效并行工作,從而大大降低系統(tǒng)資源占用率,提高產(chǎn)品的市場(chǎng)競爭力。
引言
近年來,我國電梯安全事故頻發(fā),暴露出電梯運(yùn)行維護(hù)中存在著諸多問題。如何從技術(shù)層面消除電梯運(yùn)行的安全隱患,保障電梯的正常運(yùn)行及乘坐人員的人身安全,是相關(guān)工程技術(shù)人員急需解決的問題。此外,由于電梯通常安裝于公共場(chǎng)所,乘客具有相當(dāng)?shù)牧鲃?dòng)性,所以電梯也成為一個(gè)重要的廣告投放媒介。面對(duì)傳統(tǒng)紙質(zhì)廣告投放更新效率低下的現(xiàn)狀,利用信息化技術(shù)提高電梯廣告的投放效率和效果,也是電梯廣告業(yè)界的迫切需求。基于上述討論,本文針對(duì)轎廂式電梯設(shè)計(jì)開發(fā)了一套嵌入式電梯遠(yuǎn)程安全監(jiān)控及視頻廣告系統(tǒng)[1-2]。該系統(tǒng)基于三星公司的S5pv210芯片開發(fā),實(shí)現(xiàn)了對(duì)電梯運(yùn)行狀態(tài)和轎廂進(jìn)出人員的實(shí)時(shí)監(jiān)控,以及針對(duì)電梯用戶的視頻廣告播放。
1 系統(tǒng)設(shè)計(jì)
嵌入式電梯遠(yuǎn)程安全監(jiān)控及視頻廣告系統(tǒng)的整體設(shè)計(jì)如圖1所示。系統(tǒng)分為嵌入式前端模塊和PC后端模塊兩大部分。嵌入式模塊部署在電梯轎廂內(nèi),PC模塊安放在樓宇的主控機(jī)房,二者通過IP網(wǎng)絡(luò)互聯(lián),實(shí)現(xiàn)雙向?qū)崟r(shí)訪問。PC模塊和嵌入式模塊之間基于一對(duì)多關(guān)系設(shè)計(jì),在主控機(jī)房的工作人員可以通過PC模塊,同時(shí)訪問控制分布在不同電梯內(nèi)的多個(gè)嵌入式模塊。
1.1 嵌入式模塊設(shè)計(jì)
嵌入式模塊以S5pv210芯片為核心設(shè)計(jì)開發(fā),移植Linux嵌入式操作系統(tǒng)內(nèi)核,通過多種接口和外設(shè)通訊,實(shí)現(xiàn)對(duì)電梯狀態(tài)的監(jiān)控、轎廂內(nèi)監(jiān)控視頻采集處理、廣告播放等功能。S5pv210芯片支持多接口連接,并內(nèi)置多媒體處理內(nèi)核,可支持?jǐn)z像頭和多種視頻格式的硬件編解碼[3]。嵌入式模塊各功能簡要介紹如下:
1.1.1 視頻監(jiān)控
視頻監(jiān)控子模塊通過USB接口外接攝像頭實(shí)時(shí)采集電梯轎廂內(nèi)視頻場(chǎng)景,記錄電梯運(yùn)行和人員進(jìn)出的視頻圖像信息[4]。在該子模塊中,設(shè)計(jì)實(shí)現(xiàn)了硬件編碼技術(shù),將監(jiān)控視頻以H.264格式進(jìn)行實(shí)時(shí)壓縮處理,以提高視頻的處理、傳輸和存儲(chǔ)效率。視頻根據(jù)記錄時(shí)間分割,實(shí)時(shí)存儲(chǔ)到本地SD卡,并依據(jù)控制指令,通過IP網(wǎng)絡(luò)上傳至PC服務(wù)器。
1.1.2 運(yùn)行狀態(tài)監(jiān)控
狀態(tài)監(jiān)控子模塊通過RS232和RS485總線連接電梯控制箱,實(shí)時(shí)采集電梯運(yùn)行狀態(tài)數(shù)據(jù),并以規(guī)定編碼格式實(shí)時(shí)反饋至PC服務(wù)器。電梯運(yùn)行如有異常,控制室內(nèi)工作人員可立即獲取警告信息。
1.1.3 廣告播放
廣告播放子模塊通過HDMI接口外接LCD顯示屏,根據(jù)客戶要求滾動(dòng)播放廣告視頻[5-6]。該子模塊選擇Mplayer視頻播放器,并用設(shè)計(jì)實(shí)現(xiàn)的硬件解碼算法更新Mplayer源碼,以改善視頻播放效率。
1.1.4 網(wǎng)絡(luò)通信
考慮到電梯內(nèi)外的施工環(huán)境復(fù)雜,本系統(tǒng)在嵌入式核心板上集成了有線和無線兩種IP網(wǎng)絡(luò)接口。嵌入式模塊可以通過有線和無線兩種連接方式和PC模塊保持通信。
1.2 PC模塊設(shè)計(jì)
PC模塊部署在PC服務(wù)器上,提供電梯監(jiān)控系統(tǒng)相關(guān)的Web服務(wù)和數(shù)據(jù)庫服務(wù),實(shí)現(xiàn)用戶可視化交互訪問[7-8]。PC模塊通過IP網(wǎng)絡(luò)和各嵌入式模塊保持實(shí)時(shí)通信,實(shí)現(xiàn)對(duì)嵌入式模塊的遠(yuǎn)程訪問和控制。由于嵌入式模塊采用SD卡作為存儲(chǔ)設(shè)備,存儲(chǔ)容量有限,而監(jiān)控視頻需要長期保存,所以大量的視頻數(shù)據(jù)均須在PC服務(wù)器上備份存儲(chǔ)。視頻根據(jù)錄制時(shí)間分割存儲(chǔ),可隨時(shí)調(diào)取查看。
2 視頻監(jiān)控中的硬件編碼技術(shù)
本文中所設(shè)計(jì)的嵌入式電梯遠(yuǎn)程安全監(jiān)控及視頻廣告系統(tǒng)是市場(chǎng)化的升級(jí)換代產(chǎn)品。相對(duì)于前代產(chǎn)品,本系統(tǒng)的優(yōu)點(diǎn)在于采用了嵌入式單CPU設(shè)計(jì),大大降低產(chǎn)品的生產(chǎn)和部署成本。在降低硬件成本的同時(shí),還要保證系統(tǒng)的運(yùn)行效率,就需要良好的視頻編解碼性能支持,因此,嵌入式硬件編解碼技術(shù)成為系統(tǒng)開發(fā)的關(guān)鍵。
2.1 H.264視頻格式
為了獲取更高的圖像壓縮比,從而提高視頻的遠(yuǎn)程傳輸效率和本地存儲(chǔ)效率,系統(tǒng)采用H.264作為電梯監(jiān)控視頻格式[9]。實(shí)時(shí)監(jiān)控視頻輸出為CIF格式,分辨率352×288,幀率為25幀/秒,可調(diào)節(jié)碼流。
由于系統(tǒng)要求對(duì)目標(biāo)進(jìn)行每天24小時(shí)不間斷監(jiān)控,并能追溯過去的視頻記錄,這就對(duì)視頻的存儲(chǔ)時(shí)長提出了較高的要求。在嵌入式設(shè)備存儲(chǔ)容量一定的情況下,提高視頻存儲(chǔ)的壓縮比就成為最好的選擇。此外,系統(tǒng)需要實(shí)時(shí)傳輸監(jiān)控畫面至后臺(tái)監(jiān)控室,在網(wǎng)絡(luò)帶寬一定的前提下,也必須通過提高視頻壓縮比來保障傳輸效率。因此,本系統(tǒng)采用高壓縮比的YUV420視頻格式,如圖2所示。
YUV420格式對(duì)視頻的亮度分量Y和色度分量U、V的采樣比為4:1:1。相對(duì)于亮度分量Y而言,色度分量U、V使用隔行采樣加間隔采樣的方式。也就是說,對(duì)于一幀畫面,在存儲(chǔ)每個(gè)像素的亮度值的同時(shí),只留下奇數(shù)行中奇數(shù)列的色度值。
例如,對(duì)一個(gè)分辨率為W×H的視頻幀,采用YUV420格式進(jìn)行采樣。幀中每個(gè)像素的亮度分量都被保存下來,即保存了W×H個(gè)Y值;但是只有四分之一像素的色度分量留下來,即保存了W×H/4個(gè)U和V值。定義亮度分量Y(m,n),m和n表示對(duì)應(yīng)像素在圖像中所處的位置,m取值范圍在0到H-1之間,n的取值范圍在0到W-1之間。那么色度分量U(k)、V(k)所對(duì)應(yīng)的像素位置關(guān)系為:
(1)
其中k的取值范圍在0至H×W/4-1之間。
存儲(chǔ)YUV420格式視頻時(shí),有兩種存儲(chǔ)格式:YV12和NV12,如圖3和圖4所示。兩種存儲(chǔ)格式占用的存儲(chǔ)空間一樣,存儲(chǔ)過程中均將亮度分量和色度分量分離。對(duì)于一幀視頻而言,二者都是先存儲(chǔ)所有像素的Y分量數(shù)值,然后存儲(chǔ)U、V分量數(shù)值。區(qū)別在于,YV12格式將U、V分塊存儲(chǔ),先存儲(chǔ)所有V分量數(shù)值,然后是U分量;而NV12格式則是將U、V分量交替存儲(chǔ),一個(gè)像素的U分量數(shù)值之后是該像素的V分量數(shù)值。
由于攝像頭在采集監(jiān)控視頻時(shí)輸出的視頻格式是YV12,而S5pv210芯片執(zhí)行硬件編碼時(shí)所需要的是NV12格式輸入,所以在硬件編碼之前需要進(jìn)行格式轉(zhuǎn)換,將YV12格式的視頻數(shù)據(jù)幀轉(zhuǎn)為NV12格式。
2.2 基于S5pv210的硬件編碼
本文的硬件編碼主要是利用S5pv210芯片的多格式編解碼技術(shù)(MFC)實(shí)現(xiàn)[10],視頻硬件編碼的流程如圖5所示。系統(tǒng)以視頻幀為單位進(jìn)行硬件編碼,開啟S5pv210芯片的MFC之后,將視頻數(shù)據(jù)幀順序讀入。在讀入第一幀后,需要對(duì)編碼參數(shù)進(jìn)行初始化,初始化參數(shù)主要包括視頻尺寸和視頻質(zhì)量,其中的視頻質(zhì)量參數(shù)“FrameQp”賦值范圍在0到51之間。本系統(tǒng)將視頻質(zhì)量參數(shù)置為30,經(jīng)過實(shí)驗(yàn)測(cè)試,視頻播放效果較好。初始化過程中,還需從首幀中獲取視頻文件頭信息,并將其寫入H.264文件。初始化后,其余視頻幀依次輸入緩存,進(jìn)行YV12至NV12的格式轉(zhuǎn)換之后,由芯片執(zhí)行硬件編碼。相應(yīng)的編碼結(jié)果可以從輸出緩沖中依次獲得,并寫入H.264文件。通過循環(huán)執(zhí)行幀編碼指令,就可完成整個(gè)視頻的硬件編碼。
為了保證監(jiān)控視頻的實(shí)時(shí)傳輸和存儲(chǔ),視頻的編碼和傳輸幾乎是同時(shí)進(jìn)行的。當(dāng)某一幀視頻的編碼完成之后,編碼后的數(shù)據(jù)幀除了存入本地的H.264文件之外,還通過網(wǎng)絡(luò)服務(wù)程序發(fā)送至遠(yuǎn)程PC服務(wù)器。PC服務(wù)器根據(jù)時(shí)間戳,就可以將接收的數(shù)據(jù)幀重建成視頻文件,也能實(shí)時(shí)播放監(jiān)控視頻。經(jīng)過測(cè)試,硬件編碼的高效率執(zhí)行很好地保障了視頻監(jiān)控的實(shí)時(shí)性,同時(shí)編碼的高壓縮率也降低了系統(tǒng)的存儲(chǔ)成本。
3 視頻播放中的硬件解碼技術(shù)
為了在系統(tǒng)資源有限的嵌入式設(shè)備上同時(shí)實(shí)現(xiàn)視頻采集、傳輸和播放,必須對(duì)視頻播放中解碼技術(shù)進(jìn)行優(yōu)化[11-13]。通過解碼優(yōu)化,僅使用一個(gè)嵌入式芯片,就能在執(zhí)行監(jiān)控視頻采集和傳輸?shù)耐瑫r(shí),保證廣告視頻的圖像清晰、播放流暢。
3.1 Mplayer
本文選用Mplayer作為系統(tǒng)的嵌入式多媒體播放器。Mplayer功能強(qiáng)大,可運(yùn)行在不同體系結(jié)構(gòu)上,能播放多種格式的視頻文件,并支持多種視頻圖像輸出驅(qū)動(dòng)。由于Mplayer是一款完全開源的播放軟件,因此可以很方便地根據(jù)需要修改其源碼,實(shí)現(xiàn)視頻解碼器的優(yōu)化。
Mplayer采用音視頻數(shù)據(jù)分流的方式,對(duì)視頻文件進(jìn)行處理。Mplayer讀入視頻文件后,通過解析將文件分流為視頻和音頻兩部分;然后根據(jù)文件格式選擇不同的解碼器,分別進(jìn)行音、視頻解碼;最終將解碼后的音、視頻同步輸出[14-16]。本文只關(guān)注分流后的視頻流數(shù)據(jù),并基于系統(tǒng)芯片重新設(shè)計(jì)Mplayer的視頻解碼器,從而改善視頻解碼性能,優(yōu)化視頻播放。
3.2 基于S5pv210的硬件解碼技術(shù)
與硬件編碼方法類似,硬件解碼也是基于S5pv210芯片的MFC設(shè)計(jì)實(shí)現(xiàn)的。解碼過程同樣以幀為單位進(jìn)行,因此,在解碼之前需要初始化幀參數(shù),開辟存儲(chǔ)空間。視頻數(shù)據(jù)從視頻文件中讀取之后,被拷貝到S5pv210的解碼緩沖區(qū),經(jīng)過MFC解碼后,將己解碼的視頻數(shù)據(jù)放入輸出緩沖區(qū)中,最后驅(qū)動(dòng)設(shè)備將視頻顯示到LCD屏幕上。視頻硬件解碼的流程如圖6所示。
硬件解碼實(shí)現(xiàn)之后,還需將其封裝為Mplayer可調(diào)用的解碼器。完成解碼器的植入,必須對(duì)Mplayer的工作原理和源碼組織有著深入理解。向Mplayer植入編碼器的關(guān)鍵步驟如下:
3.2.1 添加程序文件
首先,將實(shí)現(xiàn)的硬件解碼器保存為.C文件,添加至libmpcodec 目錄下。在這個(gè)源文件中需要實(shí)現(xiàn)兩個(gè)關(guān)鍵的結(jié)構(gòu)體: vd_info_t和vd_functions_t。vd_info_t定義了解碼器的相關(guān)信息,包含五個(gè)字符串參數(shù),都必須填寫。其中的第二個(gè)參數(shù)short name為定義的編碼器名,需要和配置文件codec_conf中的driver保持一致。 vd_functions_t定義了與解碼有關(guān)的函數(shù),通過info 的定義以及 LIBVD_EXTERN 的調(diào)用使解碼器的vd_functions_t結(jié)構(gòu)體在Mplaer全局生效。通過上述過程,從而完成 S5pv210硬解碼實(shí)現(xiàn)和 Mplayer 調(diào)用接口之間的銜接定義。
本文來源于中國科技期刊《電子產(chǎn)品世界》2016年第11期第35頁,歡迎您寫論文時(shí)引用,并注明出處。
評(píng)論