一种数据切片方法及系统与流程

文档序号:15568848发布日期:2018-09-29 03:59阅读:313来源:国知局

本发明涉及流媒体技术领域,尤其涉及一种数据切片方法及系统。



背景技术:

传统的p2p切片多采用源站切片的方式保证整个分发网络的数据一致性,但该方案存在单点问题,一旦切片源异常,则必然造成全网直播卡顿,且由于是源站分发数据块,必然会导致传统rtmp网络无法承载该数据,需要对现有分发网络进行协议升级,不利于第三方整合。



技术实现要素:

为了克服现有技术的不足,本发明的目的之一在于提供一种数据切片方法,在不改变现有协议的情况下,只需要在切片节点解析定位信息包,并按包中定位信息计算出当前的数据块标识和数据块偏移即可启动切片,由于所有节点都按照定位信息进行初始化,保证了各节点切片的数据一致性。

本发明的目的之二在于提供一种数据切片系统,在不改变现有协议的情况下,只需要在切片节点解析定位信息包,并按包中定位信息计算出当前的数据块标识和数据块偏移即可启动切片,由于所有节点都按照定位信息进行初始化,保证了各节点切片的数据一致性。

本发明的目的之一采用以下技术方案实现:

一种数据切片方法,包括:

推流边缘节点接收到推流用户端推送的rtmp数据流后,在所述rtmp数据流中添加定位信息包;

所述推流边缘节点将带有定位信息包的rtmp数据流发送给cdn网络节点;

所述cdn网络节点将所述带有定位信息包的rtmp数据流分发给拉流边缘节点;

所述拉流边缘节点解析所述定位信息包并根据解析后的定位信息对所述rtmp数据流进行切片。

进一步地,所述定位信息包的格式为amf格式。

进一步地,所述定位信息包包括:

当前数据流标识、当前帧序号、当前数据流偏移量以及当前数据流时间戳。

进一步地,所述拉流边缘节点解析所述定位信息包并根据解析后的定位信息对所述rtmp数据流进行切片,包括:

判断所述rtmp数据流中的数据类型;

若所述rtmp数据流中包含音视频数据流和定位信息包,则将所述rtmp数据流中的音视频数据缓存至缓存单元中,并统计帧数和偏移;

判断统计的所述帧数和偏移与所述定位信息包中的信息是否一致;

若一致,则根据所述定位信息包中的信息计算当前的数据块标识和数据块偏移,并根据当前的数据块标识和数据块偏移对所述缓存单元中的数据进行切片。

进一步地,所述方法还包括:

将所述rtmp数据流中不是音视频数据也不是定位信息包的数据丢弃。

进一步地,所述方法还包括:

若统计的所述帧数和偏移与所述定位信息包中的信息不一致,则将所述缓存单元中对应的音视频数据流和定位信息包清空。

进一步地,所述根据所述定位信息包中的信息计算当前的数据块标识和数据块偏移,具体通过以下算式计算:

chunk_offset=(offset+index*flv_header_size)%chunk_size;

其中,chunk_id、chunk_offset分别表示当前的数据块标识和数据块偏移,offset表示所述定位信息包中所携带的当前流偏移量,index表示所述定位信息包中所携带的当前帧序号,flv_header_size表示flv封装格式的头长度,chunk_size表示当前数据块大小,表示向上取整,“%”表示取余。

进一步地,所述根据当前的数据块标识和数据块偏移对所述缓存单元中的数据进行切片之后,还包括:

所述拉流边缘节点将切片后的数据块分片通过p2p网络分发至p2p节点。

本发明的目的之二采用以下技术方案实现:

一种数据切片系统,其包括:推流用户端、推流边缘节点、cdn网络节点以及拉流边缘节点;

所述推流边缘节点,用于接收到所述推流用户端推送的rtmp数据流后,在所述rtmp数据流中添加定位信息包,并将带有定位信息包的rtmp数据流发送给所述cdn网络节点;

所述cdn网络节点,用于将所述带有定位信息包的rtmp数据流分发给所述拉流边缘节点;

