• 易迪拓培训,专注于微波、射频、天线设计工程师的培养
首页 > 无线通信 > 技术文章 > 基于嵌入式Linux与S3C2410平台的视频采集

基于嵌入式Linux与S3C2410平台的视频采集

录入:edatop.com     点击:

3.1 USB摄像头驱动

搭建好嵌入式Linux的开发环境后,第一步工作就是USB摄像头的安装与驱动。

在Linux下,设备驱动程序可以看成是Linux内核与外部设备之间的接口。设备驱动程序向应用程序屏蔽了硬件实现的细节,使得应用程序可以像操作普通文件一样来操作外部设备,可以使用并操作文件中相同的、标准的系统调用接口函数来完成对硬件设备的打开、关闭、读/写和I/O控制操作,而驱动程序的主要任务也就是要实现这些系统的调用函数。

Video4Linux(V4L)是Linux中关于视频设备的内核驱动,它是针对视频设备应用程序编程提供的一系列接口函数。对于USB口摄像头,其驱动程序中需要提供基本的I/O操作接口函数open,read,write,close来实现。当应用程序对设备文件进行系统调用操作时,Linux内核将通过file-operations结构访问驱动程序提供的函数,在系统平台上对USB口数码摄像头进行驱动,首先把USB控制器驱动模块静态编译进内核,使平台中支持USB接口,再在需要使用摄像头采集时,使用insmode动态加载其驱动模块,这样摄像头就可正常工作。

确定USB摄像头被正常驱动后,下一步就是使用Video4Linux提供的API函数集来编写视频采集程序。

3.2 基于V4L设计的视频采集模块

在Linux下,所有外设都被看成是一种特殊的文件,称为设备文件。系统调用的是内核与应用程序之间的接口,而设备驱动程序则是内核与外设之间的接口。他完成设备的初始化和释放,对设备文件的各种操作和中断处理等功能,为应用程序屏蔽了外设硬件的细节,使应用程序可以像普通文件一样对外设进行操作。 Linux下的视频采集过程如图2所示。

\

Linux系统中的视频子系统Video4Linux为视频应用程序提供了一套统一的API,视频应用程序通过标准的系统调用即可操作各种不同的视频捕获设备。Video4Linux向虚拟文件系统注册视频设备文件,应用程序通过操作视频设备文件实现对视频设备的访问。

在此主要针对设备文件/dev/video进行视频捕捉方面的程序设计。

其中用到的主要函数有:

Camera_open():用来开启视频设备文件,使用前需要首先声明一个video_device类型的设备文件。
    Camera_get_capability():通过调用ioctl()函数取得设备文件的相关信息,并存放到video_capability结构中。
    Camera_get_picture():通过调用ioctl()函数取得图像的相关信息,并且存放到video_picture结构中。
    Camera_close():用来关闭设备文件。
    Camera_grab_image():用来抓取图像,采用mmap方式,直接将设备文件/dev/video0映射到内存,加速文件I/O操作,还可以使多个线程共享数据。

剩下的还有设备初始化、参数设备等相关函数,这里不再详述。

3.3 视频压缩编码模块

获取图像数据后,可以直接输出到FrameBuffer进行显示,由于该系统要将采集到的视频影响通过网络传输出去,所以在传输之前要对原始的图像数据进行压缩编码,在此选用映佳公司的MPG440芯片来实现MPEG-4视频编解码方案。与其他标准相比,MPEG-4压缩比更高,节省存储空间,图像质量更好,特别适合在低带宽条件下传输视频,并能保持图像的质量。对视频流进行压缩编码以后,接下来就要实现网络传输部分的功能。

3.4 JRTPLIB网络传输模块

流媒体指的是在网络中使用流技术传输的连续时基媒体,RTP是目前解决流媒体实时传输问题的最好办法,JRTPLIB是一个面向对象的RTP库,他完全遵循RFCl889设计,下面讲述如何在Linux平台上运用RTP协议进行实时流媒体编程。

作者:归达伟 陕西广播电视大学   来源:现代电子技术

上一篇:基于56F803型DSP的大功率超声波电源的设计
下一篇:2011年蓄电池恒温技术将持续升温

手机天线设计培训教程详情>>

手机天线设计培训教程 国内最全面、系统、专业的手机天线设计培训课程,没有之一;是您学习手机天线设计的最佳选择...【More..

射频和天线工程师培训课程详情>>

  网站地图