首页> 中国专利> 一种解决视频流传输系统产生的花屏现象的方法

一种解决视频流传输系统产生的花屏现象的方法

摘要

本发明提供一种解决视频流传输系统产生的花屏现象的方法,该方法引入了消息队列和中间代理,消息队列用于缓存服务器通过UDP协议传输给客户端的视频流,中间代理接受服务器发送的下载请求和cookie,判断是否给该客户端发送过视频流,发送过,判断消息队列第一次缓存的视频流是否有丢包现象,如果有丢包现象,需要重新缓存,继续让服务器将第二次缓存的数据发送给消息队列进行缓存,当不存在丢包现象,就不让服务器再次接受的下载请求的视频流缓存至消息队列,中间代理直接调取消息队列内的视频流发送给客户端,这样解决了由于丢包或串流现象存在的花屏问题,进而也避免了服务器重新发送视频流而浪费过多带宽的技术问题。

著录项

  • 公开/公告号CN107864132A

    专利类型发明专利

  • 公开/公告日2018-03-30

    原文格式PDF

  • 申请/专利权人 中广热点云科技有限公司;

    申请/专利号CN201711072147.1

  • 申请日2017-11-03

  • 分类号

  • 代理机构北京爱普纳杰专利代理事务所(特殊普通合伙);

  • 代理人王玉松

  • 地址 100081 北京市海淀区中关村南大街百花苑11号院9号楼

  • 入库时间 2023-06-19 04:53:57

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2020-03-10

    授权

    授权

  • 2018-04-24

    实质审查的生效 IPC(主分类):H04L29/06 申请日:20171103

    实质审查的生效

  • 2018-03-30

    公开

    公开

说明书

技术领域

本发明属于视频传输技术领域,特别涉及一种解决视频流传输系统产生的花屏现象的方法。

背景技术

流媒体服务器的主要功能是以流式协议(RTP/UDP等)将视频流传输给客户端,供监控员监视观看或者发送给处理器进行处理解码使用。

由于UDP协议是一种不可靠、无连接的简单传输协议,所以现有的视频流在传输过程中无法保证数据能准确可靠地达到目的地,容易存在丢包现象;又由于UDP协议本身存在一种未知性,服务器发送数据给客户端,服务器并不知道客户端有没有正常接收,服务器接收到下载请求后,就不断发送视频流,这样当客户端由于某些原因意外停止接收数据,服务器并不知晓,仍旧坚持往该客户端发送数据,当该客户端再次要求下载视频流时,服务器接收两次发送数据指令,就会产生串流现象,无论是丢包还是串流现象都会导致客户端观看视频存在花屏现象,目前解决的技术就是通过检查UDP协议的串流检测接口发送流信息的IP是否与接收客户端的IP相同,如果相同,就关闭服务器正在发送的视频流,此外还有就是通过引入心跳包协议来接收客户端的反馈信息,但是以上两种方法都不能很好地解决由于丢包问题产生的花屏现象。

发明内容

为了解决现有技术中存在的问题,本发明提供了一种解决视频流传输系统产生的花屏现象的方法,该方法能够很好地解决由于UDP协议传输视频流产生的丢包或串流现象而引起的花屏问题。

本发明具体技术方案如下:

本发明提供一种解决视频流传输系统产生的花屏现象的方法,其中,视频流传输系统包括流媒体服务器、服务器和客户端,该方法包括如下步骤:

S1:在服务器与客户端之间连接消息队列和中间代理,所述中间代理与所述服务器、消息队列和客户端之间相互通信;

S2:客户端向服务器申请下载视频流的请求,该请求包括视频流的索引号和时间戳,索引号指根据每一视频流的名称设置的编号;

S3:服务器接收每一客户端的下载请求,获取每一客户端的cookie,并根据下载请求将流媒体服务器提供的视频流发送给消息队列进行缓存,同时将客户端的下载请求和cookie发送给中间代理;

S4:消息队列根据不同的cookie将不同客户端请求的视频流存储在不同的缓存空间中,每一缓存空间的编号为该客户端的cookie;

S5:中间代理将消息队列缓存的视频流按照时间顺序传输给客户端,并对传输的视频流进行记录;

S6:中间代理对再次接受服务器发送的客户端的cookie进行判断,当判断出给客户端发送过视频流时,记录接收该cookie的时间点,从消息队列的缓存空间内找到与该时间点对应的视频流,判断是否存在丢包现象,如果存在丢包现象,进行步骤S3,如果不存在丢包现象,进行步骤S7;

S7:中间代理向服务器发送停止将该客户端最新一次请求下载的视频流缓存到消息队列内。

进一步的改进,步骤S6判断是否存在丢包现象的具体方法为:

