一种基于HLS协议的视频播放方法及装置与流程

文档序号:11156634阅读:607来源:国知局
一种基于HLS协议的视频播放方法及装置与制造工艺

本发明涉及视频播放技术领域,特别涉及一种基于HLS协议的视频播放方法及装置。



背景技术:

HLS(HTTP Live Streaming)协议是基于HTTP(HyperText Transfer Protocol,超文本传输协议)的流媒体传输协议,它可以实现流媒体的直播和点播。在服务器上,基于HLS协议播放的每个视频的视频数据都被分割成若干段传输流,每段传输流至少包括视频流和音频流,视频流或音频流中的数据按照规定的格式被封装成若干个数据容器,每个数据容器包括头部信息和数据信息,其中,头部信息中至少包括时间戳信息,时间戳信息包括显示时间戳和解码时间戳。视频流或音频流中的数据容器按照解码时间戳排列,从而形成传输流,传输流再以播放列表的方式组织成视频数据。当基于HLS协议播放视频时,播放器通过HTTP从服务器端获取视频的传输流,然后进行解码播放。

在实际的播放过程中,用户因为某些原因会中途退出播放,退出时视频播放进度的时间点会被记录下来,这个时间点称为历史记录点。为了提高用户体验,当用户再次打开该播放器播放该视频时,播放器直接从历史记录点开始播放。目前,基于HLS协议播放视频时,播放器通过以下方法实现从历史记录点开始播放:首先接收用户针对目标视频的播放指令;然后获得N段传输流;其中,所述N段传输流整体满足定位条件;当定位条件满足时,定位到历史记录点;然后从所述历史记录点,加载并播放所述目标视频未播放的传输流。

由以上可见,采用上述方法,从历史记录点开始播放视频的速度主要取决于N段传输流的获取速度、目标视频的历史记录点的定位速度以及历史记录点对应的传输流的加载速度。但是,N段传输流的获取速度和历史记录点对应的传输流的加载速度均依赖于网络状态,因此当网络繁忙时,采用上述方法就会导致从历史记录点开始播放视频的速度较慢。



技术实现要素:

本发明实施例的目的在于提供一种基于HLS协议的视频播放方法及装置,以提高从历史记录点开始播放视频的速度。

为达到上述目的,本发明实施例公开了一种基于HLS协议的视频播放方法,所述方法包括:

接收用户针对目标视频的播放指令;

获得所述目标视频的一个视频数据包和一个音频数据包;

根据所述视频数据包和所述音频数据包,生成N段传输流,其中,所述N段传输流整体满足定位条件;

当定位条件满足时,定位到历史记录点;

从所述历史记录点,加载并播放所述目标视频未播放的传输流。

较佳的,所述获得所述目标视频的一个视频数据包和一个音频数据包,包括:

获得所述目标视频的第一段传输流中的第一个视频数据包和第一个音频数据包。

较佳的,所述根据所述视频数据包和所述音频数据包,生成N段传输流,包括:

针对待生成的N段传输流中每一段传输流,根据数据容器的要求,生成M个视频数据容器的视频数据头部信息和M个音频数据容器的音频数据头部信息;

根据M个视频数据头部信息和所述视频数据包,生成M个视频数据容器;

根据M个音频数据头部信息和所述音频数据包,生成M个音频数据容器;

根据所述M个视频数据容器和所述M个音频数据容器,生成所述N段传输流中的一段传输流。

较佳的,所述传输流为:

基于MPEG transport stream格式的传输流或者基于MPEG-4Part 14格式的传输流。

为达到上述目的,本发明实施例还公开了一种基于HLS协议的视频播放装置,所述装置包括:

接收模块,用于接收用户针对目标视频的播放指令;

获得模块,用于获得所述目标视频的一个视频数据包和一个音频数据包;

生成模块,用于根据所述视频数据包和所述音频数据包,生成N段传输流,其中,所述N段传输流整体满足定位条件;

定位模块,用于当定位条件满足时,定位到历史记录点;

加载播放模块,用于从所述历史记录点,加载并播放所述目标视频未播放的传输流。

较佳的,所述获得模块,具体用于:

获得所述目标视频的第一段传输流中的第一个视频数据包和第一个音频数据包。

较佳的,所述生成模块,包括:第一生成子模块、第二生成子模块、第三生成子模块和第四生成子模块;

