卜振江, 楊海波, 賈軍營(中國科學院 沈陽計算技術研究所, 沈陽 068)(中國科學院大學 計算機與控制學院, 北京 00049)
基于Android的移動視頻監控客戶端①
卜振江1,2, 楊海波1, 賈軍營11(中國科學院 沈陽計算技術研究所, 沈陽 110168)2(中國科學院大學 計算機與控制學院, 北京 100049)
近年來, 移動通訊網絡的迅速發展和Android系統智能手機的普及使得移動視頻監控成為一個重要的研究方向. 在深入研究流媒體傳輸技術、視頻編解碼技術和SIP協議的基礎上, 設計了一種具有語音通話功能的移動視頻監控系統, 并重點對基于Android平臺的移動視頻監控客戶端進行研究與設計.
移動視頻監控; Android平臺; 流媒體技術; 語音通話
隨著移動互聯網絡的快速發展和智能手機的處理能力越來越強,移動視頻的需求正在爆炸式的增長,同時傳統的視頻監控已經不能滿足用戶隨時、隨地和根據需要進行實時監控與通信的需求. 基于手機等便攜式設備的無線網絡視頻監控系統,將成為下一個視頻監控領域的熱點. 同時Android平臺又以其系統開放、性能優越、用戶群體多等優點成為研究設計移動視頻監控客戶端的首選.
為了滿足人們在繁忙工作的同時, 可利用智能手機遠程隨時、隨地、實時對視頻監控區域狀況了解, 并可以迅速做出分析與處理. 本文研究設計了一種基于Android平臺的移動視頻監控客戶端. 該客戶端結合了流媒體傳輸技術, 視頻編解碼技術和SIP語音通信技術,不僅能實時接收服務器端發送的視頻數據, 并解碼播放, 還可以實時與視頻采集智能終端進行語音通話.
首先, 隨著我國無線Wifi網絡和4G移動通信技術的普及以及5G網絡的出現, 移動網絡的傳輸速率也得到了非常大的提升, 已經完全滿足移動設備上音視頻數據傳輸的要求. 這就為研究與設計移動視頻監控系統提供了一定的技術可行性.
第二, 本文研究與設計的移動視頻監控客戶端是基于Android系統的. 對比其他移動端操作系統, Android系統優勢主要有:
(1) Android是一種基于Linux的自由及開放源代碼的操作系統. Android系統的開放性不僅僅體現在對Android操作系統的授權使用上, 同時, Android系統的上層應用程序可以自由地訪問Android系統的各個API.
(2) Android系統具有豐富的多媒體類庫, 并且這些類庫都是開放源代碼的, 可以很方便的對這些多媒體類庫進行擴展及二次開發, 這就為移動視頻監控系統的快速開發提供了便利條件.
(3) Android系統的市場占有率非常高, 據市場研究公司IDC 的全球手機市場季度報告, 2016年第一季度, Android系統的市場占有率為89%, 所以開發基于Android的移動視頻監控系統具有較好的市場應用前景.
(4) Android系統具有用戶體驗優越的可視化界面,可以把移動監控客戶端的UI界面設計的非常漂亮、美觀且簡單易于操作.
第三, 本文的設計方案有效的結合了音視頻編解碼技術、流媒體技術與語音通信技術. 音視頻編解碼主要應用了FFmpeg開源框架, FFmpeg是在 Linux 平臺上開發的, 而Android系統也是基于Linux系統開發的, 所以比較容易根據業務需求將擴展好的FFmpeg框架移植到Android系統中; 流媒體技術應用了當前比較成熟的RTP、RTCP、RTSP流媒體傳輸協議; 語音通信技術對比了SIP協議和H.323協議, 選取了簡單靈活, 分布式控制的SIP協議, 中國電信集團也在其《中國電信家庭視頻監控業務技術規范》中, 推薦將SIP 協議作為首選控制協議來實現.
最后, 本文設計的移動視頻監控系統相對比一般的移動視頻監控系統具有如下優勢:
(1) 可以隨時隨地靈活的在移動端查看清晰的視頻監控畫面, 同時還可以實現實時語音通話與互動,這樣可以很好的滿足人們隨時隨地遠程看護家里老人,小孩的需求和醫生遠程指導醫療服務的需求, 廣泛應用于智能家居安防領域和遠程醫療領域.
(2) 該監控系統的擴展性非常強, 視頻采集端可以是固定的攝像頭, 也可以是帶有攝像頭的移動設備,可廣泛應用車載移動視頻監控系統中和交通領域.
(3) 由于在監控系統中設計了具有保存、推送、拉取視頻數據功能的流媒體服務器, 可以在移動設備上實時回看視頻監控畫面.
3.1 流媒體傳輸技術
3.1.1 流媒體
流媒體是指采用流式傳輸的方式在因特網上播放的媒體格式. 流媒體的特點是: 在播放前不需要全部下載完成, 只需要緩存部分內容即可播放, 在播放的過程中, 后臺繼續下載音視頻媒體內容. 這種對多媒體文件邊下載邊播放的流式傳輸方式不僅使延遲大幅度的縮短, 極大的減少用戶等待的時間, 而且對系統緩存容量的需求也大大降低, 非常適合應用于存儲容量不大的手機系統. 流媒體的關鍵技術是流式傳輸,流式傳輸又按播放方式不同分為兩種: 實時流式傳輸(Real-time Streaming)和順序流式傳輸(Progressive Streaming). 兩者性能對比如表1所示.

