矿用实时视频传输系统设计
2020-02-29李文峰路建通雷文礼白慧
李文峰, 路建通, 雷文礼, 白慧
(1.西安科技大学 通信与信息工程学院, 陕西 西安 710054; 2.延安大学 物理与电子信息学院, 陕西 延安 716000)
0 引言
煤矿井下环境恶劣、地势复杂[1-2],地面工作人员对煤矿井下环境进行视频监控,可实时查看煤矿开采作业及人员工作现场情况[3]。目前,煤矿井下视频传输系统大多是半数字化视频传输系统,系统采集前端主要采用CCD和CMOS图像传感器,辅助光源多采用LED红外补光灯,低光照强度或黑暗环境下视频画面不清晰;视频监控信号以电缆方式传输,传输速率不稳定、传输时延高,不能达到实时传输视频的要求,布线传输受区域限制、费用高;未采用统一的视频接口标准,兼容性较差[4-6]。
本文设计了一种矿用实时视频传输系统。该系统采用MCCD图像传感器和960 nm红外激光采集视频数据,数据经H.264压缩编码后进行RTP封装,并通过流媒体服务器流化为RTSP视频流,通过ONVIF标准将RTSP视频流进行封装并通过网络传输,可提高视频清晰度、系统兼容性和传输速率稳定性。
1 系统总体设计
矿用实时视频传输系统设计需实现以下功能:在低光照强度或黑暗环境下拍摄清晰视频画面;满足本质安全(以下简称本安)要求;支持ONVIF标准、UDP协议、RTP协议及RTSP协议,提高系统兼容性和视频传输稳定性。系统技术指标:传输速率≤10 Mbit/s;丢包率≤3.5%。
系统工作原理如图1所示。系统采集前端采集的PAL制式模拟视频信号经视频解码模块转换为YUV数字信号,数字信号通过MFC(Multi Format Codec,多格式编码器)编码为H.264格式数据,在此基础上添加UDP报文头进行RTP封装,然后通过Live555流媒体服务器进行数据流化,对RTSP视频流进行ONVIF封装,最后通Socket网络编程实现实时视频网络传输功能。
图1 矿用实时视频传输系统工作原理Fig.1 Working principle of mine-used real-time video transmission system
2 系统硬件设计
矿用实时视频传输系统主要由最小系统单元、低照度视频采集单元、通信单元、本安型供电单元等组成,如图2所示。该系统以S5PV210处理器为核心,其内嵌Linux操作系统,具有高达1 GHz的工作主频,采用ARM7指令集,支持MPEG-1/2/4,H.263,H.264等格式视频的编解码。
图2 矿用实时视频传输系统硬件组成Fig.2 Hardware composition of mine-used real-time video transmission system
2.1 低照度视频采集单元
低照度视频采集单元包括采集前端、辅助光源、视频解码模块,其中采集前端采用MCCD图像传感器,辅助光源由960 nm红外激光和光强度传感器BH1750组成。在光照强度充足情况下,采集前端采集到PAL制式的模拟视频信号,信号经I2C通信总线配置的视频解码模块TVP5150转换为8 bit 4∶2∶2 ITU-R BT.656格式的YUV数字信号。当光照强度低于处理器预先设置的光照阈值时,系统开启960 nm红外激光对采集前端进行红外补光。
2.2 通信单元
通信单元包括串口和RJ45网口:串口用于打印系统参数并向S5PV210处理器烧录Linux内核、根文件系统、驱动及应用程序;RJ45网口遵循TCP/IP通信协议,用于本地监控显示,以及将系统接入网络实现远程监控功能。
2.3 本安型供电单元
本安型供电单元主要由交流输入、AC/DC转换器、电源管理模块及双重限压限流保护电路组成。电源管理模块以MAX8903C为核心,实现电压转换功能并输出2路电压:采集前端和辅助光源所需的3.3 V驱动电压;处理器外围电路所需的5 V驱动电压。双重限压限流保护电路采用2级串联拓扑,利用高电压浪涌抑制器LTC4366对系统上电时产生的浪涌及负载端过流、过压、短路等故障快速做出反应。
3 系统软件设计
3.1 视频采集及压缩
视频采集流程基于Linux内核中V4L2驱动框架提供的API(Application Program Interface,应用程序接口)通用函数接口实现,如图3所示。打开视频设备文件后,通过ioctl函数调用V4L2框架提供的接口对视频设备属性进行管理。为提高视频采集效率,采用内存映射方式进行视频采集[7]。
图3 视频采集流程Fig.3 Video acquisition flow
S5PV210处理器自带MFC硬件编码功能,采集到的视频数据在进行H.264压缩时通过调用MFC的接口函数实现。MFC支持linear mode和title mode 2种帧内存格式,由于在源码设计上title mode编码格式较复杂,所以选用linear mode来编码。首先打开YUV数据源文件,将获取的视频文件头写入H.264文件中,然后将YUV帧分量保存到MFC输入缓存中并转换成NV12格式,最后将其进行编码并保存。
3.2 ONVIF接口模块
ONVIF接口模块设计主要通过gSOAP工具实现[8-10],流程如图4所示。从ONVIF官网或本地获取3个WSDL文档(ws-discovery.wsdl,devicemgmt.wsdl和media.wsdl),用gSOAP工具生成的wsdl2h应用程序在Linux平台下对WSDL文档进行编译,生成ONVIF头文件onvif.h,再通过gSOAP下的soapcpp2对头文件进行交叉编译,生成RFC框架代码(soap C.c,soap H.h,soap Stub.h)和客户端/服务器端(Client/Server,C/S)代码(soap Server.c,soap Client.c),最后调用相关API功能函数实现ONVIF接口模块。
图4 ONVIF接口模块设计流程Fig.4 ONVIF interface module design flow
3.3 实时视频传输
H.264格式视频网络传输流程如图5所示。UDP数据传输时延小、时效性较高,因此在H.264码流数据前加8 byte的UDP报文头并进行RTP封装[11-13],然后通过RTSP_live模块获取RTSP实时视频流,并将本地RTSP实时视频流与ONVIF接口模块进行封装,最后通过Socket网络编程实现实时视频流网络传输。
图5 视频网络传输流程Fig.5 Video network transmission flow
3.3.1 RTSP实时视频流获取
视频传输线程运行环境主要包括任务调度器、RTSP客户端创建及用户验证。RTSP客户端创建后,必须监听OPTIONS消息是否发送,当监听到该消息时运行RTSP_live模块消息交互时序,如图6所示。Live555服务器被RTSP_live调用时,按照消息交互时序进行数据处理,RTSP_live模块通过函数Get Complete Frame From Sink()获取视频流。
图6 RTSP_live模块消息交互时序Fig.6 Message interaction sequence of RTSP_live module
3.3.2 RTSP实时视频流与ONVIF接口模块封装
为实现支持ONVIF协议的实时视频功能,需要ONVIF接口模块支持Live555服务器传输本地RTSP实时视频流[14]。RTSP实时视频流与ONVIF接口模块封装过程:在源码包中查看C文件onvif.c中函数_trt_GetStreamUri()的保存地址,设置该地址与Live555服务器所在地址一致,其次填充_trt_GetStreamUri()结构体完成soap结构体初始化,调用soap_call_trt_GetStreamUri()函数获取RTSP流媒体地址,配置Makefile文件并编译,运行二进制可执行文件onvif,同时打开Live555服务器,在ONVIF测试工具ODM(ONVIF Device Manager,ONVIF设备管理器)中可查到RTSP实时视频流。
3.3.3 实时视频流网络传输
RTSP流媒体数据依托TCP/IP网络通信协议进行远程传输,因此支持ONVIF标准和RTSP协议的实时视频流通过Socket网络编程进行传输。Socket网络编程采用C/S模式,服务器端进行监听,当监听到客户端有连接请求后,服务器端接收请求并建立连接,此时服务器端和客户端可通过网络进行通信[15]。
客户端首先通过socket()函数初始化Socket对象并设置参数,然后以connect()函数连接指定服务器IP地址,最后将实时视频流数据通过memset()和send()函数发送至服务器端。由于需要在PC机上接收图像信息,所以采用.NET平台的服务器,打开服务器后直接设置为监听状态,当检测到客户端端口后获取实时视频流数据,对视频流数据进行解码后再通过Windows Media Player视频软件播放视频,实现实时视频流网络传输。
4 系统测试
搭建系统测试环境,如图7所示。将系统和数字录像机通过网络交换机接入公网,直接接入数字录像机的显示器用于本地显示,在PC端和移动终端通过客户端进行实时远程监控。
图7 矿用实时视频传输系统测试环境Fig.7 Test environment of mine-used real-time video transmission system
4.1 丢包率
采集视频数据时间设为100 s,利用抓包工具发送和接收数据包,在发送端和接收端分析抓到的RTP数据包。4组视频数据丢包率测试结果见表1,可看出平均丢包率约为1.256%,达到技术指标要求。
表1 视频数据丢包率测试结果Table 1 Test results of video data packet loss rate
4.2 传输速率
利用Winpcap工具获取采集时间为3,5,8,10 min,传输距离为100 m时的视频数据传输速率,测试结果见表2。可看出随着采集时间和接收端数据的增加,传输速率基本稳定,平均传输速率为2.190 Mbit/s,达到技术指标要求。
表2 视频数据传输速率测试结果Table 2 Test results of video data transmission rate
5 结语
矿用实时视频传输系统采用960 nm红外激光作为辅助光源,利用MCCD图像传感器采集视频信号,提高了低光照强度或黑暗环境下视频清晰度;通过视频解码模块将采集的PAL制式模拟视频信号转换为YUV数字信号,数字信号经MFC进行H.264压缩编码,并在此基础上添加UDP报文头进行RTP封装,提高了视频数据传输的时效性;通过Live555流媒体服务器进行数据流化,使用ONVIF标准封装RTSP视频流,通过Socket网络编程实现实时视频流数据网络传输,提高了系统兼容性和传输速率稳定性。经测试,该系统视频传输速率为2.190 Mbit/s,丢包率约为1.256%,达到实时视频传输要求。