所述拉流边缘节点,用于解析所述定位信息包并根据解析后的定位信息对所述rtmp数据流进行切片。

进一步地,所述定位信息包的格式为amf格式,其中所述定位信息包包括当前数据流标识、当前帧序号、当前数据流偏移量以及当前数据流时间戳。

进一步地,所述拉流边缘节点包括:

第一判断单元,用于判断所述rtmp数据流中的数据类型;

缓存单元,用于将所述rtmp数据流中的音视频数据缓存至缓存单元中,并统计帧数和偏移;

第二判断单元,用于判断统计的所述帧数和偏移与所述定位信息包中的信息是否一致;

计算单元,用于根据所述定位信息包中的信息计算当前的数据块标识和数据块偏移;

切片单元,用于根据当前的数据块标识和数据块偏移对所述缓存单元中的数据进行切片。

进一步地,所述拉流边缘节点还包括:

丢弃单元,用于将所述rtmp数据流中不是音视频数据也不是定位信息包的数据丢弃。

进一步地,所述拉流边缘节点还包括:

清空单元,用于当统计的所述帧数和偏移与所述定位信息包中的信息不一致,将所述缓存单元中对应的音视频数据流和定位信息包清空。

进一步地,所述根据所述定位信息包中的信息计算当前的数据块标识和数据块偏移,具体通过以下算式计算:

chunk_offset=(offset+index*flv_header_size)%chunk_size;

其中,chunk_id、chunk_offset分别表示当前的数据块标识和数据块偏移,offset表示所述定位信息包中所携带的当前流偏移量,index表示所述定位信息包中所携带的当前帧序号,flv_header_size表示flv封装格式的头长度,chunk_size表示当前数据块大小,表示向上取整,“%”表示取余。

进一步地,所述拉流边缘节点还包括:分发单元,用于将切片后的数据块分片通过p2p网络分发至p2p节点。

相比现有技术,本发明的有益效果在于:本发明实施例通过在推流边缘节点的rtmp数据流中添加amf格式的定位信息包,分发网络依然实用传统rtmp协议,在不改变现有协议的情况下,只需要在切片节点解析定位信息包,并按包中定位信息计算出当前的数据块标识和数据块偏移即可启动切片,由于所有节点都按照定位信息进行初始化,保证了各节点切片的数据一致性。

附图说明

图1为本发明实施例一提供的数据切片方法流程示意图;

图2本本发明实施例一提供的数据切片流程示意图;

图3为本发明实施例二提供的数据切片系统结构示意图;

图4为本发明实施例二提供的数据切片系统中拉流边缘节点的结构示意图。

具体实施方式

下面,结合附图以及具体实施方式,对本发明做进一步描述,需要说明的是,在不相冲突的前提下,以下描述的各实施例之间或各技术特征之间可以任意组合形成新的实施例。

实施例一

如图1为本发明实施例提供的数据切片方法,包括以下步骤:

步骤s110:推流边缘节点接收到推流用户端推送的rtmp数据流后,在所述rtmp数据流中添加定位信息包。

在本实施例中,推流端用户端通过rtmp协议将视频流封装成rtmp数据流并推送至推流边缘节点,其中所述rtmp视频流包括amf格式的数据或flv格式的音视频数据。

优选地,推流边缘节点接收到推流用户端推送的rtmp数据流后,在所述rtmp数据流中添加amf格式的定位信息包,所述定位信息包包括当前流标识uid、当前帧序号index、当前流偏移量offset、当前流时间戳timestamp,其中所述当前流标识uid用于同一路流更换推流节点后的定位信息重置识别;所述当前帧序号index记录当前音视频的发送帧率,不包括seq_header,即(sequenceheader)视频序列头;所述当前流偏移量offset记录当前音视频的发送总数据偏移,不包括seq_header;所述当前流时间戳timestamp记录当前定位信息的下一帧数据时间戳,用于全局矫正,所述定位信息包包含的字段如下表所示:

