高西萍,曾 浩,程 瑤
(重慶郵電大學(xué)通信學(xué)院,重慶 400065)
手機(jī)視頻監(jiān)控近幾年發(fā)展非常迅速,手機(jī)終端的發(fā)展也是非常迅猛,特別是隨著iPhone手機(jī)的推出,手機(jī)進(jìn)入了一個(gè)新的時(shí)代,用iPhone手機(jī)已經(jīng)成為一種時(shí)尚。在這種趨勢(shì)下,基于iPhone的軟件開發(fā)具有很好的市場(chǎng)前景。
手機(jī)視頻監(jiān)控系統(tǒng)可以分為4個(gè)層次:前端采集設(shè)備、服務(wù)器、移動(dòng)通信網(wǎng)絡(luò)、手機(jī)終端(iPhone 4)。本文給出的基于iPhone 4的手機(jī)視頻監(jiān)控系統(tǒng)采用C/S(客戶端/服務(wù)器)模型,整體的框架圖如圖1所示。
圖1 系統(tǒng)框架圖
服務(wù)器端和客戶端之間采用TCP方式傳輸數(shù)據(jù)[1]。服務(wù)器端采用集群式服務(wù)器系統(tǒng)的設(shè)計(jì)架構(gòu),根據(jù)3G網(wǎng)絡(luò)的狀況加入子碼流傳輸和管理。iPhone手機(jī)客戶端主要有用戶登錄、權(quán)限管理和云臺(tái)控制等功能??蛻舳嘶趇OS4.3及以上的操作系統(tǒng),主要完成信令處理、解碼上屏等功能,其中在解碼方面客戶端會(huì)對(duì)所有H.264格式的視頻編碼流進(jìn)行統(tǒng)一的解碼處理。
移動(dòng)視頻監(jiān)控系統(tǒng)的特點(diǎn)是并發(fā)量大,會(huì)出現(xiàn)很多用戶同時(shí)通過(guò)移動(dòng)網(wǎng)絡(luò)訪問某個(gè)交通要道的監(jiān)控點(diǎn)的情況。因此移動(dòng)視頻監(jiān)控系統(tǒng)主要存在兩個(gè)問題:服務(wù)器性能不足和網(wǎng)絡(luò)擁塞[2]。鑒于此,本設(shè)計(jì)服務(wù)器端采用多臺(tái)服務(wù)器組成的集群共同提供流媒體服務(wù),其服務(wù)器端的架構(gòu)圖如圖2所示。
圖2 集群式服務(wù)器端的架構(gòu)圖
服務(wù)器端由3G入口網(wǎng)關(guān)服務(wù)器、認(rèn)證服務(wù)器、3G流媒體服務(wù)器、通信服務(wù)器、云臺(tái)控制服務(wù)器等模塊組成。
1)3G入口網(wǎng)關(guān)服務(wù)器。系統(tǒng)對(duì)外公布的入口地址是該服務(wù)器的IP地址。該服務(wù)器的主要功能是接收用戶的連接請(qǐng)求,調(diào)用認(rèn)證服務(wù)器的認(rèn)證功能對(duì)用戶進(jìn)行身份驗(yàn)證,同時(shí)取得當(dāng)前負(fù)載最低的流媒體服務(wù)器,并利用重定向功能將流媒體服務(wù)器的IP地址和端口號(hào)返回給用戶。引入入口網(wǎng)關(guān)服務(wù)器可以對(duì)外屏蔽認(rèn)證服務(wù)器和流媒體服務(wù)器,使得這兩個(gè)服務(wù)器與外界完全隔絕,保證了系統(tǒng)的安全。主要負(fù)責(zé)用戶認(rèn)證轉(zhuǎn)發(fā)、權(quán)限轉(zhuǎn)發(fā)信息以及壓力分配的處理。
2)認(rèn)證服務(wù)器。功能包括維護(hù)當(dāng)前在線用戶列表、用戶權(quán)限認(rèn)證等用戶管理。認(rèn)證服務(wù)器對(duì)外提供各種用戶權(quán)限認(rèn)證的功能,比如用戶登錄認(rèn)證、流媒體訪問權(quán)限認(rèn)證、云臺(tái)控制權(quán)限認(rèn)證。
3)3G流媒體服務(wù)器。流媒體服務(wù)器是這個(gè)系統(tǒng)的核心,主要功能是為用戶提供流媒體的服務(wù)。由于一臺(tái)服務(wù)器無(wú)法支持大量用戶并發(fā)所需的計(jì)算能力和網(wǎng)絡(luò)帶寬,系統(tǒng)中設(shè)置了多臺(tái)媒體服務(wù)器為用戶提供服務(wù)。每臺(tái)流媒體服務(wù)器之間相互獨(dú)立,流媒體服務(wù)器與用戶之間形成一對(duì)多的關(guān)系,用戶在一次流媒體會(huì)話中不能在不同流媒體之間進(jìn)行切換。
4)通信服務(wù)器。因?yàn)榫W(wǎng)絡(luò)攝像機(jī)不能滿足高并發(fā),無(wú)法實(shí)現(xiàn)實(shí)時(shí)的視音頻數(shù)據(jù)的傳輸。因此通信服務(wù)器的功能是接收網(wǎng)絡(luò)攝像機(jī)的音視頻數(shù)據(jù),然后發(fā)給3G流媒體服務(wù)器。
5)云臺(tái)控制服務(wù)器。云臺(tái)控制服務(wù)器的本質(zhì)是網(wǎng)絡(luò)攝像機(jī)云臺(tái)控制服務(wù)的代理服務(wù)器。云臺(tái)控制服務(wù)器收到客戶端發(fā)送的云臺(tái)控制后,轉(zhuǎn)換成標(biāo)準(zhǔn)的云臺(tái)控制指令,然后發(fā)動(dòng)到前端采集設(shè)備。
從2007年發(fā)布至今,蘋果手機(jī)已經(jīng)從最早的iPhone一代升級(jí)到了iPhone 4。iPhone OS是由蘋果公司為iPhone開發(fā)的操作系統(tǒng),iPhone 4采用蘋果最新的iPhone OS 4.0系統(tǒng)。
本系統(tǒng)中手機(jī)客戶端主要完成解碼和上屏、云臺(tái)控制的功能[2],由此設(shè)計(jì)出客戶端流媒體播放器的結(jié)構(gòu)如圖3所示。
圖3 流媒體播放器系統(tǒng)結(jié)構(gòu)圖
本系統(tǒng)視頻編碼采用的是目前最流行的H.264編碼格式,它與現(xiàn)有的MPEG-2,MPEG-4及H.263相比,具有明顯的優(yōu)越性,特別是編碼效率上的提高,使之能用于許多新的領(lǐng)域[3],該系統(tǒng)中的客戶端會(huì)對(duì)所有H.264格式的視頻編碼流進(jìn)行統(tǒng)一的解碼處理。
目前PC平臺(tái)的H.264解碼器比較完善,其中開源的解碼器主要包括 JM decoder,T264 decoder,x264 decoder,F(xiàn)Fmpeg libavcodec,Intel IPP simple player等。但是在iPhone OS平臺(tái)還沒有可用的解碼器,所以必須對(duì)現(xiàn)有PC平臺(tái)上的解碼器進(jìn)行修改,使之能夠在iPhone OS平臺(tái)上正確運(yùn)行,即將解碼器由PC平臺(tái)移植至iPhone OS平臺(tái)[4]。
FFmpeg是一個(gè)集錄制、轉(zhuǎn)換、音視頻編碼解碼功能為一體的完整的開源解決方案。FFmpeg的解碼流程總的可以概括為[5]:打開一個(gè)文件后,讀取里面的視頻流,找到對(duì)應(yīng)的解碼器并打開,從流中讀取幀數(shù)據(jù)并解碼。具體的視頻解碼流程如圖4所示。
圖4 FFmpeg視頻解碼流程圖
1)初始化libavformat/libavcodec,實(shí)現(xiàn)代碼為:
這一步注冊(cè)庫(kù)中含有的所有可用的文件格式和編碼器,這樣當(dāng)打開一個(gè)文件時(shí),它們才能夠自動(dòng)選擇相應(yīng)的文件格式和編碼器。
2)打開文件,實(shí)現(xiàn)代碼為:
3)從AVFormatContext獲取Stream的信息。實(shí)現(xiàn)代碼為:
流中關(guān)于編解碼器的信息就是“codec context”(編解碼器上下文)。這里面包含了流中所使用的關(guān)于編解碼器的所有信息,現(xiàn)在有了一個(gè)指向它的指針,下面要找到真正的編解碼器并且打開它。
4)尋找視頻流的解碼器并打開它,實(shí)現(xiàn)代碼為:
5)為解碼幀分配內(nèi)存,實(shí)現(xiàn)代碼為:
6)不停地從碼流中提取出幀數(shù)據(jù),判斷幀的類型,對(duì)于視頻幀調(diào)用avcodec_decode_video()解碼,實(shí)現(xiàn)代碼為:
7)轉(zhuǎn)換圖像格式,實(shí)現(xiàn)代碼為:
因?yàn)闇?zhǔn)備輸出保存24位RGB格式的JPEG文件,且iPhone只支持RGB格式,因此必須把解碼后的圖像格式從原來(lái)的YUV420轉(zhuǎn)換為RGB格式。
8)解碼完后,釋放解碼器,實(shí)現(xiàn)代碼為:
9)關(guān)閉輸入文件,實(shí)現(xiàn)代碼為:
本文給出的基于iPhone 4的手機(jī)視頻監(jiān)控系統(tǒng)的服務(wù)器端和客戶端的詳細(xì)設(shè)計(jì),服務(wù)器端主要完成的是流媒體編碼和轉(zhuǎn)發(fā),客戶端主要完成的是流媒體的解碼和上屏,還能對(duì)帶有云臺(tái)的攝像頭進(jìn)行控制,如調(diào)焦距、上、下、左、右的控制。在MAC OS的模擬iPhone平臺(tái)上,測(cè)試中顯示的監(jiān)控畫面如圖5所示。
圖5 測(cè)試中顯示的監(jiān)控畫面
該視頻圖像的技術(shù)參數(shù)是:分辨力為CIF 352×288,幀率為25 f/s,碼率為128 kbit/s。前端網(wǎng)絡(luò)攝像機(jī)的供應(yīng)商是大華,通過(guò)對(duì)前端設(shè)備的設(shè)置在監(jiān)控畫面上可以顯示視頻遮擋、時(shí)間、通道號(hào)等信息,能滿足用戶視頻查看、云臺(tái)控制的基本要求。
本文給出了一套基于iPhone 4的手機(jī)視頻監(jiān)控系統(tǒng)實(shí)現(xiàn)方案,并對(duì)系統(tǒng)服務(wù)器端和客戶端的模塊進(jìn)行了設(shè)計(jì)說(shuō)明。本文設(shè)計(jì)的基于iPhone 4的手機(jī)視頻監(jiān)控系統(tǒng)的方案,能滿足手機(jī)用戶的視頻查看、云臺(tái)控制的基本需求,接下來(lái)的工作是對(duì)手機(jī)客戶端的功能做進(jìn)一步的擴(kuò)展,增加手動(dòng)錄像、圖像抓幀、短信報(bào)警等功能。
[1]張萬(wàn)芳,蘇鴻根.基于RTP/UDP/IP協(xié)議實(shí)時(shí)傳輸H.264流媒體文件[J].計(jì)算機(jī)工程與設(shè)計(jì),2009,17(7):31-35.
[2]王超.移動(dòng)視頻監(jiān)控系統(tǒng)的研究與實(shí)現(xiàn)[D].杭州:浙江大學(xué),2010.
[3]馬杰,田金文,柳鍵.流媒體技術(shù)及其文件格式[J].計(jì)算機(jī)工程與應(yīng)用,2003,9(13):49-52.
[4]杜傳贏.Symbian平臺(tái)移動(dòng)流媒體播放器的實(shí)現(xiàn)與優(yōu)化[D].廈門:廈門大學(xué),2008.
[5]尹超超,龍昭華,謝顯中.H.264實(shí)時(shí)視頻通信終端的研究與實(shí)現(xiàn)[J]. 電視技術(shù),2011,35(3):53-56.