传统的3G监控技术由于带宽有限、资费较高、移动性能较差等不足,在高清视频监控的应用不很理想[1]。4G移动通信技术的广泛应用,为高清视频传输与监控技术提供了更强有力的技术支撑,突破了网络带宽的瓶颈,TDD-LTE制式最高传输速率达到100 Mb/s,满足了高清视频的传输要求。另外,传统的基于PC平台的监控系统具有成本高、体积大、操作复杂、使用范围受限等缺点。低成本的视频监控系统对于高清视频的编解码能力有限,如基于TI公司的DM642,DM365视频处理器视频监控系统,它们在视频编解码和算法处理分析能力不高[2],因而需要提高处理器性能来改善系统性能。
因此,本文采用基于德州公司(TI)的DM3730 ARM+DSP双核处理器,搭建了嵌入式硬件开发平台,用来测试视频传输系统各项性能指标。DM3730处理器具有1 GHz ARM Cortex-A8内核,800 MHz TMS320C64x+ DSP双核处理器,图形加速处理引擎,支持H.264视频编解码[3],支持TI-Gstreamer插件。Gstreamer是流行在Linux系统下的多媒体应用程序框架,它采用基于组件和管道的体系结构,可以简化视频编解码的操作流程,满足高清视频的编解码和传输需求。
1 系统总体设计系统总体设计如图 1所示,总共分为2部分:一是DM3730嵌入式硬件平台、视频采集、H.264编码、Gstreamer插件、4G无线网络发送模块;二是远程终端接收PC平台,H.264解码,Gstreamer显示管道组件。该系统软件开发基于Linux系统,其代码具有稳定性好、支持驱动模块广泛等优点。在具体设计中,系统采用的是Angstrom Linux,它是一个界面友好的嵌入式发行版本,可用于手持设备、机顶盒和网络存储设备等嵌入式设备。系统实现功能包括嵌入式平台采集视频,处理器ARM端通过Gstreamer插件调用DSP端H.264编码,通过UDP协议传输到PC服务器端,PC机服务器端通过Gstreamer解码H.264视频,然后进行显示[4]。
|
| 图 1 系统总体设计 |
系统硬件平台设计如图 2所示,它是以DM3730处理器为核心,视频AD转换芯片TVP5146负责采集模拟视频,电源管理芯片TPS7370负责为DM3730提供1.8 V内核电压和系统时钟,4G网络模块负责将视频数据以RTP格式打包发送到服务器端。在硬件平台移植Linux系统后,通过I2C总线配置TVP5146模拟输入接口,将模拟视频转换为数字视频,由ISP接口传递DM3730处理器。
|
| 图 2 硬件设计框图 |
视频采集使用德州仪器公司(TI)TVP5146M2芯片采集模拟视频。TVP5146M2是一款高清数字视频解码器,能够将所有通用的模拟视频解码成数字视频信号输出到DM3730处理器中,支持RGB和YPbPr信号的模数转换(A/D),支持4个11位、转化速率30 MS/S(million samples per second)采样率AD转换器(ADCs),支持4模拟视频通道,10个模拟输入端子,用户可以使用I2C接口配置内部的模拟视频开关[5]。该AD芯片可以减小DM3730处理器的压力,增加了对视频后续处理的效率。
4G网络部分采用亮衡公司的B51系列4G TD-LTE模块,该模块支持TD-SCDMA和TDD-LTE双频段,LTE上行速度达50 Mb/s,下行速度达100 Mb/s,而高清移动监控视频的压缩编码后码率大小需要8 Mb/s左右,因此在4G网络环境下,可以满足多路高清移动视频的传输需求。
3 系统的软件设计软件设计采用Linux作为嵌入式操作系统,内核版本为linux2.6.32 ,PC主机环境为Ubuntu10.04,交叉编译工具为arm-none-linux-gnueabi-,开发环境为TI公司提供的多媒体开发套件DVSDK-04.01.00.09 [6]。
系统软件设计的总体流程如图 3所示,通过采集音视频并编码打包,然后通过网络传输出去,通过客户端可以接收到数据并分别解包后显示出来。具体实现方式将用到Gstreamer内部提供的元件和TI提供的视频编码的插件。
|
| 图 3 系统软件流程 |
视频采集部分使用Gstreamer插件的V4L2src组件调用Linux设备驱动程序V4L2进行视频获取,Video4linux2(简称V4L2)是Linux中关于视频设备的内核驱动。在Linux系统中,视频设备被作为设备文件,应用程序可以像访问普通文件一样对其进行读写。V4L2驱动获取视频数据的基本流程为:1)打开视频设备,设备在Linux系统根目录中以文件节点形式存在,设备被系统识别之后,根目录下会出现/dev/video0文件节点;2)设置视频设备的属性,比如图像的亮度,缩放尺寸等;3)设定数据传输格式和传输方式,本文所使用的摄像头支持FFmpeg格式和YUYV格式视频;4)申请内核缓存,映射到用户空间,循环采集视频;5)关闭设备,退出时释放相关资源[7]。V4L2驱动采集视频流程如图 4所示。
|
| 图 4 V4L2视频采集流程 |
视频编解码部分的应用程序基于Gstreamer多媒体开源框架[8],如图 5所示,是在TI公司的DMAI接口和编码解码器引擎基础上进行开发的。Gstreamer应用程序可以利用系统封装好的VISA API接口调用位于DSP端远程服务器的编解码器,通过Linux系统API调用系统底层驱动V4l2,获取视频数据,利用编解码器对视频数据进行编码解码。
|
| 图 5 DMAI Gstreamer插件系统框架 |
系统编码模块通过组件Gstreamer多媒体组件管道,设计了该部分应用程序,管道组件流程如图 6所示。这种开发方法与直接使用DMAI开发多媒体应用程序相比,优势在于可以使用各种各样的多媒体数字编码解码器。这些编码解码器都可以被链接到开发者所设计的的数据管道(pipeline)中,同时还具有音频视频同步和可插拔等优点[9]。所以插件模块通过管道机制进行统一的数据交换,容易利用已有各种组件“组装”出一个功能完善的多媒体应用程序。
|
| 图 6 视频编码程序流程 |
下面分别对本系统所采用的Gstreamer元件进行介绍。
1)V4l2src是一种视频流数据获取元件,它可以实现从video4linux2驱动设备(OV5640、TVP5150)中读取视频帧,并且广泛支持RGB、YUV、JPEG、MPEG等常见视频格式。
2)ffmpegcolorspace这个元件可以把一个色彩空间转换到另一个色彩空间,比如从将视频格式从RGB转转成YUV格式。
3)TIVidenc1视频编码组件,这个组件可以通过DMAI的VISA API调用DSP子系统中视频编码器,将视频流编码成相应的格式。
4)rtph264pay负责将H264格式的视频流打包成RTP协议包,使其适用于实时流媒体传输。
5)udpsink组件负责通过将RTP格式视频流通过以太网UDP传输到服务器端[10]。
3.3 服务器端软件设计首先在服务器端Windows系统或者Ubuntu10.04 Linux系统上安装Gstreamer插件,然后通过gst-launch命令建立相应的测试管道。gst-launch是Gstreamer提供的快速建立多媒体处理管道的软件,它可以通过指令来验证整个软件实现的可能性,并且利用终端命令实现视频在服务器端UDP网络接收与RTP格式视频数据解包,进而实现视频的H.264解码[11],最后使用videosink命令将监控视频图像将显示在显示器上。
下面分别在Windows系统下和ubuntu系统下进行测试视频传输系统性能。首先在Windows XP cmd终端中键入以下命令:
gst-launch udpsrc port=8000caps="application/x-rtp,media=(string)video,clock-rate=(int)90000 ,encoding-name=(string)H264,payload=(int)96" !gstrtpjitterbuffer !rtph264depay ! ffdec_h264 ! ffmpegcolorspace ! videoscale !"video/x-raw-yuv" ! autovideosink
上述命令中udpsrc port=8000表示本地的UDP接收端口;caps表示与接收视频相关的编码属性;rtph264depay表示将打包成RTP协议包的视频数据解码为H264传输流;ffdec_H264表示对H.264压缩数据进行解压;ffmpegcolorspace元件把一个色彩空间转换到另一个色彩空间,可以在转换不同的YUV格式或者RGB格式;videoscale元件可以修改视频帧的尺寸,这个元件会先检查不修改视频尺寸是否可行,如果可行,就不再进行尺寸的转换,所以在pipeline中加入这个元件安全的,可以提高鲁棒性;ximagesink组件的作用是将视频图像显示到屏幕上[12]。
同样在Ubuntu10.04 Linux操作系统的超级终端下键入如下命令:
gst-launch-0.10 -v udpsrc port=8877 caps="application/x-rtp,media=(string)video,clock-rate=(int)90000,encoding-name=(string)H264,payload=(int)96" ! rtpH264depay ! ffdec_H264 ! ffmpegcolorspace ! ximagesink sync=false
以上命令中port=8877表示本地UDP端口8877,这里需要与UDP发送端端口想对应;rtpH264depay表示对RTP解包处理;ffdec_H264表示对H.264压缩数据进行解压;ffmpegcolorspace是对视频格式校正,以适应下游元件的显示插件;autovideosink是将视频图像显示出来。
4 系统测试结果与分析通过搭建嵌入式硬件平台对系统性能进行测试,嵌入式硬件平台如图 7所示。
|
| 图 7 嵌入式硬件平台 |
视频数据采集端通过搭建DM3730硬件实验平台进行视频数据采集,而视频接收服务器运行在PC机上的Windows系统和Linux系统环境中。在Windows环境下安装VMware虚拟机软件完成嵌入式开发环境搭建,最后基于Gstreamer插件和测试命令在Windows和Linux系统环境中测试系统的视频传输效果。
由于本实验采用Gstreamer插件命令,组建Gstreamer管道对该视频监控系统进行性能测试,需要在Windows和Linux环境下进行Gstreamer插件环境的搭建,使用该插件命令的测试效果如图 8、9所示。
|
| 图 8 Windows测试环境结果 |
|
| 图 9 Linux测试环境结果 |
在搭建的硬件平台上,对双核处理器的一路1 280×720分辨率即720P的视频解码时,ARM端负责视频显示,DSP端负责视频解码,各自分工,得出ARM和DSP各自的负载情况,如图 10所示。
|
| 图 10 ARM与DSP负载 |
由图 10可知,基于ARM+DSP双核处理的视频传输系统中DSP子处理器可以有效承担视频编码压缩的任务,提高系统视频传输效率。在处理一路720P视频解码占用约1/5的CPU负载,当CPU满负荷处理可以满足处理4~5路720P视频实时传输的要求。
在实验室环境下,分别使用MC8630 3G模块和Balanstech B51 4G模块将系统板接入移动无线网,拨号连接成功之后,获得公网地址IP,最后测试获得RTT(round-trip time)往返时延、上行速度、下行速度、传输H.264编码的视频所用时间(视频大小为21.71 Mb),如表 1所示。
| 网络类型 | RTT/ms | 上行速度/(Mb·s-1) | 下行速度/(Mb·s-1) | 上传视频时间/s |
| 3G网络 | 113 | 0.32 | 2.74 | 67.8 |
| 4G网络 | 50 | 7.42 | 46.42 | 10.9 |
从表 1可以看出该系统在4G移动网络下视频的上传速度相比3G移动网络环境下有很大提高,4G环境下上传视频速度约是3G环境下的6倍,下行速度更远大于3G移动网络。这说明该系统在4G网络环境下能够提供更大的视频带宽,提高了视频传输路数。
在实验室的环境下,首先使用摄像头采集视频流,保存到为YUV格式文件中(YUV保留了视频的原始信息),然后再将该文件使用H.264和MPEG4压缩,压缩后的数据保存到文件中。经过多次压缩试验,实验结果如下表 2所示。
| 文件类型 | 分辨率/(pixel) | 帧率/(f·s-1) | 文件大小/MB |
| YUV文件 | 640×480 | 30 | 156.4 |
| MPEG4文件 | 640×480 | 30 | 3.4 |
| H.264文件 | 640×480 | 30 | 1.9 |
从表 2中可以看出,MPEG-4压缩比为46∶1,H264压缩比为81∶1,说明H264的压缩比是MPEG-4的1.76倍,压缩比优于MPEG-4编码,所以使用H.264压缩可以大大节省传输带宽,增加视频传输路数。该实验环境下的视频传输帧率在30 f/s左右,能达到实时视频传输的要求。
如图 11所示,Elecard StreamEye是一个为用户提供一系列的视频编码功能和流媒体结构分析功能的软件。从图中左上框图可以看到实时的视频传输效果,右上框图是H.264文件相关属性信息,包括文件类型MPEG2,视频流类型AVC/H.264,分辨率640×480,帧率30 f/s,文档级别为基本画帧baseline:30。
|
| 图 11 H.264码流分析结果 |
本文实现了基于DM3730双核ARM+DSP处理器搭建了硬件平台,然后基于Gstreamer多媒体框架完成了的视频传输系统软件的设计。
1)采用DM3730 DSP+ARM双核处理器,有效提升视频编解码算法性能。
2)采用4G网络传输模块使视频监控系统的传输速率得到很大提高。
3)基于Gstreamer多媒体开源框架使得开发了嵌入式端和服务器端的应用程序更为简单、快速。
文章详细分析了TI Gstreamer在Davinci架构中视频编解码和传输中的应用原理,重点阐述了视频监控系统中的V4L2视频采集、H.264编码、UDP封包传输等。最后实验结果表明:该传输系统具有良好的实时性和可靠性,能够满足高清视频的实时传输需求,达到了设计目的和要求。
| [1] | 周建平, 刘歆浏. 基于DM3730平台的智能数字视频监控系统[J]. 兵工自动化,2012, 31 (5) : 59 –60. |
| [2] | 刘兴民, 赵连军. 基于GStreamer的远程视频监控系统的关键技术研究[J]. 计算机应用与软件,2011, 28 (5) : 243 –246. |
| [3] | 王洪伟. 基于DM3730和GStreamer的网络视频传输技术设计与实现[J]. 应用科技,2014, 41 (3) : 19 –22. |
| [4] | 周辉, 刘峰. 基于DaVinci和Gstreamer技术的视频播放系统设计[J]. 电视技术,2011, 35 (4) : 64 –66. |
| [5] | Texas Instruments. Sitara linux sdk sdg 05.05.01.006[M]. Dallas, USA:Texas Instruments: 2012 . |
| [6] | Texas Instruments. DVSDK 4.02.00.06 dm3730 release notes[M]. Dallas, USA:Texas Instruments: 2012 . |
| [7] | 孟凡飞, 刘金海, 吴宗泽. 基于GStreamer的嵌入式流媒体播放器的设计[J]. 微计算机信息,2010, 26 (20) : 31 –32. |
| [8] | 刘阳. 基于GStreamer的机顶盒多媒体播放管理模块的设计与实现[D]. 北京:北京邮电大学, 2012:10-12. |
| [9] | 张起贵, 张胜, 张刚, 等. 最新DSP技术:"达芬奇"系统、框架和组件[M]. 北京: 国防工业出版社, 2009 : 20 -96. |
| [10] | zjb_integrated. DAVINCI DM365-DM368开发攻略——开发环境搭建(DVSDK4.02).[2015-03-11]. http://zjbintsystem.blog.51cto.com/964211/621435. |
| [11] | 王永刚. 3G视频监控系统中的H.264编码实现与应用软件开发[D]. 杭州:杭州电子科技大学, 2011:37-39. |
| [12] | 彭启琮. 达芬奇技术-数字图像/视频信号处理新平台[M]. 北京: 电子工业出版社, 2008 : 10 -40. |


