一种基于hls协议的直播时移方案的制作方法

文档序号:11156673阅读:623来源:国知局
一种基于hls协议的直播时移方案的制造方法与工艺

本发明涉及一种基于hls协议的直播时移方案。



背景技术:

普通时移采用的数据库存储切片位置方式,依赖性高,数据库交互太多,影响处理性能。



技术实现要素:

本发明的目的在于克服现有技术中的不足而提供一种基于hls协议的直播时移方案。

为实现上述目的,一方面,本发明提供的一种基于hls协议的直播时移方案,包括监测模块、第一计算模块、第一过滤模块、存储模块、第二过滤模块、第二计算模块和整合模块,

监测模块用于记录直播源的变化,

第一计算模块用于将直播产生的切片名称转换为时移服务特有名称,且第一计算模块用于将当前直播源作唯一标识,

第一过滤模块用于对切片的所属的时间点进行过滤,并将同一时段的切片作统一存储处理,

存储模块用于把经过第一计算模块及第一过滤模块处理后的切片归档并作缓存处理,

第二过滤模块用于过滤时移请求参数及校验参数有效性,

第二计算模块用于针对请求的时间参数计算所需时移的切片位置,

整合模块用于更新获取到的切片路径。

优选地,监测模块监控直播源的m3u8文件并判断是否生成新的ts切片,当生成新的ts切片则视为直播源的变化并记录。

根据本发明提供的一种基于hls协议的直播时移方案,由于无需数据库化,单纯利用位置存储及相关计算定位等特点,可以大大提高时移的处理效率。

附图说明

图1是本发明一实施例的一种基于hls协议的直播时移方案的逻辑示意框图。

本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

下面详细描述本发明的实施例,所述实施例的示例在附图中示出,通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。

本发明一实施例提供了一种基于hls协议的直播时移方案,包括时移服务阶段的监测模块、第一计算模块、第一过滤模块、存储模块,以及获取切片服务阶段的第二过滤模块、第二计算模块、整合模块。

如图1所示,为本发明的直播时移方案的逻辑示意框图。

在直播启动时同步启动时移服务。

时移服务的监测模块用于观察和记录直播源的变化,记录下变化的内容后交由后续模块处理。

具体地,时移服务的监测模块对直播源的m3u8文件内容进行监控,判断是否有新的ts切片生成,判断方法为根据m3u8文件中最后一个ts文件序号来对比,因为在存储模块会记录每次存储的最后一个ts切片序号,如果当前监测模块有监测到大于存储的序号的ts信息,就判断为新生成的切片,记录下来交给后续模块处理。

时移服务的第一计算模块用于把直播产生的切片名称转换成时移服务特有的名称,由切片时间点、切片时长、切片序号等信息组成,同时把当前直播源url作为此次任务的唯一标识。

具体地,时移服务的第一计算模块拿到监测模块传递过来的新ts切片信息,结合切片的上下文描述,以及按照位置存储规定,计算出方便时移的切片名称,例如:时间文件夹/切片所属秒_切片时长_切片序号.ts,同时需要定义此次时移任务的标识为直播源url,主要用于后续根据直播url来定位切片所属目录。

时移服务的第一过滤模块主要是对切片所属的时间点进行过滤,按照分钟来进行筛选,每分钟产出的切片进行统一文件夹存储。

具体地,时移服务的第一过滤模块主要是对切片的具体时间进行处理,并将同一时段的切片作统一存储处理。本实施例中,可精确至分钟,然后对属于同一分钟的切片进行统一文件夹存储处理,保证每分钟的切片不会混乱。

时移服务的存储模块主要是把计算和过滤后的切片进行归档,同时进行缓存处理,以供后续时移播放使用,存储缓存时是针对每秒都进行对应的切片缓存,方便获取切片服务使用。

具体地,时移服务的存储模块在存储时通过第一计算模块、第一过滤模块得到了需要存储的内容及路径。重点是在于缓存存储的使用,因为文件存储系统是对切片进行存储的,每个切片是有时差的,如果时移刚好请求至时差间的时间点,需要进行文件存储的列表回源查询,会影响查询效率,所以在存储缓存时,需要计算出每个切片的时长及时间,在切片时间的基础上累加时长,精确到秒,即保证在缓存中的每一秒都可以找到对应的切片信息,从而提高时移效率。

对应的文件存储结构如下:

201612050751

--01_3.333_260.ts

--04_3.334_261.ts

--07_3.333_262.ts

--11_3.333_263.ts

对应的缓存存储结构如下:

20161205075101→201612050751/01_3.333_260.ts

20161205075102→201612050751/01_3.333_260.ts

20161205075103→201612050751/01_3.333_260.ts

20161205075104→201612050751/04_3.334_261.ts

20161205075105→201612050751/04_3.334_261.ts

20161205075106→201612050751/04_3.334_261.ts

20161205075107→201612050751/07_3.333_262.ts

