一种iOS跨页面视频播放方法、装置、设备及存储介质转让专利

申请号 : CN202111636020.4

文献号 : CN114501134B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 麦淼邹磊钟坤斌

申请人 : 广东南方新媒体科技有限公司

摘要 :

本发明公开了一种iOS跨页面视频播放方法、装置、设备及存储介质,包括:每一次目标视频进行播放前,创建播放模型对象;响应于用户的转场手势交互指令后,根据预设转场上下文参数和预设转场持续时间,对所述视频播放器进行跨页面转场;在所述视频播放器进行跨页面转场后,判断是否调用了所述续播视频API;若是,则从所述资源加载请求对象中获取请求数据,并在本地缓存中查询所述目标视频对应保存的播放进度,从而对所述目标视频进行续播;若否,则停止视频播放,对所述播放模型对象进行重置操作,并从重置操作后的资源加载请求对象中获取请求数据,从而对所述目标视频进行重新播放。本发明解决现有技术在多页面切换时重复缓存视频的问题。

权利要求 :

1.一种iOS跨页面视频播放方法,其特征在于,包括:

每一次目标视频进行播放前,创建播放模型对象;其中,所述播放模型对象包括视频播放器、资源加载请求对象和续播视频API,所述目标视频作为当前视频播放的资源加载请求对象;

响应于用户的转场手势交互指令后,根据预设转场上下文参数和预设转场持续时间,对所述视频播放器进行跨页面转场;

在所述视频播放器进行跨页面转场后,判断是否调用了所述续播视频API;

若是,则从所述资源加载请求对象中获取请求数据,并在本地缓存中查询所述目标视频对应保存的播放进度,从而对所述目标视频进行续播;

若否,则停止视频播放,对所述播放模型对象进行重置操作,并从重置操作后的资源加载请求对象中获取请求数据,从而对所述目标视频进行重新播放。

2.如权利要求1所述的一种iOS跨页面视频播放方法,其特征在于,所述响应于用户的转场手势交互指令后,根据预设转场上下文参数和预设转场持续时间,对所述视频播放器进行跨页面转场,具体为:响应于用户的手势交互指令后,根据预设转场上下文参数,获取容器视图和动画目标控制器,将预设转场动画结束时的所述动画目标控制器的视图添加至所述容器视图中,并确定所述预设转场动画的起始坐标值和终止坐标值,并将预设转场持续时间传至所述预设转场动画中,计算出所述视频播放器在所述动画目标控制器的视图上的位置,并在所述预设转场动画结束的回调中用预设转场上下文参数结束转场过渡,从而完成所述视频播放器进行跨页面转场。

3.如权利要求1所述的一种iOS跨页面视频播放方法,其特征在于,所述目标视频进行播放,具体为:根据所述资源加载请求对象,获取所述资源加载请求对象的请求数据;所述请求数据包括请求范围和请求地址;

对所述资源加载请求对象进行分片下载,以使在每一个数据片段下载过程中,根据预设的下载范围和所述请求地址,生成下载任务,并向服务器发出下载请求,等待接收到所述服务器的响应后,根据所述下载任务,对所述资源加载请求对象的数据片段进行下载;

每下载完成一个数据片段后,将下载后的数据片段填充至视频播放器中播放,记录播放时间,同时对下载后的数据片段和记录的播放时间根据所述请求地址进行本地缓存。

4.如权利要求3所述的一种iOS跨页面视频播放方法,其特征在于,所述将下载后的数据片段填充至视频播放器中播放,记录播放时间,同时对下载后的数据片段和记录的播放时间根据所述请求地址进行本地缓存,具体为:记录下载后的数据片段的偏移量以及长度,将下载后的数据片段填充至视频播放器中播放,记录播放时间,获取所述请求地址的MD5值,根据下载后的数据片段的偏移量以及长度,对所述播放时间和下载后的数据片段依据所述请求地址进行本地缓存。

