高西萍,曾 浩,程 瑤
(重慶郵電大學通信學院,重慶 400065)
手機視頻監控近幾年發展非常迅速,手機終端的發展也是非常迅猛,特別是隨著iPhone手機的推出,手機進入了一個新的時代,用iPhone手機已經成為一種時尚。在這種趨勢下,基于iPhone的軟件開發具有很好的市場前景。
手機視頻監控系統可以分為4個層次:前端采集設備、服務器、移動通信網絡、手機終端(iPhone 4)。本文給出的基于iPhone 4的手機視頻監控系統采用C/S(客戶端/服務器)模型,整體的框架圖如圖1所示。

圖1 系統框架圖
服務器端和客戶端之間采用TCP方式傳輸數據[1]。服務器端采用集群式服務器系統的設計架構,根據3G網絡的狀況加入子碼流傳輸和管理。iPhone手機客戶端主要有用戶登錄、權限管理和云臺控制等功能。客戶端基于iOS4.3及以上的操作系統,主要完成信令處理、解碼上屏等功能,其中在解碼方面客戶端會對所有H.264格式的視頻編碼流進行統一的解碼處理。
移動視頻監控系統的特點是并發量大,會出現很多用戶同時通過移動網絡訪問某個交通要道的監控點的情況。因此移動視頻監控系統主要存在兩個問題:服務器性能不足和網絡擁塞[2]。鑒于此,本設計服務器端采用多臺服務器組成的集群共同提供流媒體服務,其服務器端的架構圖如圖2所示。

圖2 集群式服務器端的架構圖
服務器端由3G入口網關服務器、認證服務器、3G流媒體服務器、通信服務器、云臺控制服務器等模塊組成。
1)3G入口網關服務器。系統對外公布的入口地址是該服務器的IP地址。該服務器的主要功能是接收用戶的連接請求,調用認證服務器的認證功能對用戶進行身份驗證,同時取得當前負載最低的流媒體服務器,并利用重定向功能將流媒體服務器的IP地址和端口號返回給用戶。引入入口網關服務器可以對外屏蔽認證服務器和流媒體服務器,使得這兩個服務器與外界完全隔絕,保證了系統的安全。主要負責用戶認證轉發、權限轉發信息以及壓力分配的處理。
2)認證服務器。功能包括維護當前在線用戶列表、用戶權限認證等用戶管理。認證服務器對外提供各種用戶權限認證的功能,比如用戶登錄認證、流媒體訪問權限認證、云臺控制權限認證。
3)3G流媒體服務器。流媒體服務器是這個系統的核心,主要功能是為用戶提供流媒體的服務。由于一臺服務器無法支持大量用戶并發所需的計算能力和網絡帶寬,系統中設置了多臺媒體服務器為用戶提供服務。每臺流媒體服務器之間相互獨立,流媒體服務器與用戶之間形成一對多的關系,用戶在一次流媒體會話中不能在不同流媒體之間進行切換。
4)通信服務器。因為網絡攝像機不能滿足高并發,無法實現實時的視音頻數據的傳輸。因此通信服務器的功能是接收網絡攝像機的音視頻數據,然后發給3G流媒體服務器。
5)云臺控制服務器。云臺控制服務器的本質是網絡攝像機云臺控制服務的代理服務器。云臺控制服務器收到客戶端發送的云臺控制后,轉換成標準的云臺控制指令,然后發動到前端采集設備。
從2007年發布至今,蘋果手機已經從最早的iPhone一代升級到了iPhone 4。iPhone OS是由蘋果公司為iPhone開發的操作系統,iPhone 4采用蘋果最新的iPhone OS 4.0系統。
本系統中手機客戶端主要完成解碼和上屏、云臺控制的功能[2],由此設計出客戶端流媒體播放器的結構如圖3所示。

圖3 流媒體播放器系統結構圖
本系統視頻編碼采用的是目前最流行的H.264編碼格式,它與現有的MPEG-2,MPEG-4及H.263相比,具有明顯的優越性,特別是編碼效率上的提高,使之能用于許多新的領域[3],該系統中的客戶端會對所有H.264格式的視頻編碼流進行統一的解碼處理。
目前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的手機視頻監控系統的服務器端和客戶端的詳細設計,服務器端主要完成的是流媒體編碼和轉發,客戶端主要完成的是流媒體的解碼和上屏,還能對帶有云臺的攝像頭進行控制,如調焦距、上、下、左、右的控制。在MAC OS的模擬iPhone平臺上,測試中顯示的監控畫面如圖5所示。

圖5 測試中顯示的監控畫面
該視頻圖像的技術參數是:分辨力為CIF 352×288,幀率為25 f/s,碼率為128 kbit/s。前端網絡攝像機的供應商是大華,通過對前端設備的設置在監控畫面上可以顯示視頻遮擋、時間、通道號等信息,能滿足用戶視頻查看、云臺控制的基本要求。
本文給出了一套基于iPhone 4的手機視頻監控系統實現方案,并對系統服務器端和客戶端的模塊進行了設計說明。本文設計的基于iPhone 4的手機視頻監控系統的方案,能滿足手機用戶的視頻查看、云臺控制的基本需求,接下來的工作是對手機客戶端的功能做進一步的擴展,增加手動錄像、圖像抓幀、短信報警等功能。
[1]張萬芳,蘇鴻根.基于RTP/UDP/IP協議實時傳輸H.264流媒體文件[J].計算機工程與設計,2009,17(7):31-35.
[2]王超.移動視頻監控系統的研究與實現[D].杭州:浙江大學,2010.
[3]馬杰,田金文,柳鍵.流媒體技術及其文件格式[J].計算機工程與應用,2003,9(13):49-52.
[4]杜傳贏.Symbian平臺移動流媒體播放器的實現與優化[D].廈門:廈門大學,2008.
[5]尹超超,龍昭華,謝顯中.H.264實時視頻通信終端的研究與實現[J]. 電視技術,2011,35(3):53-56.