自适应流媒体的播放方法、系统及客户端与流程

文档序号:19347278发布日期:2019-12-06 21:00阅读:146来源:国知局
自适应流媒体的播放方法、系统及客户端与流程

本公开涉及流媒体技术领域,尤其是一种自适应流媒体的播放方法、系统及客户端。



背景技术:

自适应流媒体技术,例如httplivestreaming(hls),是近年来互联网上新出现的一种流媒体技术,目前已得到了广泛的应用。hls是将视频内容切割为多个短小的传输流(transportstream,ts)分片,例如10秒/个。

一个完整的hls节目通常包含数百个分片,并通过m3u8格式的索引文件保存每个分片的统一资源定位符(uniformresourelocator,url)地址、时长等关键信息。

图1示出了一个典型的hls节目结构。在图1中,index.m3u8是索引文件。该hls节目包含001.ts~100.ts共计100个分片,其中http://hls.com/20170802/001.ts?id=mdaxlnrzpzewljau是第一个分片001.ts的完整url地址。分片的url地址例如可以包括域名(hls.com)、目录(20170802/)、文件名(001.ts)以及防盗链校验(id=mdaxlnrzpzewljau)等校验信息。



技术实现要素:

发明人注意到,所有分片的url在索引文件中均为明文显示,安全性较差,一旦被破解,所有分片均会被非法窃取。另外,对于实时生成分片的url的场景(例如hls直播),客户端每次播放一个新的分片时,均需要从服务器下载新的索引文件,增加了客户端和服务器的开销。

本公开实施例提供一种自适应流媒体的播放方案,能够提高流媒体的安全性,并且能够减小客户端和服务器的开销。

根据本公开实施例的一方面,提供一种自适应流媒体的播放方法,包括:客户端从服务器下载流媒体的第i索引文件,所述流媒体包括m个分片,所述第i索引文件包括所述m个分片中的前i个分片的url地址,1≤i≤n<m;客户端根据第i个分片的url地址,获取第i个分片的内容并播放;客户端根据第j个分片的内容携带的第j+1个分片的url地址,获取第j+1个分片的内容并播放,n≤j≤m-1。

在一些实施例中,第j个分片包括多个数据包,第j+1个分片的url地址位于第j个分片的任意一个数据包的有效载荷中。

在一些实施例中,第j+1个分片的url地址位于第j个分片的第k个数据包的有效载荷中,其中,对于不同的j来说,k的值均相同。

在一些实施例中,k=1。

在一些实施例中,n=1。

根据本公开实施例的另一方面,提供一种客户端,包括:下载模块,用于从服务器下载流媒体的第i索引文件,所述流媒体包括m个分片,所述第i索引文件包括所述m个分片中的前i个分片的url地址,1≤i≤n<m;和播放模块,用于根据第i个分片的url地址,获取第i个分片的内容并播放;根据第j个分片的内容携带的第j+1个分片的url地址,获取第j+1个分片的内容并播放,n≤j≤m-1。

在一些实施例中,第j个分片包括多个数据包,第j+1个分片的url地址位于第j个分片的任意一个数据包的有效载荷中。

在一些实施例中,第j+1个分片的url地址位于第j个分片的第k个数据包的有效载荷中,其中,对于不同的j来说,k的值均相同。

在一些实施例中,k=1。

在一些实施例中,其中,n=1。

根据本公开实施例的又一方面,提供一种客户端,包括:存储器;以及耦接至所述存储器的处理器,所述处理器被配置为基于存储在所述存储器的指令执行上述任意一个实施例所述的方法。

根据本公开实施例的再一方面,提供一种自适应流媒体的播放系统,包括:上述任意一个实施例所述的客户端;和服务器,用于生成流媒体的第i个分片,并生成第i索引文件,所述流媒体包括m个分片,所述第i索引文件包括所述m个分片中的前i个分片的url地址,1≤i≤n<m;将第j+1个分片的url地址写入第j个分片的内容中,n≤j≤m-1。

根据本公开实施例的还一方面,提供一种计算机可读存储介质,其上存储有计算机程序指令,该指令被处理器执行时实现上述任意一个实施例所述的方法。

