本文来自:
http://blog.chinaunix.net/uid-23093301-id-86391.html
本课题基于嵌入式Linux实现视频采集、传输、显示、存储。硬件平台为S3C2440,通过在S3C2440上外接USB摄像头采集视频图像,通过S3C2440上的LCD实时显示视频图像,同时通过网络传输视频图像到上位机,实时显示并压缩存储。
● 硬件分析
对于嵌入式端主要是实现通过USB摄像头采集视频流,将图像在LCD设备上显示,同时将图像数据打包发送到视频监控端上位机上。这样所选择的嵌入式系统必须具备优秀的数据处理能力、USB接口、良好的网络特性支持等能力。本课题选择Samsung公司的S3C2440作为嵌入端的核心,S3C2440搭载ARM920T微处理器,具有高速的数据处理速度和丰富的外设接口,带有MMU内存管理单元,支持多款嵌入式操作系统,完全符合本系统的设计要求。
● 软件分析
本课题设计到的软件开发主要为USB摄像头驱动开发,嵌入式端图像的采集、显示、打包发送,和上位机端实时接收数据并显示最终压缩保存图像数据。软件设计中将充分考虑实时性和性能。
本课题选用Linux2.6嵌入式操作系统,Linux2.6内核具有如下优势:
1)良好的驱动框架,在Linux2.6上移植或开发特定的驱动程序相比其他操作系统各加容易,加入LCD、网络、USB摄像头的相关驱动都更加方便。
2)Linux2.6支持多种文件系统,方便系统开发,加快开发进度。
3)Linux具有完备的交叉工具链,用户非常方便的就能构建自己的嵌入式开发环境,甚至不需要使用仿真工具就能完成软件甚至是Linux内核的调试诊断。
4)Linux拥有强大的网络功能支持,支持TCP/IP、UDP等多种网络协议,以及丰富的网络调用接口,方便系统网络控制功能的实现。
本课题同时提供嵌入式端和上位机的实时图像显示,主要以上位机端为主,嵌入式端则为可选选项。在上位机端,要求实时的对图像编解码,并且将图像实时的显示,必须有高效率的实时编码库和图形显示库的支持。在上微机端的实时视频监控仍然采用Linux系统,为Fedora 9 操作系统,SDL自由的跨平台的多媒体开发包,通过SDL能够实现高质量的实时的显示视频图像。由于采集的视频数据并没有做压缩优化,在保存视频图像数据的时候,完成无损的视频压缩保存,而利用FFMPEG跨平台的音视频流编解码库可以极大的保证质量和性能,同时大大减小开发工作量。
视频采集系统示意图如图所示: