一种播放流媒体视频的方法及装置与流程

文档序号:12754439阅读:273来源:国知局
一种播放流媒体视频的方法及装置与流程

本发明涉及流媒体视频技术领域,特别涉及一种播放流媒体视频的方法及装置。



背景技术:

在现有的安卓系统中有许多视频播放器是不能够直接播放流媒体文件的,在流媒体中的m3u8文件中记载流媒体文件的各个ts文件的具体存储地址和编号,在视频播放器不能完美解读m3u8文件的情况下,该视频播放器是无法播放流媒体文件的。还有在成功解读m3u8文件的情况下,还需要解决如何从相应的服务器下载对应的ts文件到本地以及该如何解析该些ts文件。如何妥善的解决上述问题,就成为了业界亟待解决的课题。



技术实现要素:

本发明提供一种播放流媒体视频的方法及装置,用以克服安卓系统中的部分视频播放器无法解析流媒体视频中的m3u8文件的问题,进而解决了不能顺利播放流媒体文件所给用户带来的困扰,从而提高了用户的使用体验。

根据本发明实施例的第一方面,提供一种播放流媒体视频的方法,包括:

解析流媒体视频的m3u8文件;

获取所述m3u8文件中的各个ts文件在服务器端的存储地址和各个ts文件的播放序号;

按照所述各个ts文件的播放序号的顺序下载所述各个ts文件;

实时的将下载到本地的ts文件解析成视频流;

实时传输所述视频流到视频播放器,以供所述视频播放器播放所述视频流。

在一个实施例中,所述解析流媒体视频的m3u8文件,包括:

获取所述流媒体视频的m3u8文件;

根据所述m3u8文件中的编码结构和关键字,解析所述m3u8文件。

在一个实施例中,所述获取所述m3u8文件中的各个ts文件在服务器端的存储地址和各个ts文件的播放序号,包括:

获取所述m3u8文件中的各个ts文件所在服务器的ip地址;

获取所述m3u8文件中的各个ts文件在服务器端的存储路径;

根据所述ip地址和所述存储路径,分析出所述m3u8文件中的各个ts文件的存储地址;

根据预设的ts文件的编号关键字,获取所述各个ts文件的存储地址各自对应的播放序号。

在一个实施例中,所述按照所述各个ts文件的播放序号的顺序下载所述各个ts文件,包括:

将所述各个ts文件的播放序号按照由小到大的顺序排列;

按照所述由小到大的顺序,依次下载所述各个ts文件。

在一个实施例中,所述实时的将下载到本地的ts文件解析成视频流,包括:

将下载到本地的各个ts文件存储到本地的内存中;

按照预设的解析方式,实时的将所述各个ts文件解析成视频流。

根据本发明实施例的第二方面,提供一种播放流媒体视频的装置,包括:

第一解析模块,用于解析流媒体视频的m3u8文件;

获取模块,用于获取所述m3u8文件中的各个ts文件在服务器端的存储地址和各个ts文件的播放序号;

下载模块,用于按照所述各个ts文件的播放序号的顺序下载所述各个ts文件;

第二解析模块,用于实时的将下载到本地的ts文件解析成视频流;

传输模块,用于实时传输所述视频流到视频播放器,以供所述视频播放器播放所述视频流。

在一个实施例中,所述解析模块,包括:

第一获取子模块,用于获取所述流媒体视频的m3u8文件;

第一解析子模块,用于根据所述m3u8文件中的编码结构和关键字,解析所述m3u8文件。

在一个实施例中,所述获取模块,包括:

第二获取子模块,用于获取所述m3u8文件中的各个ts文件所在服务器的ip地址;

第三获取子模块,用于获取所述m3u8文件中的各个ts文件在服务器端的存储路径;

分析子模块,用于根据所述ip地址和所述存储路径,分析出所述m3u8文件中的各个ts文件的存储地址;

第四获取子模块,用于根据预设的ts文件的编号关键字,获取所述各个ts文件的存储地址各自对应的播放序号。

在一个实施例中,所述下载模块,包括:

排列子模块,用于将所述各个ts文件的播放序号按照由小到大的顺序排列;

下载子模块,用于按照所述由小到大的顺序,依次下载所述各个ts文件。

在一个实施例中,所述解析模块,包括:

存储子模块,用于将下载到本地的各个ts文件存储到本地的内存中;

第二解析子模块,用于按照预设的解析方式,实时的将所述各个ts文件解析成视频流。

本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。

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

附图说明

附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:

图1为本发明一示例性实施例示出的一种播放流媒体视频的方法的流程图;

图2为本发明一示例性实施例示出的一种播放流媒体视频的方法的步骤S11的流程图;

图3为本发明一示例性实施例示出的一种播放流媒体视频的方法的步骤S12的流程图;

图4为本发明一示例性实施例示出的一种播放流媒体视频的方法的步骤S13的流程图;

图5为本发明另一示例性实施例示出的一种播放流媒体视频的方法的步骤S14的流程图;

