时移直播方法、服务端装置、客户端装置及直播系统与流程

专利2022-06-29  65


本发明涉及流媒体技术领域,更具体的说,是涉及一种时移直播方法、服务端装置、客户端装置及直播系统。



背景技术:

基于http(简称:http,英文:hypertexttransferprotocol,中文:超文本传输协议)的动态自适应流是一种自适应流媒体传输协议,包括dash(简称:dash,英文:dynamicadaptivestreamingoverhttp,中文:基于http的动态自适应流)或hls(hls,httplivestreaming,中文:基于http的流媒体传输协议)。基于dash/hls协议可实现互联网电视的点播、直播、时移、回看等业务。其中,当用户在打开频道,而某个节目已经开始一段时间时,可以通过时移(time-shift)的方式对正在进行的直播节目的时间点向前推移,从而可以实现对某个直播节目重新开始播放(start-overplayback)。为了实现时移需求,需要在服务端对直播频道内容进行录制归档。现有实现时移直播的技术方法中,大多采用的方法是对直播频道的直播流数据进行录制归档,而归档的形式主要包括基于分片和基于单文件的形式,同时对录制归档的文件创建索引,以便在时移播放时可以定位到具体的文件。但是,现有的时移直播技术方案存在对直播流数据进行录制归档时,实际上是要对同一个频道存储两份相同的数据,直播目录下一份数据,时移目录下一份数据,增加了存储的成本。因此,现有的时移直播存在存储成本较高的问题。

申请内容

本发明的目的是针对上述现有技术存在的缺陷,提供一种时移直播方法,解决现有的时移直播中存储成本较高的问题。

本发明的目的是通过以下技术方案来实现的:

第一方面,提供一种时移直播方法,所述方法包括:

获取目标频道的直播流;

将所述直播流通过预设的流媒体协议进行分片打包,得到所述直播流的分片文件以及对应的索引文件;

将所述分片文件存储到目标频道对应的分片文件目录下,以及将所述索引文件存储到目标频道对应的索引文件目录下;

基于所述索引文件目录,对所述索引文件目录下的索引文件进行时移归档,得到时移归档目录;

接收客户端的时移请求,在所述时移归档目录下的读取对应的时移索引文件返回所述客户端。

进一步的,所述基于所述索引文件目录,对所述索引文件目录下的索引文件进行时移归档,得到时移归档目录,包括:

获取所述索引文件目录的监控信息,所述监控信息包括更新的目标索引文件名以及对应第一格式的时间戳;

将所述第一格式的时间戳转换为第二格式的时间戳;

基于所述第二格式的时间戳对所述目标索引文件进行时移归档,得到时移归档目录。

进一步的,所述接收客户端的时移请求,在所述时移归档目录中的读取对应的时移索引文件返回所述客户端,包括:

获取所述时移请求中的时移偏移量;

根据所述时移偏移量,计算所述时移的起始时间戳;

将所述起始时间戳转换为第二格式的起始时间戳;

通过所述第二格式的起始时间戳,按预定规则定位到目标时移归档目录;

在所述目标时移归档目录下定位对应的时移索引文件作为起始时移索引文件。

进一步的,所述在所述目标时移归档目录下定位对应的时移索引文件作为起始时移索引文件,包括:

选取第二格式的时间戳比所述第二格式的起始时间戳小的时移索引文件中,第二格式的时间戳最大的时移索引文件作为起始时移索引文件。

进一步的,在所述接收客户端的时移请求之前,所述方法还包括:

接收客户端的资源请求;

判断所述资源请求为时移请求或分片文件请求;

若所述资源请求为分片文件请求,则根据所述分片文件请求在所述分片文件目录下读取对应的分片文件返回所述客户端。

第二方面,还提供一种时移直播方法,用于客户端,所述方法包括:

获取用户发起时移的时移频道地址;

获取用户发起时移请求时的时移偏移量;

基于所述时移频道地址以及所述时移偏移量,生成时移请求;

将所述时移请求发送到服务端,并接收所述服务端返回的时移索引文件;

其中,所述时移索引文件为所述服务端根据目标频道对应的索引文件目录下的索引文件进行归档得到,并存储在时移归档目录中。

进一步的,所述获取用户发起时移请求时的时移偏移量,包括:

获取用户发起时移请求时的开始时移时间戳;

获取当前时间戳;

计算所述当前时间戳与所述开始时移时间戳的差值作为时移偏移量。

第三方面,还提供一种服务端装置,所述服务端装置包括:

第一获取模块,用于获取目标频道的直播流;

