肖 军,徐熙平,李沛松(长春理工大学 光电工程学院,吉林 长春130022)
随着多媒体技术和网络技术的发展,网络摄像机已经广泛运用于网络监控和视频会议领域中。网络摄像机的发展趋势集视频采集、视频压缩、视频发送为一体,并且按照需求添加相应图像识别、图像叠加、运动侦测、云台控制和报警等功能。因此要求处理芯片具有强大的控制能力和数据处理能力。TI公司推出了达芬奇技术,专门应用于多媒体系统,它把图像处理的编码算法封装成标准API,应用程序调用这些API函数即可实现图像的编码处理。
TMS320DM368芯片是基于达芬奇技术的音视频数字媒体片上系统(DMSoC)[1],它以ARM926EJ-STM为内核,拥有两个视频图像协处理器(HDVICP和MJCP),广泛运用于中低端音视频处理系统。本系统采用DM368来构建网络摄像机视频服务器,通过访问服务器可实时查看监控视频。
TMS320DM368只有一个ARM内核,通过嵌入Linux系统来实现图像的采集处理和网络通信。系统总体框图如图1所示,CMOS图像采集模块把采集的数字图像发送给TMS320DM368主芯片,然后调用算法API函数实现H.264编码。UDP接收负责接收参数控制命令,经过命令解析把参数传递给对应模块。RTSP负责等待客户端访问,然后创建用于RTP数据包发送的套接字。
为了实现系统功能,应用程序主要分为以下几个线程:CMOS视频采集线程、视频编码线程、RTSP任务调度线程、RTP视频数据发送线程、UDP命令接收线程和命令解析线程。CMOS视频采集线程负责按要求初始化CMOS芯片,采集视频图像;视频编码线程调用算法API接口,实现数据图像的编码压缩;RTSP任务调度线程创建TCP套接字,等待客户端的访问连接,然后把所访问客户端的地址信息存放在调度任务中;RTP视频数据发送线程把视频数据通过RTP协议发送给指定客户端;UDP命令接收线程负责接收客户端发送的控制命令,然后发送给命令解析线程;命令解析线程把接收到的命令解析处理,把参数传递给对应模块。
视频采集选用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时钟脉冲。
图2 MT9P031输出像素时序图
TMS320DM368有一个ISIF接口,专门用于接收数字的视频数据,芯片内部集成了ISIF图像接收模块,每接收到一帧完整的数据,芯片就会产生一个ISIF_INT中断信号,在中断响应程序里面可以把数据存放到指定地址。MT9P031和TMS320DM368的连接如图3所示。MT9P031芯片的时钟源由DM368GIO37引脚输出提供,频率为24 MHz,GIO91和GIO93引脚分别接复位和使能端。
图3 MT9P031和TMS320DM368连接图
对所采集的视频数据进行编码是通过调用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文件来实现对已经编译算法的接口声明,文件配置如下:
其中,name为调用算法的名字;mod用来标识实际的算法实现模块;loacl指定算法运行在ARM端 (true)或者 DSP端(false)。
在应用程序中调用的接口函数有:VIDENC1_create、VIDENC1_control、VIDENC1_process 和 VIDENC1_delete。
RTSP(Real Time Streaming Protocol)实时流协议是为了建立并控制一个或几个时间同步的连续流媒体[3],它本身不发送连续媒体流,只充当多媒体服务器的网络远程控制。
RTSP服务器需要预定义的方法有OPTION、DESCRIBE、SETUP、PLAY 和 TEARDOWN, 在 OPTION 响 应中需要实现服务器基本信息描述,DESCRIBE响应中需要向客户端发送视频的SDP信息,SETUP响应需要根据客户端端口信息建立RTP(实时传输协议)视频发送套接字,PLAY响应实现由RTP向客户端发送视频数据,TEAREOWN响应关闭对应RTP套接字,并且释放对应的系统资源,流程如图4所示。
RTP(Real-Time Transport Protocol)实时传输协议是在多点传送或单点传送的网络服务上提供端对端的网络传输功能,适用于实时数据传输的场合[4]。RTP固定报头格式如图5所示。
定义报头的数据格式如下:
图4 RTSP服务器流程图
图5 RTP固定报头格式
经编码模块输出的H.264视频流由一系列NAL单元(NALU)构成,每个 NALU由起始码前缀(0x00000001)分隔开来[5],所以RTP发送线程可以在输出编码流中提取出每个NALU,经过RTP协议转换发送给客户端。从编码流中提取NALU单元流程如图6所示。
经过验证,对于720 p的H.264编码输出NALU负载长度不一,最大达到几十字节,从网络性能方面考虑,不宜发送过大的RTP数据包,为此采用RFC3984标准的FU-A方法对NALU进行分割,设置每个RTP包最大长度为1 400 B。于是对于不同负载长度的 NALU,RTP发送的数据包格式如表1所示。
定义结构体:
图6 NAL单元提取流程图
表1 RTP数据发送格式
其中,参数NaluHdr和FuIndic由NALU第一个字节决定,参数FuHdr用于设置分片发送的起始和结束RTP包。
本文研究了基于达芬奇技术的网络摄像机系统,着重介绍了视频采集、H.264算法的调用、RTSP视频服务器以及利用RTP数据报发送。系统的应用程序采用多线程技术,提高了资源利用率和综合性能。搭建的服务器专门用于H.264格式的视频流发送,执行效率高,便于维护,对类似系统有很大的参考价值。基于TMS320DM368的网络摄像机投入成本低,开发周期短,可以广泛运用于各种监控系统。
[1]Texas Instruments Incorporated.TMS320DM368 Digital Media System-on-Chip(DMSoC)[EB/OL].[2011-06-30].http://www.ti.com/lit/gpn/tms320dm368.
[2]Texas Instruments Incorporated.Codec Engine Application Developer User s Guide[A].http://www.ti.com/lit/ug/sprue67d/sprue67d.pdf.
[3]SCHULZRINNE H,RAO A,LANPHIER R.Real time streaming protocol(RTSP)[S].RFC 2326,1998.
[4]SCHULZRINNE H,CASNER S,FREDERICK R.RTP:A transport protocolfor real-time applications[S].RFC 3550,2003.
[5]张多英.嵌入式视频监控传输系统的设计与实现[J].计算机工程与设计,2010,31(4):724-728.