手机端
or

欢迎您加入我爱方案网QQ群

1.智能产品外包服务群(311606115)
2.嵌入式项目开发群(491609563)

一种基于IPTV终端的视频监控系统

魏靖凯; 王汝传; 李致远| IPTV,DM6446,RTP,视频监控| 2010-12-27
842 收藏
分享到: 
每日精选
热门推荐

【中心议题】

  •     *给出了一种基于IPTV终端的家庭视频监控系统的设计方案
  •     *2Mb/sADSL宽带接入网络下进行测试

【解决方案】

  •     *视频数据的压缩编码采用达芬奇技术实现
  •     *网络传输采用了RTP协议和基于丢包率的拥塞控制方法

0 引 言

IPTV作为数字新媒体日益被用户所看重,是“三网融合”的最大切入点,已成为不可阻挡的大趋势。同时, IPTV以其丰富的互动业务和良好的用户体验,可充分满足用户个性化、便捷化、交互式的业务需求,如今在很多国家获得了巨大发展。鉴于越来越多的用户家中配备了IPTV终端的设备,如果能将视频监控作为附加增值功能添入其中,既可以丰富运营商的业务内容,也可实现对家庭安全的发现和预防,体现对客户家庭的关爱,提升用户的满意度,节省用户的开支。

利用低功耗的IPTV终端设备,通过笔记本或PC机随时随地的、方便快捷地通过网络查看家中的情况,相比传统的家庭视频监控系统来说,优势非常明显,具有良好的市场潜力和应用前景。

1 系统的总体框架

本系统使用的IPTV终端硬件平台是基于TI公司推出的TMS320DM6446的图像压缩系统。整个平台由ARMDSP双核处理结构,视频处理子系统和其他外围电路组成,它不仅吸收了DSPRISC技术的优点,而且拥有强大的MontaVista Linux操作系统的支持,丰富的用户接口和较高的信号处理能力。ARM侧重保证操作系统的运行,管理外围接口并协调DSP工作。DSP利用其强大的高速实时信号处理功能,完成复杂的视频压缩算法。同时,该平台还拥有丰富的外设和硬件接口,如视频和图像加速器,用于声音编解码器界面和通信的串口, IDE硬盘接口,USB2. 0接口以及10/100Mb/s以太网接口等。

本系统使用Linux操作系统中的V4L2库来采集原始视频数据,在本地屏显的同时,调用IPTV终端TMS320DM6446平台中的DSP核编码MPEG-4视频帧;在数据传输过程中,采用Librtp库控制数据流的收发;在客户端,本系统使用开源的xvidcore,进行MPEG-4视频帧的解码;同时调用跨平台的SDL显示库,用于视频数据显示。系统的整体构架图如图1所示。

2 系统的具体实现

基于IPTV终端的家庭视频监控系统主要包括3个模块:视频采集编码模块、网络传输模块和客户端模块。

2. 1 视频采集编码模块

IPTV终端的硬件开发平台DM6446的视频输入驱动器服从V4L2驱动的标准。在IPTV终端创建4个线程来完成视频采集编码工作,如图2所示, 4个线程分别为:Capture线程、Video线程、LocalDisplay线程和SendPacket线程。

 

4个线程的交互过程为:Capture线程使用ioctl函数发送一个VIDIOC _DQBUF命令给设备驱动,VPSS前端设备驱动获取raw captured buffer(原始捕获数据缓冲)队列,其中VPSS是达芬奇数字平台的一个执行多相滤波的硬件,用于实现视频缩放。为了在编码的同时显示视频帧的预览,我们调用达芬奇数字平台开发包的API函数FifoUtil_put()LocalDisplay线程传递一个指向captured buffer的指针,然后Capture线程从video线程取得一个空的raw buffer。用已经移除重叠部分后的数据填充它,这个buffer随后被发送到Video线程用于编码。Video线程使用FifoUtil_get()SendPacket线程取得I/O buffer,并将编码后的视频数据写回I/O buffer。当LocalDisplay线程使用VPSS resizer模块和Rszcopy_execute()函数拷贝captured raw bufferFBDev帧缓冲设备中显示时,Video线程正使用VIDENC_process()调用DSP core对相同的captured buffer进行编码。当DSPvideo编码器完成编码, captured buffer随后被写入I/O buffer, I/O bufferFifoUtil_put()发送到SendPacket线程。SendPakcet线程将I/O buffer打包成RTP数据包通过网络发送出去。

2. 2 网络传输模块的设计和实现

本系统采用开源的Librtp库来实现基于RTP协议的实时数据传输。Librtp提供了实现RTP协议的大部分接口函数,我们只需要将其编译成静态库放置IPTV终端的文件系统中,便可以像调用C的标准函数库一样,轻松实现设置读取RTPRTCP数据包的信息,发送接收RTCP包的统计信息。使用RTP协议实现数据传输时的工作流程如图3所示。

