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

文档序号:14656085发布日期:2018-06-12 04:17阅读:219来源:国知局

本发明涉及网络技术领域,具体涉及一种视频播放方法及装置。



背景技术:

随着网络技术的发展,人们越来越依赖于从网络获取信息,比如观看视频。相比传统的视频观看方式,在移动设备上观看视频为人们提供了更多的便捷。由于视频的清晰度的提高,视频文件的大小也随之增大,如果采用传统先下载再播放模式则会增加用户的等待时间,降低产品的体验。因此,要想达到较好的效果,就需要实现对视频文件的流媒体播放。

在iOS平台上,现有视频的播放方式通常有以下三种:

第一种,iOS系统提供了AVFoundation框架来处理音视频,AVFoundation提供了AVPlayer与AVAsset等类来实现本地或者在线视频的播放。其中AVAsset需要通过待播放视频的URL(Uniform Resource Locator,统一资源定位符)初始化一个播放资源AVPlayerItem,然后将AVPlayerItem传给AVPlayer,AVPlayer基于AVPlayerItem播放视频。但是,这种方式是通过iOS系统的接口来实现,整个视频数据的下载过程都由iOS系统自动完成,开发者无法获取下载的数据,因此没办法对视频进行缓存,可控性较差,不利于扩展。

第二种,根据待播放视频的URL将视频下载到本地,再由播放器播放本地视频。但是这种方式,当视频较大,或者网络状况较差的时候,下载视频需要耗费的时间过长,严重影响用户的体验,造成用户流失。

第三种,创建一个本地代理服务器或者使用第三方库HTTP Sever作为本地代理服务器,然后在iOS系统开启Local Server服务,接着使用播放控件请求本地代理服务,本地代理服务器通过不断请求视频地址获取视频流,同时在请求的过程中把下载到的视频数据缓存到本地。最后将本地的缓存的数据拼接成数据流,交给播放控件,播放控件即可正常播放视频。但是这种方式,开发成本高,且,如果缓存多个视频并互相切换,本地代理服务器提供的数据很不稳定,崩溃概率非常大。

因此,如何在iOS平台上实现成本低且高效稳定的视频播放,成为本领域亟待解决的技术问题。



技术实现要素:

有鉴于此,本发明实施例提供一种视频播放方法及装置,能够在iOS平台上实现成本低且高效稳定的视频播放。

为实现上述目的,本发明实施例提供如下技术方案:

一种视频播放方法,包括:

接收视频播放请求;

解析所述视频播放请求,获得请求播放的视频的统一资源定位符URL;

根据所述URL判断本地缓存中是否缓存有完整的所述请求播放的视频;

如果是,则直接播放本地缓存中缓存的完整的所述请求播放的视频;

如果否,则确定所述URL所在的服务器,并向所述服务器发送至少一个视频下载请求,以使所述服务器每接收到一个视频下载请求都返回一个已下载视频段;将所述服务器返回的至少一个已下载视频段进行播放并保存在临时缓存中;判断所述服务器返回的至少一个已下载视频段是否是完整的所述请求播放的视频,如果是,则将所述临时缓存中保存的所述至少一个已下载视频段缓存至本地缓存。

可选的,所述判断所述服务器返回的至少一个已下载视频是否是完整的所述请求播放的视频,包括:

在播放所述至少一个已下载视频段的过程中如果收到停止播放指令,则判断所述服务器返回的所述至少一个已下载视频段不是完整的所述请求播放的视频。

可选的,所述停止播放指令包括:

与所述服务器之间的连接中断后重新连接。

可选的,所述方法还包括:

在与所述服务器之间的连接状态正常的情况下,接收到播放进度调整指令,且所述播放进度调整指令指示的待播放视频段还未下载时,显示正在加载的提示信息。

可选的,所述视频下载请求中包括偏移量信息,则在向所述服务器发送视频下载请求之前,所述方法还包括:

判断所述视频下载请求中包括的偏移量信息指示的偏移量是否大于本地缓存的偏移量,如果是,则向所述服务器发送所述视频下载请求,如果否,则调整所述下载请求中的包括的偏移量信息,使调整后的偏移量信息指示的偏移量大于本地缓存的偏移量。

一种视频播放装置,包括:

播放器模块,用于接收视频播放请求;

请求解析模块,用于解析所述视频播放请求,获得请求播放的视频的统一资源定位符URL;

数据缓存模块,用于根据所述URL判断本地缓存中是否缓存有完整的所述请求播放的视频;如果是,则控制所述播放器模块直接播放本地缓存中缓存的完整的所述请求播放的视频;如果否,则确定所述URL所在的服务器,并向所述服务器发送至少一个视频下载请求,以使所述服务器每接收到一个视频下载请求都返回一个已下载视频段;将所述服务器返回的至少一个已下载视频段进行播放并保存在临时缓存中;判断所述服务器返回的至少一个已下载视频段是否是完整的所述请求播放的视频,如果是,则将所述临时缓存中保存的所述至少一个已下载视频段缓存至本地缓存。

可选的,所述数据缓存模块具体用于:

在播放所述至少一个已下载视频段的过程中如果收到停止播放指令,则判断所述服务器返回的所述至少一个已下载视频段不是完整的所述请求播放的视频。

可选的,所述停止播放指令包括:

与所述服务器之间的连接中断后重新连接。

可选的,所述播放器模块还用于:

在与所述服务器之间的连接状态正常的情况下,接收到播放进度调整指令,且所述播放进度调整指令指示的待播放视频段还未下载时,显示正在加载的提示信息。

可选的,所述视频下载请求中包括偏移量信息,则所述数据下载模块还用于:

在向所述服务器发送视频下载请求之前,判断所述视频下载请求中包括的偏移量信息指示的偏移量是否大于本地缓存的偏移量,如果是,则向所述服务器发送所述视频下载请求,如果否,则调整所述下载请求中的包括的偏移量信息,使调整后的偏移量信息指示的偏移量大于本地缓存的偏移量。

基于上述技术方案,本发明实施例中公开了一种视频播放方法及装置,接收视频播放请求;解析所述视频播放请求,获得请求播放的视频的统一资源定位符URL;根据所述URL判断本地缓存中是否缓存有完整的所述请求播放的视频;如果是,则直接播放本地缓存中缓存的完整的所述请求播放的视频;如果否,则确定所述URL所在的服务器,并向所述服务器发送至少一个视频下载请求,以使所述服务器每接收到一个视频下载请求都返回一个已下载视频段;将所述服务器返回的至少一个已下载视频段进行播放并保存在临时缓存中;判断所述服务器返回的至少一个已下载视频段是否是完整的所述请求播放的视频,如果是,则将所述临时缓存中保存的所述至少一个已下载视频段缓存至本地缓存。基于上述方法及装置,能够在iOS平台上实现成本低且高效稳定的视频播放。

附图说明

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

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

图2为本发明实施例提供的又一种视频播放方法的流程示意图;

图3为本发明实施例提供的再一种视频播放方法的流程示意图;

图4为本发明实施例公开的一种视频播放装置的结构示意图。

具体实施方式

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

在iOS平台上,现有视频的播放方式通常有以下三种:

第一种,iOS系统提供了AVFoundation框架来处理音视频,AVFoundation提供了AVPlayer与AVAsset等类来实现本地或者在线视频的播放。其中AVAsset需要通过待播放视频的URL(Uniform Resource Locator,统一资源定位符)初始化一个播放资源AVPlayerItem,然后将AVPlayerItem传给AVPlayer,AVPlayer基于AVPlayerItem播放视频。但是,这种方式是通过iOS系统的接口来实现,整个视频数据的下载过程都由iOS系统自动完成,开发者无法获取下载的数据,因此没办法对视频进行缓存,可控性较差,不利于扩展。

