【Android论文栏目提醒】:网学会员Android论文为您提供基于Android系统的H_264视频监控解码实现 - 期刊论文参考,解决您在基于Android系统的H_264视频监控解码实现 - 期刊论文学习中工作中的难题,参考学习。
系统设计 有线电视技术 浙江省通信网应用技术研究重点实验室 戴而正 徐志江 浙江工业大学 付 昂 重庆电力公司电力科学研究院 摘要:本文首先简要介绍了基于 Linux 平台的
Android 操作系统以及
Android NDK 技术,再阐述了整个视频监 控系统的原理与结构框架,然后重点说明了对 H.264 实时视频进行解码显示的设计方法,最后在
Android 视频监控软 件中实现了该设计。
关键词:
Android NDK 视频监控 FFmpeg J NI 1 引 言
Android 系统采用了整合的策略思想,其操作系 统体系结构分为 4 层,由上而下依次是应用程序、应 现今人们生活节奏不断加快,家庭用户对于家庭 用程序框架、核心类库和 Linux 内核,其中在第三层 安防的需求也日趋增加。
作为安全防范的重要监控、 还包括
Android 运行环境 。
4组成部分,视频监控系统在保护安全、预防犯罪方面 ) (1 应用程序层:应用是用 Java 语言编写的运行起到不可低估的作用。
随着市场的需求,在尽可能低 在虚拟机上的程序,
Android 本身包含一些核心应用,的存储情况下获得好的图像质量和低带宽图像快速 开发者还可以在此基础上开发出更多有特色的传输已经成为视频压缩的两大难题1。
其中,H.264 以
Android 应用程序。
其出众的编码效率、网络适应性和差错恢复能力成为 ) (2 应用程序框架层:
Android 应用程序开发是基了主流的一种视频编码格式。
另外,现在随着
Android 于框架和组件的,在该层中,开发人员拥有访问框架等智能手机的普及,它和高速移动宽带的结合提供了 API 的全部权限,这样便简化了程序开发的架构设一个平台,在这个平台上可以开发出大量丰富的应 计,大大提高了应用程序开发效率。
用,这也使利用手机观看监控视频成为可能2。
而针对 ) (3 核心类库层:核心类库包括标准 C 函数库、媒手机硬件资源有限的情况, 则需要在
Android 系统下 体功能库、浏览器引擎、 和 3D 图形库及 SQLite 引 2D实现一种高效的 H.264 监控视频解码方式。
擎等,开发者利用这些功能可方便开发出人机界面友 好的应用程序接口,极大地缩短了开发进程。
另外, 2
Android 操作系统
Android 运行环境包含一组 Java 内核库及 Dalvik 虚 拟机,它们有效地优化了 Java 程序的运行过程。
Android 是 Google 于 2007 年 11 月 5 日宣布的 ) (4 Linux 内核层:
Android 系统平台基于优化了基于 Linux 平台的开源手机操作系统, 该平台由操作 的 Linux version 2.6.23 内核来开发,内核层位于硬件系统、 中间件、用户界面和应用软件组成, 号称是首个 与其它的软件层之间, 作为一个虚拟的中间层, 用来为移动终端打造的真正开放和完整的移动软件3。
提供系统的底层服务。
2.1
Android 系统体系结构 2.2
Android NDK 与 J NI 技术 88 201 2 年第 7 期(总第271 期)有线电视技术 系统设计 图1 手机远程视频监控系统框架
Android NDK ) (Native Development Kit 是一套基 4 视频解码设计于 C/C底层开发 API 的集成工具组件,用于帮助开发者快速开发 C/C的动态库。
Android NDK 集成了
Android 手机客户端用户在登录 SIP 服务器后,交叉编译器,并提供了相应的 Makefile 文件以隔离 通过请求设备视频与视频服务器建立起 RTP 连接进CPU、平台、 等差异,开发人员只需要简单修改 ABI 行 H.264 数据的传输。
客户端在接收到 RTP 包后将Makefile 文件(指出“哪些文件需要编译” 编译特性 、 “ 其组包成 H.264 标准的 NAL 分片,再将完整的 NAL 等 ,要求” ) 就可以创建出.so 动态库,极大地减轻了开 由 送入解码线程, H.264 解码器进行解码。
发人员的打包工作 。
5 4.1 H.264 解码器设计 另外,
Android NDK 编译的 Native C/C无法直
Android 应用程序是由 Java 代码来实现,但是底接在 Java 中使用,它要求必须是通过 Java 代码嵌入 层的 H.264 视频解码算法则需用 C 语言来完成以满 —即通过 JNI (Java Native InterfaceNative C/C—— ) 足速度的要求。
转换、 FFmpeg 是一个集录制、 音/视频编的方式来使用本地 ) (Native 代码。
平台提供了 JNI Java 完整的开源解决方案, 解码功能为一体的、 其完美支持标准,它允许 Java 代码和 C/C写的代码进行交互, H.264 格式编解码,并拥有十分出众的运行效率6。
因即上层的 Java 程序可通过 Native 界面来调用.so 动态 此,我们将 C 语言实现的 FFmpeg 移植到
Android 中库中的 C/C组件函数。
去,但完整的 FFmpeg 视频解码方案过于庞大, 受制 于
Android 手 机 的 资 源 , 需 利 用
Android NDK 将 3 视频监控系统框架 FFmpeg 中裁减出的 H.264 解码部分编译成动态库。
首先对 FFmpeg 进行裁减,只保留 H.264 解码部 本系统主要实现
Android 手机通过 3G 网络来随 分, 并在 configure.h 中设置编译配置信息, 对各个参时随地进行远程视频监控。
视频监控系统主要由设备 数进行优化:端、服务器端和手机客户端组成, 它们之间用 3G 网络 ./configure -enable -version3 -disable -encoders -相连接, 如图 1 所示。
enable -decoder h264 -disable -parsers -disable -bsfs - 其中设备端是采用嵌入式 Linux 系统的网络摄 enable-muxertgp-disableprotpcols-enable-protpcol像机,负责采集视频数据、 H.264 图像压缩和 RTP file 服(Real Time Protocol)分片打包 ; 务 器 端 包 括 SIP 另外,
Android NDK 与一般 Linux 系统仍然存在(Session Initiation Protocol)信令服务器和视频服务 平台的差异,在跨平台编译 FFmpeg 源代码时不能使器, 信令服务器主要通过 SIP 信令对设备和手 SIP 用原有 makefile 文件,标准的 makefile 文件是指定.o机用户进行管理,并负责转发客户端的 SIP 信令到 目标文件,然而在
Android.mk 文件中需要直接指定.c设备端,而视频转发服务器主要完成将 H.264 视频 源文件:数据的 RTP 包从设备端转发到手机客户端;
Android ( LOCAL_PATH: (call my-dir )手机客户端则需要提供给用户最直观的操控与视 (CLEAR_VARS include )频界面,主要完成对 H.264 视频数据的解码与显 LOCAL_SRC_FILES: ) (FFFILES //编译的 H.264示。
解码源文件201 2 年第 7 期(总第 271 期) 89系统设计 有线电视技术 类中配合 Runnable 线程接口来实现,其流程如图 2 所示。
在上述 H.264 解码器的.so 动态链接库中包含 了 解 码 主 要 的 两 个 函 数 , 即 InitDecoder ()和 (, DecoderNal ) 这两个函数在 View 类中需要通过 JNI 方式来嵌入。
客户端程序在与视频服务器建立起媒体 流连接后, ( 进行初始化解码器, 调用 InitDecoder ) 并 开启解码线程,解码线程通过 JNI 调用 解 码 函 数 (对 DecoderNal ) NAL 进行解码, ( 再由 postInvalidate ) 函数来通知 UI 线程更新 View 组件,最后 View 类中 ( 负责重新绘制位图, 的绘图函数 onDraw ) 以此实现 H.264 视频的实时播放显示。
5 实验分析 基于
Android 操作系统进行视频监控软件的开 图2 H.264 视频解码流程图 发,利用
Android 通用框架和与设备无关的应用程序 开发平台,设计了 H.264 网络监控视频流的解码,实 … 现了手机进行远程实时视频监控。
在软件的设计中充 LOCAL_MODULE:H264
Android 分考虑了
Android 系统的易移植、高效率等优点, 集 (BUILD_SHARED_LIBRARY include ) 中使用了 JNI 技术和
Android 系统各接口 API 模块, 通 过
Android NDK 对 其 编 译 后 , 会 得 到 一 个 使程序从开发效率和运行效率上都有较大的提升。
图libH264
Android.so 动态链接库文件, 至此, 我们就成 3 是软件对 H.264 网络监控视频的解码画面,总体功将 H.264 解码器移植到了
Android 系统中。
H.264 解码效率较高, 上, 视频画面清晰流畅。
4.2 解码流程设计 在程序中,视频的解码显示是在自定义的 View 6 结束语 本文根据视频监控系统中对 H.264 视频流解码 的要求,结合
Android NDK 与 JNI 技术,在
Android 系统下设计了 H.264 监控视频解码,并给出了具体的 软件实现方法,最后在
Android 平台上运行了该软 件,证明此方案可用于
Android 终端的视频监控中, 具有一定的实用价值与应用前景。
参 考 文 献 1 (5 : 卢秋波. 视频监控技术简介与发展趋势 J. 安防科技 2007 ) 21~23 2 胡晓乐. 基于
Android 平台的 MID 视频监控系统D. 中山大学 2010 3 宋小倩 周东升. 基于
Android 平台的应用开发研究J. 软件导刊 (2: 104~106 2011 10 4 公磊 周聪. 基于
Android 的移动终端应用程序开发与研究 J. 计 (8: 85~87 算机与现代化 2008 156 5 Reto Meier.
Android 2 高级编程M. 第二版. 北京: 清华大学出版 社 2010 图3 H.264 监控视频画面 6 蒋志峰. FFMPEG 的快速音视频开发方法 J. 微机与嵌入式系统 2008 1: 69~71蒉 90 201 2 年第 7 期(总第271 期)