表1 流媒體傳輸方式對比
由于實時流式傳輸可以保證音視頻信號的帶寬和網絡連接相匹配, 我們就可以實時觀看到監控視頻.實時流式傳輸的的突出特點是: 它與普通的HTTP流式傳輸不同, 它需要配置專用的流媒體服務器和相應的傳輸協議; 流媒體流式傳輸還總是實現實時傳輸,這樣它就非常適合現場事件, 比如應用于實時監控、直播系統中, 也支持隨機訪問. 用戶可以通過快進和后退按鈕觀看前面或后面的視頻內容. 而順序流式傳輸只支持順序下載, 在某一時刻, 用戶就只可以觀看自己已經下載的部分視頻內容, 不可以快進觀看已經下載的視頻內容.
3.1.2 流媒體傳輸協議
流媒體系統各部分之間通過傳輸協議來協調管理整個流媒體通信過程. 實時流式傳輸主要涉及到的協議有實時傳輸協議(Real-time Transport Protocol, RTP)、實時傳輸控制協議(Real-time Transport Control Protocol, RTCP)和實時流傳輸協議(Real-time Streaming Protocol, RTSP), 這三種協議構成了實時流式傳輸的基礎.
RTP 協議為那些傳輸實時數據的應用提供端到端的網絡傳輸功能, 包括在單播或多播環境中傳輸音視頻或仿真數據. RTP 協議并不解決資源預留, 也不保證實時服務的服務質量, 數據的傳輸質量由 RTCP協議保證. RTP 可以看成是傳輸層的一個子層. 如下,圖1顯示了一個流媒體傳輸的典型協議體系結構.

圖1 流媒體傳輸協議體系結構
RTP基于UDP 協議, 也有固定的封裝形式, 實現端到端的實時傳輸. RTP協議需要RTCP 協議控制服務質量, 另外, 與RTP協議相關的協議還有RTSP協議(Real-time Streaming Protocol )和RSVP協議(Resource Reservation Protocol).
RTCP主要負責服務質量的監控、反饋、流媒體之間的同步, 以及多播場景中各個成員的標識. 在每一個 RTP 會話中, 各個參與終端會周期性的發送RTCP數據包. RTCP 數據包中主要包含了已發送的數據包個數、丟失的數據包個數等信息, 各個參與終端可以根據這些信息自動改變傳輸策略或載荷類型. RTP 需要RTCP 協議的配合使用, 才可以達到最優的傳輸效率.
RTSP 協議屬于應用層協議, 與 HTTP 協議的流控制協議類似, RTSP 協議規定了一對多應用程序有效地通過 Internet 傳送多媒體數據的方式. RTSP 協議的語法也類似于HTTP 協議, 但不同的是RTSP 協議是有狀態的協議, 而HTTP協議是無狀態的協議. RTSP 通過維護一個會話以維護狀態轉換過程, 其默認端口號為554, 默認承載協議為TCP 協議.
3.2 FFmpeg
FFmpeg是一個集音視頻編碼、解碼、轉換、錄制功能為一體的開源框架. FFmpeg 是在 Linux 平臺下開發的,所以繼承了 Linux 平臺高性能的優點. 且在長期的開發中,開源社區的各種開發者和程序愛好者們又對編碼和解碼的算法進行了優化,其性能在所有的開源組件中基本是最好的,再加上它對系統資源的需求又比較小,因此非常適合移植到Android系統中,被移動監控客戶端解碼模塊所使用. FFmpeg的主要組成部分如表2所示.

