基于Android系统的H.264视频压缩技术实现
3.3 视频采集模块设计
基于Android系统的H.264压缩技术的视频采集部分包括Android视频流的提取以及Android界面设计两部分。Android可以在拍照视频预览时截取视频流的数据。每获得一帧调用相应的接口函数。其中在Android的上层界面中定义了一个SurfaceView类,主要用于显示采集到的图像。Android通过USB摄像头采集格式为YUV的视频数据,通过SurfaceView类接口传输到应用层通过图像绘制进行显示。
应用程序界面设计具体步骤:打开Android项目里的res\layout目录,用xml语言来编辑设计程序界面。首先确定界面的布局,嵌套ViewGroup的Linear-Layout和RelativeLayou进行布局,调整android:layout_width、android:layout_height、android:back-ground、android:padding等参数值,达到满意的整体布局效果。然后在ViewGrotrp布局中添加View控件:textview、button根据实际需要调整各控件的android:id、android:layout_heigllt、android:layout_width等参数值,最终完成对Android应用程序UI的布局。
3.4 H.264视频压缩模块设计
H.264是由ITU-T的VCEG和ISO/IEC的MPEG联合组建的联合视频组提出的一个新数字视频编码标准。它由VCL层和NAL层组成,VCL层主要负责编解码,主要包括运动补偿、变换编码、熵编码等;NAL层主要为VCL提供与网络无关的统一接口,负责将视频数据封装打包后传递给网络。
H.264标准视频压缩算法包括5个环节:帧间帧内预测编码、正反变换编码、量化反量化编码、环路滤波和熵编码。算法流程如图6所示。
技术实现是在Android操作系统上封装编译生成Android底层Library的JNI动态链接库,进而实现H.264标准编解码。具体实现步骤:选择合适的编码器,系统采用X264的编码器。X264省去了部分复杂增益,编码速度非常快,可以对CIF格式图像实时编码。H.264压缩画面以及分辨率:支持CIF/QCIF;图像分辨率:352×288;压缩格式H.264、MPEG-4压缩格式;压缩帧率:1~25帧可调;压缩码率:64 kbit·s-1~2 Mbit·s-1:码流控制方式:变码流、动码流、混合码流。H.264的优势主要体现在下面几个方面:(1)精确匹配解码,避免错误累积;(2)更简单的规范实施;(3)强大的容错能力;(4)高效压缩,比其他视频压缩能力高50%以上;(5)时延级差,以适应更多应用环境等。
3.5 主程序流程设计
基于Android视频服务器系统终端要接受来自监控前端的视频数据,必须采用Socket网络通信技术。
在进行Socket通信前必须对Socket初始化包括:创建Socket、绑定Socket和端口号、开始监听端口等步骤。创建Socket服务线程。当监听产生后,主进程负责不断循环地监听接收到的请求并建立新的客户连接Socket,创建针对此Socket的通信进程。
3.6 显示模块设计
Android平台的视频服务器监控系统终端显示需要对视频数据进行解码,通过LCD液晶显示屏实时观看。解码过程是编码的反变换,其中包括获取视频流,视频流信息的配置,视频流的帧解压,以及图像处理过程。该系统选择4.3寸(10.92 cm)LCD显示屏在进行显示端实时查看视频图像。
4 结束语
基于Android系统的视频客户控制界面,无需专用监控软件、使用方便、成本低。系统通过Arm11CPU直接进行视频处理和传输,在提供高性能的同时,也允许在性能和功耗间做权衡满足某些特殊的应用需求。鉴于Android视频服务器的高性能和前沿性,基于Android平台的视频服务器可以在安全性要求高的各种场合得到应用,同时结合实际的应用再可以进行功能扩展,可应用到众多的有线或无线视频监控领域。
- 视频服务器软件MJPG-streamer在嵌入式多媒体数据处理中的应用(05-25)
- 基于ADSP-BF532嵌入式网络视频服务器研究(05-18)
- 基于ARM11的家用智能垃圾桶的设计与实现(11-12)
- S3C6410启动模式介绍(11-28)
- S3C2440和S3C6410性能比较(11-28)
- S3C6410学习——MemoryMap(11-28)