《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于Android的3G手機(jī)移動(dòng)視頻監(jiān)控系統(tǒng)設(shè)計(jì)
基于Android的3G手機(jī)移動(dòng)視頻監(jiān)控系統(tǒng)設(shè)計(jì)
來(lái)源:微型機(jī)與應(yīng)用2013年第23期
曾文獻(xiàn),興百橋,賈 嬌
(河北經(jīng)貿(mào)大學(xué) 信息技術(shù)學(xué)院,河北 石家莊 050061)
摘要: 為了使視頻監(jiān)控更加靈活方便,能夠隨時(shí)隨地地采集視頻,采用3G手機(jī)作為視頻客戶端和采集端,通過(guò)RTP協(xié)議在3G網(wǎng)絡(luò)下實(shí)時(shí)傳輸視頻流,采用先進(jìn)的H.264壓縮算法對(duì)采集視頻進(jìn)行壓縮以節(jié)省網(wǎng)絡(luò)流量,加快傳輸速度,在手機(jī)客戶端可以清楚地觀看視頻。
Abstract:
Key words :

摘  要: 為了使視頻監(jiān)控更加靈活方便,能夠隨時(shí)隨地地采集視頻,采用3G手機(jī)作為視頻客戶端和采集端,通過(guò)RTP協(xié)議在3G網(wǎng)絡(luò)下實(shí)時(shí)傳輸視頻流,采用先進(jìn)的H.264壓縮算法對(duì)采集視頻進(jìn)行壓縮以節(jié)省網(wǎng)絡(luò)流量,加快傳輸速度,在手機(jī)客戶端可以清楚地觀看視頻。
關(guān)鍵詞: 3G手機(jī);視頻監(jiān)控;H.264;Android

 視頻監(jiān)控的廣泛應(yīng)用,以及人們對(duì)移動(dòng)視頻監(jiān)控需求的增加,促使了3G手機(jī)移動(dòng)視頻監(jiān)控系統(tǒng)的出現(xiàn)。用3G手機(jī)作為視頻采集端擴(kuò)大了視頻采集的范圍,使監(jiān)控場(chǎng)地不再局限于一個(gè)固定的地方,從而使客戶端可觀察的范圍大大增加,真正達(dá)到一機(jī)在手處處監(jiān)控的效果,給人們社區(qū)生活和工作帶來(lái)極大的方便。例如老人不方便外出,當(dāng)兒女在外旅游時(shí),可以把旅游時(shí)的歡樂情景實(shí)時(shí)發(fā)送給老人和他們共享此時(shí)的歡樂。此外,3G手機(jī)移動(dòng)視頻監(jiān)控還可以在遠(yuǎn)程救助、遠(yuǎn)程支援、遠(yuǎn)程技術(shù)支持以及遠(yuǎn)程醫(yī)療幫助等方面獲得廣泛應(yīng)用。
 3G技術(shù)的快速發(fā)展使得3G網(wǎng)絡(luò)速度越來(lái)越快,從而在3G網(wǎng)絡(luò)下傳輸視頻成為可能。為了節(jié)省網(wǎng)絡(luò)帶寬、加快視頻傳輸速度,該系統(tǒng)采用H.264壓縮算法對(duì)采集的視頻進(jìn)行壓縮編碼,網(wǎng)絡(luò)傳輸采用支持流媒體傳輸?shù)腞TP/RTCP協(xié)議以保證視頻流高效、穩(wěn)定地實(shí)時(shí)傳輸。
