本发明属于网络信息分发技术领域,特别涉及一种通过cdn网络获取hls内容的方法及服务器。
背景技术:
cdn的全称是contentdeliverynetwork,即内容分发网络。其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定。通过在网络各处放置节点服务器构成在现有的互联网基础之上的一层智能虚拟网络,cdn系统能够实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上。其目的是使用户可就近取得所需内容,解决internet网络拥挤的状况,提高用户访问网站的响应速度。
hls(httplivestreaming)协议是由苹果公司实现的基于http的流媒体通信协议。hls协议的流媒体传输过程是首先服务器在资源准备阶段将不同比特率的视频切片并分别存储,同时生成两级或更多级的m3u8文件。传输开始时,客户端首先从服务器上请求并下载m3u8文件,通过解析该文件得到视频切片信息,选择适合当前状况的切片,提取出该切片的url地址,直接通过该地址向服务器发起请求。因此,服务器端不需要任何额外的处理,任意web服务器都可以配置成支持hls协议的服务器。
当用户终端通过内容身份标识号码(cid)向cdn节点服务器请求hls文件时,由于cdn节点服务器无法从用户终端发送的hls文件请求中解析出cid,因此无法实现文件的查找和提供。授权公告号为cn103051976b的发明专利公开了一种cdn分发hls内容方法、系统及设备,通过对初始内容请求的url进行重定向,实现了通过cdn网络对hls内容进行分发。但是该方法需要用户终端发送至少两次请求,这提高了阐述过程的复杂程度,并增加了cdn节点服务器的工作负荷。
技术实现要素:
为了解决上述技术问题,本发明提供了一种通过cdn网络获取hls内容的方法及服务器。
本发明具体技术方案如下:
本发明一方面提供了一种通过cdn网络获取hls内容的方法,包括如下步骤:
s1:用户终端向所述cdn节点服务器发送hls文件获取请求;
s2:所述cdn节点服务器接收所述hls文件获取请求进行解析,判断其中是否携带请求的文件内容身份标识cid,如携带,则根据所述cid查找所述用户终端请求的内容;如未携带,则向所述用户终端发送cid索取请求,所述cdn节点服务器收到所述用户终端发送的所述cid后,再进行查找;
s3:所述cdn节点服务器对所述cid进行解读,根据其中包含的信息,获取所述hls文件的索引文件,并将所述索引文件发送给所述用户终端;
s4:所述用户终端对所述索引文件进行解析,并向所述cdn节点服务器获取相应的媒体文件进行播放。
进一步地,所述步骤s2包括如下步骤:
s2.1:所述cdn节点服务器接收所述hls文件获取请求并进行解析,判断其中是否携带cid;
s2.2:如所述hls文件获取请求中携带有cid,则对所述cid进行识别,并查找所述cid指向的内容;
s2.3:如所述hls文件获取请求中未携带cid,则将所述hls文件获取请求搁置,并向所述用户终端发送cid获取请求,索要所述cid;所述cdn节点服务器接收到所述cid后,对所述cid进行识别,并查找所述cid指向的内容。
进一步地,所述步骤s2.3中,向所述用户终端发送cid获取请求的具体方法如下:
s2.3.1:设置一个时间阈值;
s2.3.2:所述cdn节点服务器向所述用户终端,发送cid获取请求,并从发送时开始计时,如所述用户终端超过所述时间阈值的时长时仍未作出响应,则再次发送所述cid获取请求。
进一步地,所述步骤s2.3还包括如下步骤:
s2.3.3:设置一个次数阈值,当所述cdn节点服务器发送所述cid获取请求的次数达到所述次数阈值时,则认定所述用户终端不再请求获取hls文件,此时停止发送所述cid获取请求,并将搁置的所述hls文件获取请求删除。
进一步地,所述步骤s3的具体方法如下:
所述cdn节点服务器对所述cid进行解读,获取其中包含的hls索引信息;所述cdn节点服务器根据所述hls索引信息,查找所述hls文件的索引文件,并发送给所述用户终端。
进一步地,所述步骤s4的具体方法如下:
所述用户终端接收所述索引文件并进行解析,然后根据所述索引文件的信息,按顺序向所述cdn节点服务器请求媒体文件进行播放。
进一步地,所述cdn节点服务器查找所述索引文件时,首先在本地进行检索,查看是否有相应内容,如果有,则将所述索引文件发送给所述用户终端;如果没有,则在网络内进行查找,并将查找到的内容索引文件发回给所述用户终端,同时所述索引文件对应的媒体文件储存在本地。
本发明另一方面提供了一种通过cdn网络获取hls内容的服务器,包括如下部分:
接收模块,用于接收用户终端发送的hls文件获取请求以及文件内容身份标识cid;
cid解读模块,用于判断所述hls文件获取请求中是否携带cid,如携带,则对所述cid进行解读;如未携带,则将所述hls文件获取请求搁置,并通知发送模块向所述用户终端发送cid索取请求;
查找模块,用于查找所述用户终端请求获取的hls文件的索引文件和媒体文件;
发送模块,用于向所述用户终端发送cid获取请求以及hls文件的索引文件和媒体文件。
进一步地,所述服务器还包括如下部分:
计时模块,用于设定时间阈值,并从所述cid获取请求发送时开始计时,如所述用户终端超过所述时间阈值的时长仍未作出回应,则通知所述cid解读模块将所述hls文件获取请求搁置,同时通知所述发送模块再次发送所述cid获取请求;
计次模块,用于设定次数阈值,并记录所述cid获取请求的发送次数,如发送次数超过所述次数阈值,则通知所述发送模块停止发送所述cid获取请求,同时通知所述cid解读模块将搁置的所述hls文件获取请求删除。
进一步地,所述服务器还包括如下部分:
存储模块,用于对所述媒体文件进行缓存,以供所述用户终端根据所述索引文件进行获取使用。
本发明的有益效果如下:本发明提供了一种通过cdn网络获取hls内容的方法及服务器,以文件内容身份标识cid作为请求hls文件的许可标识,将其作为用户终端的hls文件请求信息被cdn节点服务器解读的必要条件;用户终端向cdn节点服务器请求hls文件时,如果请求中携带了cid,则只需要发送一次请求即可实现cdn节点服务器对请求信息的解读;如果请求中未携带cid,则需要将cid补充发送,但同样不需要多次请求来实现这一功能。通过以上设计,有效降低了cdn网络中hls传输过程的复杂程度,减轻了cdn节点处理器处理请求的工作量,提高了信息传输的工作效率和成功率。
附图说明
图1为实施例1所述的一种通过cdn网络获取hls内容的方法的流程图;
图2为实施例2所述的一种通过cdn网络获取hls内容的方法中获取cid的方法流程图;
图3为实施例3所述的一种通过cdn网络获取hls内容的方法中获取hls文件的方法流程图;
图4为实施例4所述的一种通过cdn网络获取hls内容的服务器的结构示意图;
图5为实施例5所述的一种通过cdn网络获取hls内容的服务器的结构示意图。
具体实施方式
下面结合附图和以下实施例对本发明作进一步详细说明。
实施例1
如图1所示,本发明实施例1提供了一种通过cdn网络获取hls内容的方法,包括如下步骤:
s1:用户终端向所述cdn节点服务器发送hls文件获取请求;
s2:所述cdn节点服务器接收所述hls文件获取请求进行解析,判断其中是否携带请求的文件内容身份标识cid,如携带,则根据所述cid查找所述用户终端请求的内容;如未携带,则向所述用户终端发送cid索取请求,所述cdn节点服务器收到所述用户终端发送的所述cid后,再进行查找;
所述cid用来标识所述hls内容的文件包,可看做是用户终端用户请求hls文件的许可标识,所述文件包中包括m3u8索引文件和ts媒体文件。当用户终端发送的hls文件获取请求中未携带cid时,则认为该用户终端未提供许可标识,此时需向用户终端索要cid,以便后续为用户终端提供hls文件;
s3:所述cdn节点服务器对所述cid进行解读,根据其中包含的信息,获取所述hls文件的索引文件,并将所述索引文件发送给所述用户终端;
s4:所述用户终端对所述索引文件进行解析,并向所述cdn节点服务器获取相应的媒体文件进行播放。
hls文件的媒体文件由一系列文件切片组成,所述用户终端获取索引文件后,根据所述索引文件按顺序向所述cdn节点服务器请求媒体文件进行播放。
本实施例中,以文件内容身份标识cid作为请求hls文件的许可标识,将其作为用户终端的hls文件请求信息被cdn节点服务器解读的必要条件;用户终端向cdn节点服务器请求hls文件时,如果请求中携带了cid,则只需要发送一次请求即可实现cdn节点服务器对请求信息的解读;如果请求中未携带cid,则需要将cid补充发送,但同样不需要多次请求来实现这一功能。通过以上设计,有效降低了cdn网络中hls传输过程的复杂程度,减轻了cdn节点处理器处理请求的工作量,提高了信息传输的工作效率和成功率。
实施例2
如图2所示,本实施例2在实施例1的基础上提供了一种通过cdn网络获取hls内容的方法,该实施例2进一步限定了所述步骤s2包括如下步骤:
s2.1:所述cdn节点服务器接收所述hls文件获取请求并进行解析,判断其中是否携带cid;
s2.2:如所述hls文件获取请求中携带有cid,则对所述cid进行识别,并查找所述cid指向的内容;
s2.3:如所述hls文件获取请求中未携带cid,则将所述hls文件获取请求搁置,并向所述用户终端发送cid获取请求,索要所述cid;所述cdn节点服务器接收到所述cid后,对所述cid进行识别,并查找所述cid指向的内容。
由于cid是hls文件获取请求被cdn节点服务器解读的必要条件,因此当用户终端发送的hls文件获取请求中未携带cid时,cdn节点服务器需要提醒用户终端补充发送cid。所述步骤s2.3中,向所述用户终端发送cid获取请求的具体方法如下:
s2.3.1:设置一个时间阈值;
s2.3.2:所述cdn节点服务器向所述用户终端,发送cid获取请求,并从发送时开始计时,如所述用户终端超过所述时间阈值的时长时仍未作出响应,则再次发送所述cid获取请求;
为避免由于网络故障等客观原因造成用户终端无法接收cid获取请求、或cdn节点服务器无法接受cid,导致hls文件获取请求无法被正常解读,cdn节点服务器设置一个时间阈值,按照时间阈值重复发送cid获取请求,以保证用户终端与cdn节点服务器的通信畅通;
s2.3.3:设置一个次数阈值,当所述cdn节点服务器发送所述cid获取请求的次数达到所述次数阈值时,则认定所述用户终端不再请求获取hls文件,此时停止发送所述cid获取请求,并将搁置的所述hls文件获取请求删除。
为避免多次重复发送cid获取请求增加工作量,cdn节点服务器设置一个次数阈值,超过该次数阈值即认为用户终端不再请求获取hls文件,此时即停止发送,以减少无效的操作增加cdn节点服务器的负荷。
实施例3
如图3所示,本实施例3在实施例1的基础上提供了一种通过cdn网络获取hls内容的方法,该实施例3进一步限定了所述步骤s3的具体方法如下:
所述cdn节点服务器对所述cid进行解读,获取其中包含的hls索引信息;所述cdn节点服务器根据所述hls索引信息,查找所述hls文件的索引文件,并发送给所述用户终端。
所述步骤s4的具体方法如下:
所述用户终端接收所述索引文件并进行解析,然后根据所述索引文件的信息,按顺序向所述cdn节点服务器请求媒体文件进行播放。
所述cdn节点服务器查找所述索引文件时,首先在本地进行检索,查看是否有相应内容,如果有,则将所述索引文件发送给所述用户终端;如果没有,则在网络内进行查找,并将查找到的内容索引文件发回给所述用户终端,同时所述索引文件对应的媒体文件储存在本地。
实施例4
如图4所示,本实施例4提供了一种通过cdn网络获取hls内容的服务器,包括如下部分:
接收模块1,用于接收用户终端发送的hls文件获取请求以及文件内容身份标识cid;
cid解读模块2,用于判断所述hls文件获取请求中是否携带cid,如携带,则对所述cid进行解读;如未携带,则将所述hls文件获取请求搁置,并通知发送模块4向所述用户终端发送cid索取请求;
查找模块3,用于查找所述用户终端请求获取的hls文件的索引文件和媒体文件;
发送模块4,用于向所述用户终端发送cid获取请求以及hls文件的索引文件和媒体文件。
接收模块1接收用户终端发送的hls文件,交由cid解读模块2解读其中的cid;如hls文件并未携带cid,则由发送模块4向用户终端发送cid获取请求,用户终端发送的cid仍由接收模块1接收,并再次交给cid解读模块2进行解读;查找模块3根据解读出的信息查找hls文件的索引文件,由发送模块4发送给用户终端,用户终端根据索引文件请求媒体文件,仍由发送模块4发给用户终端。通过上述流程,使用户终端完成了对hls文件的获取。
实施例5
如图5所示,本实施例5在实施例4的基础上提供了一种通过cdn网络获取hls内容的服务器,该实施例5进一步限定了所述服务器还包括如下部分:
计时模块5,用于设定时间阈值,并从所述cid获取请求发送时开始计时,如所述用户终端超过所述时间阈值的时长仍未作出回应,则通知所述cid解读模块2将所述hls文件获取请求搁置,同时通知所述发送模块4再次发送所述cid获取请求;
计次模块6,用于设定次数阈值,并记录所述cid获取请求的发送次数,如发送次数超过所述次数阈值,则通知所述发送模块4停止发送所述cid获取请求,同时通知所述cid解读模块2将搁置的所述hls文件获取请求删除;
计时模块5定时通知发送模块4重新发送cid获取请求,以保证服务器与用户终端之间通信畅通,计次模块6控制cid获取请求的发送次数,避免过多的无效操作增加服务器的负荷,通过二者的配合实现向用户终端索取cid的最佳处理;
存储模块7,用于对所述媒体文件进行缓存,以供所述用户终端根据所述索引文件进行获取使用。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。