来源:期刊VIP网所属分类:计算机网络发布时间:2020-12-28浏览:次
摘 要:文中针对视频监控信号对网络带宽要求高,难以通过公网远程传输等问题,提出了基于RTMP协议的实时视频远程传输解决方案,通过开发视频转换软件将桥梁现场视频信号转换为RTMP码流,并将其推流至云平台端搭建的Nginx流媒体服务器上。客户端通过开发Web端和安卓移动视频播放软件,实现了桥梁视频监控信息的跨平台展示应用,提升了桥梁安全的实时监管能力。
关键词:RTMP协议;流媒体;Nginx服务器;Web;编码技术;视频监控
0 引 言
近年来,随着我国交通基础设施建设的跨越式发展,各类跨江跨海大桥建立的健康监测系统逐渐成为保障桥梁安全的重要手段。视频监控凭借技术成熟,监测方式直观可靠等优点已成为桥梁健康监测系统的标配。但视频信号相较数字类监测信号对网络带宽要求较高,常出现卡顿、掉帧等问题。同时考虑桥梁现场恶劣的工况及数据安全要求,导致目前只能采用高速光纤专网实现视频信号的局域网传输,大大限制了网络传输距离和应用范围。
本文提出了一种基于RTMP(Real Time Messaging Protocol,RTMP)协议的视频监控数据远程传输方案,在不改变桥梁监测系统网络架构的基础上,实现了视频监控信号的远程传输和多平台展示应用[1-2]。
1 编码协议简介
1.1 RTMP协议
RTMP协议是一种进行实时数据通信的网络协议,主要用来在支持Flash/AIR平台和支持RTMP协议的流媒体服务器之间进行音视频数据通信[3-4]。
RTMP协议是建立在TCP协议之上的应用层协议,其数据包由一个固定长度的包头和最大长度为128 B的包体组成。RTMP協议数据包格式如图1所示。
协议包头中MessageType为消息类型,PayloadLength为报文长度,TimeStamp为消息时间戳,StreamID为视频流ID。协议包体主要由基本消息头(ChunkBasicHeader)、负载消息头(ChunkMessageHeader)、扩展时间戳(ExtendedTimeStamp)和消息块数据(ChunkData)组成。
为保证在低网络带宽下视频流的传输,在RTMP协议下视频消息块被拆分为若干个小的数据块,各数据块通过ChunkMessageHeader消息头可重新组装成完整的消息块。数据采集端将视频流分割成较小的数据块后以TCP协议发送至服务器端,客户端获取服务器端数据块后重新将其组装成完整的视频消息块,实现视频流的流畅播放,从而解决了低带宽情况下的视频延迟和卡顿问题。
1.2 H.264编码技术
H.264是当前一种主流的视频压缩编码标准。与H.261,H.263等视频编码标准相比,H.264协议采用DCT变换编码加DPCM差分编码,并融合了运动估计、多帧预测、基于内容的变长编码等先进技术,使其编码压缩效率大幅提升,进而有效提升视频质量及其网络适应能力。
H.264协议为解决不同应用中网络传输的差异问题,在架构层面定义了两个层级。
(1)视频编码层(VCL):通过视频信息的编码,实现视频内容的高效展示;
(2)网络提取层(NAL):判断当前网络环境,并采用相应的提取算法打包和传输视频数据。
H.264编码架构如图2所示。
2 总体技术路线
本文结合以往项目经验,提出基于RTMP协议的视频监控信号的远程传输方案,总体技术路线如下:
(1)桥梁现场视频摄像机将采集的原始视频流数据通过光纤内网传输到监控中心的视频处理服务器;
(2)自主开发RTMP码流转换软件并将其部署在视频处理服务器上,将桥梁现场传输的原始视频信号转换为RTMP码流,并通过加密公网将RTMP信号推流至具有公网IP的云服务器端;
(3)在云服务器端部署并配置Nginx流媒体服务Server端,实现RTMP视频数据的中继转换功能;
(4)在客户端开发基于Web端和安卓移动端的视频播放软件,从Nginx服务器获取并展示视频信号,实现桥梁视频监控信息的实时展示[5-6]。
RTMP视频监控网络架构如图3所示。
3 关键技术研究
3.1 RTMP码流转换开发
目前主流的RTMP码流转换方法是采用FFmpeg将RTSP视频信号转换为RTMP流媒体信号,但FFmpeg存在丢包率高、多路信号传输支持性差等缺点。
经过多方比选验证,本文最终采用EasyRTMP直播组件进行二次开发,该组件集成了RTMP基本协议与异步推送、环形缓冲区、网络拥塞自动丢帧、事件回调、缓冲器、关键帧检索等功能,可兼容市面上大部分RTMP流媒体服务器。
EasyRTSP直播组件具有Windows,ARM,Linux等不同跨平台版本[7-8]。实际开发中采用C++语言引用EasyRTSPClient.dll类库编写视频流接收及RTMP转换功能,其代码逻辑流程如图4所示。
本模块通过RTSPSourceCallback回调函数不断监听视频数据,当监听到数据类型为EASY_SDK_VIDEO_FRAME_FLAG时,启动RTMP码流转换代码块,其处理核心逻辑代码如下:
if(_mediatype== EASY_SDK_VIDEO_FRAME_FLAG)
{
pChannel->fPusherInfo.rtmpHandle= EasyRTMP_Create();1 [2]
推荐阅读:物联网技术计算机信息化论文投稿
期刊VIP网,您身边的高端学术顾问
文章名称: 基于RTMP协议的桥梁视频监控关键技术研究
文章地址: http://www.qikanvip.com/jisuanjiwangluo/54868.html