一种流媒体回播方法及装置与流程

文档序号:18814394发布日期:2019-10-08 23:40阅读:154来源:国知局
一种流媒体回播方法及装置与流程

本申请涉及但不限于互联网技术领域,尤其涉及一种流媒体回播方法及装置。



背景技术:

在http在线媒体流(httplivestreaming,hls)回播服务中,用户向流媒体服务器请求m3u8播放列表文件,流媒体服务器根据用户回播时间点生成m3u8播放列表文件后发送至用户,用户获取m3u8播放列表文件进而根据该文件中的索引依次请求ts文件。一个m3u8播放列表文件中往往只包含几个ts文件信息,用户需要不断请求新的m3u8播放列表文件以获取后续的ts文件信息才能连续观看视频,这就需要流媒体服务器对每个m3u8播放列表文件的起始时间点进行计算。不同用户获取到的m3u8播放列表文件是不同的,流媒体服务器无法通过缓存来减少计算的压力,因此在需要服务用户的数量级较大时,需要大量的服务器提供服务,每台服务器都承担着计算和存储全量ts文件的压力,这将浪费大量存储空间和成本。

现有技术中一般以中心-边缘的架构提供hls回播服务,中心服务器负责hls的录制,建立m3u8播放列表文件索引与ts文件的索引关系,以及ts文件的存储,边缘服务器用于接收m3u8播放列表文件获取请求及缓存ts文件。现有技术的上述方案中所有的m3u8播放列表文件请求都需要经由边缘节点到达中心服务器进行处理,此方案存在如下缺点:

一,中心服务器处理大量m3u8播放列表文件请求,存在巨大的处理压力;

二,对延迟和卡顿敏感的直播来说,极大地影响用户体验。



技术实现要素:

为了解决上述技术问题,本发明提供一种流媒体回播方法及装置。

本发明提供的流媒体回播方法,应用于边缘服务器,包括:

接收用户的流媒体回播请求;

解析所述流媒体回播请求中的时间参数和流媒体名称;

根据所述时间参数确定回播时间点;

获取所述回播时间点和流媒体名称对应的播放列表文件;

将所述播放列表文件发送至所述用户。

上述流媒体回播方法还具有以下特点:

所述根据所述时间参数确定回播时间点包括:

判断所述时间参数的类型为相对时间类型时,将所述边缘服务器的当前系统时间和所述时间参数中的相对时间的差作为所述回播时间点;

判断所述时间参数的类型为绝对时间类型时,将所述边缘服务器的当前系统时间和所述时间参数中的绝对时间的差值作为临时相对时间,构建时间参数的类型为相对时间类型并且相对时间为所述临时相对时间的流媒体回播请求,将此流媒体回播请求发送至所述用户,从所述用户接收时间参数的类型为相对时间类型的流媒体回播请求,将所述边缘服务器的当前系统时间和此流媒体回播请求的时间参数中的相对时间的差作为所述回播时间点。

上述流媒体回播方法还具有以下特点:

所述获取所述回播时间点对应的播放列表文件包括:

查找是否缓存有与所述回播时间点和流媒体名称对应的播放列表文件,如果是,将缓存的此播放列表文件发送至所述用户,如果否,构建时间参数的类型为回播时间类型并且回播时间为所述回播时间点的流媒体回播请求,将流媒体回播请求发送至中心服务器,从所述中心服务器接收播放列表文件,将此播放列表文件缓存为与所述回播时间点对应的播放列表文件。

上述流媒体回播方法还具有以下特点:

边缘服务器接收用户的流媒体回播请求的同时或者前后,所述方法还包括;获取所述用户的标识;

所述获取所述回播时间点对应的播放列表文件之后,在所述播放列表文件中增加所述用户的标识获得具有用户标识的播放列表文件;

所述将所述播放列表文件发送至所述用户包括:将所述具有用户标识的播放列表文件发送至所述用户。

上述流媒体回播方法还具有以下特点:

将所述播放列表文件发送至所述用户之后,所述方法还包括:

接收用户获取所述播放列表文件的分片文件的请求后,查找是否缓存有所述分片文件,如果是,将缓存的此分片文件发送至所述用户,如果否,将此请求发送至中心服务器,从所述中心服务器接收所述分片文件并缓存,将此分片文件发送至所述用户。

上述流媒体回播方法还具有以下特点:

所述流媒体为http在线流hls,所述播放列表文件为m3u8播放列表文件。

本发明提供的流媒体回播装置,包括:

接收模块,用于接收用户的流媒体回播请求;

解析模块,用于解析所述流媒体回播请求中的时间参数流媒体名称;

确定模块,用于根据所述时间参数确定回播时间点;

播放列表文件获取模块,用于获取所述回播时间点和流媒体名称对应的播放列表文件;

播放列表文件发送模块,用于将所述播放列表文件发送至所述用户。

上述流媒体回播装置还具有以下特点:

所述确定模块包括判断单元、构建单元、请求发送单元、接收单元、处理单元;

所述判断单元,用于判断所述时间参数的类型是否为相对时间类型;还用于判断所述时间参数的类型是否为绝对时间类型;

所述构建单元,用于在所述判断单元判断所述时间参数的类型为绝对时间类型时,将所述边缘服务器的当前系统时间和所述时间参数中的绝对时间的差值作为临时相对时间,构建时间参数的类型为相对时间类型并且相对时间为所述临时相对时间的流媒体回播请求;

所述请求发送单元,用于将所述流媒体回播请求发送至所述用户;

所述接收模块,用于从所述用户接收时间参数的类型为相对时间类型的流媒体回播请求;

所述处理单元,用于在所述判断单元判断所述时间参数的类型为相对时间类型时,将所述边缘服务器的当前系统时间和所述时间参数中的相对时间的差作为所述回播时间点,还用于在所述判断单元判断所述时间参数的类型为绝对时间类型时,将所述边缘服务器的当前系统时间和此流媒体回播请求的时间参数中的相对时间的差作为所述回播时间点。

上述流媒体回播装置还具有以下特点:

所述播放列表文件获取模块包括查找单元、构建单元、发送单元、接收单元、缓存单元;

所述查找单元,用于查找是否缓存有与所述回播时间点和流媒体名称对应的播放列表文件;

所述构建单元,用于在所述查找单元未查找到与所述回播时间点对应的播放列表文件时,构建时间参数的类型为回播时间类型并且回播时间为所述回播时间点的流媒体回播请求;

所述发送单元,用于将所述构建单元构建的流媒体回播请求发送至中心服务器;还用于在所述查找单元查找到缓存有与所述回播时间点对应的播放列表文件时,将缓存的此播放列表文件发送至所述用户;

所述接收单元,用于从所述中心服务器接收播放列表文件;

所述缓存单元,用于将所述播放列表文件缓存为与所述回播时间点对应的播放列表文件。

上述流媒体回播装置还具有以下特点:

所述装置还包括标识获取模块和文件更新模块;

所述标识获取模块,用于获取所述用户的标识;

所述文件更新模块,用于在所述播放列表文件中增加所述用户的标识获得具有用户标识的播放列表文件;

所述播放列表文件发送模块,用于将所述具有用户标识的播放列表文件发送至所述用户。

上述流媒体回播装置还具有以下特点:

所述装置还包括分片文件获取模块;

所述分片文件查询模块包括分片文件查询单元、发送单元、接收单元、缓存单元;

所述分片文件查询模块,用于查找是否缓存有所述分片文件;

所述发送模块,用于在所述分片文件查询模块查找到所述分片文件时,将缓存的此分片文件发送至所述用户;还用于在所述分片文件查询模块未查找到所述分片文件时,将所述请求发送至中心服务器;

所述接收单元,用于从所述中心服务器接收所述分片文件;

所述缓存单元,用于缓存所述分片文件;

所述发送单元,用于将所述分片文件发送至所述用户。

上述流媒体回播装置还具有以下特点:

所述流媒体为hls,所述播放列表文件为m3u8播放列表文件。

本发明可以减少中心服务器处理压力和回源压力,提高对用户请求的响应时间,减少回源下载带宽,加快访问速度,提高用户使用体验。

附图说明

构成本发明的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1是实施例中流媒体回播方法的流程图;

图2是实施例中流媒体回播的装置的结构图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。

图1是实施例中流媒体回播方法的流程图,应用于边缘服务器,包括:

步骤1,接收用户的流媒体回播请求;

步骤2,解析流媒体回播请求中的时间参数和流媒体名称;

步骤3,根据时间参数确定回播时间点;

步骤4,获取回播时间点和流媒体名称对应的播放列表文件;

