APP下载

基于Android的视频采集与传输系统设计与研究

2020-07-09张建平

现代信息科技 2020年2期

摘  要:文章基于Android实时信息采集与传输问题,给出系统开发中采用的关键技术,程序开发采用Java语言设计,采用Android手机,以Linux内核软件开发平台为基础进行详细的软件设计,对系统核心功能进行详细的划分并对其功能做了详细设计,并给出了一些主要功能模型设计与实现,经测试表明本设计基本可以完成数据采集任务。

关键词:模型设计;视频采集;视频传输;Android

中图分类号:TP311       文献标识码:A 文章编号:2096-4706(2020)02-0025-03

Abstract:Based on the problem of Android real-time information collection and transmission,this paper presents the key technologies used in the system development. The program development uses Java language design,Android mobile phone,and Linux kernel software development platform as the basis for detailed software design. The core functions of the system are divided in detail and its functions are designed in detail,and some main function model settings are given the test shows that the design can basically complete the task of data acquisition.

Keywords:model design;video capture;video transmission;Android

0  引  言

本文基于陕西工业职业技术学院校内科研项目为背景,针对视频数据采集效率低下、性能不可靠、数据获取不及时的现象,着重利用Android平台、Socket通信与SQLite数据库构建移动视频采集与传输系统,系统采用便携式智能手机终端平台采集视频数据,通过无线网络传输数据来构建Android平台。本文首先对系统开发所需的相关理论及关键技术进行了详细的介绍;对系统的需求进行详细分析,在此基础上对系统的核心模块进行设计,完成服务端用户验证模块类模型设计、用户验证模块的交互模型设计和视频采集模块模型设计,基本达到软件项目预期的目标,为项目的开发和顺利完成打下良好基础。

1  关键技术

1.1  Android应用程序的组件

应用程序的组件是Android应用程序基本组建块,其中包含活动(Activity)、意图(Intent)、服务(Service)、内容提供器(Content Provider)。它们是构成Android应用程序的基础,但在某些应用程序中,只即可单独使用,也可以有相互交互的使用。

1.2  软件栈

Android平台采用了软件栈(Software Stack),又名软件叠层的架构,软件栈的顶层是应用,中间是中间件,由应用框架、库和Android Runtime组成,底层是带有各种驱动的Linux内核。我们开发是基于底层开发设计。

1.3  SQLite数据库技术

SQLite是一款系统安全类软件,采用轻量级嵌入式数据库引擎,支持SQL语言,并且只利用很少的内存就有很好的性能,可以把各种类型的数据保存到任何字段中,而不用关心字段声明的数据类型。

2  系统需求分析

依据软件系统功能的要求,图1为视频采集传输系统具体的用例图。整个系统由用户端和服务端组成,服务端主要负责数据收集、与用户端建立网络连接关系、接收并解析控制命令、与服務终端串口通信传输控制命令。当用户端通过用户验证模块(UI)后,用户可以发出视频采集指令,服务端接受指令,获取采集设备,启动视频采集设备,进行视频数据采集,采集到视频数据后经过编解码程序将视频编码,然后进入视频传输模块,把视频数据传输到用户端。从而实现了视频数据的实时传输。

3  系统详细设计

3.1  服务端用户验证模块类模型设计

用户验证模块类图的详细内容见图2,共分为三个模块:LoginController(登录控制器)类、ConfigManager(配置管理器)类、NetManager(用户帮助)类。

实现用户验证是类的主要功能,整个实现过程为:调用类进行文件配置,得到服务端地址后再调用类向用户发送验证并接收反馈。类主要负责辅助整个系统管理一些用户信息,以及配置文件的写入、读取工作等。

类会出现在多个系统模块中,主要负责面向服务端的指令的发送与接收工作;套接字通信被封装在其中,并采取单例模式,一些例如传输、登录等的控制功能都需要它去实现。

身份验证模块用于端用户登录验证的过程的主要参与者有LoginManager类、ConfigManager类和NetManager类,登录验证的全部过程。

类是客户验证功能的主要参与者。类在进行用户信息读取之后自行判断用户是否在前一次登录中选择了记住密码,如果用户选择了记住密码,系统会根据系统存储的信息记录同步用户名和密码,用户就不需要再输入。如果没有选中,登录页面的用户名和密码的输入框就是空白的,需要用户输入。用户在点击登录之后,系统会对用户名加上密码的信息在信息库里检索,并进行验证,由类负责。如通过验证,页面会跳转至客户界面,如未通过验证,即使用户成功进入系统界面,系统也会提示错误。

关于系统的安全性,客户在登录时填写的信息需要做好保密工作,特别是密码。系统采用了MD5方法对密码进行加密,这样即使客户在登录页面记住页码也是不存在安全问題的。

3.2  视频采集模块模型设计

在视频采集模块中,VideoCallback类构成了软件的主要部分,VideoReader(视频数据读取)类按照Android系统平台提供的标准类型接口NetManager编写,用于捕获视频数据;对于EncoderWrapper类来说,它的作用在于下层模块的通信,然后对JNI接口进行封装;组织和控制作用由Main类负责。详细内容可见图3。

作为采集模块的主界面,Main类能够对系统进行管理,对采集的过程进行控制,并把操作的接口分给用户,这样,用户就能够选择帮助等功能。

对于VideoCallback类来说,它主要是能够获取视频数据。在Android系统中,由于Camera框架的存在,用户可以从回调类中派生出新类,从而对视频数据的处理可用自定义的方法进行。对于Camera框架来说,用户设置的回调类都会经过它获得的每一帧预览,当获取Camera捕获的视频数据之后,为对数据进行压缩处理,数据都会被发往下层。

在EncoderWrapper类中,它们不仅能够调用采用JNI技术进行调用的下层模块接口,还能够封装这些模块接口,它的组成部分有写入方法和JNI模块的加载,此外还包括能够传输数据和命令的接口。

3.3  视频传输模块的设计

视频数据的传输是视频采集传输系统中较为重要的部分,为了实现用户的优质体验,去除控件加载,通过服务器OpenGLES来浏览服务端中采集的实时视频。Java的socket编程己经对网络层各协议封装得较完整。编程不需要知道太多关于不同的硬件之间相互通信的底层知识,只要学习Java的socket,就可以实现两台设备的通信。而本文需要传输实时流媒体的RTP数据包,无论是Java还是Android操作系统都对RTP协议不支持,必须自己设计一个网络传输模块,将数据流封装成RTP数据包,然后传输到网上,如图4所示。

4  结  论

本文在完善软件需求规格说明书的基础上,对系统整体进行需求分析,依据需求分析确定软件系统的整体结构、划分功能模块、确定核心模块的实现与具体的代码编写,形成软件系统的具体设计方案,将系统分解为服务端入口,视频采集、视频传输三个模块,进行总系统的详细设计并进行评价,对系统方案进行论证并作出性能效果预测,为下一步系统实现打好了基础。

参考文献:

[1] 朱珊珊.基于Android平台的库存管理系统设计与实现 [D].镇江:江苏大学,2012:16-21.

[2] 王晶晶.基于计算机软件开发的JAVA编程语言分析 [J].河南科技,2013(2):17.

[3] BUTLER M. Android. Changing the Mobile Landscap [J]. IEEE Pervasive Computing,2011 ,10(1):4-7.

作者简介:张建平(1978.10-),男,汉族,陕西岐山人,讲师,硕士,研究方向:计算机软件。