5.如权利要求4所述的一种iOS跨页面视频播放方法,其特征在于,所述从所述资源加载请求对象中获取请求数据,并在本地缓存中查询所述目标视频对应保存的播放进度,从而对所述目标视频进行续播,具体为:从所述资源加载请求对象中获取转场后的请求数据,查询转场后请求数据中的请求地址对应的播放时间,并根据所述请求地址的MD5值,查找所述目标视频的数据对应的本地缓存,并通过转场后的下载请求,获取并根据转场后下载的数据片段所对应的偏移量以及长度,当本地缓存中有对应的数据片段与转场后下载的数据片段相对应,则直接快进视频至所述播放时间,并提供本地缓存中对应的数据片段进行续播。

6.一种iOS跨页面视频播放装置,其特征在于,包括:创建模块、转场模块、判断模块、第一执行模块和第二执行模块;

所述创建模块,用于每一次目标视频进行播放前,创建播放模型对象;其中,所述播放模型对象包括视频播放器、资源加载请求对象和续播视频API,所述目标视频作为当前视频播放的资源加载请求对象;

所述转场模块,用于响应于用户的转场手势交互指令后,根据预设转场上下文参数和预设转场持续时间,对所述视频播放器进行跨页面转场;

所述判断模块,用于在所述视频播放器进行跨页面转场后,判断是否调用了所述续播视频API;

所述第一执行模块,用于若调用了所述续播视频API,则从所述资源加载请求对象中获取请求数据,并在本地缓存中查询所述目标视频对应保存的播放进度,从而对所述目标视频进行续播;

所述第二执行模块,用于若没有调用所述续播视频API,则停止视频播放,对所述播放模型对象进行重置操作,并从重置操作后的资源加载请求对象中获取请求数据,从而对所述目标视频进行重新播放。

7.如权利要求6所述的一种iOS跨页面视频播放装置,其特征在于,还包括:请求模块、下载模块和缓存模块;

所述请求模块,用于根据所述资源加载请求对象,获取所述资源加载请求对象的请求数据;所述请求数据包括请求范围和请求地址;

所述下载模块,用于对所述资源加载请求对象进行分片下载,以使在每一个数据片段下载过程中,根据预设的下载范围和所述请求地址,生成下载任务,并向服务器发出下载请求,等待接收到所述服务器的响应后,根据所述下载任务,对所述资源加载请求对象的数据片段进行下载;

所述缓存模块,用于每下载完成一个数据片段后,将下载后的数据片段填充至视频播放器中播放,记录播放时间,同时对下载后的数据片段和记录的播放时间根据所述请求地址进行本地缓存。

8.如权利要求6所述的一种iOS跨页面视频播放装置,其特征在于,所述转场模块,用于响应于用户的转场手势交互指令后,根据预设转场上下文参数和预设转场持续时间,对所述视频播放器进行跨页面转场,具体为:响应于用户的手势交互指令后,根据预设转场上下文参数,获取容器视图和动画目标控制器,将预设转场动画结束时的所述动画目标控制器的视图添加至所述容器视图中,并确定所述预设转场动画的起始坐标值和终止坐标值,并将预设转场持续时间传至所述预设转场动画中,计算出所述视频播放器在所述动画目标控制器的视图上的位置,并在所述预设转场动画结束的回调中用预设转场上下文参数结束转场过渡,从而完成所述视频播放器进行跨页面转场。

9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括存储的计算机程序;其中,所述计算机程序在运行时控制所述计算机可读存储介质所在的设备执行如权利要求1-5中任一项所述的iOS跨页面视频播放方法。

10.一种终端设备,其特征在于,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器在执行所述计算机程序时实现如权利要求1-5中任一项所述的iOS跨页面视频播放方法。

说明书 :

一种iOS跨页面视频播放方法、装置、设备及存储介质

技术领域

[0001] 本发明涉及音视频数据处理领域,尤其涉及一种iOS跨页面视频播放方法、装置、设备及存储介质。

背景技术

