一种视频流传输方法、系统及存储介质与流程

文档序号:20377131发布日期:2020-04-14 14:10阅读:221来源:国知局
一种视频流传输方法、系统及存储介质与流程

本发明涉及计算机应用技术领域,尤其涉及一种视频流传输方法、系统及存储介质。



背景技术:

很多视频输入源会有连接数量的限制,如ipc(ipcamera,也就是网络摄像机)会有连接数量(请求端同时连接的数量)的限制,当连接数量达到最大值(不同厂家的产品最大值都不一样,相同厂家,不同型号的设备也不一样,具体看产品型号)时将拒绝连接请求;当请求多个相同的视频源时,视频源端,如ipc一般采用循环发送完整数据帧方式发送给各个请求端,即发完一个请求端,再发送给另一个请求端。当请求数量多时,ipc可能会因为的负荷过高导致信号延时或卡顿等。比如ipc把一个1024000字节的帧,发给16个请求端时,传统的循环发送方式会导致第一接收端已经收到完数据且已经解码显示完,而最后面的接收端可能只接收一部分数据甚至还没开始接收数据。如果使用组播方式(组播也叫多播,是一种一对多的通讯方式,它可以把数据发给同一个组的对象,但因为组播是走udp协议的,不可靠的,可能会丢包或错包,其中udp全称为userdatagramprotocol,即用户数据报协议,udp是不可靠传输)发给请求端,也可能会因为网络环境导致丢包或错包,最终导致请求端解码异常和花屏。

因此,现有技术还有待于改进和发展。



技术实现要素:

本发明的主要目的在于提供一种视频流传输方法、系统及存储介质,旨在解决现有技术中的上述缺陷。

为实现上述目的,本发明提供一种视频流传输方法,应用于视频流传输系统,所述视频流传输系统包括多个请求端、转发服务器和多个视频端;所述视频流传输方法包括如下步骤:

至少一个所述请求端将一个所述视频端的播放地址发送给所述转发服务器,所述转发服务器接收所述请求端的请求,并根据所述播放地址确定目标视频源;

所述转发服务器创建一通道并进行标识,当其他所述请求端请求同样的所述目标视频源时,所述转发服务器直接通过所述通道转发所述视频端的所述目标视频源;

所述转发服务器将所述目标视频源中的数据分成若干个子包,并将若干个所述子包分别发送给请求列表中的每个所述请求端。

可选地,所述的视频流传输方法,其中,所述至少一个所述请求端将一个所述视频端的播放地址发送给所述转发服务器,所述转发服务器接收所述请求端的请求,并根据所述播放地址确定目标视频源,具体包括:

一个或者多个所述请求端获取至少一个所述视频端的所述播放地址,并将所述播放地址发送给所述转发服务器;

所述转发服务器接收所述请求端的请求,并根据所述播放地址确定目标视频源,并判断当前请求是否已存在;

当存在时,将所述请求端加入到请求列表,当不存在时,所述转发服务器向所述视频端发送rtsp请求,如果请求失败,则直接回复请求失败的消息给所述请求端。

可选地,所述的视频流传输方法,其中,所述转发服务器创建一通道并进行标识,当其他所述请求端请求同样的所述目标视频源时,所述转发服务器直接通过所述通道转发所述视频端的所述目标视频源,具体包括:

如果所述请求端向所述视频端请求成功,所述转发服务器创建一个通道并以请求地址标记所述通道;

当其他所述请求端请求同样的所述目标视频源时,所述通道已存在,所述转发服务器直接通过所述通道转发所述视频端的所述目标视频源给所述请求端;

所述转发服务器回复当前的所述请求端请求成功,当前所述请求端开始接收所述转发服务器转发的数据。

可选地,所述的视频流传输方法,其中,所述转发服务器将所述目标视频源中的数据分成若干个子包,并将若干个所述子包分别发送给请求列表中的每个所述请求端,具体包括:

所述转发服务器从所述视频端中获取所述目标视频源,按预设规则将所述目标视频源中的数据分成若干个子包;

所述转发服务器根据所述请求端的请求列表确定转发对象,将若干个所述子包分别发送给所述请求列表中的每个所述请求端。

可选地,所述的视频流传输方法,其中,所述转发服务器通过tcp协议将若干个所述子包分别分片发送给请求列表中的每个所述请求端。

可选地,所述的视频流传输方法,其中,所述将若干个所述子包分别发送给请求列表中的每个所述请求端,之后还包括:

