一种视频播放方法及装置转让专利

申请号 : CN201610627111.4

文献号 : CN107690093B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 张龙辛安民

申请人 : 杭州海康威视数字技术股份有限公司

摘要 :

本申请实施例提供了一种视频播放方法及装置,应用于终端。所述方法包括:确定待播放视频的第一个分片为目标分片;向服务器发送针对所述目标分片的获取请求;接收所述服务器返回的所述目标分片;在满足播放条件时播放所述目标分片;在满足预设的下一分片获取条件时,在所述目标分片不是所述待播放视频的最后一个分片的情况下,将所述目标分片更新为所述目标分片的下一分片,并返回执行向服务器发送针对所述目标分片的获取请求的步骤。本实施例能够尽可能减少对用户流量的浪费。

权利要求 :

1.一种视频播放方法,其特征在于,应用于终端,所述方法包括:确定待播放视频的第一个分片为目标分片;

向服务器发送针对所述目标分片的获取请求;

接收所述服务器返回的所述目标分片;

在满足播放条件时播放所述目标分片;

当满足预设的下一分片获取条件时,在所述目标分片不是所述待播放视频的最后一个分片的情况下,将所述目标分片更新为所述目标分片的下一分片,并返回执行所述向服务器发送针对所述目标分片的获取请求的步骤;

其中,所述预设的下一分片获取条件,包括:从所述目标描述文件中获取时间戳,所述时间戳用于表明从接收所述目标描述文件到发送针对下一分片的描述文件的获取请求之间的间隔时长;判断从所述目标描述文件的接收时刻开始的计时时长是否达到所述时间戳,如果是,则确定满足预设的下一分片获取条件;其中,所述第一个分片的描述文件中的时间戳小于所述第一个分片的总播放时长,除所述第一个分片之外的其他分片的描述文件中的时间戳等于所述其他分片的总播放时长。

2.根据权利要求1所述的方法,其特征在于,所述预设的下一分片获取条件,包括:获取所述目标分片的当前播放时长和所述目标分片的第一总播放时长;

计算所述当前播放时长与所述第一总播放时长的比例;

判断所述比例是否达到预设比例阈值,如果是,则确定满足预设的下一分片获取条件。

3.根据权利要求1所述的方法,其特征在于,所述第一个分片为:摘要分片;

其中,所述摘要分片是服务器采用以下方式预先生成的:获得所述待播放视频的第二总播放时长;

根据所述第二总播放时长,确定所述摘要分片包含的视频帧数量;

从所述待播放视频中抽取所述视频帧数量个I帧;

根据所抽取的I帧生成所述摘要分片。

4.根据权利要求1所述的方法,其特征在于,所述向服务器发送针对所述目标分片的获取请求,包括:向服务器发送针对所述目标分片的目标描述文件的获取请求;

接收所述服务器返回的所述目标描述文件;所述目标描述文件包括所述目标分片的不同码率版本的视频文件地址;

根据当前网络状态,确定所述目标分片的目标码率;

从所述目标描述文件包括的视频文件地址中,选择与所述目标码率匹配的目标视频文件地址;

根据所述目标视频文件地址,向所述服务器发送针对所述目标分片的获取请求。

5.根据权利要求1-4中任一项所述的方法,其特征在于,所述目标分片包括至少一个完整的图像组。

6.一种视频播放装置,其特征在于,应用于终端,所述装置包括:确定模块,用于确定待播放视频的第一个分片为目标分片;

发送模块,用于向服务器发送针对所述目标分片的获取请求;

接收模块,用于接收所述服务器返回的所述目标分片;

播放模块,用于在满足播放条件时播放所述目标分片;

更新模块,用于当满足预设的下一分片获取条件时,当判断出所述目标分片的当前播放时长满足预设的下一分片获取条件时,在所述目标分片不是所述待播放视频的最后一个分片的情况下,将所述目标分片更新为所述目标分片的下一分片,并返回执行所述发送模块;

其中,所述预设的下一分片获取条件,包括:从所述目标描述文件中获取时间戳,所述时间戳用于表明从接收所述目标描述文件到发送针对下一分片的描述文件的获取请求之间的间隔时长;

判断从所述目标描述文件的接收时刻开始的计时时长是否达到所述时间戳,如果是,则确定满足预设的下一分片获取条件;

其中,所述第一个分片的描述文件中的时间戳小于所述第一个分片的总播放时长,除所述第一个分片之外的其他分片的描述文件中的时间戳等于所述其他分片的总播放时长。

7.根据权利要求6所述的装置,其特征在于,所述预设的下一分片获取条件,包括:获取所述目标分片的当前播放时长和所述目标分片的第一总播放时长;

计算所述当前播放时长与所述第一总播放时长的比例;