步骤5,将播放列表文件发送至用户。

本方法中流媒体包括但不限于http在线流hls(httplivestreaming,简称hls),播放列表文件包括但不限于m3u8播放列表文件。

本方法相比现有技术的方案,执行了去中心化的操作,将耗费处理资源的回播请求处理放在边缘服务器进行,减少了中心服务器的处理压力。

因为客户端支持的软件功能不同,用户请求回播时,时间参数中携带的可以是相对时间或绝对时间。相对时间是指相对于当前时间回退的一段时间,绝对时间是指过去的某个时间点。随着回播过程的进行,客户端会依次发送新的m3u8播放列表文件请求以获取后续的ts分片信息。此新的m3u8播放列表文件请求中的时间信息与首个m3u8播放列表请求中的时间信息相同。

本方法的步骤3中根据时间参数确定回播时间点具体包括:

判断时间参数的类型为相对时间类型时,将边缘服务器的当前系统时间和时间参数中的相对时间的差作为回播时间点。

判断时间参数的类型为绝对时间类型时,将边缘服务器的当前系统时间和时间参数中的绝对时间的差值作为临时相对时间,构建时间参数的类型为相对时间类型并且相对时间为临时相对时间的流媒体回播请求,将此流媒体回播请求发送至用户,从用户接收时间参数的类型为相对时间类型的流媒体回播请求,将边缘服务器的当前系统时间和此流媒体回播请求的时间参数中的相对时间的差作为回播时间点。

下面针对此两种情况分别举例说明。

一,对于时间参数的类型为相对时间类型的情况,举例如下:

用户发出的请求为:

http://domain/hls/streamname.m3u8?reltime=1800

其中,streamname表示流媒体文件的名称,reltime表示时间参数的类型为相对时间类型,1800表示相对时间,此相对时间的单位为秒。此请求表示用户要从当前直播流播放位置回退1800秒的位置开始观看。

边缘服务器收到此请求,判断时间参数的类型为相对时间类型时,将边缘服务器的当前系统时间和时间参数中的相对时间的差作为回播时间点,例如,边缘服务器的当前系统时间curtime是1518143400(2018/2/910:30:00),则根据下式计算出回播时间点playbacktime:

playbacktime=curtime–reltime=1518143400–1800=1518141600(2018/2/910:0:0)

用户多次发送新的m3u8播放列表文件请求时,边缘服务器都能根据此方法计算出用户的回播时间点。

二,对于时间参数的类型为绝对时间类型的情况,举例如下:

用户发出的请求为:

http://domain/hls/streamname.m3u8?abstime=1518141600

该请求表示用户要从1518141600s的位置开始回播此streamname文件。

边缘服务器收到此请求,判断时间参数的类型为绝对时间类型时,边缘服务器的当前系统时间和绝对时间的差值作为临时相对时间,构建时间参数的类型为相对时间类型并且相对时间为临时相对时间的流媒体回播请求,将此流媒体回播请求发送至用户,从用户接收时间参数的类型为相对时间类型的流媒体回播请求,将边缘服务器的当前系统时间和此流媒体回播请求的时间参数中的相对时间的差作为所述回播时间点,具体的:

边缘服务器的当前系统时间curtime为1518143400(2018/2/910:30:00),将边缘服务器的当前系统时间和绝对时间的差值作为临时相对时间reltime’;

reltime’=1518143400–1518141600=1800

构建时间参数的类型为相对时间类型并且相对时间为临时相对时间的流媒体回播请求为:

http://domain/hls/streamname.m3u8?reltime=1800

将此请求发送至用户,具体的方法为将此请求写入m3u8播放列表文件的ext-x-stream-inf标签后发送至用户,用户收到该响应之后,根据hls规范,后续使用新的请求地址发起请求,即使用标签ext-x-stream_inf里面的url发起请求,即使用相对时间的方式发起请求,边缘服务器后续使用相对时间的方式计算的回播时间点。

步骤4中获取回播时间点对应的播放列表文件包括:查找是否缓存有与回播时间点和流媒体名称对应的播放列表文件例如1518141600-streamname.m3u8,如果是,将缓存的此播放列表文件发送至用户,如果否,构建时间参数的类型为回播时间类型并且回播时间为回播时间点的流媒体回播请求例如:

http://domain/hls/streamname.m3u8?playbacktime=1518141600