第二种,根据待播放视频的URL将视频下载到本地,再由播放器播放本地视频。但是这种方式,当视频较大,或者网络状况较差的时候,下载视频需要耗费的时间过长,严重影响用户的体验,造成用户流失。

第三种,创建一个本地代理服务器或者使用第三方库HTTP Sever作为本地代理服务器,然后在iOS系统开启Local Server服务,接着使用播放控件请求本地代理服务,本地代理服务器通过不断请求视频地址获取视频流,同时在请求的过程中把下载到的视频数据缓存到本地。最后将本地的缓存的数据拼接成数据流,交给播放控件,播放控件即可正常播放视频。但是这种方式,开发成本高,且,如果缓存多个视频并互相切换,本地代理服务器提供的数据很不稳定,崩溃概率非常大。

因此,本发明实施例提供一种视频播放方法及装置,能够在iOS平台上实现成本低且高效稳定的视频播放。下面将通过以下实施例详细说明。

请参阅附图1,图1为本发明实施例提供的一种视频播放方法的流程示意图,该方法具体包括如下步骤:

步骤S100,接收视频播放请求;

步骤S110,解析所述视频播放请求,获得请求播放的视频的统一资源定位符URL;

步骤S120,根据所述URL判断本地缓存中是否缓存有完整的所述请求播放的视频;如果是,则执行步骤S130,如果否,则执行步骤S140至步骤S160。

步骤S130,直接播放本地缓存中缓存的完整的所述请求播放的视频;

步骤S140,确定所述URL所在的服务器,并向所述服务器发送至少一个视频下载请求,以使所述服务器每接收到一个视频下载请求都返回一个已下载视频段;

步骤S150,将所述服务器返回的至少一个已下载视频段进行播放并保存在临时缓存中;

步骤S160,判断所述服务器返回的至少一个已下载视频段是否是完整的所述请求播放的视频,如果是,则将所述临时缓存中保存的所述至少一个已下载视频段缓存至本地缓存。

具体的,当所述请求播放的视频包含多个视频段时,先向所述服务器发送第一个视频下载请求,所述第一个视频下载请求用于指示向所述服务器请求下载所述请求播放的视频的第一个视频段,接收所述服务器返回的所述第一个视频段,并将所述第一个视频段保存在临时缓存中,播放器从所述临时缓存中获取所述第一个视频段,进行播放,当所述第一个视频段即将播放结束时,就向所述服务器发送第二个视频下载请求,所述第二个视频下载请求用于指示向所述服务器请求下载所述请求播放的视频的第二个视频段,接收所述服务器返回的所述第二个视频段,并将所述第二个视频段保存在临时缓存中与所述第一个视频段进行拼接,判断拼接完成的视频是否是所述请求播放的视频的完整视频,如果是,就将拼接完成的视频转移到本地缓存,如果不是,就继续向所述服务器发送视频下载请求,直至所述请求播放的视频的完整视频全部下载完毕并在所述本地缓存中拼接完成为止。

可选的,所述判断所述服务器返回的至少一个已下载视频是否是完整的所述请求播放的视频,包括:在播放所述至少一个已下载视频段的过程中如果收到停止播放指令,则判断所述服务器返回的所述至少一个已下载视频段不是完整的所述请求播放的视频。

可选的,所述停止播放指令包括:与所述服务器之间的连接中断后重新连接。

本实施例中公开了一种视频播放方法,接收视频播放请求;解析所述视频播放请求,获得请求播放的视频的统一资源定位符URL;根据所述URL判断本地缓存中是否缓存有完整的所述请求播放的视频;如果是,则直接播放本地缓存中缓存的完整的所述请求播放的视频;如果否,则确定所述URL所在的服务器,并向所述服务器发送至少一个视频下载请求,以使所述服务器每接收到一个视频下载请求都返回一个已下载视频段;将所述服务器返回的至少一个已下载视频段进行播放并保存在临时缓存中;判断所述服务器返回的至少一个已下载视频段是否是完整的所述请求播放的视频,如果是,则将所述临时缓存中保存的所述至少一个已下载视频段缓存至本地缓存。基于上述方法,能够在iOS平台上实现成本低且高效稳定的视频播放。