判断所述比例是否达到预设比例阈值,如果是,则确定满足预设的下一分片获取条件。

8.根据权利要求6所述的装置,其特征在于,所述第一个分片为:摘要分片;

其中,所述摘要分片是服务器采用以下方式预先生成的:获得所述待播放视频的第二总播放时长;

根据所述第二总播放时长,确定所述摘要分片包含的视频帧数量;

从所述待播放视频中抽取所述视频帧数量个I帧;

根据所抽取的I帧生成所述摘要分片。

9.根据权利要求6所述的装置,其特征在于,所述发送模块,包括:第一发送子模块,用于向服务器发送针对所述目标分片的目标描述文件的获取请求;

接收子模块,用于接收所述服务器返回的所述目标描述文件;所述目标描述文件包括所述目标分片的不同码率版本的视频文件地址;

确定子模块,用于根据当前网络状态,确定所述目标分片的目标码率;

选择子模块,用于从所述目标描述文件包括的视频文件地址中,选择与所述目标码率匹配的目标视频文件地址;

第二发送子模块,用于根据所述目标视频文件地址,向所述服务器发送针对所述目标分片的获取请求。

10.根据权利要求6-9中任一项所述的装置,其特征在于,所述目标分片包括至少一个完整的图像组。

说明书 :

一种视频播放方法及装置

技术领域

[0001] 本申请涉及移动流媒体传输技术领域,特别涉及一种视频播放方法及装置。

背景技术

[0002] 随着网络带宽的不断增加,以及视频资源的不断丰富,用户越来越喜欢使用移动终端观看视频。现阶段的移动流量资费仍然比较昂贵,所以大部分移动终端用户在使用付费流量观看视频时会非常谨慎。
[0003] 目前,常见的流媒体传输技术包括DASH(Dynamic Adaptive Streaming over HTTP,基于HTTP的动态自适应流媒体协议)、微软的Smooth Streaming、Adobe的HTTP Dynamic Streaming和苹果的HTTP Live Streaming等。其中,DASH相比于其他几种技术具有更好的传输性、兼容性和可扩展性,所以DASH技术拥有更加广阔的市场和应用前景。
[0004] 在播放视频时,现有技术主要采用的方法是,移动终端从服务器上获取视频媒体索引,通过协议渐进地从服务器中将选择的视频全部缓存下来。例如,应用DASH技术传输视频时,服务器会事先将视频分片,当移动终端缓冲完一个分片时会继续缓冲下一个分片,直至所有分片缓冲完毕。如果用户观看了一部分视频,发现对该视频不感兴趣,则会关闭该视频。但是,这时整个媒体文件可能已经缓冲完成,从而浪费了用户的宝贵流量。

发明内容

