呂緒洋 周燕琴
(廣西師范學院計算機與信息工程學院,廣西 南寧 530023)
基于Socket的Android移動終端視頻實時傳輸系統的設計與實現
呂緒洋 周燕琴
(廣西師范學院計算機與信息工程學院,廣西 南寧 530023)
設計并編碼實現基于Socket的Android移動終端實時視頻傳輸系統。利用Android智能設備對目標現場進行視頻采集、編碼并實時傳輸到服務器,服務器接收并保存且可以解碼播放。系統不僅可以實現實時視頻的傳輸,而且可以靈活便利的使用于各種場合,具備較為廣闊的應用前景。
Socket通信;android平臺;視頻實時傳輸
隨著我國經濟、社會和法律體系的不斷發展和完善,監督執法工作所涉及的范圍越來越廣,執法量日趨增加。提高執法人員的執法力度、加快執法速度、構建和諧執法環境已經成為日趨嚴峻的問題,為解決復雜環境下取證信息容易被破壞的難題,設計了一款能夠實現視頻實時傳輸的移動執法監督終端。隨著移動互聯網、3G等技術的快速發展以及智能設備廣泛使用使得視頻的實時傳輸成為現實,數據壓縮比更高的流媒體技術為視頻數據的實時傳輸提供了保障。因此,設計并實現了一款基于 Android 平臺的視頻實時傳輸系統,使用 Android 智能移動設備作為視頻采集端隨時隨地的采集視頻,服務器接受終端請求即時發送指令,采集端根據需求靈活快捷的進行拍攝并將視頻數據實時傳輸給服務器,完成邊錄邊傳。本系統不僅擴大了采集范圍降低可采集成本,而且使得采集方式更為靈活[1]。
Android智能移動終端可根據應用領域的特點進行功能擴展,可廣泛應用于公安、交通、城管、工商、環保、文化、質監、安監、藥監、農業、司法等執法部門。主要應用于需要數據實時上傳的場合(數據易遭破壞或者取證設備面臨被搶奪的風險)。在緊急模式下,實現取證和數據上傳的一鍵操作,保證數據的實時上傳到服務器。針對視頻等數據量大的文件,采用自定義傳輸協議,優化傳輸過程,實現邊錄邊傳。
Android智能設備和服務器主要有兩種通信方式:Http通信和 Socket通信。http采用“請求—響應”方式,在客戶端發送請求時建立通道連接客戶端和服務器,客戶端向服務器發出請求后,服務器才能將數據返還給客戶端。Socket通信則可在服務器和客戶端建立連接后直接傳輸數據,信息可以主動推送,客戶端不需每次都向服務器發請求[4]。
1.1Socket通信
Socket又被稱為套接字,在程序內部提供端口與外部進行通信。socket連接的建立,為通信雙方的數據提供了傳輸通道。Socket不僅丟失數據比率較低,而且簡單易用且便于移植[2]。圖1為Socket通信模型。
1.2協議選取
系統傳輸的數據均是基于IP協議傳輸的主要有兩種:視頻數據和控制信息。兩類數據有著不同的特性:(1)信息控制使用TCP傳輸協議。因為控制信息主要要求傳輸的可靠性而輕視實時性,所以采用有著重傳機制和握手過程較為嚴格的 TCP協議。(2)視頻數據通過應用層RTP協議和傳輸層UDP協議進行傳輸。因為本系統重點在于視頻數據傳輸的時效性,因此通過應用層RTP協議對傳輸實時視頻數據服務提供支持。傳輸層UDP協議沒有擁塞控制,因為對實時視頻數據傳輸使用的是交付的方式,因此實時視頻數據較大時采用該方式進行傳輸。接收來自上層應用程序的信息碼流,接收后通過應用層 RTP協議將其裝配成數據包發給下層,經UDP/IP 協議封裝形成 RTP 流[3]。基于 RTP 協議構建傳輸系統,使用UDPSocket構建傳輸層通道。

圖1 Socket通信模型
系統采用的是Socket 傳輸模式,客戶端和服務器端首先建立 Socket 連接,連接后一個端可使用打開、讀寫和關閉等操作,另一端可按相同順序接受所有信息。面向連接和無連接相比較而言操作效率雖然比較低,但卻具有很高的數據安全性。系統利用Socket建立客戶端與服務器端的數據通信鏈路,使用 3G網絡作為物理通信鏈路,采用 MVC(Model-View-Controller)框架模式,本系統主要由視頻采集端和服務器兩部分構成。
系統總體設計為服務器通過移動網絡接收android智能設備的實時視頻數據。即android智能移動終端發送傳輸實時視頻數據的請求,服務器接收解析后通過Socket與智能終端建立連接,智能終端捕獲視頻數據將之發送到服務器編解碼,服務器可以實現實時播放和保存。圖2為系統架構設計圖。