请参阅附图2,图2为本发明实施例提供的又一种视频播放方法的流程示意图,该方法具体包括如下步骤:

步骤S200,接收视频播放请求;

步骤S210,解析所述视频播放请求,获得请求播放的视频的统一资源定位符URL;

步骤S220,根据所述URL判断本地缓存中是否缓存有完整的所述请求播放的视频;如果是,则执行步骤S230,如果否,则执行步骤S240至步骤S270。

步骤S230,直接播放本地缓存中缓存的完整的所述请求播放的视频;

步骤S240,确定所述URL所在的服务器,并向所述服务器发送至少一个视频下载请求,以使所述服务器每接收到一个视频下载请求都返回一个已下载视频段;

步骤S250,将所述服务器返回的至少一个已下载视频段进行播放并保存在临时缓存中;

步骤S260,在与所述服务器之间的连接状态正常的情况下,接收到播放进度调整指令,且所述播放进度调整指令指示的待播放视频段还未下载时,显示正在加载的提示信息。

步骤S270,判断所述服务器返回的至少一个已下载视频段是否是完整的所述请求播放的视频,如果是,则将所述临时缓存中保存的所述至少一个已下载视频段缓存至本地缓存。

可选的,所述判断所述服务器返回的至少一个已下载视频是否是完整的所述请求播放的视频,包括:在播放所述至少一个已下载视频段的过程中如果收到停止播放指令,则判断所述服务器返回的所述至少一个已下载视频段不是完整的所述请求播放的视频。

可选的,所述停止播放指令包括:与所述服务器之间的连接中断后重新连接。

本实施例中,在与所述服务器之间的连接状态正常的情况下,接收到播放进度调整指令,且所述播放进度调整指令指示的待播放视频段还未下载时,显示正在加载的提示信息。能够提升用户体验。

请参阅附图3,图3为本发明实施例提供的再一种视频播放方法的流程示意图,该方法具体包括如下步骤:

步骤S300,接收视频播放请求;

步骤S310,解析所述视频播放请求,获得请求播放的视频的统一资源定位符URL;

步骤S320,根据所述URL判断本地缓存中是否缓存有完整的所述请求播放的视频;如果是,则执行步骤S330,如果否,则执行步骤S340至步骤S380。

步骤S330,直接播放本地缓存中缓存的完整的所述请求播放的视频;

步骤S340,确定所述URL所在的服务器,生成包括偏移量信息的视频下载请求,判断所述视频下载请求中包括的偏移量信息指示的偏移量是否大于本地缓存的偏移量,如果是,则向所述服务器发送所述视频下载请求,如果否,则调整所述下载请求中的包括的偏移量信息,使调整后的偏移量信息指示的偏移量大于本地缓存的偏移量。

步骤S350,向所述服务器发送至少一个视频下载请求,以使所述服务器每接收到一个视频下载请求都返回一个已下载视频段;

步骤S360,将所述服务器返回的至少一个已下载视频段进行播放并保存在临时缓存中;

步骤S370,在与所述服务器之间的连接状态正常的情况下,接收到播放进度调整指令,且所述播放进度调整指令指示的待播放视频段还未下载时,显示正在加载的提示信息。

步骤S380,判断所述服务器返回的至少一个已下载视频段是否是完整的所述请求播放的视频,如果是,则将所述临时缓存中保存的所述至少一个已下载视频段缓存至本地缓存。

可选的,所述判断所述服务器返回的至少一个已下载视频是否是完整的所述请求播放的视频,包括:在播放所述至少一个已下载视频段的过程中如果收到停止播放指令,则判断所述服务器返回的所述至少一个已下载视频段不是完整的所述请求播放的视频。