处理模块,用于将所述直播流通过预设的流媒体协议进行分片打包,得到所述直播流的分片文件以及对应的索引文件;

存储模块,用于将所述分片文件存储到目标频道对应的分片文件目录下,以及将所述索引文件存储到目标频道对应的索引文件目录下;

归档模块,用于基于所述索引文件目录,对所述索引文件目录下的索引文件进行时移归档,得到时移归档目录;

接收与返回模块,用于接收客户端的时移请求,在所述时移归档目录下的读取对应的时移索引文件返回所述客户端。

第四方面,还提供一种客户端装置,所述客户端装置包括:

第二获取模块,用于获取用户发起时移的时移频道地址;

第三获取模块,用于获取用户发起时移请求时的时移偏移量;

生成模块,用于基于所述时移频道地址以及所述时移偏移量,生成时移请求;

发送和接收模块,用于将所述时移请求发送到服务端,并接收所述服务端返回的时移索引文件;

其中,所述时移索引文件为所述服务端根据目标频道对应的索引文件目录下的索引文件进行归档得到,并存储在时移归档目录中。

第五方面,还提供一种直播系统,所述系统包括:服务端以及客户端;其中,

所述服务端用于执行如本发明实施例所述的时移直播方法;

所述客户端用于执行如本发明实施例所述的时移直播方法。

本发明带来的有益效果:获取目标频道的直播流;将直播流通过预设的流媒体协议进行分片打包,得到直播流的分片文件以及对应的索引文件;将分片文件存储到目标频道对应的分片文件目录下,以及将索引文件存储到目标频道对应的索引文件目录下;基于索引文件目录,对索引文件目录下的索引文件进行时移归档,得到时移归档目录;接收客户端的时移请求,在时移归档目录下的读取对应的时移索引文件返回所述客户端。通过对索引文件目录中新增加的索引文件进行归档,并通过归档后的时移归档目录对用户的时移请求进行响应,可以不用存储同一个频道的两份直播流数据,从而解决了现有时移直播中存储成本较高的问题。

附图说明

图1为本发明实施例提供的一种直播系统的架构示意图;

图1a为本发明实施例提供的一种频道目录的结构示意图;

图1b为本发明实施例提供的一种时移归档目录的结构示意图;

图2为本发明实施例提供的一种时移直播方法的流程示意图;

图3为本发明实施例提供的另一种时移直播方法的流程示意图;

图4为本发明实施例提供的另一种时移直播方法的流程示意图;

图4a为本发明实施例提供的两种视频流分片文件的示意图;

图4b为本发明实施例提供的两种音频流分片文件的示意图;

图4c为本发明实施例提供的一种主索引文件的示意图;

图4d为本发明实施例提供的一种时移归档目录文件的示意图;

图4e为本发明实施例提供的一种子索引文件的示意图;

图5为本发明实施例提供的一种服务端装置的结构示意图;

图6为本发明实施例提供的一种服务端装置中归档模块的结构示意图;

图7为本发明实施例提供的一种服务端装置中接收与返回模块的结构示意图;

图8为本发明实施例提供的另一种服务端装置的结构示意图;

图9为本发明实施例提供的一种客户端装置的结构示意图;

图10为本发明实施例提供的一种客户端装置中第三获取模块的结构示意图。

具体实施方式

下面描述本发明的优选实施方式,本领域普通技术人员将能够根据下文所述用本领域的相关技术加以实现,并能更加明白本发明的创新之处和带来的益处。

本发明提供了一种时移直播方法。本发明的目的是通过以下技术方案来实现的:

请参见图1,图1是本发明实施例提供的一种直播系统的架构示意图,如图1所示,所述系统包括:服务端101以及客户端102。

其中,上述的服务端101用于从外部获取到直播信号源,上述的直播信号源为各个不同的直播频道实时上传的直播信号。上述的服务端101也可以称为源站,或者源站服务器,或者源站节点。上述的服务端101支持基于hls/dash流媒体协议的直播流打包与分片。上述的直播信号源也可以称为直播流,或者直播流数据等。

上述的客户端102用于生成资源请求信息,上述的资源请求信息包括分片文件请求或索引文件请求,上述的分片文件请求可以理解为直播资源请求,上述的索引文件请求可以理解为点播资源请求、时移资源请求、回看资源请求等。

在一种可能的实施例中,上述的服务端101包括直播打包模块、时移归档模块以及内容分发模块,其中,上述的直播打包模块用于接收直播流,并将该直播流分片打包成预设的流媒体协议下的分片文件以及索引文件。上述预设的流媒体协议可以是基于hls/dash流媒体协议。上述的时移归档模块用于对索引文件进行归档,得到时移归档目录以及时移归档目录下的时移索引文件。上述的内容分发模块用于与客户端102进行交互,接收客户端102的资源请求或将客户端102所请求的资源文件返回到客户端102。