在转发数据过程中,当出现某个请求端掉线时,则断开已掉线请求端的连接,并将所述请求端从所述请求列表移除,等待所述请求端重连;

在转发数据过程中,当出现其他新的请求端请求连接时,则创建新通道或者加入已存在的所述请求列表。

可选地,所述的视频流传输方法,其中,所述请求端根据封包协议,接收到数据后重新组成完整的帧,再解码显示。

可选地,所述的视频流传输方法,其中,所述目标视频源为标准视频流。

此外,为实现上述目的,本发明还提供一种视频流传输系统,其中,所述视频流传输系统包括多个请求端,与多个所述请求端连接的转发服务器,以及与所述转发服务器连接的多个视频端;

至少一个所述请求端将一个所述视频端的播放地址发送给所述转发服务器,所述转发服务器接收所述请求端的请求,并根据所述播放地址确定目标视频源;所述转发服务器创建一通道并进行标识,当其他所述请求端请求同样的所述目标视频源时,所述转发服务器直接通过所述通道转发所述视频端的所述目标视频源;所述转发服务器将所述目标视频源中的数据分成若干个子包,并将若干个所述子包分别发送给请求列表中的每个所述请求端。

此外,为实现上述目的,本发明还提供一种存储介质,其中,所述存储介质存储有视频流传输程序,所述视频流传输程序被处理器执行时实现如上所述的视频流传输方法的步骤。

本发明通过所述视频流传输系统包括多个请求端、转发服务器和多个视频端;所述包括:至少一个所述请求端将一个所述视频端的播放地址发送给所述转发服务器,所述转发服务器接收所述请求端的请求,并根据所述播放地址确定目标视频源;所述转发服务器创建一通道并进行标识,当其他所述请求端请求同样的所述目标视频源时,所述转发服务器直接通过所述通道转发所述视频端的所述目标视频源;所述转发服务器将所述目标视频源中的数据分成若干个子包,并将若干个所述子包分别发送给请求列表中的每个所述请求端。本发明通过转发服务器将视频端的视频流同时分片发送给多个请求端,可以避免丢包,错包导致的花屏问题,在最近相同时间点,让请求端接收完相同的数据包然后解码显示,保证各个请求端在最接近相同时间点接收完完整的数据。

附图说明

图1是本发明视频流传输方法的较佳实施例的流程图;

图2是本发明视频流传输方法的较佳实施例中步骤s10的流程图;

图3是本发明视频流传输方法的较佳实施例中步骤s20的流程图;

图4是本发明视频流传输方法的较佳实施例中步骤s30的流程图;

图5是本发明视频流传输方法的较佳实施例中请求端按协议自行组包的示意图;

图6为本发明系统的较佳实施例的运行环境示意图。

具体实施方式

为使本发明的目的、技术方案及优点更加清楚、明确,以下参照附图并举实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

本发明较佳实施例所述的视频流传输方法,应用于视频流传输系统,所述视频流传输系统包括多个请求端、转发服务器和多个视频端;如图1和图6所示,所述视频流传输方法包括以下步骤:

步骤s10、至少一个所述请求端将一个所述视频端的播放地址发送给所述转发服务器,所述转发服务器接收所述请求端的请求,并根据所述播放地址确定目标视频源。

具体的过程请参阅图2,其为本发明提供的视频流传输方法中步骤s10的流程图。

如图2所示,所述步骤s10包括:

s11、一个或者多个所述请求端获取至少一个所述视频端的所述播放地址,并将所述播放地址发送给所述转发服务器;

s12、所述转发服务器接收所述请求端的请求,并根据所述播放地址确定目标视频源,并判断当前请求是否已存在;

s13、当存在时,将所述请求端加入到请求列表,当不存在时,所述转发服务器向所述视频端发送rtsp请求,如果请求失败,则直接回复请求失败的消息给所述请求端。

步骤s20、所述转发服务器创建一通道并进行标识,当其他所述请求端请求同样的所述目标视频源时,所述转发服务器直接通过所述通道转发所述视频端的所述目标视频源。

具体过程请参阅图3,其为本发明提供的视频流传输方法中步骤s20的流程图。

如图3所示,所述步骤s20包括:

s21、如果所述请求端向所述视频端请求成功,所述转发服务器创建一个通道并以请求地址标记所述通道;