本公开实施例中,索引文件中只包含前n个分片的url地址,即便索引文件被窃取,也不会导致流媒体的所有分片内容均被窃取,提高了流媒体的安全性。另外,客户端在获取第n个分片之后的分片时,无需从服务器再下载更新后的索引文件,只需要根据前一个分片的内容中携带的url地址来获取下一个分片的内容,降低了客户端和服务器的开销。

下面通过附图和实施例,对本公开的技术方案做进一步的详细描述。

附图说明

为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1示出了一个典型的hls节目结构;

图2是根据本公开一些实施例的自适应流媒体方法的流程示意图;

图3是根据本公开一些实施例的索引文件与现有索引文件的对比示意图;

图4是根据本公开一些实施例的url地址所在位置的示意图;

图5是根据本公开一些实施例的客户端的结构示意图;

图6是根据本公开另一些实施例的客户端的结构示意图;

图7是根据本公开又一些实施例的客户端的结构示意图;

图8是根据本公开一些实施例的自适应流媒体系统的结构示意图。

具体实施方式

下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。

除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本公开的范围。

同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。

对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为授权说明书的一部分。

在这里示出和讨论的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它示例可以具有不同的值。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。

图2是根据本公开一些实施例的自适应流媒体方法的流程示意图。

在步骤202,客户端从服务器下载流媒体的第i索引文件。

这里,流媒体一共包括m个分片,也可以称为ts分片。第i索引文件包括m个分片中的前i个分片的url地址,且1≤i≤n<m。应理解,m、n、i和下面提到的j均为正整数。

在步骤204,客户端根据第i个分片的url地址,获取第i个分片的内容并播放。

假设m=100,n=20,1≤i≤20。对于前20个分片来说,客户端在获取第i个分片的内容前,需要从服务器下载第i索引文件,然后根据第i索引文件中的第i个分片的url地址来获取第i个分片的内容。

在步骤206,客户端根据第j个分片的内容携带的第j+1个分片的url地址,获取第j+1个分片的内容并播放,n≤j≤m-1。

对于第20至第100个分片来说,相邻的两个分片中的前一个分片的内容携带下一个分片的url地址,故客户端可以直接从前一个分片的内容获取下一个分片的url地址,进而获取下一个分片的内容。

在一些实施例中,第j个分片包括多个数据包(packet),第j+1个分片的url地址位于第j个分片的任意一个数据包的有效载荷(payload)中。

考虑到不同分片的数据包的数量可能不同,在一些实施例中,为了确保客户端能够连续获取到分片,可以将后一个分片的url地址均设置在前一个分片的第k个数据包的有效载荷中。这里,对于不同的j来说,k均为相同的值。例如,k可以为1、2、3等。特别地,k可以为1,即,第j+1个分片的url地址可以位于第j个分片的第1个数据包的有效载荷中。

上述实施例中,索引文件中只包含前n个分片的url地址,即便索引文件被窃取,也不会导致流媒体的所有分片内容均被窃取,提高了流媒体的安全性。另外,客户端在获取第n个分片之后的分片时,无需从服务器再下载更新后的索引文件,只需要根据前一个分片的内容中携带的url地址来获取下一个分片的内容,降低了客户端和服务器的开销。

为了进一步提升流媒体的安全性,并进一步降低客户端和服务器的开销,上述n的取值可以为1。这种情况下,客户端只需要在获取第一个分片的内容时从服务器下载索引文件。从第2个分片开始,客户端直接从前一个分片的内容中解析出下一个分片的url地址,进而根据提取到的ulr地址连续获取下一个分片的内容。

图3是根据本公开一些实施例的索引文件与现有索引文件的对比示意图。该示例中,索引文件可以为m3u8索引文件。

从图3可以看出,现有的索引文件中包含流媒体的所有分片的url地址,而本申请的索引文件只包含部分分片的url地址,例如,仅包含第一个分片的url地址。

图4是根据本公开一些实施例的url地址所在位置的示意图。

如图4所示,流媒体共有100个分片,分别为001.ts、002.ts….100.ts。每个分片包括头文件和有效载荷,头文件的大小例如为4字节,有效载荷的大小例如为184字节。有效载荷中可以填充视频、音频、文本等其他内容。除第100个分片100.ts外,第1至第99个分片的第一个数据包(数据包1)中的有效载荷中均携带下一个分片的url地址。