圖2 系統架構設計圖
2.1服務器端設計
服務器基于流媒體服務器平臺,具有初始化網絡端口號和主機地址,等待移動終端的連接請求實時捕捉現場圖像,通過網絡接口接收存儲和管理實時視頻數據等功能。在android智能設備發出請求與服務器成功建立連接后,可向服務器發送采集到的實時視頻數據。服務器端主要用于接收android智能設備發送的實時視頻數據,在 Visual Studio 編程環境下通過java語言來實現,在進行網絡通信傳輸時,傳輸層通信采用相對來說可靠性和穩定性較強的UDPSocket協議實現服務器和移動智能終端之間的通信,以實現圖像穩定傳輸。
初始化,使用Server類對服務器初始化,通過Socket從智能移動終端讀取實時視頻數據,使用Input Stream定義輸入流,創建要保存的文件。視頻捕獲,通過對視頻響應函數中CaptureVideo類的調用來實現對現場實時捕捉。
2.2視頻采集端設計
視頻采集端調用Camera.PreviewCallback接口,在重載函數 onPreviewFrame()里獲取當前攝像頭捕捉到的實時視頻數據,然后通過Socket將實時視頻數據和一些相關參數等傳輸到服務器端。服務器端監聽對應端口,對所獲取到的所有數據做相應的解析處理和數據的還原等處理,實現了智能移動終端采集到的視頻數據實時的傳輸到服務器。
客戶端和服務器進行實時通信主要是通過TCP/IP協議,利用Socket來完成的。視頻采集端使用Socket類實現Socket通信,使用PrintWriter來寫入命令,連接服務器或與服務器斷開時,都需發出命令通知服務器。若采用Socket發送數據,則通過OutputStream將ByteArrayInputStream數據流讀入,文件數據流轉換為ByteArrayOutputStream。
onPreviewFrame()重載函數是獲取實時視頻圖像的關鍵,onPreviewFrame()包含兩個參數,其中byte[],是當前采集到的視頻圖像數據,YuvImage將其轉換為ByteArray OutputStream數據,然后采用線程進行發送。顯示實時視頻畫面,需繼承View類然后重寫 onDraw()方法。onDraw()方法所實現出來的內容,將在智能移動終端顯示。定義一個 Bitmap 對象,當用于接收圖片數據的線程在接收到新數據時,將數據傳給該Bitmap對象,并在線程中調用postlnvalidate()方法,重繪畫面。為了使系統顯示具有更為理想的效果,系統設計使用了雙緩存機制。將當前采集到的視頻畫面存儲在原對象中,剛接收到的畫面儲存在變量的另一對象中。若網絡問題不能及時的接收新數據,則使另一對象為空,系統還將顯示先前畫面。這種處理方式可以使用戶體驗在一定程度上有所提高。
該系統可應用在公安、稅務、交通、民政等行業的監督執法移動終端上。視頻取證信息的實時采集和上傳操作的同步進行,可以有效解決復雜環境下取證信息容易被破壞的難題。
使用華為 mate7等手機作為客戶端進行測試,測試結果表明系統較為穩定,使用 移動3G網絡同服務器建立連接,連接耗時不足3 s,圖像數據雖然有著一定的丟包率,但是就整體來看能夠較為流暢的進行播放,實現了預期效果。不僅如此,系統開發過程中使用模塊化思想進行編程,為后期對系統的功能進行維護和拓展提供了便利。
設計并編碼實現基于Socket的Android移動終端實時視頻傳輸系統。系統不僅可以跨平臺進行移植,而且使用了模塊化的思想可用于二次開發,利用Socket信道對視頻采集端進行控制,使得系統移動、實時、可控和靈活等特性均得到了提高。此基礎上通過H.264編碼方式[5]使網絡適應性得到提高是下一步開發的預期。現今已步入了4G時代,加快了移動網絡的傳輸速率,手持移動終端設備性能大幅提升,可以預期本系統有著極為廣闊的應用前景。
[1] 付少華,付紅嬌,王政.基于 3G網絡的手機移動視頻監控系統的設計[J].計算機應用,2011,31(1):70-72.
[2] 夏玲,王偉平.客戶端與服務器端的Socket通信[J].電腦知識與技術,2009,4(5):812-813.
[3] 趙臣兵,劉立柱.基于 RTP協議的視頻實時采集與傳輸的研究[J].微計算機信息,2006,19(16):124-126.
[4] 姚星吳,劉衛國.Android 的架構與應用開發研究[J].計算機系統應用,2008,(11):110-113.
[5] 申超,周明.基于 H.264的監控系統中手機客戶端的設計[J].微計算機信息,2009,25(3):118-119.
Based on the socket of the Android mobile terminal video real-time transmission system design and implementation
Design and coding implementation is based on the Android mobile terminal Socket real-time video transmission systems. Android smart devices utilizing the target site for video capture, encoding and real-time transmission to the server, the server receives and saves, also can decode and play. The system can not only achieve real-time video transmission, but also flexible and convenient to use in various occasion, with a more wide application prospect.
Socket communication; android platform; real-time video transmission
TP393
A
1008-1151(2015)12-0013-02
2015-11-15
呂緒洋(1989-),男,廣西師范學院計算機與信息工程學院碩士研究生,研究方向為智能控制系統及其應用;周燕琴(1987-),女,廣西師范學院計算機與信息工程學院碩士研究生,研究方向為大數據與數據挖掘。