s22、当其他所述请求端请求同样的所述目标视频源时,所述通道已存在,所述转发服务器直接通过所述通道转发所述视频端的所述目标视频源给所述请求端;

s23、所述转发服务器回复当前的所述请求端请求成功,当前所述请求端开始接收所述转发服务器转发的数据。

步骤s30所述转发服务器将所述目标视频源中的数据分成若干个子包,并将若干个所述子包分别发送给请求列表中的每个所述请求端。

具体过程请参阅图4,其为本发明提供的视频流传输方法中步骤s30的流程图。

如图4所示,所述步骤s30包括:

s31、所述转发服务器从所述视频端中获取所述目标视频源,按预设规则将所述目标视频源中的数据分成若干个子包;

s32、所述转发服务器根据所述请求端的请求列表确定转发对象,将若干个所述子包分别发送给所述请求列表中的每个所述请求端。

其中,本发明中的请求端可以是电脑或手机上的播放器,也可以是拼接墙或其它终端显示设备。

进一步地,所述转发服务器通过tcp协议将若干个所述子包分别分片发送给请求列表中的每个所述请求端。在转发数据过程中,当出现某个请求端掉线时,则断开已掉线请求端的连接,并将所述请求端从所述请求列表移除,等待所述请求端重连;在转发数据过程中,当出现其他新的请求端请求连接时,则创建新通道或者加入已存在的所述请求列表。

具体地,例如有10台显示设备(即请求端),分别为:设备a、设备b、设备c…设备j,同时要显示ipc(即视频端,图6中的每一个视频源表示一个视频端):192.168.1.100(视频源)的图像。图像经过转发服务器relay转发给各个显示设备。各视频端的播放地址可由厂家提供,可以通过工具搜索获得

下面以具体实现步骤的例子进行说明:

步骤s1:设备a把ipc的播放地址,比如:“rtsp://192.168.1.100/video0”发给转发服务器relay。

步骤s2:转发服务器relay收到设备a的请求,根据播放地址,确定了目标视频源是192.168.1.100,请求协议是rtsp(realtimestreamingprotocol,实时流传输协议,是tcp/ip协议体系中的一个应用层协议);查询这个请求是否已存在,如果存在,则把设备a添加到该请求队列(即请求列表),跳转到步骤s4;如果不存在,执行步骤s3。

步骤s3:转发服务器relay向ipc发rtsp请求,如果请求失败,则直接回复设备a,请求失败;如果请求成功,创建一个通道标识,把该到的数据放一缓存中,并以该请求地址:“rtsp://192.168.1.100/video0”标记成为这个通道的标识,当其它设备请求这个ipc的码流时,可查询到该通道已经存在,可以统一用转发服务器relay中转发,而不需要再次向ipc请求数据。

步骤s4:回复当前请求设备(设备a),请求成功,当前请求设备(设备a)开始接收转发服务器relay的数据。

步骤s5:转发服务器relay从ipc中每收到一帧数据(因为是标准rtsp协议,收到的数据都是一帧一帧的),按16384字节分成若干个子包,比如:包0,包1...包n。

步骤s6:转发服务器relay根据请求端的请求列表,确定要转发对象:设备a,....设备j,然后把包0发给设备a,....设备j,再把包1发给设备a,....设备j,如此类推,直到包n发送完成,再回到步骤s5。

步骤s7:中途如果某个设备掉线线,则断开该设备的连接,并将该设备踢出请求队列,待该设备重连;如果有其它设备连接,则执行步骤s1,创建新通道或者加入已存在的请求队列。

本方案中,采用标准rtsp协议,从各视频源获取视频流,并把接收到的每个视频帧,分成若干个16384字节子单元,并以tcp私有分片格式,将每个帧分成16384字节的子单元发送给每个请求端,请求端根据分片协议的信息,一边接收数据,一边重新组包,最终在最接近相同时间组合成完整数据帧再解码。

每收到一帧视频数据,先检测是否需要分包:如果大于16384字节则按16384字节为子单元分成多个子包。分包后,循环发给各个请求端,不超过16384字节时,则不分包,直接循环发给各个请求端。

接收端按协议自行组包,如图5所示,当接收到一个1024000字节的视频帧时,按16384字节分成63个包,前62个包为16384字节,剩下8192字节,每个包打上分包头信息后,依次把这63个包发送给各个接收端发给接收端。接收端根据封包协议,收到数据后重新组成完整的帧,后再解码显示。