S61:从消息队列的缓存空间内找到与该时间点对应的视频帧Zn及其前一帧Zn-1

S62:分别计算Zn-1帧和Zn帧的帧内偏差,并进行比较,比较一致时,判断不存在丢包现象,比对不一致时,判断存在丢包现象。

进一步的改进,步骤S62具体方法为:

S621:分别分离出Zn-1帧和Zn帧的运动目标图像和背景图像;

S622:分别将各运动目标图像和背景图像分割成多个子块,分别计算Zn-1帧中运动目标图像偏差F1、背景图像偏差F2,Zn帧中运动目标图像偏差F3和背景图像偏差F4

S623:根据运动目标图像偏差和背景图像偏差分别计算Zn-1帧和Zn帧的帧内偏差y和y1

S624:计算△y=|y-y1|,判断△y大小,当△y≤△y1时,△y1为预设阈值,比对一致,否则,比对不一致。

优选地,

优选地,运动目标图像偏差F1、背景图像偏差F2、运动目标图像偏差F3和背景图像偏差F4均通过如下公式计算:

Si为子块第i个像素的灰度值,G为子块的像素总数,m为子块的个数,Fn表示图像偏差,n=1、2、3、4。

进一步的改进,每一缓存空间在缓冲视频流时,都为各视频流建立矩阵索引,矩阵索引的横列表示时间戳,纵列表示索引号。

进一步的改进,中间代理内设一记录库,该记录库用于记录发送的每一视频流的编号、时间戳及对应客户端的cookie。

进一步的改进,步骤S6判断出给客户端发送过视频流的具体方法为:

S63:中间代理再次接受服务器发送的客户端的cookie,在记录库中寻找是否给对应cookie的客户端发送过视频流,如果发送过,根据视频流的编号和时间戳到消息队列的缓存空间内寻找缓存的相应视频流,如果未发送过,中间代理不做处理。

进一步的改进,步骤S63在记录库中寻找是否给对应cookie的客户端发送过视频流的具体方法为:

S631:判断缓存空间内是否存在时间戳有交集的视频流,如果有,进行步骤S632,如果没有,判断未发送过;

S632:判断交集内视频流的索引号是否有交集,如果有,判断发送过,如果没有,判断未发送过。

本发明的有益效果如下:

本发明提供一种解决视频流传输系统产生的花屏现象的方法,该方法首先是在UDP传输协议过程中,引入了消息队列和中间代理,其中中间代理为一中间代理服务器,具有很强的处理功能,消息队列用于缓存服务器通过UDP协议传输给客户端的视频流,中间代理接受服务器发送的下载请求和cookie,并判断接收同一cookie的次数,如果是两次,说明客户端向服务器发送两次下载请求,根据消息队列缓存的数据,判断消息队列第一次缓存的视频流是否有丢包现象,如果有丢包现象,说明第一次缓存的数据不能用,需要重新缓存,那么中间代理不对客户端发送的第二次下载请求做处理,继续让服务器将第二次缓存的数据发送给消息队列进行缓存,当消息队列内存在的视频流不存在丢包现象,说明客户端再次向服务器请求下载的视频流与之前的视频流存在重复现象,就不让服务器将再次接受的下载请求的视频流缓存至消息队列,中间代理直接调取消息队列内的视频流发送给客户端,这样解决了由于丢包或串流现象存在的花屏问题,进而也避免了服务器重新发送视频流而浪费过多带宽的技术问题。

附图说明

图1为实施例1一种解决视频流传输系统产生的花屏现象的方法的流程图;

图2为判断是否存在丢包现象的流程图;

图3为实施例2步骤S62的流程图;

图4为实施例3步骤S63的流程图。

具体实施方式

下面结合附图和以下实施例对本发明作进一步详细说明。

实施例1

本发明实施例1提供一种解决视频流传输系统产生的花屏现象的方法,所述视频流传输系统包括流媒体服务器、服务器和客户端,如图1所示,该方法包括如下步骤:

S1:在服务器与客户端之间连接消息队列和中间代理,所述中间代理与所述服务器、消息队列和客户端之间相互通信;

S2:客户端向服务器申请下载视频流的请求,该请求包括视频流的索引号和时间戳,索引号指根据每一视频流的名称设置的编号;

S3:服务器接收每一客户端的下载请求,获取每一客户端的cookie,并根据下载请求将流媒体服务器提供的视频流发送给消息队列进行缓存,同时将客户端的下载请求和cookie发送给中间代理;

S4:消息队列根据不同的cookie将不同客户端请求的视频流存储在不同的缓存空间中,每一缓存空间的编号为该客户端的cookie;

S5:中间代理将消息队列缓存的视频流按照时间顺序传输给客户端,并对传输的视频流进行记录;