图6为本发明一示例性实施例示出的一种播放流媒体视频的装置的框图;

图7为本发明一示例性实施例示出的一种播放流媒体视频的装置的第一解析模块61的框图;

图8为本发明一示例性实施例示出的一种播放流媒体视频的装置的获取模块62的框图;

图9为本发明一示例性实施例示出的一种播放流媒体视频的装置的下载模块63的框图;

图10为本发明一示例性实施例示出的一种播放流媒体视频的装置的第二解析模块64的框图。

具体实施方式

以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。

图1是根据一示例性实施例示出的一种播放流媒体视频的方法流程图,如图1所示,该播放流媒体视频的方法,包括以下步骤S11-S15:

在步骤S11中,解析流媒体视频的m3u8文件;

在步骤S12中,获取所述m3u8文件中的各个ts文件在服务器端的存储地址和各个ts文件的播放序号;

在步骤S13中,按照所述各个ts文件的播放序号的顺序下载所述各个ts文件;

在步骤S14中,实时的将下载到本地的ts文件解析成视频流;

在步骤S15中,实时传输所述视频流到视频播放器,以供所述视频播放器播放所述视频流。

在一个实施例中,在现有的安卓系统中有许多视频播放器是不能够直接播放流媒体文件的,在流媒体中的m3u8文件中记载流媒体文件的各个ts文件的存储地址和编号,在视频播放器不能完美解读m3u8文件的情况下,该些视频播放器是无法播放流媒体文件的。还有在成功解读m3u8文件的情况下,还需要解决如何从相应的服务器下载对应的ts文件到本地并动态的存储该些ts文件,可以通过代理服务来解决上述问题。首先需要代理服务来解析流媒体视频的m3u8文件,需要获取该流媒体视频的m3u8文件,并根据该m3u8文件中的编码结构和关键字,来进一步的解析该m3u8文件。

通过获取该m3u8文件中的各个ts文件在服务器端的存储地址和各个ts文件的播放序号,来达到下载m3u8文件中的各个ts文件的目的。具体而言,获取该m3u8文件中的各个ts文件所在服务器的ip地址,以及获取该m3u8文件中的各个ts文件在服务器端的存储路径,根据该ip地址和该存储路径,就可以分析出该m3u8文件中的各个ts文件的存储地址了。

根据预设的ts文件的编号关键字,获取该各个ts文件的存储地址各自对应的播放序号。按照该各个ts文件的播放序号的顺序下载该各个ts文件,将该各个ts文件的播放序号按照由小到大的顺序排列,按照该由小到大的顺序,依次下载该各个ts文件。例如某一个流媒体视频一共由12个ts文件构成,这12个ts文件的存储地址在m3u8文件中并没顺序排列的。在下载ts文件时,不能根据在m3u8文件中各个ts文件的存储地址的先后出现顺序,而是要根据各个ts文件的播放序号的大小顺序来下载。

通过实时的将下载到本地的ts文件解析成视频流,将下载到本地的各个ts文件存储到本地的内存中。按照预设的解析方式,实时的将该各个ts文件解析成视频流。在内存中设置一块内存空间来存储该流媒体视频内容,可保证媒体视频流更稳定的输出,还可更便捷的将内存中的该流媒体视频内容即时的存储到本地硬盘、u盘、光盘等断电后仍可保存数据的介质中。实时传输该视频流到视频播放器,以供该视频播放器播放该视频流。

本发明可克服安卓系统中的部分视频播放器无法解析流媒体视频中的m3u8文件的问题,进而解决了不能顺利播放流媒体文件所给用户带来的困扰,从而提高了用户的使用体验。

在一个实施例中,如图2所示,步骤S11包括如下步骤S21-S22:

在步骤S21中,获取所述流媒体视频的m3u8文件;

在步骤S22中,根据所述m3u8文件中的编码结构和关键字,解析所述m3u8文件。

在一个实施例中,获取该流媒体视频的m3u8文件,m3u8文件是指UTF-8编码格式的m3u文件。m3u文件是记录了一个索引纯文本文件,打开它时播放软件并不是播放它,而是根据它的索引找到对应的音视频文件的网络地址进行在线播放。

例如下述代码:

#EXTINF:19,

http://124.232.164.44:80/ipad/160_15601_4572/20130804075250.ts?userid=VSNDNP-183061027101_160_15601_4572

#EXTINF:2,

http://124.232.164.44:80/ipad/160_15601_4572/20130804075300.ts?userid=VSNDNP-183061027101_160_15601_4572

#EXTINF:10,

http://124.232.164.44:80/ipad/160_15601_4572/20130804075310.ts?userid=VSNDNP-183061027101_160_15601_4572

其中,“EXTINF:2”表示该ts文件是该流媒体视频的第9个组成部分,“http://124.232.164.44:80/ipad/160_15601_4572/20130804075300.ts?userid=VSNDNP-183061027101_160_15601_4572”表示该ts文件存那个ip的服务器中,通过80端口号来传输ts文件,并写明了该ts文件在该服务器中的具体存储路径。