1 系統(tǒng)的硬件組成及開發(fā)環(huán)境
 該系統(tǒng)分為視頻采集端、視頻服務(wù)器和視頻接收端3部分。該系統(tǒng)的硬件結(jié)構(gòu)如圖1所示。

 采集端采用HTC的G13手機(jī),主屏分辨率為480×320像素,3G網(wǎng)絡(luò)頻率為WCDMA 850 MHz/2 100 MHz,操作系統(tǒng)為Android 2.3,CPU頻率為600 MHz,RAM容量為512 MB,ROM容量為512 MB,攝像頭像素為500萬(wàn)像素,自動(dòng)對(duì)焦且支持觸控對(duì)焦,圖像尺寸最大支持2 592×1 944像素照片拍攝。視頻轉(zhuǎn)發(fā)服務(wù)器采用普通的PC即可。視頻接收端采用三星的GT-S5670手機(jī),3G網(wǎng)絡(luò)頻率為WCDMA 900 MHz/2 100 MHz,操作系統(tǒng)為Android 2.2,內(nèi)存容量為160 MB,分辨率為320×240,26萬(wàn)色彩,視頻播放格式為MPEG4/H.263/H.264。
 為使用C/C++編寫的H.264編解碼函數(shù),需要搭建Android的C/C++開發(fā)環(huán)境。搭建Android C/C++開發(fā)環(huán)境所需要用到的軟件為JDK+Eclipse+AndroidSDK+ADT+NDK,編譯Android的C/C++程序需要一個(gè)交叉編譯環(huán)境,本文選擇的是Cygwin。
2 視頻采集端設(shè)計(jì)
 視頻采集端顧名思義主要完成對(duì)監(jiān)控現(xiàn)場(chǎng)的視頻采集工作,此外為了減輕視頻服務(wù)器的壓力,在視頻采集端將采集的視頻進(jìn)行壓縮編碼,然后再通過(guò)網(wǎng)絡(luò)傳輸給視頻服務(wù)器,由視頻服務(wù)器將視頻轉(zhuǎn)發(fā)給視頻客戶端。視頻采集端軟件結(jié)構(gòu)如圖2所示。

?。?)采集模塊。此模塊為視頻采集端的核心模塊,視頻采集端通過(guò)此模塊對(duì)監(jiān)控現(xiàn)場(chǎng)進(jìn)行視頻采集工作。該模塊包括視頻采集和視頻預(yù)覽兩部分。攝像頭應(yīng)首先對(duì)監(jiān)控現(xiàn)場(chǎng)進(jìn)行視頻預(yù)覽,然后采集一幀圖像,每采集一幀圖像,都要先進(jìn)行視頻預(yù)覽工作。因此,在程序中應(yīng)首先進(jìn)行視頻預(yù)覽工作,然后再采集視頻。在程序中實(shí)現(xiàn)對(duì)攝像頭的操作應(yīng)該首先在AndroidManifest.xml中添加獲取操作攝像頭的語(yǔ)句。在主程序中對(duì)攝像頭進(jìn)行初始化,配置攝像頭各種參數(shù),如視頻圖像的高度、寬度、自動(dòng)對(duì)焦等。基于Android的3G手機(jī)攝像頭采集的視頻圖像默認(rèn)格式為YUV420sp,采集模塊采集完視頻后交給編碼模塊處理。
?。?)編碼模塊。此模塊的目的是在有限的網(wǎng)絡(luò)資源中傳輸更多的視頻流,同時(shí)減少視頻服務(wù)器的工作量。編碼模塊的主要工作就是把采集模塊采集的視頻進(jìn)行壓縮編碼,該系統(tǒng)采用最新最先進(jìn)的H.264壓縮方式對(duì)視頻流進(jìn)行壓縮編碼,然后將壓縮好的視頻流交由網(wǎng)絡(luò)模塊進(jìn)行網(wǎng)絡(luò)傳輸。在程序中通過(guò)調(diào)用C/C++的H.264編碼函數(shù)對(duì)采集的視頻進(jìn)行編碼即可,這里的H.264編碼函數(shù)要使用JNI的函數(shù)命名格式,函數(shù)里的數(shù)據(jù)類型也要相應(yīng)轉(zhuǎn)為JNI規(guī)定的格式,這樣在Java中才能被識(shí)別,編譯鏈接才能通過(guò)。
 由于網(wǎng)絡(luò)傳輸帶寬有限,同時(shí)為了節(jié)省上網(wǎng)流量,加快視頻傳輸速度,本文采用壓縮效率比較高的H.264視頻壓縮算法。H.264采用分層設(shè)計(jì),在概念上分為視頻編碼層和網(wǎng)絡(luò)提取層兩層。其精度高,支持多模式運(yùn)動(dòng)估計(jì),支持1/4或1/8像素精度的運(yùn)動(dòng)矢量;支持整數(shù)變換,在編碼器和解碼器中允許精度相同變換和反變換,便于使用簡(jiǎn)單的定點(diǎn)運(yùn)算方式。同時(shí),H.264還采用統(tǒng)一的VLC和幀內(nèi)預(yù)測(cè)技術(shù),使視頻壓縮效率大大提高。在中國(guó)聯(lián)通3G HSDPA網(wǎng)絡(luò)覆蓋區(qū)域內(nèi),實(shí)際最高上網(wǎng)下載速率為5 Mb/s(620 kb/s),上行為2.8 Mb/s(350 kb/s),通常下載為450 kb/s,上傳280 kb/s,如果不采用壓縮算法,在450 kb/s的網(wǎng)速下傳輸實(shí)時(shí)視頻流是不可能的,視頻尺寸為480×320,視頻碼率為512 kb/s,采用H.264壓縮算法,一般壓縮比可以達(dá)到25:1,這樣就可以保證視頻流的實(shí)時(shí)傳輸了。