本说明书中各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似的部分相互参见即可。对于客户端实施例而言,由于其与方法实施例基本对应,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

图5是根据本公开一些实施例的客户端的结构示意图。如图5所示,客户端包括下载模块501和播放模块502。

下载模块501用于从服务器下载流媒体的第i索引文件,流媒体包括m个分片,第i索引文件包括m个分片中的前i个分片的url地址,1≤i≤n<m。在某些实施例中,n=1。

播放模块502用于根据第i个分片的url地址,获取第i个分片的内容并播放;根据第j个分片的内容携带的第j+1个分片的url地址,获取第j+1个分片的内容并播放,n≤j≤m-1。

上述实施例中,索引文件中只包含前n个分片的url地址,即便索引文件被窃取,也不会导致流媒体的所有分片内容均被窃取,提高了流媒体的安全性。另外,客户端在获取第n个分片之后的分片时,无需从服务器再下载更新后的索引文件,只需要根据前一个分片的内容中携带的url地址来获取下一个分片的内容,降低了客户端和服务器的开销。

在一些实现方式中,第j个分片包括多个数据包,第j+1个分片的url地址位于第j个分片的任意一个数据包的有效载荷中。为了进一步提高流媒体分片的安全性,并进一步降低服务器的开销,第j+1个分片的url地址位于第j个分片的第k个数据包的有效载荷中,对于不同的j来说,k的值均相同。在某些实施例中,k可以为1。

图6是根据本公开另一些实施例的客户端的结构示意图。如图6所示,该实施例的客户端包括存储器601和处理器602。存储器601可以是磁盘、闪存或其它任何非易失性存储介质。存储器601用于存储前述任意一个实施例的方法对应的指令。处理器602耦接至存储器601,可以被实施为一个或多个集成电路,例如微处理器或微控制器。处理器602用于执行存储器601中存储的指令。

图7是根据本公开又一些实施例的客户端的结构示意图。如图7所示,该实施例的客户端700包括存储器701和处理器702。处理器702通过总线(bus)703耦合至存储器701。该客户端700还可以通过存储接口704连接至外部存储装置705以便调用外部数据,还可以通过网络接口706连接至网络或者外部计算机系统(未示出)。

图8是根据本公开一些实施例的自适应流媒体系统的结构示意图。如图8所示,该实施例的系统包括上述任意一个实施例的客户端801和服务器802。服务器802用于生成流媒体的第i个分片,并生成第i索引文件,流媒体包括m个分片,第i索引文件包括m个分片中的前i个分片的url地址,1≤i≤n<m;将第j+1个分片的url地址写入第j个分片的内容中,n≤j≤m-1。

上述实施例中,索引文件中只包含前n个分片的url地址,即便索引文件被窃取,也不会导致流媒体的所有分片内容均被窃取,提高了流媒体的安全性。另外,客户端在获取第n个分片之后的分片时,无需从服务器再下载更新后的索引文件,只需要根据前一个分片的内容中携带的url地址来获取下一个分片的内容,降低了系统的开销。

本公开还提供了一种计算机可读存储介质,其上存储有计算机程序指令,该指令被处理器执行时实现前述任意一个实施例的方法的步骤。

本公开提供的流媒体的播放方案适于但不限于采用hls的自适应流媒体,尤其适于对版权保护和系统性能有较高要求的平台和系统。另外,可以无需改动网络和硬件设备即可实现本公开的方案,例如,可以仅对客户端和服务器进行软件改进。当然,本公开不限于此。

本领域内的技术人员应明白,本公开的实施例可提供为方法、装置、或计算机程序产品。因此,本公开可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本公开可采用在一个或多个其中包含有计算机可用程序代码的计算机可用非瞬时性存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本公开是参照根据本公开实施例的方法、设备(系统)和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

至此,已经详细描述了本公开。为了避免遮蔽本公开的构思,没有描述本领域所公知的一些细节。本领域技术人员根据上面的描述,完全可以明白如何实施这里公开的技术方案。

虽然已经通过示例对本公开的一些特定实施例进行了详细说明,但是本领域的技术人员应该理解,以上示例仅是为了进行说明,而不是为了限制本公开的范围。本领域的技术人员应该理解,可在不脱离本公开的范围和精神的情况下,对以上实施例进行修改。本公开的范围由所附权利要求来限定。

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