在一个实施例中,如图3所示,步骤S12包括如下步骤S31-S34:

在步骤S31中,获取所述m3u8文件中的各个ts文件所在服务器的ip地址;

在步骤S32中,获取所述m3u8文件中的各个ts文件在服务器端的存储路径;

在步骤S33中,根据所述ip地址和所述存储路径,分析出所述m3u8文件中的各个ts文件的存储地址;

在步骤S34中,根据预设的ts文件的编号关键字,获取所述各个ts文件的存储地址各自对应的播放序号。

在一个实施例中,查看下述代码:

获取m3u8文件中各个ts文件所在的服务器的ip地址,不妨假设某一个ts文件的所在的服务器的ip地址为124.232.164.44,其端口号为80。再获取该ts文件在该服务器端的存储路径,不妨假设该ts文件在服务器端的存储路径为ipad/160_15601_4572/20130804075250.ts?userid=VSNDNP-183061027101_160_15601_4572。根据上述的服务器的ip和该ts文件在该服务器的存储路径,即可得到完整的该ts文件的存储地址。再根据预设的ts文件的编号关键字EXTINF”,即可获取该ts文件在该流媒体视频中的排序序号。

在一个实施例中,如图4所示,步骤S13包括如下步骤S41-S42:

在步骤S41中,将所述各个ts文件的播放序号按照由小到大的顺序排列;

在步骤S42中,按照所述由小到大的顺序,依次下载所述各个ts文件。

在一个实施例中,不能根据各个ts文件在m3u8文件中行文的上下顺序来依此下载该些ts文件,而是需要通过上述实施例中识别出各个ts文件的排序序号,按照排序序号的顺序来依次下载各个ts文件。当用户拖动进度条之后,要根据新的播放时间点,来确定该播放时间是在那个ts文件的归属范围之内。立即更改下载的顺序,将该行的播放时间点所归属的ts文件确定为当前下载的ts文件,以该当前下载的ts文件为起始,依次按照编号的排列顺序下载ts文件。

在一个实施例中,如图5所示,步骤S14包括如下步骤S51-S52:

在步骤S51中,将下载到本地的各个ts文件存储到本地的内存中;

在步骤S52中,按照预设的解析方式,实时的将所述各个ts文件解析成视频流。

在一个实施例中,下载到本地的各个ts文件需要层次到本地的内存中,还可以实时的将该保存到内存中的ts文件导出到本地本地硬盘、u盘、光盘等断电后仍可保存数据的介质中,因为保存到内存中的数据会被新的ts文件数据所覆盖。按照安卓系统中的视频播放器可以播放的视频文件格式,将该些ts文件解析成视频流。

在一个实施例中,图6是根据一示例性实施例示出的一种播放流媒体视频的装置框图。如图6示,该装置包括第一解析模块61、获取模块62、下载模块63、第二解析模块64和传输模块65。

该第一解析模块61,用于解析流媒体视频的m3u8文件;

该获取模块62,用于获取所述m3u8文件中的各个ts文件在服务器端的存储地址和各个ts文件的播放序号;

该下载模块63,用于按照所述各个ts文件的播放序号的顺序下载所述各个ts文件;

该第二解析模块64,用于实时的将下载到本地的ts文件解析成视频流;

该传输模块65,用于实时传输所述视频流到视频播放器,以供所述视频播放器播放所述视频流。

如图7所示,该第一解析模块61包括第一获取子模块71和第一解析子模块72。

该第一获取子模块71,用于获取所述流媒体视频的m3u8文件;

该第一解析子模块72,用于根据所述m3u8文件中的编码结构和关键字,解析所述m3u8文件。

如图8所示,该获取模块62包括第二获取子模块81、第三获取子模块82、分析子模块83和第四获取子模块84。

该第二获取子模块81,用于获取所述m3u8文件中的各个ts文件所在服务器的ip地址;

该第三获取子模块82,用于获取所述m3u8文件中的各个ts文件在服务器端的存储路径;

该分析子模块83,用于根据所述ip地址和所述存储路径,分析出所述m3u8文件中的各个ts文件的存储地址;

该第四获取子模块84,用于根据预设的ts文件的编号关键字,获取所述各个ts文件的存储地址各自对应的播放序号。

如图9所示,该下载模块63包括排列子模块91和下载子模块92:

该排列子模块91,用于将所述各个ts文件的播放序号按照由小到大的顺序排列;

该下载子模块92,用于按照所述由小到大的顺序,依次下载所述各个ts文件。

如图10所示,该第二解析模块64包括存储子模块101和第二解析子模块102。

该存储子模块101,用于将下载到本地的各个ts文件存储到本地的内存中;

该第二解析子模块102,用于按照预设的解析方式,实时的将所述各个ts文件解析成视频流。

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

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

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

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

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

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