嵌入式远程视频采集系统的设计与实现

发布者:码字狂徒最新更新时间:2013-04-09 来源: dzsc关键字:嵌入式  远程视频  采集系统 手机看文章 扫描二维码
随时随地手机看文章
多媒体通信技术的发展为信息的获取和传输提供了丰富的手段,视频采集是其中不可缺少的重要组成部分,该系统基于S3C2410的ARM9芯片和嵌入式Linux操作系统,采用USB摄像头捕捉视频,经MPEG-4算法压缩编码,系统直接与网络相连,用户使用标准的网络浏览器和流媒体播放程序即可查看远程视频影像。

1 硬件系统

系统硬件平台选用北京博创公司的UP-NETARM2410开发板,该系统基于ARM9架构嵌入式芯片S3C2410,稳定工作在202MHz主频,板载64MB SDRAM 64MB FLASH,主板资源包括:主USB口、从USB口、10M/100M以太网口,触摸屏、彩色LCD、键盘、8个用户自定义LED数码管, A/D,RTC电路,2个串口、1个JTAG通用接口,音频模块,支持MPEG4,MP3编解码,3个168PIN的扩展插座,32位的数据总线,保留充分扩展空间。

其中标配模块包括:IC卡+PS2模块、IDE硬盘+CF卡模块、PCMCIA+SD/MMC模块。另外可选配模块有:GPS模块,GPRS模块,FPGA模块,CAN+AD+DA模块、红外模块、蓝牙模块、摄像头模块。

2 软件系统

2.1 内核配置与USB摄像头驱动

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

首先检查Linux Kernel中是否已经添加了USB模块的支持,并且加入Video4Linux支持。

Multimedia devices→<M>Video For Linux

Video For Linux→[*]V4L information in proc filesystem

在主菜单的USB Support下还有各种摄像头的驱动,选中将要使用的摄像头芯片类型。

<>USB IBM (Xirlink)C-it Camera support<*>USB OV511 Camera support<>USB Philips Cameras

<>USB SE401 Camera support<>USB STV680(Pencam)Camera support<>USB 3com HomeConnect(akavicam)support

在USB摄像头选购时,优先考虑Linux内核公开支持的摄像头芯片,不然要额外编写相应的USB摄像头驱动程序,然后进行编译、安装。在此选用网眼公司的V3000产品,他采用了OV511的芯片。

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

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

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

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

Linux下与Video4Linux相关设备及用途如表1所示。

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

Linux下视频采集流程如图2所示。

其中用到的主要函数有:

Camera_open():用来开启视频设备文件,使用前需要首先声明一个video_device类型的设备文件。

Camera_get_capability():通过调用ioctl()函数取得设备文件的相关信息,并存放到video_capability结构里。

Camera_get_picture():通过调用ioctl()函数取得图像的相关信息,并且存放到video_picture结构里。 [page]

Camera_close():用来关闭设备文件。

Camera_grab_image():用来抓取图像,采用mmap方式,直接将设备文件/dev/video0映射到内存,加速文件I/O操作,还可以使多个线程共享数据。

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

2.3 视频压缩编码模块

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

MPEG-4中基于对象的视频编码过程可以分为3步进行:

(1)从原始视频流中分割视频对象。

(2)对视频对象进行编码,对不同视频对象的运动信息、形状信息、纹理信息分配不同的码字。对输入的任意形状的VOP序列,用基于块的混合编码技术编码,处理顺序是先IVOP后PVOP,BVOP。在对VOP的形状信息编码后,取得任意形状VOP的采样,每个VOP划分为不相交的宏块,每个宏块含有4个8×8象素块进行运动补偿以及纹理编码,已编码的VOP帧保存在帧存中,在当前VOP帧和已编码VOP帧之间的计算运动矢量;对将编码的块和宏块,计算他们的运动补偿预测误差;运动补偿预测后的IVOP及误差用8×8块DCT变换,并进行DCT系数的量化,然后是游程编码和熵编码。

(3)对各个视频对象的码流进行复合,每个视频对象的形状、运动纹理信息复合成VOL比特流,各视频对象视频流复合成统一的码流输出。对视频流进行压缩编码以后,接下来就要实现网络传输部分的功能。

2.4 JRTPLIB网络传输模块

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

2.4.1 初始化

在使用JRTPLIB进行实时流媒体数据传输之前,首先应该生成RTPSession类的一个实例来表示此次RTP会话,然后调用Create()方法来对其进行初始化操作。RTPSession类的Create()方法只有一个参数,用来指明此次RTP会话所采用的端口号。

2.4.2 数据发送