[0002] 目前,iOS端播放视频主要使用系统自带的AVPlayer进行播放,AVPlayer已经对底层诸如音视频采集、解码编码等细节进行封装,应用层并不需要关心这些实现细节,所以使用更方便简单。但AVPlayer并不提供缓存相关的API,因此无法知道AVPlayer的缓存在哪里,从而无法充分利用缓存实现跨页面间的同一视频无缝接续播放。经研究发现可通过利用AVAssetResourceLoaderDelegate(自定义音视频流加载器代理)控制视频数据流的方式实现缓存的控制,因此在使用AVPlayer播放视频前,都需要对AVPlayer添加自定义音视频流加载器代理,来实现对音视频的播放与缓存。而UIViewControllerTransitioning(UI视觉转场过渡控制)是苹果UIKit框架内的一个转场协议,UIKit隶属于Cocoa Touch(Cocoa Touch由苹果公司提供的软件开发api,用于开发iPhone\iPod\iPad上的软件),属于iPhone OS侧的UI框架,与Mac OS侧中鼠标执行事件的AppKit框架不同,它主要是适用于与手势交互的界面系统,而UIViewControllerTransitioning协议主要用于控制器之间的跳转时的转场,可以通过自定义动画类和交互类,实现不同的转场动画序列达到不同的效果,而从适应更多的跳转应用场景。
[0003] 但由于当前移动应用终端上网络环境的不确定性,导致了视频播放会不时地受到网络环境的影响,且在信息流列表到详情页的转场多页面切换时重复缓存视频,既浪费用户流量,又浪费内存空间,同时也导致了播放的响应速度变慢。
[0004] 为了让用户无感知的播放已经播放过的视频,即无需多次下载同一个媒体文件为了给用户提供更加完善的使用体验,特别在当今以多媒体为主流的网络时代,各种缓存技术也就显得尤为重要,所以本领域技术人员有动机开发基于AVAssetResourceLoader和UIViewControllerTransitioning协议技术的跨页面跳转的视频无缝续播技术。

发明内容

