国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Socket的Android移動(dòng)終端視頻實(shí)時(shí)傳輸系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

2015-11-24 03:37呂緒洋周燕琴
大眾科技 2015年12期
關(guān)鍵詞:服務(wù)器端客戶端終端

呂緒洋 周燕琴

(廣西師范學(xué)院計(jì)算機(jī)與信息工程學(xué)院,廣西 南寧 530023)

基于Socket的Android移動(dòng)終端視頻實(shí)時(shí)傳輸系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

呂緒洋 周燕琴

(廣西師范學(xué)院計(jì)算機(jī)與信息工程學(xué)院,廣西 南寧 530023)

設(shè)計(jì)并編碼實(shí)現(xiàn)基于Socket的Android移動(dòng)終端實(shí)時(shí)視頻傳輸系統(tǒng)。利用Android智能設(shè)備對(duì)目標(biāo)現(xiàn)場(chǎng)進(jìn)行視頻采集、編碼并實(shí)時(shí)傳輸?shù)椒?wù)器,服務(wù)器接收并保存且可以解碼播放。系統(tǒng)不僅可以實(shí)現(xiàn)實(shí)時(shí)視頻的傳輸,而且可以靈活便利的使用于各種場(chǎng)合,具備較為廣闊的應(yīng)用前景。

Socket通信;android平臺(tái);視頻實(shí)時(shí)傳輸

隨著我國(guó)經(jīng)濟(jì)、社會(huì)和法律體系的不斷發(fā)展和完善,監(jiān)督執(zhí)法工作所涉及的范圍越來(lái)越廣,執(zhí)法量日趨增加。提高執(zhí)法人員的執(zhí)法力度、加快執(zhí)法速度、構(gòu)建和諧執(zhí)法環(huán)境已經(jīng)成為日趨嚴(yán)峻的問(wèn)題,為解決復(fù)雜環(huán)境下取證信息容易被破壞的難題,設(shè)計(jì)了一款能夠?qū)崿F(xiàn)視頻實(shí)時(shí)傳輸?shù)囊苿?dòng)執(zhí)法監(jiān)督終端。隨著移動(dòng)互聯(lián)網(wǎng)、3G等技術(shù)的快速發(fā)展以及智能設(shè)備廣泛使用使得視頻的實(shí)時(shí)傳輸成為現(xiàn)實(shí),數(shù)據(jù)壓縮比更高的流媒體技術(shù)為視頻數(shù)據(jù)的實(shí)時(shí)傳輸提供了保障。因此,設(shè)計(jì)并實(shí)現(xiàn)了一款基于 Android 平臺(tái)的視頻實(shí)時(shí)傳輸系統(tǒng),使用 Android 智能移動(dòng)設(shè)備作為視頻采集端隨時(shí)隨地的采集視頻,服務(wù)器接受終端請(qǐng)求即時(shí)發(fā)送指令,采集端根據(jù)需求靈活快捷的進(jìn)行拍攝并將視頻數(shù)據(jù)實(shí)時(shí)傳輸給服務(wù)器,完成邊錄邊傳。本系統(tǒng)不僅擴(kuò)大了采集范圍降低可采集成本,而且使得采集方式更為靈活[1]。

Android智能移動(dòng)終端可根據(jù)應(yīng)用領(lǐng)域的特點(diǎn)進(jìn)行功能擴(kuò)展,可廣泛應(yīng)用于公安、交通、城管、工商、環(huán)保、文化、質(zhì)監(jiān)、安監(jiān)、藥監(jiān)、農(nóng)業(yè)、司法等執(zhí)法部門(mén)。主要應(yīng)用于需要數(shù)據(jù)實(shí)時(shí)上傳的場(chǎng)合(數(shù)據(jù)易遭破壞或者取證設(shè)備面臨被搶奪的風(fēng)險(xiǎn))。在緊急模式下,實(shí)現(xiàn)取證和數(shù)據(jù)上傳的一鍵操作,保證數(shù)據(jù)的實(shí)時(shí)上傳到服務(wù)器。針對(duì)視頻等數(shù)據(jù)量大的文件,采用自定義傳輸協(xié)議,優(yōu)化傳輸過(guò)程,實(shí)現(xiàn)邊錄邊傳。

1 Android網(wǎng)絡(luò)通信方式

Android智能設(shè)備和服務(wù)器主要有兩種通信方式:Http通信和 Socket通信。http采用“請(qǐng)求—響應(yīng)”方式,在客戶端發(fā)送請(qǐng)求時(shí)建立通道連接客戶端和服務(wù)器,客戶端向服務(wù)器發(fā)出請(qǐng)求后,服務(wù)器才能將數(shù)據(jù)返還給客戶端。Socket通信則可在服務(wù)器和客戶端建立連接后直接傳輸數(shù)據(jù),信息可以主動(dòng)推送,客戶端不需每次都向服務(wù)器發(fā)請(qǐng)求[4]。

