国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Android平臺的視頻監(jiān)控客戶端的設(shè)計與實現(xiàn)

2015-08-10 10:30盛平韓偉
電子設(shè)計工程 2015年22期
關(guān)鍵詞:視頻流預覽列表

盛平,韓偉

(江蘇大學 江蘇 鎮(zhèn)江 212013)

無線網(wǎng)絡(luò)攝像機是wireless ip network camera的縮寫,是基于TCP/IP協(xié)議的網(wǎng)絡(luò)攝像機,主要組成結(jié)構(gòu)是攝像頭,視頻服務器和無線wifi模塊,使用linux操作系統(tǒng),支持H264,MPEG4編碼,支持RTSP視頻流傳輸協(xié)議,可以通過PC客戶端或者Android/IOS終端進行實時視頻預覽和觀看錄像回放;網(wǎng)絡(luò)攝像機實際上是一臺視頻服務器和攝像鏡頭模塊的集成,擁有IP地址和DDNS動態(tài)域名,并可通過WIFI網(wǎng)絡(luò)傳輸視頻信號。

Android是谷歌公司發(fā)布的一種基于Linux的自由及開放源代碼的操作系統(tǒng),截止2014年第四季度,Android系統(tǒng)市場占有率為83.6%,遠遠高于蘋果的iOS系統(tǒng)、微軟WP系統(tǒng)和黑莓。中國移動已經(jīng)建成全球最大的4G網(wǎng)絡(luò),擁有4G基站70萬個,用戶數(shù)量超過8 000萬,高速的移動網(wǎng)絡(luò)促使著移動應用,尤其是對網(wǎng)絡(luò)帶寬依賴性非常強的流媒體應用大量增長,基于以上原因本文提出了一種基于無線網(wǎng)絡(luò)攝像機的Android客戶端,視頻流暢、穩(wěn)定、可靠性高、實時性好,具有很好的市場應用前景。

1 Android開發(fā)平臺與開發(fā)環(huán)境

1.1 Android平臺開發(fā)簡介

Android是一個分層的環(huán)境,構(gòu)建在 Linux內(nèi)核的基礎(chǔ)上,它具有豐富的功能。Android應用程序是用 Java編程語言編寫的,它們在一個虛擬機(Dalvik Virtual Machine)中運行[1]。這是一種開源技術(shù)。每個 Android應用程序都在 Dalvik VM的一個實例中運行,這個實例駐留在一個由Linux內(nèi)核管理的進程中。

本次開發(fā)對應的 Android 4.4.2(API level 19),相比與其他版本,Android4.4是一次重要的平臺發(fā)布版,為用戶和應用程序開發(fā)者增加了大量新特性,例如:Android4.4增加了幾個新的API,使應用程序能夠與照片,影片和音樂等媒體交互。Media Effects是一個新的媒體效果框架,為了最佳效果,其直接應用了OpenGL的紋理。

1.2 Android開發(fā)環(huán)境簡介

Android Studio是Google開發(fā)的一款面向Android開發(fā)者的IDE,基于Java語言集成開發(fā)環(huán)境IntelliJ搭建而成[2]。相比與Eclipse+ADT,Android Studio提供了 IntelliJ IDEA的智能代碼編輯技術(shù),可實現(xiàn)自動代碼完成、重構(gòu)、代碼分析等功能,Android studio還提供了一款英文名為Memory Monitor的性能分析工具,可顯示應用內(nèi)存使用情況隨時間發(fā)生的變化,從而幫助開發(fā)者找出改進性能的辦法。而且,Android studio采用了一種基于自動化構(gòu)建工具Gradle的系統(tǒng),支持在IDE之內(nèi)或之外進行開發(fā)編譯,有比較好的靈活性與擴展性。

2 客戶端模塊設(shè)計及程序?qū)崿F(xiàn)

2.1 客戶端的模塊設(shè)計與流程

本客戶端的設(shè)計主要由Android UI(user interface)模塊,視頻流接收模塊,視頻播放模塊,APP檢測更新等模塊組成;

圖1 客戶端功能模塊結(jié)構(gòu)圖Fig.1 Structure chart of function module

Android SDK提供了Android平臺上使用Java進行應用開發(fā)的 API(Application Programming Interface,應用程序編程接口)和工具,VSTCCAM SDK是威視達康公司提供的供第三方開發(fā)者獲得威視達康前端設(shè)備視頻流的軟件開發(fā)工具包。本文主要使用這兩個SDK完成Android應用的開發(fā)。

Android UI模塊的功能有:用戶注冊和登錄;從服務器上獲取用戶賬號下面所有無線網(wǎng)絡(luò)攝像機的UID,名稱等,并以listview的格式顯示給用戶;添加和刪除無線網(wǎng)絡(luò)攝像機;查看用戶之前截取的圖像和錄制的視頻等。

