摘 要:介绍了基于CDMA1X 网络的视频监控系统的组织结构,针对在CDMA1X 系统中
图像传输存在的主要问题,提出了一种简化的RTP/RTCP 结构和一种速率控制机制。利用简
化的RTCP 报告进行反馈得到网络状况,对视频传输速率进行控制,从而改善了视频传输质
量,提供了QoS 控制手段,实现了DM642 下位机和监控中心上位机之间通过TCP 和UDP
相结合方式的通信,达到了较好的传输效果。
视频监控技术以其直观、方便、信息内容丰富的特点,一直在无人值守电站、城市道
路交通、油田库区、银行、厂矿、建筑、远程教育等场合有着重要而广泛的应用。随着网络
技术和视频编解码技术的发展,在无线网络上传送实时视频成为一种趋势。本研究正是在这
样的应用前景下,介绍了基于CDMA2000 1X 无线网络和互联网网络,采用H. 264 视频压
缩技术开发的新一代远程无线视频传输系统。
实时视频传输对网络带宽要求很高,目前速率最高的无线广域网CDMA 1X 的实际上行
速率大约40kbps。为了获得较好的图像质量和不增加带宽的前提下,本文提出了一种简化的
RTP/RTCP协议结构和相应的QoS控制,实现了一种基于CDMA 1X 网络的无线视频实时监
控系统。
2. 系统总体设计
系统可分为基于DM642的嵌入式的监控设备和监控服务器两大部分。安装于现场的监
控设备负责完成现场的监控、数据采集压缩和无线传输。监控服务器负责完成监控设备的控
制和管理、监控数据的处理和存储等。两部分之间的通信完全是基于TCP/IP协议的,该系统
在软件框架上采用了DSP /B IOS开发工具以及TI的参考框架Reference Framework 5 (RF5),
结构紧凑,移植性和可扩展性强[1]。系统整体框图如图1所示。
图1 系统框图
2.1 系统的工作原理和流程
由系统框图可以看出,从前端采集来的视频信号经过硬件编码压缩后通过CDMA
Modem 模块传到固定的服务器上。
监控设备采用 DM642 作为实时图像处理平台,在该硬件平台上运行服务器端软件,负
责系统多点控制,实现实时视频采集、本地视频回放(回放未经压缩的原始视频流)、H.264
代写论文,代写代发表
- 2 -
视频压缩编码、视频压缩码流分割及 RTP 封装发送;应用层 QoS 控制模块根据接收到的
来自客户端的 RTCP 报告包,对网络状况做出分析和判断,对传输速率进行控制,以应对
不同网络状况下得到实时视频的需求。
监控服务器计算机运行客户端软件,接收来自前端服务器端的压缩视频流,视频 RTP
解包组装成帧、视频解码、视频播放;客户端通过 RTCP 通道向服务器端发送网络状况报
告,使服务器能根据统计来的网络状况,对系统的传送速率进行控制;对压缩的视频数据进
行数字化存储。
3. CDMA1X 系统传输视频图像存在的问题
利用CDMA1X 系统传输图像,在特定的时间具有较好的图像效果,但在其他时间会有
比较明显的跳帧和马赛克现象,而且在内容变化比较剧烈的情况下,图像也会有比较严重的
恶化。造成这些现象的原因主要有以下几个方面:
(1) CDMA 网络带宽不稳定。
由于CDMA 系统属于自干扰系统,当小区内接入的用户增加时,各用户分配的带宽就
会减少,同时无线信道会随着时间和空而变化。此外,CDMA 系统目前的上行平均速率范
围从10Kbps 到100Kbps,变化比较剧烈。
(2) IP 网络的带宽不稳定。
由于IP 网络只提供尽力而为的传输,通常使用的UDP 传输协议更没有任何可靠性机制,
因而数据包在IP 网络中传输必不可少的会出现丢包现象。
(3) 视频压缩过程中产生的数据丢失[2]。
通过分析可知,在没有丢包时图像虽然没出现马赛克现象,但其帧率却远远小于我们所
设计的帧率值,因此可以断定,在视频压缩过程中会产生数据丢失。
从以上分析可知,图像数据的丢失主要发生在网络中,特别是在无线接入侧。对实现
IP 视频通信QoS[3]来说,主要就是解决视频传输控制问题。为了改进解码图像质量,需要
采取一套合适的QoS 机制,在不增加带宽的基础上,通过合理的设计网络和终端发送机制
来减少网络带宽受限时的丢包率和时延。
基于网络的方案涉及到整个传输网络的更改,显然是不现实的,本研究是从终端出发,
利用RTP 协议的思想和一种较简单的方法来解决其QoS 问题。
4. RTP/RTCP 协议的简化
4.1 RTP/RTCP 简介
RTP( Real-time Transport Protocol)被定义为传输音频、视频等实时数据的传输协议。
与传统的注重高可靠的数据传输的运输层协议相比,它更加侧重数据传输的实时性。此协议
提供的服务包括时间载量标识、数据序列、时戳、传输控制等。RTP 协议和 UDP 二者共
同完成运输层协议功能。
RTCP(Real-time Transport Control Protocol)是设计和 RTP 一起使用的进行流量控制
和拥塞控制的服务控制协议。其基本思想是采用和数据分组同样的配送机制向 RTP 会话中
的所有与会者周期性地传送控制分组,从而提供数据传送 QoS 的监控手段,并获知与会者
的身份信息。
代写论文,代写代发表
- 3 -
4.2 简化RTP/RTCP
由RTP 协议格式可知,与实时传输密切相关的字段是:序列号(Sequence number)、时
间戳(Timestamp)和同步源标识(Synchronization source (SSRC)identifier)。因此,考虑
在无线信道这样一种带宽资源极为有限的条件下,并且追求图像质量的前提下,我们可以利
用RTP 的思想,设计一种更为简单的协议,数据包格式如下图2:
图2 简化RTP 数据包格式 图3 简化RTCP 包的数据格式
头32 比特为包序号,起始于一个随机数,以后每发送一个包,序号加一,接收端可以
据此检测包丢失和重建序列。接下来的32 位是同步源标识,因为服务端可能有多路视频源,
接收端可以据此区分不同的媒体源。接下来就是数据信息。
针对该协议,系统定义了逻辑信道结构来标识一个逻辑信道,并记录该逻辑信道的参数,
结构如下:
typedef struct
{
int channelNo; /*通道号*/
SOCKET sock; /* 使用的套接字*/
Char ip[20]; /* 收端和发端的IP 地址*/
int port; /* 收端和发端的端口号*/
unsigned short seq; /* 包序号*/
unsigned long ts; /* 时间戳*/
unsigned long ssrc; /*同步源标识*/
int status; /* 信道状态 */
} rtp_hdr_t;
每个逻辑信道创建时,初始化这个结构对象。其中,channelNo 用来记录此逻辑信道
信道号,用于逻辑信道释放时找到此信道;sock 是此逻辑信道发送接收数据时使用的
Socket;seq 是包头的序列号,其值初始化为随机数,以后每个 RTP 数据包将前一个包的
序号加 1 作为自己的序列号;ts 是时间戳,初始化值也是随机数,以后同一帧数据的数据
包使用采集时间作为自己的时间戳;ssrc 用于标识视频源;status 记录此逻辑信道的状态,
0 为关闭,1 为打开。
按照RTP 协议的规定,简化的RTP 协议构建于UDP[4][5]协议的上层,这里由于协议非
常简单,把它看作应用层的一部分,在服务器端视频数据进行封装时,将该逻辑信道的参数
如包的序列号、时间戳、SSRC 源标识等参数封装到包头中。视频数据封装后通过 UDP
Socket 进行发送。为了让实现变得简单,我们只设计了一种RTCP 包结构,格式如图3 所
示。其中,NTP 时间戳记录该 SRTCP 发出的绝对时间,RTP 时间戳记录的是 NTP 时间
戳指示的时间,但是时间单位和初始值与数据分组中的 RTP 时间戳相同。根据这一对应关
代写论文,代写代发表
- 4 -
系就可控制来自不同源的相同媒体和不同媒体之间的同步,其条件是这些信源的 NTP 时间
戳是同步的。
4.3 码率控制的实现
本设计采用基于反馈的速率控制机制,视频数据通过简化后的RTP 打包传送,在 RTP
首部字段中包含了数据发送信息。数据接收的反馈信息通过简化的RTCP 包传送,在 RTCP
包的报告中包含有目的端的视频质量信息,具体包括发送的报文数量、包丢失数量、以及时
间戳信息。视频RTCP 模块具有对接收到的视频报告的分析和统计功能。包括:
-从一时间间隔的两个报告,计算累计丢包数。
-从两次收到的“发送方的报文数”的差,得到这一期间内所期望的收包数。
-从上述两项,计算这一期间内的丢包率,计算每秒的丢包率。
-从到达时间计算出时延抖动(interarrival jitter)估计短期的网络拥塞情况。
视频接收方的丢包检测是根据两个相邻RTCP 报告中响应信息进行计算。报告的基本信
息以如下结构体表示为:
Typedef struct
{
unsigned long ssrc; /*同步源标识*/
unsigned long ntp_sec; /*NTP 时间戳*/
unsigned long ntp_frac;
unsigned long srtp_ts; /*RTP 时间戳*/
unsigned int psent; /*发送的报文数*/
unsigned int cumulativeLoss; /*累计丢包数*/
}srtcp_hdr_t;
其中,cumulativeLoss 表示当前累计丢失的数据包个数;psent 则包含了当前应接收的
数据包个数;设连续接收到同一数据源(SSRC)的RTCP 报告分别为 Si,Sj,则丢包率的
计算如下:
在这段时间间隔里应接收到的数据包个数为:
ShouldRecvPacket = Sj.psent + Si.psent;
在这段时间丢失的数据包个数为:
LostPacket = Sj.cumulativeLoss - Si.cumulativeLoss;
则在这段时间间隔中的丢包率为:
PacketLossRate = lostPacket/ShouldRecvPacket;
若当前网络丢包率大于设定的阈值,则须反馈给视频采集模块(调整视频采集格式或者
帧率)和视频编码模块(调整视频编码质量),以动态适应当前网络状况。
5. 应用软件工作流程
本系统分为前端监控设备和监控中心服务器两大部分, 基于客户端/ 服务器
(Client/Server)模式;前端 DM642 硬件平台运行 Server 程序;计算机客户端运行 Client
程序。开发平台:前端 DM642 图像处理平台DSP/BIOS 嵌入式操作系统,开发工具 CCS;
客户端 Windows 2000 平台,开发工具 VC++6.0。下面分别说明。
(1) 监控设备服务器端程序实现:
利用socket 套接字封装并发送UDP 数据包:成功建立套接字之后,先从缓冲区中获取
视频数据,封装为RTP 包,然后根据一个共有的模式变量(这个变量中存放的事该瞬间的
发送端状态信息:连接、暂停还是断开),选择要进行的一条程序分支。如果是连接,就把
代写论文,代写代发表
- 5 -
压缩好的视频数据和同步源信息,序号信息,时间戳信息封装到一个简化RTP 包中,然后
再应用标准的socket 套接字,把RTP 封装成一个个的UDP 包,发送出去,如果是暂停,则
不发送数据,反复轮循状态控制变量的值,直到变到下一个状态,如果是停止,则终止编码
任务,并终止自身,关闭socket 套接字,结束PPP 连接,并让板子进入挂起的低耗电状态。
假设起始状态为发送状态。流程图如图4 所示:
图4 发送图像数据流程图
再增加一个监视TCP 的连接任务,用于接受建立反向的链路,并接收RTCP 包,提取
数据。首先建立socket 套接字,并同客户端建立连接,建立TCP 链路,如果连接上了,就
开始接受从客户端发送来的数据,本设计以客户端作为服务器端监听,让它先开启并监听,
让视频处理器与之连接。这种方法建立TCP 链路,不必获取发端的IP 地址,只需要在发端
的sockaddr_in 结构体中放置客户端服务器的静态地址就可以了。流程图如图5:
图5 TCP 连接任务流程图 图6 客户端传输任务流程图
代写论文,代写代发表
- 6 -
调度 RTCP 分组,统计已发送包的总数,发送简化的 RTCP 分组,将统计好的网络信
息发送到对端。同时,等待并接收来自对端的RTCP 报告包,当接收到一个数据包的时候,
进行TCP 解包,取出 RTCP 报告包信息,进行分析,对网络状况进行分析,做出判断,实
时的对视频传输速度进行控制使视频传输的速率适合当前的网络状况,使客户端能实时的收
到服务器端的视频信息,在网络状况很差时,可能会出现视频图像断断续续的现象,但是不
会完全卡死,不会因为网络阻塞而一点图像都收不到,而是能收到帧率比较低的清晰的图像。
(2)监控中心客户端程序实现:
客户端的程序主要由三个线程组成,收UDP 包线程,发TCP 包线程和视频解码播放线
程(其中解码播放部分实际上包括两个线程,一个为解码,一个为图像的显示,这里将其看
作一个整体)。
这部分主要实现UDP 包的解包,获得简化的RTP 包,提取数据,分析包头信息,统计
收到的包总数和丢包率;建立TCP 链路,并发送控制命令和简化的 RTCP 分组到前端服务
器端,以及添加可视化的友好控制界面等部分代码。这里给出报告包的传输任务流程图如图
6 所示。
在本系统结构中,简化的RTP/RTCP 协议模块作为视频发送线程的一个功能模块,根
据网络状况实时调整视频图像的传输速率,实现对视频的质量控制,实现不同网络状况下的
实时视频传输与播放。
6. 结论
在CMDA (码分多址)网络覆盖范围内,依托CDMA 2000 1X 移动通信公众网实现图像
监控,便捷实用,比传统监控系统有多方面优势。但实时视频传输对网络带宽要求很高,目
前速率最高的无线广域网CDMA 1X 的实际上行速率大约40kbps。本研究是从终端出发,
利用RTP 协议的思想和一种较简单的方法来解决其QoS 问题。总体而言,它能够显著的减
少包头的开销,从而能够显著的减少带宽的开销,但是能够很好的实现RTP 协议的实时传
输和反馈控制的功能,得到较好的图像质量和传输效果。同时,通过TCP 和UDP 相结合的
方法进行无线通信,保证了传输的稳定性和快速性。
参考文献
[1] 江思敏,刘畅. TMS320C6000 DSP 应用开发教程[M].北京:机械工业出版社,2005.
[2] 杨成军. 低码率视频通信的相关技术研究[M]. 北京:北京邮电大学图书馆,2001
[3] Qian Zhang, Wenwu Zhu, Ya-qin Zhang. End-to-End QoS for Video Delivery over Wireless
Internet.Proceedings of the IEEE.[J] 2005. 93(1): 123-134.
[4] M.Tim Jones.嵌入式系统TCP/IP 应用层协议[M].电子工作出版社,2003.1
[5] W.Richard Steven 著. TCP/IP Illustracted Volume1:The Protocols. 范建华等译.[M] 北京:机械工业出版
社,2000
[6] 郭晓鹏,李存斌. Visual C++高级编程及其项目应用开发.[M]北京:中国水利电出版社,2004
代写论文,代写代发表