1.1Socket通信

Socket又被稱(chēng)為套接字,在程序內(nèi)部提供端口與外部進(jìn)行通信。socket連接的建立,為通信雙方的數(shù)據(jù)提供了傳輸通道。Socket不僅丟失數(shù)據(jù)比率較低,而且簡(jiǎn)單易用且便于移植[2]。圖1為Socket通信模型。

1.2協(xié)議選取

系統(tǒng)傳輸?shù)臄?shù)據(jù)均是基于IP協(xié)議傳輸?shù)闹饕袃煞N:視頻數(shù)據(jù)和控制信息。兩類(lèi)數(shù)據(jù)有著不同的特性:(1)信息控制使用TCP傳輸協(xié)議。因?yàn)榭刂菩畔⒅饕髠鬏數(shù)目煽啃远p視實(shí)時(shí)性,所以采用有著重傳機(jī)制和握手過(guò)程較為嚴(yán)格的 TCP協(xié)議。(2)視頻數(shù)據(jù)通過(guò)應(yīng)用層RTP協(xié)議和傳輸層UDP協(xié)議進(jìn)行傳輸。因?yàn)楸鞠到y(tǒng)重點(diǎn)在于視頻數(shù)據(jù)傳輸?shù)臅r(shí)效性,因此通過(guò)應(yīng)用層RTP協(xié)議對(duì)傳輸實(shí)時(shí)視頻數(shù)據(jù)服務(wù)提供支持。傳輸層UDP協(xié)議沒(méi)有擁塞控制,因?yàn)閷?duì)實(shí)時(shí)視頻數(shù)據(jù)傳輸使用的是交付的方式,因此實(shí)時(shí)視頻數(shù)據(jù)較大時(shí)采用該方式進(jìn)行傳輸。接收來(lái)自上層應(yīng)用程序的信息碼流,接收后通過(guò)應(yīng)用層 RTP協(xié)議將其裝配成數(shù)據(jù)包發(fā)給下層,經(jīng)UDP/IP 協(xié)議封裝形成 RTP 流[3]?;?RTP 協(xié)議構(gòu)建傳輸系統(tǒng),使用UDPSocket構(gòu)建傳輸層通道。

圖1 Socket通信模型

2 系統(tǒng)總體設(shè)計(jì)

系統(tǒng)采用的是Socket 傳輸模式,客戶端和服務(wù)器端首先建立 Socket 連接,連接后一個(gè)端可使用打開(kāi)、讀寫(xiě)和關(guān)閉等操作,另一端可按相同順序接受所有信息。面向連接和無(wú)連接相比較而言操作效率雖然比較低,但卻具有很高的數(shù)據(jù)安全性。系統(tǒng)利用Socket建立客戶端與服務(wù)器端的數(shù)據(jù)通信鏈路,使用 3G網(wǎng)絡(luò)作為物理通信鏈路,采用 MVC(Model-View-Controller)框架模式,本系統(tǒng)主要由視頻采集端和服務(wù)器兩部分構(gòu)成。

系統(tǒng)總體設(shè)計(jì)為服務(wù)器通過(guò)移動(dòng)網(wǎng)絡(luò)接收android智能設(shè)備的實(shí)時(shí)視頻數(shù)據(jù)。即android智能移動(dòng)終端發(fā)送傳輸實(shí)時(shí)視頻數(shù)據(jù)的請(qǐng)求,服務(wù)器接收解析后通過(guò)Socket與智能終端建立連接,智能終端捕獲視頻數(shù)據(jù)將之發(fā)送到服務(wù)器編解碼,服務(wù)器可以實(shí)現(xiàn)實(shí)時(shí)播放和保存。圖2為系統(tǒng)架構(gòu)設(shè)計(jì)圖。

圖2 系統(tǒng)架構(gòu)設(shè)計(jì)圖

2.1服務(wù)器端設(shè)計(jì)