将流媒体回播请求发送至中心服务器,从中心服务器接收播放列表文件,将此播放列表文件缓存为与回播时间点对应的播放列表文件。

中心服务器根据该请求获取到回播时间点playbacktime,根据此回播时间点playbacktime生成第一m3u8播放列表文件,返回给边缘服务器,这就不需要中心服务器进行时间的计算,可以节省中心服务器的计算资源。

边缘服务器将m3u8播放列表文件按时间缓存,例如按秒缓存m3u8播放列表文件,当提供回播的时间范围为最近一小时时,一台边缘服务器到中心服务器的m3u8播放列表文件请求最多3600次,在用户请求数量较大时,将大大减少了回源,同时缩短了用户响应时间。

由于m3u8播放列表文件中一般要携带与用户有关的参数(用户标识,校验参数等),在生成m3u8播放列表时,需要在ts地址后面带上用户参数,也就是同一playbacktime的m3u8播放列表文件由于用户参数的差异就会不一样。对于这种情况,边缘服务器先保存用户的请求参数,计算playbacktime,从缓存或者中心服务器获取playbacktime对应的m3u8播放列表文件,然后对获取到的m3u8播放列表文件的内容进行修改,具体的,在该m3u8播放列表文件中加入用户参数,生成差异化的m3u8播放列表文件,返回给用户。由于每个用户的观看需求不同,请求的m3u8播放列表文件也是不同的,边缘服务器收到并缓存该第一m3u8播放列表文件,同时根据不同的用户参数生成差异化的第二m3u8播放列表文件返回给用户,这就实现了m3u8播放列表文件在边缘的缓存。

在步骤1接收用户的流媒体回播请求的同时或者之前,本方法还包括;获取用户的标识;在步骤4获取回播时间点对应的播放列表文件之后,本方法还包括在播放列表文件中增加用户的标识获得具有用户标识的播放列表文件;步骤5将播放列表文件发送至用户具体包括:将播放列表文件发送至用户包括:将具有用户标识的播放列表文件发送至用户。

例如:

边缘服务器从用户1接收到请求:

http://domain/hls/streamname.m3u8?reltime=1800&userid=1&args…

边缘服务器确定此用户的标识为1,确定此请求的回播时间点为1518141600,根据此回播时间点从中心服务器或其它边缘服务器获取第一m3u8播放列表文件为:

1518141600-streamname.m3u8

#extm3u

#ext-x-media-sequence:140651513

#ext-x-targetduration:10

#extinf:8,

1.ts

#extinf:9,

2.ts?userid=1&args…

#extinf:11,

3.ts?userid=1&args…

边缘服务器在第一m3u8播放列表文件中增加用户的标识后生成第二m3u8播放列表文件:

1518141600-streamname.user1.m3u8

#extm3u

#ext-x-media-sequence:140651513

#ext-x-targetduration:10

#extinf:8,

1.ts?userid=1&args…

#extinf:9,

2.ts?userid=1&args…

#extinf:11,

3.ts?userid=1&args…

再例如:

边缘服务器从用户2接收到请求:

http://domain/hls/streamname.m3u8?reltime=1800&userid=1&args…

边缘服务器确定此用户的标识为2,确定此请求的回播时间点为1518141600,根据此回播时间点从中心服务器或其它边缘服务器(如置于父节点的边缘服务器)获取第一m3u8播放列表文件为:

1518141600-streamname.m3u8

#extm3u

#ext-x-media-sequence:140651513

#ext-x-targetduration:10

#extinf:8,

1.ts

#extinf:9,

2.ts

边缘服务器在第一m3u8播放列表文件中增加用户的标识后生成第二m3u8播放列表文件:

1518141600-streamname.user2.m3u8

#extm3u

#ext-x-media-sequence:140651513

#ext-x-targetduration:10

#extinf:8,

1.ts?userid=2&args…

#extinf:9,

2.ts?userid=2&args…

#extinf:11,

3.ts?userid=2&args…

此方法中在步骤5将播放列表文件发送至用户之后,还包括步骤6:

接收用户获取所述播放列表文件的分片文件的请求后,查找是否缓存有与此分片文件,如果是,将缓存的此分片文件发送至所述用户,如果否,将此请求发送至中心服务器,从所述中心服务器接收所述分片文件并缓存,将此分片文件发送至上述用户。