步骤s120:所述推流边缘节点将带有定位信息包的rtmp数据流发送给cdn网络节点。

优选地,推流边缘节点将带有定位信息包的rtmp数据流传递至cdn网络节点进行分发,需要说明的是,在分发过程中要求cdn网络节点不得丢弃所述定位信息包。

步骤s130:所述cdn网络节点将所述带有定位信息包的rtmp数据流分发给拉流边缘节点。

步骤s140:所述拉流边缘节点解析所述定位信息包并根据解析后的定位信息对所述rtmp数据流进行切片。

优选地,cdn网络节点将带有定位信息包的rtmp数据流分发给拉流边缘节点,拉流边缘节点通过解析定位信息包,并根据解析后的定位信息对所述rtmp数据流进行切片。

如图2所示的数据切片流程,首先判断rtmp数据流中的数据类型,若rtmp数据流中包含音视频数据流和定位信息包,则将所述音视频数据流缓存至缓存单元msg_cache中,并统计帧数和偏移;将所述rtmp数据流中不是音视频数据也不是定位信息包的数据丢弃;判断统计的帧数和偏移与所述定位信息包中的信息是否一致,若一致,说明所述音视频数据未丢包,则根据所述定位信息包中的信息计算当前的数据块标识chunk_id和数据块偏移chunk_offset,并根据当前的数据块标识chunk_id和数据块偏移chunk_offset对所述缓存单元msg_cache中的数据进行切片;若统计的帧数和偏移与所述定位信息包中的定位信息不一致,说明所述音视频数据发生丢包现象,则将缓存单元msg_cache中对应的音视频数据和定位信息包清空。

优选地,拉流边缘节点将切片后的数据块分片通过p2p网络分发至p2p节点。

优选地,根据所述定位信息包中的信息计算当前的数据块标识和数据块偏移,具体通过以下算式计算:

chunk_offset=(offset+index*flv_header_size)%chunk_size;

其中,chunk_id、chunk_offset分别表示当前的数据块标识和数据块偏移,offset表示所述定位信息包中所携带的当前流偏移量,index表示所述定位信息包中所携带的当前帧序号,flv_header_size表示flv封装格式的头长度,所述头长度固定为11bytes,chunk_size表示当前数据块大小,表示向上取整,“%”表示取余,其中数据块大小chunk_size用户可以通过设置改变。

本发明实施例提供的数据切片方法,通过在推流边缘节点的rtmp数据流中添加amf格式的定位信息包,分发网络依然使用传统rtmp协议,在不改变现有协议的情况下,只需要在切片节点解析定位信息包,并按包中定位信息计算出当前的数据块标识和数据块偏移即可启动切片,由于所有节点都按照定位信息进行初始化,保证了各节点切片的数据一致性。

实施例二

如图3所示,图3为本发明实施例提供的数据切片系统结构示意图,该系统包括:

推流用户端100、推流边缘节点200、cdn网络节点300、拉流边缘节点400以及p2p节点500。

所述推流边缘节点200,用于接收到所述推流用户端100推送的rtmp数据流后,在所述rtmp数据流中添加定位信息包,并将带有定位信息包的rtmp数据流发送给所述cdn网络节点300;所述cdn网络节点300,用于将所述带有定位信息包的rtmp数据流分发给所述拉流边缘节点400;所述拉流边缘节点400,用于解析所述定位信息包并根据解析后的定位信息对所述rtmp数据流进行切片。

在本实施例中,推流端用户端100通过rtmp协议将视频流封装成rtmp数据流并推送至推流边缘节点,其中所述rtmp视频流包括amf格式的数据或flv格式的音视频数据。

优选地,推流边缘节点200接收到推流用户端100推送的rtmp数据流后,在所述rtmp数据流中添加amf格式的定位信息包,所述定位信息包包括当前流标识uid、当前帧序号index、当前流偏移量offset、当前流时间戳timestamp,其中所述当前流标识uid用于同一路流更换推流节点后的定位信息重置识别;所述当前帧序号index记录当前音视频的发送帧率,不包括seq_header,即(sequenceheader)视频序列头;所述当前流偏移量offset记录当前音视频的发送总数据偏移,不包括seq_header;所述当前流时间戳timestamp记录当前定位信息的下一帧数据时间戳,用于全局矫正。