S6:中间代理对再次接受服务器发送的客户端的cookie进行判断,当判断出给客户端发送过视频流时,记录接收该cookie的时间点,从消息队列的缓存空间内找到与该时间点对应的视频流,判断是否存在丢包现象,如果存在丢包现象,进行步骤S3,如果不存在丢包现象,进行步骤S7;

S7:中间代理向服务器发送停止将该客户端最新一次请求下载的视频流缓存到消息队列内。

本发明提供一种解决视频流传输系统产生的花屏现象的方法,该方法首先是在UDP传输协议过程中,引入了消息队列和中间代理,其中中间代理为一中间代理服务器,具有很强的处理功能,消息队列用于缓存服务器通过UDP协议传输给客户端的视频流,中间代理接受服务器发送的下载请求和cookie,并判断接收同一cookie的次数,如果是两次,说明客户端向服务器发送两次下载请求,根据消息队列缓存的数据,判断消息队列第一次缓存的视频流是否有丢包现象,如果有丢包现象,说明第一次缓存的数据不能用,需要重新缓存,那么中间代理不对客户端发送的第二次下载请求做处理,继续让服务器将第二次缓存的数据发送给消息队列进行缓存,当消息队列内存在的视频流不存在丢包现象,说明客户端再次向服务器请求下载的视频流与之前的视频流存在重复现象,就不要再将服务器再次接受的下载请求的视频流缓存至消息队列,中间代理直接调取消息队列内的视频流发送给客户端,这样解决了由于丢包或串流现象存在的花屏问题,进而也避免了服务器重新发送视频流而浪费过多带宽的技术问题。

实施例2

本发明实施例2提供一种解决视频流传输系统产生的花屏现象的方法,该方法与实施例1的基本相同,不同的是,如图2所示,步骤S6判断是否存在丢包现象的具体方法为:

S61:从消息队列的缓存空间内找到与该时间点对应的视频帧Zn及其前一帧Zn-1

S62:分别计算Zn-1帧和Zn帧的帧内偏差,并进行比较,比较一致时,判断不存在丢包现象,比对不一致时,判断存在丢包现象。

本发明进一步对步骤S62进行限定,如图3所示,具体方法为:

S621:分别分离出Zn-1帧和Zn帧的运动目标图像和背景图像;

S622:分别将各运动目标图像和背景图像分割成多个子块,分别计算Zn-1帧中运动目标图像偏差F1、背景图像偏差F2,Zn帧中运动目标图像偏差F3和背景图像偏差F4,其中,运动目标图像偏差F1、背景图像偏差F2、运动目标图像偏差F3和背景图像偏差F4均通过如下公式计算:

Si为子块第i个像素的灰度值,G为子块的像素总数,m为子块的个数,Fn表示图像偏差,n=1、2、3、4

S623:根据运动目标图像偏差和背景图像偏差分别计算Zn-1帧和Zn帧的帧内偏差y和y1

S624:计算△y=|y-y1|,判断△y大小,当△y≤△y1时,△y1为预设阈值,比对一致,△y>△y1,比对不一致。

本发明进一步对是否存在丢包现象进行了限定,进而提高了整个判断过程的准确性,大大提高了客户端观看视频的体验。

实施例3

本发明实施例3提供一种解决视频流传输系统产生的花屏现象的方法,该方法与实施例2的基本相同,不同的是,每一缓存空间在缓冲视频流时,都为各视频流建立矩阵索引,矩阵索引的横列表示时间戳,纵列表示索引号;中间代理内设一记录库,该记录库用于记录发送的每一视频流的编号、时间戳及对应客户端的cookie;如图4所示,步骤S6判断出给客户端发送过视频流的具体方法为:S63:中间代理再次接受服务器发送的客户端的cookie,在记录库中寻找是否给对应cookie的客户端发送过视频流,如果发送过,根据视频流的编号和时间戳到消息队列的缓存空间内寻找缓存的相应视频流,如果未发送过,中间代理不做处理;步骤S63在记录库中寻找是否给对应cookie的客户端发送过视频流的具体方法为:S631:判断缓存空间内是否存在时间戳有交集的视频流,如果有,进行步骤S632,如果没有,判断未发送过;S632:判断交集内视频流的索引号是否有交集,如果有,判断发送过,如果没有,判断未发送过。

本发明在中间代理内设置一记录库方便后续发送视频流的查找,并且根据视频流的时间戳和索引号可以提高查找效率。

本发明不局限于上述最佳实施方式,任何人在本发明的启示下都可得出其他各种形式的产品,但不论在其形状或结构上作任何变化,凡是具有与本申请相同或相近似的技术方案,均落在本发明的保护范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号