根据上述举例具体的步骤6中,用户获取到第二m3u8播放列表文件,依次请求ts文件。比如用户请求1.ts,构造请求:http://domain/hls/1.ts?userid=1&args…,发往边缘服务器,边缘服务器根据用户的参数处理业务相关的逻辑(比如检查请求是否合法),之后边缘服务器从缓存中查找1.ts文件,如果命中直接读取返回给用户,否则将请求发往中心服务器,中心服务器读取1.ts返回给边缘服务器,边缘服务器将1.ts文件写入缓存,并发给用户。接着用户请求2.ts、3.ts,同时用户也在更新m3u8播放列表文件,获取后续的ts分片信息,以便请求新的ts文件。

边缘服务器对ts文件进行缓存,减少了回源下载带宽,加快访问速度,使用户的观看更流畅,提高用户的使用体验。

图2是流媒体回播装置的结构图,此装置包括:

接收模块,用于接收用户的流媒体回播请求;

解析模块,用于解析流媒体回播请求中的时间参数流媒体名称;

确定模块,用于根据时间参数确定回播时间点;

播放列表文件获取模块,用于获取回播时间点和流媒体名称对应的播放列表文件;

播放列表文件发送模块,用于将播放列表文件发送至用户。

其中,

确定模块包括判断单元、构建单元、请求发送单元、接收单元、处理单元;

判断单元,用于判断时间参数的类型是否为相对时间类型;还用于判断时间参数的类型是否为绝对时间类型;

构建单元,用于在判断单元判断时间参数的类型为绝对时间类型时,将边缘服务器的当前系统时间和时间参数中的绝对时间的差值作为临时相对时间,构建时间参数的类型为相对时间类型并且相对时间为临时相对时间的流媒体回播请求;

请求发送单元,用于将流媒体回播请求发送至用户;

接收模块,用于从用户接收时间参数的类型为相对时间类型的流媒体回播请求;

处理单元,用于在判断单元判断时间参数的类型为相对时间类型时,将边缘服务器的当前系统时间和时间参数中的相对时间的差作为回播时间点,还用于在判断单元判断时间参数的类型为绝对时间类型时,将边缘服务器的当前系统时间和此流媒体回播请求的时间参数中的相对时间的差作为回播时间点。

播放列表文件获取模块包括查找单元、构建单元、发送单元、接收单元、缓存单元;

查找单元,用于查找是否缓存有与回播时间点和流媒体名称对应的播放列表文件;

构建单元,用于在查找单元未查找到与回播时间点对应的播放列表文件时,构建时间参数的类型为回播时间类型并且回播时间为回播时间点的流媒体回播请求;

发送单元,用于将构建单元构建的流媒体回播请求发送至中心服务器;还用于在查找单元查找到缓存有与回播时间点对应的播放列表文件时,将缓存的此播放列表文件发送至用户;

接收单元,用于从中心服务器接收播放列表文件;

缓存单元,用于将播放列表文件缓存为与回播时间点对应的播放列表文件。

此装置还包括标识获取模块和文件更新模块;

标识获取模块,用于获取用户的标识;

文件更新模块,用于在播放列表文件中增加用户的标识获得具有用户标识的播放列表文件;

播放列表文件发送模块,用于将具有用户标识的播放列表文件发送至用户。

此装置还包括分片文件获取模块;

分片文件查询模块包括分片文件查询单元、发送单元、接收单元、缓存单元;

分片文件查询模块,用于查找是否缓存有分片文件;

发送模块,用于在分片文件查询模块查找到分片文件时,将缓存的此分片文件发送至用户;还用于在分片文件查询模块未查找到分片文件时,将请求发送至中心服务器;

接收单元,用于从中心服务器接收分片文件;

缓存单元,用于缓存分片文件;

发送单元,用于将分片文件发送至上述用户。

流媒体为hls,播放列表文件为m3u8播放列表文件。

上面描述的内容可以单独地或者以各种方式组合起来实施,而这些变型方式都在本发明的保护范围之内。

需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。

本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件完成,程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现,相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。本发明不限制于任何特定形式的硬件和软件的结合。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括所述要素的物品或者设备中还存在另外的相同要素。

以上实施例仅用以说明本发明的技术方案而非限制,仅仅参照较佳实施例对本发明进行了详细说明。本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的精神和范围,均应涵盖在本发明的权利要求范围当中。

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