[0005] 本发明提供了一种iOS跨页面视频播放方法、装置、设备及存储介质,以解决现有技术中在多页面切换时重复缓存视频的技术问题。
[0006] 为了解决上述技术问题,本发明实施例提供了一种iOS跨页面视频播放方法,包括:
[0007] 每一次目标视频进行播放前,创建播放模型对象;其中,所述播放模型对象包括视频播放器、资源加载请求对象和续播视频API,所述目标视频作为当前视频播放的资源加载请求对象;
[0008] 响应于用户的转场手势交互指令后,根据预设转场上下文参数和预设转场持续时间,对所述视频播放器进行跨页面转场;
[0009] 在所述视频播放器进行跨页面转场后,判断是否调用了所述续播视频API;
[0010] 若是,则从所述资源加载请求对象中获取请求数据,并在本地缓存中查询所述目标视频对应保存的播放进度,从而对所述目标视频进行续播;
[0011] 若否,则停止视频播放,对所述播放模型对象进行重置操作,并从重置操作后的资源加载请求对象中获取请求数据,从而对所述目标视频进行重新播放。
[0012] 作为优选方案,所述响应于用户的转场手势交互指令后,根据预设转场上下文参数和预设转场持续时间,对所述视频播放器进行跨页面转场,具体为:
[0013] 响应于用户的手势交互指令后,根据预设转场上下文参数,获取容器视图和动画目标控制器,将预设转场动画结束时的所述动画目标控制器的视图添加至所述容器视图中,并确定所述预设转场动画的起始坐标值和终止坐标值,并将预设转场持续时间传至所述预设转场动画中,计算出所述视频播放器在所述动画目标控制器的视图上的位置,并在所述预设转场动画结束的回调中用预设转场上下文参数结束转场过渡,从而完成所述视频播放器进行跨页面转场。
[0014] 作为优选方案,所述目标视频进行播放,具体为:
[0015] 根据所述资源加载请求对象,获取所述资源加载请求对象的请求数据;所述请求数据包括请求范围和请求地址;
[0016] 对所述资源加载请求对象进行分片下载,以使在每一个数据片段下载过程中,根据预设的下载范围和所述请求地址,生成下载任务,并向服务器发出下载请求,等待接收到所述服务器的响应后,根据所述下载任务,对所述资源加载请求对象的数据片段进行下载;
[0017] 每下载完成一个数据片段后,将下载后的数据片段填充至视频播放器中播放,记录播放时间,同时对下载后的数据片段和记录的播放时间根据所述请求地址进行本地缓存。
[0018] 作为优选方案,所述将下载后的数据片段填充至视频播放器中播放,记录播放时间,同时对下载后的数据片段和记录的播放时间根据所述请求地址进行本地缓存,具体为:
[0019] 记录下载后的数据片段的偏移量以及长度,将下载后的数据片段填充至视频播放器中播放,记录播放时间,获取所述请求地址的MD5值,根据下载后的数据片段的偏移量以及长度,对所述播放时间和下载后的数据片段依据所述请求地址进行本地缓存。
[0020] 作为优选方案,所述从所述资源加载请求对象中获取请求数据,并在本地缓存中查询所述目标视频对应保存的播放进度,从而对所述目标视频进行续播,具体为:
[0021] 从所述资源加载请求对象中获取转场后的请求数据,查询转场后请求数据中的请求地址对应的播放时间,并根据所述请求地址的MD5值,查找所述目标视频的数据对应的本地缓存,并通过转场后的下载请求,获取并根据转场后下载的数据片段所对应的偏移量以及长度,当本地缓存中有对应的数据片段与转场后下载的数据片段相对应,则直接快进视频至所述播放时间,并提供本地缓存中对应的数据片段进行续播。
[0022] 相应地,本发明还提供一种iOS跨页面视频播放装置,包括:创建模块、转场模块、判断模块、第一执行模块和第二执行模块;
[0023] 所述创建模块,用于每一次目标视频进行播放前,创建播放模型对象;其中,所述播放模型对象包括视频播放器、资源加载请求对象和续播视频API,所述目标视频作为当前视频播放的资源加载请求对象;
[0024] 所述转场模块,用于响应于用户的转场手势交互指令后,根据预设转场上下文参数和预设转场持续时间,对所述视频播放器进行跨页面转场;
[0025] 所述判断模块,用于在所述视频播放器进行跨页面转场后,判断是否调用了所述续播视频API;
[0026] 所述第一执行模块,用于若调用了所述续播视频API,则从所述资源加载请求对象中获取请求数据,并在本地缓存中查询所述目标视频对应保存的播放进度,从而对所述目标视频进行续播;
[0027] 所述第二执行模块,用于若没有调用所述续播视频API,则停止视频播放,对所述播放模型对象进行重置操作,并从重置操作后的资源加载请求对象中获取请求数据,从而对所述目标视频进行重新播放。
[0028] 作为优选方案,还包括:请求模块、下载模块和缓存模块;
[0029] 所述请求模块,用于根据所述资源加载请求对象,获取所述资源加载请求对象的请求数据;所述请求数据包括请求范围和请求地址;
[0030] 所述下载模块,用于对所述资源加载请求对象进行分片下载,以使在每一个数据片段下载过程中,根据预设的下载范围和所述请求地址,生成下载任务,并向服务器发出下载请求,等待接收到所述服务器的响应后,根据所述下载任务,对所述资源加载请求对象的数据片段进行下载;
[0031] 所述缓存模块,用于每下载完成一个数据片段后,将下载后的数据片段填充至视频播放器中播放,记录播放时间,同时对下载后的数据片段和记录的播放时间根据所述请求地址进行本地缓存。
[0032] 作为优选方案,所述转场模块,用于响应于用户的转场手势交互指令后,根据预设转场上下文参数和预设转场持续时间,对所述视频播放器进行跨页面转场,具体为:
[0033] 响应于用户的手势交互指令后,根据预设转场上下文参数,获取容器视图和动画目标控制器,将预设转场动画结束时的所述动画目标控制器的视图添加至所述容器视图中,并确定所述预设转场动画的起始坐标值和终止坐标值,并将预设转场持续时间传至所述预设转场动画中,计算出所述视频播放器在所述动画目标控制器的视图上的位置,并在所述预设转场动画结束的回调中用预设转场上下文参数结束转场过渡,从而完成所述视频播放器进行跨页面转场。
[0034] 作为优选方案,所述将下载后的数据片段填充至视频播放器中播放,记录播放时间,同时对下载后的数据片段和记录的播放时间根据所述请求地址进行本地缓存,具体为:
[0035] 记录下载后的数据片段的偏移量以及长度,将下载后的数据片段填充至视频播放器中播放,记录播放时间,获取所述请求地址的MD5值,根据下载后的数据片段的偏移量以及长度,对所述播放时间和下载后的数据片段依据所述请求地址进行本地缓存。
[0036] 作为优选方案,所述从所述资源加载请求对象中获取请求数据,并在本地缓存中查询所述目标视频对应保存的播放进度,从而对所述目标视频进行续播,具体为:
[0037] 从所述资源加载请求对象中获取转场后的请求数据,查询转场后请求数据中的请求地址对应的播放时间,并根据所述请求地址的MD5值,查找所述目标视频的数据对应的本地缓存,并通过转场后的下载请求,获取并根据转场后下载的数据片段所对应的偏移量以及长度,当本地缓存中有对应的数据片段与转场后下载的数据片段相对应,则直接快进视频至所述播放时间,并提供本地缓存中对应的数据片段进行续播。
[0038] 相应地,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质包括存储的计算机程序;其中,所述计算机程序在运行时控制所述计算机可读存储介质所在的设备执行如上任一所述的iOS跨页面视频播放方法。
[0039] 相应地,本发明还提供一种终端设备,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器在执行所述计算机程序时实现如上任一所述的iOS跨页面视频播放方法。
[0040] 相比于现有技术,本发明实施例具有如下有益效果:
[0041] 本发明的技术方案通过在视频播放前创建播放模型对象,从而能够对对视频的播放进行控制,根据预设转场上下文参数和预设转场持续时间,对所述视频播放器进行跨页面转场,并通过播放模型对象中的API,来判断转场后的视频播放器是否需要进行续播,并从资源加载请求对象中获取请求数据,并在本地缓存中查询目标视频对应保存的播放进度,从而对目标视频进行续播,使得用户能够无感地播放已经缓存过的视频,提高了播放的响应速度,避免了对同一个视频进行多次缓存,导致了移动终端对流量的重复消耗。

