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