进行hls丢片补偿的方法及系统的制作方法

文档序号:10516231阅读:366来源:国知局
进行hls丢片补偿的方法及系统的制作方法
【专利摘要】本发明实施例提供一种进行HLS丢片补偿的方法及系统,该方法包括:在下层服务器上配置补偿请求代理;所述下层服务器向其对应的多个上层服务器发送订阅请求,并根据所述订阅请求获取所述多个上层服务器的消息发布池发布的切片;所述下层服务器对接收到的切片信息进行丢片检测,并在检测到发生丢片时,生成丢片请求;所述补偿请求代理将生成的所述丢片请求发送至所述多个上层服务器。本发明实施例的方法和系统提升了线上设备的负载能力和消息发布池对外发布消息的能力,降低了生产流的组件与消息发布池之间的对接难度。
【专利说明】
进行HLS丢片补偿的方法及系统
技术领域
[0001]本发明实施例涉及视频直播技术领域,尤其涉及一种进行HLS丢片补偿的方法及系统。
【背景技术】
[0002]HLS(HTTP Live Streaming)是由Apple公司定义的用于实时流传输的协议,基于HTTP协议实现,传输内容包括两部分,一是m3u8描述文件,二是TS媒体文件。目前行业中的HLS直播方案通常通过互联网TCP协议传输,但是由于网络状况的不确定性,中继分发网络的内部节点间的通讯偶尔也会出现连接抖动,此时就会出现一些丢片的情况,导致用户在播放时发生卡顿丢帧的现象,严重影响用户体验。
[0003]由于现有技术中的架构中,上层和下层之间的通讯是基于单向通知的,下层即使知道丢了具体的哪一片,也无法把丢片的信息通知给更高层的上层服务器,因而无法及时获得补偿的切片。

【发明内容】