优选地,推流边缘节点200将带有定位信息包的rtmp数据流传递至cdn网络节点300进行分发,需要说明的是,在分发过程中要求cdn网络节点300不得丢弃所述定位信息包。

优选地,cdn网络节点300将带有定位信息包的rtmp数据流分发给拉流边缘节点400,拉流边缘节点400通过解析定位信息包,并根据解析后的定位信息对所述rtmp数据流进行切片。

优选地,拉流边缘节点400将切片后的数据块分片通过p2p网络分发至p2p节点500。

如图4所示,图4为本发明实施例提供的数据切片系统中拉流边缘节点400的结构示意图,包括:

第一判断单元410,用于判断所述rtmp数据流中的数据类型;缓存单元420,用于将所述rtmp数据流中的音视频数据缓存至缓存单元中,并统计帧数和偏移;第二判断单元430,用于判断统计的所述帧数和偏移与所述定位信息包中的信息是否一致;计算单元440,用于根据所述定位信息包中的信息计算当前的数据块标识和数据块偏移;切片单元450,用于根据当前的数据块标识和数据块偏移对所述缓存单元中的数据进行切片;丢弃单元460,用于将所述rtmp数据流中包含的其它数据丢弃;清空单元470,用于当统计的所述帧数和偏移与所述定位信息包中的信息不一致,将所述缓存单元中对应的音视频数据流和定位信息包清空;分发单元480,用于将切片后的数据块分片通过p2p网络分发至p2p节点500。

具体地,首先第一判断单元410判断rtmp数据流中的数据类型,若rtmp数据流中包含音视频数据流和定位信息包,进一步地,缓存单元420将所述音视频数据流缓存至缓存单元msg_cache中,并统计帧数和偏移;丢弃单元460将所述rtmp数据流中不是音视频数据也不是定位信息包的数据丢弃;进一步地,第二判断单元430判断统计的帧数和偏移与所述定位信息包中的信息是否一致,若一致,说明所述音视频数据未丢包,计算单元440根据所述定位信息包中的信息计算当前的数据块标识chunk_id和数据块偏移chunk_offset,切片单元450根据当前的数据块标识chunk_id和数据块偏移chunk_offset对所述缓存单元msg_cache中的数据进行切片,最后分发单元480将切片后的数据块分片通过p2p网络分发至p2p节点500;若统计的帧数和偏移与所述定位信息包中的定位信息不一致,说明所述音视频数据发生丢包现象,清空单元470将缓存单元msg_cache中对应的音视频数据和定位信息包清空。

优选地,根据所述定位信息包中的信息计算当前的数据块标识和数据块偏移,具体通过以下算式计算:

chunk_offset=(offset+index*flv_header_size)%chunk_size;

其中,chunk_id、chunk_offset分别表示当前的数据块标识和数据块偏移,offset表示所述定位信息包中所携带的当前流偏移量,index表示所述定位信息包中所携带的当前帧序号,flv_header_size表示flv封装格式的头长度,所述头长度固定为11bytes,chunk_size表示当前数据块大小,其中数据块大小chunk_size用户可以通过设置改变,表示向上取整,“%”表示取余。

本发明实施例提供的数据切片系统,通过在推流边缘节点的rtmp数据流中添加amf格式的定位信息包,分发网络依然使用传统rtmp协议,在不改变现有协议的情况下,只需要在切片节点解析定位信息包,并按包中定位信息计算出当前的数据块标识和数据块偏移即可启动切片,由于所有节点都按照定位信息进行初始化,保证了各节点切片的数据一致性。

上述实施方式仅为本发明的优选实施方式,不能以此来限定本发明保护的范围,本领域的技术人员在本发明的基础上所做的任何非实质性的变化及替换均属于本发明所要求保护的范围。

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