当前位置: 首页 > 专利查询>吴振华专利>正文

一种基于RTMP协议的实时视频传输的实现方法技术

技术编号:35243066 阅读:22 留言:0更新日期:2022-10-19 09:49
本发明专利技术涉及一种基于RTMP协议的实时视频传输的实现方法,该方法在局域网环境下将视频数据传输至流媒体服务器,以备客户端调度使用。实现实时视频传输的方法过程分为视频帧数据上传、流媒体服务器存储和客户端拉流三个阶段。视频帧数据上传阶段将网络摄像头采集的视频数据以RTMP包的形式上传至流媒体服务器,保证传输过程的可靠性;流媒体服务器通过Nginx的RTMP实时模块保证传输的实时性;客户端拉流采用FFmpeg解码服务器传来的视频流以保证视频准确性。本方法使用局域网维持系统的整体运行,在视频上传与视频接收中,通过调整GOP(Group Of Picture)的间距提升视频传输系统的实时性。的实时性。的实时性。

【技术实现步骤摘要】
一种基于RTMP协议的实时视频传输的实现方法


[0001]本专利技术涉及一种基于RTMP协议的实时视频传输的实现方法。实时视频传输是视频监控系统的核心组成部分,属于通信领域。它广泛应用于直播,交通,医疗以及军事等各个领域。

技术介绍

[0002]在传输协议领域中,业界一直使用RTP作为传输视频流的网络协议,这种协议是依靠UDP网络协议进行传输,由于UDP是无连接且不可靠的,因此在网络传输时容易导致丢包、时延、抖动,当网络状况不佳时,会严重影响用户的体验。而RTMP协议使用TCP作为传输层的协议,可以有效保证视频流的传输质量,且支持声音以及视频从服务器到客户端的动态传输。此外RTMP协议支持的FLV封装格式能够在低码率的状况下显示清晰的画面,非常适用于带宽不足的情况下观看视频。采用RTMP协议传输视频数据具有可靠性,稳定性的作用。
[0003]本专利技术提出的基于RTMP协议的实时视频传输的实现方法,通过网络摄像头采集视频数据,并基于RTMP协议将视频数据传送到Nginx流媒体服务器中,通过Nginx的epoll并发技术提供3000条左右的请求连接数,提高了视频传输的可靠性和实时性。

技术实现思路

[0004]本专利技术的目的在于,提供一种基于RTMP协议的实时视频传输的实现方法,能够有效解决视频数据传输过程的丢包问题以及视频播放过程中产生的画面卡顿问题,具有视频数据传输高效以及低延迟等特点。
[0005]本专利技术是采用以下技术手段实现的:
[0006]1.一种基于RTMP协议的实时视频传输的实现方法,其视频传输过程分为视频帧数据上传、流媒体服务器存储和客户端拉流三个阶段:
[0007]1.1通过远程网络摄像头采集高清视频数据,然后将该视频数据格式转换为YUV420格式,再按照H264标准进行编码,最后通过FFmpeg软件封装上下文转换为符合RTMP协议传输要求的FLV格式文件;
[0008]1.2流媒体服务器采用Nginx轻量级服务器,能够为上传的视频数据提供对应的网址进行存储或广播,在接收或者广播的过程中,建立RTMP连接通道进行传输,视频数据到达流媒体服务器后,通过其自身的epoll技术实现对多个客户端的并发连接;
[0009]1.3视频监控系统客户端通过Qt框架搭建,采用循环开启线程的方式接收流媒体服务器广播的视频数据,每次线程的开启都会打开一条通道进行传输,并对每条线程进行监测,当线程停止进行解码视频时立即释放资源;
[0010]1.4通过创建FIFO缓冲队列以解决画面失真问题,首先客户端接收流媒体服务器传输的视频数据,将数据存储到FIFO缓存队列,解码器从FIFO缓存队列中读取视频数据进行解码,空闲的空间继续缓存视频数据。
[0011]2.根据权利要求1所述的一种基于RTMP协议的实时视频传输的实现方法,其特征
在于:视频输入源将数据传递给FFmpeg,经过编码、封装后以RTMP数据格式上传给Nginx服务器,然后服务器将数据转发给客户端。其中在上传数据建立网络连接前,服务器内部通过调用ngx_rtmp_handshake函数和ngx_rtmp_handshake_recv函数使视频推送端和服务器进行握手操作,选用Nginx的nginx

