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