把原始视频帧分成16k(16384字节)的子单元,以提高发送效率,方便校验,同时也让各个请求端及时收到相同的包。

本发明主要针对需要同时获取相同视频源且要求数据完整,不能丢包,错包的安防监控场合,满足基本应用要求,分担视频源设备压力,避免视频源设备负荷过高导致信号延时或卡顿;弥补组播的不足,保证各个接收端在最接近相同时间点接收完完整的数据,不丢包,不错包;具有先进性、稳定性,可连续工作7x24小时以上,一年365天不间断工作;能够将多路输入视频源根据需要进行转发到多个请求端(即接收端);可以弥补组播的不足,通过分片的方式,减小传输过程中tcp读写缓冲区大小限制导致网络瞬间拥堵,重发等问题。使各请求端在最接近相同时间点,接收完相同的数据帧。

进一步地,本发明中的所述目标视频源为标准视频流,即标准码流,例如可以是指h.264和h.265视频码流,aac和g.711音频码流;使用标准码流好处是扩大接入源,所有这些码流都可以处理。

本发明使用标准流媒体转发服务器(目前主流的流媒体转发服务器,都具备多路码流接入,多路码流转出,支持协议rtsp协议接入)为基础,接入标准视频流。在转发过程中,将相同视频源(例如有16个请求端同时请求同一台ipc的码流)在同时请求数量不太多的情况下,比如16个以内同时连接时(根据不同的服务器处理能力和网络环境,可达到更多数量),采用tcp(transmissioncontrolprotocol,传输控制协议,可靠传输)分片发送(把原始的视频数据,按16k大小,分成多个包),可以避免丢包,错包导致花屏问题。同时也在最近相同时间点,让接收端接收完相同的数据包然后解码显示,从而弥补组播的不足,解决视频源设备因负荷过高导致信号延时或卡顿等问题。

进一步地,如图6所示,基于上述视频流传输方法,本发明还相应提供了一种视频流传输系统,所述视频流传输系统包括多个请求端,与多个所述请求端连接的转发服务器,以及与所述转发服务器连接的多个视频端;所述视频端通过路由器或者交换机和转发服务器或者请求端建立通信连接。

至少一个所述请求端将一个所述视频端的播放地址发送给所述转发服务器,所述转发服务器接收所述请求端的请求,并根据所述播放地址确定目标视频源;所述转发服务器创建一通道并进行标识,当其他所述请求端请求同样的所述目标视频源时,所述转发服务器直接通过所述通道转发所述视频端的所述目标视频源;所述转发服务器将所述目标视频源中的数据分成若干个子包,并将若干个所述子包分别发送给请求列表中的每个所述请求端。

所述请求端通过所述转发服务器向各个视频源请求数据,请求相同的视频源时,直接从所述转发服务器取数据(从转发服务器取数据,并重新组成完成视频帧,再给解码器解码显示);所述转发服务器使用tcp分片发送原理,把相同的数据帧,以最接近相同时间点、完整不丢包,不错包为原则把数据发送到各个请求端。

本发明还提供一种存储介质,其中,所述存储介质存储有视频流传输程序,所述视频流传输程序被处理器执行时实现如上所述的视频流传输方法的步骤。

综上所述,本发明提供一种视频流传输方法、系统及存储介质,所述方法应用于视频流传输系统,所述视频流传输系统包括多个请求端、转发服务器和多个视频端;所述包括:至少一个所述请求端将一个所述视频端的播放地址发送给所述转发服务器,所述转发服务器接收所述请求端的请求,并根据所述播放地址确定目标视频源;所述转发服务器创建一通道并进行标识,当其他所述请求端请求同样的所述目标视频源时,所述转发服务器直接通过所述通道转发所述视频端的所述目标视频源;所述转发服务器将所述目标视频源中的数据分成若干个子包,并将若干个所述子包分别发送给请求列表中的每个所述请求端。本发明通过转发服务器将视频端的视频流同时分片发送给多个请求端,可以避免丢包,错包导致的花屏问题,在最近相同时间点,让请求端接收完相同的数据包然后解码显示,保证各个请求端在最接近相同时间点接收完完整的数据。

当然,本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关硬件(如处理器,控制器等)来完成,所述的程序可存储于一计算机可读取的存储介质中,所述程序在执行时可包括如上述各方法实施例的流程。其中所述的存储介质可为存储器、磁碟、光盘等。

应当理解的是,本发明的应用不限于上述的举例,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附权利要求的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1