一种HTTP实时流媒体HLS文件的发送方法及装置与流程

文档序号:14915113发布日期:2018-07-11 00:30阅读:340来源:国知局

本发明涉及HTTP实时流媒体文件播放技术,具体而言,涉及一种HTTP实时流媒体HLS文件的发送方法及装置。



背景技术:

HTTP直播流协议(HTTP Live Streaming,简称为HLS)是苹果公司提出的实时流媒体传输协议,可实现流媒体的直播、点播、时移、回看等功能,目前越来越多的内容提供商和运营商,采用HLS协议为用户提供视频服务。

目前,为了给用户提供优质流畅的视频服务,通常有两种做法:(1)流媒体服务器提前把片源切成固定的,具有不同码率的分片,客户端根据用户的屏幕分辨率、网络环境等因素,去决定请求那种码率的分片。(2)流媒体服务器不提前切分片,用户请求到来时候,根据发送给用户的码流的传输速率等参数来调整需要切片的分片的码率。在通常情况下,服务端的网络性能好,网络发送速度快,客户端的网络性能差,网络接收速度慢,因此服务端即使发送的很快,也需要等待客户端的缓慢接收。而服务端无法根据客户端的实际情况进行调节其发送文件码流的速率,造成了服务端资源的浪费,目前尚未提出有效的解决方案。



技术实现要素:

本发明的实施例提供了一种HTTP实时流媒体HLS文件的发送方法及装置,以至少解决相关技术中,服务端无法根据客户端的实际情况进行调节其发送文件码流的速率,造成了服务端资源的浪费的问题。

根据本发明实施例的一个方面,提供了一种HTTP实时流媒体HLS文件的发送方法,可以包括:获取待发送的传输流TS分片文件的码率值;根据所述码率值确定所述待发送的TS分片文件的发送速率;根据所述发送速率发送所述TS分片文件。

进一步地,获取待发送的传输流TS分片文件的码率值,还可以包括:获取并发送m3u8文件,其中,所述m3u8文件用于描述所述待发送的TS分片文件;根据所述m3u8文件获取所述待发送的TS分片文件的码率值。

进一步地,根据所述m3u8文件获取所述TS分片文件的码率值,还可以包括:所述m3u8文件的格式为单码率的情况下,获取所述待发送的TS文件的大小和时长;根据所述待发送的TS文件的大小和时长计算所述TS分片文件的码率值。

进一步地,根据所述m3u8文件获取所述TS分片文件的码率值,包括:所述m3u8文件的格式为多码率的情况下,获取所述m3u8文件中的所述待发送的TS分片文件所对应的BANDWIDTH的值,并确定为所述TS分片文件的码率值。

进一步地,以上实施例中的根据所述码率值确定所述待发送的TS分片文件的发送速率,还可以包括:根据服务端和客户端的网络情况设置至少一个码率调整参数,根据所述码率值和所述码率调整参数计算,并得到所述TS分片文件的发送速率。

根据本发明实施例的另一方面,提供了一种HTTP实时流媒体HLS文件的发送装置,该装置可以包括:获取模块,用于获取待发送的传输流TS分片文件的码率值;确定模块,根据所述码率值确定所述待发送的TS分片文件的发送速率;发送模块,用于根据所述发送速率发送所述TS分片文件。

进一步地,所述获取模块还可以包括:第一获取单元,用于获取并发送m3u8文件,其中,所述m3u8文件用于描述所述待发送的TS分片文件;第二获取单元,用于根据所述m3u8文件获取所述待发送的TS分片文件的码率值。

进一步地,所述第二获取单元还可以用于:所述m3u8文件的格式为单码率的情况下,获取所述待发送的TS文件的大小和时长;根据所述待发送的TS文件的大小和时长计算所述TS分片文件的码率值;或者,所述m3u8文件的格式为多码率的情况下,获取所述m3u8文件中的所述待发送的TS分片文件所对应的BANDWIDTH的值,并确定为所述TS分片文件的码率值。

进一步地,所述确定模块还可以用于:根据服务端和客户端的网络情况设置至少一个码率调整参数,根据所述码率值和所述码率调整参数计算,并得到所述TS分片文件的发送速率。

根据本发明的另一个实施例,还可以提供一种流媒体服务器,该流媒体服务器可以包括如上所述的任意一种装置。