?。?)網(wǎng)絡(luò)傳輸模塊。此模塊完成視頻流的傳輸功能,將經(jīng)過(guò)壓縮模塊編碼后的視頻流傳輸給視頻服務(wù)器。為保證實(shí)時(shí)傳輸,該系統(tǒng)采用RTP實(shí)時(shí)傳輸協(xié)議,由于RTP協(xié)議只保證視頻流的實(shí)時(shí)性,對(duì)傳送的視頻數(shù)據(jù)不提供可靠的傳送機(jī)制,因此,使用RTCP傳輸控制協(xié)議配合RTP協(xié)議一同使用,以保證視頻傳輸?shù)馁|(zhì)量。RTP下層使用UDP協(xié)議,真正意義上將視頻流傳輸給網(wǎng)絡(luò)層,通過(guò)網(wǎng)絡(luò)層將視頻流通過(guò)網(wǎng)絡(luò)傳輸給視頻服務(wù)器。在程序中同樣要在AndroidManifest.xml文件中添加獲取網(wǎng)絡(luò)權(quán)限的語(yǔ)句,否則,視頻流是無(wú)法通過(guò)網(wǎng)絡(luò)傳輸出去的。
 實(shí)時(shí)傳輸協(xié)議RTP(Real-Time Transport Protocol)是針對(duì)Internet上多媒體數(shù)據(jù)流的一個(gè)傳輸協(xié)議,由Internet工程任務(wù)組(IETF)作為RFC1889發(fā)布。RTP被定義為在一對(duì)一或一對(duì)多的傳輸情況下工作,其目的是提供時(shí)間信息和實(shí)現(xiàn)流同步。RTP的典型應(yīng)用建立在UDP上,但也可以在TCP或ATM等其他協(xié)議之上工作。RTP本身只保證實(shí)時(shí)數(shù)據(jù)的傳輸,并不能為按順序傳送數(shù)據(jù)包提供可靠的傳送機(jī)制,也不提供流量控制或擁塞控制,它依靠RTCP提供這些服務(wù)。實(shí)時(shí)傳輸控制協(xié)議RTCP(Real-Time Transport Control Protocol)負(fù)責(zé)管理傳輸質(zhì)量在當(dāng)前應(yīng)用進(jìn)程之間交換控制信息。在RTP會(huì)話期間,各參與者周期性地傳送RTCP包,包中含有已發(fā)送的數(shù)據(jù)包的數(shù)量以及丟失的數(shù)據(jù)包的數(shù)量等統(tǒng)計(jì)資料。因此,服務(wù)器可以利用這些信息動(dòng)態(tài)地改變傳輸速率,甚至改變有效載荷類型。RTP和RTCP配合使用,能以有效的反饋和最小的開銷使傳輸效率最佳化,因此特別適合傳送網(wǎng)上的實(shí)時(shí)數(shù)據(jù)。
