1. 引言
近年来,通信技术有了很大的进步,为人们越来越高的通信要求提供了技术支持。多媒体通信是通信技术的一个重要分支,它能够提供语音、视频和数据的立体式服务,在远程教育、视频通话、视频监控等方面有着广泛的应用[1] 。目前,国内外对流媒体技术进行了深入的研究,取得了很大的成就。同时流媒体技术也存在一些问题,例如压缩率不高、传输速率不够快等,并且目前的研究大部分都是在PC机上实现的,对设备的依赖性较高。基于以上原因,本文设计了基于嵌入式设备TMS320DM8168的视频通信服务器,对视频进行了H.264的编码,然后采用RTP协议进行打包传输,从而完成视频通信服务器的设计。同时由于嵌入式设备的便携性和易开发等特点,相对于PC上的流媒体服务器有更广泛的应用范围,基于嵌入式设备的流媒体通信有着重要的应用和研究价值,所以本文的设计是在嵌入式设备上实现的 [2] 。该视频服务器可以实现对视频的采集、处理和编码,通过网络接口传输到视频接收端,完成了视频通信中的一项重要工作,具有一定的研究价值。
2. 系统框架设计
本文旨在设计一款视频通信服务器,摄像头对视频进行采集后送入视频通信服务器,视频通信服务器对视频进行相应的处理,通过传输协议传送给PC、嵌入式设备、或者手机等终端进行播放。系统框图如图1所示。
2.1. 系统软硬件平台
本系统的硬件平台是TMS320DM8168以为核心处理器的高速图像处理平台。核心处理器TMS320DM8168实现图像处理和外设控制。除了核心处理器外,还有DR3、网口、视频输入输出、电源复位和时钟等外设。其中DDR3容量是2 GB,主要用来提供操作系统运行和程序所需要的内存空间。模数转换芯片是将摄像头采集的模式视频转换成数字视频传给核心处理器处理。网口采用的是千兆网,主要用来进行数据传输。时钟电源和复位是为系统的运行提供支持。总体框图如图2所示。
TMS320DM8168是TI公司推出的一款高性能处理器,它采用的是多核异构模式,集成有四个处理器:Cortex A8、C674x、VIDEO M3和VPSS M3。四个处理器通过协同分工,独立完成各自的任务,然后再经过核间通信等方式进行协同从而完成复杂的功能,这种分工协同的开发方式是通过TI提供的多通道处理框架(MCFW)来实现的。为了进行图像处理,在MCFW中定义了许多Link节点,每个Link节点独立的完成一项处理,处理完成后调用需要的Link节点并将消息传递给下一个Link节点,下一个Link
节点接着对图像进行处理。所以用户只要有序的创建和调用需要的Link节点就能完成复杂的图像处理操作。这种方式将复杂的图像处理操作分解为了许多简单的图像处理并调用Link节点实现,大大降低了开发难度,同时也提高了图像处理的效率 [3] 。
2.2. 传输协议
本文的传输协议采用的是实时流传输协议(RTSP)。RTSP是TCP/IP协议体系中的一个应用层协议,定义了一对多应用程序如何有效地通过IP网络传送多媒体数据,它使用TCP或UDP完成数据传输 [4] 。
作为应用层协议,RTSP用于若干个同步的媒体数据流连接的建立和控制,但它并不能传输媒体数据流;RTSP与RTP/RTCP等更低层的协议一起配合使用,提供基于互联网络的整套媒体流化服务。RTSP不但为服务器和客户端建立会话控制连接,还实现媒体数据流的远程控制操作。因此客户端首先应该连接服务器的RTSP端口;客户端建立RTSP连接后发送DESCRIBE方法给服务器,方法中包含目标点播文件的URL。客户端将RTSP包的DESCRIBE方法发送给目的服务器;服务器收到此方法信息后会传送标准的媒体描述文件SDP到客户端播放器;客户端读取并分析SDP描述文件按具体内容来配置相应音视频数据解码的同步信息,例如:网络类型、RTP传输通道的端口号、编码类型、采样率等。
3. 视频通信服务器设计与实现
3.1. 系统软件设计框架
为了实现视频通信服务器,首先对视频进行采集,然后将采集的视频进行基本的去噪处理,接着对视频进H.264的编码,再对编码后的码流进行RTP打包,最后建立RTSP服务器。服务器的软件设计是在TI提供的多通道框架(Multi Channel Framework, MCFW)中实现的。如图3所示。
3.2. 视频的采集和H.264编码
本文所设计系统的服务器端软件设计是在MCFW框架内实现的。在MCFW框架中,进行图像处理时,先将复杂的处理分配给一个个Link,通过调用各个Link完成相关功能,再通过Link的通信实现整个处理。要实服务器端的设计,首先需要对视频进行采集和预处理和H.264编码,然后才能进行RTP打包发送,流程图如图4所示。
为了实现对视频的采集、编码,将这个过程拆分成了一个个Link,上游Link先实现自己的功能,然后将消息传递给下游Link,这样完成整个处理流程。具体过程为:视频数据从Capture Link传给Nsf Link,完成去噪处理,这个过程都是在VPSS M3核上完成的,所以不需要Ipc link,直接通过.nextLink和prevLinkId就可以实现。由于Nsf Link运行在VPSS M3核上,而Encode Link是运行在VIDEO M3上的,所以这两个Link之间的通信需要在中间添加另外两个用于核间通信的Ipc Link,即ipcOutVpssId和ipcInVideoId;视频数据先从VPSS M3出来之后,再进入VIDEO M3核中。从而实现两个核之间的通信。通过上面的Encode Link之后,视频数据被编码成了H.264文件格式,接下来需要把这些H.264文件传到Cotex A8中,等待RTP打包并通过网口发送出去[5] 。
3.3. H.264文件的RTP打包
视频经过H.264编码之后生成了一个个NALU (网络传输单元),对H.264进行打包就是将一个个的NALU进行RTP打包,主要分为RTP头打包实现和RTP有效负载打包实现。
1) RTP头的打包实现
对RTP头进行打包,就是对RTP报文头部的各项参数进行赋值,赋值的依据就是系统的要求。首先需要申请一个1500字节大小的数组mysendbuf[1500],生成的RTP分组就保存在这个数组中。其前12个字节用于RTP分组首部,后面的部分用于RTP分组负载。在RTP报文头中,版本字段V固定为2。本系统不需要填充比特和扩展首部,同时也没使用CSRS标识符,所以填充P、X和CSRC都赋值为0。M是边界标识符,所以在单一封包模式M赋值为1,同时分片封包模式的最后一个分片M也赋值为1,其它情况下赋值为0。PT在本系统指定为100。序列号的起始值指定为1,后面每发送一个RTP包序列号加1。时间戳,一帧视频的所有RTP分组的时间戳都是相同的,后一帧视频的时间戳比前面一帧的时间戳增加一个时间戳增量。同步源标识符SSRC字段,在本系统中唯一即可,程序中将其指定为1234 [6] [7] 。
2) RTP分组负载的实现
本系统对采集到的原始视频数据进行H.264编码后,输出的是一个个的NAL单元。每个NAL单元都由三部分组成,NALU的结构如下所示:
[开始码] [NALU头] [NALU有效负载]

