发明内容
有鉴于此,本申请提供一种流媒体的播放方法与播放装置以解决上述问题。
本申请公开了一种流媒体的播放方法,其特征在于,包含:
获取播放器用于播放流媒体的第一请求;
依据所述第一请求从流媒体服务器获取与所述流媒体对应的m3u8文件,其中所述m3u8文件包含媒体文件的URL信息;
解析所述m3u8文件,并对所述m3u8文件进行优化处理;
将优化处理后的所述m3u8文件传送至所述播放器;
获取所述播放器关于所述媒体文件的第二请求;
依据所述第二请求从所述流媒体服务器获取对应的媒体文件;以及
将所述对应的媒体文件传送至所述播放器。
优选地,其中,将所述对应的媒体文件传送至所述播放器的步骤包含:
对所述对应的媒体文件进行优化处理;以及
将优化处理后的所述对应的媒体文件传送至所述播放器。
优选地,其中,对所述对应的媒体文件进行的所述优化处理包含:删除所述对应的媒体文件中的DISCONTINUITY标志及/或修改所述对应的媒体文件的时间戳。
优选地,其中,所述第二请求是所述播放器根据优化处理后的所述m3u8文件中包含的所述URL信息产生的。
优选地,其中,对所述m3u8文件进行的所述优化处理包含:删除所述m3u8文件中的DISCONTINUITY标志及/或调整所述m3u8文件中的时长。
优选地,其中,更包含:
获取所述流媒体的原始地址,并将所述原始地址转换成对应的本地地址;以及
将所述对应的本地地址传送至所述播放器,
其中,所述第一请求是以所述对应的本地地址发出的。
优选地,其中,更包含:
将所述m3u8文件中的URL信息转换成对应的本地地址信息,
其中,所述第二请求是以所述对应的本地地址信息发出的。
优选地,其中,依据所述第二请求从所述流媒体服务器获取对应的媒体文件的步骤包含:
利用CDN调度策略选择与所述第二请求对应的、更加合适的优化地址;以及
依据所述优化地址从所述流媒体服务器获取所述对应的媒体文件。
本申请还公开了一种流媒体的播放装置,其特征在于,包含:
请求处理模块,用于接收来自播放器的用于播放流媒体的第一请求和关于媒体文件的第二请求;
数据收发模块,用于依据所述第一请求获取对应的m3u8文件,以及依据所述第二请求获取所述媒体文件,其中所述对应的m3u8文件包含所述媒体文件的URL信息;以及
优化处理模块,用于对请求参数优化,对所述对应的m3u8文件及/或所述媒体文件进行优化处理;
其中,所述数据收发模块更将所述对应的m3u8文件/优化处理后的所述对应的m3u8文件以及所述媒体文件/优化处理后的所述媒体文件传送至所述播放器。
优选地,其中,所述请求处理模块更获取所述流媒体的原始地址,通过所述优化处理模块将所述原始地址转换成对应的本地地址,以及将所述对应的本地地址通过所述数据收发模块传送至所述播放器,且所述第一请求是以所述对应的本地地址发出的。
优选地,其中,所述优化处理模块更将所述m3u8文件中的URL信息转换成对应的本地地址信息,且所述第二请求是以所述对应的本地地址信息发出的。
与现有技术相比,本申请所述的流媒体的播放方法与播放装置,达到了如下效果:
1)本申请的技术方案可以通过优化处理解决播放器不支持m3u8浮点时长的问题;
2)本申请的技术方案可以通过优化m3u8文件/媒体文件(例如TS碎片)解决播放器画面卡顿及时间进度错误的问题;
3)本申请技术方案还可以通过CDN调度策略选择更加合适的地址以提升播放的流畅度。
当然,实施本申请的任一产品并不一定需要同时达到以上所述的所有技术效果。
具体实施方式
如在说明书及权利要求当中使用了某些词汇来指称特定组件。本领域技术人员应可理解,硬件制造商可能会用不同名词来称呼同一个组件。本说明书及权利要求并不以名称的差异来作为区分组件的方式,而是以组件在功能上的差异来作为区分的准则。如在通篇说明书及权利要求当中所提及的“包含”为一开放式用语,故应解释成“包含但不限定于”。“大致”是指在可接收的误差范围内,本领域技术人员能够在一定误差范围内解决所述技术问题,基本达到所述技术效果。此外,“耦接”一词在此包含任何直接及间接的电性耦接手段。因此,若文中描述一第一装置耦接于一第二装置,则代表所述第一装置可直接电性耦接于所述第二装置,或通过其他装置或耦接手段间接地电性耦接至所述第二装置。说明书后续描述为实施本申请的较佳实施方式,然所述描述乃以说明本申请的一般原则为目的,并非用以限定本申请的范围。本申请的保护范围当视所附权利要求所界定者为准。
图1为现有技术中流媒体播放过程的动作序列示意图,上述播放过程应用于安卓系统下的移动装置。如图1所示,上述流媒体播放过程包含以下动作:
101:播放器首先向流媒体服务器发送播放流媒体的请求(该请求可依据服务器的配置对请求参数进行优化,例如添加”User-Agent”等参数)。上述流媒体服务器可以是远程网络服务器,其可以存储m3u8文件和对应的媒体文件(TS碎片);
102:在接收到所述请求后,远程网络服务器将所述请求中地址对应的m3u8文件传送回播放器,而m3u8文件中包含TS碎片对应的URL地址;
103:在接收到m3u8文件之后,播放器根据m3u8文件携带的URL信息请求欲播放的TS碎片;
104:随后,远程网络服务器根据请求中的URL信息将对应的TS碎片传回播放器,以由播放器进行播放,之后播放器会继续请求下一TS,按照此过程继续处理。
在上述过程中,m3u8文件和媒体文件(TS碎片)的请求与处理全部由播放器来负责,在目前的播放器架构下,无法控制请求参数以及对获取的m3u8文件和媒体文件进行优化处理。
图2为依据本申请一实施例的流媒体播放过程的动作序列示意图。在上述流媒体的播放过程中,除了原本的播放器和流媒体服务器(例如远程网络服务器)之外,本申请的实施例额外提供了一个流媒体的播放装置,其能够控制请求参数及/或在播放器接收到m3u8文件和媒体文件之前对m3u8文件和媒体文件进行优化处理。在此实施例中,上述流媒体的播放装置可以是本地HTTP代理服务器。下文将以本地HTTP代理服务器(以下简称为本地服务器)为例来说明此实施例中流媒体播放过程的动作序列:
201:播放器将请求的流媒体的原始地址发送至本地服务器。上述原始地址是对应于远程网络服务器的地址,也就是依据现有技术的方案向远程网络服务器请求流媒体时的地址;
202:本地服务器将接收到的原始地址转换成本地地址,并将对应的本地地址传送回播放器。在一个实施例中,本地服务器可以在转换完成后建立原始地址与本地地址的映射表,以更方便地完成两者的匹配;
本领域技术人员应可理解,在本实施例的流媒体播放中,上述动作201和202并非是必要的动作。播放器也可以直接以原始地址通过本地服务器向远程网络服务器请求流媒体文件,此亦在本申请所包含的范围之内。
203:依据接收到的本地地址,播放器向本地服务器发送用于播放流媒体的第一请求。在另一实施例中,上述第一请求是以对应的本地地址发出的;
204:依据接收到的第一请求,本地服务器向远程网络服务器(流媒体服务器)发送流媒体请求,以获取对应的流媒体。在另一实施例中,若第一请求是以本地地址发出,则本地服务器可将第一请求中的本地地址替换为原始地址,其替换关系可以依据前文所述的映射表进行;
205:远程网络服务器依据本地服务器的请求,将对应的m3u8文件发送给本地服务器,上述m3u8文件中包含媒体文件(例如TS碎片)的URL地址;
206:本地服务器解析接收到的m3u8文件,并对所述m3u8文件进行优化处理。举例来说,某些播放器可能不支持浮点数时长,则本地服务器可在此处根据需要将时长取整重新写入到m3u8文件中;或者,某些播放器对DISCONTINUITY标志支持不力,本地服务器可在此处将其删去。在另一实施例中,本地服务器还可以对m3u8文件中包含的媒体文件(例如TS碎片)的URL信息进行处理,将其转换成本地地址信息,并将本地地址信息加回至m3u8文件中。之后,本地服务器将优化处理后的m3u8文件传送给播放器;
207:依据接收到的m3u8文件,播放器发送关于媒体文件(例如TS碎片)的第二请求(同样该请求,可依据服务器的配置对请求参数进行优化,例如添加”User-Agent”等参数)至本地服务器。在另一实施例中,若接收到的m3u8文件中包含的是与媒体文件的URL信息对应的本地地址信息,则上述第二请求是以对应的本地地址信息发出的;
208:依据接收到的第二请求,本地服务器向远程网络服务器发送媒体文件请求,以获取对应的媒体文件。在另一实施例中,若上述第二请求包含本地地址信息,则本地服务器会将此本地地址信息依据前文的转换规则转换成对应的URL信息并整合至发送给远程网络服务器的媒体文件请求中。此外,在另一实施例中,本地服务器也可以依据具体的CDN调度策略选择一个更加合适的、对应于上述媒体文件的优化地址,并以所述优化地址请求对应的媒体文件;
209:远程网络服务器依据本地服务器的请求,将对应的媒体文件(例如TS碎片)发送回本地服务器;
210:本地服务器对接收到的媒体文件进行优化处理。举例来说,本地服务器可以删除媒体文件中的DISCONTINUITY标志及/或修改媒体文件的时间戳。之后,本地服务器将优化处理后的媒体文件传送给播放器,以用于播放。
在现有技术中,如果某一媒体文件(例如TS碎片)的请求出错,有些播放器的会一直持续请求,导致无法继续播放,画面会一直显示加载状态。针对上述状况,在本申请的另一实施例中,可以在本地服务器中预先配置最大请求次数,如果超过这个次数,则认为对此媒体文件的请求失败,可跳过此媒体文件并继续请求下一媒体文件。这样,播放器会跳过此媒体文件而继续播放下一个媒体文件,从而提升了用户体验。
在上述201-210的动作中,某些步骤可以省略或者重新组合。例如,步骤201和210可以被省略,而播放器以原始地址通过本地服务器来向远程网络服务器请求流媒体。又例如,本地服务器对m3u8文件和媒体文件的优化处理可以同时或择一的方式进行,即,可以对m3u8文件和媒体文件两者抖进行优化处理,或只对m3u8文件和媒体文件两者之一进行优化处理。若能达到本申请技术方案的基本目的,本申请并不限定上述技术方案的动作数量、顺序以及组合。在遵循本申请的基本精神的前提下,对上述动作所做出的合理调整、删除以及增加都应包含在本申请的范围内。
图3是为依据本申请一实施例的流媒体的播放装置300的方块示意图。如上文所述,本申请实施例中的流媒体的播放装置可以是本地HTTP代理服务器。如图3所示,播放装置300包含以下模块:
请求处理模块301:用于接收来自播放器的用于播放流媒体的第一请求和关于媒体文件的第二请求;
数据收发模块302:用于依据第一请求获取对应的m3u8文件,以及依据第二请求获取媒体文件,其中对应的m3u8文件包含媒体文件的URL信息;以及
优化处理模块303:用于对请求参数优化,尤其是对对应的m3u8文件及/或媒体文件进行优化处理,
在依据本申请的一个实施例中,所述数据收发模块302更将对应的m3u8文件/优化处理后的对应的m3u8文件以及媒体文件/优化处理后的媒体文件传送至播放器。
与上文所述播放方法类似,在本申请的另一实施例中,请求处理模块301更获取所述流媒体的原始地址,通过优化处理模块303将所述原始地址转换成对应的本地地址,以及将对应的本地地址通过数据收发模块302传送至播放器,且第一请求是以对应的本地地址发出的。在本申请的又一实施例中,优化处理模块303更将m3u8文件中的URL信息转换成对应的本地地址信息,且第二请求是以对应的本地地址信息发出的。
由于方法部分已经对本申请实施例进行了详细描述,为简单起见,这里对实施例中涉及的装置与方法对应的部分的不再赘述。对于装置中组件的具体功能描述可参考方法实施例的内容,这里不再具体限定。
虽然本申请的实施例是以安卓系统下移动装置的流媒体播放进行说明,但本发明并不仅限于此。本领域的技术人员应该理解,现有技术中其他系统及/或其他装置的流媒体播放也可能具有与安卓系统下移动装置的流媒体播放类似的问题,从而上述流媒体的播放方法及播放装置也可以应用与非安卓系统下移动装置的流媒体播放,或者安卓与非安卓系统下非移动装置的流媒体播放。
与现有技术相比,本申请所述的流媒体的播放方法与播放装置,达到了如下效果:
1)本申请的技术方案可以通过优化处理解决播放器不支持m3u8浮点时长的问题;
2)本申请的技术方案可以通过优化m3u8文件/媒体文件(例如TS碎片)解决播放器画面卡顿及时间进度错误的问题;
3)本申请技术方案还可以通过CDN调度策略选择更加合适的地址以提升播放的流畅度。
还需要说明的是,术语“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包含一系列要素的过程、方法、商品或者系统不仅包含那些要素,而且还包含没有明确列出的其他要素,或者是还包含为这种过程、方法、商品或者系统所固有的要素。在没有更多限制的情况下,由语句“包含一个……”限定的要素,并不排除在包含所述要素的过程、方法、商品或者系统中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包含但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。