[0005] 本申请实施例的目的在于提供了一种视频播放方法及装置,能够尽可能减少对用户流量的浪费。
[0006] 为了达到上述目的,本申请公开了一种视频播放方法,应用于终端,所述方法包括:
[0007] 确定待播放视频的第一个分片为目标分片;
[0008] 向服务器发送针对所述目标分片的获取请求;
[0009] 接收所述服务器返回的所述目标分片;
[0010] 在满足播放条件时播放所述目标分片;
[0011] 当满足预设的下一分片获取条件时,在所述目标分片不是所述待播放视频的最后一个分片的情况下,将所述目标分片更新为所述目标分片的下一分片,并返回执行所述向服务器发送针对所述目标分片的获取请求的步骤。
[0012] 可选的,所述预设的下一分片获取条件,包括:
[0013] 获取所述目标分片的当前播放时长和所述目标分片的第一总播放时长;
[0014] 计算所述当前播放时长与所述第一总播放时长的比例;
[0015] 判断所述比例是否达到预设比例阈值,如果是,则确定满足预设的下一分片获取条件。
[0016] 可选的,所述第一个分片为:摘要分片;
[0017] 其中,所述摘要分片是服务器采用以下方式预先生成的:
[0018] 获得所述待播放视频的第二总播放时长;
[0019] 根据所述第二总播放时长,确定所述摘要分片包含的视频帧数量;
[0020] 从所述待播放视频中抽取所述视频帧数量个I帧;
[0021] 根据所抽取的I帧生成所述摘要分片。
[0022] 可选的,所述向服务器发送针对所述目标分片的获取请求,包括:
[0023] 向服务器发送针对所述目标分片的目标描述文件的获取请求;
[0024] 接收所述服务器返回的所述目标描述文件;所述目标描述文件包括所述目标分片的不同码率版本的视频文件地址;
[0025] 根据当前网络状态,确定所述目标分片的目标码率;
[0026] 从所述目标描述文件包括的视频文件地址中,选择与所述目标码率匹配的目标视频文件地址;
[0027] 根据所述目标视频文件地址,向所述服务器发送针对所述目标分片的获取请求。
[0028] 可选的,所述预设的下一分片获取条件,包括:
[0029] 从所述目标描述文件中获取时间戳,所述时间戳用于表明从接收所述目标描述文件到发送针对下一分片的描述文件的获取请求之间的间隔时长;
[0030] 判断从所述目标描述文件的接收时刻开始的计时时长是否达到所述时间戳,如果是,则确定满足预设的下一分片获取条件;
[0031] 其中,所述第一个分片的描述文件中的时间戳小于所述第一个分片的总播放时长,除所述第一个分片之外的其他分片的描述文件中的时间戳等于所述其他分片的总播放时长。
[0032] 可选的,所述目标分片包括至少一个完整的图像组。
[0033] 为了达到上述目的,本申请公开了一种视频播放装置,应用于终端,所述装置包括:
[0034] 确定模块,用于确定待播放视频的第一个分片为目标分片;
[0035] 发送模块,用于向服务器发送针对所述目标分片的获取请求;
[0036] 接收模块,用于接收所述服务器返回的所述目标分片;
[0037] 播放模块,用于在满足播放条件时播放所述目标分片;
[0038] 更新模块,用于当满足预设的下一分片获取条件时,当判断出所述目标分片的当前播放时长满足预设的下一分片获取条件时,在所述目标分片不是所述待播放视频的最后一个分片的情况下,将所述目标分片更新为所述目标分片的下一分片,并返回执行所述发送模块。
[0039] 可选的,所述预设的下一分片获取条件,包括:
[0040] 获取所述目标分片的当前播放时长和所述目标分片的第一总播放时长;
[0041] 计算所述当前播放时长与所述第一总播放时长的比例;
[0042] 判断所述比例是否达到预设比例阈值,如果是,则确定满足预设的下一分片获取条件。
[0043] 可选的,所述第一个分片为:摘要分片;
[0044] 其中,所述摘要分片是服务器采用以下方式预先生成的:
[0045] 获得所述待播放视频的第二总播放时长;
[0046] 根据所述第二总播放时长,确定所述摘要分片包含的视频帧数量;
[0047] 从所述待播放视频中抽取所述视频帧数量个I帧;
[0048] 根据所抽取的I帧生成所述摘要分片。
[0049] 可选的,所述发送模块,包括:
[0050] 第一发送子模块,用于向服务器发送针对所述目标分片的目标描述文件的获取请求;
[0051] 接收子模块,用于接收所述服务器返回的所述目标描述文件;所述目标描述文件包括所述目标分片的不同码率版本的视频文件地址;
[0052] 确定子模块,用于根据当前网络状态,确定所述目标分片的目标码率;
[0053] 选择子模块,用于从所述目标描述文件包括的视频文件地址中,选择与所述目标码率匹配的目标视频文件地址;
[0054] 第二发送子模块,用于根据所述目标视频文件地址,向所述服务器发送针对所述目标分片的获取请求。
[0055] 可选的,所述预设的下一分片获取条件,包括:
[0056] 从所述目标描述文件中获取时间戳,所述时间戳用于表明从接收所述目标描述文件到发送针对下一分片的描述文件的获取请求之间的间隔时长;
[0057] 判断从所述目标描述文件的接收时刻开始的计时时长是否达到所述时间戳,如果是,则确定满足预设的下一分片获取条件;
[0058] 其中,所述第一个分片的描述文件中的时间戳小于所述第一个分片的总播放时长,除所述第一个分片之外的其他分片的描述文件中的时间戳等于所述其他分片的总播放时长。
[0059] 可选的,所述目标分片包括至少一个完整的图像组。
[0060] 由上述技术方案可见,在本申请实施例中,确定待播放视频的第一个分片为目标分片,向服务器发送针对目标分片的获取请求,并接收服务器返回的目标分片,在满足播放条件时播放目标分片。当满足预设的下一分片获取条件时,并且在该目标分片不是待播放视频的最后一个分片的情况下,将目标分片更新为该目标分片的下一分片,返回执行向服务器发送针对目标分片的获取请求。
[0061] 也就是说,在本申请实施例中,针对待播放视频包含的每个分片,在满足预设的下一分片获取条件时,才向服务器发送针对下一分片的获取请求,然后接收服务器返回的下一分片,即缓冲下一分片。而现有技术中,不管当前播放到哪个分片,也不管当前播放的分片已经播放了多长时间,只要一个分片缓存完,紧接着会缓冲下一个分片,直到所有分片缓冲完。应用本申请实施例,在当前分片播放过程的任一时刻,如果终端关闭上述待播放视频,终端最多只缓冲完下一分片,浪费的用户流量为当前播放分片的剩余部分和下一分片部分,因此能够尽可能减少对用户流量的浪费。