rtmp模块搭建流媒体服务器,然后通过对配置文件中rtmp模块的修改,实现视频数据流的转发。
[0012]3.根据权利要求1所述的一种基于RTMP协议的实时视频传输的实现方法,其特征在于:前述1.2中Nginx服务器建立多个RTMP连接进行传输数据,这其中包括一个客户端中多个通道的连接以及多个客户端中多个通道的连接。
[0013]4.根据权利要求1所述的一种基于RTMP协议的实时视频传输的实现方法,其特征在于:前述1.4中FIFO缓冲队列在队列入口处缓存视频数据,在队列出口处解码视频。
[0014]5.根据权利要求1所述的一种基于RTMP协议的实时视频传输的实现方法,其特征在于:前述1.4中FIFO缓冲队列缓存双关键帧,并在推送视频数据和获取视频数据双方设置合理的gop_size大小来调整关键帧的体积和GOP帧之间的间隙。
[0015]本专利技术一种基于RTMP协议的实时视频传输的实现方法,具有以下优势:
[0016]1.即使在多条线程通道开启时,系统也能够在视频传输过程中实现零丢包,在客户端能够连续稳定地高清显示且不失真。
[0017]2.通过局域网以及对于GOP关键帧的设置,能够使视频监控系统从上传开始到接受的过程中始终保持着较低的视频延迟。
[0018]3.服务器使用Nginx轻量级服务器具有良好调度资源的特性,并且能够为客户端提供良好稳定的连接。
附图说明
[0019]图1是本专利技术的实时视频传输流程图
[0020]图2是本专利技术的实时视频传输架构图
[0021]图3是本专利技术的流媒体转发流程图
[0022]图4是本专利技术的FIFO结构图
[0023]图5是本专利技术的GOP帧结构图
[0024]图6是本专利技术视频流推送模块流程图
[0025]图7是本专利技术视频数据获取模块流程图
具体实施方式
[0026]以下结合说明书附图对本专利技术的实施做进一步的说明:
[0027]图1是实时视频传输的流程图,分别为设备端,流媒体服务端以及客户端三个部分。首先设置网络摄像头开始视频数据采集,按照H.264标准格式进行编码,并按照FFmpeg提供的FLV封装策略进行封装;然后通过局域网将数据包传输至Nginx配置的流媒体服务器进行广播,并进入等待请求状态;客户端通过向流媒体服务器发出请求来获取视频,当视频到达客户端后,首先进入缓存区待解码线程开启,最后通过播放模块播放获取到的实时视频。在视频数据上传和视频数据获取的过程中均采用RTMP/TCP协议。
[0028]图2是实时视频传输的架构图,主要分为四个部分:摄像头视频采集,流媒体服务
器,网络传输,客户端。四个部分通过交换机路由器相连构成局域网,视频数据传输首先由摄像头采集获得,通过局域网建立RTMP连接传输至流媒体服务器;在服务端主要包含两个服务器:一是流媒体服务器,负责对视频数据的转发功能,二是数据库服务器负责用户信息以及设备信息的存储和查询功能。如果在用户数量以及设备数量不是很多的情况下,数据库服务器可以和流媒体服务器搭建在同一服务器中;视频监控客户端负责管理用户设备信息,多个客户端连入局域网中,向流媒体服务器发出请求获取实时视频数据,并将视频数据显示到客户端供用户观看。由于采用Nginx作为流媒体服务器,所以可支持3000个RTMP连接数供不同的客户端使用。
[0029]图3是流媒体转发流程图,流媒体在上传的过程中需要经历三个过程:建立网络连接、建立网络流、传输视频数据。在上传数据建立网络连接前,服务器内部通过调用ngx_rtmp_handshake函数和ngx_rtmp_handshake_recv函数使视频推送端和服本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于RTMP协议的实时视频传输的实现方法,其视频传输过程分为视频帧数据上传、流媒体服务器存储和客户端拉流三个阶段:1.1通过远程网络摄像头采集高清视频数据,然后将该视频数据格式转换为YUV420格式,再按照H.264标准进行编码,最后通过FFmpeg软件封装上下文转换为符合RTMP协议传输要求的FLV格式文件;1.2流媒体服务器采用Nginx轻量级服务器,能够为上传的视频数据提供对应的网址进行存储或广播,在接收或者广播的过程中,建立RTMP连接通道进行传输,视频数据到达流媒体服务器后,通过其自身的epoll技术实现对多个客户端的并发连接;1.3视频监控系统客户端通过Qt框架搭建,采用循环开启线程的方式接收流媒体服务器广播的视频数据,每次线程的开启都会打开一条通道进行传输,并对每条线程进行监测,当线程停止进行解码视频时立即释放资源;1.4通过创建FIFO缓冲队列以解决画面失真问题,首先客户端接收流媒体服务器传输的视频数据,将数据存储到FIFO缓存队列,解码器从FIFO缓存队列中读取视频数据进行解码,空闲的空间继续缓存视频数据。2.根据权利要求1所述的一种基于RTMP协议的实时视频传输的实现方法,其特征在于:视频输入源将数...

【专利技术属性】
技术研发人员:吴振华孙志强吕英明吕峥
申请(专利权)人:吴振华
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1