視頻流接收模塊接收無線網(wǎng)絡(luò)攝像機通過云服務器轉(zhuǎn)發(fā)過來的視頻流,然后交給H264解碼模塊進行解碼,最后通過視頻播放模塊將實時監(jiān)控視頻呈現(xiàn)給用戶。

本客戶端的具體流程:如果用戶已有賬號,則直接登錄,如果沒有賬號,進入注冊頁面進行注冊。用戶登錄后,APP從服務器獲取用戶已經(jīng)添加的網(wǎng)絡(luò)攝像機列表,同時在另一個線程(Thread)中,APP向服務器發(fā)送檢測最新版本的請求,如果服務器上存在更新版本,則提示用戶是否升級。用戶通過添加/刪除攝像機模塊可以進行攝像機的添加和刪除動作,結(jié)果發(fā)送到服務器進行存儲,下次用戶從其他設(shè)備登錄可以獲得最新的攝像機列表。用戶選擇需要預覽的攝像機調(diào)用VSTCCAM SDK獲取監(jiān)控實時視頻流,然后通過Surface ViewHolder將監(jiān)控畫面呈現(xiàn)給用戶。如圖2所示。

圖2 客戶端設(shè)計流程圖Fig.2 Flow chart of client design

2.2 客戶端的主要程序設(shè)計與實現(xiàn)

2.2.1 Android UI設(shè)計

系統(tǒng)界面設(shè)計包括登錄注冊界面和功能區(qū)界面,功能區(qū)界面按功能劃分有獲取并顯示攝像機列表,添加或是刪除攝像機,實時視頻預覽,下載最新版本應用4個部分,UI的設(shè)計遵循簡潔原則,使交互界面易于用戶理解和使用。應用界面的呈現(xiàn)使用Android SDK[3]中的Fragment控件,當我們的應用程序同時適用于平板電腦和手機時,可以利用fragment實現(xiàn)靈活的布局,改善用戶體驗。當應用運行在手機上時設(shè)備列表和實時預覽顯示在不同的頁面,當應用運行在平板上時設(shè)備列表和實時預覽這兩個fragment就可以嵌入在同一個activity中,從而更加充分的利用平板的屏幕空間。如圖:

圖3 平板電腦布局Fig.3 Layout in tablet

2.2.2 登陸功能、攝像機列表獲取等功能設(shè)計

Android客戶端通過Http請求方式[4],從服務器調(diào)用登陸接口,獲取攝像機列表接口,實現(xiàn)登陸并獲取設(shè)備列表,查詢報警信息,添加和刪除攝像機等功能。

Android客戶端登陸成功驗證并獲取到攝像機列表后,使用Android SDK提供的ListView組件呈現(xiàn),它以列表的形勢展現(xiàn)具體內(nèi)容,比較適合多個攝像機的展示。

2.2.3 獲取攝像機實時視頻流模塊設(shè)計

獲取實時視頻流功能的實現(xiàn)主要依靠攝像機廠商提供的SDK。首先將libavi_utils.so,libvstc2_jni.so導入到 Android工程中l(wèi)ibs/armeabi/目錄下。根據(jù)接口的描述,為了使用該接口,需要新建包”vstc2.nativecaller”。 接著在類 NativeCaller中加載庫libavi_utils.so,libvstc2_jni.so并對本地方法進行聲明。如下:

在 StartActivity類中調(diào)用 NativeCaller.PPPPInitial()初始化服務器,之后使用onBind()啟動類名為bridgeservice的服務,使用service之前需要在AndroidManifest.xml配置文件中添加Service,具體添加方法如下:

2.2.4 視頻實時預覽的程序設(shè)計

在整個移動安防監(jiān)控系統(tǒng)中,Android端視頻實時預覽的最后也最重要的一步,由于4G或WIFI等無線網(wǎng)絡(luò)的不穩(wěn)定性與帶寬限制,實時預覽時Android客戶端必須對接收到的RTSP數(shù)據(jù)流進行高效的解碼。

Android提供了一個專門的視圖控制器Android.widget.VideoView[5],封裝了MediaPlay的創(chuàng)建和初始化過程,Video View可以用在布局管理器中,提供包括縮放和著色在內(nèi)的很多顯示選項。為了顯示實時預覽視頻,創(chuàng)建VideoView部件并將他設(shè)置為用戶界面的內(nèi)容,然后設(shè)置傳入的bitmap并觸發(fā)start()方法。VideoView類可以從不同的來源(例如資源文件或內(nèi)容提供器)讀取圖像,本系統(tǒng)通過從威視達康SDK獲取的視頻流讀取畫面數(shù)據(jù)。

SurfaceView繼承于視圖(View),可以直接從內(nèi)存或者DMA等硬件接口取得圖像數(shù)據(jù),是個非常重要的繪圖容器,這個視圖里內(nèi)嵌了一個專門用于繪制的Surface[6]。Surface View類中主要方法如表1所示。

表1 SurfaceView主要方法Tab.1 Method of surfaceview