附图说明

[0062] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0063] 图1为本申请实施例提供的视频播放方法的一种流程示意图;
[0064] 图2为本申请实施例提供的视频播放方法的另一种流程示意图;
[0065] 图3为本发明实施例提供的视频播放方法的一种原理示意图;
[0066] 图4为本申请实施例提供的视频播放装置的一种结构示意图;
[0067] 图5为本申请实施例提供的视频播放装置的另一种结构示意图。

具体实施方式

[0068] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述。显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0069] 本申请实施例提供了一种视频播放方法及装置,能够尽可能减少对用户流量的浪费。
[0070] 下面通过具体实施例,对本申请进行详细说明。
[0071] 图1为本申请实施例提供的视频播放方法的一种流程示意图,应用于终端,所述终端可以为智能电话、平板电脑、笔记本电脑或台式电脑等能够播放视频的电子设备。具体的,所述方法包括:
[0072] 步骤S101:确定待播放视频的第一个分片为目标分片。
[0073] 具体的,本实施例的执行主体可以为终端中的客户端。客户端根据用户的选择操作,确定当前待播放视频,并将待播放视频的第一个分片确定为目标分片。
[0074] 在实际应用中,由于待播放视频的总播放时长一般在1~10分钟,甚至更长,因此服务器端常常将待播放视频划分成至少两个分片,客户端可以以分片为单元进行播放和缓冲。
[0075] 例如,在应用DASH传输机制的服务器端,视频资源被划分成播放时长近似相等的多个分片,针对每个分片还生成该分片对应的MPD(Media Presentation Description,媒体表示描述)文件,简称描述文件。该描述文件中记录了视频内容的编码方式、总播放时长、视频类型、码率、URL(Uniform Resource Locator,统一资源定位符)等信息。
[0076] 具体的,为了保证作为缓冲单元的分片可以独立地解码显示,服务器端在对待播放视频划分分片时,可以以GOP(Group Of Picture,图像组)数量为单位进行。其中,GOP一般指I帧及其后面依靠该I帧解码的其他帧。也就是说,目标分片可以包括至少一个完整的图像组。
[0077] 步骤S102:向服务器发送针对目标分片的获取请求。
[0078] 具体的,客户端可以根据目标分片的地址,向服务器发送针对目标分片的获取请求。
[0079] 可以理解的是,客户端显示界面上显示有各个视频资源的图标,每个图标都关联着一个URL地址,这个URL地址即与服务器端该视频资源相关联。客户端可以根据用户的选择操作,获得URL地址,并根据该URL地址向服务器发送针对目标分片的获取请求。
[0080] 对应的,服务器端接收客户端发送的获取请求,根据该获取请求确定目标分片,并将目标分片发送至客户端。
[0081] 具体的,客户端可以在获取请求中设置字段来表明想要获取哪个分片,对应的,服务器可以根据获取请求中的字段的值确定将哪个分片发送至客户端。例如,如果获取请求中的字段为1,则将待播放视频的第一个分片发送至客户端。如果获取请求中的字段为2,则将待播放视频的第一个分片的下一分片发送至客户端。
[0082] 在服务器向终端中的客户端发送目标分片时,可以将目标分片按照HTTP(HyperText Transfer Protocol,超文本传输协议)协议进行封装并发送。
[0083] 具体的,客户端也可以根据待播放视频的URL地址向服务器发送描述文件获取请求,接收服务器返回的描述文件,根据接收到的描述文件,向服务器发送针对目标分片的获取请求。
[0084] 步骤S103:接收服务器返回的目标分片。
[0085] 具体的,客户端接收服务器返回的目标分片时,对其解封装,获得目标分片的视频文件。
[0086] 步骤S104:在满足播放条件时播放目标分片。
[0087] 如果目标分片为待播放视频的第一个分片,则当待播放视频的上一个视频播放完毕时,可以认为满足播放条件。另外,当目标分片为待播放视频的第一个分片时,若监测到用户点击播放按钮,也可以认为满足播放条件。
[0088] 如果目标分片为待播放视频中除第一个分片之外的其他分片,则当目标分片的上一分片播放完毕时,可以认为满足播放条件。
[0089] 需要说明的是,本申请只是以上述为例进行说明,实际应用中满足播放条件的具体情况并不仅限于此。
[0090] 具体的,在播放目标分片时,对目标分片解码并播放。
[0091] 步骤S105:当满足预设的下一分片获取条件时,在目标分片不是待播放视频的最后一个分片的情况下,将目标分片更新为目标分片的下一分片,并返回执行步骤S102。
[0092] 作为本发明实施例的一种具体实施方式,步骤S105中,预设的下一分片获取条件,可以包括:获取目标分片的当前播放时长和目标分片的第一总播放时长,计算所述当前播放时长与所述第一总播放时长的比例,判断所述比例是否达到预设比例阈值,如果是,则确定满足预设的下一分片获取条件。
[0093] 具体的,第一总播放时长可以在目标分片缓冲完成后获取。当前播放时长是在目标分片的播放过程中实时获取的。在实际应用中,客户端可以根据终端的系统时钟对当前播放时长进行监控。
[0094] 在本实施例中,客户端根据系统时钟对目标分片的当前播放时长定时监控,当当前播放时长与第一总播放时长的比例达到预设比例时,向服务器发送针对下一分片的获取请求,这种请求机制可以称为预判请求机制。
[0095] 预设比例阈值可以为50%或60%等数值,本申请对预设比例阈值的具体取值不做限定。
[0096] 对于预设比例阈值的设置,需要说明的是,在目标分片的播放过程中,客户端随时都可能接收到用户的关闭指令。当用户关闭待播放视频时,下一分片可能已经缓冲完成,关闭待播放视频必将导致用户流量的浪费,而由于浪费的流量为目标分片剩余部分的流量加上下一分片的流量,因此预设比例阈值的取值越大,浪费的流量越少。
[0097] 同时,虽然预设比例阈值的取值越大,越能节省用户流量,但也可能会导致,目标分片播放完毕,下一分片还没有缓冲完成的情况出现。这种情况会导致视频播放不流畅。
[0098] 因此,预设比例阈值可以根据当前的网络状态设定,以保证在目标分片播放完毕之前下一分片可以缓冲完成,这样才能在保证视频播放流畅的同时尽可能少地缓冲视频流量。
[0099] 另外,在确定满足预设的下一分片获取条件之后,还要确定下一分片不是最后一个分片。
[0100] 具体的,可以预先在目标分片的描述文件MPD中记录待播放视频的总的分片数量以及该目标分片是第几个分片的信息,客户端在接收到目标分片的描述文件时,可以根据描述文件中的上述信息确定下一分片是否为最后一个分片。
[0101] 也可以是,预先在描述文件中记录播放视频的总的分片数量,客户端对发送的目标分片的获取请求进行计数,当计数值为总的分片数量-1时,可以确定下一分片为最后一个分片。
[0102] 当目标分片是待播放视频的最后一个分片时,认为待播放视频的所有分片已经缓冲完成,客户端不再返回执行步骤S102,即结束循环过程,不进行后续处理即可。
[0103] 由上述内容可知,在本实施例中,针对待播放视频包含的每个分片,在满足预设的下一分片获取条件时,才向服务器发送针对下一分片的获取请求,然后接收服务器返回的下一分片,即缓冲下一分片。这种缓冲加载机制可以称为分段渐进式加载机制。而现有技术中,不管当前播放到哪个分片,也不管当前播放的分片已经播放了多长时间,只要一个分片缓存完,紧接着会缓冲下一个分片,直到所有分片缓冲完。应用本申请实施例,在当前分片播放过程的任一时刻,如果终端关闭上述待播放视频,终端最多只缓冲完下一分片,浪费的用户流量为当前播放分片的剩余部分和下一分片部分,因此能够尽可能减少对用户流量的浪费。
[0104] 在图1所示实施例的另一种实施方式中,为了进一步节省用户流量,第一个分片还可以为摘要分片。其中,所述摘要分片是服务器采用以下方式预先生成的:
[0105] 步骤1:获得待播放视频的第二总播放时长。其中,第二总播放时长可以从待播放视频的描述文件中获取,也可以从待播放视频的视频信息中获取。
[0106] 步骤2:根据第二总播放时长,确定所述摘要分片包含的视频帧数量。
[0107] 作为本实施例的一种具体实施方式,在确定所述摘要分片包含的视频帧数量之前,还可以判断第二总播放时长是否大于预设总播放时长阈值,如果是,则执行确定所述摘要分片包含的视频帧数量的步骤。
[0108] 其中,预设总播放时长阈值可以根据常见视频的总播放时长确定,例如,根据经验,常见视频的总播放时长一般在1~10分钟或更长时长,因此可以将预设总播放时长阈值设定为1分钟。
[0109] 为待播放视频设置摘要分片,主要是为了在较短时间内向用户呈现整个待播放视频的内容,让用户在较短时间内了解待播放视频的主要内容。如果待播放视频的总播放时长很短,小于预设总播放时长阈值,这时再为待播放视频设置摘要分片已经无意义,因此对于总播放时长小于预设总播放时长阈值的视频,无需设置摘要分片。
[0110] 当然,在实际应用中,摘要分片的生成也可以根据预先确定的目标片段生成。其中,目标片段可以是待播放视频中的精彩片段。精彩片段可以根据人工指定的方式确定。
[0111] 作为本实施例的另一种具体实施方式,上述步骤2,即根据第二总播放时长,确定所述摘要分片包含的视频帧数量,还可以包括:
[0112] 步骤2A:根据第二总播放时长,确定摘要分片的第三播放时长。
[0113] 具体的,根据第二总播放时长,确定摘要分片的第三播放时长,可以包括:将第二总播放时长的M分之一确定为摘要分片的第三总播放时长。其中,M的取值可以为大于1的数值。
[0114] 步骤2B:根据待播放视频的帧率,确定摘要分片的帧率。
[0115] 具体的,根据待播放视频的帧率,确定摘要分片的帧率,可以包括:将待播放视频的帧率的N分之一确定为摘要分片的帧率。其中,N的取值可以为大于1的数值。待播放视频的帧率可以从描述文件中获取。
[0116] 步骤2C:根据第三播放时长和摘要分片的码率,确定摘要分片包含的视频帧数量。
[0117] 具体的,根据第三播放时长和摘要分片的码率,确定摘要分片包含的视频帧数量,可以包括:将第三总播放时长和摘要分片的帧率的乘积,确定为摘要分片包含的视频帧数量。
[0118] 例如,设定M为20,N为10,第二总播放时长为10分钟,待播放视频的帧率为25帧/秒。那么可以确定第三总播放时长为:第二总播放时长*(1/M),即10分钟*(1/20)=30秒;可以确定摘要分片的帧率为:待播放视频的帧率*(1/N),即25帧/秒*(1/10)=2.5帧/秒。从而摘要分片包含的视频帧数量为:第三总播放时长*摘要分片的帧率,即为30秒*2.5帧/秒=75帧。
[0119] 作为本实施例的另一种具体实施方式,可以对上述实施例加以改进,可以将第三总播放时长设定为预设值,或者,将摘要分片的帧率设定为预设值,这些都是可行的。
[0120] 步骤3:从待播放视频中抽取所述视频帧数量个I帧。
[0121] 具体的,从待播放视频中抽取所述视频帧数量个I帧可以包括:首先确定待播放视频包含的总的I帧,从所述总的I帧中等间隔地抽取所述视频帧数量个I帧。
[0122] 需要说明的是,确定待播放视频包含的总的I帧属于现有技术,其具体过程不再赘述。
[0123] 作为一个例子,根据待播放视频生成摘要分片可以按照表1所示规则进行。
[0124] 表1摘要生成规则示例
[0125]
[0126] 如表1规则所述,小于1分钟的视频资源没有必要进行摘要抽取,直接进行播放即可。
[0127] 根据经验,移动终端点播观看的视频资源大部分都处在1~10分钟之间,因此可以采用等间隔抽取和时间戳放大的方法生成摘要分片。例如,视频A的I帧间隔为25,帧率为25帧/s,T=10min,那么A中共有10min×60s/min×25帧/s=15000帧,共有15000帧/25=600个I帧,共需抽取600×10%=60个I帧,这60个I帧就需要等间隔地在600个I帧中抽取,封装到一个摘要分片中,然后将每个I帧的时间戳设置为10×1/25=0.4s/帧,即400ms。
[0128] 对于大于10min的视频资源,摘要分片的播放时长应该控制在一定时间限制内,按10min媒体的摘要生成规则等比例压缩。上述情况中,10min媒体内容的摘要长度为60帧×
0.4s/帧=24秒,对于大于10min的视频,都要将摘要时长控制在24s,即等间隔地抽取60帧即可。
[0129] 步骤4:根据所抽取的I帧生成所述摘要分片。
[0130] 具体的,根据所抽取的I帧生成所述摘要分片可以包括:根据预设的摘要分片的码率值,将所抽取的I帧生成摘要分片。
[0131] 为了减少对用户流量的浪费,摘要分片可以采用低码率进行编码并封装。
[0132] 在生成摘要分片之后,还可以生成该摘要分片的描述文件MPD和摘要分片索引的参数信息。
[0133] 综上所述,在本实施例中,待播放视频的第一个分片为摘要分片,其中摘要分片是服务器根据待播放视频中的I帧并按照一定的规则生成的。当用户点播观看待播放视频时,客户端首先将摘要分片呈现给用户,用户可以根据摘要分片更准确地确定是否对该视频感兴趣,避免用户在观看到视频中间时才发现对该视频不感兴趣,从而关闭该视频,造成流量的浪费。这种为视频设置摘要分片的机制可以称为摘要预览机制,这种摘要预览机制的目的,即是希望以最小的码率、最少的资源和最短的时间为用户提供视频的摘要信息,让用户以最小的流量代价提前确定是否有兴趣观看该视频。
[0134] 需要说明的是,当第一个分片为摘要分片时,预设比例阈值可以设置得大一些,比如设置为70%或80%,因为在观看摘要分片时,用户更容易做出关闭该视频的决定,将预设比例阈值设置得大一些,可以让用户以最小的流量代价提前确定是否有兴趣观看该视频。
[0135] 在本申请的另一实施例中,为了适应终端的网络状态,提高用户体验,在图1所示实施例的基础上可以做出适当改进。步骤S102,即向服务器发送针对目标分片的获取请求可以按照图2所示流程示意图进行,具体包括:
[0136] 步骤S102A:向服务器发送针对目标分片的目标描述文件的获取请求。
[0137] 具体的,针对每一个分片,服务器端保存有该分片对应的不同码率版本的子分片。并且,描述文件中记录了该分片对应的每个子分片的码率和视频文件地址信息。
[0138] 步骤S102B:接收服务器返回的所述目标描述文件。
[0139] 其中,所述目标描述文件包括目标分片的不同码率版本的视频文件地址。
[0140] 步骤S102C:根据当前网络状态,确定目标分片的目标码率。
[0141] 由于在缓冲分片时,最多只缓冲当前播放分片的下一分片,终端的缓冲区不容易出现溢出的情况,因此,本实施例中根据当前网络状态确定目标分片的目标码率,无需考虑终端缓冲区的剩余容量。
[0142] 具体的,如果当前网络状态良好,即终端网络信号强,则可以将目标分片的较大码率确定为目标码率,这样用户在观看目标分片时可以有更好的体验。如果终端网络信号一般,则可以将目标分片的适中码率确定为目标码率。如果当前网络状态不佳,即终端网络信号差,则可以将目标分片的较小码率确定为目标码率,以保证用户在较短时间内缓冲完目标分片,从而使视频播放时更加流畅。
[0143] 步骤S102D:从所述目标描述文件包括的视频文件地址中,选择与目标码率匹配的目标视频文件地址。
[0144] 步骤S102E:根据目标视频文件地址,向服务器发送针对目标分片的获取请求。
[0145] 当服务器接收到针对目标分片的获取请求时,可以根据目标视频文件地址,确定目标分片,将确定的目标分片发送至终端。
[0146] 其中,步骤S106:在目标分片不是待播放视频的最后一个分片的情况下,将目标分片更新为目标分片的下一分片,并返回执行步骤S102A。
[0147] 综上所述,在本实施例中,服务器端保存有每个分片的不同码率版本的子分片,终端可以根据当前的网络状态选择下载合适的码率版本的子分片,保证用户观看视频的流畅性。在这种以每个分片为缓冲单元的分段渐进式加载机制中,根据当前的网络状态选择分片的码率版本,即可以以缓冲单元为最小的码率版本切换单元,无需根据客户端缓冲区大小来切换码率版本,因此能够降低分片码率版本的切换频率。这种码率选择机制称为分段码率自适应机制。
[0148] 在本申请的另一实施方式中,在图2所示实施例的基础上,步骤S105,满足预设的下一分片获取条件,具体可以包括:
[0149] 从所述目标描述文件中获取时间戳,所述时间戳用于表明从接收所述目标描述文件到发送针对下一分片的描述文件的获取请求之间的间隔时长,判断从所述目标描述文件的接收时刻开始的计时时长是否达到所述时间戳,如果是,则确定满足预设的下一分片获取条件。
[0150] 其中,所述第一个分片的描述文件中的时间戳小于所述第一个分片的总播放时长,除所述第一个分片之外的其他分片的描述文件中的时间戳等于所述其他分片的总播放时长。
[0151] 作为较佳的实施例,第一个分片的描述文件中的时间戳可以为第一个分片的总播放时长的60%左右。
[0152] 可以理解的是,在本实施例中,每个下一分片的获取时间都在距离上一分片结束播放之前的预设时长处。例如,如果第一个分片的总播放时长为2min,第一个分片的描述文件中的时间戳为第一个分片的总播放时长的60%,即为2min*60%=1.2min,那么预设时长为2min-1.2min=0.8min。也就是说,每个下一分片都在上一分片距离结束播放还有0.8min的时候开始缓冲加载。
[0153] 需要说明的是,在本实施例中,描述文件中的时间戳是由服务器预先设定的。在实际应用中,服务器可以采用描述文件MPD中的minimumUpdatePeriod字段来设置上述时间戳。
[0154] 如果待播放视频包含的每个分片的总播放时长在理论上是近似相等的,那么除第一分片之外的其他分片的描述文件中的时间戳可以均设置为相同的值,即分片的总播放时长。因此,第一总播放时长可以理解为每个分片的总播放时长。
[0155] 图3为本发明实施例提供的视频播放方法的一种原理示意图。其中,在服务器端,待播放视频包含摘要分片和摘要MPD、分片1和MPD1、分片2和MPD2、分片3和MPD3等。对应的,在本实施例中,在播放整个待播放视频时,分别会用到摘要预览机制、分段渐进式加载机制、预判请求机制和分段码率自适应机制。
[0156] 在终端,在播放整个待播放视频时,首先向服务器请求摘要分片,然后播放摘要分片,播放时间为T0~T2。在T1时刻时,向服务器请求分片1,分片1的播放时间为T2~T4。在T3时刻,向服务器请求分片2,分片2的播放时间为T4~T6。在T5时刻,向服务器请求分片3。后续过程与上述过程类似。不再赘述。
[0157] 图4为本申请实施例提供的视频播放装置的一种结构示意图,应用于终端,与图1所示方法实施例相对应。所述装置包括确定模块401、发送模块402、接收模块403、播放模块404、判断模块405和更新模块406。
[0158] 具体的,确定模块401,用于确定待播放视频的第一个分片为目标分片。
[0159] 在本实施例中,所述目标分片可以包括至少一个完整的图像组。
[0160] 发送模块402,用于向服务器发送针对所述目标分片的获取请求。
[0161] 接收模块403,用于接收所述服务器返回的所述目标分片。
[0162] 播放模块404,用于在满足播放条件时播放所述目标分片。
[0163] 更新模块405,用于当满足预设的下一分片获取条件时,当判断出所述目标分片的当前播放时长满足预设的下一分片获取条件时,在所述目标分片不是所述待播放视频的最后一个分片的情况下,将所述目标分片更新为所述目标分片的下一分片,并返回执行所述发送模块402。
[0164] 在图4所示实施例中,所述预设的下一分片获取条件具体可以包括:
[0165] 获取所述目标分片的当前播放时长和所述目标分片的第一总播放时长。
[0166] 计算所述当前播放时长与所述第一总播放时长的比例。
[0167] 判断所述比例是否达到预设比例阈值,如果是,则确定满足预设的下一分片获取条件。
[0168] 在图4所示实施例中,所述第一个分片为:摘要分片。其中,所述摘要分片是服务器采用以下方式预先生成的:
[0169] 获得所述待播放视频的第二总播放时长;
[0170] 根据所述第二总播放时长,确定所述摘要分片包含的视频帧数量;
[0171] 从所述待播放视频中抽取所述视频帧数量个I帧;
[0172] 根据所抽取的I帧生成所述摘要分片。
[0173] 在本申请的另一实施例中,可以对图4所示实施例加以改进。具体的,所述发送模块402可以包括第一发送子模块501、接收子模块502、确定子模块503、选择子模块504和第二发送子模块505。这些模块可以参见图5所示结构示意图。图5所示装置实施例与图2所示方法实施例相对应。
[0174] 其中,第一发送子模块501,用于向服务器发送针对所述目标分片的目标描述文件的获取请求;
[0175] 接收子模块502,用于接收所述服务器返回的所述目标描述文件;所述目标描述文件包括所述目标分片的不同码率版本的视频文件地址;
[0176] 确定子模块503,用于根据当前网络状态,确定所述目标分片的目标码率;
[0177] 选择子模块504,用于从所述目标描述文件包括的视频文件地址中,选择与所述目标码率匹配的目标视频文件地址;
[0178] 第二发送子模块505,用于根据所述目标视频文件地址,向所述服务器发送针对所述目标分片的获取请求。
[0179] 当更新模块405将所述目标分片更新为所述目标分片的下一分片之后,返回执行所述第一发送子模块501。
[0180] 在图5所示实施例中,所述预设的下一分片获取条件,包括:
[0181] 从所述目标描述文件中获取时间戳,所述时间戳用于表明从接收所述目标描述文件到发送针对下一分片的描述文件的获取请求之间的间隔时长;
[0182] 判断从所述目标描述文件的接收时刻开始的计时时长是否达到所述时间戳,如果是,则确定满足预设的下一分片获取条件;
[0183] 其中,所述第一个分片的描述文件中的时间戳小于所述第一个分片的总播放时长,除所述第一个分片之外的其他分片的描述文件中的时间戳等于所述其他分片的总播放时长。
[0184] 由于上述装置实施例是基于方法实施例得到的,与该方法具有相同的技术效果,因此装置实施例的技术效果在此不再赘述。
[0185] 对于装置实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。
[0186] 需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0187] 本领域普通技术人员可以理解,上述实施方式中的全部或部分步骤是能够通过程序指令相关的硬件来完成的,所述的程序可以存储于计算机可读取存储介质中。这里所称存储介质,是指ROM/RAM、磁碟、光盘等。
[0188] 以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均包含在本发明的保护范围内。