服務(wù)器基于流媒體服務(wù)器平臺(tái),具有初始化網(wǎng)絡(luò)端口號(hào)和主機(jī)地址,等待移動(dòng)終端的連接請(qǐng)求實(shí)時(shí)捕捉現(xiàn)場(chǎng)圖像,通過(guò)網(wǎng)絡(luò)接口接收存儲(chǔ)和管理實(shí)時(shí)視頻數(shù)據(jù)等功能。在android智能設(shè)備發(fā)出請(qǐng)求與服務(wù)器成功建立連接后,可向服務(wù)器發(fā)送采集到的實(shí)時(shí)視頻數(shù)據(jù)。服務(wù)器端主要用于接收android智能設(shè)備發(fā)送的實(shí)時(shí)視頻數(shù)據(jù),在 Visual Studio 編程環(huán)境下通過(guò)java語(yǔ)言來(lái)實(shí)現(xiàn),在進(jìn)行網(wǎng)絡(luò)通信傳輸時(shí),傳輸層通信采用相對(duì)來(lái)說(shuō)可靠性和穩(wěn)定性較強(qiáng)的UDPSocket協(xié)議實(shí)現(xiàn)服務(wù)器和移動(dòng)智能終端之間的通信,以實(shí)現(xiàn)圖像穩(wěn)定傳輸。

初始化,使用Server類(lèi)對(duì)服務(wù)器初始化,通過(guò)Socket從智能移動(dòng)終端讀取實(shí)時(shí)視頻數(shù)據(jù),使用Input Stream定義輸入流,創(chuàng)建要保存的文件。視頻捕獲,通過(guò)對(duì)視頻響應(yīng)函數(shù)中CaptureVideo類(lèi)的調(diào)用來(lái)實(shí)現(xiàn)對(duì)現(xiàn)場(chǎng)實(shí)時(shí)捕捉。

2.2視頻采集端設(shè)計(jì)

視頻采集端調(diào)用Camera.PreviewCallback接口,在重載函數(shù) onPreviewFrame()里獲取當(dāng)前攝像頭捕捉到的實(shí)時(shí)視頻數(shù)據(jù),然后通過(guò)Socket將實(shí)時(shí)視頻數(shù)據(jù)和一些相關(guān)參數(shù)等傳輸?shù)椒?wù)器端。服務(wù)器端監(jiān)聽(tīng)對(duì)應(yīng)端口,對(duì)所獲取到的所有數(shù)據(jù)做相應(yīng)的解析處理和數(shù)據(jù)的還原等處理,實(shí)現(xiàn)了智能移動(dòng)終端采集到的視頻數(shù)據(jù)實(shí)時(shí)的傳輸?shù)椒?wù)器。

客戶端和服務(wù)器進(jìn)行實(shí)時(shí)通信主要是通過(guò)TCP/IP協(xié)議,利用Socket來(lái)完成的。視頻采集端使用Socket類(lèi)實(shí)現(xiàn)Socket通信,使用PrintWriter來(lái)寫(xiě)入命令,連接服務(wù)器或與服務(wù)器斷開(kāi)時(shí),都需發(fā)出命令通知服務(wù)器。若采用Socket發(fā)送數(shù)據(jù),則通過(guò)OutputStream將ByteArrayInputStream數(shù)據(jù)流讀入,文件數(shù)據(jù)流轉(zhuǎn)換為ByteArrayOutputStream。

onPreviewFrame()重載函數(shù)是獲取實(shí)時(shí)視頻圖像的關(guān)鍵,onPreviewFrame()包含兩個(gè)參數(shù),其中byte[],是當(dāng)前采集到的視頻圖像數(shù)據(jù),YuvImage將其轉(zhuǎn)換為ByteArray OutputStream數(shù)據(jù),然后采用線程進(jìn)行發(fā)送。顯示實(shí)時(shí)視頻畫(huà)面,需繼承View類(lèi)然后重寫(xiě) onDraw()方法。onDraw()方法所實(shí)現(xiàn)出來(lái)的內(nèi)容,將在智能移動(dòng)終端顯示。定義一個(gè) Bitmap 對(duì)象,當(dāng)用于接收?qǐng)D片數(shù)據(jù)的線程在接收到新數(shù)據(jù)時(shí),將數(shù)據(jù)傳給該Bitmap對(duì)象,并在線程中調(diào)用postlnvalidate()方法,重繪畫(huà)面。為了使系統(tǒng)顯示具有更為理想的效果,系統(tǒng)設(shè)計(jì)使用了雙緩存機(jī)制。將當(dāng)前采集到的視頻畫(huà)面存儲(chǔ)在原對(duì)象中,剛接收到的畫(huà)面儲(chǔ)存在變量的另一對(duì)象中。若網(wǎng)絡(luò)問(wèn)題不能及時(shí)的接收新數(shù)據(jù),則使另一對(duì)象為空,系統(tǒng)還將顯示先前畫(huà)面。這種處理方式可以使用戶體驗(yàn)在一定程度上有所提高。