Figure 3. Software design of video server
图3. 视频服务器软件设计方案
本系统开始码赋值为00 00 00 01。NALU头部占用1字节,NALU有效负载为多个字节的RBSP数据。本系统的最大传输单元(MTU)设为1400。根据NALU大小来区分:尺寸很小采用组合封包,小于1400字节采用单一封包,大于1400字节采用分片封包 [6] ,如图5所示。

Figure 5. The implementation of RTP payload
图5. RTP分组负载的实现
RTP打包流程:首先检测到NALU包,检测NALU的起始码00 0000 01,去掉NALU头部,检测到有效负载。判断NALU有效负载的大小,分别采用分片封包、单一封包和组合封包,将之写入创建的数组中,等待网络发送。
3.4. RTSP服务模块
当RTSP客户端需要服务时,它先要对RTSP服务器发起连接请求,然后RTSP服务器对请求进行响应。对客户端的响应是由RTSP服务模块完成的(图6)。
在本系统服务器模型中,为了处理客户端的RTSP请求,首先分析RTSP请求报文各头字段信息,然后程序判断RTSP请求的命令码再分别对其进行处理,并回复RTSP应答报文。当服务器正确处理PLAY请求后,会将该用户的RTSP状态设置为STATE_ PLAYING,然后开始向客户端发送封装有H.264视频数据的RTP分组。
RTSP服务器模块初始化后,程序会一直监听系统的554端口,等待客户端连接。客户端与服务端建立连接后,客户端会按顺序发送RTSP请求报文,服务端会根据请求报文内容做相应的处理,并回复RTSP响应报文。然后双方完成RTSP协商,服务器开始发送封装有H.264频数据的RTP分组,客户端接收到RTP分组后解码显示。最后,服务结束,关闭连接 [7] 。
4. 服务器端实验效果展示
通过第二节设计实现了视频通信服务器,为了验证正确性,采用PC机作为视频接收端。在PC机安装开源播放器VLC,连接网线,在VLC中输入IP地址:rtsp://192.168.196.128/steam1.264,请求服务器播放视频,服务器响应请求,将视频传输到PC机端并在VLC中显示。图7是系统硬件平台的连接图,图8是PC机所接到的视频在VLC上的显示画面。
5. 结论
本文针对快速实时的传输视频数据的应用,设计与实现了一款基于TMS320DM8168的视频通信服务器,实现了嵌入式设备对视频进行采集、编码和传输,并建立了RTSP服务器。本文通过MCFW框架对视频进行采集和H.264的编码,再对编码过的视频流进行RTP打包,建立好RTSP服务器,从而完成了视频通信服务器的设计,并在最后测试了系统设计的正确性。由于受到硬件系统的限制,本文系统处理的视频是D1格式的,如果想实现更加清晰的播放效果可以考虑采用高清视频实现。
基金项目
国家自然科学基金(61201388)。