嵌入式系统
081200B301a
基于Qt的视频监控设计
一、应用需求分析
近年来,智能安防工作越来越受到重视,而视频监控作为安防的一种重要手段,其实现技术也迅速发展起来,简单高效的视频监控系统的需求进一步扩大。本系统设计实现一个基于mini2440的视频监控系统,包括摄像头视频采集、视频编码储存、基于Qt友好的操作界面等。其工作流程如图1.1所示:
USB摄像头视频采集 H264编码储存 图1.1 视频监控系统工作图
本监控系统实现的功能有一下几个方面:
[1] 摄像头视频的实时采集及显示、视频播放暂停与恢复 [2] 友好简单的操作界面
[3] 基于H264或MPEG的视频编码储存
基于现实安防的需要,本监控系统需要实现以下几个技术指标:
[1] 实时视频的采集与显示,至少需要达到每秒15帧 [2] 快速的视频编码过程
[3] 快速的系统响应,友好的操作界面 [4] 很低的编码出错率,系统良好的鲁棒性
SDL显示 处理SDL屏幕事件 二、应用系统总体结构设计描述
2.1硬件平台介绍
1) 核心板Mini2440: Mini2440 是一款真正低价实用的ARM9 开发板,是目前国内性价比最高的一款学习板;它采用Samsung S3C2440 为微处理器,并采用专业稳定的CPU 内核电源芯片和复位芯片来保证系统运行时的稳定性。
图 2.1 mini2440实物图
2) 摄像头:采用罗技USB摄像头 2.2 软件开发环境
1) 跨平台Qt开源库: Qt是一个跨平台的C++图形用户界面应用程序框架,支持windows,Linux,MAC OS。利用Qt 的开发环境 Qt Creator可方便进行Linux下的UI应用程序开发。
2) FFmpeg: ffmpeg 是一个开源免费跨平台的视频和音频流方案,属于自由软件,采用LGPL或GPL许可证(依据你选择的组件)。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,这里我们采用H264编码。
3) SDL:SDL(Simple DirectMedia Layer)是一个自由的跨平台的多媒体开发包,适用于 游戏、游戏SDK、演示软件、模拟器、MPEG播放器和其他应用软件。SDL内置了调用OpenGL的函数。通过使用SDL_image、SDL_ttf、SDL_mixer、SDL_net等外部扩展库,可以轻松实现JPG、PNG、TIFF图像的加载使用,TrueType字体的使用,MP3文件的使用、网络相关的使用等。 2.3 监控系统的框架图 响应SDL事件 调用SDL 接口显示 X264开源库边编码 C++ 标准库储存编码数据 图 2.2 监控系统框架图
ARM V4L2接口采集 USB Webcam