一种HLS节目录制和服务的***和方法
技术领域
本发明涉及多媒体技术领域,更具体地,涉及一种HLS(HTTP Live Streaming,http直播流)节目录制和服务的方法及***。
背景技术
随着流媒体技术的发展,在基于实时流式传输的流媒体方式盛行的今天,基于HTTP(Hypertext transfer protocol,超文本传输协议)的自适应流媒体方式逐渐浮出水面。基于HTTP的自适应流媒体方式宣称主要有这个几个优点:
1.提供多种码率。
2.在通过防火墙方面比实时流式传输要支持的更好。
3.CDN(Content Delivery Network,内容分发网络)不用部署流媒体技术,可以使用缓存
4.对于网络供应商提供更好的网络利用率。
仔细分析下基于HTTP的自适应流媒体方式。该方式将节目内容分成很多的小片段,例如10秒钟或2秒钟一个片段。然后通过一个播放列表描述文件,将这些片段组织在一起。播放列表文件中,描述了这些片段的URL(Uniform/Universal ResourceLocator,统一资源定位符)、时长、属性(例如不同码率)、时间关系等。客户端点播直播内容时,则内容生成端需要持续生成新的媒体片段,同时更新相应的播放列表文件。客户端则需要周期性的获取更新后的播放列表文件,然后根据列表文件中的描述,通过web服务器下载最新的媒体片段。与传统的IPTV(Interactive Personality Television,交互式网络电视)直播业务相比,由于客户端需要缓存一定数量的媒体片段后,才能开始解码播放,所以与传统方式观看到的直播内容相比,存在比较大的延迟。
传统的节目录制,在服务器侧的实现要求服务器针对每个录制请求单独生成录制文件,这样就带来几个问题,一个是存储存在浪费,存储文件不共享,几个时间上存在重叠的录制文件,重叠的文件无法共享,即时通过软链接和分段录制解决了文件共享的文件,又带来了管理的复杂性。
具体到HLS格式的节目录制,如果针对每一次录制生成一个固定的M3U8文件,会出现以下问题:
1)码率数目变化时,对正在录制的内容会有影响,可能导致无法播放;
2)HLS版本兼容性变化时,对正在录制的内容会有影响;
3)单个分片文件下拉失败或写失败,可能会导致节目单录制失败;
4)无法针对用户做到差异化服务。
发明内容
发明目的:本发明所要解决的技术问题是针对现有技术的不足,提供一种HLS节目录制和服务的方法和***,解决***复杂性、版本兼容、可靠性和差异化服务的问题。
本发明提供了一种HLS节目录制的方法,该方法应用于HLS节目录制和服务***中,所述的方法包括以下步骤:
通过索引下载信息下载索引文件,当索引文件中包含子索引文件时,分析下载索引中的子索引下载信息,当索引中包含TS文件时分析下载索引中的TS文件的下载信息;当获取到子索引下载信息后下载子索引文件,分析子索引文件中包含的TS文件下载信息。
当获取到TS文件下载信息后下载TS文件,对下载的TS文件进行记录。
按FIFO的方式对下载TS文件进行回滚。
对于下载的TS文件的记录,采用数据库进行存储管理或者通过数据结构的方式进行存储管理。
对于索引文件和TS文件以频道ID作为索引,包含文件码率、文件名字、文件类型、下载路径、文件下拉状态、本频道本码流的内部编号、本地存储路径等字段组成记录录入数据库或放入数据结构中维护。
更优化的方案,该方法进一步包括,HLS节目录制时,在***运行允许的时间范围内,对于HLS节目录制时,在***运行允许的时间范围内,不对实际的录制节目生成实际的M3U8文件。具体M3U8文件生成在用户服务时,通过查询记录的TS文件下载信息和频道信息生成,生成格式满足HLS规范要求。
更优化的方案,该方法进一步包括,HLS节目录制时,在***运行允许的时间范围之外,不进行录制。
更优化的方案,该方法进一步包括,当达到存储的阈值(阈值可设置,范围80%-99%)时,对TS文件按照FIFO方式进行回滚删除。
本发明提供了一种HLS录制节目服务的方法,该方法应用于HLS节目录制和服务***中,所述的方法包括以下步骤:
对于用户的M3U8文件请求,查询所选TS文件下载信息和所归属的频道信息;
根据查询到的TS文件下载信息和所归属的频道信息,生成用户所需的M3U8文件内容,并给用户提供服务;
对于用户的TS文件请求,定位用户所需TS文件读取,并给用户提供服务。
更优化的方案,该方法进一步包括,通过用户的M3U8文件请求,提取出频道信息和时间起止信息,根据频道信息和时间起止信息过滤TS文件下载信息,按照每个码率和每个分片的时间顺序生成对应的M3U8文件。
更优化的方案,该方法进一步包括,通过用户的M3U8文件请求,提取出频道信息和时间起止信息,根据频道信息和时间起止信息过滤TS文件下载信息,按照每个码率和每个分片的时间顺序生成对应的M3U8文件时,还可以根据用户请求URL携带的用户等级信息,查询***中维护的用户等级信息和码率的对应关系,对返回给用户请求响应的主M3U8索引文件只生成包含对应码率的M3U8文件。
更优化的方案,该方法进一步包括,对主M3U8索引文件中包含的子索引,可以根据版本配置情况修改M3U8对应的HLS版本信息,按HLS规范不同版本的要求,生成对应的标签。
本发明提供了一种HLS节目录制和服务的***,包括:
1、内容处理单元——负责获取HLS源内容的TS文件和M3U8文件,和TS文件的删除;
2、数据管理单元——负责获取数据的登记、记录、管理、老化功能;
3、M3U8管理单元——负载M3U8的解析和生成;
4、服务单元——负责根据用户请求对M3U8文件和其他TS文件进行服务。
首先服务器会根据数据管理单元中登记的频道编号,M3U8级数,M3U8协议版本号,主M3U8下载路径,文件存放路径,分片时长建立频道任务,通知内容处理单元根据主M3U8下载路径去获取HLS源服务器上的主M3U8文件。
获取到的M3U8文件交由M3U8管理单元进行解析,将M3U8中获取到的相对路径或绝对路径放置以及文件码率、文件名字、文件类型、下载路径、文件下拉状态、本频道本码流的内部编号、本地存储路径等字段组成记录录入数据库或放入数据结构中维护。
数据管理单元持续的将新的内容获取文件下拉状态为未下拉的任务下发给内容处理单元,内容处理单元下载M3U8文件和TS文件。
当用户服务请求达到服务单元时,服务单元通过用户的M3U8文件请求的URL进行解析,获取到录制节目的开始时间、结束时间信息和频道信息和其他用户信息,请求M3U8管理单元生成用户所需的M3U8信息。
M3U8管理单元通过获得参数信息,从数据管理单元根据频道信息和时间起止信息过滤TS文件下载信息,按照每个码率和每个分片的时间顺序生成对应的M3U8文件。
这种方式下即使在获取内容时,源频道码率数目变化时,由于用户访问的M3U8是动态生成的,可以判断是否所***率的文件在用户请求范围内是否齐全,然后根据策略采取不同的方式进行处理
对于要求服务的HLS内容版本有兼容性要求时,可以通过M3U8管理模块进行对应标签的生成的工作,标签的生成实际就是写文件的过程,生成的标签英文满足HLS规范的要求。
由于录制的过程不再是一次性生成的过程,因此在用户服务之前都可以通过内容处理单元去重试补齐分片文件,或者在生成M3U8时,将本地已缓存的TS的相对或绝对路径放入到M3U8中,对于本地未下拉的M3U8,直接将其源URL放入M3U8中
若需要针对用户做差异化服务,可以通过M3U8管理单元在获取的用户信息时,根据不同的策略来变幻M3U8不同的内容,如码率数变化,***广告等。
对于数据管理单元还需要控制分片信息的老化和实体分片的回滚,以避免分片文件下载导致
采用本发明所述的方法,可以将HLS的节目录制功能演变成HLS直播内容缓存,在提供TVOD的功能的同时,用户服务的方式很容易就可以修改为支持HLS频道的时移功能,兼顾了灵活性,可靠性,及可扩展性。
附图说明
下面结合附图和具体实施方式对本发明做更进一步的具体说明,本发明的上述和/或其他方面的优点将会变得更加清楚。
图1是本方案所述的HLS节目录制和服务的***的示意图
图2是本方案所述的一种实现中,HLS节目录制的示意图。
图3是本方案所述的一种实现中,HLS录制节目服务的示意图。
图4是本方案所述的一种实现中,HLS录制老化的处理流程示意图。
具体实施方式
本发明提供了一种按需动态生成M3U8,对分片文件进行元数据管理的HLS节目录制和服务的方法和***的基本思想,在这种***架构下,能够灵活的生成用户所需的录制节目对应的M3U8,提供一种兼顾了灵活性,可靠性,及可扩展性的方法和***,来完成HLS节目录制和服务的业务功能。
本发明公开了一种HLS节目录制的方法,该方法应用于HLS节目录制和服务***中,所述方法包括以下步骤:
通过索引下载信息下载索引文件,当索引文件中包含子索引文件时,分析下载索引文件中的子索引下载信息,当索引文件中包含TS文件时分析下载索引中的TS文件的下载信息;当获取到子索引下载信息后下载子索引文件,分析子索引文件中包含的TS文件下载信息;
当获取到TS文件下载信息后下载TS文件,对下载的TS文件进行记录;
按FIFO的方式对下载TS文件进行回滚;
HLS节目录制时,在***运行允许的时间范围内,不对实际的录制节目生成实际的M3U8文件,具体M3U8文件生成在用户服务时,通过查询记录的TS文件下载信息和频道信息生成,生成格式满足HLS规范要求;
HLS节目录制时,在***运行允许的时间范围之外,不进行录制;
对于下载的TS文件的记录,采用数据库进行存储管理或者通过数据结构的方式进行存储管理;
对于索引文件和TS文件以频道ID作为索引,包含文件码率、文件名字、文件类型、下载路径、文件下拉状态、本频道本码流的内部编号,以及本地存储路径字段组成记录录入数据库或放入数据结构中维护。
当达到存储的阈值时,阈值为总存储上限的80%~99%,对TS文件按照FIFO方式进行回滚删除。
本发明公开了一种HLS录制节目服务的方法,该方法应用与HLS节目录制和服务***中,所述方法包括以下步骤:
对于用户的M3U8文件请求,查询所选TS文件下载信息和所归属的频道信息;
根据查询到的TS文件下载信息和所归属的频道信息,生成用户所需的M3U8文件内容,并给用户提供服务;
对于用户的TS文件请求,定位用户所需TS文件读取,并给用户提供服务。
通过用户的M3U8文件请求,提取出频道信息和时间起止信息,根据频道信息和时间起止信息过滤TS文件下载信息,按照每个码率和每个分片的时间顺序生成对应的M3U8文件。
根据用户请求URL携带的用户等级信息,查询HLS节目录制和服务***中维护的用户等级信息和码率的对应关系,对返回给用户请求响应的主M3U8索引文件只生成包含对应码率的M3U8文件。
对主M3U8索引文件中包含的子索引,根据版本配置情况修改M3U8对应的HLS版本信息,按HLS规范各个版本的要求,生成对应的标签。
本发明公开了一种HLS节目录制和服务的***,包括:
内容处理单元:负责获取HLS源内容的TS和M3U8文件,负责TS文件的本地缓存和本地删除;
数据管理单元:负责获取数据的登记、记录、管理、以及老化功能;
M3U8管理单元:负责M3U8文件的解析和生成;
服务单元:负责根据用户请求对M3U8文件和TS文件进行服务;
内容处理单元获取的M3U8文件交由M3U8管理单元解析处理,获取子索引或TS文件的下载信息,并加入到数据管理单元中。
数据管理单元周期性的通知内容处理单元获取M3U8文件;
数据管理单元周期性的通知内容处理单元获取到TS文件后,对于索引文件和TS文件以频道ID作为索引,包含文件码率、文件名字、文件类型、下载路径、文件下拉状态、本频道本码流的内部编号,以及本地存储路径字段组成记录录入数据库或放入数据结构中维护,供生成索引时使用。
数据管理单元在当达到存储的阈值时,触发TS文件的老化,老化时按照FIFO方式老化,阈值为最大存储上限的80%~99%,将超过当前时间指定范围外的所有分片,范围为12小时至7天,以达到同时保证不同频道间的可时移范围一致的效果。
服务单元在收到用户的M3U8请求后,查询前面维护的记录,通过码率和频道ID过滤,通过内部编号顺序构建M3U8文件,返回给用户;服务单元在收到用户的TS请求后,如果在用户生成的子索引中使用的是TS的绝对路径,则直接定位后进行服务。
实施例
下面结合附图对技术方案的实施做进一步的详细描述。简单起见,下面的描述中,假定HLS频道的源是一个HTTP服务器,可以提供标准的HLS直播服务,如果HLS频道的源是其他方式的服务器,但能够提供标准的HLS直播所需要的文件,处理流程是类似的。
图1所示为一个采用了本方案所述的HLS节目录制方案的***示意图。整个***由四部分组成。内容处理单元101,数据管理单元102,M3U8管理单元103,用户服务单元104。这里如果将数据管理单元和M3U8管理单元作为一个单元实现也可以。或者将用户服务单元与M3U8管理单元中M3U8生成功能合并为一个单元,将数据管理单元和M3U8管理单元的中M3U8解析功能合并为一个单元也可以。
整个***中,数据管理单元102周期性驱动内容处理单元101去源站获取内容,内容获取方式不限。内容处理单元101获取到内容后,如果是M3U8内容,交由M3U8管理单元分析M3U8文件包含的文件信息,包括子索引文件***和TS分片文件信息,然后将这些信息交由数据管理单元102管理,数据管理单元102重复之前所述过程,数据管理单元102周期性的通知内容处理单元获取到TS文件后,会维护TS的下载信息,供生成索引时使用,循环上述过程,完成HLS分片文件的缓存和管理以及子码率信息的维护和管理。
同时数据管理单元102还负责分片文件的老化管理,即当单码率的TS文件缓存到一定数量后,按照FIFO方式对之前的分片文件进行回滚处理,同时保证不同频道间的可时移范围一致
当用户服务单元104收到用户请求后,根据用户携带的录制时间信息和用户相关信息,通知M3U8管理单元103生成对应的M3U8文件,M3U8管理单元通过数据管理单元102提供的信息生成对应的M3U8文件,并返回给用户,用户请请用户服务单元104TS文件时,直接访问对应的TS文件给用户服务。
图2所示为一种实现方式中,HLS节目录制的流程。首先***管理员会在数据管理单元102中录入频道的源信息,录入方式可以为消息方式,也可以为数据库操作方式,也可以修改配置方式。数据管理单元102会定时将其维护的待下载任务提交给内容处理单元101,内容处理单元101收到任务后,会启动获取流程,获取方式可以是HTTP,FTP等等传输协议,获取到待下载的内容后,若为M3U8文件,会将该M3U8文件传递给M3U8管理单元103分析并更新下载状态,M3U8管理单元103可以分析主索引和子索引,这个过程可以确定频道多码率信息,是单级索引还是多级索引,HLS协议版本号,子索引下载地址,TS下载地址,DRM加密等等信息,解析出的信息若涉及继续下载的,将下载信息录入数据管理单元102,数据管理单元102重复上面的下载过程,对于下载完的子索引交由M3U8管理单元处理并更新下载状态,对于下载完的TS文件直接更新下载状态。
图3所示为一种实现方式中,HLS录制节目服务的流程。用户请求用户服务单元104后,若是主索引和子索引的请求,用户服务单元104将请求信息传递到M3U8管理单元103,M3U8管理单元103根据用户请求信息访问数据管理单元102获取对应的分片信息(生成子索引时)和码率信息(生成主索引时),按照HLS规范的要求生成标准的M3U8文件格式的内容,M3U8管理单元103将获取到的M3U8文件内容返回给客户端,对于TS文件的请求,用户管理单元可以按照一定的规则直接定位文件返回给客户端,也可以通过图3中虚线的流程,访问数据管理单元102获取分片的位置信息后,再访问实体文件,并服务客户端。
图4所示为一种实现方式中,HLS录制老化的处理流程。数据管理单元102可以定时检查维护的分片数据,在满足一定条件的情况下,触发文件删除操作。具体文件操作请求下发给内容处理单元101,内容处理单元101收到TS分片删除操作后,根据给出本地缓存的路径进行文件定位并进行删除操作。
本发明提供了一种HLS节目录制和服务的***和方法,具体实现该技术方案的方法和途径很多,以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。本实施例中未明确的各组成部分均可用现有技术加以实现。