当RTP会话成功建立起来之后,接下来就可以开始进行流媒体数据的实时传输了。首先需要设置好数据发送的目标地址,RTP协议允许同一会话存在多个目标地址,这可以通过调用RTPSession类的AddDestination()、DeleteDestination()和ClearDestinations()方法来完成。目标地址全部指定之后,接着就可以调用RTPSession类的SendPacket()方法,向所有的目标地址发送流媒体数据。

2.4.3 数据接收

对于流媒体数据的接收端,首先需要调用PollData()方法来接收发送过来的RTP或者RTCP数据报。由于同一个RTP会话中允许有多个参与者(源),因此既可以通过调用GotoFirstSource()和GotoNextSource()方法来遍历所有的源,也可以通过调用GotoFisstSourceWithDat()和GotoNextSourceWithData()方法来遍历那些携带有数据的源。在从RTP会话中检测出有效的数据源之后,接下去就可以调用RTPSession类的GetNextPacket()方法从中抽取RTP数据报,当接收到的RTP数据报处理完之后,要及时释放。

JRTPLIB为RTP数据报定义了3种接收模块,通过调用RTPSession类的SetReceiveMode()方法可以设置下列这些接收模式:

RECEIVEMODE_ALL:缺省的接收模式,所有到达的RTP数据报都将被接受;

RECEIVEMODE_IGNORESOME:除了某些特定的发送者之外,所有到达的RTP数据报都将被接受,而被拒绝的发送者列表可以通过调用AddToIgnoreList(),DeleteFromIgnoreList()和ClearIgnoreList()方法来进行设置;

RECEIVEMODE_ACCEPTSOME:除了某些特定的发送者之外,所有到达的RTP数据报都将被拒绝,而被接受的发送者列表可以通过调用AddToAcceptList(),DeleteFromAcceptList和ClearAcceptList()方法来进行设置。

2.4.4 控制信息

JRTPLIB是一个高度封装后的RTP库,只要PollData()或者SendPacket()方法被成功调用,JRTPLIB就能够自动对达到的RTCP数据报进行处理,并且还会需在要的时候发送RTCP数据报,从而能够确保整个RTP会话过程的正确性。

在本系统中,使用RTPSession JRTPLIB类库提供的方法来实现底层的RTP/RTCP操作,并且把他封装在CrtpTransmitter类中,该类从Media Sink类继承而来,接收到相应的媒体帧数据,使用RTPSession类库的操作把数据发送到网络上。

3 结语

本系统基于S3C2410平台和Linux操作系统,利用Video4Linux设计采集程序,使用MPEG-4压缩编码算法,通过实时流媒体传输技术实现了网络传输,整个系统具有稳定可靠、安装简便、成本低廉等特点,可扩展应用在工业控制、视频会议系统、可视电话、远程监控系统等诸多领域。

关键字:嵌入式  远程视频  采集系统 引用地址:嵌入式远程视频采集系统的设计与实现

上一篇:基于S3C44BOX的远程监测系统的设计与实现
下一篇:ARM单片机,你知多少?

推荐阅读最新更新时间:2024-03-16 13:21

可管理NAND:适用于移动设备的嵌入式大容量存储
      与多年前相比,现在的移动消费电子装置结构复杂,功能丰富,能够存储大量音乐、照片和视频内容。让人欣慰的是,存储系统的体系结构能够适应这些新的数据密集型应用。例如,适用于大容量存储的高性价比紧凑型 NAND 闪存就替代了手机、MP3 播放器和数码相机中使用的 NOR 闪存和其它非易失性存储装置。        随着工艺技术的进步,存储器密度大约每 12 至 18 个月即提高一倍。对于 NAND 闪存而言,这意味着对多层单元 (MLC) 技术的重视程度日益提高。传统的单层单元 (SLC) NAND 闪存每个存储单位能够存储一个数据位。MLC 技术能够实现在单个存储单元中存放多个数据位,数据的存储容量达到相同大小 NAND 闪