附图说明

[0042] 图1:为本发明实施例所提供的一种iOS跨页面视频播放方法的步骤流程图;
[0043] 图2:为本发明实施例所提供的一种iOS跨页面视频播放方法中的视频缓存流程图;
[0044] 图3:为本发明实施例所提供的一种iOS跨页面视频播放装置的结构示意图;
[0045] 图4:为本发明实施例所提供的一种iOS跨页面视频播放装置中的用于下载与缓存的模块结构示意图。

具体实施方式

[0046] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0047] 实施例一
[0048] 请参照图1,为本发明实施例提供的一种iOS跨页面视频播放方法,包括一下步骤S101-S105:
[0049] S101:每一次目标视频进行播放前,创建播放模型对象;其中,所述播放模型对象包括视频播放器、资源加载请求对象和续播视频API,所述目标视频作为当前视频播放的资源加载请求对象。
[0050] 在本实施例中,目标视频进行播放,具体地,根据所述资源加载请求对象,获取所述资源加载请求对象的请求数据;所述请求数据包括请求范围和请求地址;对所述资源加载请求对象进行分片下载,以使在每一个数据片段下载过程中,根据预设的下载范围和所述请求地址,生成下载任务,并向服务器发出下载请求,等待接收到所述服务器的响应后,根据所述下载任务,对所述资源加载请求对象的数据片段进行下载;每下载完成一个数据片段后,将下载后的数据片段填充至视频播放器中播放,记录播放时间,同时对下载后的数据片段和记录的播放时间根据所述请求地址进行本地缓存。
[0051] 具体地,每下载完成一个数据片段后,记录下载后的数据片段的偏移量以及长度,将下载后的数据片段填充至视频播放器中播放,记录播放时间,获取所述请求地址的MD5值,根据下载后的数据片段的偏移量以及长度,对所述播放时间和下载后的数据片段依据所述请求地址进行本地缓存。
[0052] 需要说明的是,视频播放器为iOS系统自带的AVPlayer,AVPlayer播放器在播放时默认不会进行缓存处理,等到下次在播放时又需要重新下载,因此在目标视频播放前,需要创建播放模型对象,并实现一个自定义类NFVideoPlayerResourceLoader继承自NSObject,遵循AVAssetResourceLoader协议,从而让其成为AVPlayer的委托代理对象,在给AVPlayer视频播放器设置完播放地址资源(AVURLAsset)后,判断播放地址资源是否合法,如果合法则进行视频数据的下载,同时AVPlayer视频播放器就会去从委托代理对象获取视频播放数据。
[0053] 在本实施例中,每一次向服务器发出下载请求时,下载请求包含一个封装了下载任务中预设的下载范围的请求头,用来确定视频数据的文件类型、文件长度等数据信息,当等待接收到所述服务器的响应后,告知视频播放器当前下载视频的格式以及视频长度,并根据当前下载视频的格式以及视频长度,判断是否可支持播放;若不支持播放,则播放地址资源(AVURLAsset)失败;若视频信息合法,则根据生成的下载任务,对所述资源加载请求对象的数据片段进行分片下载。
[0054] 通过资源加载请求对象调用数据响应(responseWithData)方法给视频播放器提供可以播放的数据流,由于是分片下载,数据响应(responseWithData)会被多次调用,逐步接收增量的数据直至遇到错误或者下载完成整个长度的视频为止,其中视频正常下载完成后,资源加载请求对象会回调结束加载(finishingLoading)方法完成视频的下载,如果遇到错误则会触发错误停止加载(finishingLoadingWithError)方法告知视频播放器本次请求失败并停止继续下载。
[0055] 作为本实施例的优选方案,请参阅图2,其为本发明实施例中视频缓存的流程图,在生成下载任务前,还会创建NFVideoPlayerDownloader的下载器类,来负责管理本地的缓存的下载,同时还会创建一个NFVideoPlayerCacheFile来进行缓存的写入、读取等操作。在下载器中,创建了一个NSURLSession会话对象,并通过资源加载请求对象提供的请求数据获取到当前视频播放的请求地址来生成一个下载任务(NFResourceLoadingRequestWebTask),这样会触发当前的下载任务执行并进行数据的下载,当数据下载成功后,用NFVideoPlayerCacheFile类将收到的数据片段通过NSFileManger管理进行本地存储;其中,不同的数据片段根据下载请求中的请求头的偏移值(offset)进行增量拼接到缓存文件中;根据当前的请求地址进行MD5之后作为缓存文件名,并把缓存文件存储到沙盒的NSCachesDirectory目录下,这样就实现了一次完整的视频流数据的请求及本地缓存存储任务。
[0056] S102:响应于用户的转场手势交互指令后,根据预设转场上下文参数和预设转场持续时间,对所述视频播放器进行跨页面转场。
[0057] 具体地,响应于用户的手势交互指令后,根据预设转场上下文参数,获取容器视图和动画目标控制器,将预设转场动画结束时的所述动画目标控制器的视图添加至所述容器视图中,并确定所述预设转场动画的起始坐标值和终止坐标值,并将预设转场持续时间传至所述预设转场动画中,计算出所述视频播放器在所述动画目标控制器的视图上的位置,并在所述预设转场动画结束的回调中用预设转场上下文参数结束转场过渡,从而完成所述视频播放器进行跨页面转场。
[0058] 需要说明的是,该跨页面转场部分需要通过UIViewControllerTransitioning协议技术的NFVideoPlayerAnimator类来实现,通过接受一个CGRect参数,即页面跳转前放置视频播放器的UITableViewCell控件的frame值,同时在该类中实现完成动画所需的两个必要方法:transitionDuration方法和animateTransition方法。transitionDuration方法用于执行转场动画所持续的时间;animateTransition方法用于实现页面跳转时如何进行转场,animateTransition方法中带有预设转场上下文参数(transitionContext)。从预设转场上下文参数中,可以获得两个参数用于实现转场动画的跳转:容器视图(containView)和动画目标控制器(UItransitionContext)。
[0059] S103:在所述视频播放器进行跨页面转场后,判断是否调用了所述续播视频API。
[0060] 需要说明的是,续播视频API为若干个外部提供播放的API中的一个支持当前续播的API:(resumePlayWithURL:showOnLayer:options:configura-tionCompletion:),外部提供播放的API由目标视频播放前创建的播放模型对象来生成。
[0061] S104:若是,则从所述资源加载请求对象中获取请求数据,并在本地缓存中查询所述目标视频对应保存的播放进度,从而对所述目标视频进行续播。
[0062] 具体地,从所述资源加载请求对象中获取转场后的请求数据,查询转场后请求数据中的请求地址对应的播放时间,并根据所述请求地址的MD5值,查找所述目标视频的数据对应的本地缓存,并通过转场后的下载请求,获取并根据转场后下载的数据片段所对应的偏移量以及长度,当本地缓存中有对应的数据片段与转场后下载的数据片段相对应,则直接快进视频至所述播放时间,并提供本地缓存中对应的数据片段进行续播。
[0063] 作为本实施例的优选方案,还包括验证当前的播放模型对象中的请求地址;若当前的播放模型对象中的请求地址与转场前的请求地址不一致,则将播放模型对象中的视频播放器layer层从其父视图中移除,并停止当前视频的播放,对所述播放模型对象进行重置操作,并从重置操作后的资源加载请求对象中获取请求数据,从而对所述目标视频进行重新播放;若当前的播放模型对象中的请求地址与转场前的请求地址一致,则从资源加载请求对象中获取转场后的请求数据,查询转场后请求数据中的请求地址对应的播放时间,并根据请求地址的MD5值,查找所述目标视频的数据对应的本地缓存,并通过转场后的下载请求,获取并根据转场后下载的数据片段所对应的偏移量以及长度,当本地缓存中有对应的数据片段与转场后下载的数据片段相对应,则直接快进视频至所述播放时间,并提供本地缓存中对应的数据片段进行续播。
[0064] S105:若否,则停止视频播放,对所述播放模型对象进行重置操作,并从重置操作后的资源加载请求对象中获取请求数据,从而对所述目标视频进行重新播放。
[0065] 需要说明的是,若没有调用所述续播视频API,则将播放模型对象中的视频播放器layer层从其父视图中移除,并停止当前视频的播放,同时移除视频状态的监听等重置操作,另外会创建新的播放模型对象进入一个全新的视频播放流程。
[0066] 实施本发明实施例,具有如下效果:
[0067] 本发明实施例通过在视频播放前创建播放模型对象,从而能够对对视频的播放进行控制,根据预设转场上下文参数和预设转场持续时间,对所述视频播放器进行跨页面转场,并通过播放模型对象中的API,来判断转场后的视频播放器是否需要进行续播,并从资源加载请求对象中获取请求数据,并在本地缓存中查询目标视频对应保存的播放进度,从而对目标视频进行续播,使得用户能够无感地播放已经缓存过的视频,提高了播放的响应速度,避免了对同一个视频进行多次缓存,导致了移动终端对流量的重复消耗,给用户提供更加完善的使用体验。
[0068] 实施例二
[0069] 相应地,请参阅图3,其为本发明实施例还提供一种iOS跨页面视频播放装置,包括:创建模块201、转场模块202、判断模块203、第一执行模块204和第二执行模块205;
[0070] 所述创建模块201,用于每一次目标视频进行播放前,创建播放模型对象;其中,所述播放模型对象包括视频播放器、资源加载请求对象和续播视频API,所述目标视频作为当前视频播放的资源加载请求对象;
[0071] 所述转场模块202,用于响应于用户的转场手势交互指令后,根据预设转场上下文参数和预设转场持续时间,对所述视频播放器进行跨页面转场;
[0072] 作为本实施例的优选方案,所述转场模块202,用于响应于用户的手势交互指令后,根据预设转场上下文参数,获取容器视图和动画目标控制器,将预设转场动画结束时的所述动画目标控制器的视图添加至所述容器视图中,并确定所述预设转场动画的起始坐标值和终止坐标值,并将预设转场持续时间传至所述预设转场动画中,计算出所述视频播放器在所述动画目标控制器的视图上的位置,并在所述预设转场动画结束的回调中用预设转场上下文参数结束转场过渡,从而完成所述视频播放器进行跨页面转场。
[0073] 所述判断模块203,用于在所述视频播放器进行跨页面转场后,判断是否调用了所述续播视频API;
[0074] 所述第一执行模块204,用于若调用了所述续播视频API,则从所述资源加载请求对象中获取请求数据,并在本地缓存中查询所述目标视频对应保存的播放进度,从而对所述目标视频进行续播。
[0075] 作为本实施例的优选方案,所述第一执行模块204,用于从所述资源加载请求对象中获取转场后的请求数据,查询转场后请求数据中的请求地址对应的播放时间,并根据所述请求地址的MD5值,查找所述目标视频的数据对应的本地缓存,并通过转场后的下载请求,获取并根据转场后下载的数据片段所对应的偏移量以及长度,当本地缓存中有对应的数据片段与转场后下载的数据片段相对应,则直接快进视频至所述播放时间,并提供本地缓存中对应的数据片段进行续播。
[0076] 所述第二执行模块205,用于若没有调用所述续播视频API,则停止视频播放,对所述播放模型对象进行重置操作,并从重置操作后的资源加载请求对象中获取请求数据,从而对所述目标视频进行重新播放。
[0077] 作为本实施例的优选方案,请参阅图4,其为本发明实施例中的iOS视频跨页面视频播放装置,还包括:请求模块301、下载模块302、缓存模块303;
[0078] 所述请求模块301,用于根据所述资源加载请求对象,获取所述资源加载请求对象的请求数据;所述请求数据包括请求范围和请求地址。
[0079] 所述下载模块302,用于对所述资源加载请求对象进行分片下载,以使在每一个数据片段下载过程中,根据预设的下载范围和所述请求地址,生成下载任务,并向服务器发出下载请求,等待接收到所述服务器的响应后,根据所述下载任务,对所述资源加载请求对象的数据片段进行下载。
[0080] 所述缓存模块303,用于每下载完成一个数据片段后,将下载后的数据片段填充至视频播放器中播放,记录播放时间,同时对下载后的数据片段和记录的播放时间根据所述请求地址进行本地缓存。
[0081] 作为本实施例的优选方案,所述缓存模块303,用于记录下载后的数据片段的偏移量以及长度,将下载后的数据片段填充至视频播放器中播放,记录播放时间,获取所述请求地址的MD5值,根据下载后的数据片段的偏移量以及长度,对所述播放时间和下载后的数据片段依据所述请求地址进行本地缓存。
[0082] 所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置的具体工作过程,可以参考前述方法实施例中的对应过程,再此不在赘述。
[0083] 实施本发明实施例,具有如下效果:
[0084] 本发明实施例通过在视频播放前创建播放模型对象,从而能够对对视频的播放进行控制,根据预设转场上下文参数和预设转场持续时间,对所述视频播放器进行跨页面转场,并通过播放模型对象中的API,来判断转场后的视频播放器是否需要进行续播,并从资源加载请求对象中获取请求数据,并在本地缓存中查询目标视频对应保存的播放进度,从而对目标视频进行续播,使得用户能够无感地播放已经缓存过的视频,提高了播放的响应速度,避免了对同一个视频进行多次缓存,导致了移动终端对流量的重复消耗,给用户提供更加完善的使用体验。
[0085] 实施例三
[0086] 本发明实施例还提供了一种终端设备,所述终端设备包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器在执行所述计算机程序时实现上述任一实施例所述的iOS跨页面视频播放方法。
[0087] 优选地,所述计算机程序可以被分割成一个或多个模块/单元(如计算机程序、计算机程序),所述一个或者多个模块/单元被存储在所述存储器中,并由所述处理器执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序在所述终端设备中的执行过程。
[0088] 所述处理器可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,通用处理器可以是微处理器,或者所述处理器也可以是任何常规的处理器,所述处理器是所述终端设备的控制中心,利用各种接口和线路连接所述终端设备的各个部分。
[0089] 所述存储器主要包括程序存储区和数据存储区,其中,程序存储区可存储操作系统、至少一个功能所需的应用程序等,数据存储区可存储相关数据等。此外,所述存储器可以是高速随机存取存储器,还可以是非易失性存储器,例如插接式硬盘,智能存储卡(Smart Media Card,SMC)、安全数字(Secure Digital,SD)卡和闪存卡(Flash Card)等,或所述存储器也可以是其他易失性固态存储器件。
[0090] 需要说明的是,上述终端设备可包括,但不仅限于,处理器、存储器,本领域技术人员可以理解,上述终端设备仅仅是示例,并不构成对终端设备的限定,可以包括更多或更少的部件,或者组合某些部件,或者不同的部件。
[0091] 实施例四
[0092] 本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质包括存储的计算机程序;其中,所述计算机程序在运行时控制所述计算机可读存储介质所在的设备执行上述任一实施例所述的iOS跨页面视频播放方法。
[0093] 以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步的详细说明,应当理解,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围。特别指出,对于本领域技术人员来说,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。