3 系統(tǒng)應(yīng)用及測(cè)試

該系統(tǒng)可應(yīng)用在公安、稅務(wù)、交通、民政等行業(yè)的監(jiān)督執(zhí)法移動(dòng)終端上。視頻取證信息的實(shí)時(shí)采集和上傳操作的同步進(jìn)行,可以有效解決復(fù)雜環(huán)境下取證信息容易被破壞的難題。

使用華為 mate7等手機(jī)作為客戶端進(jìn)行測(cè)試,測(cè)試結(jié)果表明系統(tǒng)較為穩(wěn)定,使用 移動(dòng)3G網(wǎng)絡(luò)同服務(wù)器建立連接,連接耗時(shí)不足3 s,圖像數(shù)據(jù)雖然有著一定的丟包率,但是就整體來(lái)看能夠較為流暢的進(jìn)行播放,實(shí)現(xiàn)了預(yù)期效果。不僅如此,系統(tǒng)開(kāi)發(fā)過(guò)程中使用模塊化思想進(jìn)行編程,為后期對(duì)系統(tǒng)的功能進(jìn)行維護(hù)和拓展提供了便利。

4 結(jié)語(yǔ)

設(shè)計(jì)并編碼實(shí)現(xiàn)基于Socket的Android移動(dòng)終端實(shí)時(shí)視頻傳輸系統(tǒng)。系統(tǒng)不僅可以跨平臺(tái)進(jìn)行移植,而且使用了模塊化的思想可用于二次開(kāi)發(fā),利用Socket信道對(duì)視頻采集端進(jìn)行控制,使得系統(tǒng)移動(dòng)、實(shí)時(shí)、可控和靈活等特性均得到了提高。此基礎(chǔ)上通過(guò)H.264編碼方式[5]使網(wǎng)絡(luò)適應(yīng)性得到提高是下一步開(kāi)發(fā)的預(yù)期?,F(xiàn)今已步入了4G時(shí)代,加快了移動(dòng)網(wǎng)絡(luò)的傳輸速率,手持移動(dòng)終端設(shè)備性能大幅提升,可以預(yù)期本系統(tǒng)有著極為廣闊的應(yīng)用前景。

[1] 付少華,付紅嬌,王政.基于 3G網(wǎng)絡(luò)的手機(jī)移動(dòng)視頻監(jiān)控系統(tǒng)的設(shè)計(jì)[J].計(jì)算機(jī)應(yīng)用,2011,31(1):70-72.

[2] 夏玲,王偉平.客戶端與服務(wù)器端的Socket通信[J].電腦知識(shí)與技術(shù),2009,4(5):812-813.

[3] 趙臣兵,劉立柱.基于 RTP協(xié)議的視頻實(shí)時(shí)采集與傳輸?shù)难芯縖J].微計(jì)算機(jī)信息,2006,19(16):124-126.

[4] 姚星吳,劉衛(wèi)國(guó).Android 的架構(gòu)與應(yīng)用開(kāi)發(fā)研究[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2008,(11):110-113.

[5] 申超,周明.基于 H.264的監(jiān)控系統(tǒng)中手機(jī)客戶端的設(shè)計(jì)[J].微計(jì)算機(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-),男,廣西師范學(xué)院計(jì)算機(jī)與信息工程學(xué)院碩士研究生,研究方向?yàn)橹悄芸刂葡到y(tǒng)及其應(yīng)用;周燕琴(1987-),女,廣西師范學(xué)院計(jì)算機(jī)與信息工程學(xué)院碩士研究生,研究方向?yàn)榇髷?shù)據(jù)與數(shù)據(jù)挖掘。

猜你喜歡
服務(wù)器端客戶端終端
Linux環(huán)境下基于Socket的數(shù)據(jù)傳輸軟件設(shè)計(jì)
X美術(shù)館首屆三年展:“終端〉_How Do We Begin?”
通信控制服務(wù)器(CCS)維護(hù)終端的設(shè)計(jì)與實(shí)現(xiàn)
如何看待傳統(tǒng)媒體新聞客戶端的“斷舍離”?
縣級(jí)臺(tái)在突發(fā)事件報(bào)道中如何應(yīng)用手機(jī)客戶端
孵化垂直頻道:新聞客戶端新策略
大樞紐 云平臺(tái) 客戶端——中央人民廣播電臺(tái)的探索之路
淺析異步通信層的架構(gòu)在ASP.NET 程序中的應(yīng)用
基于Qt的安全即時(shí)通訊軟件服務(wù)器端設(shè)計(jì)
多功能北斗船載終端的開(kāi)發(fā)應(yīng)用