通过本发明及实施例,采取获取待发送的传输流TS分片文件的码率值;根据所述码率值确定所述待发送的TS分片文件的发送速率;根据所述发送速率发送所述TS分片文件的技术方案,可以解决了相关技术中存在的,服务端无法根据客户端的实际情况进行调节其发送文件码流的速率,造成了服务端资源的浪费的问题,实现了服务器端可以根据客户端实际请求进行发送流媒体文件码率的发送速率,节约了服务端资源,提高了服务端的服务能力。

附图说明

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

图1是根据本发明实施例的一种HLS文件的发送方法的流程示意图;

图2是根据本发明实施例的一种HLS文件的发送装置的结构框图;

图3是根据本发明优选实施例的一种HLS文件的发送装置的结构框图;

图4是根据本发明优选实施例的一种HLS文件的发送方法的流程示意图。

具体实施方式

下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。

图1是根据本发明实施例的一种HLS文件的发送方法的流程示意图。如图1所示,该流程可以包括如下步骤:

步骤S100,获取待发送的传输流TS分片文件的码率值;

步骤S102,根据所述码率值确定所述待发送的TS分片文件的发送速率;

步骤S104,根据所述发送速率发送所述TS分片文件。

通过采用图1所示的方法,服务端可以根据用户端请求流媒体文件的码率,确定发送该文件的发送速率。采用该技术方案,可以解决相关技术中存在的,相关技术中存在的,服务端无法根据客户端的实际情况进行调节其发送文件码流的速率,造成了服务端资源的浪费的问题,实现了服务器端可以根据客户端实际请求进行发送流媒体文件码率的发送速率,节约了服务端资源,提高了服务端的服务能力。

在该实施例中,发送HLS文件的方法在获取待发送的传输流TS分片文件的码率值时,可以有多种实现方式。其中一种就是采取获取并发送m3u8文件,其中,所述m3u8文件用于描述所述待发送的TS分片文件;根据所述m3u8文件获取所述待发送的TS分片文件的码率值的技术方案。TS分片文件有对应的m3u8索引文件,而m3u8索引文件是用来索引其对应的TS分片文件的,它可以包含许多描述该TS文件的信息,服务端可以通过分析这些描述信息,从而获取该TS文件的码率值。

在进一步地实施方式中,TS分片文件有多种码率,其对应的m3u8索引文件也是有不同的码率格式的。因此根据m3u8文件获取其对应的TS分片文件的码率值,也是需要根据m3u8文件的格式采取不同的技术手段的。例如:在m3u8文件的格式为单码率的情况下,获取所述待发送的TS文件的大小和时长;根据所述待发送的TS文件的大小和时长计算所述TS分片文件的码率值。另外一种情况是,所述m3u8文件的格式为多码率的情况下,获取所述m3u8文件中的所述待发送的TS分片文件所对应的BANDWIDTH的值,并确定为所述TS分片文件的码率值。

在m3u8索引文件格式是单码率的情况下,服务端是无法直接获取该对应的TS文件的码率值的,需要进一步解析m3u8索引文件描述TS文件的信息,得到TS文件的文件大小和文件时长,根据计算公式可以得到该TS文件的码率值。单码率格式的m3u8是不包含码率信息的,因此需要这样计算:假设文件的大小是S,文件的播放时长是T,则该文件的码率V是:码率V=S/T。该计算公式也使用于普通的vod大文件利用文件大小除以文件时长。

在m3u8索引文件是多码率的情况下,服务端可以不需要通过TS文件大小和文件时长进行计算得到码率值;而是通过分析m3u8索引文件的内容信息,多码率格式的m3u8文件的其中的标签EXT-X-STREAM-INF中有BANDWIDTH属性,BANDWIDTH属性值就代表对应的子m3u8文件中的ts文件的码率,因此服务端解析该多码率格式的m3u8就可以得到对应的TS文件的码率值V=BANDWIDTH。

此外,在本发明的实施例中,为了进一步优化服务端的服务能力,进一步地提高服务端的服务能力,以上HLS文件的发送方法中根据所述码率值确定所述待发送的TS分片文件的发送速率均可以采用如下技术手段,例如根据服务端和客户端的网络情况设置至少一个码率调整参数,根据所述码率值和所述码率调整参数计算,并得到所述TS分片文件的发送速率。举例说明,服务端的网速较好、或者同一时间段请求流媒体服务的客户端数量较少、或者客户端的网速较好,可以根据经验值设置一个大于1的阀门。根据这个阀门和TS文件的码率值的乘积,得到发送该TS文件的发送速率,而该发送速率必然是大于该码率值。当然同理可以得到,服务端的网速差、或者同一时间段请求流媒体服务的客户端数量较多、或者客户端的网速较差,该阀门可以设置为大于0而小于1的小数,得到的发送速率必然是小于TS文件码率值。这样通过实际情况设置一个阀门,可以更有效地控制服务端发送TS文件码率的速率,进一步地优化服务端的服务能力。

