基于Android平台的高清监控视频系统的优化设计

2017-07-05 08:52:43蒋达央
常州信息职业技术学院学报 2017年3期
关键词:播放器解码高清

蒋达央

(常州信息职业技术学院信息中心 江苏常州 213164)



基于Android平台的高清监控视频系统的优化设计

蒋达央

(常州信息职业技术学院信息中心 江苏常州 213164)

基于Android平台的视频监控客户端作为视频监控系统的后端应用,依托无线网络与监控系统存储和服务器通信,实时接收无线视频数据包并播放视频。由于无线视频监控系统是一个大数据量的传输系统,易受无线网络带宽和稳定性因素影响。为提高高清监控视频在移动客户端的播放效果,本研究分析了高清视频播放的特性,对视频的信号传输、编解码和数据验证方面,采用了基于Android平台的优化设计方案,为用户随时随地监看高清监控视频提供了一个较好的技术解决方案。

视频监控; Android; H.264

0 引言

随着信息技术的快速发展,智慧校园建设成为教育行业新一轮信息化建设目标。传统视频监控管理手段已无法满足现代化校园管理的需求。在智慧校园的背景下,大量高清网络数字视频监控摄像机被安装在校园的各个角落。随着无线通信技术和多媒体技术的发展,进一步推动了传统视频监控管理手段从有线迈向了无线领域。

1 问题的提出

无线网络视频监控系统主要由四个部分组成,分别是摄像机、有线或无线网络、视频服务器和移动应用客户端。这是结合音视频处理、网络通信、数据存储等多种信息技术的综合体。基于Android平台的移动视频监控系统相比PC机桌面式终端的监控系统,极大地扩展了监控应用的灵活性与范围,并且充分调用各个模块的硬件性能优势,进而在降低系统通信开销的同时提高了应用的拓展性。

无线视频播放是移动高清视频监控系统的主要功能,它是基于Android平台移动监控终端的核心技术。目前在视频监控领域主要采用VLC等开源技术,实现视频封装、编解码和播放等功能,VLC中包含live555和ffmpeg两个重要的类库。其中,Live555主要使用RTSP协议来支持各种编码格式的音视频数据,进行流化、接收和处理等[1]。而ffmpeg拥有音频/视频编解码库libavcodec,它为流化的音视频数据提供转换和编解码等的完整解决方案。经过ffmpeg解码完成之后,使用VLC在移动客户端视频监控系统程序界面上进行视频播放。

当live555将接收到的视频数据包选择网络用户数据报协议(UDP)作为视频流的传输协议时,因UDP协议是基于非连接的、只负责发送不负责检查发送结果的不可靠协议,这种不可靠性使得live555数据包进行视频传输时产生数据帧丢失现象[2]。而当live555使用TCP协议实施数据传输时,由于TCP协议是基于连接的、按顺序接收的可靠协议,这种可靠协议若遇到过大的网络数据流量,很容易发生节点路由设备因数据堵塞而出现缓冲区溢出现象,从而会使视频数据包发生丢失现象。以上两种传输模式都会造成视频播放出现马赛克、花屏等影响播放效果的现象。

2 优化设计方案

2.1 视频编译环境优化设置

本优化设计主要基于Libvlcjni.so库进行设计。在Android视频播放应用程序开发中,libVLC给Android应用程序的接口库提供了一个功能强大的Libvlcjni.so库。在多个网络协议支持层面,libvlcjni.so开发库支持RTP、HTTP、RTSP等多种网络应用协议,是一个成熟稳定的开源播放器开发库。

客户端视频播放器通过libVLC提供的libvlcjni.so中的JNI接口函数来实现高清监控视频控制和播放。在实际研究测试中,由于VLC项目对LINUX平台的支持最好,因此首先需要依托LINUX平台来编译VLC,并从中下载获取libvlcjni.so库。

在编译之前,首先需要搭建针对Android平台的软件编译环境,包括:AndroidSDK、NDK、JDK等一些列开发配置工具。经过测试,发现在LINUX操作系统下的Ubuntu15.10环境中交叉编译VLC for Android获取libvlcjni.so库效率较高,具体设计如下:

编译宿主主机系统:Ubuntu 16.04 LTS;

Android原生开发包NDK版本:android-ndk-r10;

Android软件开发包SDK版本:android-sdk-22;

Java开发包JDK版本:jdk-1.8.0_65;

VLC for Android的编译环境搭建完成后,进入根目录,使用shell脚本“./compile.sh”开始编译实施[3]。在项目环境的编译过程中,shell脚本文件会自动从网络下载基于的源代码。VLC作为具备多种格式音视频解码器的多媒体播放器,能作为基于unicast或 multicast设计的流媒体服务器在IPv4或 IPv6的高速有线无线网络环境下使用。系统编译完成后会在主文件夹下的libs文件夹中生成重要的libvlcjni.so库和其他相关的接口类库,此时可将整个libs文件夹拷贝到Android客户端项目文件中,那么在后期的项目程序开发过程中便可调用libvlcjni.so库,实现移动视频播放功能的开发。