本发明实施例中,由于采用直接对hls/dash索引文件进行归档的方法,避免了采用私有协议创建索引的局限性,提高了直播系统的通用性。

进一步的,上述的服务端101中还存储有频道目录,在将直播流进行分片打包后,得到的分片文件与索引文件都会存储在频道目录下,上述的频道目录包括分片文件目录以及索引文件目录,上述的分片文件目录用于存储分片文件,上述的索引文件用于存储索引文件。上述的频道目录的目录结构如图1a所示,上述的频道目录包括视频目录(video目录)、音频目录(audio目录)、dash目录、以及hls目录。其中,上述视频目录与音频目录为分片文件目录,上述的dash目录以及hls目录为索引文件目录。上述视频目录用于存储分片打包生成的视频流分片文件,上述音频目录用于存储分片打包生成的音频流分片文件,上述dash目录用于存储分片打包生成的dash协议索引文件,上述hls目录用于存储分片打包生成的hls协议索引文件。

对于dash索引文件,可以只有一个索引文件,被命名为manifest.mpd;对于hls索引文件,可以包括主索引文件和子索引文件,主索引文件通常命名为master.m3u8,子索引文件通常指不同分辨率的视频流索引文件以及音频流索引文件,比如:如果一个频道有两个分辨率的直播流,分别是480p和720p,那么子索引文件分别为480p.m3u8和720p.m3u8,对于其他分辨率的子索引文件的命名类似。对于音频流索引文件通常命名为audio.m3u8。

上述的索引文件与分片文件之间存在映射关系,可以通过索引文件索引到对应的分片文件。

进一步的,上述时移归档模块监控频道目录下索引文件的目录,即监控频道目录下的dash目录以及hls目录,当监控到dash目录以及hls目录下的索引文件发生更新时,则对更新的索引文件进行归档,将更新的索引文件归档到时移归档目录下,上述的更新可以理解为dash目录以及hls目录下新增索引文件。

上述的时移归档目录的目录结构如图1b所示,上述的时移归档目录包括dash目录以及hls目录,在时移归档目录下,归档的目录格式为:$basedir/$chanid/<dash|hls>/yyyymmddhh,其中,basedir为时移归档目录的根目录,chanid表示频道编号,<dash|hls>为协议格式,yyyymmddhh为时间戳,在时移归档目录下时移索引文件的命名规范为<时间戳>_<原索引文件名>。

在本发明实施例中,通过对索引文件目录中新增加的索引文件进行归档,并通过归档后的时移归档目录对用户的时移请求进行响应,可以不用存储同一个频道的两份直播流数据,从而解决了现有时移直播中存储成本较高的问题。

请参见图2,图2是本发明实施例提供的一种时移直播方法的流程图,应用于图1实施例中的直播系统,如图2所示,所述方法包括:

201、获取目标频道的直播流。

其中,上述直播流可以通过服务端的中的收流/拉流线程从目标频道中进行获取。

202、将直播流通过预设的流媒体协议进行分片打包,将得到直播流的分片文件以及对应的索引文件。

在获取目标频道的直播流后,通过服务端中的直播打包模块将该直播流重新打包,上述预设的流媒体协议可以是基于hls/dash流媒体协议,则直播打包模块输出得到基于hls/dash流媒体协议的分片文件和索引文件。上述的分片文件也可以称为切片文件。上述的分片文件包括视频流分片文件以及音频流分片文件,上述的索引文件包括dash协议索引文件以及hls协议索引文件。

203、将分片文件存储到目标频道对应的分片文件目录下,以及将索引文件存储到目标频道对应的索引文件目录下。

其中,上述的分片文件目录包括视频目录与音频目录,上述的索引文件目录包括dash目录以及hls目录。

上述的分片文件包括视频流分片文件以及音频流分片文件,将上述的视频流分片文件存储到视频目录下,将上述的音频流分片文件存储到音频目录下。

204、基于索引文件目录,对索引文件目录下的索引文件进行时移归档,得到时移归档目录。

在该步骤中,上述索引文件目录被上述时移归档模块进行监控,当索引文件目录发生更新时,时移归档模块对更新的索引文件进行归档,得到时移归档目录。

获取索引文件目录的监控信息,上述监控信息包括更新的目标索引文件名以及对应第一格式的时间戳;将第一格式的时间戳转换为第二格式的时间戳;基于第二格式的时间戳对所述目标索引文件进行时移归档,得到时移归档目录。