图2是根据本发明实施例的一种HLS文件发送的装置的结构框图,如图2所示,该装置可以包括获取模块20、确定模块22、发送模块24。下面对该装置进行说明。

获取模块20,可以用于获取待发送的传输流TS分片文件的码率值;

确定模块22,与获取模块22连接,可以用于根据所述码率值确定所述待发送的TS分片文件的发送速率;

发送模块24,与确定模块22连接,可以用于根据所述发送速率发送所述TS分片文件。

通过本实施例提供的装置,服务端可以根据用户端请求流媒体文件的码率,确定发送该文件的发送速率。采用该技术方案,可以解决相关技术中存在的,相关技术中存在的,服务端无法根据客户端的实际情况进行调节其发送文件码流的速率,造成了服务端资源的浪费的问题,实现了服务器端可以根据客户端实际请求进行发送流媒体文件码率的发送速率,节约了服务端资源,提高了服务端的服务能力。

在该实施例中,获取模块20还可以包括:第一获取单元,用于获取并发送m3u8文件,其中,所述m3u8文件用于描述所述待发送的TS分片文件;第二获取单元,用于根据所述m3u8文件获取所述待发送的TS分片文件的码率值。TS分片文件有对应的m3u8索引文件,而m3u8索引文件是用来索引其对应的TS分片文件的,它可以包含许多描述该TS文件的信息,服务端可以通过分析这些描述信息,从而获取该TS文件的码率值。

进一步地,第二获取单元还可以用于:所述m3u8文件的格式为单码率的情况下,获取所述待发送的TS文件的大小和时长;根据所述待发送的TS文件的大小和时长计算所述TS分片文件的码率值;或者,所述m3u8文件的格式为多码率的情况下,获取所述m3u8文件中的所述待发送的TS分片文件所对应的BANDWIDTH的值,并确定为所述TS分片文件的码率值。

在该实施方式中,TS分片文件有多种码率,其对应的m3u8索引文件也是有不同的码率格式的。因此根据m3u8文件获取其对应的TS分片文件的码率值,也是需要根据m3u8文件的格式采取不同的技术手段的。在m3u8索引文件格式是单码率的情况下,服务端是无法直接获取该对应的TS文件的码率值的,需要进一步解析m3u8索引文件描述TS文件的信息,得到TS文件的文件大小和文件时长,根据计算公式可以得到该TS文件的码率值。单码率格式的m3u8是不包含码率信息的,因此需要这样计算:假设文件的大小是S,文件的播放时长是T,则该文件的码率V是:码率V=S/T。该计算公式也使用于普通的vod大文件利用文件大小除以文件时长。在m3u8索引文件是多码率的情况下,服务端可以不需要通过TS文件大小和文件时长进行计算得到码率值;而是通过分析m3u8索引文件的内容信息,多码率格式的m3u8文件的其中的标签EXT-X-STREAM-INF中有BANDWIDTH属性,BANDWIDTH属性值就代表对应的子m3u8文件中的ts文件的码率,因此服务端解析该多码率格式的m3u8就可以得到对应的TS文件的码率值V=BANDWIDTH。

此外,在本发明的实施例中,为了进一步优化服务端的服务能力,进一步地提高服务端的服务能力,以上HLS文件的发送装置还可以包括用于:根据服务端和客户端的网络情况设置至少一个码率调整参数,根据所述码率值和所述码率调整参数计算,并得到所述TS分片文件的发送速率。服务端的网速较好、或者同一时间段请求流媒体服务的客户端数量较少、或者客户端的网速较好,可以根据经验值设置一个大于1的阀门。根据这个阀门和TS文件的码率值的乘积,得到发送该TS文件的发送速率,而该发送速率必然是大于该码率值。当然同理可以得到,服务端的网速差、或者同一时间段请求流媒体服务的客户端数量较多、或者客户端的网速较差,该阀门可以设置为大于0而小于1的小数,得到的发送速率必然是小于TS文件码率值。这样通过实际情况设置一个阀门,可以更有效地控制服务端发送TS文件码率的速率,进一步地优化服务端的服务能力。