SurfaceHolder是一個接口,用于管理SurfaceView。里面有兩個常用的內(nèi)部接口SurfaceHolder.Callback和Surface Holder.Callback2,Callback2 用來實現(xiàn) Callback。

通過SurfaceHolder來操作畫面對象,當SurfaceView初始 化 后 通 過 調(diào) 用 getHolder() 獲 取 SurfaceHolder,把SurfaceHandler傳給另一線程并且用lockCanvas()獲取canvas。 完成繪圖后,調(diào)用 unlockCanvasAndPost()釋放 canvas鎖,并顯示視圖。

2.2.5 檢測新版本功能程序設(shè)計

Android客戶端進入到MainActivity主進程中,會另開一個線程,向服務發(fā)送一個post請求,Android客戶端解析出服務器返回的帶有最新的版本信息的數(shù)據(jù)后進行對比,如果版本號相同則不進行任何提示,如果本機版本號低于服務器提供的版本號則彈窗窗口提示用戶選擇是否升級。用戶確認升級后,調(diào)用Android SDK提供的DownloadManager接口,進行下載。

3 應用平臺與客戶端測試

3.1 測試環(huán)境

本測試環(huán)境下使用的移動終端采用三星galaxy4,該機型采用的是Android4.4.2系統(tǒng),網(wǎng)絡(luò)環(huán)境為中國移動4G網(wǎng)絡(luò)。

3.2 攝像機選型

本次實驗使用的無線網(wǎng)絡(luò)攝像機是型號為C7837WIP,生產(chǎn)廠商為深圳威視達康。攝像機具體參數(shù)如表2所示。

表2 無線網(wǎng)絡(luò)攝像機參數(shù)Tab.2 Parameters of wireless ip camera

3.3 應用平臺與功能測試

軟件安裝完成后對核心功能進行測試。輸入賬號密碼驗證成功后進入APP主界面,選擇相應的攝像機進行實時預覽。登陸界面和設(shè)備列表界面如圖4所示。點擊需要預覽的攝像機進入實時預覽界面,在4G網(wǎng)絡(luò)下,視頻流暢,卡頓和掉幀率較低,穩(wěn)定性、實時性都比較好。實時監(jiān)控效果圖如圖5所示。

圖4 登陸界面和設(shè)備列表界面Fig.4 UI of log in and camera list

4 結(jié) 論

本文以Android為平臺,開發(fā)了一款針對無線網(wǎng)絡(luò)攝像機的客戶端。通過和服務器之間進行交互,實現(xiàn)用戶登陸,注冊,添加刪除攝像機等功能;利用攝像機廠商提供的網(wǎng)絡(luò)SDK獲得視頻流,再結(jié)合Android提供的SurfaceView接口實現(xiàn)了實時視頻預覽;程序設(shè)計時應充分考慮到使用場景和用戶體驗,將大部分操作移動到后臺執(zhí)行,同時自動更新客戶端版本,同時用戶界面人性化,操作簡單。整個方案可以應用到許多多媒體應用中,如視頻數(shù)據(jù)采集,庭院看護,以及遠程交流,實現(xiàn)穩(wěn)定可靠隨時隨地的實時視頻服務。

圖5 實時監(jiān)控效圖Fig.5 Picture of video surfaceillance

[1]Shane Conder,Lauren Darcey.Android wireless application development[M].Boston:Addison-Wesley,2010.

[2]Reto Meier.Professional Android 2 application development[M].Indianapolis:Wiley Pub,2009.

[3]James Steele,Nelson.To The Android developer's cookbook:building applications with the Android SDK[M].Boston:Addison-Wesley,2010.

[4]柯元旦,宋銳.Android程序設(shè)計[M].北京:北京航空航天大學出版社,2010.

[5]Jordan.Practical Android Projects[M].California-Berkeley,Apress,2011.

[6]丁偉.基于Android平臺的移動流媒體客戶端[D].廣州:中山大學,2010.

猜你喜歡
視頻流預覽列表
邊緣實時視頻流分析系統(tǒng)配置動態(tài)調(diào)整算法研究
學習運用列表法
新品預覽
基于視頻流傳輸中的擁塞控制研究
擴列吧
鐵路貨場智能大門集裝箱全景圖像采集方法研究
11月在拍電視劇預覽表
美國視頻流市場首現(xiàn)飽和征兆
列表畫樹狀圖各有所長
bauma China 2014展前預覽
囊谦县| 子长县| 蚌埠市| 长兴县| 昭苏县| 温州市| 和平县| 宜兰市| 安溪县| 紫阳县| 和龙市| 砚山县| 页游| 罗源县| 兴山县| 巴东县| 永安市| 封丘县| 安阳市| 砀山县| 鄢陵县| 五大连池市| 青冈县| 海原县| 乐昌市| 正定县| 襄城县| 阜平县| 田林县| 竹山县| 黎城县| 南华县| 武义县| 红原县| 双江| 密山市| 浦北县| 彝良县| 清水河县| 江阴市| 航空|