具体的,获取并记录索引文件目录中发生更新的索引文件名,并将索引文件临时读入内存。获取索引文件的第一格式的时间戳,上述的第一格式的时间戳可以是unix时间戳(unixtimestamp)。unix时间戳,或称unix时间(unixtime)、posix时间(posixtime),是一种时间表示方式,定义为从格林威治时间1970年01月01日00时00分00秒起至现在的总秒数。

上述第二格式的时间戳可以是yyyymmddhh格式的时间戳,其中,yyyy表示年份,mm表示月份,dd表示日期,hh表示小时。归档的索引文件的命名规范为<unix时间戳>_<原索引文件名>,即通过unix时间戳确定索引文件对应第二格式的时间戳,将该索引文件存储到与该第二格式的时间戳对应的目录下。可以理解的,通过第二格式的时间戳,换算出对应索引文件所属日期,将该对应索引文件存储到对应日期的时移归档目录下。上述的第二格式的时间戳也可以称为日期时间戳。将索引文件全部存储到对应日期的时移归档目录下,得到对应的时移归档目录。由于采用unix时间戳进行记录归档,在归档过程中没有跨天的概念,消除了不支持跨天录制的局限性。

205、接收客户端的时移请求,在时移归档目录下的读取对应的时移索引文件返回客户端。

可选的,在步骤205之前,服务端接收客户端的资源请求;判断上述资源请求为时移请求或分片文件请求;若上述资源请求为分片文件请求,则根据上述分片文件请求在上述分片文件目录下读取对应的分片文件返回所述客户端。

若上述的资源请求为时移请求,则从时移请求中提取时移偏移量d,并获取当前unix时间戳t,使用当前时间戳减去时移偏移量得到时移的起始时间戳t0=t-d。其中,时移的起始时间戳t0也为unix时间戳。

将时移的起始时间戳t0转移为第二格式的时间戳,即转换为日期格式时间戳,比如,将t0转移为2019110201,由此可以得到时移索引文件对应日期的时移归档目录作为目标时移归档目录。

在定位得到目标时移归档目录后,遍历该目标时移归档目录下的所有时移索引文件,在时移归档目录下的时移索引文件的命名规范为:<unix时间戳>_<原索引文件名>,因此,可以通过unix时间戳进行遍历。并提取出时移索引文件对应的unix时间戳进行排序。

在得到有序的unix时间戳序列后,利用二分查法找到比时移的起始时间戳t0小的最大unix时间戳。根据该最大unix时间戳,索引得到最大unix时间戳对应的时移索引文件作为起始时移索引文件。将该起始时移索引文件返回到客户端。

在本发明实施例中,通过对索引文件目录中新增加的索引文件进行归档,并通过归档后的时移归档目录对用户的时移请求进行响应,可以不用存储同一个频道的两份直播流数据,从而解决了现有时移直播中存储成本较高的问题。

请参见图3,图3是本发明实施例提供的另一种时移直播方法的流程图,应用于图1实施例中的直播系统,如图3所示,所述方法包括:

301、获取用户发起时移的时移频道地址。

上述时移频道地址是用户当前所播放的频道地址。上述的用户发起时移指的是用户对直播进度条进行操作,使进度条的时间点向前推移。

302、获取用户发起时移请求时的时移偏移量。

在该步骤中,上述的时移偏移量可以通过客户端获取用户发起时移请求时的开始时移时间戳,并获取当前时间戳,然后计算所述当前时间戳与所述开始时移时间戳的差值得到,可以将该差值作为时移偏移量。

303、基于时移频道地址以及时移偏移量,生成时移请求。

在该步骤中,上述的时移请求还包括:发起的模式,服务端的域名,服务端的监听端口,索引文件名,以及协议的格式。具体的,上述的时移请求的格式规范为:scheme://host:port/params/offset/file,其中scheme是请求的发起的模式,可以是http或https,host是服务端的域名,port是服务端的监听端口,params是请求的参数,经过base64编码,offset是时移的偏移量,file是索引文件名,hls协议对应master.m3u8,dash协议对应manifest.mpd。

304、将时移请求发送到服务端,并接收服务端返回的时移索引文件。

在本发明实施例中,通过对索引文件目录中新增加的索引文件进行归档,并通过归档后的时移归档目录对用户的时移请求进行响应,可以不用存储同一个频道的两份直播流数据,从而解决了现有时移直播中存储成本较高的问题。