第一生成子模块,用于针对待生成的N段传输流中每一段传输流,根据数据容器的要求,生成M个视频数据容器的视频数据头部信息和M个音频数据容器的音频数据头部信息;

第二生成子模块,用于根据M个视频数据头部信息和所述视频数据包,生成M个视频数据容器;

第三生成子模块,用于根据M个音频数据头部信息和所述音频数据包,生成M个音频数据容器;

第四生成子模块,用于根据所述M个视频数据容器和所述M个音频数据容器,生成所述N段传输流中的一段传输流。

较佳的,所述传输流为:

基于MPEG transport stream格式的传输流或者基于MPEG-4Part 14格式的传输流。

由以上可见,本发明实施例提供一种基于HLS协议的视频播放方法及装置,具体包括:接收用户针对目标视频的播放指令;获得所述目标视频的一个视频数据包和一个音频数据包;根据所述视频数据包和所述音频数据包,生成N段传输流,其中,所述N段传输流整体满足定位条件;当定位条件满足时,定位到历史记录点;从所述历史记录点,加载并播放所述目标视频未播放的传输流。

可见,本发明实施例中,播放器只需要通过网络从服务器上获取一个视频数据包和一个音频数据包,然后根据特定的要求,利用接收到的视频数据包以及音频数据包生成N段传输流,生成N段传输流的过程不需要依赖于网络状态,且该过程相对于从服务器上获取N段传输流的过程来说耗时较少,从而提高从历史记录点开始播放视频的速度。

附图说明

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

图1为本发明实施例提供的一种基于HLS协议的视频播放方法的流程示意图;

图2为本发明实施例提供的一种基于HLS协议的视频播放装置的结构示意图。

具体实施方式

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

本发明实施例提供了一种基于HLS协议的视频播放方法及装置,具体的:

接收用户针对目标视频的播放指令;

获得所述目标视频的一个视频数据包和一个音频数据包;

根据所述视频数据包和所述音频数据包,生成N段传输流,其中,所述N段传输流整体满足定位条件;

当定位条件满足时,定位到历史记录点;

从所述历史记录点,加载并播放所述目标视频未播放的传输流。

下面通过具体实施例,对本发明实施例提供的一种基于HLS协议的视频播放方法及装置进行详细说明。

图1为本发明实施例提供的一种基于HLS协议的视频播放方法的流程示意图,可以包括:

S101:接收用户针对目标视频的播放指令。

实际应用中,当用户打开播放器播放目标视频时,可以理解为用户向播放器发出了针对目标视频的播放指令,播放器接收到该播放指令后,即可进行后续步骤。

S102:获得所述目标视频的一个视频数据包和一个音频数据包。

具体的,播放器在接收到用户针对目标视频的播放指令后,向服务器发送目标视频的一个视频数据包和一个音频数据包的获取请求,然后当服务器发送目标视频的一个视频数据包和一个音频数据包后,播放器接收该视频数据包和该音频数据包,从而获得目标视频的一个视频数据包和一个音频数据包。需要说明的是,一个视频数据包为目标视频对应的一个视频数据容器中的数据信息,其中,视频数据容器为视频流中的数据容器;一个音频数据包为目标视频对应的一个音频数据容器中的数据信息,其中,音频数据容器为音频流中的数据容器。

在实际应用中,可以对待获得的视频数据包和音频数据包进行指定。例如:获得目标视频的第A段传输流中的第B个视频数据包和目标视频的第C段传输流中的第D个音频数据包;其中,目标视频的第A段传输流中的第B个视频数据包具体是指目标视频的第A段传输流中的第B个视频数据容器中的数据信息,目标视频的第C段传输流中的第D个音频数据包具体是指目标视频的第C段传输流中的第D个音频数据容器中的数据信息;其中,A和C可以相等,也可以不等;B和D可以相等,也可以不等。优选的,获得所述目标视频的第一段传输流中的第一个视频数据包和第一个音频数据包。

S103:根据所述视频数据包和所述音频数据包,生成N段传输流,其中,所述N段传输流整体满足定位条件。

当获得目标视频的一个视频数据包和一个音频数据包后,根据该视频数据包和该音频数据包,生成N段传输流。实际应用中,N段传输流可以为第一段传输流,也可以为前几段传输流,只要N段传输流整体满足定位条件即可,即N段传输流生成后,可触发播放器执行定位,也就是说触发执行S104。

