吳雅琴+魯張依嬋+張紅娜+王威+朱劉凱+鄭天昊
摘 要:近年來,隨著移動(dòng)通信網(wǎng)絡(luò)的飛速發(fā)展,智能手機(jī)的功能日益強(qiáng)大,移動(dòng)視頻監(jiān)控為視頻監(jiān)控提供了一個(gè)重要的研究方向。將智能手機(jī)作為監(jiān)控客戶端,可為人們隨時(shí)隨地根據(jù)需求進(jìn)行實(shí)時(shí)監(jiān)控提供一個(gè)十分便捷的操作平臺。文中設(shè)計(jì)了一種以攝像頭為視頻采集端,以混合編碼技術(shù)為視頻壓縮編碼,以智能手機(jī)為移動(dòng)視頻客戶端的視頻監(jiān)控系統(tǒng),實(shí)現(xiàn)了監(jiān)控視頻的實(shí)時(shí)傳輸,并保證在客戶端流暢播放。
關(guān)鍵詞:Android平臺;混合編碼技術(shù);云存儲;移動(dòng)視頻監(jiān)控
中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:A 文章編號:2095-1302(2018)02-00-03
0 引 言
隨著互聯(lián)網(wǎng)技術(shù)的迅速發(fā)展,傳統(tǒng)的監(jiān)控系統(tǒng)已無法滿足人們對準(zhǔn)確性、適用性和方便性的要求。同時(shí),智能手機(jī)更新?lián)Q代,處理能力日益變強(qiáng),成為了人們?nèi)粘I钪胁豢苫蛉钡囊徊糠?。為滿足人們對監(jiān)控區(qū)域進(jìn)行隨時(shí)隨地實(shí)時(shí)監(jiān)控的需要,本文研究設(shè)計(jì)了一種智能手機(jī)視頻監(jiān)控系統(tǒng),將手機(jī)端作為視頻監(jiān)控客戶端,結(jié)合混合編碼技術(shù),實(shí)現(xiàn)了對監(jiān)控區(qū)域的實(shí)時(shí)監(jiān)控與監(jiān)控視頻的存儲。
1 移動(dòng)視頻監(jiān)控系統(tǒng)的設(shè)計(jì)
本文設(shè)計(jì)的視頻監(jiān)控系統(tǒng)、移動(dòng)視頻客戶端均基于Android系統(tǒng),有效結(jié)合了混合編碼技術(shù)與云存儲技術(shù)[1],可在客戶端隨時(shí)隨地觀看鎖定的攝像視頻,若視頻圖像發(fā)生異常,能在第一時(shí)間報(bào)告給鎖定的主人,主人可通過App遠(yuǎn)程控制攝像頭。
2 移動(dòng)視頻系統(tǒng)的關(guān)鍵技術(shù)
2.1 混合編碼技術(shù)
為了使高質(zhì)量通信成為可能,并盡可能減少數(shù)據(jù)損失,故使用主流的視頻編解碼標(biāo)準(zhǔn)H.264。視頻編碼的目的在于減少表示數(shù)據(jù)的比特。由于視頻圖像數(shù)據(jù)的相關(guān)性強(qiáng),在幀內(nèi)以及幀間具有大量空域和時(shí)域冗余信息,因此可以通過去除這些冗余信息來實(shí)現(xiàn)對視頻數(shù)據(jù)的壓縮[2]。其中,在數(shù)據(jù)壓縮方面最受歡迎的是基于統(tǒng)計(jì)特性的運(yùn)動(dòng)補(bǔ)償+變換編碼的混合編碼框架。國內(nèi)外通用的視頻壓縮標(biāo)準(zhǔn)均基于此框架,如廣泛使用的MPEG系列及H.26X系列標(biāo)準(zhǔn)。
MPEG-4不僅針對在一定比特率下的視頻編碼,更注重多媒體系統(tǒng)的交互性和靈活性。主要應(yīng)用于視頻電話、視像電子郵件等,其傳輸速度要求較低,為4 800~6 400 bit/s,分辨率為176×144。利用較窄的寬帶,通過幀重建技術(shù)壓縮和傳輸數(shù)據(jù),力求以最少的數(shù)據(jù)獲得最佳的圖像質(zhì)量[3]。
H.264技術(shù)具有比MPEG-4更為高效的編碼效率,比后者節(jié)約50%的碼率。可提供連續(xù)且流暢的高質(zhì)量圖像,并且在較低碼率的情況下依舊能提供較高質(zhì)量的視頻圖像[4]。
就單張圖像來說,MPEG-4對視頻數(shù)據(jù)的處理更優(yōu)秀;而就整體視頻傳輸來說,H.264更勝一籌。
預(yù)測編碼:建立一個(gè)模型,通過數(shù)據(jù)的相關(guān)性,利用之前的樣本對下一個(gè)新樣本值進(jìn)行預(yù)測,并將預(yù)測值和實(shí)際值的殘差值編碼傳輸?shù)浇邮斩耍瑫r(shí)在接收端建立一個(gè)相同的模型,按此模型進(jìn)行解碼操作。
運(yùn)動(dòng)估計(jì):從當(dāng)前幀中提取視頻序列的運(yùn)動(dòng)趨勢和走向過程。
一個(gè)完整的編碼過程基本可以概括為視頻源通過濾波器得到波形圖,量化得到初始的完整碼流,通過幀間、幀內(nèi)編碼和熵編碼技術(shù)得到最終壓縮后的碼流。
視頻編解碼部分采用JM編解碼器。在實(shí)驗(yàn)中,視頻源將收集到的視頻數(shù)據(jù)改變格式后輸入到JM編碼器的工作目錄中,在Visual Studio 2013平臺上運(yùn)行。通過編碼器采樣獲取預(yù)測數(shù)據(jù),并與實(shí)際值相減得到殘差,使用幀內(nèi)、幀間技術(shù)對殘差進(jìn)行量化操作/變換,對編碼語法元素進(jìn)行熵編碼,然后在編碼器的工作目錄下得到壓縮后的碼流。
當(dāng)碼流傳輸?shù)浇邮斩撕?,同樣?huì)被輸入到解碼器的工作目錄中,通過一系列相反的操作后得到壓縮前的視頻數(shù)據(jù)。
2.2 客戶端實(shí)現(xiàn)
2.2.1 平臺選擇和開發(fā)語言
服務(wù)器端采用Windows操作系統(tǒng)與Java語言;客戶端包括Android操作系統(tǒng),Java語言,Android編程。
Java是一門面向?qū)ο缶幊痰恼Z言,較好地實(shí)現(xiàn)了面向?qū)ο缶幊汤碚?,同時(shí)也是一種不受限于特定平臺的語言,具有可移植性[5]。此外,Java還具有穩(wěn)健、安全、高性能等特征,是一種功能豐富的開發(fā)語言。
2.2.2 客戶端UI設(shè)計(jì)
用戶界面(UI)是系統(tǒng)和用戶之間進(jìn)行交互與信息交換的重要媒介,使得用戶能夠方便、有效地操作硬件以達(dá)成雙向交互,完成工作。
本文采用Android Studio進(jìn)行Android編程。Android Studio具有非常豐富的可視化編程功能,可以在編程的同時(shí)看到其被應(yīng)用在不同尺寸屏幕中的情況。Android操作系統(tǒng)的用戶界面都以View與ViewGroup為基礎(chǔ)。View是用戶界面的基本組成單元,ViewGroup是其子類, ViewGroup的子類稱為“Layout(布局)”。View與ViewGroup在布局中的層次結(jié)構(gòu)如圖1所示。
Android編程中有多種布局方式,分別為線性布局(LinerLayout),相對布局(RelativeLayout),幀布局(FrameLayout),絕對布局(AbsoluteLayout)等。本文編程主要用到線性布局(LinearLayout),該布局有horizontal和vertical兩個(gè)方向。Android Studio在創(chuàng)建布局方式上分為兩種:其一,在XML配置文件中聲明布局方式;其二,在應(yīng)用程序中直接通過代碼實(shí)例化布局及其組件。
2.2.3 視頻的播放顯示
對于獲取的視頻文件首先要經(jīng)過解碼,之后再通過Android客戶端播放。Android操作系統(tǒng)提供的VideoView和MediaPlayer可播放視頻[6]。
MediaPlayer在播放視頻時(shí)需要自己準(zhǔn)備顯示視頻的組件、播放時(shí)的控制按鈕等。首先創(chuàng)建一個(gè)MediaPlayer對象,再通過setDataSource()設(shè)置數(shù)據(jù)源,可以是文件、文件路徑或URL。調(diào)用MediaPlayer.setDisplay(holder)設(shè)置 SurfaceHolder,surfaceHolder可以通過surfaceview的getHolder()獲得,調(diào)用MediaPlayer.prepare()準(zhǔn)備、調(diào)用MediaPlayer.start()播放視頻。endprint
VideoView是Android提供的較為好用的播放視頻組件,不僅內(nèi)建了顯示視頻的功能,還可以直接加入MediaController對象作為播放控制接口。VideoView提供的setVideoURI()可以設(shè)置視頻的URI,start()可以開始播放視頻,pause()可以暫停播放視頻,stopPlayback()可以停止播放視頻。VideoView視頻播放框架如圖2所示。
從圖2可以看出,VideoView組件進(jìn)行視頻播放的過程可以分為三步:
(1)Java Framework層。應(yīng)用程序進(jìn)入VideoView,再經(jīng)過Surface;
(2)Native Framework層。先到SurfaceFlinger,然后借助PVPlayer到OverlayHal;
(3)Driver層。利用Main framebuffer和Video Plane進(jìn)行播放。
2.3 視頻數(shù)據(jù)的存儲
在視頻監(jiān)控系統(tǒng)中,對已經(jīng)采集的視頻數(shù)據(jù)進(jìn)行妥善存儲,便于之后回調(diào)查看。目前可行的存儲方式有SD卡存儲與云存儲。云存儲是一個(gè)以數(shù)據(jù)和管理為核心的云計(jì)算系統(tǒng)[2]。相對于傳統(tǒng)的SD卡存儲,云存儲的優(yōu)勢較為明顯,隨著系統(tǒng)數(shù)據(jù)量的增加,沒有性能上的瓶頸。使用ownCloud可以在私有服務(wù)器上搭建私有云存儲服務(wù)器節(jié)點(diǎn),由中心管理服務(wù)器信息管理模塊統(tǒng)一管理[7],以優(yōu)化整個(gè)服務(wù)器系統(tǒng)的運(yùn)作。
使用ownCloud時(shí),需在云存儲服務(wù)器節(jié)點(diǎn)上創(chuàng)建并配置Apache環(huán)境、PHP環(huán)境、MySQL環(huán)境等。由于ownCloud通過抽象層訪問數(shù)據(jù)庫,因此支持Oracle、MySQL、SQLite等數(shù)據(jù)庫。服務(wù)子節(jié)點(diǎn)環(huán)境搭建完成后,可以選擇連接到本地存儲作為存儲服務(wù)器提供點(diǎn),在修改了ownCloud的存儲路徑配置后,ownCloud的存儲文件動(dòng)作就會(huì)立刻發(fā)生在該存儲器上。使用ownCloud建立私有服務(wù)器可以更好地保證數(shù)據(jù)的安全性。
2.4 軟硬件連接
客戶端分為安卓端和iOS端,根據(jù)對場景的認(rèn)知,對安卓App客戶端進(jìn)行了深層次的研究。安卓系統(tǒng)采用軟件棧形式管理系統(tǒng)的功能層次結(jié)構(gòu),主要分為5層,由高到低分別是應(yīng)用程序?qū)?、?yīng)用程序架構(gòu)層、C++/C本地庫、Android運(yùn)行時(shí)庫、Linux內(nèi)核驅(qū)動(dòng)層。
安卓客戶端開發(fā)四大組件的運(yùn)用貫穿整個(gè)應(yīng)用軟件的開發(fā)過程,其以組件的形式封裝各抽象功能模塊,使得應(yīng)用與系統(tǒng)中其余軟件的書庫交互變得更為敏捷。
基于海思Hi3518E能夠?qū)崿F(xiàn)多種碼流和多選分辨率及JPEG圖片抓拍,支持圖像3D去噪、圖像增強(qiáng)、邊緣增強(qiáng)等預(yù)處理功能,利于監(jiān)控系統(tǒng)的運(yùn)行。
本文針對Windows系統(tǒng)進(jìn)行開發(fā),依賴于其兩大功能:一是完成與硬件的交互;二是為在微處理器上運(yùn)行的應(yīng)用程序提供可執(zhí)行的環(huán)境。著重進(jìn)行設(shè)備驅(qū)動(dòng)程序的封裝對攝像頭端硬件資源的訪問。針對客戶端軟件進(jìn)行的需求分析,大致有以下三個(gè)步驟:
(1)網(wǎng)絡(luò)攝像頭要有一個(gè)設(shè)備的入網(wǎng)操作,并且該操作簡單易行,穩(wěn)定可靠。
(2)連接設(shè)備后,需要獲取音頻、視頻數(shù)據(jù)。此步驟是對圖像、網(wǎng)絡(luò)傳輸、顯示等技術(shù)提出的一項(xiàng)挑戰(zhàn)。
(3)將移動(dòng)智能手機(jī)作為移動(dòng)客戶端軟件的載體。
使用由含有多幀環(huán)形緩存結(jié)構(gòu)、DMA控制器、異步FIFO及從控制接口的軟硬件接口來連接軟件App和硬件攝像頭,實(shí)現(xiàn)了從原始同步視頻信號輸入緩存到內(nèi)存中再由VGA接口顯示的預(yù)覽鏈路,完成了視頻壓縮鏈路,實(shí)現(xiàn)了從原始同步視頻轉(zhuǎn)換成YUV三通道分量[2]。
3 結(jié) 語
本系統(tǒng)使用攝像頭作為移動(dòng)視頻采集端,采用混合編碼技術(shù),并以智能手機(jī)作為移動(dòng)視頻客戶端進(jìn)行遠(yuǎn)程視頻實(shí)時(shí)監(jiān)控。在4G/5G時(shí)代以及智能手機(jī)不斷更新?lián)Q代的情況下,本監(jiān)控系統(tǒng)將會(huì)擁有廣闊的應(yīng)用前景[8]。
參考文獻(xiàn)
[1] 陳通.云存儲手機(jī)視頻監(jiān)控系統(tǒng)設(shè)計(jì)[D].北京:北京工業(yè)大學(xué),2016.
[2] 賈克斌,劉鵬宇,呂卓逸,等.基于H.264的視頻編碼處理技術(shù)與應(yīng)用[M].北京:科學(xué)出版社,2013.
[3] 陳靖,劉京,曹喜信.深入理解視頻編解碼技術(shù)——基于H.264標(biāo)準(zhǔn)及參考模型[M].中國.北京航空航天大學(xué)出版社,2012.
[4] 柳春,廉東本.H.264編解碼算法在視頻會(huì)議中的應(yīng)用[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2015,24(4):144-147.
[5] 常志沛.基于Android的智能手機(jī)視頻監(jiān)控系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].大連:大連海事大學(xué),2011.
[6] 楊飛.基于Android的家用移動(dòng)視頻監(jiān)控系統(tǒng)的研究與實(shí)現(xiàn)[D].廣州:廣東工業(yè)大學(xué),2013.
[7] 林炳炎,鄭茜穎,程樹英.基于Android的智能視頻監(jiān)控系統(tǒng)[J].電視技術(shù),2017,41(4): 78-83.
[8] 孟慶博.基于Android平臺視頻實(shí)時(shí)監(jiān)控系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].長春:吉林大學(xué),2016.
[9] 田甜.基于云存儲的Android手機(jī)視頻監(jiān)控系統(tǒng)應(yīng)用設(shè)計(jì)[D].北京:北京工業(yè)大學(xué),2015.
[10] 趙云洋.軟硬件接口設(shè)計(jì)實(shí)現(xiàn)及其在視頻系統(tǒng)中應(yīng)用[D].西安:西安電子科技大學(xué),2015.endprint