请参见图4,图4是本发明实施例提供的另一种时移直播方法的流程图,应用于图1实施例中的直播系统,如图4所示,所述方法包括:

401、服务端接收目标频道的直播流。

在本发明实施例中,为更清楚的说明,假设目标频道的频道编号为:

b026324c6904b2a9cb4b88d6d61c81d1。

直播存储根目录:/media/live。

时移存储根目录:/media/tstv。

频道输入包含2路直播流:480p和720p。

频道输出协议:hls和dash

内容分发服务端域名及端口:media.tv:80。

采用加密的http传输模式:https。

在步骤401中,服务端中的直播打包模块接收频道b026324c6904b2a9cb4b88d6d61c81d1的直播流,频道目录对应为:/media/live/b026324c6904b2a9cb4b88d6d61c81d1,该目录下同时存在video、audio、dash和hls目录,如图1a中所示。video目录下存储打包输出的视频流切片文件,包括480p和720p的视频流分片文件,如图4a所示。audio目录下存储打包输出的音频流分片文件,如图4b所示。hls目录下存储生成的m3u8索引文件,包括一个主索引文件master.m3u8以及3个子索引文件:480p.m3u8、720p.m3u8和audio.m3u8。dash目录下存储生成的mpd索引文件manifest.mpd。

402、当监控到dash目录及hls目录下索引文件的更新时,时移归档模块将更新的索引文件归档到时移归档目录下。

该步骤中,时移归档目录包括dash时移目录及hls时移目录,分别对应以下目录:

dash:/media/tstv/b026324c6904b2a9cb4b88d6d61c81d1/dash/yyyymmddhh。

hls:/media/tstv/b026324c6904b2a9cb4b88d6d61c81d1/hls/yyyymmddhh。

假设在某一时刻监控到索引文件发生更新,该时刻对应的unix时间戳为1575448744,将unix时间戳转换为yyyymmddhh的第二格式后对应得到为2019120416,则对于dash索引文件,进行归档后的文件路径为:

/media/tstv/b026324c6904b2a9cb4b88d6d61c81d1/dash/2019120416/1575448744_manifest.mpd。

对于hls索引文件,归档的文件路径为:

/media/tstv/b026324c6904b2a9cb4b88d6d61c81d1/dash/2019120416/1575448744_480p.m3u8。

/media/tstv/b026324c6904b2a9cb4b88d6d61c81d1/dash/2019120416/1575448744_720p.m3u8。

/media/tstv/b026324c6904b2a9cb4b88d6d61c81d1/dash/2019120416/1575448744_audio.m3u8。

由于在hls索引文件中,master.m3u8文件在创建后在整个过程中保持不变,因此,无需对其进行归档,当时移请求主索引文件时,可以直接从索引文件目录下获取即可。

403、客户端捕获时移事件,并根据时移事件构造时移请求。

在该步骤中,客户端可以是移动终端或机顶盒终端,可以通过移动终端或机顶盒终端可以通过向左滑动进度条的方式进入时移服务。

客户端应用将会捕获该时移事件,假设某一时刻捕获到时移事件,时移的起始时间戳t1=1575450341,当前时间戳t2=1575452141,则计算得到时移偏移量d=1800,假设进入时移前,用户正在观看的目标频道是基于hls协议分发的,此时,客户端开始构造时移播放地址,然后发起时移服务请求,构造的步骤如下:

1)对下面的请求参数进行base64编码:

st=tstv&id=b026324c6904b2a9cb4b88d6d61c81d1&sty=hls。

得到:

c3q9dhn0dizpzd1imdi2mzi0yzy5mdrimme5y2i0yjg4zdzknjfjodfkmszzdhk9agxz。

其中,st表示服务类型(servicetype),tstv表示时移直播,id表示频道编号,sty表示流类型(streamtype)。

2)按照时移的请求规范构造时移请求的url,得到:

https://media.tv/c3q9dhn0dizpzd1imdi2mzi0yzy5mdrimme5y2i0yjg4zdzknjfjodfkmszzdhk9agxz/1800/master.m3u8

在得到时移请求的url,向服务端发送该时移请求。

404、服务端接收到时移请求后,对时移请求进行解析,并读取索引文件返回到客户端。

在该步骤中,上述的对时移请求进行解析可以是:

首先从时移请求中提取请求参数并解码获取服务类型st=tstv、频道编号id=b026324c6904b2a9cb4b88d6d61c81d以及分发流协议sty=hls和时移偏移量d=1800。服务端检测到请求的是hls主索引文件,因此,直接从索引文件目录下查找和读取索引文件,hls主索引文件的存储路径为:

/media/live/b026324c6904b2a9cb4b88d6d61c81d/hls/master.m3u8。

主索引文件的内容如图4c所示。

405、客户端获取到主索引文件后,对主索引进行解析,并请求主索引下一个目标码率的子索引文件及对应的音频子索引文件。

在该步骤中,解析主索引文件后,是首先请求480p.m3u8还是请求720p.m3u8取决于客户端播放器的实现机制,通常开始时先请求低码率的子索引文件。

406、客户端构造对子索引文件的时移请求。

下面假设客户端以请求480p.m3u8为例说明内容分发模块对子索引文件处理的流程。客户端构造子索引文件的时移请求url向服务端发起请求,时移请求url为:

https://media.tv/c3q9dhn0dizpzd1imdi2mzi0yzy5mdrimme5y2i0yjg4zdzknjfjodfkmszzdhk9agxz/1800/480p.m3u8

407、服务端对子索引文件的时移请求进行处理,并返回对应的子索引文件。

服务端收到子索引请求后,首先从时移请求url中提取请求参数并解码获取服务类型st=tstv、频道编号id=b026324c6904b2a9cb4b88d6d61c81d以及分发流协议sty=hls和时移偏移量d=1800。服务端检测到请求的是hls子索引文件,获取当前时间戳t=1575460481,则计算得到时移偏移的起始时间戳t1=t-1800=1575458681,将t1转成yyyymmddhh格式后得到:2019120419,根据第二格式的时间戳2019120419,可以定位到时移归档目录为:/media/tstv/b026324c6904b2a9cb4b88d6d61c81d/hls/2019120419,假设该时移归档目录下归档的文件如图4d所示。

遍历上述时移归档目录下归档的文件,并提取对应的时间戳,然后对时间戳数组进行排序,最后得到如下有序时间戳数组:

[1575458373,1575458384,1575458394,1575458405,1575458415,1575458425,1575458436,1575458446,1575458457,1575458467,1575458477,1575458488,1575458498,1575458509,1575458519,1575458530,1575458540,1575458550,1575458561,1575458571,1575458582,1575458592,1575458602,1575458613,1575458623,1575458634,1575458644,1575458655,1575458675,1575458686,1575458696,1575458707,1575458717,1575458727,1575458738,1575458748,1575458759,1575458769,1575458780,1575458790,1575458800]。

从有序的时间戳数组中找到比时移的起始时间戳小的最大时间戳,上述计算中得到的时移起始时间戳为t1=1575458681,在上述数组中通过二分查找可以找到比t1小的最大时间戳是t2=1575458675,由此,可以根据该时间戳定位到相应的时移索引文件路径:

/media/tstv/b026324c6904b2a9cb4b88d6d61c81d/hls/2019120419/1575458675_480p.m3u8。

服务端读取上述路径的索引文件作为目标子索引文件进行返回。

408、客户端收到子索引文件后,构造对应的分片文件的资源请求。

在该步骤中,如图4e所示,解析子索引文件并构造对应的资源请求url。

假设客户端构造请求第一个分片文件的请求,其资源请求url为:

https://media.tv/c3q9dhn0dizpzd1imdi2mzi0yzy5mdrimme5y2i0yjg4zdzknjfjodfkmszzdhk9agxz/1800/video/480p_1359.m4s

409、服务端检测到请求的是hls协议分片文件,从对应分片文件目录下查找和读取分片文件返回客户端。

其中,上述分片文件在直播目录下的存储路径为:

/media/live/b026324c6904b2a9cb4b88d6d61c81d/video/480p_1359.m4s

服务端读取上述路径的媒体文件数据并返回。

在本发明实施例中,通过对索引文件目录中新增加的索引文件进行归档,并通过归档后的时移归档目录对用户的时移请求进行响应,可以不用存储同一个频道的两份直播流数据,从而解决了现有时移直播中存储成本较高的问题。

请参见图5,图5是本发明实施例提供的一种服务端装置的结构示意图,如图5所示,所述服务端装置包括:

第一获取模块501,用于获取目标频道的直播流;

处理模块502,用于将所述直播流通过预设的流媒体协议进行分片打包,得到所述直播流的分片文件以及对应的索引文件;

存储模块503,用于将所述分片文件存储到目标频道对应的分片文件目录下,以及将所述索引文件存储到目标频道对应的索引文件目录下;

归档模块504,用于基于所述索引文件目录,对所述索引文件目录下的索引文件进行时移归档,得到时移归档目录;

接收与返回模块505,用于接收客户端的时移请求,在所述时移归档目录下的读取对应的时移索引文件返回所述客户端。

