首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

基于Android平台的可视对讲系统设计

基于Android平台的可视对讲系统设计

本帖最后由 yuchengze 于 2016-12-27 15:08 编辑

Android是Google公司推出的基于Linux的开源手机操作系统,由于代码开源,受到很多手机厂家的青睐。可视对讲系统在Android操作系统未出现之前,软件研发一般采用底层语言,容易出现功能单一、产品升级困难等情况,要在对讲系统中开发出具有3D图形效果的界面更是难上加难。鉴于此,本文利用Android平台的可移植性、代码开源等优势,结合JNI、NDK技术,提出了基于Android平台的可视对讲系统的设计方案并加以实现。
JNI[1](Java Native Interface)是Java本地调用接口,它使得运行于Android平台的Java程序可以使用C、C++甚至汇编语言编写的动态链接库。在需要频繁访问内存或复杂计算的情况下,使用C动态链接库比在Android平台上使用Java语言实现相同功能更具有效率[2]。NDK[3](Native Development Kit)提供了一系列的工具,可以生成ARM二进制码的动态库,并且能自动地将生成的动态库和Java应用程序一起打包成Android系统可以直接安装的apk安装包,即NDK可以将包含JNI接口函数的C源程序文件编译生成动态库,供Android应用程序调用,提高了对现有代码的重用性,而加快了开发进度。

本文提出一种可视对讲系统设计方案,对讲双方为门口机和室内机,并将设计方案在i.MX51硬件平台进行实现。门口机进行音视频的采集、编码、传输及音频解码、播放;室内机采用Android平台,但考虑用户室内信息的保密性,室内机没有视频采集功能,室内机只进行音视频的解码、播放以及音频的采集、编码、传输。

1 可视对讲系统设计

1.1 通信流程设计

数据包传输协议使用面向无连接、资源消耗小、处理速度快的UDP协议。寻址完成建立UDP直连后,门口机首先对视频进行编码传输,直到被叫方按下接听键后,门口机才对音频数据进行传输。为了保证通话一直在线,室内机每隔一定的时间向门口机发送通话在线询问,如果收到在线确认应答则保持通话状态,否则就结束通话。可视对讲系统通信流程如图1所示。

表2中:包头为对讲数据包的标示符,命令类型、操作类型说明详见表3,时间戳主要是用于音视频的同步,数据类型分为音频和视频两种,帧序号为0~65 535。如果没有进行数据包分段,则总包数与当前包数均为1。音视频数据从第41位开始算起,音视频数据长度由数据包格式中的数据长度所指定。
 根据系统通信流程图1、结合数据包格式,本对讲系统参数如表3所示。其中命令类型、操作类型分别与表2数据包格式相对应。


1.5 音视频编解码选择

系统音频编码选用G.711编码[4]。G.711是一种由国际电信联盟订定的音频编解码方式,拥有一倍的压缩率,是语音通信中最常用的编解码方式之一。采样和量化是音频编程及声音数字化的两个关键步骤,本系统使用的音频采样频率为8 kHz、量化位数为16 bit、单声道。
FFmpeg是用于音频和视频开源方案,由于它的开源和免费以及跨平台的特点,受到开发商的青睐。FFmpeg支持包括xvid等在内的多达90种解码器,由C语言实现,不仅可以应用于PC软件平台,也可以用于嵌入式设备。本系统中视频选用xvid编解码器,视频格式为MPEG-4。(xvid是一个开放源代码的MPEG-4视频编解码器)视频标准采用NTSC制,视频尺寸为352×240,帧频为30 F/s;使用NDK提供的交叉编译工具将包含JNI接口函数的音视频编解码源文件统一编译成为动态链接库,供Android平台调用。

2 系统实现

2.1 系统软硬件平台

系统硬件平台为i.MX51 EVK。i.MX51 EVK是由Freescale公司自主研发的,中央处理器基于ARM Cortex A8核心的i.MX51处理器;主频可扩展到1 GHz;处理器内部集成了DDR/DDR2内存控制器、OpenGL/OpenVG图形核心、ATA控制器、以太网控制器等,支持720 p高清视频播放;指令缓存和数据缓存为32 KB,二级缓存为256 KB;其容量指标是之前ARM11产品的2倍,可大大提高CPU的处理能力。同时处理器内部还集成了矢量运算的浮点运算及信号处理加速器,为多媒体信息娱乐终端提供了强大的处理核心支持[5]。

系统软件平台采用Linux操作系统、eclipse集成开发环境。Android SDK[6]版本为2.2,Android NDK版本为android-ndk-r6。使用串口进行调试。

2.2 Android平台在i.MX51 EVK上的移植

系统采用4 GB的SD卡存放引导程序、内核、根文件系统等镜像。引导程序采用U-Boot,Linux内核版本为2.6.31。移植流程:Android源码可以从http://source.android.com获取到,编译好U-Boot、Linux内核、根文件系统以及Android系统镜像[7]后,设置i.MX51板上的S1 Boot Switch模式为1100000001,使用ATK工具进行镜像的下载。下载后系统镜像在SD卡上分布图如图3所示。
返回列表