本发明的实施例还可以提供一种流媒体服务器,该流媒体服务器可以上文实施例中所示的HLS文件发送装置,例如包含图2所示的HLS文件发送的装置及其模块。

下面再结合具体实施例对本发明进行说明。

图3是根据本发明优选实施例的一种HLS文件发送装置的结构框图。如图3所示,该装置可以包括:码率计算模块30、码流发送模块32。

码率计算模块30,主要用于获取客户端请求的媒体文件的码率信息,可以实现上文实施例中的获取模块20同样或类似的功能。

码率发送装置32,与码率计算模块30连接,主要用于根据发送速率发送客户端请求的流媒体文件,可以实现上文实施例中的确定模块22、发送模块23同样或类似的功能。

在通常情况下,服务端的网络性能好,网络发送速度快,客户端的网络性能差,网络接收速度慢,因此服务端即使发送的很快,也需要等待客户端的缓慢接收。而服务端是尽可能地提供流媒体文件服务,这对服务端的服务能力和资源是一种极大地浪费。相关技术中还未有效地解决方案。本发明的优选实施李采用的技术方案的HLS文件发送装置可以包括:码率计算模块30、码流发送模块32。

1、码率计算模块30主要作用是获取用户请求的媒体文件的码率信息,根据m3u8文件的格式可以分成单码率和多码率2种情况,下面详细介绍单码率和多码率2种不同格式情况下的码率计算方法:

(1)单码率格式的m3u8文件的码率计算方法。单码率格式的m3u8文件样例,如下:

单码率格式的m3u8是不包含码率信息的,因此需要这样计算:

假设文件的大小是S,文件的播放时长是T,则该文件的码率V是:码率V=S/T。该计算公式也使用于普通的vod大文件

(2)多码率格式的m3u8文件的码率计算方法,多码率格式的m3u8文件样例,如下:

多码率格式的m3u8文件的其中的标签EXT-X-STREAM-INF中有BANDWIDTH属性,BANDWIDTH属性值就代表对应的子m3u8文件中的ts文件的码率,因此就有:码率V=BANDWIDTH

2、码流发送模块32。在码流发送模块32上首先根据网络的情况需要设置一个发送倍数M,该值是可配置的,例如,码率发送倍数是1倍或者2倍,然后从码率计算模块30获取到媒体文件的码率V,则码流的发送速度speed是:speed=V*M

最后,码流发送模块32就根据speed的值控制码流的发送速度。

因此,通过本发明优选实施例提供的装置,服务端可以根据用户端请求流媒体文件的码率,确定发送该文件的发送速率。采用该技术方案,可以解决相关技术中存在的,相关技术中存在的,服务端无法根据客户端的实际情况进行调节其发送文件码流的速率,造成了服务端资源的浪费的问题,实现了服务器端可以根据客户端实际请求进行发送流媒体文件码率的发送速率,节约了服务端资源,提高了服务端的服务能力。

图4是根据本发明实施例的一种HLS文件的发送方法的流程示意图。下面结合图4,对本发明的优选实施例的方法流程进行说明:

步骤S400,用户端请求m3u8服务;

客户端想服务端请求播放媒体文件服务,服务器接收该用户请求,用户请求指示到所请求的TS文件对应的m3u8索引文件。

步骤S402,判断是单码率还是多码率;

m3u8文件是用于描述其对应的TS分片文件的。服务端可以判断用户请求的m3u8索引文件的格式,并根据m3u8的格式决定执行的方法流程。m3u8索引文件根据对应的TS文件可以是单码率格式,也可以是多码率格式。

在m3u8格式为单码率的情况下,执行步骤S404;或者在m3u8格式为多码率的情况下,执行步骤S406。

步骤S404,根据TS文件大小和文件时长,计算TS文件的码率;

在m3u8格式为单码率的情况下,服务端无法直接地获取对应的TS文件的码率。服务端可以根据m3u8文件得到TS文件的时长和大小,根据文件大小除以文件时长,可以得到TS文件的码率。

步骤S406,根据bandwidth标签获取该TS文件的码率;

在m3u8格式为多码率的情况下,m3u8索引文件可以直接描述其对应的TS分片文件的码率。服务端解析得到m3u8中的bandwidth值,该bandwidth值可以直接表征对应的TS文件的码率值。

在步骤S404\或步骤S406之后,得到TS文件的码率,均可以执行步骤408。

步骤S408,根据该TS文件的码率和预设计算规则,计算码流的发送速率;