可选的,如图6所示,所述归档模块504包括:

第一获取单元5041,用于获取所述索引文件目录的监控信息,所述监控信息包括更新的目标索引文件名以及对应第一格式的时间戳;

第一转换单元5042,用于将所述第一格式的时间戳转换为第二格式的时间戳;

归档单元5043,用于基于所述第二格式的时间戳对所述目标索引文件进行时移归档,得到时移归档目录。

可选的,如图7所示,所述接收与返回模块505包括:

第二获取单元5051,用于获取所述时移请求中的时移偏移量;

第一计算单元5052,用于根据所述时移偏移量,计算所述时移的起始时间戳;

第二转换单元5053,用于将所述起始时间戳转换为第二格式的起始时间戳;

第一定位单元5054,用于通过所述第二格式的起始时间戳,按预定规则定位到目标时移归档目录;

第二定位单元5055,用于在所述目标时移归档目录下定位对应的时移索引文件作为起始时移索引文件。

可选的,所述第二定位单元5055还用于选取第二格式的时间戳比所述第二格式的起始时间戳小的时移索引文件中,第二格式的时间戳最大的时移索引文件作为起始时移索引文件。

可选的,如图8所示,所述装置还包括:

接收模块506,用于接收客户端的资源请求;

判断模块507,用于判断所述资源请求为时移请求或分片文件请求;

返回模块508,用于若所述资源请求为分片文件请求,则根据所述分片文件请求在所述分片文件目录下读取对应的分片文件返回所述客户端。

在本发明实施例中,通过对索引文件目录中新增加的索引文件进行归档,并通过归档后的时移归档目录对用户的时移请求进行响应,可以不用存储同一个频道的两份直播流数据,从而解决了现有时移直播中存储成本较高的问题。

请参见图9,图9是本发明实施例提供的一种客户端装置的结构示意图,如图9所示,所述边客户端装置包括:

第二获取模块901,用于获取用户发起时移的时移频道地址;

第三获取模块902,用于获取用户发起时移请求时的时移偏移量;

生成模块903,用于基于所述时移频道地址以及所述时移偏移量,生成时移请求;

发送和接收模块904,用于将所述时移请求发送到服务端,并接收所述服务端返回的时移索引文件;

其中,所述时移索引文件为所述服务端根据目标频道对应的索引文件目录下的索引文件进行归档得到,并存储在时移归档目录中。

可选的,如图10所示,所述第三获取模块902包括:

第三获取单元9021,用于获取用户发起时移请求时的开始时移时间戳;

第四获取单元9022,用于获取当前时间戳;

第二计算单元9023,用于计算所述当前时间戳与所述开始时移时间戳的差值作为时移偏移量。

在本发明实施例中,通过对索引文件目录中新增加的索引文件进行归档,并通过归档后的时移归档目录对用户的时移请求进行响应,可以不用存储同一个频道的两份直播流数据,从而解决了现有时移直播中存储成本较高的问题。

本发明实施例提供一种电子设备,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现本发明实施例提供的时移直播方法中的步骤。

本发明实施例提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现本发明实施例提供的时移直播方法中的步骤。

需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本发明所必须的。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

在本发明所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的

另外,在本发明各个实施例中的处理器、芯片可以集成在一个处理单元中,也可以是单独物理存在,也可以两个或两个以上硬件集成在一个单元中。计算机可读存储介质或计算机可读程序可以存储在一个计算机可读取存储器中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储器包括:u盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、只读存储器(英文:read-onlymemory,简称:rom)、随机存取器(英文:randomaccessmemory,简称:ram)、磁盘或光盘等。

以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施方式只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。


技术特征:

1.一种时移直播方法,用于服务端,其特征在于,所述方法包括:

获取目标频道的直播流;

将所述直播流通过预设的流媒体协议进行分片打包,得到所述直播流的分片文件以及对应的索引文件;

将所述分片文件存储到目标频道对应的分片文件目录下,以及将所述索引文件存储到目标频道对应的索引文件目录下;

基于所述索引文件目录,对所述索引文件目录下的索引文件进行时移归档,得到时移归档目录;

接收客户端的时移请求,在所述时移归档目录下的读取对应的时移索引文件返回所述客户端。

2.如权利要求1所述的时移直播方法,其特征在于,所述基于所述索引文件目录,对所述索引文件目录下的索引文件进行时移归档,得到时移归档目录,包括:

获取所述索引文件目录的监控信息,所述监控信息包括更新的目标索引文件名以及对应第一格式的时间戳;