IPTV终端按照RTP协议的标准,调用rtp_packet_send()函数将数据打包成RTP数据包,进行发送后调用rtcp_compound_add_sr()函数构造发送方报告包SR,统计自己的发送情况以通知客户端。客户端调用rtp_packet_read()函数进行接收,计算RTP数据包的接收量,同时根据接收的IPTV端的SR统计包,统计接收的丢包率、时延、抖动等信息以构造发送方统计包RR,IPTV终端反馈网络的情况,使其根据反馈信息调整发送RTP包的速率,以免发生网络拥塞。

本系统采用类似TCP的基于丢包率的拥塞控制方法,根据网络的拥塞情况,进行流量控制。丢包率p=丢失的包数/实际发送的包数;实际发送的包数可以通过RTP包头的序列号字段进行计算,丢失的包数为实际发送的包数减去实际接收的包数。实际接收的包数可以在接收端设置计数器进行统计。设置丢包率p的阀值,根据阀值将网络状态分为轻载、满载、拥塞。

设定阀值T1T2,并且0<T1<T2<1,当丢失率p<T1时表示轻载,可以逐渐增加数据传输,直到网络状态成为满载或发送方的发送能力达到最大;当丢失率p>T2时则表示拥塞,必须迅速减小数据传输,直到网络状态变为满载;T1p<T2时表示当前网络状态可以接收,继续维持这一状态。T1应取较低的值以避免QOS振荡的影响,T2的选取标准是丢失分组的程度虽然已经影响了数据的传输但解码后的视频效果在可以接收的范围内。经过多方面的权衡,选定T1取值为2%,T2取值为4%

2. 3 客户端模块的设计和实现

客户端模块创建2个线程,一个线程负责读取RTP包中的MPEG-4视频帧。为了消除网络延迟等原因造成的视频图像抖动,先将一定数量的MPEG-4视频帧先拷贝到预定义大小的缓存中,待填满后,调用xvidcore库函数xvid_decore()解码MPEG-4, xvid_decore()循环取出缓存中存放的每一帧数据,对收到的MPEG-4视频帧进行解码。xvidcore库中的所有解码工作都是由xvid_decore实现的, xvid_decore函数声明如下:

int xvid_decore(void* handle, int op,t void *param1, void* param2);

其中opt为解码所要做的操作, opt有以下3种操作:

1) XVID_DEC_CREATE:创建一个新的解码器,param1XVID_DEC_PARAM, handle为新编码器的句柄;

2) XVID_DEC_DECODE:解码一帧数据,param1XVID_ENC_FRAME;

3) XVID_DEC_DESTROY:关掉解码器,不返回任何句柄。

对于另一个线程SDLDisplay,xvid_decore中提取出MPEG-4视频帧解码后图像的参数,获取图像的宽度XDIM和高度YDIM,调用SDL库中的函数

 

SDL_CreateYUVOverlay( intwidth, intheigh,t Uint32 forma,tSDL_Surface* display),同时设置图像的编码格式,使用XviD库中定义的SDL_YV12_OVERLAY,该宏表示图像采取的是YV12的编码格式。我们使用out_buffer指向解码后的缓存。为了在显示界面上绘制出该图像,需要获取图像的YUV参量的位置,如式(1)~(3)所示:

outy = out_buffer; (1)

outu = out_buffer+XDIM*YDIM; (2)

outv = out_buffer+XDIM*YDIM* 5/4; (3)

其中: outyoutuoutv分别指向YV12图像中YUV参量的读取位置。提取出图像的YUV数据后,就可以在屏幕上按照像素点逐点描绘出来。这样便完成单视频帧的显示。循环做解码MPEG-4帧和图像绘制显示就可以流畅的播放接收到的实时视频监控数据流。

3 系统测试

为了测试基于IPTV终端的家庭视频监控系统的实际性能,我们使用了2 Mb/sADSL宽带接入业务,使得IPTV终端能够接入互联网,测试人员在外地下载监控客户端进行连接,相应的监控页面如图4所示。

从实际的运行效果来看,本系统具有良好的图像显示质量,播放流畅,测试时略有抖动,延迟时间基本控制在0. 3 s以内,能够满足家庭用户的需求。

4 结束语

本文提出一种在IPTV终端上实现家庭视频监控功能的方法,使用V4L2库采集视频数据,采用IPTV终端TMS320DM6446平台中的DSP核编码MPEG-4视频帧;为了保证网络传输的质量,采用Librtp库控制数据流的收发;在客户端,本系统使用开源的xvidcore,进行MPEG-4视频帧的解码;同时调用跨平台的SDL,用于视频数据显示。经过测试,监控系统运行良好,能够满足家庭视频监控的要求,同时还具有高度可靠稳定性,以及功耗低、投资小等优点,具有广阔的市场应用前景。

深圳市中电网络技术有限公司 Copyright© www.52solution.com 粤ICP备10202284号