[0004]本发明实施例提供一种进行HLS丢片补偿的方法和系统,以解决传统的HLS直播方案容易发生丢片,而在发生丢片时无法及时获得补偿的切片的问题,实现丢片的实时补偿,提升终端播放体验。
[0005]本发明实施例提供一种进行HLS丢片补偿的方法,包括:
[0006]在下层服务器上配置补偿请求代理;
[0007]所述下层服务器向其对应的多个上层服务器发送订阅请求,并根据所述订阅请求获取所述多个上层服务器的消息发布池发布的切片;
[0008]所述下层服务器对接收到的切片信息进行丢片检测,并在检测到发生丢片时,生成丢片请求;
[0009]所述补偿请求代理将生成的所述丢片请求发送至所述多个上层服务器。
[0010]本发明实施例提供一种进行HLS丢片补偿的系统,包括下层服务器,每个下层服务器对应多个上层服务器,所述上层服务器通过消息发布池进行切片发布,所述下层服务器上包括切片获取模块,用于向所述多个上层服务器发送订阅请求,并根据所述订阅请求获取所述多个上层服务器的消息发布池发布的切片,其特征在于,所述下层服务器上还配置有补偿请求代理和丢片检测模块,其中,
[0011 ]所述丢片检测模块,用于对接收到的切片信息进行丢片检测,并在检测到发生丢片时,生成丢片请求;
[0012]所述补偿请求代理用于将生成的所述丢片请求发送至所述多个上层服务器。
[0013]本发明实施例提供的进行HLS丢片补偿的方法及系统,通过在下层服务器上配置补偿请求代理,可以在检测到发生丢片时,及时向上层服务器发送丢片请求,以及时获得补偿,减少卡顿现象,提升终端播放体验。
【附图说明】
[0014]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0015]图1为现有技术中直播方案的系统框架结构图;
[0016]图2为本发明进行HLS丢片补偿的系统的实施例结构示意图;
[0017]图3为本发明进行HLS丢片补偿的方法的实施例流程图。
【具体实施方式】
[0018]为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0019]以下结合附图,对本发明实施例做更详细的阐述。
[0020]图1示意性地显示了现有技术中直播方案的系统的框架结构。如图1所示,该框架中每个下层服务器2对应多个上层服务器1,通过向上层服务器I发送订阅请求,上层服务器I在m3u8文件发生更新时,将新的m3u8文件进行发布,并向其对应的下层服务器2发送发布通知,下层服务器2通过其对应的上层服务器I的消息发布,获取对应的切片3。由该架构可以看出,现有技术中,每个下层服务器2只有在首次请求时,才向其对应的上层服务器I发送一次订阅请求,之后就是被动地等待发布通知,以更新切片3。这种模式下,一旦网络发生抖动,中间就可能会出现丢片。并且,由于下层服务器2和其对应的上层服务器I之间是单向通知,即下层服务器2发送订阅请求后,就被动地等待上层服务器I的发布通知,因而发生丢片时,下层服务器即使知道丢了具体的哪一个切片,也无法把丢片的信息通知给其对应的上层服务器,更无法及时获得补偿,这将给终端带来非常不好的播放体验。
[0021]因而本发明提出一种进行HLS丢片补偿的系统和方法,以解决传统直播架构和方式中存在的缺陷。
[0022]图2示意性地显示了本发明实施例的进行HLS丢片补偿的系统的框架结构。如图2所示,该系统包括下层服务器2和上层服务器I,上层服务器I上有消息发布池11,用于对从更上层的服务器获取的切片信息进行发布。下层服务器2包括切片获取模块20,下层服务器2通过切片获取模块20向对应的多个上层服务器I发送订阅请求,并接收上层服务器的消息通知,从而根据订阅请求获取多个上层服务器I的消息发布池11发布的切片。其中,每个下层服务器2对应多个上层服务器I,以降低丢片的概率。如图2所示,本发明实施例在下层服务器2上配置有补偿请求代理21和丢片检测模块22。丢片检测模块22用于对接收到的多个上层服务器发布的切片信息进行丢片检测,并在检测到发生丢片时,生成丢片请求。补偿请求代理21用于将生成的丢片请求发送至多个上层服务器I,以获得丢片补偿。本发明实施例的系统,通过在下层服务器2上增加丢片检测模块22和补偿请求代理21,能够及时对丢片情况进行检测,并在检测到发生丢片时,向上层服务器发送丢片请求,实现了上层服务器和下层服务器的全双工通讯,能够满足实时补偿的需求。
[0023]如图2所示,丢片检测模块22中包括转储单元221和丢片请求生成单元222。转储单元221用于根据获取到的切片的名称,在本地存储切片信息。丢片请求生成单元222用于将切片的序列号与存储的切片的序列号进行匹配,当匹配结果为序列号不连续时,生成丢片请求,发送给补偿请求代理21。其中,丢片请求包括检测到的缺失的切片序列号。本发明实施例的系统中,会对切片进行编号,每个切片都对应一个唯一的序列号,序列号是连续,如第一个切片的序列号为I,第二个切片的序列号为2,...,第N个切片的序列号为N。当下层服务器2收到切片后,首先由转储单元221将切片存储到本地的存储模块(如数据库中),然后通过丢片请求生成单元222对切片的序列号进行检测,具体为,将收到的切片的序列号与数据库中存储的已接收到的切片的序列号进行比较,如果发生序列号不连续的情况,如当前接收到的序列号为5,而数据库中存储的最接近的序列号为3,则说明序列号为4的切片发生了丢片。此时,会根据切片的序列号生成丢片请求,丢片请求中包括该丢失的切片对应的序列号。生成丢片请求后,丢片请求生成单元222将丢片请求发送给补偿请求代理21。补偿请求代理21中包括连接建立单元211和请求广播单元212。其中,连接建立单元211会在下层服务器对应的多个上层服务器的消息发布池和本地的补偿请求代理21之间建立一个TCP长连接。在补偿请求代理21接收到丢片请求后,请求广播单元212就会将丢片请求通过TCP连接广播给对应的多个层服务器的消息发布池。由此,就可以下层服务器在发生丢片时,就能够广播给所有的上层服务器,实现下层服务器和上层服务器的全双工通讯。
[0024]如图2所示,上层服务器I中还包括有存储模块10和监听代理12。存储模块10用于根据序列号来存储切片信息,可以选用redis数据库(一种开源的key-value高性能no-sql数据库,即基于键-值的高性能无sql的数据库)。监听代理12用于对下层服务器的丢片请求进行监听,根据接收到丢片请求,对下层服务器进行丢片补偿。在具体应用中,监听代理12持续监控本机的消息发布池11是否接收到下层服务器2发来的丢片请求,在监控到本机的消息发布池11接收到丢片请求时,根据丢片请求中的序列号,从本机的存储模10块中查找对应的切片。当查询到对应的切片时(即存储模块中存在序列号匹配的切片条目),监听代理12会将对应的切片信息发布到本机的消息发布池11,以由本机的消息发布池进行再发布。而当未查询到对应的切片时,说明本机在从更上层的服务器获取切片时也发生了丢片现象,此时本机就作为下层服务器,向其上层服务器进行丢片请求,因而监控代理12会将该丢片请求发送给本机的补偿请求代理,以向本机对应的上层服务器进行丢片请求。由此,就可以实现对下层服务器的实时的丢片补偿,降低丢片的概率,提升终端的直播体验。
[0025]图3示意性地显示了本发明实施例的进行HLS丢片补偿的方法流程。如图3所示,该方法包括:
[0026]步骤S301:在下层服务器上配置补偿请求代理。
[0027]在下层服务器上配置补偿请求代理,用于和上层服务器的消息发布池建立TCP长连接,并在发生丢片时,将丢片请求广播给本机对应的全部上层服务器的消息发布池。
[0028]步骤S302:下层服务器向对应的多个上层服务器发送订阅请求,并根据订阅请求获取多个上层服务器的消息发布池发布的切片。
[0029]下层服务器根据需求向其对应的多个上层服务器发送订阅请求,上层服务器的消息发布池会根据收到的订阅请求将切片发布到相应的主题,并向其下层服务器发送发布通知。下层服务器接收到上层服务器的发布通知,根据上层服务器的消息发布池发布的消息,获取切片。
[0030]步骤S303:下层服务器根据接收到的切片信息进行丢片检测,并在检测到发生丢片时,生成丢片请求。
[0031]下层服务器在获取到切片后,根据该切片的名称,将该切片存储到本地的数据库中。同时,会对收到的切片进行丢片检测,具体为,将收到的切片的序列号和数据库中存储的切片的序列号进行比对,当新收到的切片的序列号与数据库中存储于该序列号最接近的切片的序列号为不连续时,说明发生了切片,则生成丢片请求。其中,丢片请求中包括丢失的切片的序列号。
[0032]步骤S304:补偿请求代理将生成的丢片请求发送到多个上层服务器。
[0033]补偿请求代理将生成的丢片请求通过建立的TCP长连接广播到其对应的全部上层服务器上,上层服务器根据建立的TCP长连接通过其消息发布池接收下层服务器的丢片请求。
[0034]步骤S305:在上层服务器上配置监听代理,对下层服务器的丢片请求进行监听,并在监听到丢片请求时,对下层服务器进行丢片补偿。
[0035]在上层服务器上配置监听代理,部署的监听代理会对本机的消息发布池进行监听,当检测到本机的消息发布池接收到了丢片请求时,根据丢片请求中的所丢失的切片的序列号,从本机的数据库中获取对应的切片。如果本机的数据库中存在相应的切片,则将该切片发给消息发布池以进行再发布,如果不存在相应的切片,则说明本机也发生了该切片的丢片,此时,本机将作为下层服务器,通过补偿请求代理向其上层服务器进行补偿请求。
[0036]本发明实施例的系统和方法,能够通过在下层服务器上配置的补偿请求代理实现下层服务器和上层服务器的全双工通信,且长连接的全双工通讯能够减少下层服务器的请求次数,降低上层服务器以及核心生产设备的压力。由此进而减少下层服务器对单核心生产源的依赖,实现对丢片的实时补偿,降低在中间网络状况发生中断时的丢片频率,提高设备终端的播放体验。
[0037]以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
[0038]通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如R0M/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
[0039]最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
【主权项】
1.一种进行HLS丢片补偿的方法,其特征在于,包括: 在下层服务器上配置补偿请求代理; 所述下层服务器向其对应的多个上层服务器发送订阅请求,并根据所述订阅请求获取所述多个上层服务器的消息发布池发布的切片; 所述下层服务器对接收到的切片信息进行丢片检测,并在检测到发生丢片时,生成丢片请求; 所述补偿请求代理将生成的所述丢片请求发送至所述多个上层服务器。2.根据权利要求1所述的方法,其中,所述下层服务器对接收到的切片信息进行丢片检测,并在检测到发生丢片时,生成丢片请求包括: 所述下层服务器根据获取到的切片的名称,在本地存储所述切片; 所述下层服务器将所述切片的序列号与存储的切片的序列号进行匹配,当匹配结果为序列号不连续时,生成丢片请求,所述丢片请求包括检测到的缺失的切片序列号。3.根据权利要求1所述的方法,其中,所述下层服务器的补偿请求代理将生成的丢片请求发送至所述多个上层服务器包括: 在所述下层服务器对应的多个上层服务器的消息发布池和所述补偿请求代理之间建立TCP长连接; 所述补偿请求代理将所述丢片请求通过所述TCP连接广播给对应的多个层服务器的消息发布池。4.根据权利要求1至3任一项所述的方法,其特征在于,还包括: 在上层服务器上配置监听代理,通过所述监听代理对下层服务器的丢片请求进行监听,在监听到丢片请求时,对所述下层服务器进行丢片补偿。5.根据权利要求4所述的方法,其中,所述通过所述监听代理对下层服务器的丢片请求进行监听,在监听到丢片请求时,对所述下层服务器进行丢片补偿包括: 所述多个上层服务器的监听代理监控本机的消息发布池是否接收到下层服务器发来的丢片请求,在监控到本机的消息发布池接收到丢片请求时,根据丢片信息从本机的存储模块中查找对应的切片,根据查找结果 -当查询到对应的切片时,将所述切片信息发布到本机的消息发布池; -当未查询到对应的切片时,向本机对应的上层服务器进行丢片请求。6.—种进行HLS丢片补偿的系统,包括下层服务器,每个下层服务器对应多个上层服务器,所述上层服务器通过消息发布池进行切片发布,所述下层服务器上包括切片获取模块,用于向所述多个上层服务器发送订阅请求,并根据所述订阅请求获取所述多个上层服务器的消息发布池发布的切片,其特征在于,所述下层服务器上还配置有补偿请求代理和丢片检测模块,其中, 所述丢片检测模块,用于对接收到的切片信息进行丢片检测,并在检测到发生丢片时,生成丢片请求; 所述补偿请求代理用于将生成的所述丢片请求发送至所述多个上层服务器。7.根据权利要求6所述的系统,其特征在于,所述丢片检测模块包括 转储单元,用于根据获取到的切片的名称,在本地存储所述切片;和 丢片请求生成单元,用于将所述切片的序列号与存储的切片的序列号进行匹配,当匹配结果为序列号不连续时,生成丢片请求,所述丢片请求包括检测到的缺失的切片序列号。8.根据权利要求6所述系统,其中,所述补偿请求代理包括 连接建立单元,用于在所述下层服务器对应的多个上层服务器的消息发布池和所述补偿请求代理之间建立TCP长连接;和 请求广播单元,用于将所述丢片请求通过所述TCP连接广播给对应的多个层服务器的消息发布池。9.根据权利要求6至8任一项所述的系统,其特征在于,所述上层服务器上配置有监听代理,用于对下层服务器的丢片请求进行监听,根据接收到所述丢片请求,对所述下层服务器进行丢片补偿。10.根据权利要求9所述的系统,其特征在于,所述监听代理用于监控本机的消息发布池是否接收到下层服务器发来的丢片请求,在监控到本机的消息发布池接收到丢片请求时,根据丢片信息从本机的存储模块中查找对应的切片,根据查找结果 -当查询到对应的切片时,将所述切片信息发布到本机的消息发布池; -当未查询到对应的切片时,向本机对应的上层服务器进行丢片请求。
【文档编号】H04N21/262GK105872613SQ201610192827
【公开日】2016年8月17日
【申请日】2016年3月30日
【发明人】刘斌
【申请人】乐视控股(北京)有限公司, 乐视云计算有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1