将所述第一格式的时间戳转换为第二格式的时间戳;

基于所述第二格式的时间戳对所述目标索引文件进行时移归档,得到时移归档目录。

3.如权利要求2所述的时移直播方法,其特征在于,所述接收客户端的时移请求,在所述时移归档目录中的读取对应的时移索引文件返回所述客户端,包括:

获取所述时移请求中的时移偏移量;

根据所述时移偏移量,计算所述时移的起始时间戳;

将所述起始时间戳转换为第二格式的起始时间戳;

通过所述第二格式的起始时间戳,按预定规则定位到目标时移归档目录;

在所述目标时移归档目录下定位对应的时移索引文件作为起始时移索引文件。

4.如权利要求3所述的时移直播方法,其特征在于,所述在所述目标时移归档目录下定位对应的时移索引文件作为起始时移索引文件,包括:

选取第二格式的时间戳比所述第二格式的起始时间戳小的时移索引文件中,第二格式的时间戳最大的时移索引文件作为起始时移索引文件。

5.如权利要求1所述的时移直播方法,其特征在于,在所述接收客户端的时移请求之前,所述方法还包括:

接收客户端的资源请求;

判断所述资源请求为时移请求或分片文件请求;

若所述资源请求为分片文件请求,则根据所述分片文件请求在所述分片文件目录下读取对应的分片文件返回所述客户端。

6.一种时移直播方法,用于客户端,其特征在于,所述方法包括:

获取用户发起时移的时移频道地址;

获取用户发起时移请求时的时移偏移量;

基于所述时移频道地址以及所述时移偏移量,生成时移请求;

将所述时移请求发送到服务端,并接收所述服务端返回的时移索引文件;

其中,所述时移索引文件为所述服务端根据目标频道对应的索引文件目录下的索引文件进行归档得到,并存储在时移归档目录中。

7.如权利要求6所述的时移直播方法,其特征在于,所述获取用户发起时移请求时的时移偏移量,包括:

获取用户发起时移请求时的开始时移时间戳;

获取当前时间戳;

计算所述当前时间戳与所述开始时移时间戳的差值作为时移偏移量。

8.一种服务端装置,其特征在于,所述服务端装置包括:

第一获取模块,用于获取目标频道的直播流;

处理模块,用于将所述直播流通过预设的流媒体协议进行分片打包,得到所述直播流的分片文件以及对应的索引文件;

存储模块,用于将所述分片文件存储到目标频道对应的分片文件目录下,以及将所述索引文件存储到目标频道对应的索引文件目录下;

归档模块,用于基于所述索引文件目录,对所述索引文件目录下的索引文件进行时移归档,得到时移归档目录;

接收与返回模块,用于接收客户端的时移请求,在所述时移归档目录下的读取对应的时移索引文件返回所述客户端。

9.一种客户端装置,其特征在于,所述客户端装置包括:

第二获取模块,用于获取用户发起时移的时移频道地址;

第三获取模块,用于获取用户发起时移请求时的时移偏移量;

生成模块,用于基于所述时移频道地址以及所述时移偏移量,生成时移请求;

发送和接收模块,用于将所述时移请求发送到服务端,并接收所述服务端返回的时移索引文件;

其中,所述时移索引文件为所述服务端根据目标频道对应的索引文件目录下的索引文件进行归档得到,并存储在时移归档目录中。

10.一种直播系统,其特征在于,所述系统包括:服务端以及客户端;其中,

所述服务端用于执行如权利要求1至5中任一所述的时移直播方法;

所述客户端用于执行如权利要求6或7所述的时移直播方法。

技术总结
本发明公布了提供一种时移直播方法、服务端装置、客户端装置及直播系统,所述时移直播方法包括:获取目标频道的直播流;将直播流通过预设的流媒体协议进行分片打包,得到直播流的分片文件以及对应的索引文件;将分片文件存储到目标频道对应的分片文件目录下,以及将索引文件存储到目标频道对应的索引文件目录下;基于索引文件目录,对索引文件目录下的索引文件进行时移归档,得到时移归档目录;接收客户端的时移请求,在时移归档目录下的读取对应的时移索引文件返回所述客户端。通过归档后的时移归档目录对用户的时移请求进行响应,可以不用存储同一个频道的两份直播流数据,从而解决了现有时移直播中存储成本较高的问题。

技术研发人员:韦月飞;李波
受保护的技术使用者:深圳市华曦达科技股份有限公司
技术研发日:2020.01.14
技术公布日:2020.06.05

转载请注明原文地址: https://bbs.8miu.com/read-53333.html

最新回复(0)