N段传输流只是触发播放器执行定位,而N段传输流的具体内容并不需要展现给用户,即N段传输流只需要从形式上满足定位条件即可,因此具体的,根据所述视频数据包和所述音频数据包,生成N段传输流,可以包括:

针对待生成的N段传输流中每一段传输流,根据数据容器的要求,生成M个视频数据容器的视频数据头部信息和M个音频数据容器的音频数据头部信息;

根据M个视频数据头部信息和所述视频数据包,生成M个视频数据容器;

根据M个音频数据头部信息和所述音频数据包,生成M个音频数据容器;

根据所述M个视频数据容器和所述M个音频数据容器,生成所述N段传输流中的一段传输流。

本领域技术人员可以理解的是,不同的数据容器对于头部信息有不同的要求,例如格式等。根据不同的要求,可以生成相应的头部信息。例如:根据第一段传输流中的第一个视频数据容器的要求,生成第一段传输流中的第一个视频数据容器的头部信息,根据第一段传输流中的第二个视频数据容器的要求,生成第一段传输流中的第二个视频数据容器的头部信息,以此类推,生成M个视频数据容器的视频数据头部信息;同理,根据第一段传输流中的每个音频数据容器的要求,可生成M个音频数据容器的音频数据头部信息。由此可见,M个视频数据头部信息可能是不相同的,M个音频数据头部信息可能也是不相同的。具体应用时,头部信息也可以根据数据容器的要求以及目标视频已有的信息来生成,例如根据时间戳的格式以及目标视频的帧率计算出头部信息中的时间戳信息。

由于N段传输流只是触发播放器执行定位,而N段传输流的具体内容并不需要展现给用户,因此可以对所述视频数据包和所述音频数据包进行复制,然后根据上述生成的M个视频数据头部信息和复制后得到的M个视频数据包,生成M个视频数据容器;根据上述生成的M个音频数据头部信息和复制后得到的M个音频数据包,生成M个音频数据容器。这样,生成的M个视频数据容器和M个音频数据容器从形式上就满足了数据容器的要求。

将上述M个视频数据容器和上述M个音频数据容器按照解码时间戳排列,生成N段传输流中的一段传输流。所生成的一段传输流从形式上满足传输流的要求。因此,重复上述步骤,生成的N段传输流整体也就从格式上满足定位条件,可以触发执行S104。其中,传输流可以为:基于MPEG transport stream格式的传输流或者基于MPEG-4Part 14格式的传输流。

下面通过一个具体例子来详细说明一下生成N段传输流的过程:

假设第一段和第二段传输流整体满足定位条件,也就是说,必须要先生成第一段和第二段传输流,才能触发播放器执行定位。首先针对第一段传输流,根据第一段传输流中的第一个视频数据容器的要求,生成第一段传输流中的第一个视频数据容器的头部信息,根据第一段传输流中的第二个视频数据容器的要求,生成第一段传输流中的第二个视频数据容器的头部信息,以此类推,共生成第一段传输流中的M个视频数据容器的头部信息,即M个视频数据头部信息;同理,根据第一段传输流中的每个音频数据容器的要求,生成M个音频数据容器的头部信息,即M个音频数据头部信息。复制S102获得的目标视频的一个视频数据包和一个音频数据包,得到M个视频数据包和M个音频数据包。根据第一段传输流中的第一个视频数据容器的头部信息和一个视频数据包,生成第一段传输流中的第一个视频数据容器;根据第一段传输流中的第二个视频数据容器的头部信息和一个视频数据包,生成第一段传输流中的第二个视频数据容器;以此类推,共生成第一段传输流中的M个视频数据容器。同理,根据第一段传输流中的M个音频数据容器的头部信息和M个音频数据包,共生成第一段传输流中的M个音频数据容器。将上述M个视频数据容器和上述M个音频数据容器按照解码时间戳排列,生成第一段传输流。然后重复上述整个步骤,生成第二段传输流。当第一段和第二段传输流均生成后,可触发播放器执行定位。

S104:当定位条件满足时,定位到历史记录点。

当定位条件满足时,即当S103完成后,定位到历史记录点。假设第一段和第二段传输流整体满足定位条件,则当第一段和第二段传输流均生成后,定位到历史记录点。

