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