表2 FFmpeg的主要組成部分及描述
3.3 SIP通信協議
SIP(Session Initiation Protocol, SIP)是會話發起協議, 它是一個基于文本的應用層控制協議, 由IETF在1999 那年提出來的. 它是用于建立、修改和終止一個或者多個基于互聯網平臺的多媒體會話業務. 現在SIP 協議在實時聊天、視頻電話、視頻會議這些領域都應用非常的廣泛. SIP 在三個方面支持創建、終止多媒體通信:
(1) 用戶可用性: 決定客戶是否有這個意愿加入此次的會話通信;
(2) 用戶協商: 通信雙方對數據參數和數據類型的確定;
(3) 呼叫創建: 呼叫雙方通過會話參數的傳遞進行建立.
本文提出的移動視頻監控系統是基于C/S架構,主要分為三個主要模塊: 視頻采集端、服務器, 移動監控客戶端. 移動視頻監控系統的設計總框架如圖2所示.

圖2 移動視頻監控系統的總體設計框架
(1) 視頻采集端: 主要負責監控區域的視頻數據的采集, 壓縮編碼后上傳送給服務器. 為了適應不同的應用場景, 視頻采集端又分為固定攝像頭采集端和移動設備采集端. 固定攝像頭采集端主要由攝像頭,服務器監控終端組成, 作為傳統的視頻采集方式, 攝像頭負責采集視頻并上傳到服務器; 移動視頻采集終端是基于Android操作系統的智能手機上開發的應用軟件, 是一種新型的視頻采集方式, 通過Android提供的音視頻API和開源的音視頻編解碼解決方案, 實現音視頻的采集和編碼, 然后通過移動無線網絡上傳到服務器.
(2) 服務器: 包括了流媒體服務器和 SIP 通信服務器兩部分, 它是音視頻采集端和監控終端的溝通的紐帶. 流媒體服務器實現根據用戶請求對視頻采集端的視頻數據進行轉發; SIP信令服務器其主要負責接收與處理移動設備采集端和移動監控終端發來的SIP請求信令, 是系統通信協議實現的關鍵部分.
(3) 移動監控客戶端: 主要部署在 Android 移動平臺上, 通過用戶操作的界面, 可以實現對監控視頻的隨時查看, 以及設備的控制, 信息查詢與配置等,還可以進行語音通話, 方便及時相互通信.
由于本文的重點是對移動監控客戶端的研究和設計,以下內容主要是針對移動監控客戶端各個子模塊研究和設計. 由于移動視頻監控終端設備是用戶直接交互的對象, 須要求界面美觀、操作簡單、功能穩定.其設計結構主要由三層構成:視圖層、控制層和業務層,如圖3 所示.
5.1 視頻解碼模塊
由于網絡帶寬和存儲設備的限制, 視頻數據傳輸過程之前經過壓縮編碼. 所以移動監控客戶端在經過視頻數據的接收和組包之后, 就可以獲得一個視頻幀,之后就要對其進行解碼. 視頻解碼模塊是視頻處理中的核心部分.

圖3 移動監控客戶端的MVC結構圖
本文設計的視頻采集終端采用的編碼格式是H.264格式, 編碼之后視頻幀的分辨率是352×288, 圖像格式為YuV420. 視頻數據解碼模塊主要負責從緩沖區中讀取視頻幀, 將其進行解碼, 然后依據手機分辨率調整視頻幀的分辨率, 并將其轉換成RGB格式后,把視頻數據交送視頻顯示模塊.
本模塊視頻的解碼和分辨率轉換通過調用FFmpeg底層解碼函數實現, 接下來將詳述下FFMEPG 的解碼流程, 如圖4為FFmpeg的視頻解碼流程圖.