20161205075108→201612050751/07_3.333_262.ts

20161205075109→201612050751/07_3.333_262.ts

20161205075110→201612050751/07_3.333_262.ts

20161205075111→201612050751/11_3.333_263.ts

通过以上操作,时移准备工作已经完成。以下是描述如何通过这些数据排列规则来拿到对应的切片信息。

获取切片服务的第二过滤模块主要是过滤时移发来的URL参数,包含时移开始时间、回放结束时间(可选参数),校验参数有效性:与直播开始时间、时移最大时长进行对比。

具体地,如果是正常时移观看,请求URL后缀参数为beginTime,此参数表明需要从这个时间点开始进行播放,此参数不可早于直播开始时间,不可晚于直播结束时间,不可与当前时间的时间差大于时移规定的最大时移范围(时移服务可以动态设置本次直播的时移范围),含有此参数返回的是正常直播的m3u8文件内容。如果是需要直播回放观看,请求URL后缀参数需要追加endTime,此参数表明需要直播回放的结束时间点,同样此参数校验方式和beginTime相同,含有此参数返回的是点播视频的m3u8文件内容。

时移请求服务的第二计算模块主要是针对请求的时间参数计算出需要时移的切片位置,如果未找到切片(缓存过期情况)进行回源(文件存储)根据ts切片名称进行查询。

具体地,通过计算请求的时间参数,转换成时移服务存储的格式:yyyyMMddHHmmss,通过key去缓存服务中查询对应的ts文件路径,找到第一个ts文件时,通过ts切片的名称中的时长来计算下一个ts切片的key,以此类推找到规定m3u8文件中的ts切片个数。如果缓存过期或者缓存服务器宕机,需要从文件存储服务器回源获取,首先拿当前请求的时间(换算成精确到分钟的时间格式)去对应的文件存储服务器中的文件夹中获取,因为每个切片名称都有其对应的秒数,如果当前请求的秒数不在列表中,需要对请求的秒数进行叠加处理并重新查询,直至找到对应的切片。

时移请求服务的整合模块主要是更新获取到的切片路径,如果检测到有回放结束时间参数还需要在m3u8文件最后追加endlist标签来表明此文件为点播文件。

具体地,整合服务主要是对第二计算模块查询到的切片进行处理,在时移服务开始时,会把直播源的m3u8文件归档,整合模块会把此文件获取并更新其内容,最后返回。

正常时移请求的URL:

http://XXXX/XXX/xxxx.m3u8?beginTime=20161013065122

正常时移请求的返回:

#EXTM3U

#EXT-X-VERSION:3

#EXT-X-TARGETDURATION:4

#EXT-X-MEDIA-SEQUENCE:1

#EXT-X-PROGRAM-DATE-TIME:2016-10-13T06:51:22Z

#EXTINF:3.333

201610130651/22_3.333_1.ts

#EXT-X-PROGRAM-DATE-TIME:2016-10-13T06:51:26Z

#EXTINF:3.333

201610130651/26_3.333_2.ts

#EXT-X-PROGRAM-DATE-TIME:2016-10-13T06:51:29Z

#EXTINF:3.334

201610130651/29_3.334_3.ts

#EXT-X-PROGRAM-DATE-TIME:2016-10-13T06:51:32Z

#EXTINF:3.333

201610130651/32_3.333_4.ts

#EXT-X-PROGRAM-DATE-TIME:2016-10-13T06:51:36Z

#EXTINF:3.333

201610130651/36_3.333_5.ts

直播回放的请求URL:

http://XXXX/XXX/xxxx.m3u8?beginTime=20161013065122&endTime=20161013065136

直播回放的请求返回:

#EXTM3U

#EXT-X-VERSION:3

#EXT-X-TARGETDURATION:4

#EXT-X-MEDIA-SEQUENCE:1

#EXT-X-PROGRAM-DATE-TIME:2016-10-13T06:51:22Z

#EXTINF:3.333

201610130651/22_3.333_1.ts

#EXT-X-PROGRAM-DATE-TIME:2016-10-13T06:51:26Z

#EXTINF:3.333

201610130651/26_3.333_2.ts

#EXT-X-PROGRAM-DATE-TIME:2016-10-13T06:51:29Z

#EXTINF:3.334

201610130651/29_3.334_3.ts

#EXT-X-PROGRAM-DATE-TIME:2016-10-13T06:51:32Z

#EXTINF:3.333

201610130651/32_3.333_4.ts

#EXT-X-PROGRAM-DATE-TIME:2016-10-13T06:51:36Z

#EXTINF:3.333

201610130651/36_3.333_5.ts

#EXT-X-ENDLIST

综上,根据本发明提供的一种基于hls协议的直播时移方案,通过简单的参数控制来实现时移回看、直播回放的切换,通过特有的位置存储原理来实现无数据库化,提高时移请求处理的效率。

在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在不脱离本发明的原理和宗旨的情况下在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。

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