3 視頻服務(wù)端設(shè)計(jì)
 視頻服務(wù)器在該系統(tǒng)中起著橋梁的作用,承上啟下,將視頻采集端和視頻客戶端連接起來(lái),只有通過(guò)視頻服務(wù)端,視頻采集端和視頻客戶端才能相互通信,整個(gè)系統(tǒng)才能正常運(yùn)轉(zhuǎn)。每個(gè)視頻采集端和視頻客戶端通信都要通過(guò)視頻服務(wù)器,所以視頻服務(wù)器在該系統(tǒng)中承擔(dān)的工作量最大,任務(wù)最重,因此服務(wù)端的設(shè)計(jì)很重要。一個(gè)好的視頻服務(wù)端設(shè)計(jì)可以使視頻服務(wù)器高效穩(wěn)定地運(yùn)行,從而提高整個(gè)系統(tǒng)的工作效率。該系統(tǒng)服務(wù)端分為視頻接收模塊和視頻管理模塊兩大部分。其中,視頻管理模塊又分為網(wǎng)絡(luò)傳輸模塊、視頻存儲(chǔ)模塊、視頻解碼模塊和視頻播放模塊。服務(wù)端軟件結(jié)構(gòu)如圖3所示。


 (1)接收模塊。該模塊主要完成視頻流的接收工作,相對(duì)管理模塊比較簡(jiǎn)單,在程序中利用線程將視頻采集端傳來(lái)的視頻流進(jìn)行接收即可。
管理模塊將接收的視頻流根據(jù)去向進(jìn)行一一處理,保證在視頻服務(wù)端可以觀看視頻監(jiān)控情況,將視頻流存儲(chǔ)備份,方便以后查看以及監(jiān)聽視頻客戶端請(qǐng)求,并將視頻流轉(zhuǎn)發(fā)給視頻客戶端。
 (2)網(wǎng)絡(luò)傳輸模塊。該模塊負(fù)責(zé)監(jiān)聽視頻客戶端的連接請(qǐng)求并將視頻采集端傳來(lái)的視頻流轉(zhuǎn)發(fā)給視頻客戶端。該模塊承載著整個(gè)系統(tǒng)的重心,是視頻采集端和視頻客戶端的連接紐帶,因此該模塊高效穩(wěn)定地工作才能使整個(gè)系統(tǒng)高效穩(wěn)定地運(yùn)轉(zhuǎn)。接收模塊接收的視頻流是經(jīng)過(guò)H.264壓縮算法壓縮過(guò)的,在此模塊直接轉(zhuǎn)發(fā)即可。在程序中對(duì)每個(gè)發(fā)送連接請(qǐng)求的視頻客戶端創(chuàng)建一個(gè)新的線程,用來(lái)專門為該視頻客戶端傳輸視頻流,各個(gè)線程之間互不影響。
?。?)視頻存儲(chǔ)模塊。該模塊主要完成將接收模塊接收的視頻流存儲(chǔ)在本地硬盤的工作,從而使得以后可以查詢歷史監(jiān)控記錄。
?。?)視頻解碼模塊。該模塊主要完成對(duì)接收的視頻流進(jìn)行解碼工作。因?yàn)橐曨l服務(wù)器接收到的視頻流是通過(guò)H.264壓縮算法壓縮過(guò)的,在視頻服務(wù)器上不能直接播放,所以在播放前首先需要對(duì)視頻流進(jìn)行解碼,在程序中調(diào)用H.264解碼程序進(jìn)行解碼即可。
 (5)視頻播放模塊。該模塊主要完成在視頻服務(wù)端將視頻播放顯示的功能,同時(shí)提供對(duì)播放視頻進(jìn)行拍照功能,方便在觀察視頻監(jiān)控情況時(shí),如感覺某些畫面比較重要可以進(jìn)行拍照保存。
4 視頻客戶端設(shè)計(jì)

 


 視頻客戶端負(fù)責(zé)將視頻服務(wù)器轉(zhuǎn)發(fā)來(lái)的視頻流在客戶手機(jī)上進(jìn)行播放顯示,傳統(tǒng)的觀看監(jiān)控方式必須坐在顯示器旁邊,大大限制了客戶的活動(dòng)范圍,通過(guò)手機(jī)來(lái)觀看視頻監(jiān)控可以不受地域的限制,使客戶觀看視頻監(jiān)控更加靈活方便。該系統(tǒng)客戶端包括視頻接收模塊、視頻解碼模塊和視頻播放模塊。