圖4 FFmpeg解碼流程圖
(1) avcodec_register_all(): 完成FFMPEG 支持的編解碼格式注冊.
(2) av_open_input_file(): 打開本地或網絡服務端的多媒體文件.
(3) av_find_stream_info(): 分別找音/視頻的流索引ID 信息.
(4) avcodec_find_decoder(): 根據ID 信息尋找相應的解碼器.
(5) avcodec_open(): 打開解碼器.
(6) avcodec_alloc_frame(): 開辟一片類型為AVFrame 的緩存, 來存儲解碼后的幀數據.
(7) av_read_frame(): 從碼流中讀出幀數據, 為音頻流或者視頻幀.
(8) avcodec_decode_video(): 解碼視頻幀. (9) avcodec_close(): 解碼完后, 釋放解碼器.
5.2 語音通話模塊
研究對比了多種語音編解碼器, 發現G.729編解碼器具有非常好的語音質量和非常短的的時間延遲,因此,在語音通話模塊中我們采用G.729編解碼. 按照語音通話模塊的實現進程進行劃分的話, 音頻通話模塊可以劃分為語音數據的采集, 音頻數據的編碼、RTP實時傳輸、語音數據接收、語音解碼、播放等部分組成. 在移動監控客戶端上撥打電話成功后, 即發起sip會話請求成功后, Android系統通過本身所帶的麥克風功能進行數據采集原始的語音數據,再進行相對于復雜程度較低的G.729編碼, 編碼后減少了數據的存儲空間. 然后再將這個編碼后的數據流進行 RTP 封裝,接著實時發送出去. 在發送的同時也實時接收著RTP數據包, 最后, 通過G.729轉碼, 得到原始的音頻碼流,讓手機的通過播放器播放出來, 這樣, 就實現了語音通話的功能.
本文在對移動流媒體傳輸、FFmpeg框架和SIP協議等關鍵技術研究的基礎上, 根據實際項目需求,首先設計了移動視頻監控系統的整個系統架構, 并側重設計了移動視頻監控客戶端, 能夠較好地提供遠程監控服務和語音通話功能, 因此該客戶端設計具有一定的實際意義和廣泛的市場應用前景.
1 李江.基于Android的4G網絡移動高清視頻監控系統關鍵技術的研究[碩士學位論文].杭州:浙江大學,2016.
2 董杰,辛吉濤,連捷.基于Android系統的H.264視頻直播技術研究.電視技術,2015,39(4):11–15.
3 汪雨秋.基于Android的視頻監控終端系統的設計與實現[碩士學位論文].武漢:華中科技大學,2014.
4 龔虹瑞.基于Android 的移動視頻監控[碩士學位論文].成都:西華大學,2015.
5 丁峰,刁鳴.FFMPEG 的音視頻格式轉換設計.應用科技,2013,(2):11–4.
6 Fu SH, Fu HQ, Wang Z. Design of mobile phone network video surveillance system based on 3G. Computer Applications, 2011: 1–6.
7 Ratabouil S. Android NDK Beginner’s Guide - Discover the native side of Android and inject the power of C/C++ in your applications. Packt Publishing, 2012: 6–16.
8 Zeng H, Che HX, Cao GL. Design of mobile video surveillance based on Android. 2012 International Conference on Computer Science & Service System (CSSS). IEEE. 2012. 765–768.
9 楊飛,陳德艷,黃國宏.基于Android智能終端的移動視頻監控系統研究.應用開發研究,2013:1–5.
10 Michael.模擬視頻監控發展現狀及趨勢探討.中國安防, 2013,(9):68–87.
11 辛吉濤.基于Android平臺的移動視頻監控系統的研究[碩士學位論文].大連:大連理工大學,2015.
12 黃靜,朱欣遠.4G移動通信關鍵技術及其展望探究.中國新通信,2014,(3):101–118.
Mobile Video Monitoring Terminal Based on the Android System
BU Zhen-Jiang1,2, YANG Hai-Bo1, JIA Jun-Ying112(Shenyang Institute of Computing Technology, Chinese Academy of Sciences, Shenyang 110168, China) (School of Computer and Control Engineering, University of Chinese Academy of Sciences, Beijing 100049, China)
In recent years, mobile video monitoring is an important research field because of the development of mobile communication network and the popularity of Android smart phone. This paper deeply studies the streaming media transmission technology, video coding-decoding technology and SIP protocol, on this basis, it designes a mobile video monitoring system owning voice function which mainly carries on the research and design of mobile video surveillance client on the basis of the Android platform.
mobile video monitoring; Android platform; streaming media technology; audio-based communication
2016-07-29;收到修改稿時間:2016-10-10
10.15888/j.cnki.csa.005768