S105:从所述历史记录点,加载并播放所述目标视频未播放的传输流。

具体的,播放器向服务器发送目标视频未播放的传输流的获取请求;然后当服务器发送目标视频未播放的传输流后,播放器接收上述传输流,解码并播放接收到的上述传输流。上述目标视频未播放的传输流具体是指从历史记录点开始至视频结束部分的传输流。

本领域技术人员可以理解的是,本发明实施例中的各过程实际上是播放器通过控制操作系统中的播放器对象来完成的,具体的控制方法对于本领域技术人员来说是公知的,因此本发明实施例在此不对其进行赘述。其中,在操作系统为安卓Android操作系统的情况下,操作系统中的播放器对象可以为Android MediaPlayer;在操作系统为iOS操作系统的情况下,操作系统中的播放器对象可以为AVPlayer。

由以上可见,本发明实施例中,N段传输流是通过从服务器上获取一个视频数据包和一个音频数据包,然后根据特定的要求,利用接收到的视频数据包以及音频数据包生成的。也就是说,播放器只需要通过网络从服务器上获取一个视频数据包和一个音频数据包,获取后生成N段传输流的过程是不需要依赖于网络状态的。获取一个视频数据包和一个音频数据包以及生成N段传输流的这整个过程相对于从服务器上获取N段传输流的过程来说耗时较少。因此,应用本发明图1所示实施例,提高了从历史记录点开始播放视频的速度。此外,因为播放器只需要通过网络从服务器上获取一个视频数据包和一个音频数据包,因此还减少了额外网络资源的占用。

与上述的方法实施例相对应,本发明实施例还提供了一种基于HLS协议的视频播放装置。

图2为本发明实施例提供的一种基于HLS协议的视频播放装置的结构示意图;可以包括:接收模块201、获得模块202、生成模块203、定位模块204、加载播放模块205。

其中,接收模块201,用于接收用户针对目标视频的播放指令。

获得模块202,用于获得所述目标视频的一个视频数据包和一个音频数据包。

本发明实施例中的获得模块202,具体可以用于:

获得所述目标视频的第一段传输流中的第一个视频数据包和第一个音频数据包。

生成模块203,用于根据所述视频数据包和所述音频数据包,生成N段传输流,其中,所述N段传输流整体满足定位条件。

本发明实施例中的生成模块203,具体可以包括:第一生成子模块、第二生成子模块、第三生成子模块和第四生成子模块(图中未示出);

第一生成子模块,用于针对待生成的N段传输流中每一段传输流,根据数据容器的要求,生成M个视频数据容器的视频数据头部信息和M个音频数据容器的音频数据头部信息;

第二生成子模块,用于根据M个视频数据头部信息和所述视频数据包,生成M个视频数据容器;

第三生成子模块,用于根据M个音频数据头部信息和所述音频数据包,生成M个音频数据容器;

第四生成子模块,用于根据所述M个视频数据容器和所述M个音频数据容器,生成所述N段传输流中的一段传输流。

定位模块204,用于当定位条件满足时,定位到历史记录点。

加载播放模块205,用于从所述历史记录点,加载并播放所述目标视频未播放的传输流。

本发明实施例中的所述传输流具体可以为基于MPEG transport stream格式的传输流或者基于MPEG-4Part 14格式的传输流。

由以上可见,本发明实施例中,N段传输流是通过从服务器上获取一个视频数据包和一个音频数据包,然后根据特定的要求,利用接收到的视频数据包以及音频数据包生成的。也就是说,播放器只需要通过网络从服务器上获取一个视频数据包和一个音频数据包,获取后生成N段传输流的过程是不需要依赖于网络状态的。获取一个视频数据包和一个音频数据包以及生成N段传输流的这整个过程相对于从服务器上获取N段传输流的过程来说耗时较少。因此,应用本发明图2所示实施例,提高了从历史记录点开始播放视频的速度。此外,因为播放器只需要通过网络从服务器上获取一个视频数据包和一个音频数据包,因此还减少了额外网络资源的占用。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

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

本领域普通技术人员可以理解实现上述方法实施方式中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于计算机可读取存储介质中,这里所称得的存储介质,如:ROM/RAM、磁碟、光盘等。

以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

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