?。?)接收模塊。該模塊和視頻服務(wù)端相似,主要完成視頻流的接收工作,在程序中創(chuàng)建一個(gè)線程接收視頻服務(wù)端傳來(lái)的視頻流并保存在一個(gè)數(shù)組中即可。
 (2)視頻解碼模塊。該模塊主要完成對(duì)視頻服務(wù)傳來(lái)的視頻流進(jìn)行解碼的工作。因?yàn)榻邮盏降囊曨l流是通過(guò)H.264壓縮算法進(jìn)行壓縮過(guò)的,在視頻客戶端不能直接播放,所以在播放前首先需要對(duì)視頻流進(jìn)行解碼。在程序中調(diào)用H.264解碼程序進(jìn)行解碼即可。
 (3)視頻播放模塊。該模塊主要完成將視頻流在手機(jī)客戶端進(jìn)行播放顯示的功能,同時(shí)提供對(duì)播放視頻進(jìn)行拍照功能,方便在觀察視頻監(jiān)控時(shí)可以對(duì)播放視頻進(jìn)行拍照保存。
通過(guò)對(duì)該系統(tǒng)編碼測(cè)試,手機(jī)視頻采集端可以把監(jiān)控視頻傳輸?shù)揭曨l服務(wù)器,同時(shí),視頻服務(wù)器也可以將視頻轉(zhuǎn)發(fā)到手機(jī)視頻客戶端,在視頻服務(wù)端和手機(jī)視頻客戶端都可以觀看到清晰的監(jiān)控圖像。通過(guò)實(shí)驗(yàn)證明,該3G手機(jī)移動(dòng)視頻監(jiān)控系統(tǒng)可以很好地運(yùn)行。
 本文提出了一套通過(guò)3G手機(jī)隨時(shí)隨地進(jìn)行遠(yuǎn)程視頻監(jiān)控的設(shè)計(jì)方案,基于Android操作系統(tǒng)的3G手機(jī)都可以使用該系統(tǒng),普通的智能手機(jī)在Wi-Fi或WLAN下也可以使用該系統(tǒng)進(jìn)行監(jiān)控或接收視頻數(shù)據(jù)。在網(wǎng)絡(luò)傳輸中采用H.264壓縮編碼提高了傳輸效率。該系統(tǒng)采用3G手機(jī)作為視頻監(jiān)控和接收端,從而使觀看監(jiān)控更加靈活、方便,真正達(dá)到隨時(shí)隨地監(jiān)控的效果。隨著遠(yuǎn)程視頻監(jiān)控應(yīng)用越來(lái)越廣泛,該3G手機(jī)移動(dòng)視頻監(jiān)控系統(tǒng)將給人們的生活和工作帶來(lái)巨大的方便。
參考文獻(xiàn)
[1] 付少華,付紅橋,王政.基于3G網(wǎng)絡(luò)的手機(jī)移動(dòng)視頻監(jiān)控系統(tǒng)的設(shè)計(jì)[J].計(jì)算機(jī)應(yīng)用技術(shù),2011,31(A01):70-72.
[2] 孫松原,吳建國(guó).基于RTP和Android的視頻傳輸?shù)难芯繉?shí)現(xiàn)方法[J].電腦知識(shí)與技術(shù),2012(2):903-905.
[3] 謝紅華,陸以勤,呂錦.基于3G無(wú)線網(wǎng)絡(luò)的高質(zhì)量實(shí)時(shí)視頻監(jiān)視系統(tǒng)的設(shè)計(jì)[J].計(jì)算機(jī)應(yīng)用研究,2007(10):313-314.
[4] 余兆明,查日勇,黃磊,等.圖像編碼標(biāo)準(zhǔn)H.264技術(shù)[M].北京:人民郵電出版社,2006.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。