服务端最终选择使用的发送文件的发送速率可以有多种方式,根据TS文件码率和预设规则是本发明优选实施例提出的。其中可以根据服务端和客户端的网络情况设置至少一个码率调整参数,根据所述码率值和所述码率调整参数计算,并得到所述TS分片文件的发送速率。服务端的网速较好、或者同一时间段请求流媒体服务的客户端数量较少、或者客户端的网速较好,可以根据经验值设置一个大于1的阀门。根据这个阀门和TS文件的码率值的乘积,得到发送该TS文件的发送速率,而该发送速率必然是大于该码率值。当然同理可以得到,服务端的网速差、或者同一时间段请求流媒体服务的客户端数量较多、或者客户端的网速较差,该阀门可以设置为大于0而小于1的小数,得到的发送速率必然是小于TS文件码率值。

步骤S410,服务端根据该发送速率进行发送TS文件的码率。

采取本优选实施例,可以实现控制服务端发送TS文件码率的速率,优化服务端的服务能力,提供服务端资源的有效利用率。

实例一,m3u8索引文件格式为单码率的情况。

HLS单码率的内容实例如下

步骤一,用户先请求该m3u8,由于m3u8文件较小,不需要限速,服务器可以直接返回客户端请求的m3u8文件。

m3u8相当于“索引”。HLS,Http Live Streaming是由Apple公司定义的用于实时流传输的协议,HLS基于HTTP协议实现,传输内容包括两部分,一是M3U8描述文件,二是TS媒体文件。

步骤二,用户根据返回的m3u8,解析其中的ts信息,继续请求1.ts,请求服务器传输流(TS)分片文件。

m3u8文件可以用来描述对应的TS分片小文件的信息。

步骤三,服务器端收到1.ts请求,获取到时长为10s;

步骤四,获取1.ts文件的大小,假设是2MB;

服务端根据m3u8文件的描述信息,可以获取其对应TS分片文件的文件大小和时长。

步骤五,假设获取发送倍数是2倍(可配置),计算出1.ts的发送码率是2*2MB/10s=0.4MB/s;

可以根据经验值设置一个服务端发送流媒体文件的变量值,例如在ts文件码率值基础之上乘以倍数2。在本优选实施方式中,单码率m3u8对应的TS文件的码率为2MB/10s=0.2MB/s。根据计算公式,最后得到的发送速率为v=0.2MB/s*倍数2=0.4MB/s。

步骤6:服务器按照0.4MB/s这个速率进行码流的发送其请求的1.ts文件;

步骤7:用户端请求其他的TS分片文件,可以重复上述步骤一至步骤六。

实例二,m3u8文件格式为多码率的情况。

HLS多码率的内容实例如下

一级m3u8内容是

1.m3u8内容是

2.m3u8、3.m3u8内容类似。具体实现步骤如下:

步骤一,用户先请求一级m3u8,由于m3u8文件较小,服务端不需要限速,直接返回用户端该一级m3u8;

步骤二,用户根据返回的一级m3u8,解析其中的信息,根据终端的情况选择一种码率进行请求,比如请求的是1.m3u8;

步骤三,服务器端收到1.m3u8请求,由于m3u8文件较小,不需要限速,直接返回;

步骤四,用户获取到1.m3u8,解析其内容,继续发送请求,比如是1_1.ts;

步骤五,服务端收到1_1.ts请求,可以根据一级m3u8内容获取其码率是800b/s;

步骤六,假设获取发送倍数是2倍(可配置),计算出1_1.ts的发送码率是2*800b/s=1600b/s;

步骤七,服务器按照1600b/s这个速率进行码流的发送该1_1.ts文件;

步骤八:用户端继续请求其他的ts,服务端可以重复上述步骤一至步骤七。

实例一和实例二从不同的应用场景描述了本发明优选实施例的实现原理与步骤,通过该优选实施例,可以更有效地控制服务端发送ts流媒体文件速率,进一步地提高流媒体服务器的服务能力。

综上所述,通过上述实施例、优选实施例和实施方式,服务端可以根据用户端请求流媒体文件的码率,确定发送该文件的发送速率。采用该技术方案,可以解决相关技术中存在的,相关技术中存在的,服务端无法根据客户端的实际情况进行调节其发送文件码流的速率,造成了服务端资源的浪费的问题,实现了服务器端可以根据客户端实际请求进行发送流媒体文件码率的发送速率,节约了服务端资源,提高了服务端的服务能力。

显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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