摘 要: 為了使視頻監(jiān)控更加靈活方便,能夠隨時隨地地采集視頻,采用3G手機作為視頻客戶端和采集端,通過RTP協(xié)議在3G網(wǎng)絡(luò)下實時傳輸視頻流,采用先進的H.264壓縮算法對采集視頻進行壓縮以節(jié)省網(wǎng)絡(luò)流量,加快傳輸速度,在手機客戶端可以清楚地觀看視頻。
關(guān)鍵詞: 3G手機;視頻監(jiān)控;H.264;Android
視頻監(jiān)控的廣泛應(yīng)用,以及人們對移動視頻監(jiān)控需求的增加,促使了3G手機移動視頻監(jiān)控系統(tǒng)的出現(xiàn)。用3G手機作為視頻采集端擴大了視頻采集的范圍,使監(jiān)控場地不再局限于一個固定的地方,從而使客戶端可觀察的范圍大大增加,真正達到一機在手處處監(jiān)控的效果,給人們社區(qū)生活和工作帶來極大的方便。例如老人不方便外出,當兒女在外旅游時,可以把旅游時的歡樂情景實時發(fā)送給老人和他們共享此時的歡樂。此外,3G手機移動視頻監(jiān)控還可以在遠程救助、遠程支援、遠程技術(shù)支持以及遠程醫(yī)療幫助等方面獲得廣泛應(yīng)用。
3G技術(shù)的快速發(fā)展使得3G網(wǎng)絡(luò)速度越來越快,從而在3G網(wǎng)絡(luò)下傳輸視頻成為可能。為了節(jié)省網(wǎng)絡(luò)帶寬、加快視頻傳輸速度,該系統(tǒng)采用H.264壓縮算法對采集的視頻進行壓縮編碼,網(wǎng)絡(luò)傳輸采用支持流媒體傳輸?shù)腞TP/RTCP協(xié)議以保證視頻流高效、穩(wěn)定地實時傳輸。
1 系統(tǒng)的硬件組成及開發(fā)環(huán)境
該系統(tǒng)分為視頻采集端、視頻服務(wù)器和視頻接收端3部分。該系統(tǒng)的硬件結(jié)構(gòu)如圖1所示。
采集端采用HTC的G13手機,主屏分辨率為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萬像素,自動對焦且支持觸控對焦,圖像尺寸最大支持2 592×1 944像素照片拍攝。視頻轉(zhuǎn)發(fā)服務(wù)器采用普通的PC即可。視頻接收端采用三星的GT-S5670手機,3G網(wǎng)絡(luò)頻率為WCDMA 900 MHz/2 100 MHz,操作系統(tǒng)為Android 2.2,內(nèi)存容量為160 MB,分辨率為320×240,26萬色彩,視頻播放格式為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++程序需要一個交叉編譯環(huán)境,本文選擇的是Cygwin。
2 視頻采集端設(shè)計
視頻采集端顧名思義主要完成對監(jiān)控現(xiàn)場的視頻采集工作,此外為了減輕視頻服務(wù)器的壓力,在視頻采集端將采集的視頻進行壓縮編碼,然后再通過網(wǎng)絡(luò)傳輸給視頻服務(wù)器,由視頻服務(wù)器將視頻轉(zhuǎn)發(fā)給視頻客戶端。視頻采集端軟件結(jié)構(gòu)如圖2所示。
(1)采集模塊。此模塊為視頻采集端的核心模塊,視頻采集端通過此模塊對監(jiān)控現(xiàn)場進行視頻采集工作。該模塊包括視頻采集和視頻預(yù)覽兩部分。攝像頭應(yīng)首先對監(jiān)控現(xiàn)場進行視頻預(yù)覽,然后采集一幀圖像,每采集一幀圖像,都要先進行視頻預(yù)覽工作。因此,在程序中應(yīng)首先進行視頻預(yù)覽工作,然后再采集視頻。在程序中實現(xiàn)對攝像頭的操作應(yīng)該首先在AndroidManifest.xml中添加獲取操作攝像頭的語句。在主程序中對攝像頭進行初始化,配置攝像頭各種參數(shù),如視頻圖像的高度、寬度、自動對焦等?;贏ndroid的3G手機攝像頭采集的視頻圖像默認格式為YUV420sp,采集模塊采集完視頻后交給編碼模塊處理。
?。?)編碼模塊。此模塊的目的是在有限的網(wǎng)絡(luò)資源中傳輸更多的視頻流,同時減少視頻服務(wù)器的工作量。編碼模塊的主要工作就是把采集模塊采集的視頻進行壓縮編碼,該系統(tǒng)采用最新最先進的H.264壓縮方式對視頻流進行壓縮編碼,然后將壓縮好的視頻流交由網(wǎng)絡(luò)模塊進行網(wǎng)絡(luò)傳輸。在程序中通過調(diào)用C/C++的H.264編碼函數(shù)對采集的視頻進行編碼即可,這里的H.264編碼函數(shù)要使用JNI的函數(shù)命名格式,函數(shù)里的數(shù)據(jù)類型也要相應(yīng)轉(zhuǎn)為JNI規(guī)定的格式,這樣在Java中才能被識別,編譯鏈接才能通過。
由于網(wǎng)絡(luò)傳輸帶寬有限,同時為了節(jié)省上網(wǎng)流量,加快視頻傳輸速度,本文采用壓縮效率比較高的H.264視頻壓縮算法。H.264采用分層設(shè)計,在概念上分為視頻編碼層和網(wǎng)絡(luò)提取層兩層。其精度高,支持多模式運動估計,支持1/4或1/8像素精度的運動矢量;支持整數(shù)變換,在編碼器和解碼器中允許精度相同變換和反變換,便于使用簡單的定點運算方式。同時,H.264還采用統(tǒng)一的VLC和幀內(nèi)預(yù)測技術(shù),使視頻壓縮效率大大提高。在中國聯(lián)通3G HSDPA網(wǎng)絡(luò)覆蓋區(qū)域內(nèi),實際最高上網(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)速下傳輸實時視頻流是不可能的,視頻尺寸為480×320,視頻碼率為512 kb/s,采用H.264壓縮算法,一般壓縮比可以達到25:1,這樣就可以保證視頻流的實時傳輸了。
?。?)網(wǎng)絡(luò)傳輸模塊。此模塊完成視頻流的傳輸功能,將經(jīng)過壓縮模塊編碼后的視頻流傳輸給視頻服務(wù)器。為保證實時傳輸,該系統(tǒng)采用RTP實時傳輸協(xié)議,由于RTP協(xié)議只保證視頻流的實時性,對傳送的視頻數(shù)據(jù)不提供可靠的傳送機制,因此,使用RTCP傳輸控制協(xié)議配合RTP協(xié)議一同使用,以保證視頻傳輸?shù)馁|(zhì)量。RTP下層使用UDP協(xié)議,真正意義上將視頻流傳輸給網(wǎng)絡(luò)層,通過網(wǎng)絡(luò)層將視頻流通過網(wǎng)絡(luò)傳輸給視頻服務(wù)器。在程序中同樣要在AndroidManifest.xml文件中添加獲取網(wǎng)絡(luò)權(quán)限的語句,否則,視頻流是無法通過網(wǎng)絡(luò)傳輸出去的。
實時傳輸協(xié)議RTP(Real-Time Transport Protocol)是針對Internet上多媒體數(shù)據(jù)流的一個傳輸協(xié)議,由Internet工程任務(wù)組(IETF)作為RFC1889發(fā)布。RTP被定義為在一對一或一對多的傳輸情況下工作,其目的是提供時間信息和實現(xiàn)流同步。RTP的典型應(yīng)用建立在UDP上,但也可以在TCP或ATM等其他協(xié)議之上工作。RTP本身只保證實時數(shù)據(jù)的傳輸,并不能為按順序傳送數(shù)據(jù)包提供可靠的傳送機制,也不提供流量控制或擁塞控制,它依靠RTCP提供這些服務(wù)。實時傳輸控制協(xié)議RTCP(Real-Time Transport Control Protocol)負責管理傳輸質(zhì)量在當前應(yīng)用進程之間交換控制信息。在RTP會話期間,各參與者周期性地傳送RTCP包,包中含有已發(fā)送的數(shù)據(jù)包的數(shù)量以及丟失的數(shù)據(jù)包的數(shù)量等統(tǒng)計資料。因此,服務(wù)器可以利用這些信息動態(tài)地改變傳輸速率,甚至改變有效載荷類型。RTP和RTCP配合使用,能以有效的反饋和最小的開銷使傳輸效率最佳化,因此特別適合傳送網(wǎng)上的實時數(shù)據(jù)。
3 視頻服務(wù)端設(shè)計
視頻服務(wù)器在該系統(tǒng)中起著橋梁的作用,承上啟下,將視頻采集端和視頻客戶端連接起來,只有通過視頻服務(wù)端,視頻采集端和視頻客戶端才能相互通信,整個系統(tǒng)才能正常運轉(zhuǎn)。每個視頻采集端和視頻客戶端通信都要通過視頻服務(wù)器,所以視頻服務(wù)器在該系統(tǒng)中承擔的工作量最大,任務(wù)最重,因此服務(wù)端的設(shè)計很重要。一個好的視頻服務(wù)端設(shè)計可以使視頻服務(wù)器高效穩(wěn)定地運行,從而提高整個系統(tǒng)的工作效率。該系統(tǒng)服務(wù)端分為視頻接收模塊和視頻管理模塊兩大部分。其中,視頻管理模塊又分為網(wǎng)絡(luò)傳輸模塊、視頻存儲模塊、視頻解碼模塊和視頻播放模塊。服務(wù)端軟件結(jié)構(gòu)如圖3所示。
?。?)接收模塊。該模塊主要完成視頻流的接收工作,相對管理模塊比較簡單,在程序中利用線程將視頻采集端傳來的視頻流進行接收即可。
管理模塊將接收的視頻流根據(jù)去向進行一一處理,保證在視頻服務(wù)端可以觀看視頻監(jiān)控情況,將視頻流存儲備份,方便以后查看以及監(jiān)聽視頻客戶端請求,并將視頻流轉(zhuǎn)發(fā)給視頻客戶端。
?。?)網(wǎng)絡(luò)傳輸模塊。該模塊負責監(jiān)聽視頻客戶端的連接請求并將視頻采集端傳來的視頻流轉(zhuǎn)發(fā)給視頻客戶端。該模塊承載著整個系統(tǒng)的重心,是視頻采集端和視頻客戶端的連接紐帶,因此該模塊高效穩(wěn)定地工作才能使整個系統(tǒng)高效穩(wěn)定地運轉(zhuǎn)。接收模塊接收的視頻流是經(jīng)過H.264壓縮算法壓縮過的,在此模塊直接轉(zhuǎn)發(fā)即可。在程序中對每個發(fā)送連接請求的視頻客戶端創(chuàng)建一個新的線程,用來專門為該視頻客戶端傳輸視頻流,各個線程之間互不影響。
?。?)視頻存儲模塊。該模塊主要完成將接收模塊接收的視頻流存儲在本地硬盤的工作,從而使得以后可以查詢歷史監(jiān)控記錄。
?。?)視頻解碼模塊。該模塊主要完成對接收的視頻流進行解碼工作。因為視頻服務(wù)器接收到的視頻流是通過H.264壓縮算法壓縮過的,在視頻服務(wù)器上不能直接播放,所以在播放前首先需要對視頻流進行解碼,在程序中調(diào)用H.264解碼程序進行解碼即可。
?。?)視頻播放模塊。該模塊主要完成在視頻服務(wù)端將視頻播放顯示的功能,同時提供對播放視頻進行拍照功能,方便在觀察視頻監(jiān)控情況時,如感覺某些畫面比較重要可以進行拍照保存。
4 視頻客戶端設(shè)計
視頻客戶端負責將視頻服務(wù)器轉(zhuǎn)發(fā)來的視頻流在客戶手機上進行播放顯示,傳統(tǒng)的觀看監(jiān)控方式必須坐在顯示器旁邊,大大限制了客戶的活動范圍,通過手機來觀看視頻監(jiān)控可以不受地域的限制,使客戶觀看視頻監(jiān)控更加靈活方便。該系統(tǒng)客戶端包括視頻接收模塊、視頻解碼模塊和視頻播放模塊。
?。?)接收模塊。該模塊和視頻服務(wù)端相似,主要完成視頻流的接收工作,在程序中創(chuàng)建一個線程接收視頻服務(wù)端傳來的視頻流并保存在一個數(shù)組中即可。
?。?)視頻解碼模塊。該模塊主要完成對視頻服務(wù)傳來的視頻流進行解碼的工作。因為接收到的視頻流是通過H.264壓縮算法進行壓縮過的,在視頻客戶端不能直接播放,所以在播放前首先需要對視頻流進行解碼。在程序中調(diào)用H.264解碼程序進行解碼即可。
?。?)視頻播放模塊。該模塊主要完成將視頻流在手機客戶端進行播放顯示的功能,同時提供對播放視頻進行拍照功能,方便在觀察視頻監(jiān)控時可以對播放視頻進行拍照保存。
通過對該系統(tǒng)編碼測試,手機視頻采集端可以把監(jiān)控視頻傳輸?shù)揭曨l服務(wù)器,同時,視頻服務(wù)器也可以將視頻轉(zhuǎn)發(fā)到手機視頻客戶端,在視頻服務(wù)端和手機視頻客戶端都可以觀看到清晰的監(jiān)控圖像。通過實驗證明,該3G手機移動視頻監(jiān)控系統(tǒng)可以很好地運行。
本文提出了一套通過3G手機隨時隨地進行遠程視頻監(jiān)控的設(shè)計方案,基于Android操作系統(tǒng)的3G手機都可以使用該系統(tǒng),普通的智能手機在Wi-Fi或WLAN下也可以使用該系統(tǒng)進行監(jiān)控或接收視頻數(shù)據(jù)。在網(wǎng)絡(luò)傳輸中采用H.264壓縮編碼提高了傳輸效率。該系統(tǒng)采用3G手機作為視頻監(jiān)控和接收端,從而使觀看監(jiān)控更加靈活、方便,真正達到隨時隨地監(jiān)控的效果。隨著遠程視頻監(jiān)控應(yīng)用越來越廣泛,該3G手機移動視頻監(jiān)控系統(tǒng)將給人們的生活和工作帶來巨大的方便。
參考文獻
[1] 付少華,付紅橋,王政.基于3G網(wǎng)絡(luò)的手機移動視頻監(jiān)控系統(tǒng)的設(shè)計[J].計算機應(yīng)用技術(shù),2011,31(A01):70-72.
[2] 孫松原,吳建國.基于RTP和Android的視頻傳輸?shù)难芯繉崿F(xiàn)方法[J].電腦知識與技術(shù),2012(2):903-905.
[3] 謝紅華,陸以勤,呂錦.基于3G無線網(wǎng)絡(luò)的高質(zhì)量實時視頻監(jiān)視系統(tǒng)的設(shè)計[J].計算機應(yīng)用研究,2007(10):313-314.
[4] 余兆明,查日勇,黃磊,等.圖像編碼標準H.264技術(shù)[M].北京:人民郵電出版社,2006.