APP下载

基于Socket的Android移动终端视频实时传输系统的设计与实现

2015-11-24吕绪洋周燕琴

大众科技 2015年12期
关键词:服务器端客户端终端

吕绪洋 周燕琴

(广西师范学院计算机与信息工程学院,广西 南宁 530023)

基于Socket的Android移动终端视频实时传输系统的设计与实现

吕绪洋 周燕琴

(广西师范学院计算机与信息工程学院,广西 南宁 530023)

设计并编码实现基于Socket的Android移动终端实时视频传输系统。利用Android智能设备对目标现场进行视频采集、编码并实时传输到服务器,服务器接收并保存且可以解码播放。系统不仅可以实现实时视频的传输,而且可以灵活便利的使用于各种场合,具备较为广阔的应用前景。

Socket通信;android平台;视频实时传输

随着我国经济、社会和法律体系的不断发展和完善,监督执法工作所涉及的范围越来越广,执法量日趋增加。提高执法人员的执法力度、加快执法速度、构建和谐执法环境已经成为日趋严峻的问题,为解决复杂环境下取证信息容易被破坏的难题,设计了一款能够实现视频实时传输的移动执法监督终端。随着移动互联网、3G等技术的快速发展以及智能设备广泛使用使得视频的实时传输成为现实,数据压缩比更高的流媒体技术为视频数据的实时传输提供了保障。因此,设计并实现了一款基于 Android 平台的视频实时传输系统,使用 Android 智能移动设备作为视频采集端随时随地的采集视频,服务器接受终端请求即时发送指令,采集端根据需求灵活快捷的进行拍摄并将视频数据实时传输给服务器,完成边录边传。本系统不仅扩大了采集范围降低可采集成本,而且使得采集方式更为灵活[1]。

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通信模型

2 系统总体设计

系统采用的是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()方法,重绘画面。为了使系统显示具有更为理想的效果,系统设计使用了双缓存机制。将当前采集到的视频画面存储在原对象中,刚接收到的画面储存在变量的另一对象中。若网络问题不能及时的接收新数据,则使另一对象为空,系统还将显示先前画面。这种处理方式可以使用户体验在一定程度上有所提高。

3 系统应用及测试

该系统可应用在公安、税务、交通、民政等行业的监督执法移动终端上。视频取证信息的实时采集和上传操作的同步进行,可以有效解决复杂环境下取证信息容易被破坏的难题。

使用华为 mate7等手机作为客户端进行测试,测试结果表明系统较为稳定,使用 移动3G网络同服务器建立连接,连接耗时不足3 s,图像数据虽然有着一定的丢包率,但是就整体来看能够较为流畅的进行播放,实现了预期效果。不仅如此,系统开发过程中使用模块化思想进行编程,为后期对系统的功能进行维护和拓展提供了便利。

4 结语

设计并编码实现基于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-),女,广西师范学院计算机与信息工程学院硕士研究生,研究方向为大数据与数据挖掘。

猜你喜欢

服务器端客户端终端
Linux环境下基于Socket的数据传输软件设计
X美术馆首届三年展:“终端〉_How Do We Begin?”
通信控制服务器(CCS)维护终端的设计与实现
如何看待传统媒体新闻客户端的“断舍离”?
县级台在突发事件报道中如何应用手机客户端
孵化垂直频道:新闻客户端新策略
大枢纽 云平台 客户端——中央人民广播电台的探索之路
浅析异步通信层的架构在ASP.NET 程序中的应用
基于Qt的安全即时通讯软件服务器端设计
多功能北斗船载终端的开发应用