2.2 优化视频播放器的设计

libVLC作为VLC for Android提供给用户二次开发所封装的接口库[4]。它封装了复杂的VLC架构,在开发过程中,只需要将这些类和接口函数包含到工程项目中,就可直接调用预置的、封装好的类和函数。具体过程如下:

第一步:声明对象。首先声明一个IVideoPlayer对象m_videoPlayer,它代表视频播放器对象。接着声明一个libVLC对象m_libVLC,视频播放、暂停等操作都由它来承担。

IVideoplayer m_videoplayer;

LibVLC m_LibVLC;

第二步:创建LibVLC视频播放器实例。首先利用已声明的m_libVLC对象调用其中的getinstance()函数获取到一个实例。然后利用m_libVLC调用attachSurface()函数来绑定播放器m_IVideoPlayer和视频播放窗口视图s_View。

m_libVLC=LibVLC. getinstance();

m_libVLC. attachSurface(s_ View, m_VideoPlayer);

第三步:创建视频播放表。首先利用MediaList创建一个列表实例m_List,然后将网络视频地址添加到m_List实例中,该地址连接着视频服务器的视频源,等待用户点击链接地址的访问。

MediaList m_List=m_LibVLC.getmediaList();

m_List.add(new media(m_Libvlc,libVLC.PathToURl(Url),false);

第四步:实现视频播放功能。利用m_libvlc对象通过调用playIndex()函数来解析播放列表中的视频链接地址。

m_libVLC.playIndex(0);

第五步:实现视频播放器停止播放功能。实现这个功能的同时要完成三项任务。首先需要通过m_libvlc对象调用Stop()函数实现视频播放的停止,然后利用m_libvlc对象的detachSurface()函数来解除s_View和m_LibVLC两者之间的链接绑定,最后使用destroy()函数来释放对象占用的资源,并销毁m_libVLC对象。

m_libVLC.stop();

m_libVLC.detachSurface();

m_libVLC.destroy();

2.3 获取H.264视频数据设计

在高清视频监控领域目前主要使用H.264这种视频编码标准。基于H.264的视频流帧结构序列由I、B、P三部分组成。在视频数据中,视频都是由若干个顺序图像组成。在H.264序列图像里的第一个图像都由I帧图像组成,也被称为IDR图像[5]。I帧图像是图像解码的核心句法元素,I帧可直接解码,一旦发生错误或丢失,该视频序列的后续图像信息几乎不可能再被正确解码出来。而P帧数据的解码则需要在I帧的基础上。当用户观看视频时,通过移动终端点击URL地址,VLC调用live555模块展开H.264视频流数据的获取。H.264视频数据获取过程主要分为三个层次,RTP层、NAL层、VCL层。见图1。

图1 H.264视频数据获取层次

RTP视频数据获取层是基础层。在这一层系统将通过RTP协议来传输H.264视频,它对从H.264视频中获得的数据信息中剥离出每个网络适配层单元,然后在每个单元前添加相应的起始码:0x000001,用来指示一个 NALU的起始和终止位置。最后将包含RTP协议的起始码和网络适配单元数据包发送出去。

NAL视频数据抽取层是中间层。在这一层基础层传输来的数据包解析为NAL头、RBSP原始字节序列负荷两部分,对NAL数据包头实施解析判断,并做出两种处理方式。第一判断是否有特殊字符标记,若有错误则对数据包进行抛弃处理,若正确则将NAL数据包送到VCL视频编码层。在做完这个判断后,系统自动释放数据链表所占用的内存资源,并对下一个RTP数据包的起始编码更新,以实现前后数据的连接。

VCL视频数据编码层处于最顶层,主要采用运动补偿预测,变换编码和熵编码等一系列手段对数据重新编码、压缩、封装,使视频内容得以更高效地传输、播放,以确保送到客户端解码器端的网络适配单元符合标准的顺序。

2.4 建立缓冲验证机制

视频帧数据缓冲验证机制工作建立主要是为了消除网络状况不佳或其他原因而引起的RTP数据包被动丢失和因延时时间过长而引起的数据主动丢弃所带来的H.264视频解码错误。H.264视频帧缓冲验证机制运行处于RTP层与NAL层工作时序之间,基本设计思想如下:首先在数据获取层和数据解析层之间建立一个H.264视频帧数据缓冲验证机制层。然后从RTP数据层中获取一个完整视频帧所有信息的RTP数据包,并把RTP数据包指针存储在缓冲层的一个队列中。接着利用NAL包头中的结束标志位来定位一个视频帧结束位置。最后对缓冲层中视频帧数据进行前后序列号验证,如果前后帧序列号连续且完整,则说明RTP数据正确,如果序列号有错误或不连续,则说明这一视频帧信息不完整或有错误在其中。为了避免错误数据被VLC送到ffmpeg进行视频解码,该验证机制有效防止了解码错误的扩散,对在下一个I帧到来之前的视频帧采用丢弃策略。

3 实验测试

对于以上的优化设计策略的合理性和实际使用效果,实验采用了模拟网络丢包测试,即在视频数据每隔500个数据包传输完成后,人工丢弃一个数据包的策略。在实验过程中采用对比法利用同一视频在“未经修改的VLC播放器”和“优化后的VLC播放器”中进行播放效果测试,测试视频数据分为两种,第一种为码率上限1 024 Kbit/s,分辨率为720 P,测试结果如图2所示;第二种为码率上限2 048 Kbit/s,分辨率为1 080 P,测试结果如图3所示。

b) 未经优化的视频播放