可选的,所述停止播放指令包括:与所述服务器之间的连接中断后重新连接。

本实施例中,所述视频下载请求中包括偏移量信息,则在向所述服务器发送视频下载请求之前,所述方法还包括:判断所述视频下载请求中包括的偏移量信息指示的偏移量是否大于本地缓存的偏移量,如果是,则向所述服务器发送所述视频下载请求,如果否,则确定所述URL所在的服务器,并向所述服务器发送至少一个视频下载请求,以使所述服务器每接收到一个视频下载请求都返回一个已下载视频段;将所述服务器返回的至少一个已下载视频段进行播放并保存在临时缓存中;判断所述服务器返回的至少一个已下载视频段是否是完整的所述请求播放的视频,如果是,则将所述临时缓存中保存的所述至少一个已下载视频段缓存至本地缓存。基于此,能够保证视频下载请求的有效性,从而能够进一步保证在iOS平台上实现成本低且高效稳定的视频播放。

请参阅附图4,图4为本发明实施例公开的一种视频播放装置的结构示意图,该装置包括:

播放器模块100,用于接收视频播放请求;

请求解析模块110,用于解析所述视频播放请求,获得请求播放的视频的统一资源定位符URL;

数据缓存模块120,用于根据所述URL判断本地缓存中是否缓存有完整的所述请求播放的视频;如果是,则控制所述播放器模块直接播放本地缓存中缓存的完整的所述请求播放的视频;如果否,则确定所述URL所在的服务器,并向所述服务器发送至少一个视频下载请求,以使所述服务器每接收到一个视频下载请求都返回一个已下载视频段;将所述服务器返回的至少一个已下载视频段进行播放并保存在临时缓存中;判断所述服务器返回的至少一个已下载视频段是否是完整的所述请求播放的视频,如果是,则将所述临时缓存中保存的所述至少一个已下载视频段缓存至本地缓存。

可选的,所述数据缓存模块具体用于:

在播放所述至少一个已下载视频段的过程中如果收到停止播放指令,则判断所述服务器返回的所述至少一个已下载视频段不是完整的所述请求播放的视频。

可选的,所述停止播放指令包括:

与所述服务器之间的连接中断后重新连接。

可选的,所述播放器模块还用于:

在与所述服务器之间的连接状态正常的情况下,接收到播放进度调整指令,且所述播放进度调整指令指示的待播放视频段还未下载时,显示正在加载的提示信息。

可选的,所述视频下载请求中包括偏移量信息,则所述数据下载模块还用于:

在向所述服务器发送视频下载请求之前,判断所述视频下载请求中包括的偏移量信息指示的偏移量是否大于本地缓存的偏移量,如果是,则向所述服务器发送所述视频下载请求,如果否,则调整所述下载请求中的包括的偏移量信息,使调整后的偏移量信息指示的偏移量大于本地缓存的偏移量。

需要说明的是,上述各个模块的具体功能实现已在方法实施例说明,本实施例不再赘述。

综上所述:

本发明实施例中公开了一种视频播放方法及装置,接收视频播放请求;解析所述视频播放请求,获得请求播放的视频的统一资源定位符URL;根据所述URL判断本地缓存中是否缓存有完整的所述请求播放的视频;如果是,则直接播放本地缓存中缓存的完整的所述请求播放的视频;如果否,则确定所述URL所在的服务器,并向所述服务器发送至少一个视频下载请求,以使所述服务器每接收到一个视频下载请求都返回一个已下载视频段;将所述服务器返回的至少一个已下载视频段进行播放并保存在临时缓存中;判断所述服务器返回的至少一个已下载视频段是否是完整的所述请求播放的视频,如果是,则将所述临时缓存中保存的所述至少一个已下载视频段缓存至本地缓存。基于上述方法及装置,能够在iOS平台上实现成本低且高效稳定的视频播放。

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

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

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

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

在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。

存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。存储器是计算机可读介质的示例。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。

还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。

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

以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

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