找回密码
 注册会员
更新自动建库工具PCB Footprint Expert 2024.04 Pro / Library Expert 破解版

[嵌入式/ARM] 基于达芬奇技术的嵌入式网络摄像机系统研究

[复制链接]
admin 发表于 2013-3-24 11:20:44 | 显示全部楼层 |阅读模式

本文包含原理图、PCB、源代码、封装库、中英文PDF等资源

您需要 登录 才可以下载或查看,没有账号?注册会员

×
摘  要: 达芬奇技术是一种专门针对数字视频应用和信号处理的解决方案,它把算法处理和应用层相分离,大大简化了程序编写。介绍了一种基于达芬奇技术的网络摄像机设计方案,详细阐述了该系统的视频采集、H.264编码实现、RTSP服务器调度和RTP发送。
关键词: 达芬奇技术;H.264;RTSP服务器;RTP
       随着多媒体技术和网络技术的发展,网络摄像机已经广泛运用于网络监控和视频会议领域中。网络摄像机的发展趋势集视频采集、视频压缩、视频发送为一体,并且按照需求添加相应图像识别、图像叠加、运动侦测、云台控制和报警等功能。因此要求处理芯片具有强大的控制能力和数据处理能力。TI公司推出了达芬奇技术,专门应用于多媒体系统,它把图像处理的编码算法封装成标准API,应用程序调用这些API函数即可实现图像的编码处理。
     TMS320DM368芯片是基于达芬奇技术的音视频数字媒体片上系统(DMSoC)[1],它以ARM926EJ-STM为内核,拥有两个视频图像协处理器(HDVICP和MJCP),广泛运用于中低端音视频处理系统。本系统采用DM368来构建网络摄像机视频服务器,通过访问服务器可实时查看监控视频。
1 系统总体方案设计
     TMS320DM368只有一个ARM内核,通过嵌入Linux系统来实现图像的采集处理和网络通信。系统总体框图如图1所示,CMOS图像采集模块把采集的数字图像发送给TMS320DM368主芯片,然后调用算法API函数实现H.264编码。UDP接收负责接收参数控制命令,经过命令解析把参数传递给对应模块。RTSP负责等待客户端访问,然后创建用于RTP数据包发送的套接字。
   
       为了实现系统功能,应用程序主要分为以下几个线程:CMOS视频采集线程、视频编码线程、RTSP任务调度线程、RTP视频数据发送线程、UDP命令接收线程和命令解析线程。CMOS视频采集线程负责按要求初始化CMOS芯片,采集视频图像;视频编码线程调用算法API接口,实现数据图像的编码压缩;RTSP任务调度线程创建TCP套接字,等待客户端的访问连接,然后把所访问客户端的地址信息存放在调度任务中;RTP视频数据发送线程把视频数据通过RTP协议发送给指定客户端;UDP命令接收线程负责接收客户端发送的控制命令,然后发送给命令解析线程;命令解析线程把接收到的命令解析处理,把参数传递给对应模块。
2 视频采集和编码
2.1 视频采集模块

     视频采集选用MT9P031型CMOS数字图像传感器芯片,感光面为1/2.5英寸,最大像素为2592×1944。该芯片利用像素跳跃和像素混合技术,在不改变视场的情况下减少输出图像分辨率。它还提供I2C接口,主控器可以通过I2C接口设置CMOS输出图像的属性,并且还集成了ADC转换器,直接输出12 bit数字图像数据,在时钟和行场同步信号作用下输出每一帧图像,如图2所示。每一个场同步信号FV有效(高)表示一帧图像,每一个场同步信号LV有效(高)表示该帧的一行,在行场同步都有效时每一个像素时钟脉冲的Dout输出就是对应像素的RGB值。若输出一帧720 p的图像,像素大小为1280×720,每一个FV高电平区间就有720个LV高电平,在每一个LV高电平区间又有1 280个PCLK时钟脉冲。
    20121107050858079784689.gif
       TMS320DM368有一个ISIF接口,专门用于接收数字的视频数据,芯片内部集成了ISIF图像接收模块,每接收到一帧完整的数据,芯片就会产生一个ISIF_INT中断信号,在中断响应程序里面可以把数据存放到指定地址。MT9P031和TMS320DM368的连接如图3所示。MT9P031芯片的时钟源由DM368GIO37引脚输出提供,频率为24 MHz,GIO91和GIO93引脚分别接复位和使能端。
    20121107050858126664690.gif
   2.2 H.264编码模块
     对所采集的视频数据进行编码是通过调用Codec Engine算法包来实现的[2]。Codecs Engine是一组用来调用xDAIS算法的API,不管是在ARM端还是在DSP端,不管操作系统的差异,调用的API函数都是一致的。用户只需要配置相应的*.cfg文件即可指定需要调用的算法,然后在应用程序中即可调用API函数进行算法编解码。
     H.264是一种高性能的视频编解码标准,继承了H.263和MPEG1/2/4视频编码器的优点。H.264标准中定义了两个层次:视频编码层(VCL)和网络抽象层(NAL),VCL负责高效的数字视频数据压缩,NAL提供适当的接口对数据进行打包和传送。
     为了得到H.264格式的视频流,本系统采用的H.264算法为TI发布的Codec Engine,配置alg_server.cfg文件来实现对已经编译算法的接口声明,文件配置如下:
     var H264ENC=xdc.useModule
('ti.sdo.codecs.h264enc.ce.H264ENC'); //指定调用的算法
     var myEngine=Engine.create("alg_server", [{name: "h264enc",
mod: H264ENC, local: true, groupId: 1}]);
     其中,name为调用算法的名字;mod用来标识实际的算法实现模块;loacl指定算法运行在ARM端(true)或者DSP端(false)。
     在应用程序中调用的接口函数有:VIDENC1_create、VIDENC1_control、VIDENC1_process和VIDENC1_delete。
3 视频服务器的建立
3.1 搭建RTSP服务器

     RTSP(Real Time Streaming Protocol)实时流协议是为了建立并控制一个或几个时间同步的连续流媒体[3],它本身不发送连续媒体流,只充当多媒体服务器的网络远程控制。
     RTSP服务器需要预定义的方法有OPTION、DESCRIBE、SETUP、PLAY和TEARDOWN,在OPTION响应中需要实现服务器基本信息描述,DESCRIBE响应中需要向客户端发送视频的SDP信息,SETUP响应需要根据客户端端口信息建立RTP(实时传输协议)视频发送套接字,PLAY响应实现由RTP向客户端发送视频数据,TEAREOWN响应关闭对应RTP套接字,并且释放对应的系统资源,流程如图4所示。
    20121107050858173534691.gif
*滑块验证:
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

QQ|手机版|MCU资讯论坛 ( 京ICP备18035221号-2 )|网站地图

GMT+8, 2024-12-26 01:58 , Processed in 0.056371 second(s), 10 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表