a) 经过优化后的视频播放

b) 未经优化的视频播放

从上面两组实验测试效果图可以看出,未经优化的视频播放器在播放视频时由于原始视频数据在传输时发生了丢包错误,最终出现了因视频帧数据信息不完整而无法正确解码所产生的马赛克、亮斑、杂色等影响观看效果图像,这一现象尤其是在暗部区域和边缘区域表现更为明显。而优化后的视频播放器由于系统采取了一系列合理的优化处理方法,使得视频播放器不会接收错误数据包并实施解码,因而播放出来的视频就没有出现花屏和马赛克等现象。因此,从本实验数据可以得出:基于Android平台的高清监控视频系统的优化设计对于因数据传输丢包、编解码误差、网络延时时间过长等引起的错误视频数据能够有效处理,保证了播放内容的清晰度。

4 结束语

在Android平台上观看高清监控视频,由于受4G移动无线网络带宽和网络稳定性方面的限制,要在有限的网络条件下提升视频的可视效果,则必须采用一定的视频优化播放技术。本次研究从基础环境配置到数据解码重组策略均实现了一定的优化设计,在一定程度上解决了网络视频因丢包和延时带来的视频播放不清晰的问题,为基于Android平台的移动客户端在高清视频监控应用领域提供了一种解决方法。

[1] 李宗辰,朱秀昌.基于VLC的Android多路视频监控系统[J].现代电子技术,2013(24):63-66.

[2] 李校林,刘海波,张杰,等.RTP/RTCP,RTSP在无线视频监控系统的设计与实现[J].电视技术,2011(19):89-92.

[3] 李校林,刘利权,张杰.基于RTP的H.264视频流实时打包传输的研究[J].计算机工程与科学,2012(5):168-171.

[4] 陈建明.Android平台的VLC播放器实现机制研究[J].单片机与嵌入式系统应用,2015(5):32-34.

[5] 陈锋锋.基于RTSP的流煤体传输系统的应用开发[D].南京:南京邮电大学,2013:23-35.

[责任编辑:李娟]

The Optimal Design of HD Video System Based on Android Platform

JIANG Dayang

(Information Center, Changzhou College of Information Technology, Changzhou 213164, China)

The video monitoring system based on Android platform acts as a back-end application for video surveillance systems. It relies on the wireless network and the monitoring system storage to communicate with the server, and receives wireless video packets in real time and plays video. Since the wireless video surveillance system is a large amount of data transmission system, it is vulnerable to wireless network bandwidth and stability factors. In order to improve the HD monitor video in the mobile client playback effect, this paper analyzes the characteristics of video playback, adopts the optimal design based on the Android platform in aspects of video signal transmission, codec and data validation. This provides a better technical solution for users to monitor HD video surveillance anytime and anywhere.Key words:video monitoring; Android; H.264

2017-04-07

2016年江苏省教育厅定向研究课题

蒋达央(1978-),男,工程师,硕士,主要研究方向:计算机科学技术、现代教育技术

TN 948.6

A

1672-2434(2017)03-0016-04

猜你喜欢
播放器解码高清
《解码万吨站》
Walkman诞生40周年 索尼适时发布NW-ZX500和NW-A100系列播放器
解码eUCP2.0
中国外汇(2019年19期)2019-11-26 00:57:32
基于STM32的MP3播放器设计
电子制作(2019年9期)2019-05-30 09:41:44
NAD C368解码/放大器一体机
Quad(国都)Vena解码/放大器一体机
Moon ACE播放器/放大器一体机
4K高清监控需要两条腿走路
数码单反拍摄高清视频时同期声的收录探索
新媒体研究(2015年7期)2015-12-19 09:09:57
播放器背板注塑模具设计
中国塑料(2015年8期)2015-10-14 01:10:55