[嵌入式]
ARM嵌入式平台的VGA接口设计(ADV7120)
大多数嵌入式产品的显示终端都选择LCD,但在某些需要大屏幕显示的应用中,工业级LCD的价格比较昂贵,且现有的大屏幕显示器(包括CRT显示器和LCD显示器)一般都采用统一的15针VGA显示接口.三星公司ARM9芯片S3C2410以其强大的功能和高性价比在目前嵌入式产品中得到广泛的应用.笔者在开发基于ARM嵌入式平台的血液流变测试仪的过程中,成功地利用高性能视频D/A转换芯片ADV7120,将S3C2410自带的LCD扫描式接口转换为VGA接口,使之能够驱动VGA接口的显示器. 1 VGA接口介绍 近年来,业界制定出了众多数字化的显示接口协议,较为典型的是DVI(Digital Visual Interface).由于数字接口
[单片机]
ARM<font color='red'>嵌入式</font>平台的VGA接口设计(ADV7120)
适宜于嵌入式多媒体应用的Flash文件系统
摘要:嵌入式多媒体应用中大量数据存储在Flash上,本文以文件系统的方案解决数据存储的管理问题。对嵌入式多媒体应用中Flash文件系统的应用特点与关键设计进行了分析,设计实现了一个功能完整的文件代号管理、文件指针存取以及对应用透明的自动坏损管理的文件系统。针对嵌入式系统应用的需要,改进了本Flash文件系统的应用可靠性,降低了其系统资源开销。针对多媒体应用的数据特点,提出了存储内容自适应的环境管理策略。仿真与实用的效果表明,本Flash文件系统适宜于嵌入式多媒体应用。 关键词:嵌入式系统 多媒体Flash存储器 文件系统 随着电子技术的不断发展,嵌入式系统越来越多地在控制类、消费类、通讯类等电子产品广泛应用,并且随着数字信号处
[缓冲存储]
UltraSoC 嵌入式分析技术助力SMI在多领域里制造更强悍的芯片
UltraSoC日前宣布,其嵌入式分析技术已被Simple Machines,Inc(SMI)选用于其创新的可组合计算平台(Composable Computing Platform)之中。UltraSoC的技术将使SMI及其客户对该公司产品的硬件和软件行为有一个深入的了解,这些产品针对的是各种要求苛刻的应用,诸如安全应用、视觉认知、语言理解和网络级个性化 。 SMI的解决方案采用了一种全新的、已获专利的处理器架构,该架构被设计为可完全定制,以实现对片上资源的最大利用,从而使其适用于从边缘人工智能(AI)到网络级且高性能计算的广泛应用。UltraSoC的嵌入式分析技术将被设计到SMI的系统级芯片(SoC)半导体产品中,从而可以
[嵌入式]
采用嵌入式Iinux操作系统实现测桩仪的设计
1、引言 近年来,以波动应力理论为基础的桩动测技术已获得广泛应用。它的基本原理是桩顶受到桩锤冲击后,根据桩顶实测力和加速度数据分析桩的完整性。基于此种方法的测桩仪设备轻便、灵活,运输和现场安装的工作量小,测量效率高,耗时短,不易发生安全事故。 本设计利用嵌入式系统技术开发出具有实时采集数据、分析数据、本地给出处理报告功能的测桩仪。仪器具有自动调节信号增益、数据采样速度高、数据自动存储及整机自动化程度高等特点。 2、系统问题分析 2.1 现有测桩仪 测桩仪完成数据采集与处理的工作现场环境一般较为恶劣,弥漫着各种干扰(来自系统内部和外部),当被测信号很微弱时,有效数据就会被噪声“淹没”,导致数据采集与处理误差很大,可靠性降低。
[单片机]
采用<font color='red'>嵌入式</font>Iinux操作系统实现测桩仪的设计
SenseDLC嵌入式人像识别SDK 安防边缘的“小巨人”
据麦姆斯咨询介绍,随着这些年将人工智能技术赋能行业的不断深入,商汤科技对智慧城市建设有着更深的理解。通过不断实践发现,很多区域由于摄像头数量和布置等问题较难有效做到清晰的人脸抓拍,且单一的人脸识别会遇到诸多干扰,比如发型、胖瘦、年纪、表情等变化及口罩、眼镜、围巾等遮挡都会影响人脸识别准确率。 为了解决这些行业痛点问题,商汤科技推出SenseDLC嵌入式人像识别SDK软件,可以同时检测出视频中的人脸和人体,并自动进行关联匹配。它可赋能安防摄像机、NVR、人脸门禁等产品,能够获取比单独人脸识别算法更多样的抓拍识别结果及结构化数据,通过这些数据可以更加完整描绘出嫌疑人移动轨迹,为建设和谐社会提供一张安全、可靠的智能防护网。 搭载了人
[安防电子]
SenseDLC<font color='red'>嵌入式</font>人像识别SDK 安防边缘的“小巨人”
基于LabVIEW与USB接口的实时数据采集系统
1 数据采集系统    工程上使用具有PCI、PXI、USB、并口以及串口的计算机来获取测试数据,称为基于PC的数据采集系统。其中一种是通过插入式的数据采集卡直接获取数据传输给计算机。鉴于数据采集卡的价格昂贵,且安装不方便等缺点,本文提出使用STC单片机作为前端的数据采集系统,利用 CH341T 芯片的USB总线转异步串口的功能,将采集数据只通过一条USB线传输给PC机,最后在LabVIEW平台下进行数据的显示、分析、处理。 1.1 系统组成与工作原理    本系统总体结构框图如图1所示。主要包括有 STC12C5410AD 单片机和 CH341T 转换芯片组成的数据采集、转换、传输部分,以及基于PC机的LabVlEW
[嵌入式]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved